[SO] 16.0.2 release 74/141374/2 master
authorFiete Ostkamp <Fiete.Ostkamp@telekom.de>
Tue, 24 Jun 2025 19:27:15 +0000 (21:27 +0200)
committerFiete Ostkamp <Fiete.Ostkamp@telekom.de>
Wed, 25 Jun 2025 06:36:40 +0000 (08:36 +0200)
- update images of main so repo (1.15.3 -> 1.15.4)
- update etsi-sol003 + 005 adapters (1.9.0 -> 1.9.1)

Issue-ID: SO-4178
Change-Id: Ia28f99639e0a4454edc74ae6d0e95c1042398a92
Signed-off-by: Fiete Ostkamp <Fiete.Ostkamp@telekom.de>
1309 files changed:
.pre-commit-config.yaml
INFO.yaml
archive/cli/.helmignore [moved from kubernetes/cli/.helmignore with 100% similarity]
archive/cli/Chart.yaml [moved from kubernetes/cli/Chart.yaml with 100% similarity]
archive/cli/resources/configuration/lighttpd.conf [moved from kubernetes/cli/resources/configuration/lighttpd.conf with 100% similarity]
archive/cli/templates/configmap.yaml [moved from kubernetes/cli/templates/configmap.yaml with 100% similarity]
archive/cli/templates/deployment.yaml [moved from kubernetes/cli/templates/deployment.yaml with 100% similarity]
archive/cli/templates/ingress.yaml [moved from kubernetes/cli/templates/ingress.yaml with 100% similarity]
archive/cli/templates/service.yaml [moved from kubernetes/cli/templates/service.yaml with 100% similarity]
archive/cli/values.yaml [moved from kubernetes/cli/values.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-datafile-collector/Chart.yaml [moved from kubernetes/dcaegen2-services/components/dcae-datafile-collector/Chart.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-datafile-collector/templates/authorizationpolicy.yaml [moved from kubernetes/dcaegen2-services/components/dcae-datafile-collector/templates/authorizationpolicy.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-datafile-collector/templates/certificates.yaml [moved from kubernetes/dcaegen2-services/components/dcae-datafile-collector/templates/certificates.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-datafile-collector/templates/configmap.yaml [moved from kubernetes/dcaegen2-services/components/dcae-datafile-collector/templates/configmap.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-datafile-collector/templates/deployment.yaml [moved from kubernetes/dcaegen2-services/components/dcae-datafile-collector/templates/deployment.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-datafile-collector/templates/ingress.yaml [moved from kubernetes/dcaegen2-services/components/dcae-datafile-collector/templates/ingress.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-datafile-collector/templates/secret.yaml [moved from kubernetes/dcaegen2-services/components/dcae-datafile-collector/templates/secret.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-datafile-collector/templates/service.yaml [moved from kubernetes/dcaegen2-services/components/dcae-datafile-collector/templates/service.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-datafile-collector/values.yaml [moved from kubernetes/dcaegen2-services/components/dcae-datafile-collector/values.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-heartbeat/Chart.yaml [moved from kubernetes/dcaegen2-services/components/dcae-heartbeat/Chart.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-heartbeat/templates/authorizationpolicy.yaml [moved from kubernetes/dcaegen2-services/components/dcae-heartbeat/templates/authorizationpolicy.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-heartbeat/templates/configmap.yaml [moved from kubernetes/dcaegen2-services/components/dcae-heartbeat/templates/configmap.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-heartbeat/templates/deployment.yaml [moved from kubernetes/dcaegen2-services/components/dcae-heartbeat/templates/deployment.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-heartbeat/templates/secret.yaml [moved from kubernetes/dcaegen2-services/components/dcae-heartbeat/templates/secret.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-heartbeat/templates/service.yaml [moved from kubernetes/dcaegen2-services/components/dcae-heartbeat/templates/service.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-heartbeat/values.yaml [moved from kubernetes/dcaegen2-services/components/dcae-heartbeat/values.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-kpi-ms/Chart.yaml [moved from kubernetes/dcaegen2-services/components/dcae-kpi-ms/Chart.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-kpi-ms/templates/authorizationpolicy.yaml [moved from kubernetes/dcaegen2-services/components/dcae-kpi-ms/templates/authorizationpolicy.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-kpi-ms/templates/configmap.yaml [moved from kubernetes/dcaegen2-services/components/dcae-kpi-ms/templates/configmap.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-kpi-ms/templates/deployment.yaml [moved from kubernetes/dcaegen2-services/components/dcae-kpi-ms/templates/deployment.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-kpi-ms/templates/secret.yaml [moved from kubernetes/dcaegen2-services/components/dcae-kpi-ms/templates/secret.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-kpi-ms/templates/service.yaml [moved from kubernetes/dcaegen2-services/components/dcae-kpi-ms/templates/service.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-kpi-ms/values.yaml [moved from kubernetes/dcaegen2-services/components/dcae-kpi-ms/values.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-pm-mapper/Chart.yaml [moved from kubernetes/dcaegen2-services/components/dcae-pm-mapper/Chart.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-pm-mapper/templates/authorizationpolicy.yaml [moved from kubernetes/dcaegen2-services/components/dcae-pm-mapper/templates/authorizationpolicy.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-pm-mapper/templates/configmap.yaml [moved from kubernetes/dcaegen2-services/components/dcae-pm-mapper/templates/configmap.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-pm-mapper/templates/deployment.yaml [moved from kubernetes/dcaegen2-services/components/dcae-pm-mapper/templates/deployment.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-pm-mapper/templates/secret.yaml [moved from kubernetes/dcaegen2-services/components/dcae-pm-mapper/templates/secret.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-pm-mapper/templates/service.yaml [moved from kubernetes/dcaegen2-services/components/dcae-pm-mapper/templates/service.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-pm-mapper/values.yaml [moved from kubernetes/dcaegen2-services/components/dcae-pm-mapper/values.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-pmsh/Chart.yaml [moved from kubernetes/dcaegen2-services/components/dcae-pmsh/Chart.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-pmsh/templates/authorizationpolicy.yaml [moved from kubernetes/dcaegen2-services/components/dcae-pmsh/templates/authorizationpolicy.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-pmsh/templates/configmap.yaml [moved from kubernetes/dcaegen2-services/components/dcae-pmsh/templates/configmap.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-pmsh/templates/deployment.yaml [moved from kubernetes/dcaegen2-services/components/dcae-pmsh/templates/deployment.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-pmsh/templates/secret.yaml [moved from kubernetes/dcaegen2-services/components/dcae-pmsh/templates/secret.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-pmsh/templates/service.yaml [moved from kubernetes/dcaegen2-services/components/dcae-pmsh/templates/service.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-pmsh/values.yaml [moved from kubernetes/dcaegen2-services/components/dcae-pmsh/values.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-restconf-collector/Chart.yaml [moved from kubernetes/dcaegen2-services/components/dcae-restconf-collector/Chart.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-restconf-collector/templates/authorizationpolicy.yaml [moved from kubernetes/dcaegen2-services/components/dcae-restconf-collector/templates/authorizationpolicy.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-restconf-collector/templates/configmap.yaml [moved from kubernetes/dcaegen2-services/components/dcae-restconf-collector/templates/configmap.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-restconf-collector/templates/deployment.yaml [moved from kubernetes/dcaegen2-services/components/dcae-restconf-collector/templates/deployment.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-restconf-collector/templates/ingress.yaml [moved from kubernetes/dcaegen2-services/components/dcae-restconf-collector/templates/ingress.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-restconf-collector/templates/secret.yaml [moved from kubernetes/dcaegen2-services/components/dcae-restconf-collector/templates/secret.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-restconf-collector/templates/service.yaml [moved from kubernetes/dcaegen2-services/components/dcae-restconf-collector/templates/service.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-restconf-collector/values.yaml [moved from kubernetes/dcaegen2-services/components/dcae-restconf-collector/values.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-slice-analysis-ms/Chart.yaml [moved from kubernetes/dcaegen2-services/components/dcae-slice-analysis-ms/Chart.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-slice-analysis-ms/templates/authorizationpolicy.yaml [moved from kubernetes/dcaegen2-services/components/dcae-slice-analysis-ms/templates/authorizationpolicy.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-slice-analysis-ms/templates/configmap.yaml [moved from kubernetes/dcaegen2-services/components/dcae-slice-analysis-ms/templates/configmap.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-slice-analysis-ms/templates/deployment.yaml [moved from kubernetes/dcaegen2-services/components/dcae-slice-analysis-ms/templates/deployment.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-slice-analysis-ms/templates/secret.yaml [moved from kubernetes/dcaegen2-services/components/dcae-slice-analysis-ms/templates/secret.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-slice-analysis-ms/templates/service.yaml [moved from kubernetes/dcaegen2-services/components/dcae-slice-analysis-ms/templates/service.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-slice-analysis-ms/values.yaml [moved from kubernetes/dcaegen2-services/components/dcae-slice-analysis-ms/values.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-snmptrap-collector/Chart.yaml [moved from kubernetes/dcaegen2-services/components/dcae-snmptrap-collector/Chart.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-snmptrap-collector/templates/authorizationpolicy.yaml [moved from kubernetes/dcaegen2-services/components/dcae-snmptrap-collector/templates/authorizationpolicy.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-snmptrap-collector/templates/configmap.yaml [moved from kubernetes/dcaegen2-services/components/dcae-snmptrap-collector/templates/configmap.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-snmptrap-collector/templates/deployment.yaml [moved from kubernetes/dcaegen2-services/components/dcae-snmptrap-collector/templates/deployment.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-snmptrap-collector/templates/secret.yaml [moved from kubernetes/dcaegen2-services/components/dcae-snmptrap-collector/templates/secret.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-snmptrap-collector/templates/service.yaml [moved from kubernetes/dcaegen2-services/components/dcae-snmptrap-collector/templates/service.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-snmptrap-collector/values.yaml [moved from kubernetes/dcaegen2-services/components/dcae-snmptrap-collector/values.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-son-handler/Chart.yaml [moved from kubernetes/dcaegen2-services/components/dcae-son-handler/Chart.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-son-handler/templates/authorizationpolicy.yaml [moved from kubernetes/dcaegen2-services/components/dcae-son-handler/templates/authorizationpolicy.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-son-handler/templates/configmap.yaml [moved from kubernetes/dcaegen2-services/components/dcae-son-handler/templates/configmap.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-son-handler/templates/deployment.yaml [moved from kubernetes/dcaegen2-services/components/dcae-son-handler/templates/deployment.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-son-handler/templates/secret.yaml [moved from kubernetes/dcaegen2-services/components/dcae-son-handler/templates/secret.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-son-handler/templates/service.yaml [moved from kubernetes/dcaegen2-services/components/dcae-son-handler/templates/service.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-son-handler/values.yaml [moved from kubernetes/dcaegen2-services/components/dcae-son-handler/values.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-tcagen2/Chart.yaml [moved from kubernetes/dcaegen2-services/components/dcae-tcagen2/Chart.yaml with 97% similarity]
archive/dcaegen2-services/components/dcae-tcagen2/templates/authorizationpolicy.yaml [moved from kubernetes/dcaegen2-services/components/dcae-tcagen2/templates/authorizationpolicy.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-tcagen2/templates/configmap.yaml [moved from kubernetes/dcaegen2-services/components/dcae-tcagen2/templates/configmap.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-tcagen2/templates/deployment.yaml [moved from kubernetes/dcaegen2-services/components/dcae-tcagen2/templates/deployment.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-tcagen2/templates/secret.yaml [moved from kubernetes/dcaegen2-services/components/dcae-tcagen2/templates/secret.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-tcagen2/templates/service.yaml [moved from kubernetes/dcaegen2-services/components/dcae-tcagen2/templates/service.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-tcagen2/values.yaml [moved from kubernetes/dcaegen2-services/components/dcae-tcagen2/values.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-ves-mapper/Chart.yaml [moved from kubernetes/dcaegen2-services/components/dcae-ves-mapper/Chart.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-ves-mapper/templates/authorizationpolicy.yaml [moved from kubernetes/dcaegen2-services/components/dcae-ves-mapper/templates/authorizationpolicy.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-ves-mapper/templates/configmap.yaml [moved from kubernetes/dcaegen2-services/components/dcae-ves-mapper/templates/configmap.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-ves-mapper/templates/deployment.yaml [moved from kubernetes/dcaegen2-services/components/dcae-ves-mapper/templates/deployment.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-ves-mapper/templates/secret.yaml [moved from kubernetes/dcaegen2-services/components/dcae-ves-mapper/templates/secret.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-ves-mapper/templates/service.yaml [moved from kubernetes/dcaegen2-services/components/dcae-ves-mapper/templates/service.yaml with 100% similarity]
archive/dcaegen2-services/components/dcae-ves-mapper/values.yaml [moved from kubernetes/dcaegen2-services/components/dcae-ves-mapper/values.yaml with 100% similarity]
archive/dmaap/.helmignore [moved from kubernetes/dmaap/.helmignore with 100% similarity]
archive/dmaap/Chart.yaml [moved from kubernetes/dmaap/Chart.yaml with 100% similarity]
archive/dmaap/Makefile [moved from kubernetes/dmaap/Makefile with 100% similarity]
archive/dmaap/README.md [moved from kubernetes/dmaap/README.md with 100% similarity]
archive/dmaap/components/Makefile [moved from kubernetes/dmaap/components/Makefile with 100% similarity]
archive/dmaap/components/dmaap-dr-node/.helmignore [moved from kubernetes/dmaap/components/dmaap-dr-node/.helmignore with 100% similarity]
archive/dmaap/components/dmaap-dr-node/Chart.yaml [moved from kubernetes/dmaap/components/dmaap-dr-node/Chart.yaml with 100% similarity]
archive/dmaap/components/dmaap-dr-node/resources/config/logback.xml [moved from kubernetes/dmaap/components/dmaap-dr-node/resources/config/logback.xml with 100% similarity]
archive/dmaap/components/dmaap-dr-node/resources/config/node.properties [moved from kubernetes/dmaap/components/dmaap-dr-node/resources/config/node.properties with 100% similarity]
archive/dmaap/components/dmaap-dr-node/templates/configmap.yaml [moved from kubernetes/dmaap/components/dmaap-dr-node/templates/configmap.yaml with 100% similarity]
archive/dmaap/components/dmaap-dr-node/templates/ingress.yaml [moved from kubernetes/dmaap/components/dmaap-dr-node/templates/ingress.yaml with 100% similarity]
archive/dmaap/components/dmaap-dr-node/templates/pv-event.yaml [moved from kubernetes/dmaap/components/dmaap-dr-node/templates/pv-event.yaml with 100% similarity]
archive/dmaap/components/dmaap-dr-node/templates/pv-spool.yaml [moved from kubernetes/dmaap/components/dmaap-dr-node/templates/pv-spool.yaml with 100% similarity]
archive/dmaap/components/dmaap-dr-node/templates/service.yaml [moved from kubernetes/dmaap/components/dmaap-dr-node/templates/service.yaml with 100% similarity]
archive/dmaap/components/dmaap-dr-node/templates/statefulset.yaml [moved from kubernetes/dmaap/components/dmaap-dr-node/templates/statefulset.yaml with 94% similarity]
archive/dmaap/components/dmaap-dr-node/values.yaml [moved from kubernetes/dmaap/components/dmaap-dr-node/values.yaml with 100% similarity]
archive/dmaap/components/dmaap-dr-prov/.helmignore [moved from kubernetes/dmaap/components/dmaap-dr-prov/.helmignore with 100% similarity]
archive/dmaap/components/dmaap-dr-prov/Chart.yaml [moved from kubernetes/dmaap/components/dmaap-dr-prov/Chart.yaml with 100% similarity]
archive/dmaap/components/dmaap-dr-prov/resources/config/logback.xml [moved from kubernetes/dmaap/components/dmaap-dr-prov/resources/config/logback.xml with 100% similarity]
archive/dmaap/components/dmaap-dr-prov/resources/config/provserver.properties [moved from kubernetes/dmaap/components/dmaap-dr-prov/resources/config/provserver.properties with 100% similarity]
archive/dmaap/components/dmaap-dr-prov/templates/configmap.yaml [moved from kubernetes/dmaap/components/dmaap-dr-prov/templates/configmap.yaml with 100% similarity]
archive/dmaap/components/dmaap-dr-prov/templates/deployment.yaml [moved from kubernetes/dmaap/components/dmaap-dr-prov/templates/deployment.yaml with 100% similarity]
archive/dmaap/components/dmaap-dr-prov/templates/ingress.yaml [moved from kubernetes/dmaap/components/dmaap-dr-prov/templates/ingress.yaml with 100% similarity]
archive/dmaap/components/dmaap-dr-prov/templates/secret.yaml [moved from kubernetes/dmaap/components/dmaap-dr-prov/templates/secret.yaml with 100% similarity]
archive/dmaap/components/dmaap-dr-prov/templates/service.yaml [moved from kubernetes/dmaap/components/dmaap-dr-prov/templates/service.yaml with 100% similarity]
archive/dmaap/components/dmaap-dr-prov/values.yaml [moved from kubernetes/dmaap/components/dmaap-dr-prov/values.yaml with 100% similarity]
archive/dmaap/components/message-router/.helmignore [moved from kubernetes/dmaap/components/message-router/.helmignore with 100% similarity]
archive/dmaap/components/message-router/Chart.yaml [moved from kubernetes/dmaap/components/message-router/Chart.yaml with 100% similarity]
archive/dmaap/components/message-router/Makefile [moved from kubernetes/dmaap/components/message-router/Makefile with 100% similarity]
archive/dmaap/components/message-router/resources/config/dmaap/MsgRtrApi.properties [moved from kubernetes/dmaap/components/message-router/resources/config/dmaap/MsgRtrApi.properties with 100% similarity]
archive/dmaap/components/message-router/resources/config/dmaap/logback.xml [moved from kubernetes/dmaap/components/message-router/resources/config/dmaap/logback.xml with 100% similarity]
archive/dmaap/components/message-router/templates/configmap.yaml [moved from kubernetes/dmaap/components/message-router/templates/configmap.yaml with 100% similarity]
archive/dmaap/components/message-router/templates/ingress.yaml [moved from kubernetes/dmaap/components/message-router/templates/ingress.yaml with 100% similarity]
archive/dmaap/components/message-router/templates/service.yaml [moved from kubernetes/dmaap/components/message-router/templates/service.yaml with 100% similarity]
archive/dmaap/components/message-router/templates/statefulset.yaml [moved from kubernetes/dmaap/components/message-router/templates/statefulset.yaml with 100% similarity]
archive/dmaap/components/message-router/values.yaml [moved from kubernetes/dmaap/components/message-router/values.yaml with 100% similarity]
archive/dmaap/values.yaml [moved from kubernetes/dmaap/values.yaml with 100% similarity]
archive/holmes/.helmignore [moved from kubernetes/holmes/.helmignore with 100% similarity]
archive/holmes/Chart.yaml [moved from kubernetes/holmes/Chart.yaml with 100% similarity]
archive/holmes/Makefile [moved from kubernetes/holmes/Makefile with 100% similarity]
archive/holmes/components/Makefile [moved from kubernetes/holmes/components/Makefile with 100% similarity]
archive/holmes/components/holmes-engine-mgmt/.helmignore [moved from kubernetes/holmes/components/holmes-engine-mgmt/.helmignore with 100% similarity]
archive/holmes/components/holmes-engine-mgmt/Chart.yaml [moved from kubernetes/holmes/components/holmes-engine-mgmt/Chart.yaml with 100% similarity]
archive/holmes/components/holmes-engine-mgmt/resources/config/application.yaml [moved from kubernetes/holmes/components/holmes-engine-mgmt/resources/config/application.yaml with 100% similarity]
archive/holmes/components/holmes-engine-mgmt/resources/config/cfy.json [moved from kubernetes/holmes/components/holmes-engine-mgmt/resources/config/cfy.json with 100% similarity]
archive/holmes/components/holmes-engine-mgmt/resources/config/engine-d.yml [moved from kubernetes/holmes/components/holmes-engine-mgmt/resources/config/engine-d.yml with 100% similarity]
archive/holmes/components/holmes-engine-mgmt/resources/config/onap-holmes_engine-createobj.sql [moved from kubernetes/holmes/components/holmes-engine-mgmt/resources/config/onap-holmes_engine-createobj.sql with 100% similarity]
archive/holmes/components/holmes-engine-mgmt/templates/configmap.yaml [moved from kubernetes/holmes/components/holmes-engine-mgmt/templates/configmap.yaml with 100% similarity]
archive/holmes/components/holmes-engine-mgmt/templates/deployment.yaml [moved from kubernetes/holmes/components/holmes-engine-mgmt/templates/deployment.yaml with 100% similarity]
archive/holmes/components/holmes-engine-mgmt/templates/secret.yaml [moved from kubernetes/holmes/components/holmes-engine-mgmt/templates/secret.yaml with 100% similarity]
archive/holmes/components/holmes-engine-mgmt/templates/service.yaml [moved from kubernetes/holmes/components/holmes-engine-mgmt/templates/service.yaml with 100% similarity]
archive/holmes/components/holmes-engine-mgmt/values.yaml [moved from kubernetes/holmes/components/holmes-engine-mgmt/values.yaml with 100% similarity]
archive/holmes/components/holmes-rule-mgmt/.helmignore [moved from kubernetes/holmes/components/holmes-rule-mgmt/.helmignore with 100% similarity]
archive/holmes/components/holmes-rule-mgmt/Chart.yaml [moved from kubernetes/holmes/components/holmes-rule-mgmt/Chart.yaml with 100% similarity]
archive/holmes/components/holmes-rule-mgmt/resources/config/application.yaml [moved from kubernetes/holmes/components/holmes-rule-mgmt/resources/config/application.yaml with 100% similarity]
archive/holmes/components/holmes-rule-mgmt/resources/config/onap-holmes_rulemgt-createobj.sql [moved from kubernetes/holmes/components/holmes-rule-mgmt/resources/config/onap-holmes_rulemgt-createobj.sql with 100% similarity]
archive/holmes/components/holmes-rule-mgmt/resources/config/rulemgt.yml [moved from kubernetes/holmes/components/holmes-rule-mgmt/resources/config/rulemgt.yml with 100% similarity]
archive/holmes/components/holmes-rule-mgmt/resources/rules/ControlLoop-VOLTE-2179b738-fd36-4843-a71a-a8c24c70c55b.drl [moved from kubernetes/holmes/components/holmes-rule-mgmt/resources/rules/ControlLoop-VOLTE-2179b738-fd36-4843-a71a-a8c24c70c55b.drl with 100% similarity]
archive/holmes/components/holmes-rule-mgmt/resources/rules/index.json [moved from kubernetes/holmes/components/holmes-rule-mgmt/resources/rules/index.json with 100% similarity]
archive/holmes/components/holmes-rule-mgmt/templates/configmap.yaml [moved from kubernetes/holmes/components/holmes-rule-mgmt/templates/configmap.yaml with 100% similarity]
archive/holmes/components/holmes-rule-mgmt/templates/deployment.yaml [moved from kubernetes/holmes/components/holmes-rule-mgmt/templates/deployment.yaml with 100% similarity]
archive/holmes/components/holmes-rule-mgmt/templates/ingress.yaml [moved from kubernetes/holmes/components/holmes-rule-mgmt/templates/ingress.yaml with 100% similarity]
archive/holmes/components/holmes-rule-mgmt/templates/secret.yaml [moved from kubernetes/holmes/components/holmes-rule-mgmt/templates/secret.yaml with 100% similarity]
archive/holmes/components/holmes-rule-mgmt/templates/service.yaml [moved from kubernetes/holmes/components/holmes-rule-mgmt/templates/service.yaml with 100% similarity]
archive/holmes/components/holmes-rule-mgmt/values.yaml [moved from kubernetes/holmes/components/holmes-rule-mgmt/values.yaml with 100% similarity]
archive/holmes/templates/secrets.yaml [moved from kubernetes/holmes/templates/secrets.yaml with 100% similarity]
archive/holmes/values.yaml [moved from kubernetes/holmes/values.yaml with 100% similarity]
archive/modeling/.helmignore [moved from kubernetes/modeling/.helmignore with 100% similarity]
archive/modeling/Chart.yaml [moved from kubernetes/modeling/Chart.yaml with 100% similarity]
archive/modeling/Makefile [moved from kubernetes/modeling/Makefile with 100% similarity]
archive/modeling/components/Makefile [moved from kubernetes/modeling/components/Makefile with 100% similarity]
archive/modeling/components/modeling-etsicatalog/.helmignore [moved from kubernetes/modeling/components/modeling-etsicatalog/.helmignore with 100% similarity]
archive/modeling/components/modeling-etsicatalog/Chart.yaml [moved from kubernetes/modeling/components/modeling-etsicatalog/Chart.yaml with 100% similarity]
archive/modeling/components/modeling-etsicatalog/resources/config/log/filebeat/filebeat.yml [moved from kubernetes/modeling/components/modeling-etsicatalog/resources/config/log/filebeat/filebeat.yml with 100% similarity]
archive/modeling/components/modeling-etsicatalog/resources/config/log/server/log.yml [moved from kubernetes/modeling/components/modeling-etsicatalog/resources/config/log/server/log.yml with 100% similarity]
archive/modeling/components/modeling-etsicatalog/templates/configmap.yaml [moved from kubernetes/modeling/components/modeling-etsicatalog/templates/configmap.yaml with 100% similarity]
archive/modeling/components/modeling-etsicatalog/templates/deployment.yaml [moved from kubernetes/modeling/components/modeling-etsicatalog/templates/deployment.yaml with 100% similarity]
archive/modeling/components/modeling-etsicatalog/templates/pv.yaml [moved from kubernetes/modeling/components/modeling-etsicatalog/templates/pv.yaml with 100% similarity]
archive/modeling/components/modeling-etsicatalog/templates/pvc.yaml [moved from kubernetes/modeling/components/modeling-etsicatalog/templates/pvc.yaml with 100% similarity]
archive/modeling/components/modeling-etsicatalog/templates/secrets.yaml [moved from kubernetes/modeling/components/modeling-etsicatalog/templates/secrets.yaml with 100% similarity]
archive/modeling/components/modeling-etsicatalog/templates/service.yaml [moved from kubernetes/modeling/components/modeling-etsicatalog/templates/service.yaml with 100% similarity]
archive/modeling/components/modeling-etsicatalog/values.yaml [moved from kubernetes/modeling/components/modeling-etsicatalog/values.yaml with 100% similarity]
archive/modeling/values.yaml [moved from kubernetes/modeling/values.yaml with 100% similarity]
archive/msb/.helmignore [moved from kubernetes/msb/.helmignore with 100% similarity]
archive/msb/Chart.yaml [moved from kubernetes/msb/Chart.yaml with 100% similarity]
archive/msb/Makefile [moved from kubernetes/msb/Makefile with 100% similarity]
archive/msb/components/Makefile [moved from kubernetes/msb/components/Makefile with 100% similarity]
archive/msb/components/kube2msb/.helmignore [moved from kubernetes/msb/components/kube2msb/.helmignore with 100% similarity]
archive/msb/components/kube2msb/Chart.yaml [moved from kubernetes/msb/components/kube2msb/Chart.yaml with 100% similarity]
archive/msb/components/kube2msb/templates/deployment.yaml [moved from kubernetes/msb/components/kube2msb/templates/deployment.yaml with 100% similarity]
archive/msb/components/kube2msb/values.yaml [moved from kubernetes/msb/components/kube2msb/values.yaml with 100% similarity]
archive/msb/components/msb-consul/.helmignore [moved from kubernetes/msb/components/msb-consul/.helmignore with 100% similarity]
archive/msb/components/msb-consul/Chart.yaml [moved from kubernetes/msb/components/msb-consul/Chart.yaml with 100% similarity]
archive/msb/components/msb-consul/resources/docker-entrypoint.sh [moved from kubernetes/msb/components/msb-consul/resources/docker-entrypoint.sh with 100% similarity]
archive/msb/components/msb-consul/templates/NOTES.txt [moved from kubernetes/msb/components/msb-consul/templates/NOTES.txt with 100% similarity]
archive/msb/components/msb-consul/templates/configmap.yaml [moved from kubernetes/msb/components/msb-consul/templates/configmap.yaml with 100% similarity]
archive/msb/components/msb-consul/templates/deployment.yaml [moved from kubernetes/msb/components/msb-consul/templates/deployment.yaml with 100% similarity]
archive/msb/components/msb-consul/templates/ingress.yaml [moved from kubernetes/msb/components/msb-consul/templates/ingress.yaml with 100% similarity]
archive/msb/components/msb-consul/templates/service.yaml [moved from kubernetes/msb/components/msb-consul/templates/service.yaml with 100% similarity]
archive/msb/components/msb-consul/values.yaml [moved from kubernetes/msb/components/msb-consul/values.yaml with 100% similarity]
archive/msb/components/msb-discovery/.helmignore [moved from kubernetes/msb/components/msb-discovery/.helmignore with 100% similarity]
archive/msb/components/msb-discovery/Chart.yaml [moved from kubernetes/msb/components/msb-discovery/Chart.yaml with 100% similarity]
archive/msb/components/msb-discovery/resources/config/logback.xml [moved from kubernetes/msb/components/msb-discovery/resources/config/logback.xml with 100% similarity]
archive/msb/components/msb-discovery/templates/NOTES.txt [moved from kubernetes/msb/components/msb-discovery/templates/NOTES.txt with 100% similarity]
archive/msb/components/msb-discovery/templates/configmap.yaml [moved from kubernetes/msb/components/msb-discovery/templates/configmap.yaml with 100% similarity]
archive/msb/components/msb-discovery/templates/deployment.yaml [moved from kubernetes/msb/components/msb-discovery/templates/deployment.yaml with 100% similarity]
archive/msb/components/msb-discovery/templates/ingress.yaml [moved from kubernetes/msb/components/msb-discovery/templates/ingress.yaml with 100% similarity]
archive/msb/components/msb-discovery/templates/service.yaml [moved from kubernetes/msb/components/msb-discovery/templates/service.yaml with 100% similarity]
archive/msb/components/msb-discovery/values.yaml [moved from kubernetes/msb/components/msb-discovery/values.yaml with 100% similarity]
archive/msb/components/msb-eag/.helmignore [moved from kubernetes/msb/components/msb-eag/.helmignore with 100% similarity]
archive/msb/components/msb-eag/Chart.yaml [moved from kubernetes/msb/components/msb-eag/Chart.yaml with 100% similarity]
archive/msb/components/msb-eag/resources/config/logback.xml [moved from kubernetes/msb/components/msb-eag/resources/config/logback.xml with 100% similarity]
archive/msb/components/msb-eag/templates/NOTES.txt [moved from kubernetes/msb/components/msb-eag/templates/NOTES.txt with 100% similarity]
archive/msb/components/msb-eag/templates/configmap.yaml [moved from kubernetes/msb/components/msb-eag/templates/configmap.yaml with 100% similarity]
archive/msb/components/msb-eag/templates/deployment.yaml [moved from kubernetes/msb/components/msb-eag/templates/deployment.yaml with 100% similarity]
archive/msb/components/msb-eag/templates/ingress.yaml [moved from kubernetes/msb/components/msb-eag/templates/ingress.yaml with 100% similarity]
archive/msb/components/msb-eag/templates/service.yaml [moved from kubernetes/msb/components/msb-eag/templates/service.yaml with 100% similarity]
archive/msb/components/msb-eag/values.yaml [moved from kubernetes/msb/components/msb-eag/values.yaml with 100% similarity]
archive/msb/components/msb-iag/.helmignore [moved from kubernetes/msb/components/msb-iag/.helmignore with 100% similarity]
archive/msb/components/msb-iag/Chart.yaml [moved from kubernetes/msb/components/msb-iag/Chart.yaml with 100% similarity]
archive/msb/components/msb-iag/resources/config/logback.xml [moved from kubernetes/msb/components/msb-iag/resources/config/logback.xml with 100% similarity]
archive/msb/components/msb-iag/templates/NOTES.txt [moved from kubernetes/msb/components/msb-iag/templates/NOTES.txt with 100% similarity]
archive/msb/components/msb-iag/templates/configmap.yaml [moved from kubernetes/msb/components/msb-iag/templates/configmap.yaml with 100% similarity]
archive/msb/components/msb-iag/templates/deployment.yaml [moved from kubernetes/msb/components/msb-iag/templates/deployment.yaml with 100% similarity]
archive/msb/components/msb-iag/templates/ingress.yaml [moved from kubernetes/msb/components/msb-iag/templates/ingress.yaml with 100% similarity]
archive/msb/components/msb-iag/templates/service.yaml [moved from kubernetes/msb/components/msb-iag/templates/service.yaml with 100% similarity]
archive/msb/components/msb-iag/values.yaml [moved from kubernetes/msb/components/msb-iag/values.yaml with 100% similarity]
archive/msb/resources/config/log/discovery/logback.xml [moved from kubernetes/msb/resources/config/log/discovery/logback.xml with 100% similarity]
archive/msb/resources/config/log/eag/logback.xml [moved from kubernetes/msb/resources/config/log/eag/logback.xml with 100% similarity]
archive/msb/resources/config/log/filebeat/filebeat.yml [moved from kubernetes/msb/resources/config/log/filebeat/filebeat.yml with 100% similarity]
archive/msb/resources/config/log/iag/logback.xml [moved from kubernetes/msb/resources/config/log/iag/logback.xml with 100% similarity]
archive/msb/templates/configmap.yaml [moved from kubernetes/msb/templates/configmap.yaml with 100% similarity]
archive/msb/templates/serviceaccount.yaml [moved from kubernetes/msb/templates/serviceaccount.yaml with 100% similarity]
archive/msb/values.yaml [moved from kubernetes/msb/values.yaml with 100% similarity]
archive/multicloud/components/multicloud-pike/.helmignore [moved from kubernetes/multicloud/components/multicloud-pike/.helmignore with 100% similarity]
archive/multicloud/components/multicloud-pike/Chart.yaml [moved from kubernetes/multicloud/components/multicloud-pike/Chart.yaml with 100% similarity]
archive/multicloud/components/multicloud-pike/resources/config/log/log.yml [moved from kubernetes/multicloud/components/multicloud-pike/resources/config/log/log.yml with 100% similarity]
archive/multicloud/components/multicloud-pike/templates/NOTES.txt [moved from kubernetes/multicloud/components/multicloud-pike/templates/NOTES.txt with 100% similarity]
archive/multicloud/components/multicloud-pike/templates/configmap.yaml [moved from kubernetes/multicloud/components/multicloud-pike/templates/configmap.yaml with 100% similarity]
archive/multicloud/components/multicloud-pike/templates/deployment.yaml [moved from kubernetes/multicloud/components/multicloud-pike/templates/deployment.yaml with 100% similarity]
archive/multicloud/components/multicloud-pike/templates/ingress.yaml [moved from kubernetes/multicloud/components/multicloud-pike/templates/ingress.yaml with 100% similarity]
archive/multicloud/components/multicloud-pike/templates/service.yaml [moved from kubernetes/multicloud/components/multicloud-pike/templates/service.yaml with 100% similarity]
archive/multicloud/components/multicloud-pike/values.yaml [moved from kubernetes/multicloud/components/multicloud-pike/values.yaml with 100% similarity]
archive/multicloud/components/multicloud-prometheus/Chart.yaml [moved from kubernetes/multicloud/components/multicloud-prometheus/Chart.yaml with 100% similarity]
archive/multicloud/components/multicloud-prometheus/components/prometheus-alertmanager/Chart.yaml [moved from kubernetes/multicloud/components/multicloud-prometheus/components/prometheus-alertmanager/Chart.yaml with 100% similarity]
archive/multicloud/components/multicloud-prometheus/components/prometheus-alertmanager/resources/config/alertmanager.yml [moved from kubernetes/multicloud/components/multicloud-prometheus/components/prometheus-alertmanager/resources/config/alertmanager.yml with 100% similarity]
archive/multicloud/components/multicloud-prometheus/components/prometheus-alertmanager/templates/configmap.yaml [moved from kubernetes/multicloud/components/multicloud-prometheus/components/prometheus-alertmanager/templates/configmap.yaml with 100% similarity]
archive/multicloud/components/multicloud-prometheus/components/prometheus-alertmanager/templates/deployment.yaml [moved from kubernetes/multicloud/components/multicloud-prometheus/components/prometheus-alertmanager/templates/deployment.yaml with 100% similarity]
archive/multicloud/components/multicloud-prometheus/components/prometheus-alertmanager/templates/pv.yaml [moved from kubernetes/multicloud/components/multicloud-prometheus/components/prometheus-alertmanager/templates/pv.yaml with 100% similarity]
archive/multicloud/components/multicloud-prometheus/components/prometheus-alertmanager/templates/pvc.yaml [moved from kubernetes/multicloud/components/multicloud-prometheus/components/prometheus-alertmanager/templates/pvc.yaml with 100% similarity]
archive/multicloud/components/multicloud-prometheus/components/prometheus-alertmanager/templates/service.yaml [moved from kubernetes/multicloud/components/multicloud-prometheus/components/prometheus-alertmanager/templates/service.yaml with 100% similarity]
archive/multicloud/components/multicloud-prometheus/components/prometheus-alertmanager/values.yaml [moved from kubernetes/multicloud/components/multicloud-prometheus/components/prometheus-alertmanager/values.yaml with 100% similarity]
archive/multicloud/components/multicloud-prometheus/components/prometheus-grafana/Chart.yaml [moved from kubernetes/multicloud/components/multicloud-prometheus/components/prometheus-grafana/Chart.yaml with 100% similarity]
archive/multicloud/components/multicloud-prometheus/components/prometheus-grafana/resources/config/grafana.ini [moved from kubernetes/multicloud/components/multicloud-prometheus/components/prometheus-grafana/resources/config/grafana.ini with 100% similarity]
archive/multicloud/components/multicloud-prometheus/components/prometheus-grafana/templates/configmap.yaml [moved from kubernetes/multicloud/components/multicloud-prometheus/components/prometheus-grafana/templates/configmap.yaml with 100% similarity]
archive/multicloud/components/multicloud-prometheus/components/prometheus-grafana/templates/deployment.yaml [moved from kubernetes/multicloud/components/multicloud-prometheus/components/prometheus-grafana/templates/deployment.yaml with 100% similarity]
archive/multicloud/components/multicloud-prometheus/components/prometheus-grafana/templates/pv.yaml [moved from kubernetes/multicloud/components/multicloud-prometheus/components/prometheus-grafana/templates/pv.yaml with 100% similarity]
archive/multicloud/components/multicloud-prometheus/components/prometheus-grafana/templates/pvc.yaml [moved from kubernetes/multicloud/components/multicloud-prometheus/components/prometheus-grafana/templates/pvc.yaml with 100% similarity]
archive/multicloud/components/multicloud-prometheus/components/prometheus-grafana/templates/service.yaml [moved from kubernetes/multicloud/components/multicloud-prometheus/components/prometheus-grafana/templates/service.yaml with 100% similarity]
archive/multicloud/components/multicloud-prometheus/components/prometheus-grafana/values.yaml [moved from kubernetes/multicloud/components/multicloud-prometheus/components/prometheus-grafana/values.yaml with 100% similarity]
archive/multicloud/components/multicloud-prometheus/resources/config/prometheus.yml [moved from kubernetes/multicloud/components/multicloud-prometheus/resources/config/prometheus.yml with 100% similarity]
archive/multicloud/components/multicloud-prometheus/templates/configmap.yaml [moved from kubernetes/multicloud/components/multicloud-prometheus/templates/configmap.yaml with 100% similarity]
archive/multicloud/components/multicloud-prometheus/templates/deployment.yaml [moved from kubernetes/multicloud/components/multicloud-prometheus/templates/deployment.yaml with 100% similarity]
archive/multicloud/components/multicloud-prometheus/templates/pv.yaml [moved from kubernetes/multicloud/components/multicloud-prometheus/templates/pv.yaml with 100% similarity]
archive/multicloud/components/multicloud-prometheus/templates/pvc.yaml [moved from kubernetes/multicloud/components/multicloud-prometheus/templates/pvc.yaml with 100% similarity]
archive/multicloud/components/multicloud-prometheus/templates/service.yaml [moved from kubernetes/multicloud/components/multicloud-prometheus/templates/service.yaml with 100% similarity]
archive/multicloud/components/multicloud-prometheus/values.yaml [moved from kubernetes/multicloud/components/multicloud-prometheus/values.yaml with 100% similarity]
archive/multicloud/components/multicloud-starlingx/.helmignore [moved from kubernetes/multicloud/components/multicloud-starlingx/.helmignore with 100% similarity]
archive/multicloud/components/multicloud-starlingx/Chart.yaml [moved from kubernetes/multicloud/components/multicloud-starlingx/Chart.yaml with 100% similarity]
archive/multicloud/components/multicloud-starlingx/resources/config/log/config.json [moved from kubernetes/multicloud/components/multicloud-starlingx/resources/config/log/config.json with 100% similarity]
archive/multicloud/components/multicloud-starlingx/resources/config/log/log.yml [moved from kubernetes/multicloud/components/multicloud-starlingx/resources/config/log/log.yml with 100% similarity]
archive/multicloud/components/multicloud-starlingx/templates/NOTES.txt [moved from kubernetes/multicloud/components/multicloud-starlingx/templates/NOTES.txt with 100% similarity]
archive/multicloud/components/multicloud-starlingx/templates/configmap.yaml [moved from kubernetes/multicloud/components/multicloud-starlingx/templates/configmap.yaml with 100% similarity]
archive/multicloud/components/multicloud-starlingx/templates/deployment.yaml [moved from kubernetes/multicloud/components/multicloud-starlingx/templates/deployment.yaml with 100% similarity]
archive/multicloud/components/multicloud-starlingx/templates/ingress.yaml [moved from kubernetes/multicloud/components/multicloud-starlingx/templates/ingress.yaml with 100% similarity]
archive/multicloud/components/multicloud-starlingx/templates/service.yaml [moved from kubernetes/multicloud/components/multicloud-starlingx/templates/service.yaml with 100% similarity]
archive/multicloud/components/multicloud-starlingx/values.yaml [moved from kubernetes/multicloud/components/multicloud-starlingx/values.yaml with 100% similarity]
archive/multicloud/components/multicloud-vio/.helmignore [moved from kubernetes/multicloud/components/multicloud-vio/.helmignore with 100% similarity]
archive/multicloud/components/multicloud-vio/Chart.yaml [moved from kubernetes/multicloud/components/multicloud-vio/Chart.yaml with 100% similarity]
archive/multicloud/components/multicloud-vio/resources/config/log/log.yml [moved from kubernetes/multicloud/components/multicloud-vio/resources/config/log/log.yml with 100% similarity]
archive/multicloud/components/multicloud-vio/templates/NOTES.txt [moved from kubernetes/multicloud/components/multicloud-vio/templates/NOTES.txt with 100% similarity]
archive/multicloud/components/multicloud-vio/templates/configmap.yaml [moved from kubernetes/multicloud/components/multicloud-vio/templates/configmap.yaml with 100% similarity]
archive/multicloud/components/multicloud-vio/templates/deployment.yaml [moved from kubernetes/multicloud/components/multicloud-vio/templates/deployment.yaml with 100% similarity]
archive/multicloud/components/multicloud-vio/templates/ingress.yaml [moved from kubernetes/multicloud/components/multicloud-vio/templates/ingress.yaml with 100% similarity]
archive/multicloud/components/multicloud-vio/templates/service.yaml [moved from kubernetes/multicloud/components/multicloud-vio/templates/service.yaml with 100% similarity]
archive/multicloud/components/multicloud-vio/values.yaml [moved from kubernetes/multicloud/components/multicloud-vio/values.yaml with 100% similarity]
archive/multicloud/components/multicloud-windriver/.helmignore [moved from kubernetes/multicloud/components/multicloud-windriver/.helmignore with 100% similarity]
archive/multicloud/components/multicloud-windriver/Chart.yaml [moved from kubernetes/multicloud/components/multicloud-windriver/Chart.yaml with 100% similarity]
archive/multicloud/components/multicloud-windriver/resources/config/log/config.json [moved from kubernetes/multicloud/components/multicloud-windriver/resources/config/log/config.json with 100% similarity]
archive/multicloud/components/multicloud-windriver/resources/config/log/log.yml [moved from kubernetes/multicloud/components/multicloud-windriver/resources/config/log/log.yml with 100% similarity]
archive/multicloud/components/multicloud-windriver/resources/config/log/test.txt [moved from kubernetes/multicloud/components/multicloud-windriver/resources/config/log/test.txt with 100% similarity]
archive/multicloud/components/multicloud-windriver/templates/NOTES.txt [moved from kubernetes/multicloud/components/multicloud-windriver/templates/NOTES.txt with 100% similarity]
archive/multicloud/components/multicloud-windriver/templates/configmap.yaml [moved from kubernetes/multicloud/components/multicloud-windriver/templates/configmap.yaml with 100% similarity]
archive/multicloud/components/multicloud-windriver/templates/deployment.yaml [moved from kubernetes/multicloud/components/multicloud-windriver/templates/deployment.yaml with 100% similarity]
archive/multicloud/components/multicloud-windriver/templates/ingress.yaml [moved from kubernetes/multicloud/components/multicloud-windriver/templates/ingress.yaml with 100% similarity]
archive/multicloud/components/multicloud-windriver/templates/pv.yaml [moved from kubernetes/multicloud/components/multicloud-windriver/templates/pv.yaml with 100% similarity]
archive/multicloud/components/multicloud-windriver/templates/pvc.yaml [moved from kubernetes/multicloud/components/multicloud-windriver/templates/pvc.yaml with 100% similarity]
archive/multicloud/components/multicloud-windriver/templates/service.yaml [moved from kubernetes/multicloud/components/multicloud-windriver/templates/service.yaml with 100% similarity]
archive/multicloud/components/multicloud-windriver/values.yaml [moved from kubernetes/multicloud/components/multicloud-windriver/values.yaml with 100% similarity]
archive/nbi/.helmignore [moved from kubernetes/nbi/.helmignore with 100% similarity]
archive/nbi/Chart.yaml [moved from kubernetes/nbi/Chart.yaml with 98% similarity]
archive/nbi/README.md [moved from kubernetes/nbi/README.md with 100% similarity]
archive/nbi/templates/deployment.yaml [moved from kubernetes/nbi/templates/deployment.yaml with 100% similarity]
archive/nbi/templates/ingress.yaml [moved from kubernetes/nbi/templates/ingress.yaml with 100% similarity]
archive/nbi/templates/secret.yaml [moved from kubernetes/nbi/templates/secret.yaml with 100% similarity]
archive/nbi/templates/service.yaml [moved from kubernetes/nbi/templates/service.yaml with 100% similarity]
archive/nbi/tests/deployment_test.yaml [moved from kubernetes/nbi/tests/deployment_test.yaml with 100% similarity]
archive/nbi/values.yaml [moved from kubernetes/nbi/values.yaml with 100% similarity]
archive/oof/.helmignore [moved from kubernetes/oof/.helmignore with 100% similarity]
archive/oof/Chart.yaml [moved from kubernetes/oof/Chart.yaml with 100% similarity]
archive/oof/Makefile [moved from kubernetes/oof/Makefile with 100% similarity]
archive/oof/components/Makefile [moved from kubernetes/oof/components/Makefile with 100% similarity]
archive/oof/components/oof-has/.helmignore [moved from kubernetes/oof/components/oof-has/.helmignore with 100% similarity]
archive/oof/components/oof-has/Chart.yaml [moved from kubernetes/oof/components/oof-has/Chart.yaml with 100% similarity]
archive/oof/components/oof-has/Makefile [moved from kubernetes/oof/components/oof-has/Makefile with 100% similarity]
archive/oof/components/oof-has/components/Makefile [moved from kubernetes/oof/components/oof-has/components/Makefile with 100% similarity]
archive/oof/components/oof-has/components/oof-has-api/Chart.yaml [moved from kubernetes/oof/components/oof-has/components/oof-has-api/Chart.yaml with 100% similarity]
archive/oof/components/oof-has/components/oof-has-api/templates/NOTES.txt [moved from kubernetes/oof/components/oof-has/components/oof-has-api/templates/NOTES.txt with 100% similarity]
archive/oof/components/oof-has/components/oof-has-api/templates/deployment.yaml [moved from kubernetes/oof/components/oof-has/components/oof-has-api/templates/deployment.yaml with 100% similarity]
archive/oof/components/oof-has/components/oof-has-api/templates/ingress.yaml [moved from kubernetes/oof/components/oof-has/components/oof-has-api/templates/ingress.yaml with 100% similarity]
archive/oof/components/oof-has/components/oof-has-api/templates/secret.yaml [moved from kubernetes/oof/components/oof-has/components/oof-has-api/templates/secret.yaml with 100% similarity]
archive/oof/components/oof-has/components/oof-has-api/templates/service.yaml [moved from kubernetes/oof/components/oof-has/components/oof-has-api/templates/service.yaml with 100% similarity]
archive/oof/components/oof-has/components/oof-has-api/values.yaml [moved from kubernetes/oof/components/oof-has/components/oof-has-api/values.yaml with 100% similarity]
archive/oof/components/oof-has/components/oof-has-controller/Chart.yaml [moved from kubernetes/oof/components/oof-has/components/oof-has-controller/Chart.yaml with 100% similarity]
archive/oof/components/oof-has/components/oof-has-controller/templates/deployment.yaml [moved from kubernetes/oof/components/oof-has/components/oof-has-controller/templates/deployment.yaml with 100% similarity]
archive/oof/components/oof-has/components/oof-has-controller/templates/secret.yaml [moved from kubernetes/oof/components/oof-has/components/oof-has-controller/templates/secret.yaml with 100% similarity]
archive/oof/components/oof-has/components/oof-has-controller/values.yaml [moved from kubernetes/oof/components/oof-has/components/oof-has-controller/values.yaml with 100% similarity]
archive/oof/components/oof-has/components/oof-has-data/Chart.yaml [moved from kubernetes/oof/components/oof-has/components/oof-has-data/Chart.yaml with 100% similarity]
archive/oof/components/oof-has/components/oof-has-data/templates/deployment.yaml [moved from kubernetes/oof/components/oof-has/components/oof-has-data/templates/deployment.yaml with 100% similarity]
archive/oof/components/oof-has/components/oof-has-data/templates/secret.yaml [moved from kubernetes/oof/components/oof-has/components/oof-has-data/templates/secret.yaml with 100% similarity]
archive/oof/components/oof-has/components/oof-has-data/values.yaml [moved from kubernetes/oof/components/oof-has/components/oof-has-data/values.yaml with 100% similarity]
archive/oof/components/oof-has/components/oof-has-reservation/Chart.yaml [moved from kubernetes/oof/components/oof-has/components/oof-has-reservation/Chart.yaml with 100% similarity]
archive/oof/components/oof-has/components/oof-has-reservation/templates/deployment.yaml [moved from kubernetes/oof/components/oof-has/components/oof-has-reservation/templates/deployment.yaml with 100% similarity]
archive/oof/components/oof-has/components/oof-has-reservation/templates/secret.yaml [moved from kubernetes/oof/components/oof-has/components/oof-has-reservation/templates/secret.yaml with 100% similarity]
archive/oof/components/oof-has/components/oof-has-reservation/values.yaml [moved from kubernetes/oof/components/oof-has/components/oof-has-reservation/values.yaml with 100% similarity]
archive/oof/components/oof-has/components/oof-has-solver/Chart.yaml [moved from kubernetes/oof/components/oof-has/components/oof-has-solver/Chart.yaml with 100% similarity]
archive/oof/components/oof-has/components/oof-has-solver/templates/deployment.yaml [moved from kubernetes/oof/components/oof-has/components/oof-has-solver/templates/deployment.yaml with 100% similarity]
archive/oof/components/oof-has/components/oof-has-solver/templates/secret.yaml [moved from kubernetes/oof/components/oof-has/components/oof-has-solver/templates/secret.yaml with 100% similarity]
archive/oof/components/oof-has/components/oof-has-solver/values.yaml [moved from kubernetes/oof/components/oof-has/components/oof-has-solver/values.yaml with 100% similarity]
archive/oof/components/oof-has/resources/config/conductor.conf [moved from kubernetes/oof/components/oof-has/resources/config/conductor.conf with 100% similarity]
archive/oof/components/oof-has/resources/config/healthy.sh [moved from kubernetes/oof/components/oof-has/resources/config/healthy.sh with 100% similarity]
archive/oof/components/oof-has/resources/config/log.conf [moved from kubernetes/oof/components/oof-has/resources/config/log.conf with 100% similarity]
archive/oof/components/oof-has/resources/config/log/filebeat.yml [moved from kubernetes/oof/components/oof-has/resources/config/log/filebeat.yml with 100% similarity]
archive/oof/components/oof-has/resources/config/nginx.conf [moved from kubernetes/oof/components/oof-has/resources/config/nginx.conf with 100% similarity]
archive/oof/components/oof-has/templates/configmap.yaml [moved from kubernetes/oof/components/oof-has/templates/configmap.yaml with 100% similarity]
archive/oof/components/oof-has/templates/secret.yaml [moved from kubernetes/oof/components/oof-has/templates/secret.yaml with 100% similarity]
archive/oof/components/oof-has/values.yaml [moved from kubernetes/oof/components/oof-has/values.yaml with 100% similarity]
archive/oof/components/oof-templates/Chart.yaml [moved from kubernetes/oof/components/oof-templates/Chart.yaml with 100% similarity]
archive/oof/components/oof-templates/templates/_secret.tpl [moved from kubernetes/oof/components/oof-templates/templates/_secret.tpl with 100% similarity]
archive/oof/components/oof-templates/values.yaml [moved from kubernetes/oof/components/oof-templates/values.yaml with 100% similarity]
archive/oof/resources/config/conf/common_config.yaml [moved from kubernetes/oof/resources/config/conf/common_config.yaml with 100% similarity]
archive/oof/resources/config/conf/log.yml [moved from kubernetes/oof/resources/config/conf/log.yml with 100% similarity]
archive/oof/resources/config/conf/osdf_config.yaml [moved from kubernetes/oof/resources/config/conf/osdf_config.yaml with 100% similarity]
archive/oof/resources/config/conf/slicing_config.yaml [moved from kubernetes/oof/resources/config/conf/slicing_config.yaml with 100% similarity]
archive/oof/templates/NOTES.txt [moved from kubernetes/oof/templates/NOTES.txt with 100% similarity]
archive/oof/templates/configmap.yaml [moved from kubernetes/oof/templates/configmap.yaml with 100% similarity]
archive/oof/templates/deployment.yaml [moved from kubernetes/oof/templates/deployment.yaml with 100% similarity]
archive/oof/templates/ingress.yaml [moved from kubernetes/oof/templates/ingress.yaml with 100% similarity]
archive/oof/templates/secret.yaml [moved from kubernetes/oof/templates/secret.yaml with 100% similarity]
archive/oof/templates/service.yaml [moved from kubernetes/oof/templates/service.yaml with 100% similarity]
archive/oof/values.yaml [moved from kubernetes/oof/values.yaml with 100% similarity]
archive/policy/components/policy-gui/Chart.yaml [moved from kubernetes/policy/components/policy-gui/Chart.yaml with 100% similarity]
archive/policy/components/policy-gui/resources/config/application.yml [moved from kubernetes/policy/components/policy-gui/resources/config/application.yml with 100% similarity]
archive/policy/components/policy-gui/resources/config/log/filebeat/filebeat.yml [moved from kubernetes/policy/components/policy-gui/resources/config/log/filebeat/filebeat.yml with 100% similarity]
archive/policy/components/policy-gui/resources/config/logback.xml [moved from kubernetes/policy/components/policy-gui/resources/config/logback.xml with 100% similarity]
archive/policy/components/policy-gui/templates/NOTES.txt [moved from kubernetes/policy/components/policy-gui/templates/NOTES.txt with 100% similarity]
archive/policy/components/policy-gui/templates/authorizationpolicy.yaml [moved from kubernetes/policy/components/policy-gui/templates/authorizationpolicy.yaml with 100% similarity]
archive/policy/components/policy-gui/templates/configmap.yaml [moved from kubernetes/policy/components/policy-gui/templates/configmap.yaml with 100% similarity]
archive/policy/components/policy-gui/templates/deployment.yaml [moved from kubernetes/policy/components/policy-gui/templates/deployment.yaml with 100% similarity]
archive/policy/components/policy-gui/templates/ingress.yaml [moved from kubernetes/policy/components/policy-gui/templates/ingress.yaml with 100% similarity]
archive/policy/components/policy-gui/templates/secrets.yaml [moved from kubernetes/policy/components/policy-gui/templates/secrets.yaml with 100% similarity]
archive/policy/components/policy-gui/templates/service.yaml [moved from kubernetes/policy/components/policy-gui/templates/service.yaml with 100% similarity]
archive/policy/components/policy-gui/values.yaml [moved from kubernetes/policy/components/policy-gui/values.yaml with 99% similarity]
archive/sdnc/components/dmaap-listener/Chart.yaml [moved from kubernetes/sdnc/components/dmaap-listener/Chart.yaml with 98% similarity]
archive/sdnc/components/dmaap-listener/resources/config/aai.properties [moved from kubernetes/sdnc/components/dmaap-listener/resources/config/aai.properties with 100% similarity]
archive/sdnc/components/dmaap-listener/resources/config/dblib.properties [moved from kubernetes/sdnc/components/dmaap-listener/resources/config/dblib.properties with 100% similarity]
archive/sdnc/components/dmaap-listener/resources/config/dhcpalert.properties [moved from kubernetes/sdnc/components/dmaap-listener/resources/config/dhcpalert.properties with 100% similarity]
archive/sdnc/components/dmaap-listener/resources/config/dmaap-consumer-CMNotify.properties [moved from kubernetes/sdnc/components/dmaap-listener/resources/config/dmaap-consumer-CMNotify.properties with 100% similarity]
archive/sdnc/components/dmaap-listener/resources/config/dmaap-consumer-RANSlice.properties [moved from kubernetes/sdnc/components/dmaap-listener/resources/config/dmaap-consumer-RANSlice.properties with 100% similarity]
archive/sdnc/components/dmaap-listener/resources/config/dmaap-consumer-a1Adapter-policy.properties [moved from kubernetes/sdnc/components/dmaap-listener/resources/config/dmaap-consumer-a1Adapter-policy.properties with 100% similarity]
archive/sdnc/components/dmaap-listener/resources/config/dmaap-consumer-oofpcipoc.properties [moved from kubernetes/sdnc/components/dmaap-listener/resources/config/dmaap-consumer-oofpcipoc.properties with 100% similarity]
archive/sdnc/components/dmaap-listener/resources/config/lcm.properties [moved from kubernetes/sdnc/components/dmaap-listener/resources/config/lcm.properties with 100% similarity]
archive/sdnc/components/dmaap-listener/templates/authorizationpolicy.yaml [moved from kubernetes/sdnc/components/dmaap-listener/templates/authorizationpolicy.yaml with 100% similarity]
archive/sdnc/components/dmaap-listener/templates/configmap.yaml [moved from kubernetes/sdnc/components/dmaap-listener/templates/configmap.yaml with 100% similarity]
archive/sdnc/components/dmaap-listener/templates/deployment.yaml [moved from kubernetes/sdnc/components/dmaap-listener/templates/deployment.yaml with 100% similarity]
archive/sdnc/components/dmaap-listener/templates/secret.yaml [moved from kubernetes/sdnc/components/dmaap-listener/templates/secret.yaml with 100% similarity]
archive/sdnc/components/dmaap-listener/templates/service.yaml [moved from kubernetes/sdnc/components/dmaap-listener/templates/service.yaml with 100% similarity]
archive/sdnc/components/dmaap-listener/values.yaml [moved from kubernetes/sdnc/components/dmaap-listener/values.yaml with 98% similarity]
archive/vfc/.helmignore [moved from kubernetes/vfc/.helmignore with 100% similarity]
archive/vfc/Chart.yaml [moved from kubernetes/vfc/Chart.yaml with 100% similarity]
archive/vfc/Makefile [moved from kubernetes/vfc/Makefile with 100% similarity]
archive/vfc/components/Makefile [moved from kubernetes/platform/components/oauth2-proxy/components/Makefile with 100% similarity, mode: 0644]
archive/vfc/components/vfc-generic-vnfm-driver/.helmignore [moved from kubernetes/vfc/components/vfc-generic-vnfm-driver/.helmignore with 100% similarity]
archive/vfc/components/vfc-generic-vnfm-driver/Chart.yaml [moved from kubernetes/vfc/components/vfc-generic-vnfm-driver/Chart.yaml with 100% similarity]
archive/vfc/components/vfc-generic-vnfm-driver/resources/config/logging/log.yml [moved from kubernetes/vfc/components/vfc-generic-vnfm-driver/resources/config/logging/log.yml with 100% similarity]
archive/vfc/components/vfc-generic-vnfm-driver/templates/configmap.yaml [moved from kubernetes/vfc/components/vfc-generic-vnfm-driver/templates/configmap.yaml with 100% similarity]
archive/vfc/components/vfc-generic-vnfm-driver/templates/deployment.yaml [moved from kubernetes/vfc/components/vfc-generic-vnfm-driver/templates/deployment.yaml with 100% similarity]
archive/vfc/components/vfc-generic-vnfm-driver/templates/service.yaml [moved from kubernetes/vfc/components/vfc-generic-vnfm-driver/templates/service.yaml with 100% similarity]
archive/vfc/components/vfc-generic-vnfm-driver/values.yaml [moved from kubernetes/vfc/components/vfc-generic-vnfm-driver/values.yaml with 100% similarity]
archive/vfc/components/vfc-huawei-vnfm-driver/.helmignore [moved from kubernetes/vfc/components/vfc-huawei-vnfm-driver/.helmignore with 100% similarity]
archive/vfc/components/vfc-huawei-vnfm-driver/Chart.yaml [moved from kubernetes/vfc/components/vfc-huawei-vnfm-driver/Chart.yaml with 100% similarity]
archive/vfc/components/vfc-huawei-vnfm-driver/resources/config/logging/log4j.properties [moved from kubernetes/vfc/components/vfc-huawei-vnfm-driver/resources/config/logging/log4j.properties with 100% similarity]
archive/vfc/components/vfc-huawei-vnfm-driver/templates/configmap.yaml [moved from kubernetes/vfc/components/vfc-huawei-vnfm-driver/templates/configmap.yaml with 100% similarity]
archive/vfc/components/vfc-huawei-vnfm-driver/templates/deployment.yaml [moved from kubernetes/vfc/components/vfc-huawei-vnfm-driver/templates/deployment.yaml with 100% similarity]
archive/vfc/components/vfc-huawei-vnfm-driver/templates/service.yaml [moved from kubernetes/vfc/components/vfc-huawei-vnfm-driver/templates/service.yaml with 100% similarity]
archive/vfc/components/vfc-huawei-vnfm-driver/values.yaml [moved from kubernetes/vfc/components/vfc-huawei-vnfm-driver/values.yaml with 100% similarity]
archive/vfc/components/vfc-nslcm/.helmignore [moved from kubernetes/vfc/components/vfc-nslcm/.helmignore with 100% similarity]
archive/vfc/components/vfc-nslcm/Chart.yaml [moved from kubernetes/vfc/components/vfc-nslcm/Chart.yaml with 100% similarity]
archive/vfc/components/vfc-nslcm/resources/config/logging/log.yml [moved from kubernetes/vfc/components/vfc-nslcm/resources/config/logging/log.yml with 100% similarity]
archive/vfc/components/vfc-nslcm/templates/configmap.yaml [moved from kubernetes/vfc/components/vfc-nslcm/templates/configmap.yaml with 100% similarity]
archive/vfc/components/vfc-nslcm/templates/deployment.yaml [moved from kubernetes/vfc/components/vfc-nslcm/templates/deployment.yaml with 100% similarity]
archive/vfc/components/vfc-nslcm/templates/secrets.yaml [moved from kubernetes/vfc/components/vfc-nslcm/templates/secrets.yaml with 100% similarity]
archive/vfc/components/vfc-nslcm/templates/service.yaml [moved from kubernetes/vfc/components/vfc-nslcm/templates/service.yaml with 100% similarity]
archive/vfc/components/vfc-nslcm/values.yaml [moved from kubernetes/vfc/components/vfc-nslcm/values.yaml with 100% similarity]
archive/vfc/components/vfc-redis/.helmignore [moved from kubernetes/vfc/components/vfc-redis/.helmignore with 100% similarity]
archive/vfc/components/vfc-redis/Chart.yaml [moved from kubernetes/vfc/components/vfc-redis/Chart.yaml with 100% similarity]
archive/vfc/components/vfc-redis/templates/deployment.yaml [moved from kubernetes/vfc/components/vfc-redis/templates/deployment.yaml with 100% similarity]
archive/vfc/components/vfc-redis/templates/service.yaml [moved from kubernetes/vfc/components/vfc-redis/templates/service.yaml with 100% similarity]
archive/vfc/components/vfc-redis/values.yaml [moved from kubernetes/vfc/components/vfc-redis/values.yaml with 100% similarity]
archive/vfc/components/vfc-vnflcm/.helmignore [moved from kubernetes/vfc/components/vfc-vnflcm/.helmignore with 100% similarity]
archive/vfc/components/vfc-vnflcm/Chart.yaml [moved from kubernetes/vfc/components/vfc-vnflcm/Chart.yaml with 100% similarity]
archive/vfc/components/vfc-vnflcm/resources/config/logging/log.yml [moved from kubernetes/vfc/components/vfc-vnflcm/resources/config/logging/log.yml with 100% similarity]
archive/vfc/components/vfc-vnflcm/templates/configmap.yaml [moved from kubernetes/vfc/components/vfc-vnflcm/templates/configmap.yaml with 100% similarity]
archive/vfc/components/vfc-vnflcm/templates/deployment.yaml [moved from kubernetes/vfc/components/vfc-vnflcm/templates/deployment.yaml with 100% similarity]
archive/vfc/components/vfc-vnflcm/templates/secrets.yaml [moved from kubernetes/vfc/components/vfc-vnflcm/templates/secrets.yaml with 100% similarity]
archive/vfc/components/vfc-vnflcm/templates/service.yaml [moved from kubernetes/vfc/components/vfc-vnflcm/templates/service.yaml with 100% similarity]
archive/vfc/components/vfc-vnflcm/values.yaml [moved from kubernetes/vfc/components/vfc-vnflcm/values.yaml with 100% similarity]
archive/vfc/components/vfc-vnfmgr/.helmignore [moved from kubernetes/vfc/components/vfc-vnfmgr/.helmignore with 100% similarity]
archive/vfc/components/vfc-vnfmgr/Chart.yaml [moved from kubernetes/vfc/components/vfc-vnfmgr/Chart.yaml with 100% similarity]
archive/vfc/components/vfc-vnfmgr/resources/config/logging/log.yml [moved from kubernetes/vfc/components/vfc-vnfmgr/resources/config/logging/log.yml with 100% similarity]
archive/vfc/components/vfc-vnfmgr/templates/configmap.yaml [moved from kubernetes/vfc/components/vfc-vnfmgr/templates/configmap.yaml with 100% similarity]
archive/vfc/components/vfc-vnfmgr/templates/deployment.yaml [moved from kubernetes/vfc/components/vfc-vnfmgr/templates/deployment.yaml with 100% similarity]
archive/vfc/components/vfc-vnfmgr/templates/secrets.yaml [moved from kubernetes/vfc/components/vfc-vnfmgr/templates/secrets.yaml with 100% similarity]
archive/vfc/components/vfc-vnfmgr/templates/service.yaml [moved from kubernetes/vfc/components/vfc-vnfmgr/templates/service.yaml with 100% similarity]
archive/vfc/components/vfc-vnfmgr/values.yaml [moved from kubernetes/vfc/components/vfc-vnfmgr/values.yaml with 100% similarity]
archive/vfc/components/vfc-vnfres/.helmignore [moved from kubernetes/vfc/components/vfc-vnfres/.helmignore with 100% similarity]
archive/vfc/components/vfc-vnfres/Chart.yaml [moved from kubernetes/vfc/components/vfc-vnfres/Chart.yaml with 100% similarity]
archive/vfc/components/vfc-vnfres/resources/config/logging/log.yml [moved from kubernetes/vfc/components/vfc-vnfres/resources/config/logging/log.yml with 100% similarity]
archive/vfc/components/vfc-vnfres/templates/configmap.yaml [moved from kubernetes/vfc/components/vfc-vnfres/templates/configmap.yaml with 100% similarity]
archive/vfc/components/vfc-vnfres/templates/deployment.yaml [moved from kubernetes/vfc/components/vfc-vnfres/templates/deployment.yaml with 100% similarity]
archive/vfc/components/vfc-vnfres/templates/secrets.yaml [moved from kubernetes/vfc/components/vfc-vnfres/templates/secrets.yaml with 100% similarity]
archive/vfc/components/vfc-vnfres/templates/service.yaml [moved from kubernetes/vfc/components/vfc-vnfres/templates/service.yaml with 100% similarity]
archive/vfc/components/vfc-vnfres/values.yaml [moved from kubernetes/vfc/components/vfc-vnfres/values.yaml with 100% similarity]
archive/vfc/components/vfc-zte-vnfm-driver/.helmignore [moved from kubernetes/vfc/components/vfc-zte-vnfm-driver/.helmignore with 100% similarity]
archive/vfc/components/vfc-zte-vnfm-driver/Chart.yaml [moved from kubernetes/vfc/components/vfc-zte-vnfm-driver/Chart.yaml with 100% similarity]
archive/vfc/components/vfc-zte-vnfm-driver/resources/config/logging/log.yml [moved from kubernetes/vfc/components/vfc-zte-vnfm-driver/resources/config/logging/log.yml with 100% similarity]
archive/vfc/components/vfc-zte-vnfm-driver/templates/configmap.yaml [moved from kubernetes/vfc/components/vfc-zte-vnfm-driver/templates/configmap.yaml with 100% similarity]
archive/vfc/components/vfc-zte-vnfm-driver/templates/deployment.yaml [moved from kubernetes/vfc/components/vfc-zte-vnfm-driver/templates/deployment.yaml with 100% similarity]
archive/vfc/components/vfc-zte-vnfm-driver/templates/service.yaml [moved from kubernetes/vfc/components/vfc-zte-vnfm-driver/templates/service.yaml with 100% similarity]
archive/vfc/components/vfc-zte-vnfm-driver/values.yaml [moved from kubernetes/vfc/components/vfc-zte-vnfm-driver/values.yaml with 100% similarity]
archive/vfc/resources/config/log/filebeat/filebeat.yml [moved from kubernetes/vfc/resources/config/log/filebeat/filebeat.yml with 100% similarity]
archive/vfc/templates/configmap.yaml [moved from kubernetes/vfc/templates/configmap.yaml with 100% similarity]
archive/vfc/templates/secrets.yaml [moved from kubernetes/vfc/templates/secrets.yaml with 100% similarity]
archive/vfc/values.yaml [moved from kubernetes/vfc/values.yaml with 100% similarity]
archive/vnfsdk/Chart.yaml [moved from kubernetes/vnfsdk/Chart.yaml with 100% similarity]
archive/vnfsdk/resources/config/configuration.xml [moved from kubernetes/vnfsdk/resources/config/configuration.xml with 100% similarity]
archive/vnfsdk/resources/config/marketplace_tables_postgres.sql [moved from kubernetes/vnfsdk/resources/config/marketplace_tables_postgres.sql with 100% similarity]
archive/vnfsdk/resources/nginx/nginx.conf [moved from kubernetes/vnfsdk/resources/nginx/nginx.conf with 100% similarity]
archive/vnfsdk/templates/NOTES.txt [moved from kubernetes/vnfsdk/templates/NOTES.txt with 100% similarity]
archive/vnfsdk/templates/configmap.yaml [moved from kubernetes/vnfsdk/templates/configmap.yaml with 100% similarity]
archive/vnfsdk/templates/deployment.yaml [moved from kubernetes/vnfsdk/templates/deployment.yaml with 100% similarity]
archive/vnfsdk/templates/ingress.yaml [moved from kubernetes/vnfsdk/templates/ingress.yaml with 100% similarity]
archive/vnfsdk/templates/job.yaml [moved from kubernetes/vnfsdk/templates/job.yaml with 100% similarity]
archive/vnfsdk/templates/secrets.yaml [moved from kubernetes/vnfsdk/templates/secrets.yaml with 100% similarity]
archive/vnfsdk/templates/service.yaml [moved from kubernetes/vnfsdk/templates/service.yaml with 100% similarity]
archive/vnfsdk/values.yaml [moved from kubernetes/vnfsdk/values.yaml with 100% similarity]
docs/_static/logo_onap_2024.png [new file with mode: 0644]
docs/archived/oom_developer_guide.rst
docs/archived/oom_quickstart_guide.rst
docs/archived/oom_setup_kubernetes_rancher.rst [deleted file]
docs/archived/oom_user_guide.rst
docs/archived/yaml/environments_onap_demo.yaml [new file with mode: 0644]
docs/conf.py
docs/requirements-docs.txt
docs/sections/guides/access_guides/oom_access_info.rst
docs/sections/guides/deployment_guides/oom_customize_overrides.rst
docs/sections/guides/deployment_guides/oom_deployment.rst
docs/sections/guides/deployment_guides/oom_dev_testing_local_deploy.rst
docs/sections/guides/deployment_guides/oom_helm_release_repo_deploy.rst
docs/sections/guides/deployment_guides/oom_helm_testing_repo_deploy.rst
docs/sections/guides/development_guides/oom_dev_config_management.rst
docs/sections/guides/development_guides/oom_dev_container_orchestration.rst
docs/sections/guides/development_guides/oom_dev_helm_chart_info.rst
docs/sections/guides/infra_guides/oom_infra_base_config_setup.rst
docs/sections/guides/infra_guides/oom_infra_deployment_requirements.rst
docs/sections/guides/infra_guides/oom_infra_optional_addons.rst
docs/sections/guides/user_guides/oom_user_guide.rst
docs/sections/oom_project_description.rst
docs/sections/release_notes/release-notes-amsterdam.rst
docs/sections/release_notes/release-notes-beijing.rst
docs/sections/release_notes/release-notes-casablanca.rst
docs/sections/release_notes/release-notes-dublin.rst
docs/sections/release_notes/release-notes-elalto.rst
docs/sections/release_notes/release-notes-frankfurt.rst
docs/sections/release_notes/release-notes-guilin.rst
docs/sections/release_notes/release-notes-honolulu.rst
docs/sections/release_notes/release-notes-istanbul.rst
docs/sections/release_notes/release-notes-jakarta.rst
docs/sections/release_notes/release-notes-kohn.rst
docs/sections/release_notes/release-notes-london.rst
docs/sections/release_notes/release-notes-montreal.rst [new file with mode: 0644]
docs/sections/release_notes/release-notes-newdelhi.rst [new file with mode: 0644]
docs/sections/release_notes/release-notes.rst
docs/sections/resources/helm/helm-search.txt
docs/sections/resources/yaml/common-gateway.yaml
docs/sections/resources/yaml/environments_onap_demo.yaml
docs/sections/resources/yaml/istiod-1_21.yaml [new file with mode: 0644]
docs/sections/resources/yaml/keycloak-ingress.yaml
docs/sections/resources/yaml/keycloak-server-values.yaml
kubernetes/aai/Chart.yaml
kubernetes/aai/components/aai-babel/Chart.yaml
kubernetes/aai/components/aai-babel/resources/config/application.properties
kubernetes/aai/components/aai-babel/resources/config/logback.xml
kubernetes/aai/components/aai-babel/templates/configmap.yaml
kubernetes/aai/components/aai-babel/templates/deployment.yaml
kubernetes/aai/components/aai-babel/templates/secrets.yaml
kubernetes/aai/components/aai-babel/templates/servicemonitor.yaml [new file with mode: 0644]
kubernetes/aai/components/aai-babel/values.yaml
kubernetes/aai/components/aai-graphadmin/Chart.yaml
kubernetes/aai/components/aai-graphadmin/resources/config/aaiconfig.properties
kubernetes/aai/components/aai-graphadmin/resources/config/application.properties
kubernetes/aai/components/aai-graphadmin/resources/config/janusgraph-cached.properties [deleted file]
kubernetes/aai/components/aai-graphadmin/resources/config/janusgraph-realtime.properties
kubernetes/aai/components/aai-graphadmin/resources/config/localhost-access-logback.xml
kubernetes/aai/components/aai-graphadmin/resources/config/logback.xml
kubernetes/aai/components/aai-graphadmin/resources/config/realm.properties [deleted file]
kubernetes/aai/components/aai-graphadmin/templates/_helpers.tpl [new file with mode: 0644]
kubernetes/aai/components/aai-graphadmin/templates/aai-graph-kafka-user.yml [new file with mode: 0644]
kubernetes/aai/components/aai-graphadmin/templates/configmap.yaml
kubernetes/aai/components/aai-graphadmin/templates/deployment.yaml
kubernetes/aai/components/aai-graphadmin/templates/job-copy-db-backup.yaml
kubernetes/aai/components/aai-graphadmin/templates/job-create-db.yaml
kubernetes/aai/components/aai-graphadmin/templates/job-migration.yaml
kubernetes/aai/components/aai-graphadmin/templates/pv.yaml
kubernetes/aai/components/aai-graphadmin/templates/pvc.yaml
kubernetes/aai/components/aai-graphadmin/templates/service.yaml
kubernetes/aai/components/aai-graphadmin/templates/servicemonitor.yaml
kubernetes/aai/components/aai-graphadmin/values.yaml
kubernetes/aai/components/aai-modelloader/Chart.yaml
kubernetes/aai/components/aai-modelloader/resources/application.properties [new file with mode: 0644]
kubernetes/aai/components/aai-modelloader/resources/config/log/logback.xml
kubernetes/aai/components/aai-modelloader/resources/config/model-loader.properties
kubernetes/aai/components/aai-modelloader/templates/configmap.yaml
kubernetes/aai/components/aai-modelloader/templates/deployment.yaml
kubernetes/aai/components/aai-modelloader/templates/podmonitor.yaml [new file with mode: 0644]
kubernetes/aai/components/aai-modelloader/values.yaml
kubernetes/aai/components/aai-resources/.helmignore
kubernetes/aai/components/aai-resources/Chart.yaml
kubernetes/aai/components/aai-resources/resources/config/aaiconfig.properties
kubernetes/aai/components/aai-resources/resources/config/application-keycloak.properties [deleted file]
kubernetes/aai/components/aai-resources/resources/config/application.properties
kubernetes/aai/components/aai-resources/resources/config/janusgraph-cached.properties [deleted file]
kubernetes/aai/components/aai-resources/resources/config/janusgraph-realtime.properties
kubernetes/aai/components/aai-resources/resources/config/localhost-access-logback.xml [deleted file]
kubernetes/aai/components/aai-resources/resources/config/logback.xml
kubernetes/aai/components/aai-resources/resources/config/realm.properties [deleted file]
kubernetes/aai/components/aai-resources/templates/_helpers.tpl [new file with mode: 0644]
kubernetes/aai/components/aai-resources/templates/aai-kafka-user.yml [new file with mode: 0644]
kubernetes/aai/components/aai-resources/templates/autoscaling.yaml [new file with mode: 0644]
kubernetes/aai/components/aai-resources/templates/configmap.yaml
kubernetes/aai/components/aai-resources/templates/deployment.yaml
kubernetes/aai/components/aai-resources/templates/service.yaml
kubernetes/aai/components/aai-resources/templates/servicemonitor.yaml
kubernetes/aai/components/aai-resources/values.yaml
kubernetes/aai/components/aai-schema-service/.helmignore
kubernetes/aai/components/aai-schema-service/Chart.yaml
kubernetes/aai/components/aai-schema-service/config/aaiconfig.properties
kubernetes/aai/components/aai-schema-service/config/application.properties
kubernetes/aai/components/aai-schema-service/config/localhost-access-logback.xml
kubernetes/aai/components/aai-schema-service/config/logback.xml
kubernetes/aai/components/aai-schema-service/templates/configmap.yaml
kubernetes/aai/components/aai-schema-service/templates/deployment.yaml
kubernetes/aai/components/aai-schema-service/templates/service.yaml
kubernetes/aai/components/aai-schema-service/values.yaml
kubernetes/aai/components/aai-sparky-be/.helmignore
kubernetes/aai/components/aai-sparky-be/Chart.yaml
kubernetes/aai/components/aai-sparky-be/resources/config/application/application-oxm-default.properties
kubernetes/aai/components/aai-sparky-be/resources/config/application/application-oxm-override.properties
kubernetes/aai/components/aai-sparky-be/resources/config/application/application-oxm-schema-prod.properties
kubernetes/aai/components/aai-sparky-be/resources/config/application/application-resources.properties
kubernetes/aai/components/aai-sparky-be/resources/config/application/application-ssl.properties
kubernetes/aai/components/aai-sparky-be/resources/config/application/application-sync.properties
kubernetes/aai/components/aai-sparky-be/resources/config/application/application.properties
kubernetes/aai/components/aai-sparky-be/resources/config/application/logback.xml
kubernetes/aai/components/aai-sparky-be/resources/config/application/users.config
kubernetes/aai/components/aai-sparky-be/templates/configmap.yaml
kubernetes/aai/components/aai-sparky-be/templates/deployment.yaml
kubernetes/aai/components/aai-sparky-be/values.yaml
kubernetes/aai/components/aai-traversal/.helmignore
kubernetes/aai/components/aai-traversal/Chart.yaml
kubernetes/aai/components/aai-traversal/resources/config/aaiconfig.properties
kubernetes/aai/components/aai-traversal/resources/config/application-keycloak.properties [deleted file]
kubernetes/aai/components/aai-traversal/resources/config/application.properties
kubernetes/aai/components/aai-traversal/resources/config/janusgraph-cached.properties [deleted file]
kubernetes/aai/components/aai-traversal/resources/config/janusgraph-realtime.properties
kubernetes/aai/components/aai-traversal/resources/config/localhost-access-logback.xml [deleted file]
kubernetes/aai/components/aai-traversal/resources/config/logback.xml
kubernetes/aai/components/aai-traversal/templates/_helpers.tpl [new file with mode: 0644]
kubernetes/aai/components/aai-traversal/templates/aai-trav-kafka-user.yml [new file with mode: 0644]
kubernetes/aai/components/aai-traversal/templates/autoscaling.yaml [new file with mode: 0644]
kubernetes/aai/components/aai-traversal/templates/configmap.yaml
kubernetes/aai/components/aai-traversal/templates/deployment.yaml
kubernetes/aai/components/aai-traversal/templates/job.yaml
kubernetes/aai/components/aai-traversal/templates/service.yaml
kubernetes/aai/components/aai-traversal/templates/servicemonitor.yaml
kubernetes/aai/components/aai-traversal/values.yaml
kubernetes/aai/resources/config/haproxy/resolvers.conf [new file with mode: 0644]
kubernetes/aai/templates/authorizationpolicy.yaml
kubernetes/aai/templates/configmap.yaml
kubernetes/aai/templates/deployment.yaml
kubernetes/aai/templates/secret.yaml
kubernetes/aai/templates/service.yaml
kubernetes/aai/templates/servicemonitor.yaml
kubernetes/aai/values.yaml
kubernetes/authentication/.helmignore [moved from kubernetes/platform/components/keycloak-init/.helmignore with 100% similarity]
kubernetes/authentication/Chart.yaml [moved from kubernetes/platform/components/keycloak-init/Chart.yaml with 82% similarity]
kubernetes/authentication/Makefile [moved from kubernetes/platform/components/keycloak-init/Makefile with 97% similarity]
kubernetes/authentication/README.md [new file with mode: 0644]
kubernetes/authentication/components/Makefile [moved from kubernetes/platform/components/keycloak-init/components/Makefile with 100% similarity]
kubernetes/authentication/components/keycloak-config-cli/.helmignore [moved from kubernetes/platform/components/keycloak-init/components/keycloak-config-cli/.helmignore with 100% similarity]
kubernetes/authentication/components/keycloak-config-cli/Chart.yaml [moved from kubernetes/platform/components/keycloak-init/components/keycloak-config-cli/Chart.yaml with 96% similarity]
kubernetes/authentication/components/keycloak-config-cli/templates/_helpers.tpl [moved from kubernetes/platform/components/keycloak-init/components/keycloak-config-cli/templates/_helpers.tpl with 100% similarity]
kubernetes/authentication/components/keycloak-config-cli/templates/job.yaml [moved from kubernetes/platform/components/keycloak-init/components/keycloak-config-cli/templates/job.yaml with 87% similarity]
kubernetes/authentication/components/keycloak-config-cli/templates/realms.yaml [moved from kubernetes/platform/components/keycloak-init/components/keycloak-config-cli/templates/realms.yaml with 100% similarity]
kubernetes/authentication/components/keycloak-config-cli/templates/secrets.yaml [moved from kubernetes/platform/components/keycloak-init/components/keycloak-config-cli/templates/secrets.yaml with 100% similarity]
kubernetes/authentication/components/keycloak-config-cli/values.yaml [moved from kubernetes/platform/components/keycloak-init/components/keycloak-config-cli/values.yaml with 91% similarity]
kubernetes/authentication/components/oauth2-proxy/.helmignore [moved from kubernetes/platform/components/oauth2-proxy/.helmignore with 100% similarity]
kubernetes/authentication/components/oauth2-proxy/Chart.yaml [moved from kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/Chart.yaml with 75% similarity]
kubernetes/authentication/components/oauth2-proxy/README.md [new file with mode: 0644]
kubernetes/authentication/components/oauth2-proxy/ci/default-values.yaml [moved from kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/ci/default-values.yaml with 100% similarity]
kubernetes/authentication/components/oauth2-proxy/ci/extra-args-as-dict-values.yaml [moved from kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/ci/extra-args-as-dict-values.yaml with 100% similarity]
kubernetes/authentication/components/oauth2-proxy/ci/extra-args-as-list-values.yaml [moved from kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/ci/extra-args-as-list-values.yaml with 100% similarity]
kubernetes/authentication/components/oauth2-proxy/ci/extra-env-tpl-values.yaml [moved from kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/ci/extra-env-tpl-values.yaml with 100% similarity]
kubernetes/authentication/components/oauth2-proxy/ci/horizontal-pod-autoscaling-values.yaml [new file with mode: 0644]
kubernetes/authentication/components/oauth2-proxy/ci/ingress-extra-paths-values.yaml [moved from kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/ci/ingress-extra-paths-values.yaml with 100% similarity]
kubernetes/authentication/components/oauth2-proxy/ci/pdb-values.yaml [moved from kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/ci/pdb-values.yaml with 100% similarity]
kubernetes/authentication/components/oauth2-proxy/ci/pod-security-context-values.yaml [moved from kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/ci/pod-security-context-values.yaml with 100% similarity]
kubernetes/authentication/components/oauth2-proxy/ci/redis-standalone-values.yaml [moved from kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/ci/redis-standalone-values.yaml with 82% similarity]
kubernetes/authentication/components/oauth2-proxy/ci/servicemonitor-values.yaml [new file with mode: 0644]
kubernetes/authentication/components/oauth2-proxy/ci/tpl-values.yaml [new file with mode: 0644]
kubernetes/authentication/components/oauth2-proxy/scripts/check-redis.sh [new file with mode: 0755]
kubernetes/authentication/components/oauth2-proxy/templates/NOTES.txt [new file with mode: 0644]
kubernetes/authentication/components/oauth2-proxy/templates/_capabilities.tpl [moved from kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/templates/_capabilities.tpl with 100% similarity]
kubernetes/authentication/components/oauth2-proxy/templates/_helpers.tpl [moved from kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/templates/_helpers.tpl with 66% similarity]
kubernetes/authentication/components/oauth2-proxy/templates/_ingress.tpl [moved from kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/templates/_ingress.tpl with 100% similarity]
kubernetes/authentication/components/oauth2-proxy/templates/configmap-authenticated-emails-file.yaml [moved from kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/templates/configmap-authenticated-emails-file.yaml with 80% similarity]
kubernetes/authentication/components/oauth2-proxy/templates/configmap-wait-for-redis.yaml [new file with mode: 0644]
kubernetes/authentication/components/oauth2-proxy/templates/configmap.yaml [moved from kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/templates/configmap.yaml with 75% similarity]
kubernetes/authentication/components/oauth2-proxy/templates/deployment.yaml [moved from kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/templates/deployment.yaml with 72% similarity]
kubernetes/authentication/components/oauth2-proxy/templates/deprecation.yaml [moved from kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/templates/deprecation.yaml with 100% similarity]
kubernetes/authentication/components/oauth2-proxy/templates/extra-manifests.yaml [moved from kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/templates/extra-manifests.yaml with 100% similarity]
kubernetes/authentication/components/oauth2-proxy/templates/google-secret.yaml [moved from kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/templates/google-secret.yaml with 89% similarity]
kubernetes/authentication/components/oauth2-proxy/templates/hpa.yaml [new file with mode: 0644]
kubernetes/authentication/components/oauth2-proxy/templates/ingress.yaml [moved from kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/templates/ingress.yaml with 85% similarity]
kubernetes/authentication/components/oauth2-proxy/templates/poddisruptionbudget.yaml [moved from kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/templates/poddisruptionbudget.yaml with 90% similarity]
kubernetes/authentication/components/oauth2-proxy/templates/redis-secret.yaml [moved from kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/templates/redis-secret.yaml with 93% similarity]
kubernetes/authentication/components/oauth2-proxy/templates/secret-alpha.yaml [new file with mode: 0644]
kubernetes/authentication/components/oauth2-proxy/templates/secret-authenticated-emails-file.yaml [moved from kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/templates/secret-authenticated-emails-file.yaml with 80% similarity]
kubernetes/authentication/components/oauth2-proxy/templates/secret-htpasswd-file.yaml [moved from kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/templates/secret-htpasswd-file.yaml with 86% similarity]
kubernetes/authentication/components/oauth2-proxy/templates/secret.yaml [moved from kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/templates/secret.yaml with 52% similarity]
kubernetes/authentication/components/oauth2-proxy/templates/service.yaml [moved from kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/templates/service.yaml with 81% similarity]
kubernetes/authentication/components/oauth2-proxy/templates/serviceaccount.yaml [new file with mode: 0644]
kubernetes/authentication/components/oauth2-proxy/templates/servicemonitor.yaml [new file with mode: 0644]
kubernetes/authentication/components/oauth2-proxy/values.yaml [moved from kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/values.yaml with 71% similarity]
kubernetes/authentication/resources/oauth2_proxy.cfg [new file with mode: 0644]
kubernetes/authentication/templates/_utils.tpl [new file with mode: 0644]
kubernetes/authentication/templates/authorizationpolicy.yaml [new file with mode: 0644]
kubernetes/authentication/templates/configmap.yaml [new file with mode: 0644]
kubernetes/authentication/templates/requestauthentication.yaml [new file with mode: 0644]
kubernetes/authentication/templates/secret.yaml [new file with mode: 0644]
kubernetes/authentication/values.yaml [new file with mode: 0644]
kubernetes/cds/Chart.yaml
kubernetes/cds/components/cds-blueprints-processor/Chart.yaml
kubernetes/cds/components/cds-blueprints-processor/resources/config/application.properties
kubernetes/cds/components/cds-blueprints-processor/values.yaml
kubernetes/cds/components/cds-sdc-listener/Chart.yaml
kubernetes/cds/components/cds-sdc-listener/templates/deployment.yaml
kubernetes/cds/components/cds-sdc-listener/values.yaml
kubernetes/cds/values.yaml
kubernetes/common/cassandra/.helmignore [new file with mode: 0644]
kubernetes/common/cassandra/Chart.yaml
kubernetes/common/cassandra/resources/config/docker-entrypoint.sh
kubernetes/common/cassandra/resources/exec.py
kubernetes/common/cassandra/templates/backup/cronjob.yaml
kubernetes/common/cassandra/templates/cassOp.yaml
kubernetes/common/cassandra/templates/configmap.yaml
kubernetes/common/cassandra/templates/pv.yaml
kubernetes/common/cassandra/templates/secrets.yaml
kubernetes/common/cassandra/templates/service.yaml
kubernetes/common/cassandra/templates/servicemonitor.yaml
kubernetes/common/cassandra/templates/statefulset.yaml
kubernetes/common/cassandra/values.yaml
kubernetes/common/common/.helmignore [new file with mode: 0644]
kubernetes/common/common/Chart.yaml
kubernetes/common/common/templates/_affinities.tpl
kubernetes/common/common/templates/_cassOp.tpl
kubernetes/common/common/templates/_dmaapProvisioning.tpl
kubernetes/common/common/templates/_ingress.tpl
kubernetes/common/common/templates/_labels.tpl
kubernetes/common/common/templates/_log.tpl
kubernetes/common/common/templates/_mariadb.tpl
kubernetes/common/common/templates/_mongodb.tpl [new file with mode: 0644]
kubernetes/common/common/templates/_name.tpl
kubernetes/common/common/templates/_pod.tpl
kubernetes/common/common/templates/_secret.tpl
kubernetes/common/common/templates/_serviceMesh.tpl
kubernetes/common/common/templates/_serviceMonitor.tpl
kubernetes/common/common/templates/_strimzikafka.tpl
kubernetes/common/elasticsearch/.helmignore
kubernetes/common/elasticsearch/Chart.yaml
kubernetes/common/elasticsearch/components/curator/Chart.yaml
kubernetes/common/elasticsearch/components/curator/templates/cronjob.yaml
kubernetes/common/elasticsearch/components/curator/values.yaml
kubernetes/common/elasticsearch/components/data/Chart.yaml
kubernetes/common/elasticsearch/components/data/templates/statefulset.yaml
kubernetes/common/elasticsearch/components/data/values.yaml
kubernetes/common/elasticsearch/components/master/Chart.yaml
kubernetes/common/elasticsearch/components/master/templates/statefulset.yaml
kubernetes/common/elasticsearch/components/master/values.yaml
kubernetes/common/elasticsearch/templates/_helpers.tpl
kubernetes/common/elasticsearch/templates/configmap-es.yaml
kubernetes/common/elasticsearch/templates/coordinating-deploy.yaml
kubernetes/common/elasticsearch/values.yaml
kubernetes/common/etcd-init/Chart.yaml
kubernetes/common/etcd-init/templates/job.yaml
kubernetes/common/etcd-init/values.yaml
kubernetes/common/etcd/.helmignore
kubernetes/common/etcd/Chart.yaml
kubernetes/common/etcd/templates/pv.yaml
kubernetes/common/etcd/templates/service.yaml
kubernetes/common/etcd/templates/statefulset.yaml
kubernetes/common/etcd/values.yaml
kubernetes/common/logConfiguration/.helmignore [new file with mode: 0644]
kubernetes/common/logConfiguration/Chart.yaml
kubernetes/common/mariadb-galera/.helmignore
kubernetes/common/mariadb-galera/Chart.yaml
kubernetes/common/mariadb-galera/templates/backup/cronjob.yaml
kubernetes/common/mariadb-galera/templates/backup/pvc.yaml
kubernetes/common/mariadb-galera/templates/configmap.yaml
kubernetes/common/mariadb-galera/templates/mariadb.yaml
kubernetes/common/mariadb-galera/templates/metrics-svc.yaml
kubernetes/common/mariadb-galera/templates/pdb.yaml
kubernetes/common/mariadb-galera/templates/prometheusrules.yaml
kubernetes/common/mariadb-galera/templates/pv.yaml
kubernetes/common/mariadb-galera/templates/secrets.yaml
kubernetes/common/mariadb-galera/templates/servicemonitor.yaml
kubernetes/common/mariadb-galera/templates/statefulset.yaml
kubernetes/common/mariadb-galera/values.yaml
kubernetes/common/mariadb-init/.helmignore
kubernetes/common/mariadb-init/Chart.yaml
kubernetes/common/mariadb-init/resources/config/db_init.sh
kubernetes/common/mariadb-init/templates/_configmap.tpl
kubernetes/common/mariadb-init/templates/_mariadb.tpl
kubernetes/common/mariadb-init/templates/configmap.yaml
kubernetes/common/mariadb-init/templates/job.yaml
kubernetes/common/mariadb-init/templates/secret.yaml
kubernetes/common/mariadb-init/tests/configmap_test.yaml
kubernetes/common/mariadb-init/tests/job_test.yaml
kubernetes/common/mariadb-init/values.yaml
kubernetes/common/mongodb-init/.helmignore [new file with mode: 0644]
kubernetes/common/mongodb-init/Chart.yaml [new file with mode: 0644]
kubernetes/common/mongodb-init/README.md [new file with mode: 0644]
kubernetes/common/mongodb-init/resources/config/setup.sql [new file with mode: 0644]
kubernetes/common/mongodb-init/templates/configmap.yaml [new file with mode: 0644]
kubernetes/common/mongodb-init/templates/job.yaml [new file with mode: 0644]
kubernetes/common/mongodb-init/templates/secrets.yaml [new file with mode: 0644]
kubernetes/common/mongodb-init/values.yaml [new file with mode: 0644]
kubernetes/common/mongodb/.helmignore
kubernetes/common/mongodb/CHANGELOG.md [new file with mode: 0644]
kubernetes/common/mongodb/Chart.yaml
kubernetes/common/mongodb/README.md
kubernetes/common/mongodb/common/.helmignore
kubernetes/common/mongodb/common/CHANGELOG.md [new file with mode: 0644]
kubernetes/common/mongodb/common/Chart.yaml
kubernetes/common/mongodb/common/README.md
kubernetes/common/mongodb/common/templates/_affinities.tpl
kubernetes/common/mongodb/common/templates/_capabilities.tpl
kubernetes/common/mongodb/common/templates/_compatibility.tpl [new file with mode: 0644]
kubernetes/common/mongodb/common/templates/_errors.tpl
kubernetes/common/mongodb/common/templates/_images.tpl
kubernetes/common/mongodb/common/templates/_ingress.tpl
kubernetes/common/mongodb/common/templates/_labels.tpl
kubernetes/common/mongodb/common/templates/_names.tpl
kubernetes/common/mongodb/common/templates/_resources.tpl
kubernetes/common/mongodb/common/templates/_secrets.tpl
kubernetes/common/mongodb/common/templates/_storage.tpl
kubernetes/common/mongodb/common/templates/_tplvalues.tpl
kubernetes/common/mongodb/common/templates/_utils.tpl
kubernetes/common/mongodb/common/templates/_warnings.tpl
kubernetes/common/mongodb/common/templates/validations/_cassandra.tpl
kubernetes/common/mongodb/common/templates/validations/_mariadb.tpl
kubernetes/common/mongodb/common/templates/validations/_mongodb.tpl
kubernetes/common/mongodb/common/templates/validations/_mysql.tpl
kubernetes/common/mongodb/common/templates/validations/_postgresql.tpl
kubernetes/common/mongodb/common/templates/validations/_redis.tpl
kubernetes/common/mongodb/common/templates/validations/_validations.tpl
kubernetes/common/mongodb/common/values.yaml
kubernetes/common/mongodb/templates/NOTES.txt
kubernetes/common/mongodb/templates/_helpers.tpl
kubernetes/common/mongodb/templates/arbiter/configmap.yaml
kubernetes/common/mongodb/templates/arbiter/headless-svc.yaml
kubernetes/common/mongodb/templates/arbiter/pdb.yaml
kubernetes/common/mongodb/templates/arbiter/statefulset.yaml
kubernetes/common/mongodb/templates/backup/cronjob.yaml
kubernetes/common/mongodb/templates/backup/pvc.yaml
kubernetes/common/mongodb/templates/common-scripts-cm.yaml
kubernetes/common/mongodb/templates/configmap.yaml
kubernetes/common/mongodb/templates/extra-list.yaml
kubernetes/common/mongodb/templates/hidden/configmap.yaml
kubernetes/common/mongodb/templates/hidden/external-access-svc.yaml
kubernetes/common/mongodb/templates/hidden/headless-svc.yaml
kubernetes/common/mongodb/templates/hidden/pdb.yaml
kubernetes/common/mongodb/templates/hidden/statefulset.yaml
kubernetes/common/mongodb/templates/initialization-configmap.yaml
kubernetes/common/mongodb/templates/metrics-svc.yaml
kubernetes/common/mongodb/templates/networkpolicy.yaml
kubernetes/common/mongodb/templates/prometheusrule.yaml
kubernetes/common/mongodb/templates/psp.yaml
kubernetes/common/mongodb/templates/replicaset/external-access-svc.yaml
kubernetes/common/mongodb/templates/replicaset/headless-svc.yaml
kubernetes/common/mongodb/templates/replicaset/pdb.yaml
kubernetes/common/mongodb/templates/replicaset/scripts-configmap.yaml
kubernetes/common/mongodb/templates/replicaset/statefulset.yaml
kubernetes/common/mongodb/templates/replicaset/svc.yaml
kubernetes/common/mongodb/templates/role.yaml
kubernetes/common/mongodb/templates/rolebinding.yaml
kubernetes/common/mongodb/templates/secrets-ca.yaml
kubernetes/common/mongodb/templates/secrets.yaml
kubernetes/common/mongodb/templates/serviceaccount.yaml
kubernetes/common/mongodb/templates/servicemonitor.yaml
kubernetes/common/mongodb/templates/standalone/dep-sts.yaml
kubernetes/common/mongodb/templates/standalone/pdb.yaml [new file with mode: 0644]
kubernetes/common/mongodb/templates/standalone/pvc.yaml
kubernetes/common/mongodb/templates/standalone/svc.yaml
kubernetes/common/mongodb/templates/update-password/job.yaml [new file with mode: 0644]
kubernetes/common/mongodb/templates/update-password/new-secret.yaml [new file with mode: 0644]
kubernetes/common/mongodb/templates/update-password/previous-secret.yaml [new file with mode: 0644]
kubernetes/common/mongodb/values.yaml
kubernetes/common/nginx/.helmignore [new file with mode: 0644]
kubernetes/common/nginx/Chart.yaml [new file with mode: 0644]
kubernetes/common/nginx/README.md [new file with mode: 0644]
kubernetes/common/nginx/common/.helmignore [new file with mode: 0644]
kubernetes/common/nginx/common/CHANGELOG.md [new file with mode: 0644]
kubernetes/common/nginx/common/Chart.yaml [new file with mode: 0644]
kubernetes/common/nginx/common/README.md [new file with mode: 0644]
kubernetes/common/nginx/common/templates/_affinities.tpl [new file with mode: 0644]
kubernetes/common/nginx/common/templates/_capabilities.tpl [new file with mode: 0644]
kubernetes/common/nginx/common/templates/_compatibility.tpl [new file with mode: 0644]
kubernetes/common/nginx/common/templates/_errors.tpl [new file with mode: 0644]
kubernetes/common/nginx/common/templates/_images.tpl [new file with mode: 0644]
kubernetes/common/nginx/common/templates/_ingress.tpl [new file with mode: 0644]
kubernetes/common/nginx/common/templates/_labels.tpl [new file with mode: 0644]
kubernetes/common/nginx/common/templates/_names.tpl [new file with mode: 0644]
kubernetes/common/nginx/common/templates/_resources.tpl [new file with mode: 0644]
kubernetes/common/nginx/common/templates/_secrets.tpl [new file with mode: 0644]
kubernetes/common/nginx/common/templates/_storage.tpl [new file with mode: 0644]
kubernetes/common/nginx/common/templates/_tplvalues.tpl [new file with mode: 0644]
kubernetes/common/nginx/common/templates/_utils.tpl [new file with mode: 0644]
kubernetes/common/nginx/common/templates/_warnings.tpl [new file with mode: 0644]
kubernetes/common/nginx/common/templates/validations/_cassandra.tpl [new file with mode: 0644]
kubernetes/common/nginx/common/templates/validations/_mariadb.tpl [new file with mode: 0644]
kubernetes/common/nginx/common/templates/validations/_mongodb.tpl [new file with mode: 0644]
kubernetes/common/nginx/common/templates/validations/_mysql.tpl [new file with mode: 0644]
kubernetes/common/nginx/common/templates/validations/_postgresql.tpl [new file with mode: 0644]
kubernetes/common/nginx/common/templates/validations/_redis.tpl [new file with mode: 0644]
kubernetes/common/nginx/common/templates/validations/_validations.tpl [new file with mode: 0644]
kubernetes/common/nginx/common/values.yaml [new file with mode: 0644]
kubernetes/common/nginx/templates/NOTES.txt [new file with mode: 0644]
kubernetes/common/nginx/templates/_helpers.tpl [new file with mode: 0644]
kubernetes/common/nginx/templates/deployment.yaml [new file with mode: 0644]
kubernetes/common/nginx/templates/extra-list.yaml [new file with mode: 0644]
kubernetes/common/nginx/templates/health-ingress.yaml [new file with mode: 0644]
kubernetes/common/nginx/templates/hpa.yaml [new file with mode: 0644]
kubernetes/common/nginx/templates/ingress-tls-secret.yaml [new file with mode: 0644]
kubernetes/common/nginx/templates/ingress.yaml [new file with mode: 0644]
kubernetes/common/nginx/templates/networkpolicy.yaml [new file with mode: 0644]
kubernetes/common/nginx/templates/pdb.yaml [new file with mode: 0644]
kubernetes/common/nginx/templates/prometheusrules.yaml [new file with mode: 0644]
kubernetes/common/nginx/templates/server-block-configmap.yaml [new file with mode: 0644]
kubernetes/common/nginx/templates/serviceaccount.yaml [new file with mode: 0644]
kubernetes/common/nginx/templates/servicemonitor.yaml [new file with mode: 0644]
kubernetes/common/nginx/templates/stream-server-block-configmap.yaml [new file with mode: 0644]
kubernetes/common/nginx/templates/svc.yaml [new file with mode: 0644]
kubernetes/common/nginx/templates/tls-secret.yaml [new file with mode: 0644]
kubernetes/common/nginx/values.schema.json [new file with mode: 0644]
kubernetes/common/nginx/values.yaml [new file with mode: 0644]
kubernetes/common/postgres-init/.helmignore
kubernetes/common/postgres-init/Chart.yaml
kubernetes/common/postgres-init/templates/configmap.yaml
kubernetes/common/postgres-init/templates/job.yaml
kubernetes/common/postgres-init/values.yaml
kubernetes/common/postgres/.helmignore
kubernetes/common/postgres/Chart.yaml
kubernetes/common/postgres/configs/pg_hba.conf
kubernetes/common/postgres/templates/deployment-primary.yaml
kubernetes/common/postgres/templates/deployment-replica.yaml
kubernetes/common/postgres/templates/metrics-svc-primary.yaml
kubernetes/common/postgres/templates/metrics-svc-replica.yaml
kubernetes/common/postgres/templates/postgres.yaml
kubernetes/common/postgres/templates/pv-primary.yaml
kubernetes/common/postgres/templates/pvc-replica.yaml
kubernetes/common/postgres/templates/service-replica.yaml
kubernetes/common/postgres/templates/servicemonitor.yaml
kubernetes/common/readinessCheck/.helmignore [new file with mode: 0644]
kubernetes/common/readinessCheck/Chart.yaml
kubernetes/common/readinessCheck/templates/_readinessCheck.tpl
kubernetes/common/readinessCheck/values.yaml
kubernetes/common/repositoryGenerator/.helmignore [new file with mode: 0644]
kubernetes/common/repositoryGenerator/Chart.yaml
kubernetes/common/repositoryGenerator/templates/_repository.tpl
kubernetes/common/repositoryGenerator/values.yaml
kubernetes/common/serviceAccount/.helmignore [new file with mode: 0644]
kubernetes/common/serviceAccount/Chart.yaml
kubernetes/common/serviceAccount/templates/role.yaml
kubernetes/common/serviceAccount/templates/service-account.yaml
kubernetes/common/serviceAccount/values.yaml
kubernetes/common/timescaledb/.helmignore
kubernetes/common/timescaledb/Chart.yaml
kubernetes/common/timescaledb/templates/configmap-init.yaml
kubernetes/common/timescaledb/templates/statefulset.yaml
kubernetes/common/timescaledb/values.yaml
kubernetes/cps/components/cps-core/resources/config/application-helm.yml
kubernetes/cps/components/cps-core/values.yaml
kubernetes/cps/components/cps-temporal/values.yaml
kubernetes/cps/components/ncmp-dmi-plugin/values.yaml
kubernetes/dcaegen2-services/Chart.yaml
kubernetes/dcaegen2-services/common/dcaegen2-services-common/templates/_deployment.tpl
kubernetes/dcaegen2-services/common/dcaegen2-services-common/templates/ves-collector/_copyEtc.tpl [new file with mode: 0644]
kubernetes/dcaegen2-services/components/dcae-hv-ves-collector/values.yaml
kubernetes/dcaegen2-services/components/dcae-prh/Chart.yaml
kubernetes/dcaegen2-services/components/dcae-prh/values.yaml
kubernetes/dcaegen2-services/components/dcae-ves-collector/Chart.yaml
kubernetes/dcaegen2-services/components/dcae-ves-collector/values.yaml
kubernetes/dcaegen2-services/components/dcae-ves-openapi-manager/values.yaml
kubernetes/dcaegen2-services/resources/config/log/filebeat/filebeat.yml
kubernetes/dcaegen2-services/resources/expected-components.json
kubernetes/dcaegen2-services/values.yaml
kubernetes/helm/plugins/deploy/deploy.sh
kubernetes/multicloud/Chart.yaml
kubernetes/multicloud/components/multicloud-fcaps/Chart.yaml
kubernetes/multicloud/components/multicloud-k8s/Chart.yaml
kubernetes/multicloud/components/multicloud-k8s/resources/config/k8sconfig.json
kubernetes/multicloud/components/multicloud-k8s/templates/deployment.yaml
kubernetes/multicloud/components/multicloud-k8s/values.yaml
kubernetes/multicloud/templates/deployment.yaml
kubernetes/multicloud/values.yaml
kubernetes/onap/Chart.yaml
kubernetes/onap/resources/environments/dev.yaml
kubernetes/onap/resources/overrides/environment.yaml
kubernetes/onap/resources/overrides/onap-5g-network-slicing.yaml
kubernetes/onap/resources/overrides/onap-all-ingress-gatewayapi.yaml
kubernetes/onap/resources/overrides/onap-all-ingress-istio.yaml
kubernetes/onap/resources/overrides/onap-all-ingress-nginx-vhost.yaml
kubernetes/onap/resources/overrides/onap-all.yaml
kubernetes/onap/resources/overrides/onap-vfw.yaml
kubernetes/onap/resources/overrides/sm-onap.yaml
kubernetes/onap/values.yaml
kubernetes/platform/Chart.yaml
kubernetes/platform/components/chartmuseum/templates/deployment.yaml
kubernetes/platform/components/cmpv2-cert-provider/values.yaml
kubernetes/platform/components/keycloak-init/resources/realms/onap-realm.json [deleted file]
kubernetes/platform/components/keycloak-init/templates/secret.yaml [deleted file]
kubernetes/platform/components/keycloak-init/values.yaml [deleted file]
kubernetes/platform/components/oauth2-proxy/Chart.yaml [deleted file]
kubernetes/platform/components/oauth2-proxy/Makefile [deleted file]
kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/.helmignore [deleted file]
kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/README.md [deleted file]
kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/ci/servicemonitor-values.yaml [deleted file]
kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/ci/tpl-values.yaml [deleted file]
kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/templates/NOTES.txt [deleted file]
kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/templates/configmap-alpha.yaml [deleted file]
kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/templates/serviceaccount.yaml [deleted file]
kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/templates/servicemonitor.yaml [deleted file]
kubernetes/platform/components/oauth2-proxy/values.yaml [deleted file]
kubernetes/platform/values.yaml
kubernetes/policy/Chart.yaml [changed mode: 0755->0644]
kubernetes/policy/components/policy-apex-pdp/Chart.yaml [changed mode: 0755->0644]
kubernetes/policy/components/policy-apex-pdp/templates/authorizationpolicy.yaml
kubernetes/policy/components/policy-apex-pdp/templates/configmap.yaml
kubernetes/policy/components/policy-apex-pdp/templates/deployment.yaml
kubernetes/policy/components/policy-apex-pdp/templates/kafkauser.yaml
kubernetes/policy/components/policy-apex-pdp/values.yaml [changed mode: 0755->0644]
kubernetes/policy/components/policy-api/Chart.yaml [changed mode: 0755->0644]
kubernetes/policy/components/policy-api/resources/config/apiParameters.yaml
kubernetes/policy/components/policy-api/resources/config/db-pg.sh [moved from kubernetes/policy/resources/config/db-pg.sh with 72% similarity]
kubernetes/policy/components/policy-api/resources/config/db_migrator_pg_policy_init.sh [moved from kubernetes/policy/resources/config/db_migrator_pg_policy_init.sh with 57% similarity]
kubernetes/policy/components/policy-api/templates/authorizationpolicy.yaml
kubernetes/policy/components/policy-api/templates/configmap.yaml
kubernetes/policy/components/policy-api/templates/deployment.yaml
kubernetes/policy/components/policy-api/values.yaml [changed mode: 0755->0644]
kubernetes/policy/components/policy-clamp-ac-a1pms-ppnt/Chart.yaml [changed mode: 0755->0644]
kubernetes/policy/components/policy-clamp-ac-a1pms-ppnt/resources/config/A1pmsParticipantParameters.yaml
kubernetes/policy/components/policy-clamp-ac-a1pms-ppnt/templates/authorizationpolicy.yaml
kubernetes/policy/components/policy-clamp-ac-a1pms-ppnt/templates/configmap.yaml
kubernetes/policy/components/policy-clamp-ac-a1pms-ppnt/templates/deployment.yaml
kubernetes/policy/components/policy-clamp-ac-a1pms-ppnt/templates/service.yaml
kubernetes/policy/components/policy-clamp-ac-a1pms-ppnt/values.yaml [changed mode: 0755->0644]
kubernetes/policy/components/policy-clamp-ac-http-ppnt/Chart.yaml
kubernetes/policy/components/policy-clamp-ac-http-ppnt/resources/config/HttpParticipantParameters.yaml
kubernetes/policy/components/policy-clamp-ac-http-ppnt/templates/authorizationpolicy.yaml
kubernetes/policy/components/policy-clamp-ac-http-ppnt/templates/configmap.yaml
kubernetes/policy/components/policy-clamp-ac-http-ppnt/templates/deployment.yaml
kubernetes/policy/components/policy-clamp-ac-http-ppnt/templates/service.yaml
kubernetes/policy/components/policy-clamp-ac-http-ppnt/values.yaml
kubernetes/policy/components/policy-clamp-ac-k8s-ppnt/Chart.yaml
kubernetes/policy/components/policy-clamp-ac-k8s-ppnt/resources/config/KubernetesParticipantParameters.yaml
kubernetes/policy/components/policy-clamp-ac-k8s-ppnt/templates/authorizationpolicy.yaml
kubernetes/policy/components/policy-clamp-ac-k8s-ppnt/templates/configmap.yaml
kubernetes/policy/components/policy-clamp-ac-k8s-ppnt/templates/deployment.yaml
kubernetes/policy/components/policy-clamp-ac-k8s-ppnt/templates/service.yaml
kubernetes/policy/components/policy-clamp-ac-k8s-ppnt/values.yaml
kubernetes/policy/components/policy-clamp-ac-kserve-ppnt/Chart.yaml [changed mode: 0755->0644]
kubernetes/policy/components/policy-clamp-ac-kserve-ppnt/resources/config/KserveParticipantParameters.yaml
kubernetes/policy/components/policy-clamp-ac-kserve-ppnt/templates/authorizationpolicy.yaml
kubernetes/policy/components/policy-clamp-ac-kserve-ppnt/templates/configmap.yaml
kubernetes/policy/components/policy-clamp-ac-kserve-ppnt/templates/deployment.yaml
kubernetes/policy/components/policy-clamp-ac-kserve-ppnt/templates/kafkauser.yaml
kubernetes/policy/components/policy-clamp-ac-kserve-ppnt/templates/service.yaml
kubernetes/policy/components/policy-clamp-ac-kserve-ppnt/values.yaml [changed mode: 0755->0644]
kubernetes/policy/components/policy-clamp-ac-pf-ppnt/Chart.yaml
kubernetes/policy/components/policy-clamp-ac-pf-ppnt/resources/config/PolicyParticipantParameters.yaml
kubernetes/policy/components/policy-clamp-ac-pf-ppnt/templates/authorizationpolicy.yaml
kubernetes/policy/components/policy-clamp-ac-pf-ppnt/templates/configmap.yaml
kubernetes/policy/components/policy-clamp-ac-pf-ppnt/templates/deployment.yaml
kubernetes/policy/components/policy-clamp-ac-pf-ppnt/templates/service.yaml
kubernetes/policy/components/policy-clamp-ac-pf-ppnt/values.yaml
kubernetes/policy/components/policy-clamp-runtime-acm/Chart.yaml
kubernetes/policy/components/policy-clamp-runtime-acm/resources/config/acRuntimeParameters.yaml
kubernetes/policy/components/policy-clamp-runtime-acm/templates/authorizationpolicy.yaml
kubernetes/policy/components/policy-clamp-runtime-acm/templates/configmap.yaml
kubernetes/policy/components/policy-clamp-runtime-acm/templates/deployment.yaml
kubernetes/policy/components/policy-clamp-runtime-acm/values.yaml
kubernetes/policy/components/policy-distribution/Chart.yaml [changed mode: 0755->0644]
kubernetes/policy/components/policy-distribution/templates/authorizationpolicy.yaml
kubernetes/policy/components/policy-distribution/templates/configmap.yaml
kubernetes/policy/components/policy-distribution/templates/deployment.yaml
kubernetes/policy/components/policy-distribution/values.yaml [changed mode: 0755->0644]
kubernetes/policy/components/policy-drools-pdp/Chart.yaml [changed mode: 0755->0644]
kubernetes/policy/components/policy-drools-pdp/resources/configmaps/base.conf [changed mode: 0755->0644]
kubernetes/policy/components/policy-drools-pdp/resources/configmaps/feature-distributed-locking.properties [new file with mode: 0644]
kubernetes/policy/components/policy-drools-pdp/resources/configmaps/feature-lifecycle.properties [new file with mode: 0644]
kubernetes/policy/components/policy-drools-pdp/resources/configmaps/feature-pooling-messages.conf [moved from kubernetes/policy/components/policy-drools-pdp/resources/configmaps/feature-pooling-dmaap.conf with 88% similarity]
kubernetes/policy/components/policy-drools-pdp/resources/secrets/credentials.conf
kubernetes/policy/components/policy-drools-pdp/templates/authorizationpolicy.yaml
kubernetes/policy/components/policy-drools-pdp/templates/configmap.yaml
kubernetes/policy/components/policy-drools-pdp/templates/secrets.yaml
kubernetes/policy/components/policy-drools-pdp/templates/service.yaml
kubernetes/policy/components/policy-drools-pdp/templates/statefulset.yaml [changed mode: 0755->0644]
kubernetes/policy/components/policy-drools-pdp/values.yaml [changed mode: 0755->0644]
kubernetes/policy/components/policy-nexus/Chart.yaml [changed mode: 0755->0644]
kubernetes/policy/components/policy-nexus/templates/authorizationpolicy.yaml
kubernetes/policy/components/policy-nexus/templates/deployment.yaml
kubernetes/policy/components/policy-nexus/templates/pv.yaml
kubernetes/policy/components/policy-nexus/templates/pvc.yaml
kubernetes/policy/components/policy-nexus/templates/service.yaml
kubernetes/policy/components/policy-nexus/values.yaml [changed mode: 0755->0644]
kubernetes/policy/components/policy-opa-pdp/Chart.yaml [new file with mode: 0644]
kubernetes/policy/components/policy-opa-pdp/resources/config/config.json [new file with mode: 0755]
kubernetes/policy/components/policy-opa-pdp/templates/authorizationpolicy.yaml [new file with mode: 0755]
kubernetes/policy/components/policy-opa-pdp/templates/autoscaling.yaml [new file with mode: 0755]
kubernetes/policy/components/policy-opa-pdp/templates/configmap.yaml [new file with mode: 0755]
kubernetes/policy/components/policy-opa-pdp/templates/deployment.yaml [new file with mode: 0755]
kubernetes/policy/components/policy-opa-pdp/templates/kafkauser.yaml [new file with mode: 0755]
kubernetes/policy/components/policy-opa-pdp/templates/secrets.yaml [new file with mode: 0755]
kubernetes/policy/components/policy-opa-pdp/templates/service.yaml [new file with mode: 0755]
kubernetes/policy/components/policy-opa-pdp/templates/serviceMonitor.yaml [new file with mode: 0755]
kubernetes/policy/components/policy-opa-pdp/values.yaml [new file with mode: 0644]
kubernetes/policy/components/policy-pap/Chart.yaml [changed mode: 0755->0644]
kubernetes/policy/components/policy-pap/resources/config/papParameters.yaml
kubernetes/policy/components/policy-pap/templates/authorizationpolicy.yaml
kubernetes/policy/components/policy-pap/templates/configmap.yaml
kubernetes/policy/components/policy-pap/templates/deployment.yaml [changed mode: 0755->0644]
kubernetes/policy/components/policy-pap/values.yaml
kubernetes/policy/components/policy-xacml-pdp/Chart.yaml [changed mode: 0755->0644]
kubernetes/policy/components/policy-xacml-pdp/resources/config/xacml.properties [changed mode: 0755->0644]
kubernetes/policy/components/policy-xacml-pdp/templates/authorizationpolicy.yaml
kubernetes/policy/components/policy-xacml-pdp/templates/autoscaling.yaml [new file with mode: 0644]
kubernetes/policy/components/policy-xacml-pdp/templates/configmap.yaml
kubernetes/policy/components/policy-xacml-pdp/templates/deployment.yaml [changed mode: 0755->0644]
kubernetes/policy/components/policy-xacml-pdp/templates/service.yaml
kubernetes/policy/components/policy-xacml-pdp/values.yaml [changed mode: 0755->0644]
kubernetes/policy/resources/config/db.sh [deleted file]
kubernetes/policy/resources/config/db_migrator_policy_init.sh [deleted file]
kubernetes/policy/templates/configmap.yaml [deleted file]
kubernetes/policy/templates/job.yaml [deleted file]
kubernetes/policy/templates/policy-kafka-topics.yaml
kubernetes/policy/templates/policy-kafka-user.yaml
kubernetes/policy/values.yaml [changed mode: 0755->0644]
kubernetes/portal-ng/Chart.yaml
kubernetes/portal-ng/components/portal-ng-bff/Chart.yaml
kubernetes/portal-ng/components/portal-ng-bff/templates/configmap.yaml
kubernetes/portal-ng/components/portal-ng-bff/templates/deployment.yaml
kubernetes/portal-ng/components/portal-ng-bff/values.yaml
kubernetes/portal-ng/components/portal-ng-history/Chart.yaml
kubernetes/portal-ng/components/portal-ng-history/templates/configmap.yaml
kubernetes/portal-ng/components/portal-ng-history/templates/deployment.yaml
kubernetes/portal-ng/components/portal-ng-history/values.yaml
kubernetes/portal-ng/components/portal-ng-preferences/Chart.yaml
kubernetes/portal-ng/components/portal-ng-preferences/templates/configmap.yaml
kubernetes/portal-ng/components/portal-ng-preferences/templates/deployment.yaml
kubernetes/portal-ng/components/portal-ng-preferences/values.yaml
kubernetes/portal-ng/components/portal-ng-ui/Chart.yaml
kubernetes/portal-ng/components/portal-ng-ui/resources/assets/acl.json [new file with mode: 0644]
kubernetes/portal-ng/components/portal-ng-ui/resources/assets/env.js [new file with mode: 0644]
kubernetes/portal-ng/components/portal-ng-ui/resources/assets/version.json [new file with mode: 0644]
kubernetes/portal-ng/components/portal-ng-ui/resources/default.conf [new file with mode: 0644]
kubernetes/portal-ng/components/portal-ng-ui/templates/configmap-assets.yaml [new file with mode: 0644]
kubernetes/portal-ng/components/portal-ng-ui/templates/configmap-nginx-config.yaml [new file with mode: 0644]
kubernetes/portal-ng/components/portal-ng-ui/templates/configmap-version-json.yaml [new file with mode: 0644]
kubernetes/portal-ng/components/portal-ng-ui/templates/configmap.yaml
kubernetes/portal-ng/components/portal-ng-ui/templates/deployment.yaml
kubernetes/portal-ng/components/portal-ng-ui/values.yaml
kubernetes/robot/templates/deployment.yaml
kubernetes/robot/values.yaml
kubernetes/sdc/Chart.yaml
kubernetes/sdc/components/sdc-be/Chart.yaml
kubernetes/sdc/components/sdc-be/resources/config/catalog-be/configuration.yaml [new file with mode: 0644]
kubernetes/sdc/components/sdc-be/resources/config/catalog-be/distribution-engine-configuration.yaml [new file with mode: 0644]
kubernetes/sdc/components/sdc-be/resources/config/catalog-be/janusgraph.properties [new file with mode: 0644]
kubernetes/sdc/components/sdc-be/resources/config/logging/logback.xml
kubernetes/sdc/components/sdc-be/resources/config/ready-probe.sh [new file with mode: 0644]
kubernetes/sdc/components/sdc-be/resources/config/resource/key.properties [new file with mode: 0644]
kubernetes/sdc/components/sdc-be/resources/config/resource/portal.properties [new file with mode: 0644]
kubernetes/sdc/components/sdc-be/resources/config/start.d/http.ini [new file with mode: 0644]
kubernetes/sdc/components/sdc-be/resources/config/start.d/https.ini [new file with mode: 0644]
kubernetes/sdc/components/sdc-be/resources/config/start.d/ssl.ini [new file with mode: 0644]
kubernetes/sdc/components/sdc-be/templates/autoscaling.yaml [new file with mode: 0644]
kubernetes/sdc/components/sdc-be/templates/configmap.yaml
kubernetes/sdc/components/sdc-be/templates/deployment.yaml
kubernetes/sdc/components/sdc-be/templates/job.yaml
kubernetes/sdc/components/sdc-be/templates/servicemonitor.yaml [new file with mode: 0644]
kubernetes/sdc/components/sdc-be/values.yaml
kubernetes/sdc/components/sdc-cs/Chart.yaml
kubernetes/sdc/components/sdc-cs/resources/config/change_cassandra_pass.sh [new file with mode: 0644]
kubernetes/sdc/components/sdc-cs/resources/config/change_cassandra_user.sh [new file with mode: 0644]
kubernetes/sdc/components/sdc-cs/resources/config/configuration.yaml [new file with mode: 0644]
kubernetes/sdc/components/sdc-cs/resources/config/create-alter-dox-db.sh [new file with mode: 0644]
kubernetes/sdc/components/sdc-cs/resources/config/create_dox_keyspace.sh [new file with mode: 0644]
kubernetes/sdc/components/sdc-cs/resources/config/execution.sh [new file with mode: 0644]
kubernetes/sdc/components/sdc-cs/resources/config/importconformance.sh [new file with mode: 0644]
kubernetes/sdc/components/sdc-cs/resources/config/janusgraph.properties [new file with mode: 0644]
kubernetes/sdc/components/sdc-cs/templates/configmap.yaml [new file with mode: 0644]
kubernetes/sdc/components/sdc-cs/templates/job.yaml
kubernetes/sdc/components/sdc-cs/values.yaml
kubernetes/sdc/components/sdc-fe/Chart.yaml
kubernetes/sdc/components/sdc-fe/resources/config/catalogfe/configuration.yaml [new file with mode: 0644]
kubernetes/sdc/components/sdc-fe/resources/config/catalogfe/ecomp-error-configuration.yaml [new file with mode: 0644]
kubernetes/sdc/components/sdc-fe/resources/config/catalogfe/logback.xml [moved from kubernetes/sdc/components/sdc-fe/resources/config/logging/logback.xml with 97% similarity]
kubernetes/sdc/components/sdc-fe/resources/config/catalogfe/rest-configuration-info.yaml [new file with mode: 0644]
kubernetes/sdc/components/sdc-fe/resources/config/catalogfe/workspace-configuration.yaml [new file with mode: 0644]
kubernetes/sdc/components/sdc-fe/resources/config/feEtcConfig/rewrite-root-to-sdc1.xml [new file with mode: 0644]
kubernetes/sdc/components/sdc-fe/resources/config/onboardingfe/onboarding_configuration.yaml [new file with mode: 0644]
kubernetes/sdc/components/sdc-fe/resources/config/readyProbe/combined-liveness.sh [new file with mode: 0644]
kubernetes/sdc/components/sdc-fe/resources/config/readyProbe/ready-probe.sh [new file with mode: 0644]
kubernetes/sdc/components/sdc-fe/resources/config/startdConfig/http.ini [new file with mode: 0644]
kubernetes/sdc/components/sdc-fe/resources/config/startdConfig/https.ini [new file with mode: 0644]
kubernetes/sdc/components/sdc-fe/resources/config/startdConfig/ssl.ini [new file with mode: 0644]
kubernetes/sdc/components/sdc-fe/templates/autoscaling.yaml [new file with mode: 0644]
kubernetes/sdc/components/sdc-fe/templates/configmap.yaml
kubernetes/sdc/components/sdc-fe/templates/deployment.yaml
kubernetes/sdc/components/sdc-fe/values.yaml
kubernetes/sdc/components/sdc-helm-validator/Chart.yaml
kubernetes/sdc/components/sdc-helm-validator/templates/deployment.yaml
kubernetes/sdc/components/sdc-helm-validator/values.yaml
kubernetes/sdc/components/sdc-onboarding-be/Chart.yaml
kubernetes/sdc/components/sdc-onboarding-be/resources/config/logging/logback.xml
kubernetes/sdc/components/sdc-onboarding-be/resources/config/onboarding-config/config-helmvalidator.yaml [new file with mode: 0644]
kubernetes/sdc/components/sdc-onboarding-be/resources/config/onboarding-config/config-vnfrepo.yaml [new file with mode: 0644]
kubernetes/sdc/components/sdc-onboarding-be/resources/config/onboarding-config/externaltesting-configuration.yaml [new file with mode: 0644]
kubernetes/sdc/components/sdc-onboarding-be/resources/config/onboarding-config/features.properties [new file with mode: 0644]
kubernetes/sdc/components/sdc-onboarding-be/resources/config/onboarding-config/onboarding_configuration.yaml [new file with mode: 0644]
kubernetes/sdc/components/sdc-onboarding-be/resources/config/ready-probe.sh [new file with mode: 0644]
kubernetes/sdc/components/sdc-onboarding-be/resources/config/start.d/http.ini [new file with mode: 0644]
kubernetes/sdc/components/sdc-onboarding-be/resources/config/start.d/https.ini [new file with mode: 0644]
kubernetes/sdc/components/sdc-onboarding-be/resources/config/start.d/ssl.ini [new file with mode: 0644]
kubernetes/sdc/components/sdc-onboarding-be/templates/autoscaling.yaml [new file with mode: 0644]
kubernetes/sdc/components/sdc-onboarding-be/templates/configmap.yaml
kubernetes/sdc/components/sdc-onboarding-be/templates/deployment.yaml
kubernetes/sdc/components/sdc-onboarding-be/templates/job.yaml
kubernetes/sdc/components/sdc-onboarding-be/templates/servicemonitor.yaml [new file with mode: 0644]
kubernetes/sdc/components/sdc-onboarding-be/values.yaml
kubernetes/sdc/components/sdc-wfd-be/Chart.yaml
kubernetes/sdc/components/sdc-wfd-be/templates/autoscaling.yaml [new file with mode: 0644]
kubernetes/sdc/components/sdc-wfd-be/templates/deployment.yaml
kubernetes/sdc/components/sdc-wfd-be/templates/job.yaml
kubernetes/sdc/components/sdc-wfd-be/values.yaml
kubernetes/sdc/components/sdc-wfd-fe/Chart.yaml
kubernetes/sdc/components/sdc-wfd-fe/templates/autoscaling.yaml [new file with mode: 0644]
kubernetes/sdc/components/sdc-wfd-fe/templates/deployment.yaml
kubernetes/sdc/components/sdc-wfd-fe/values.yaml
kubernetes/sdc/values.yaml
kubernetes/sdnc/Chart.yaml
kubernetes/sdnc/components/dgbuilder/Chart.yaml
kubernetes/sdnc/components/dgbuilder/resources/config/customSettings.js
kubernetes/sdnc/components/dgbuilder/values.yaml
kubernetes/sdnc/components/network-name-gen/Chart.yaml
kubernetes/sdnc/components/sdnc-ansible-server/Chart.yaml
kubernetes/sdnc/components/sdnc-ansible-server/values.yaml
kubernetes/sdnc/components/sdnc-prom/resources/bin/switchVoting.sh
kubernetes/sdnc/components/sdnc-web/Chart.yaml
kubernetes/sdnc/components/sdnc-web/values.yaml
kubernetes/sdnc/components/ueb-listener/Chart.yaml
kubernetes/sdnc/components/ueb-listener/resources/config/ueb-listener.properties
kubernetes/sdnc/components/ueb-listener/values.yaml
kubernetes/sdnc/resources/config/conf/aaiclient.properties
kubernetes/sdnc/resources/config/conf/blueprints-processor-adaptor.properties
kubernetes/sdnc/resources/config/conf/generic-resource-api-dg.properties [new file with mode: 0644]
kubernetes/sdnc/resources/config/conf/lcm-dg.properties
kubernetes/sdnc/resources/geo/bin/switchVoting.sh
kubernetes/sdnc/templates/job.yaml
kubernetes/sdnc/templates/sdnrdb-init-job.yaml
kubernetes/sdnc/templates/statefulset.yaml
kubernetes/sdnc/values.yaml
kubernetes/so/Chart.yaml
kubernetes/so/components/so-admin-cockpit/Chart.yaml
kubernetes/so/components/so-admin-cockpit/resources/config/overrides/override.yaml
kubernetes/so/components/so-admin-cockpit/values.yaml
kubernetes/so/components/so-bpmn-infra/Chart.yaml
kubernetes/so/components/so-bpmn-infra/resources/config/overrides/override.yaml
kubernetes/so/components/so-bpmn-infra/templates/deployment.yaml
kubernetes/so/components/so-bpmn-infra/values.yaml
kubernetes/so/components/so-catalog-db-adapter/Chart.yaml
kubernetes/so/components/so-catalog-db-adapter/resources/config/overrides/override.yaml
kubernetes/so/components/so-catalog-db-adapter/templates/deployment.yaml
kubernetes/so/components/so-catalog-db-adapter/values.yaml
kubernetes/so/components/so-cnf-adapter/Chart.yaml
kubernetes/so/components/so-cnf-adapter/resources/config/overrides/override.yaml
kubernetes/so/components/so-cnf-adapter/templates/deployment.yaml
kubernetes/so/components/so-cnf-adapter/values.yaml
kubernetes/so/components/so-cnfm-lcm/resources/config/overrides/override.yaml
kubernetes/so/components/so-cnfm-lcm/templates/deployment.yaml
kubernetes/so/components/so-cnfm-lcm/values.yaml
kubernetes/so/components/so-etsi-nfvo-ns-lcm/resources/config/overrides/override.yaml
kubernetes/so/components/so-etsi-nfvo-ns-lcm/values.yaml
kubernetes/so/components/so-etsi-sol003-adapter/resources/config/overrides/override.yaml
kubernetes/so/components/so-etsi-sol003-adapter/values.yaml
kubernetes/so/components/so-etsi-sol005-adapter/resources/config/overrides/override.yaml
kubernetes/so/components/so-etsi-sol005-adapter/values.yaml
kubernetes/so/components/so-mariadb/Chart.yaml
kubernetes/so/components/so-mariadb/resources/config/docker-entrypoint-initdb.d/01-create-camundabpmn.sh
kubernetes/so/components/so-mariadb/resources/config/docker-entrypoint-initdb.d/02-create-requestdb.sh
kubernetes/so/components/so-mariadb/resources/config/docker-entrypoint-initdb.d/03-create-catalogdb.sh
kubernetes/so/components/so-mariadb/resources/config/docker-entrypoint-initdb.d/04-create-nfvo-db.sh
kubernetes/so/components/so-mariadb/resources/config/docker-entrypoint-initdb.d/05-create-cnfm-db.sh
kubernetes/so/components/so-mariadb/resources/config/docker-entrypoint-initdb.d/98-create-so-user.sh
kubernetes/so/components/so-mariadb/resources/config/docker-entrypoint-initdb.d/99-create-so-admin.sh
kubernetes/so/components/so-mariadb/templates/job.yaml
kubernetes/so/components/so-mariadb/values.yaml
kubernetes/so/components/so-nssmf-adapter/Chart.yaml
kubernetes/so/components/so-nssmf-adapter/resources/config/overrides/override.yaml
kubernetes/so/components/so-nssmf-adapter/values.yaml
kubernetes/so/components/so-oof-adapter/Chart.yaml
kubernetes/so/components/so-oof-adapter/resources/config/overrides/override.yaml
kubernetes/so/components/so-oof-adapter/values.yaml
kubernetes/so/components/so-openstack-adapter/Chart.yaml
kubernetes/so/components/so-openstack-adapter/resources/config/overrides/override.yaml
kubernetes/so/components/so-openstack-adapter/values.yaml
kubernetes/so/components/so-request-db-adapter/Chart.yaml
kubernetes/so/components/so-request-db-adapter/resources/config/overrides/override.yaml
kubernetes/so/components/so-request-db-adapter/templates/deployment.yaml
kubernetes/so/components/so-request-db-adapter/values.yaml
kubernetes/so/components/so-sdc-controller/Chart.yaml
kubernetes/so/components/so-sdc-controller/resources/config/overrides/override.yaml
kubernetes/so/components/so-sdc-controller/values.yaml
kubernetes/so/components/so-sdnc-adapter/Chart.yaml
kubernetes/so/components/so-sdnc-adapter/resources/config/overrides/override.yaml
kubernetes/so/components/so-sdnc-adapter/values.yaml
kubernetes/so/components/soHelpers/Chart.yaml
kubernetes/so/components/soHelpers/templates/_livenessProbe.tpl
kubernetes/so/components/soHelpers/templates/_startupProbe.tpl [new file with mode: 0644]
kubernetes/so/components/soHelpers/values.yaml
kubernetes/so/resources/config/mso/mso-docker.json
kubernetes/so/resources/config/overrides/override.yaml
kubernetes/so/values.yaml
kubernetes/strimzi/.helmignore
kubernetes/strimzi/Chart.yaml
kubernetes/strimzi/components/strimzi-kafka-bridge/.helmignore
kubernetes/strimzi/components/strimzi-kafka-bridge/Chart.yaml
kubernetes/strimzi/components/strimzi-kafka-bridge/templates/configmap.yaml
kubernetes/strimzi/components/strimzi-kafka-bridge/templates/strimzi-kb.yaml
kubernetes/strimzi/components/strimzi-kafka-bridge/values.yaml
kubernetes/strimzi/resources/metrics/cruisecontrol-metrics-config.yml
kubernetes/strimzi/resources/metrics/kafka-metrics-config.yml
kubernetes/strimzi/resources/metrics/zookeeper-metrics-config.yml
kubernetes/strimzi/templates/kafka-rebalance.yaml
kubernetes/strimzi/templates/pod-monitor.yaml
kubernetes/strimzi/templates/pv-controller.yaml [moved from kubernetes/strimzi/templates/pv-zk.yaml with 77% similarity]
kubernetes/strimzi/templates/pv-kafka.yaml
kubernetes/strimzi/templates/strimzi-kafka-admin-user.yaml
kubernetes/strimzi/templates/strimzi-kafka.yaml
kubernetes/strimzi/values.yaml
kubernetes/uui/Chart.yaml
kubernetes/uui/components/uui-intent-analysis/Chart.yaml
kubernetes/uui/components/uui-intent-analysis/resources/entrypoint/run.sh
kubernetes/uui/components/uui-intent-analysis/templates/deployment.yaml
kubernetes/uui/components/uui-intent-analysis/templates/job.yaml
kubernetes/uui/components/uui-intent-analysis/values.yaml
kubernetes/uui/components/uui-llm-adaptation/.helmignore [new file with mode: 0644]
kubernetes/uui/components/uui-llm-adaptation/Chart.yaml [new file with mode: 0644]
kubernetes/uui/components/uui-llm-adaptation/resources/config/llm-adaptation-init.sql [new file with mode: 0644]
kubernetes/uui/components/uui-llm-adaptation/resources/entrypoint/run.sh [new file with mode: 0644]
kubernetes/uui/components/uui-llm-adaptation/templates/configmap.yaml [new file with mode: 0644]
kubernetes/uui/components/uui-llm-adaptation/templates/deployment.yaml [new file with mode: 0644]
kubernetes/uui/components/uui-llm-adaptation/templates/job.yaml [new file with mode: 0644]
kubernetes/uui/components/uui-llm-adaptation/templates/secrets.yaml [new file with mode: 0644]
kubernetes/uui/components/uui-llm-adaptation/templates/service.yaml [new file with mode: 0644]
kubernetes/uui/components/uui-llm-adaptation/values.yaml [new file with mode: 0644]
kubernetes/uui/components/uui-nlp/templates/deployment.yaml
kubernetes/uui/components/uui-nlp/values.yaml
kubernetes/uui/components/uui-server/Chart.yaml
kubernetes/uui/components/uui-server/resources/config/application.properties
kubernetes/uui/components/uui-server/resources/entrypoint/run.sh
kubernetes/uui/components/uui-server/templates/deployment.yaml
kubernetes/uui/components/uui-server/templates/job.yaml
kubernetes/uui/components/uui-server/values.yaml
kubernetes/uui/templates/deployment.yaml
kubernetes/uui/values.yaml
kubernetes/vfc/components/Makefile [deleted file]
tox.ini

index bcbafe5..8fc05af 100644 (file)
@@ -1,18 +1,18 @@
 ---
 repos:
   - repo: https://github.com/pre-commit/pre-commit-hooks
-    rev: v4.0.1
+    rev: v5.0.0
     hooks:
       - id: trailing-whitespace
         #exclude: '^ordmodels/'
   - repo: https://github.com/jorisroovers/gitlint
-    rev: v0.18.0
+    rev: v0.19.1
     hooks:
       - id: gitlint
         stages: [commit-msg]
   - repo: https://github.com/Lucas-C/pre-commit-hooks
-    rev: v1.1.10
+    rev: v1.5.5
     hooks:
       - id: remove-tabs
-        stages: [commit]
+        stages: [pre-commit]
         exclude: '^(.git/|docs/make.bat|.*/Makefile$)'
index f9244ec..47f6da4 100644 (file)
--- a/INFO.yaml
+++ b/INFO.yaml
@@ -31,6 +31,11 @@ repositories:
     - 'oom'
 committers:
     - <<: *onap_releng_ptl
+    - name: 'Fiete Ostkamp'
+      email: 'fiete.ostkamp@telekom.de'
+      id: 'fostkamp'
+      company: 'Deutsche Telekom'
+      timezone: 'Europe/Berlin'
     - name: 'Mike Elliott'
       email: 'mike.elliott@amdocs.com'
       id: 'melliott'
@@ -89,3 +94,7 @@ tsc:
           name: 'Andreas Geissler'
           # yamllint disable-line rule:line-length
           link: 'https://wiki.onap.org/display/DW/Committer+Promotion+Request+for+%5BOOM%5D+%3A+Andreas+Geissler'
+        - type: 'Addition'
+          name: 'Fiete Ostkamp'
+          # yamllint disable-line rule:line-length
+          link: 'https://lists.onap.org/g/onap-tsc/message/9600'
@@ -41,5 +41,5 @@ dependencies:
     version: ~13.x-0
     repository: '@local'
   - name: mongodb
-    version: 14.12.2
+    version: ~14.12.x-0
     repository: '@local'
\ No newline at end of file
@@ -23,7 +23,11 @@ spec:
   template:
     metadata: {{- include "common.templateMetadata" . | nindent 6 }}
     spec:
-      {{ include "common.podSecurityContext" . | indent 6 | trim}}
+      # temporarily use less restrictions
+      securityContext:
+        runAsUser: {{ .Values.securityContext.user_id }}
+        runAsGroup: {{ .Values.securityContext.group_id }}
+        fsGroup: {{ .Values.securityContext.group_id }}
       initContainers: {{ include "common.readinessCheck.waitFor" . | nindent 8 }}
         - name: {{ include "common.name" . }}-permission-fixer
           securityContext:
similarity index 100%
rename from kubernetes/msb/Makefile
rename to archive/msb/Makefile
similarity index 98%
rename from kubernetes/nbi/Chart.yaml
rename to archive/nbi/Chart.yaml
index 25f307c..3ffd2a1 100644 (file)
@@ -27,7 +27,7 @@ dependencies:
     # be published independently to a repo (at this point)
     repository: '@local'
   - name: mongodb
-    version: 14.12.2
+    version: ~14.12.x-0
     repository: '@local'
   - name: mariadb-galera
     version: ~13.x-0
similarity index 100%
rename from kubernetes/oof/Makefile
rename to archive/oof/Makefile
@@ -29,7 +29,7 @@ subChartsOnly:
 flavor: small
 
 # application image
-image: onap/policy-gui:3.1.0
+image: onap/policy-gui:3.1.3
 pullPolicy: Always
 
 # flag to enable debugging - application support required
@@ -16,7 +16,7 @@
 apiVersion: v2
 description: SDNC DMaaP Listener
 name: dmaap-listener
-version: 13.0.0
+version: 14.0.0
 
 dependencies:
   - name: common
@@ -51,7 +51,7 @@ secrets:
 # Application configuration defaults.
 #################################################################
 # application image
-image: onap/sdnc-dmaap-listener-image:2.5.5
+image: onap/sdnc-dmaap-listener-image:2.6.1
 pullPolicy: Always
 
 # flag to enable debugging - application support required
similarity index 100%
rename from kubernetes/vfc/Makefile
rename to archive/vfc/Makefile
diff --git a/docs/_static/logo_onap_2024.png b/docs/_static/logo_onap_2024.png
new file mode 100644 (file)
index 0000000..55d307f
Binary files /dev/null and b/docs/_static/logo_onap_2024.png differ
index f6513bd..5928637 100644 (file)
@@ -994,156 +994,3 @@ persistent volume should be used to store all data that needs to be persisted
 over the re-creation of a container.  Persistent volumes have been created for
 the database components of each of the projects and the same technique can be
 used for all persistent state information.
-
-
-
-Environment Files
-~~~~~~~~~~~~~~~~~
-
-MSB Integration
-===============
-
-The \ `Microservices Bus
-Project <https://wiki.onap.org/pages/viewpage.action?pageId=3246982>`__ provides
-facilities to integrate micro-services into ONAP and therefore needs to
-integrate into OOM - primarily through Consul which is the backend of
-MSB service discovery. The following is a brief description of how this
-integration will be done:
-
-A registrator to push the service endpoint info to MSB service
-discovery.
-
--  The needed service endpoint info is put into the kubernetes yaml file
-   as annotation, including service name, Protocol,version, visual
-   range,LB method, IP, Port,etc.
-
--  OOM deploy/start/restart/scale in/scale out/upgrade ONAP components
-
--  Registrator watch the kubernetes event
-
--  When an ONAP component instance has been started/destroyed by OOM,
-   Registrator get the notification from kubernetes
-
--  Registrator parse the service endpoint info from annotation and
-   register/update/unregister it to MSB service discovery
-
--  MSB API Gateway uses the service endpoint info for service routing
-   and load balancing.
-
-Details of the registration service API can be found at \ `Microservice
-Bus API
-Documentation <https://wiki.onap.org/display/DW/Microservice+Bus+API+Documentation>`__.
-
-ONAP Component Registration to MSB
-----------------------------------
-The charts of all ONAP components intending to register against MSB must have
-an annotation in their service(s) template.  A `sdc` example follows:
-
-.. code-block:: yaml
-
-  apiVersion: v1
-  kind: Service
-  metadata:
-    labels:
-      app: sdc-be
-    name: sdc-be
-    namespace: "{{ .Values.nsPrefix }}"
-    annotations:
-      msb.onap.org/service-info: '[
-        {
-            "serviceName": "sdc",
-            "version": "v1",
-            "url": "/sdc/v1",
-            "protocol": "REST",
-            "port": "8080",
-            "visualRange":"1"
-        },
-        {
-            "serviceName": "sdc-deprecated",
-            "version": "v1",
-            "url": "/sdc/v1",
-            "protocol": "REST",
-            "port": "8080",
-            "visualRange":"1",
-            "path":"/sdc/v1"
-        }
-        ]'
-  ...
-
-
-MSB Integration with OOM
-------------------------
-A preliminary view of the OOM-MSB integration is as follows:
-
-.. figure:: ../../resources/images/msb/MSB-OOM-Diagram.png
-
-A message sequence chart of the registration process:
-
-.. uml::
-
-  participant "OOM" as oom
-  participant "ONAP Component" as onap
-  participant "Service Discovery" as sd
-  participant "External API Gateway" as eagw
-  participant "Router (Internal API Gateway)" as iagw
-
-  box "MSB" #LightBlue
-    participant sd
-    participant eagw
-    participant iagw
-  end box
-
-  == Deploy Servcie ==
-
-  oom -> onap: Deploy
-  oom -> sd:   Register service endpoints
-  sd -> eagw:  Services exposed to external system
-  sd -> iagw:  Services for internal use
-
-  == Component Life-cycle Management ==
-
-  oom -> onap: Start/Stop/Scale/Migrate/Upgrade
-  oom -> sd:   Update service info
-  sd -> eagw:  Update service info
-  sd -> iagw:  Update service info
-
-  == Service Health Check ==
-
-  sd -> onap: Check the health of service
-  sd -> eagw: Update service status
-  sd -> iagw: Update service status
-
-
-MSB Deployment Instructions
----------------------------
-MSB is helm installable ONAP component which is often automatically deployed.
-To install it individually enter::
-
-  > helm install <repo-name>/msb
-
-.. note::
-  TBD: Vaidate if the following procedure is still required.
-
-Please note that Kubernetes authentication token must be set at
-*kubernetes/kube2msb/values.yaml* so the kube2msb registrator can get the
-access to watch the kubernetes events and get service annotation by
-Kubernetes APIs. The token can be found in the kubectl configuration file
-*~/.kube/config*
-
-More details can be found here `MSB installation <https://docs.onap.org/projects/onap-msb-apigateway/en/latest/platform/installation.html>`_.
-
-.. MISC
-.. ====
-.. Note that although OOM uses Kubernetes facilities to minimize the effort
-.. required of the ONAP component owners to implement a successful rolling
-.. upgrade strategy there are other considerations that must be taken into
-.. consideration.
-.. For example, external APIs - both internal and external to ONAP - should be
-.. designed to gracefully accept transactions from a peer at a different
-.. software version to avoid deadlock situations. Embedded version codes in
-.. messages may facilitate such capabilities.
-..
-.. Within each of the projects a new configuration repository contains all of
-.. the project specific configuration artifacts.  As changes are made within
-.. the project, it's the responsibility of the project team to make appropriate
-.. changes to the configuration data.
index 4727a3e..99c7a5e 100644 (file)
@@ -282,4 +282,4 @@ for use::
   > helm undeploy dev
 
 More examples of using the deploy and undeploy plugins can be found here:
-https://wiki.onap.org/display/DW/OOM+Helm+%28un%29Deploy+plugins
+https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16315791/OOM+Helm+un+Deploy+plugins
diff --git a/docs/archived/oom_setup_kubernetes_rancher.rst b/docs/archived/oom_setup_kubernetes_rancher.rst
deleted file mode 100644 (file)
index 767b939..0000000
+++ /dev/null
@@ -1,531 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0
-.. International License.
-.. http://creativecommons.org/licenses/by/4.0
-.. Copyright 2018-2020 Amdocs, Bell Canada, Orange, Samsung
-
-.. Links
-.. _HELM Best Practices Guide: https://docs.helm.sh/chart_best_practices/#requirements
-.. _kubectl Cheat Sheet: https://kubernetes.io/docs/reference/kubectl/cheatsheet/
-.. _Kubernetes documentation for emptyDir: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir
-.. _Docker DevOps: https://wiki.onap.org/display/DW/Docker+DevOps#DockerDevOps-DockerBuild
-.. _http://cd.onap.info:30223/mso/logging/debug: http://cd.onap.info:30223/mso/logging/debug
-.. _Onboarding and Distributing a Vendor Software Product: https://wiki.onap.org/pages/viewpage.action?pageId=1018474
-.. _README.md: https://gerrit.onap.org/r/gitweb?p=oom.git;a=blob;f=kubernetes/README.md
-
-.. figure:: images/oom_logo/oomLogoV2-medium.png
-   :align: right
-
-.. _onap-on-kubernetes-with-rancher:
-
-ONAP on HA Kubernetes Cluster
-#############################
-
-This guide provides instructions on how to setup a Highly-Available Kubernetes
-Cluster. For this, we are hosting our cluster on OpenStack VMs and using the
-Rancher Kubernetes Engine (RKE) to deploy and manage our Kubernetes Cluster.
-
-.. contents::
-   :depth: 1
-   :local:
-..
-
-The result at the end of this tutorial will be:
-
-#. Creation of a Key Pair to use with Open Stack and RKE
-
-#. Creation of OpenStack VMs to host Kubernetes Control Plane
-
-#. Creation of OpenStack VMs to host Kubernetes Workers
-
-#. Installation and configuration of RKE to setup an HA Kubernetes
-
-#. Installation and configuration of kubectl
-
-#. Installation and configuration of Helm
-
-#. Creation of an NFS Server to be used by ONAP as shared persistance
-
-There are many ways one can execute the above steps. Including automation
-through the use of HEAT to setup the OpenStack VMs. To better illustrate the
-steps involved, we have captured the manual creation of such an environment
-using the ONAP Wind River Open Lab.
-
-Create Key Pair
-===============
-A Key Pair is required to access the created OpenStack VMs and will be used by
-RKE to configure the VMs for Kubernetes.
-
-Use an existing key pair, import one or create a new one to assign.
-
-.. image:: images/keys/key_pair_1.png
-
-.. Note::
-  If you're creating a new Key Pair, ensure to create a local copy of the
-  Private Key through the use of "Copy Private Key to Clipboard".
-
-For the purpose of this guide, we will assume a new local key called "onap-key"
-has been downloaded and is copied into **~/.ssh/**, from which it can be
-referenced.
-
-Example::
-
-  > mv onap-key ~/.ssh
-
-  > chmod 600 ~/.ssh/onap-key
-
-
-Create Network
-==============
-
-An internal network is required in order to deploy our VMs that will host
-Kubernetes.
-
-.. image:: images/network/network_1.png
-
-.. image:: images/network/network_2.png
-
-.. image:: images/network/network_3.png
-
-.. Note::
-  It's better to have one network per deployment and obviously the name of this
-  network should be unique.
-
-Now we need to create a router to attach this network to outside:
-
-.. image:: images/network/network_4.png
-
-Create Security Group
-=====================
-
-A specific security group is also required
-
-.. image:: images/sg/sg_1.png
-
-then click on `manage rules` of the newly created security group.
-And finally click on `Add Rule` and create the following one:
-
-.. image:: images/sg/sg_2.png
-
-.. Note::
-  the security is clearly not good here and the right SG will be proposed in a
-  future version
-
-Create Kubernetes Control Plane VMs
-===================================
-
-The following instructions describe how to create 3 OpenStack VMs to host the
-Highly-Available Kubernetes Control Plane.
-ONAP workloads will not be scheduled on these Control Plane nodes.
-
-Launch new VM instances
------------------------
-
-.. image:: images/cp_vms/control_plane_1.png
-
-Select Ubuntu 18.04 as base image
----------------------------------
-Select "No" for "Create New Volume"
-
-.. image:: images/cp_vms/control_plane_2.png
-
-Select Flavor
--------------
-The recommended flavor is at least 4 vCPU and 8GB ram.
-
-.. image:: images/cp_vms/control_plane_3.png
-
-Networking
-----------
-
-Use the created network:
-
-.. image:: images/cp_vms/control_plane_4.png
-
-Security Groups
----------------
-
-Use the created security group:
-
-.. image:: images/cp_vms/control_plane_5.png
-
-Key Pair
---------
-Assign the key pair that was created/selected previously (e.g. onap_key).
-
-.. image:: images/cp_vms/control_plane_6.png
-
-Apply customization script for Control Plane VMs
-------------------------------------------------
-
-Click :download:`openstack-k8s-controlnode.sh <shell/openstack-k8s-controlnode.sh>`
-to download the script.
-
-.. literalinclude:: shell/openstack-k8s-controlnode.sh
-   :language: bash
-
-This customization script will:
-
-* update ubuntu
-* install docker
-
-.. image:: images/cp_vms/control_plane_7.png
-
-Launch Instance
----------------
-
-.. image:: images/cp_vms/control_plane_8.png
-
-
-
-Create Kubernetes Worker VMs
-============================
-The following instructions describe how to create OpenStack VMs to host the
-Highly-Available Kubernetes Workers. ONAP workloads will only be scheduled on
-these nodes.
-
-Launch new VM instances
------------------------
-
-The number and size of Worker VMs is dependent on the size of the ONAP
-deployment. By default, all ONAP applications are deployed. It's possible to
-customize the deployment and enable a subset of the ONAP applications. For the
-purpose of this guide, however, we will deploy 12 Kubernetes Workers that have
-been sized to handle the entire ONAP application workload.
-
-.. image:: images/wk_vms/worker_1.png
-
-Select Ubuntu 18.04 as base image
----------------------------------
-Select "No" on "Create New Volume"
-
-.. image:: images/wk_vms/worker_2.png
-
-Select Flavor
--------------
-The size of Kubernetes hosts depend on the size of the ONAP deployment
-being installed.
-
-If a small subset of ONAP applications are being deployed
-(i.e. for testing purposes), then 16GB or 32GB may be sufficient.
-
-.. image:: images/wk_vms/worker_3.png
-
-Networking
------------
-
-.. image:: images/wk_vms/worker_4.png
-
-Security Group
----------------
-
-.. image:: images/wk_vms/worker_5.png
-
-Key Pair
---------
-Assign the key pair that was created/selected previously (e.g. onap_key).
-
-.. image:: images/wk_vms/worker_6.png
-
-Apply customization script for Kubernetes VM(s)
------------------------------------------------
-
-Click :download:`openstack-k8s-workernode.sh <shell/openstack-k8s-workernode.sh>` to
-download the script.
-
-.. literalinclude:: shell/openstack-k8s-workernode.sh
-   :language: bash
-
-This customization script will:
-
-* update ubuntu
-* install docker
-* install nfs common
-
-
-Launch Instance
----------------
-
-.. image:: images/wk_vms/worker_7.png
-
-
-
-
-Assign Floating IP addresses
-----------------------------
-Assign Floating IPs to all Control Plane and Worker VMs.
-These addresses provide external access to the VMs and will be used by RKE
-to configure kubernetes on to the VMs.
-
-Repeat the following for each VM previously created:
-
-.. image:: images/floating_ips/floating_1.png
-
-Resulting floating IP assignments in this example.
-
-.. image:: images/floating_ips/floating_2.png
-
-
-
-
-Configure Rancher Kubernetes Engine (RKE)
-=========================================
-
-Install RKE
------------
-Download and install RKE on a VM, desktop or laptop.
-Binaries can be found here for Linux and Mac: https://github.com/rancher/rke/releases/tag/v1.0.6
-
-.. note::
-  There are several ways to install RKE. Further parts of this documentation
-  assumes that you have rke command available.
-  If you don't know how to install RKE you may follow the below steps:
-
-  * chmod +x ./rke_linux-amd64
-  * sudo mv ./rke_linux-amd64 /user/local/bin/rke
-
-RKE requires a *cluster.yml* as input. An example file is show below that
-describes a Kubernetes cluster that will be mapped onto the OpenStack VMs
-created earlier in this guide.
-
-Click :download:`cluster.yml <yaml/cluster.yml>` to download the
-configuration file.
-
-.. literalinclude:: yaml/cluster.yml
-   :language: yaml
-
-Prepare cluster.yml
--------------------
-Before this configuration file can be used the external **address**
-and the **internal_address** must be mapped for each control and worker node
-in this file.
-
-Run RKE
--------
-From within the same directory as the cluster.yml file, simply execute::
-
-  > rke up
-
-The output will look something like::
-
-  INFO[0000] Initiating Kubernetes cluster
-  INFO[0000] [certificates] Generating admin certificates and kubeconfig
-  INFO[0000] Successfully Deployed state file at [./cluster.rkestate]
-  INFO[0000] Building Kubernetes cluster
-  INFO[0000] [dialer] Setup tunnel for host [10.12.6.82]
-  INFO[0000] [dialer] Setup tunnel for host [10.12.6.249]
-  INFO[0000] [dialer] Setup tunnel for host [10.12.6.74]
-  INFO[0000] [dialer] Setup tunnel for host [10.12.6.85]
-  INFO[0000] [dialer] Setup tunnel for host [10.12.6.238]
-  INFO[0000] [dialer] Setup tunnel for host [10.12.6.89]
-  INFO[0000] [dialer] Setup tunnel for host [10.12.5.11]
-  INFO[0000] [dialer] Setup tunnel for host [10.12.6.90]
-  INFO[0000] [dialer] Setup tunnel for host [10.12.6.244]
-  INFO[0000] [dialer] Setup tunnel for host [10.12.5.165]
-  INFO[0000] [dialer] Setup tunnel for host [10.12.6.126]
-  INFO[0000] [dialer] Setup tunnel for host [10.12.6.111]
-  INFO[0000] [dialer] Setup tunnel for host [10.12.5.160]
-  INFO[0000] [dialer] Setup tunnel for host [10.12.5.191]
-  INFO[0000] [dialer] Setup tunnel for host [10.12.6.195]
-  INFO[0002] [network] Deploying port listener containers
-  INFO[0002] [network] Pulling image [nexus3.onap.org:10001/rancher/rke-tools:v0.1.27] on host [10.12.6.85]
-  INFO[0002] [network] Pulling image [nexus3.onap.org:10001/rancher/rke-tools:v0.1.27] on host [10.12.6.89]
-  INFO[0002] [network] Pulling image [nexus3.onap.org:10001/rancher/rke-tools:v0.1.27] on host [10.12.6.90]
-  INFO[0011] [network] Successfully pulled image [nexus3.onap.org:10001/rancher/rke-tools:v0.1.27] on host [10.12.6.89]
-  . . . .
-  INFO[0309] [addons] Setting up Metrics Server
-  INFO[0309] [addons] Saving ConfigMap for addon rke-metrics-addon to Kubernetes
-  INFO[0309] [addons] Successfully saved ConfigMap for addon rke-metrics-addon to Kubernetes
-  INFO[0309] [addons] Executing deploy job rke-metrics-addon
-  INFO[0315] [addons] Metrics Server deployed successfully
-  INFO[0315] [ingress] Setting up nginx ingress controller
-  INFO[0315] [addons] Saving ConfigMap for addon rke-ingress-controller to Kubernetes
-  INFO[0316] [addons] Successfully saved ConfigMap for addon rke-ingress-controller to Kubernetes
-  INFO[0316] [addons] Executing deploy job rke-ingress-controller
-  INFO[0322] [ingress] ingress controller nginx deployed successfully
-  INFO[0322] [addons] Setting up user addons
-  INFO[0322] [addons] no user addons defined
-  INFO[0322] Finished building Kubernetes cluster successfully
-
-Install Kubectl
-===============
-
-Download and install kubectl. Binaries can be found here for Linux and Mac:
-
-https://storage.googleapis.com/kubernetes-release/release/v1.15.11/bin/linux/amd64/kubectl
-https://storage.googleapis.com/kubernetes-release/release/v1.15.11/bin/darwin/amd64/kubectl
-
-You only need to install kubectl where you'll launch Kubernetes command. This
-can be any machines of the Kubernetes cluster or a machine that has IP access
-to the APIs.
-Usually, we use the first controller as it has also access to internal
-Kubernetes services, which can be convenient.
-
-Validate deployment
--------------------
-
-::
-
-  > mkdir -p ~/.kube
-
-  > cp kube_config_cluster.yml ~/.kube/config.onap
-
-  > export KUBECONFIG=~/.kube/config.onap
-
-  > kubectl config use-context onap
-
-  > kubectl get nodes -o=wide
-
-::
-
-  NAME             STATUS   ROLES               AGE     VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE           KERNEL-VERSION      CONTAINER-RUNTIME
-  onap-control-1   Ready    controlplane,etcd   3h53m   v1.15.2   10.0.0.8      <none>        Ubuntu 18.04 LTS   4.15.0-22-generic   docker://18.9.5
-  onap-control-2   Ready    controlplane,etcd   3h53m   v1.15.2   10.0.0.11     <none>        Ubuntu 18.04 LTS   4.15.0-22-generic   docker://18.9.5
-  onap-control-3   Ready    controlplane,etcd   3h53m   v1.15.2   10.0.0.12     <none>        Ubuntu 18.04 LTS   4.15.0-22-generic   docker://18.9.5
-  onap-k8s-1       Ready    worker              3h53m   v1.15.2   10.0.0.14     <none>        Ubuntu 18.04 LTS   4.15.0-22-generic   docker://18.9.5
-  onap-k8s-10      Ready    worker              3h53m   v1.15.2   10.0.0.16     <none>        Ubuntu 18.04 LTS   4.15.0-22-generic   docker://18.9.5
-  onap-k8s-11      Ready    worker              3h53m   v1.15.2   10.0.0.18     <none>        Ubuntu 18.04 LTS   4.15.0-22-generic   docker://18.9.5
-  onap-k8s-12      Ready    worker              3h53m   v1.15.2   10.0.0.7      <none>        Ubuntu 18.04 LTS   4.15.0-22-generic   docker://18.9.5
-  onap-k8s-2       Ready    worker              3h53m   v1.15.2   10.0.0.26     <none>        Ubuntu 18.04 LTS   4.15.0-22-generic   docker://18.9.5
-  onap-k8s-3       Ready    worker              3h53m   v1.15.2   10.0.0.5      <none>        Ubuntu 18.04 LTS   4.15.0-22-generic   docker://18.9.5
-  onap-k8s-4       Ready    worker              3h53m   v1.15.2   10.0.0.6      <none>        Ubuntu 18.04 LTS   4.15.0-22-generic   docker://18.9.5
-  onap-k8s-5       Ready    worker              3h53m   v1.15.2   10.0.0.9      <none>        Ubuntu 18.04 LTS   4.15.0-22-generic   docker://18.9.5
-  onap-k8s-6       Ready    worker              3h53m   v1.15.2   10.0.0.17     <none>        Ubuntu 18.04 LTS   4.15.0-22-generic   docker://18.9.5
-  onap-k8s-7       Ready    worker              3h53m   v1.15.2   10.0.0.20     <none>        Ubuntu 18.04 LTS   4.15.0-22-generic   docker://18.9.5
-  onap-k8s-8       Ready    worker              3h53m   v1.15.2   10.0.0.10     <none>        Ubuntu 18.04 LTS   4.15.0-22-generic   docker://18.9.5
-  onap-k8s-9       Ready    worker              3h53m   v1.15.2   10.0.0.4      <none>        Ubuntu 18.04 LTS   4.15.0-22-generic   docker://18.9.5
-
-
-Install Helm
-============
-
-Example Helm client install on Linux::
-
-  > wget https://get.helm.sh/helm-v2.16.6-linux-amd64.tar.gz
-
-  > tar -zxvf helm-v2.16.6-linux-amd64.tar.gz
-
-  > sudo mv linux-amd64/helm /usr/local/bin/helm
-
-Initialize Kubernetes Cluster for use by Helm
----------------------------------------------
-
-::
-
-  > kubectl -n kube-system create serviceaccount tiller
-
-  > kubectl create clusterrolebinding tiller --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
-
-  > helm init --service-account tiller
-
-  > kubectl -n kube-system  rollout status deploy/tiller-deploy
-
-
-
-Setting up an NFS share for Multinode Kubernetes Clusters
-=========================================================
-Deploying applications to a Kubernetes cluster requires Kubernetes nodes to
-share a common, distributed filesystem. In this tutorial, we will setup an
-NFS Master, and configure all Worker nodes a Kubernetes cluster to play
-the role of NFS slaves.
-
-It is recommended that a separate VM, outside of the kubernetes
-cluster, be used. This is to ensure that the NFS Master does not compete for
-resources with Kubernetes Control Plane or Worker Nodes.
-
-
-Launch new NFS Server VM instance
----------------------------------
-.. image:: images/nfs_server/nfs_server_1.png
-
-Select Ubuntu 18.04 as base image
----------------------------------
-Select "No" on "Create New Volume"
-
-.. image:: images/nfs_server/nfs_server_2.png
-
-Select Flavor
--------------
-
-.. image:: images/nfs_server/nfs_server_3.png
-
-Networking
------------
-
-.. image:: images/nfs_server/nfs_server_4.png
-
-Security Group
----------------
-
-.. image:: images/nfs_server/nfs_server_5.png
-
-Key Pair
---------
-Assign the key pair that was created/selected previously (e.g. onap_key).
-
-.. image:: images/nfs_server/nfs_server_6.png
-
-Apply customization script for NFS Server VM
---------------------------------------------
-
-Click :download:`openstack-nfs-server.sh <shell/openstack-nfs-server.sh>` to download
-the script.
-
-.. literalinclude:: shell/openstack-nfs-server.sh
-   :language: bash
-
-This customization script will:
-
-* update ubuntu
-* install nfs server
-
-
-Launch Instance
----------------
-
-.. image:: images/nfs_server/nfs_server_7.png
-
-
-
-Assign Floating IP addresses
-----------------------------
-
-.. image:: images/nfs_server/nfs_server_8.png
-
-Resulting floating IP assignments in this example.
-
-.. image:: images/nfs_server/nfs_server_9.png
-
-
-To properly set up an NFS share on Master and Slave nodes, the user can run the
-scripts below.
-
-Click :download:`master_nfs_node.sh <shell/master_nfs_node.sh>` to download the
-script.
-
-.. literalinclude:: shell/master_nfs_node.sh
-   :language: bash
-
-Click :download:`slave_nfs_node.sh <shell/slave_nfs_node.sh>` to download the script.
-
-.. literalinclude:: shell/slave_nfs_node.sh
-   :language: bash
-
-The master_nfs_node.sh script runs in the NFS Master node and needs the list of
-NFS Slave nodes as input, e.g.::
-
-    > sudo ./master_nfs_node.sh node1_ip node2_ip ... nodeN_ip
-
-The slave_nfs_node.sh script runs in each NFS Slave node and needs the IP of
-the NFS Master node as input, e.g.::
-
-    > sudo ./slave_nfs_node.sh master_node_ip
-
-
-ONAP Deployment via OOM
-=======================
-Now that Kubernetes and Helm are installed and configured you can prepare to
-deploy ONAP. Follow the instructions in the README.md_ or look at the official
-documentation to get started:
-
-- :ref:`quick-start-label` - deploy ONAP on an existing cloud
-- :ref:`user-guide-label` - a guide for operators of an ONAP instance
index 2ff74b5..b4d1891 100644 (file)
@@ -55,8 +55,8 @@ ONAP with a few simple commands.
 
 Pre-requisites
 --------------
-Your environment must have the Kubernetes `kubectl` with Strimzi Apache Kafka, Cert-Manager
-and Helm setup as a one time activity.
+Your environment must have the Kubernetes `kubectl` with Strimzi Apache Kafka,
+Cert-Manager and Helm setup as a one time activity.
 
 Install Kubectl
 ~~~~~~~~~~~~~~~
@@ -275,7 +275,7 @@ precedence of all.
 The top level onap/values.yaml file contains the values required to be set
 before deploying ONAP.  Here is the contents of this file:
 
-.. include:: ../kubernetes/onap/values.yaml
+.. include:: ../../kubernetes/onap/values.yaml
    :code: yaml
 
 One may wish to create a value file that is specific to a given deployment such
diff --git a/docs/archived/yaml/environments_onap_demo.yaml b/docs/archived/yaml/environments_onap_demo.yaml
new file mode 100644 (file)
index 0000000..1298fa5
--- /dev/null
@@ -0,0 +1,87 @@
+#################################################################
+# Global configuration overrides.
+#
+# These overrides will affect all helm charts (ie. applications)
+# that are listed below and are 'enabled'.
+#################################################################
+global:
+  # Change to an unused port prefix range to prevent port conflicts
+  # with other instances running within the same k8s cluster
+  nodePortPrefix: 302
+
+  # image repositories
+  repository: nexus3.onap.org:10001
+  repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ==
+  # readiness check
+  readinessImage: onap/oom/readiness:6.1.1
+  # logging agent
+  loggingRepository: docker.elastic.co
+
+  # image pull policy
+  pullPolicy: IfNotPresent
+
+  # override default mount path root directory
+  # referenced by persistent volumes and log files
+  persistence:
+    mountPath: /dockerdata
+
+  # flag to enable debugging - application support required
+  debugEnabled: true
+
+#################################################################
+# Enable/disable and configure helm charts (ie. applications)
+# to customize the ONAP deployment.
+#################################################################
+aai:
+  enabled: false
+cli:
+  enabled: false
+cps:
+  enabled: false
+dcaegen2:
+  enabled: false
+message-router:
+  enabled: false
+msb:
+  enabled: false
+multicloud:
+  enabled: false
+policy:
+  enabled: false
+robot: # Robot Health Check
+  enabled: true
+sdc:
+  enabled: false
+sdnc:
+  enabled: false
+so: # Service Orchestrator
+  enabled: true
+
+  replicaCount: 1
+
+  liveness:
+    # necessary to disable liveness probe when setting breakpoints
+    # in debugger so K8s doesn't restart unresponsive container
+    enabled: true
+
+  # so server configuration
+  config:
+    # message router configuration
+    dmaapTopic: "AUTO"
+    # openstack configuration
+    openStackUserName: "vnf_user"
+    openStackRegion: "RegionOne"
+    openStackKeyStoneUrl: "http://1.2.3.4:5000"
+    openStackServiceTenantName: "service"
+    openStackEncryptedPasswordHere: "c124921a3a0efbe579782cde8227681e"
+
+  # configure embedded mariadb
+  mariadb:
+    config:
+      mariadbRootPassword: password
+uui:
+  enabled: false
+vfc:
+  enabled: false
+vnfsdk:
+  enabled: false
index 16ad9a9..3a63e0f 100644 (file)
@@ -11,7 +11,7 @@ html_theme = "sphinx_rtd_theme"
 html_theme_options = {
   "style_nav_header_background": "white",
   "sticky_navigation": "False" }
-html_logo = "_static/logo_onap_2017.png"
+html_logo = "_static/logo_onap_2024.png"
 html_favicon = "_static/favicon.ico"
 html_static_path = ["_static"]
 html_show_sphinx = False
index be92e5d..ba04a8d 100644 (file)
@@ -6,4 +6,4 @@ sphinxcontrib-swaggerdoc
 sphinxcontrib-spelling
 sphinxcontrib-plantuml
 sphinx_toolbox>=3.2.0
-six
\ No newline at end of file
+six
index ebc2f65..44491cc 100644 (file)
@@ -30,14 +30,15 @@ In the ServiceMesh deployment the Istio IngressGateway is the only access point
 for ONAP component interfaces.
 Usually the Ingress is accessed via a LoadBalancer IP (<ingress-IP>),
 which is used as central address.
-All APIs/UIs are provided via separate URLs which are routed to the component service.
+All APIs/UIs are provided via separate URLs which are routed to the component
+service.
 To use these URLs they need to be resolvable via DNS or via /etc/hosts.
 
-The domain name is usually defined in the `global` section of the ONAP helm-charts,
-`virtualhost.baseurl` (here "simpledemo.onap.org") whereas the hostname of
-the service (e.g. "sdc-fe-ui") is defined in the component's chart.
+The domain name is usually defined in the `global` section of the ONAP
+helm-charts, `virtualhost.baseurl` (here "simpledemo.onap.org") whereas the
+hostname of the service (e.g. "sdc-fe-ui") is defined in the component's chart.
 
-.. code-block:: none
+.. code-block:: bash
 
   <ingress-IP> kiali.simpledemo.onap.org
   <ingress-IP> cds-ui.simpledemo.onap.org
@@ -54,9 +55,9 @@ Access via NodePort/Loadbalancer (development)
 In the development setop OOM operates in a private IP network that isn't
 publicly accessible (i.e. OpenStack VMs with private internal network) which
 blocks access to the ONAP User Interfaces.
-To enable direct access to a service from a user's own environment (a laptop etc.)
-the application's internal port is exposed through a `Kubernetes NodePort`_ or
-`Kubernetes LoadBalancer`_ object.
+To enable direct access to a service from a user's own environment (a laptop
+etc.) the application's internal port is exposed through a
+`Kubernetes NodePort`_ or `Kubernetes LoadBalancer`_ object.
 
 Typically, to be able to access the Kubernetes nodes publicly a public address
 is assigned. In OpenStack this is a floating IP address.
@@ -64,24 +65,24 @@ is assigned. In OpenStack this is a floating IP address.
 Most ONAP applications use the `NodePort` as predefined `service:type`,
 which opens allows access to the service through the the IP address of each
 Kubernetes node.
-When using  the `Loadbalancer` as `service:type` `Kubernetes LoadBalancer`_ object
-which gets a separate IP address.
+When using  the `Loadbalancer` as `service:type` `Kubernetes LoadBalancer`_
+object which gets a separate IP address.
 
 When e.g. the `sdc-fe` chart is deployed a Kubernetes service is created that
 instantiates a load balancer.  The LB chooses the private interface of one of
-the nodes as in the example below (10.0.0.4 is private to the K8s cluster only).
+the nodes as in the example below (10.0.0.4 is private to the K8s cluster
+only).
 Then to be able to access the portal on port 8989 from outside the K8s &
-OpenStack environment, the user needs to assign/get the floating IP address that
-corresponds to the private IP as follows::
+OpenStack environment, the user needs to assign/get the floating IP address
+that corresponds to the private IP as follows::
 
   > kubectl -n onap get services|grep "sdc-fe"
   sdc-fe  LoadBalancer   10.43.142.201   10.0.0.4   8181:30207/TCP
 
-
 In this example, use the 10.0.0.4 private address as a key find the
 corresponding public address which in this example is 10.12.6.155. If you're
 using OpenStack you'll do the lookup with the horizon GUI or the OpenStack CLI
-for your tenant (openstack server list).  That IP is then used in your
+for your tenant (openstack server list). That IP is then used in your
 `/etc/hosts` to map the fixed DNS aliases required by the ONAP Portal as shown
 below::
 
@@ -100,8 +101,8 @@ the portal and then simply access now the new ssl-encrypted URL:
    | Alternatives Considered:
 
    -  Kubernetes port forwarding was considered but discarded as it would
-      require the end user to run a script that opens up port forwarding tunnels
-      to each of the pods that provides a portal application widget.
+      require the end user to run a script that opens up port forwarding
+      tunnels to each of the pods that provides a portal application widget.
 
    -  Reverting to a VNC server similar to what was deployed in the Amsterdam
       release was also considered but there were many issues with resolution,
@@ -111,9 +112,9 @@ the portal and then simply access now the new ssl-encrypted URL:
    Observations:
 
    -  If you are not using floating IPs in your Kubernetes deployment and
-      directly attaching a public IP address (i.e. by using your public provider
-      network) to your K8S Node VMs' network interface, then the output of
-      'kubectl -n onap get services | grep "portal-app"'
+      directly attaching a public IP address (i.e. by using your public
+      provider network) to your K8S Node VMs' network interface, then the
+      output of 'kubectl -n onap get services | grep "portal-app"'
       will show your public IP instead of the private network's IP. Therefore,
       you can grab this public IP directly (as compared to trying to find the
       floating IP first) and map this IP in /etc/hosts.
@@ -142,11 +143,9 @@ The following table lists all the NodePorts used by ONAP.
    :widths: 20,20,20,20,20
    :header-rows: 1
 
-
 This table retrieves information from the ONAP deployment using the following
 Kubernetes command:
 
 .. code-block:: bash
 
   kubectl get svc -n onap -o go-template='{{range .items}}{{range.spec.ports}}{{if .nodePort}}{{.nodePort}}{{.}}{{"\n"}}{{end}}{{end}}{{end}}'
-
index a5458f8..52fb7e5 100644 (file)
 OOM Custom Overrides
 ####################
 
-The OOM `helm deploy`_ plugin requires deployment configuration as input, usually in the form of override yaml files.
-These input files determine what ONAP components get deployed, and the configuration of the OOM deployment.
+The OOM `helm deploy`_ plugin requires deployment configuration as input,
+usually in the form of override yaml files.
+These input files determine what ONAP components get deployed, and the
+configuration of the OOM deployment.
 
 Other helm config options like `--set log.enabled=true|false` are available.
 
-See the `helm deploy`_ plugin usage section for more detail, or it the plugin has already been installed, execute the following::
+See the `helm deploy`_ plugin usage section for more detail, or it the plugin
+has already been installed, execute the following::
 
     > helm deploy --help
 
@@ -121,31 +124,46 @@ Global settings relevant for ServiceMesh and Ingress:
 
 ServiceMesh settings:
 
-- enabled: true → enables ServiceMesh functionality in the ONAP Namespace (Istio: enables Sidecar deployment)
+- enabled: true → enables ServiceMesh functionality in the ONAP Namespace
+  (Istio: enables Sidecar deployment)
 - tls: true → enables mTLS encryption in Sidecar communication
 - engine: istio → sets the SM engine (currently only Istio is supported)
 - aafEnabled: false → disables AAF usage for TLS interfaces
 - tlsEnabled: false → disables creation of TLS in component services
 - cmpv2Enabled: false → disable cmpv2 feature
-- msbEnabled: false → MSB is not used in Istio setup (Open, if all components are MSB independend)
+- msbEnabled: false → MSB is not used in Istio setup (Open, if all components
+  are MSB independend)
 
 Ingress settings:
 
-- enabled: true → enables Ingress using: Nginx (when SM disabled), Istio IngressGateway (when SM enabled)
+- enabled: true → enables Ingress using: Nginx (when SM disabled), Istio
+  IngressGateway (when SM enabled)
 - enable_all: true → enables Ingress configuration in each component
 - provider: "..." → sets the Ingress provider (ingress, istio, gw-api)
-- ingressClass: "" → Ingress class (only for provider "ingress"): e.g. nginx, traefik
-- ingressSelector: "" → Selector (only for provider "istio") to match with the ingress pod label "istio=ingress"
-- commonGateway: "" → optional: common used Gateway (for Istio, GW-API) and http(s) listener names
-- virtualhost.baseurl: "simpledemo.onap.org" → sets globally the URL for all Interfaces set by the components,
-    resulting in e.g. "aai-api.simpledemo.onap.org", can be overwritten in the component via: ingress.baseurlOverride
-- virtualhost.preaddr: "pre-" → sets globally a prefix for the Application name for all Interfaces set by the components,
-    resulting in e.g. "pre-aai-api.simpledemo.onap.org", can be overwritten in the component via: ingress.preaddrOverride
-- virtualhost.postaddr: "-post" → sets globally a postfix for the Application name for all Interfaces set by the components,
-    resulting in e.g. "aai-api-post.simpledemo.onap.org", can be overwritten in the component via: ingress.postaddrOverride
-- config.ssl: redirect → sets in the Ingress globally the redirection of all Interfaces from http (port 80) to https (port 443)
-- config.tls.secret: "..." → (optional) overrides the default selfsigned SSL certificate with a certificate stored in the specified secret
-- namespace: istio-ingress → (optional) overrides the namespace of the ingress gateway which is used for the created SSL certificate
+- ingressClass: "" → Ingress class (only for provider "ingress"): e.g. nginx,
+  traefik
+- ingressSelector: "" → Selector (only for provider "istio") to match with the
+  ingress pod label "istio=ingress"
+- commonGateway: "" → optional: common used Gateway (for Istio, GW-API) and
+  http(s) listener names
+- virtualhost.baseurl: "simpledemo.onap.org" → sets globally the URL for all
+  Interfaces set by the components, resulting in e.g.
+  "aai-api.simpledemo.onap.org", can be overwritten in the component via:
+  ingress.baseurlOverride
+- virtualhost.preaddr: "pre-" → sets globally a prefix for the Application name
+  for all Interfaces set by the components, resulting in e.g.
+  "pre-aai-api.simpledemo.onap.org", can be overwritten in the component via:
+  ingress.preaddrOverride
+- virtualhost.postaddr: "-post" → sets globally a postfix for the Application
+  name for all Interfaces set by the components, resulting in e.g.
+  "aai-api-post.simpledemo.onap.org", can be overwritten in the component via:
+  ingress.postaddrOverride
+- config.ssl: redirect → sets in the Ingress globally the redirection of all
+  Interfaces from http (port 80) to https (port 443)
+- config.tls.secret: "..." → (optional) overrides the default selfsigned SSL
+  certificate with a certificate stored in the specified secret
+- namespace: istio-ingress → (optional) overrides the namespace of the ingress
+  gateway which is used for the created SSL certificate
 
 .. note::
   For the Ingress setup example override files (`onap-all-ingress-istio.yaml`, `onap-all-ingress-gatewayapi.yaml`)
index 1107369..21e988d 100644 (file)
@@ -4,7 +4,7 @@
 .. Copyright (C) 2022 Nordix Foundation
 
 .. Links
-.. _ONAP Release Long Term Roadmap: https://wiki.onap.org/display/DW/Long+Term+Roadmap
+.. _ONAP Release Long Term Roadmap: https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16220234/Long+Term+Release+Roadmap
 
 .. _oom_deploy_guide:
 
@@ -14,7 +14,8 @@ OOM Deployment Guide
 .. figure:: ../../resources/images/oom_logo/oomLogoV2-medium.png
    :align: right
 
-ONAP OOM supports several options for the deployment of ONAP using it's helm charts.
+ONAP OOM supports several options for the deployment of ONAP using it's helm
+charts.
 
     * :ref:`oom_helm_release_repo_deploy`
     * :ref:`oom_helm_testing_repo_deploy`
@@ -27,7 +28,8 @@ ONAP OOM supports several options for the deployment of ONAP using it's helm cha
         | :ref:`Set up your base platform<oom_base_setup_guide>`
 
 
-Each deployment method can be customized to deploy a subset of ONAP component applications.
+Each deployment method can be customized to deploy a subset of ONAP component
+applications.
 See the :ref:`oom_customize_overrides` section for more details.
 
 
index b0deff0..debca31 100644 (file)
@@ -10,8 +10,8 @@
 OOM Developer Testing Deployment
 ================================
 
-Developing and testing changes to the existing OOM project can be done locally by setting up some additional
-tools to host the updated helm charts.
+Developing and testing changes to the existing OOM project can be done locally
+by setting up some additional tools to host the updated helm charts.
 
 **Step 1.** Clone the OOM repository from ONAP gerrit::
 
@@ -31,7 +31,8 @@ tools to host the updated helm charts.
 
 **Step 3.** Install Chartmuseum
 
-Chart museum is required to host the helm charts locally when deploying in a development environment::
+Chart museum is required to host the helm charts locally when deploying in a
+development environment::
 
   > curl https://raw.githubusercontent.com/helm/chartmuseum/main/scripts/get-chartmuseum | bash
 
@@ -41,7 +42,8 @@ Chart museum is required to host the helm charts locally when deploying in a dev
 
   > chartmuseum --storage local --storage-local-rootdir ~/helm3-storage -port 8879 &
 
-Note the port number that is listed and use it in the Helm repo add as follows::
+Note the port number that is listed and use it in the Helm repo add as
+follows::
 
   > helm repo add local http://127.0.0.1:8879
 
index e7dc2f0..5e3115d 100644 (file)
@@ -5,7 +5,7 @@
 
 .. Links
 .. _ONAP helm release repository: https://nexus3.onap.org/service/rest/repository/browse/onap-helm-release/
-.. _ONAP Release Long Term Roadmap: https://wiki.onap.org/display/DW/Long+Term+Roadmap
+.. _ONAP Release Long Term Roadmap: https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16220234/Long+Term+Release+Roadmap
 
 .. _oom_helm_release_repo_deploy:
 
@@ -32,7 +32,8 @@ Add the repository:
 
     To customize what applications are deployed, see the :ref:`oom_customize_overrides` section for more details, to provide your own custom overrides yaml file.
 
-- To deploy a release, execute the following, substituting the <version> tag with your preferred release (ie. 13.0.0)::
+- To deploy a release, execute the following, substituting the <version> tag with
+  your preferred release (ie. 13.0.0)::
 
     >  helm deploy dev onap-release/onap --namespace onap --create-namespace --set global.masterPassword=myAwesomePasswordThatINeedToChange --version <version> -f oom/kubernetes/onap/resources/overrides/onap-all.yaml
 
index e931238..92c0e68 100644 (file)
 OOM Helm Testing Deployment
 ===========================
 
-ONAP hosts the OOM `testing` helm charts in it's `ONAP helm testing repository`_.
+ONAP hosts the OOM `testing` helm charts in it's
+`ONAP helm testing repository`_.
 
 This is helm repo contains:
 
     * The `latest` charts built from the head of the `OOM`_ project's master
-      branch, tagged with the version number of the current development cycle (ie. 12.0.0).
+      branch, tagged with the version number of the current development cycle
+      (ie. 15.0.0).
 
 
 Add the OOM testing repo & Deploy
index 36a02dc..c6f1c47 100644 (file)
@@ -441,4 +441,4 @@ SO deployment specification excerpt:
           - --container-name
           - so-mariadb
           env:
-  ...
\ No newline at end of file
+  ...
index b137bff..ecbaabd 100644 (file)
@@ -363,4 +363,4 @@ containers and any state information within it.  To avoid a loss of state, a
 persistent volume should be used to store all data that needs to be persisted
 over the re-creation of a container.  Persistent volumes have been created for
 the database components of each of the projects and the same technique can be
-used for all persistent state information.
\ No newline at end of file
+used for all persistent state information.
index 533f60e..0299c95 100644 (file)
@@ -22,9 +22,9 @@ in a hierarchy as found in the `aai`_ ONAP component.
 
 Charts are created as files laid out in a particular directory tree, then they
 can be packaged into versioned archives to be deployed. There is a public
-archive of `Helm Charts`_ on ArtifactHUB that includes many technologies applicable
-to ONAP. Some of these charts have been used in ONAP and all of the ONAP charts
-have been created following the guidelines provided.
+archive of `Helm Charts`_ on ArtifactHUB that includes many technologies
+applicable to ONAP. Some of these charts have been used in ONAP and all of the
+ONAP charts have been created following the guidelines provided.
 
 An example structure of the OOM common helm charts is shown below:
 
index f25f4e7..6638eb7 100644 (file)
@@ -11,7 +11,7 @@
 .. _Cert-Manager Installation documentation: https://cert-manager.io/docs/installation/kubernetes/
 .. _Cert-Manager kubectl plugin documentation: https://cert-manager.io/docs/usage/kubectl-plugin/
 .. _Strimzi Apache Kafka Operator helm Installation documentation: https://strimzi.io/docs/operators/in-development/deploying.html#deploying-cluster-operator-helm-chart-str
-.. _ONAP Next Generation Security & Logging Structure: https://wiki.onap.org/pages/viewpage.action?pageId=103417456
+.. _ONAP Next Generation Security & Logging Architecture: https://lf-onap.atlassian.net/wiki/x/bVn7
 .. _Istio setup guide: https://istio.io/latest/docs/setup/install/helm/
 .. _Gateway-API: https://gateway-api.sigs.k8s.io/
 .. _Istio-Gateway: https://istio.io/latest/docs/reference/config/networking/gateway/
@@ -31,18 +31,21 @@ the following mandatory installation and configuration steps must be completed.
    :local:
 ..
 
-For additional platform add-ons, see the :ref:`oom_base_optional_addons` section.
+For additional platform add-ons, see the :ref:`oom_base_optional_addons`
+section.
 
 Install & configure kubectl
 ---------------------------
 
-The Kubernetes command line interface used to manage a Kubernetes cluster needs to be installed
-and configured to run as non root.
+The Kubernetes command line interface used to manage a Kubernetes cluster needs
+to be installed and configured to run as non root.
 
-For additional information regarding kubectl installation and configuration see the `kubectl installation guide`_
+For additional information regarding kubectl installation and configuration see
+the `kubectl installation guide`_
 
-To install kubectl, execute the following, replacing the <recommended-kubectl-version> with the version defined
-in the :ref:`versions_table` table::
+To install kubectl, execute the following, replacing the
+<recommended-kubectl-version> with the version defined in the
+:ref:`versions_table` table::
 
     > curl -LO https://dl.k8s.io/release/v<recommended-kubectl-version>/bin/linux/amd64/kubectl
 
@@ -65,24 +68,25 @@ Validate the installation::
 ::
 
   NAME             STATUS   ROLES               AGE     VERSION
-  onap-control-1   Ready    controlplane,etcd   3h53m   v1.27.5
-  onap-control-2   Ready    controlplane,etcd   3h53m   v1.27.5
-  onap-k8s-1       Ready    worker              3h53m   v1.27.5
-  onap-k8s-2       Ready    worker              3h53m   v1.27.5
-  onap-k8s-3       Ready    worker              3h53m   v1.27.5
-  onap-k8s-4       Ready    worker              3h53m   v1.27.5
-  onap-k8s-5       Ready    worker              3h53m   v1.27.5
-  onap-k8s-6       Ready    worker              3h53m   v1.27.5
+  onap-control-1   Ready    controlplane,etcd   3h53m   v1.28.6
+  onap-control-2   Ready    controlplane,etcd   3h53m   v1.28.6
+  onap-k8s-1       Ready    worker              3h53m   v1.28.6
+  onap-k8s-2       Ready    worker              3h53m   v1.28.6
+  onap-k8s-3       Ready    worker              3h53m   v1.28.6
+  onap-k8s-4       Ready    worker              3h53m   v1.28.6
+  onap-k8s-5       Ready    worker              3h53m   v1.28.6
+  onap-k8s-6       Ready    worker              3h53m   v1.28.6
 
 
 Install & configure helm
 ------------------------
 
-Helm is used for package and configuration management of the relevant helm charts.
-For additional information, see the `helm installation guide`_
+Helm is used for package and configuration management of the relevant helm
+charts. For additional information, see the `helm installation guide`_
 
-To install helm, execute the following, replacing the <recommended-helm-version> with the version defined
-in the :ref:`versions_table` table::
+To install helm, execute the following, replacing the
+<recommended-helm-version> with the version defined in the
+:ref:`versions_table` table::
 
     > wget https://get.helm.sh/helm-v<recommended-helm-version>-linux-amd64.tar.gz
 
@@ -94,8 +98,8 @@ Verify the helm version with::
 
     > helm version
 
-Helm's default CNCF provided `Curated applications for Kubernetes`_ repository called
-*stable* can be removed to avoid confusion::
+Helm's default CNCF provided `Curated applications for Kubernetes`_ repository
+called *stable* can be removed to avoid confusion::
 
     > helm repo remove stable
 
@@ -120,10 +124,12 @@ Verify the plugins are installed::
 Set the default StorageClass
 ----------------------------
 
-In some ONAP components it is important to have a default storageClass defined (e.g. cassandra),
-if you don't want to explicitly set it during the deployment via helm overrides.
+In some ONAP components it is important to have a default storageClass defined
+(e.g. cassandra), if you don't want to explicitly set it during the deployment
+via helm overrides.
 
-Therefor you should set the default storageClass (if not done during the K8S cluster setup) via the command::
+Therefor you should set the default storageClass (if not done during the K8S
+cluster setup) via the command::
 
     > kubectl patch storageclass <storageclass> -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
 
@@ -132,9 +138,10 @@ see `DefaultStorageClass`_
 Install the Strimzi Kafka Operator
 ----------------------------------
 
-Strimzi Apache Kafka provides a way to run an Apache Kafka cluster on Kubernetes
-in various deployment configurations by using kubernetes operators.
-Operators are a method of packaging, deploying, and managing Kubernetes applications.
+Strimzi Apache Kafka provides a way to run an Apache Kafka cluster on
+Kubernetes in various deployment configurations by using kubernetes operators.
+Operators are a method of packaging, deploying, and managing Kubernetes
+applications.
 
 Strimzi Operators extend the Kubernetes functionality, automating common
 and complex tasks related to a Kafka deployment. By implementing
@@ -153,8 +160,9 @@ To add the required helm repository, execute the following::
 
     > helm repo add strimzi https://strimzi.io/charts/
 
-To install the strimzi kafka operator, execute the following, replacing the <recommended-strimzi-version> with the version defined
-in the :ref:`versions_table` table::
+To install the strimzi kafka operator, execute the following, replacing the
+<recommended-strimzi-version> with the version defined in the
+:ref:`versions_table` table::
 
     > helm install strimzi-kafka-operator strimzi/strimzi-kafka-operator --namespace strimzi-system --version <recommended-strimzi-version> --set watchAnyNamespace=true --create-namespace
 
@@ -192,8 +200,9 @@ to manage cert-manager resources inside your cluster. For installation
 steps, please refer to `Cert-Manager kubectl plugin documentation`_.
 
 
-To install cert-manager, execute the following, replacing the <recommended-cm-version> with the version defined
-in the :ref:`versions_table` table::
+To install cert-manager, execute the following, replacing the
+<recommended-cm-version> with the version defined in the
+:ref:`versions_table` table::
 
     > kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v<recommended-cm-version>/cert-manager.yaml
 
@@ -213,11 +222,11 @@ Istio Service Mesh
 
 .. note::
     The ONAP deployment supports the
-    `ONAP Next Generation Security & Logging Structure`_
+    `ONAP Next Generation Security & Logging Architecture`_
 
 ONAP is currenty supporting Istio as default ServiceMesh platform.
-Therefor the following instructions describe the setup of Istio and required tools.
-Used `Istio setup guide`_
+Therefor the following instructions describe the setup of Istio and required
+tools. Used `Istio setup guide`_
 
 .. _oom_base_optional_addons_istio_installation:
 
@@ -247,16 +256,25 @@ Install Istio Basic Platform
 
     > helm upgrade -i istio-base istio/base -n istio-system --version <recommended-istio-version>
 
-- Create an override for istiod (e.g. istiod.yaml) to add the oauth2-proxy as external
-  authentication provider and apply some specific config settings
+- Create an override for istiod (e.g. istiod.yaml) to add the oauth2-proxy as
+  external authentication provider and apply some specific config settings
+  Be aware, that from Istio version 1.21.0 the format of the values.yaml
+  changes. Additionally a new feature (Native Sidecars) can be enabled, if it
+  is enabled in Kubernetes (version > 1.28)
 
-    .. collapse:: istiod.yaml
+    .. collapse:: istiod.yaml (version => 1.21)
+
+      .. include:: ../../resources/yaml/istiod-1_21.yaml
+         :code: yaml
+
+    .. collapse:: istiod.yaml (version < 1.21)
 
       .. include:: ../../resources/yaml/istiod.yaml
          :code: yaml
 
-- Install the Istio Base Istio Discovery chart which deploys the istiod service, replacing the
-  <recommended-istio-version> with the version defined in the :ref:`versions_table` table::
+- Install the Istio Base Istio Discovery chart which deploys the istiod
+  service, replacing the <recommended-istio-version> with the version
+  defined in the :ref:`versions_table` table::
 
     > helm upgrade -i istiod istio/istiod -n istio-system --version <recommended-istio-version>
     --wait -f ./istiod.yaml
@@ -295,7 +313,8 @@ In the production setup 2 different Ingress setups are supported.
 - Istio Gateway `Istio-Gateway`_ (alternative, but in the future deprecated)
 
 Depending on the solution, the ONAP helm values.yaml has to be configured.
-See the :ref:`OOM customized deployment<oom_customize_overrides>` section for more details.
+See the :ref:`OOM customized deployment<oom_customize_overrides>` section for
+more details.
 
 Gateway-API (recommended)
 ^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -328,8 +347,8 @@ Istio Gateway (alternative)
 
     > kubectl label namespace istio-ingress istio-injection=enabled
 
-- To expose additional ports besides HTTP/S (e.g. for external Kafka access, SDNC-callhome)
-  create an override file (e.g. istio-ingress.yaml)
+- To expose additional ports besides HTTP/S (e.g. for external Kafka access,
+  SDNC-callhome) create an override file (e.g. istio-ingress.yaml)
 
     .. collapse:: istio-ingress.yaml
 
@@ -379,7 +398,8 @@ Configure Keycloak
 ^^^^^^^^^^^^^^^^^^
 
 - To configure the Keycloak instance
-  create an override file (e.g. keycloak-server-values.yaml)
+  create an override file (e.g. keycloak-server-values.yaml) and use
+  the "image.tag" of the keycloak version (here 26.0.6)
 
     .. collapse:: keycloak-server-values.yaml
 
index 4b2a752..0de1775 100644 (file)
@@ -15,8 +15,8 @@ ONAP Deployment Requirements
 
 .. rubric::  Minimum Hardware Configuration
 
-Some recommended hardware requirements are provided below. Note that this is for a
-full ONAP deployment (all components).
+Some recommended hardware requirements are provided below. Note that this is
+for a full ONAP deployment (all components).
 
 .. table:: OOM Hardware Requirements
 
@@ -26,8 +26,10 @@ full ONAP deployment (all components).
   224GB  160GB  112     0.0.0.0/0 (all open)
   =====  =====  ======  ====================
 
-Customizing ONAP to deploy only components that are needed will drastically reduce these requirements.
-See the :ref:`OOM customized deployment<oom_customize_overrides>` section for more details.
+Customizing ONAP to deploy only components that are needed will drastically
+reduce these requirements.
+See the :ref:`OOM customized deployment<oom_customize_overrides>` section for
+more details.
 
 .. note::
     | Kubernetes supports a maximum of 110 pods per node - this can be overcome by modifying your kubelet config.
@@ -48,9 +50,9 @@ The versions of software that are supported and tested by OOM are as follows:
   ==============     ===========  =======  ========  ========  =============  ========
   Release            Kubernetes   Helm     kubectl   Docker    Cert-Manager   Strimzi
   ==============     ===========  =======  ========  ========  =============  ========
-  London             1.23.8       3.8.2    1.23.x    20.10.x   1.12.2         0.35.0
-  Montreal           1.27.5       3.12.3   1.27.x    20.10.x   1.13.2         0.36.1
-  New Delhi          1.27.5       3.12.3   1.27.x    20.10.x   1.13.2         0.40.0
+  New Delhi          1.28.6       3.13.1   1.28.x    20.10.x   1.14.4         0.41.0
+  Oslo               1.28.6       3.13.1   1.30.x    23.0.x    1.16.2         0.44.0
+  Paris              1.30.4       3.16.4   1.30.x    23.0.x    1.17.2         0.45.0
   ==============     ===========  =======  ========  ========  =============  ========
 
 .. table:: OOM Software Requirements (production)
@@ -58,17 +60,17 @@ The versions of software that are supported and tested by OOM are as follows:
   ==============     ======  ============ ==============
   Release            Istio   Gateway-API  Keycloak
   ==============     ======  ============ ==============
-  London             1.17.2  v0.6.2       19.0.3-legacy
-  Montreal           1.19.3  v1.0.0       19.0.3-legacy
-  New Delhi          1.19.3  v1.0.0       22.0.4
+  New Delhi          1.21.0  v1.0.0       22.0.4
+  Oslo               1.24.1  v1.2.1       26.0.6
+  Paris              1.25.2  v1.2.1       26.0.6
   ==============     ======  ============ ==============
 
 .. table:: OOM Software Requirements (optional)
 
-  ==============     ================= ========== =================
-  Release            Prometheus Stack  K8ssandra  MariaDB-Operator
-  ==============     ================= ========== =================
-  London             45.x              1.6.1
-  Montreal           45.x              1.10.2     0.23.1
-  New Delhi          45.x              1.11.0     0.24.0
-  ==============     ================= ========== =================
+  ==============     =========== ========== =========== ============ ===========
+  Release            Prometheus  K8ssandra  MariaDB-Op  Postgres-Op  MongoDB-Op
+  ==============     =========== ========== =========== ============ ===========
+  New Delhi          45.x        1.16.0     0.28.1      -            -
+  Oslo               45.x        1.20.2     0.36.0      5.7.2        1.18.0
+  Paris              71.x        1.21.2     0.38.1      5.7.2        1.19.1
+  ==============     =========== ========== =========== ============ ===========
index fb164bc..ce623f3 100644 (file)
@@ -5,13 +5,14 @@
 
 .. Links
 .. _Prometheus stack README: https://github.com/prometheus-community/helm-charts/blob/main/charts/kube-prometheus-stack/README.md
-.. _ONAP Next Generation Security & Logging Structure: https://wiki.onap.org/pages/viewpage.action?pageId=103417456
+.. _ONAP Next Generation Security & Logging Architecture: https://lf-onap.atlassian.net/wiki/x/bVn7
 .. _Istio setup guide: https://istio.io/latest/docs/setup/install/helm/
 .. _Kiali setup guide: https://kiali.io/docs/installation/installation-guide/example-install/
 .. _Kserve setup guide: https://kserve.github.io/website/0.10/admin/kubernetes_deployment/
 .. _K8ssandra setup guide: https://docs.k8ssandra.io/install/
 .. _Mariadb-Operator setup guide: https://github.com/mariadb-operator/mariadb-operator
 .. _Postgres-Operator setup guide: https://github.com/CrunchyData/postgres-operator
+.. _MongoDB-Operator setup guide: https://docs.percona.com/percona-operator-for-mongodb/helm.html
 
 .. _oom_base_optional_addons:
 
@@ -44,7 +45,9 @@ To install the prometheus stack, execute the following:
 
     > helm repo update
 
-- To install prometheus, execute the following, replacing the <recommended-pm-version> with the version defined in the :ref:`versions_table` table::
+- To install prometheus, execute the following, replacing the
+  <recommended-pm-version> with the version defined in the
+  :ref:`versions_table` table::
 
     > helm install prometheus prometheus-community/kube-prometheus-stack --namespace=prometheus --create-namespace --version=<recommended-pm-version>
 
@@ -93,7 +96,6 @@ For setup the kiali operator is used, see `Kiali setup guide`_
 
     > kubectl -n istio-system apply -f kiali-ingress.yaml
 
-
 Jaeger Installation
 -------------------
 
@@ -113,7 +115,8 @@ For setup the K8ssandra operator is used, see `K8ssandra setup guide`_
 
     > kubectl label namespace k8ssandra-operator istio-injection=enabled
 
-- Install the k8ssandra-operator replacing the <recommended-version> with the version defined in the :ref:`versions_table` table::
+- Install the k8ssandra-operator replacing the <recommended-version> with the
+  version defined in the :ref:`versions_table` table::
 
     > helm repo add k8ssandra https://helm.k8ssandra.io/stable
 
@@ -137,12 +140,15 @@ For setup the Mariadb-Operator is used, see `Mariadb-Operator setup guide`_
 
     > kubectl label namespace mariadb-operator istio-injection=enabled
 
-- Install the mariadb-operator replacing the <recommended-version> with the version defined in the :ref:`versions_table` table::::
+- Install the mariadb-operator replacing the <recommended-version> with the
+  version defined in the :ref:`versions_table` table::::
 
-    > helm repo add mariadb-operator https://mariadb-operator.github.io/mariadb-operator
+    > helm repo add mariadb-operator https://helm.mariadb.com/mariadb-operator
 
     > helm repo update mariadb-operator
 
+    > helm install mariadb-operator-crds --namespace mariadb-operator --version=<recommended-version>
+
     > helm install mariadb-operator --namespace mariadb-operator
       mariadb-operator/mariadb-operator --set ha.enabled=true
       --set metrics.enabled=true --set webhook.certificate.certManager=true
@@ -156,6 +162,30 @@ Postgres DB clusters, including monitoring and backup
 
 For setup the Postgres-Operator is used, see `Postgres-Operator setup guide`_
 
+MongoDB-Operator Installation
+------------------------------
+
+MongoDB-Operator is used to ease the installation and lifecycle management of
+MongoDB DB instances, including monitoring and backup
+
+For setup the MongoDB-Operator is used, see `MongoDB-Operator setup guide`_
+
+- Install mongodb-operator namespace::
+
+    > kubectl create namespace mongodb-operator
+
+    > kubectl label namespace mongodb-operator istio-injection=enabled
+
+- Install the mongodb-operator replacing the <recommended-version> with the
+  version defined in the :ref:`versions_table` table::
+
+    > helm repo add percona https://percona.github.io/percona-helm-charts
+
+    > helm repo update percona
+
+    > helm install mongodb-operator --namespace mongodb-operator
+      percona/psmdb-operator --version=<recommended-version>
+
 Kserve Installation
 -------------------
 
@@ -169,16 +199,19 @@ This installation is necessary for the ML models to be deployed as inference
 service. Once deployed, the inference services can be queried for the
 prediction.
 
-**Kserve participant component in Policy ACM requires this installation. Kserve participant deploy/undeploy inference services in Kserve.**
+**Kserve participant component in Policy ACM requires this installation.**
+**Kserve participant deploy/undeploy inference services in Kserve.**
 
 Dependent component version compatibility details and installation instructions
 can be found at `Kserve setup guide`_
 
 Kserve installation requires the following components:
 
--  Istio. Its installation instructions can be found at :ref:`oom_base_optional_addons_istio_installation`
+-  Istio. Its installation instructions can be found at
+   :ref:`oom_base_optional_addons_istio_installation`
 
--  Cert-Manager. Its installation instructions can be found at :ref:`oom_base_setup_cert_manager`
+-  Cert-Manager. Its installation instructions can be found at
+   :ref:`oom_base_setup_cert_manager`
 
 Installation instructions as follows,
 
index d31c818..85e4eef 100644 (file)
@@ -44,7 +44,8 @@ The following sections describe the life-cycle operations:
 - Monitor_ - real-time health monitoring feeding to a Consul UI and Kubernetes
 - Heal_- failed ONAP containers are recreated automatically
 - Scale_ - cluster ONAP services to enable seamless scaling
-- Upgrade_ - change-out containers or configuration with little or no service impact
+- Upgrade_ - change-out containers or configuration with little or no service
+  impact
 - Delete_ - cleanup individual containers or entire deployments
 
 .. figure:: ../../resources/images/oom_logo/oomLogoV2-Deploy.png
@@ -59,7 +60,8 @@ describe the composition of each of the ONAP components and the relationship
 within and between components. Using this model Helm is able to deploy all of
 ONAP with a few simple commands.
 
-Please refer to the :ref:`oom_deploy_guide` for deployment pre-requisites and options
+Please refer to the :ref:`oom_deploy_guide` for deployment pre-requisites and
+options
 
 .. note::
   Refer to the :ref:`oom_customize_overrides` section on how to update overrides.yaml and values.yaml
index 7742379..402c64a 100644 (file)
@@ -38,18 +38,21 @@ In summary OOM provides the following capabilities:
   service impact
 - **Delete** - cleanup individual containers or entire deployments
 
-OOM supports a wide variety of Kubernetes private clouds - built with ClusterAPI,
-Kubespray - and public cloud infrastructures such as: Microsoft
+OOM supports a wide variety of Kubernetes private clouds - built with
+ClusterAPI, Kubespray - and public cloud infrastructures such as: Microsoft
 Azure, Amazon AWS, Google GCD, VMware VIO, and OpenStack.
 
 The OOM documentation is broken into four different areas each targeted at a
 different user:
 
 - :ref:`oom_dev_guide` - a guide for developers of OOM
-- :ref:`oom_infra_guide` - a guide for those setting up the environments that OOM will use
-- :ref:`oom_deploy_guide` - a guide for those deploying OOM on an existing cloud
+- :ref:`oom_infra_guide` - a guide for those setting up the environments that
+  OOM will use
+- :ref:`oom_deploy_guide` - a guide for those deploying OOM on an existing
+  cloud
 - :ref:`oom_user_guide` - a guide for operators of an OOM instance
-- :ref:`oom_access_info_guide` - a guide for operators who require access to OOM applications
+- :ref:`oom_access_info_guide` - a guide for operators who require access to
+  OOM applications
 
 The :ref:`release_notes` for OOM describe the incremental features per release.
 
index 6fc2296..262291f 100644 (file)
@@ -33,7 +33,7 @@ The main goal of the Amsterdam release was to:
 **Bug Fixes**
 
     The full list of implemented user stories and epics is available on
-    `JIRA <https://jira.onap.org/secure/RapidBoard.jspa?rapidView=41&view=planning.nodetail&epics=visible>`_
+    `JIRA <https://lf-onap.atlassian.net/secure/RapidBoard.jspa?rapidView=41&view=planning.nodetail&epics=visible>`_
     This is the first release of OOM, the defects fixed in this release were
     raised during the course of the release.
     Anything not closed is captured below under Known Issues. If you want to
@@ -41,14 +41,14 @@ The main goal of the Amsterdam release was to:
     above.
 
 **Known Issues**
-    - `OOM-6 <https://jira.onap.org/browse/OOM-6>`_ Automated platform deployment on Docker/Kubernetes
+    - `OOM-6 <https://lf-onap.atlassian.net/browse/OOM-6>`_ Automated platform deployment on Docker/Kubernetes
 
         VFC, AAF, MSB minor issues.
 
         Workaround: Manual configuration changes - however the reference
         vFirewall use case does not currently require these components.
 
-    - `OOM-10 <https://jira.onap.org/browse/OOM-10>`_ Platform configuration management.
+    - `OOM-10 <https://lf-onap.atlassian.net/browse/OOM-10>`_ Platform configuration management.
 
         OOM ONAP Configuration Management - Handling of Secrets.
 
index 84f86c1..f07af9b 100644 (file)
@@ -23,394 +23,394 @@ Previous Release Notes
 Epic
 ****
 
-* [`OOM-6 <https://jira.onap.org/browse/OOM-6>`_] - Automated platform deployment on Docker/Kubernetes
-* [`OOM-7 <https://jira.onap.org/browse/OOM-7>`_] - Platform monitoring and auto-healing
-* [`OOM-8 <https://jira.onap.org/browse/OOM-8>`_] - Automated platform scalability
-* [`OOM-9 <https://jira.onap.org/browse/OOM-9>`_] - Platform upgradability & rollbacks
-* [`OOM-10 <https://jira.onap.org/browse/OOM-10>`_] - Platform configuration management
-* [`OOM-46 <https://jira.onap.org/browse/OOM-46>`_] - Platform infrastructure deployment with TOSCA
-* [`OOM-109 <https://jira.onap.org/browse/OOM-109>`_] - Platform Centralized Logging
-* [`OOM-138 <https://jira.onap.org/browse/OOM-138>`_] - Using Optimization framework
-* [`OOM-346 <https://jira.onap.org/browse/OOM-346>`_] - Platform Resiliency (including Recoverability, High-Availability, Backup/Restore, Geo-Redundancy)
-* [`OOM-376 <https://jira.onap.org/browse/OOM-376>`_] - ONAP deployment options standardization
-* [`OOM-486 <https://jira.onap.org/browse/OOM-486>`_] - HELM upgrade from 2.3 to 2.8.0
-* [`OOM-535 <https://jira.onap.org/browse/OOM-535>`_] - Upgrade Kubernetes from 1.8.6 to 1.9.2
-* [`OOM-590 <https://jira.onap.org/browse/OOM-590>`_] - OOM Wiki documentation of deployment options
+* [`OOM-6 <https://lf-onap.atlassian.net/browse/OOM-6>`_] - Automated platform deployment on Docker/Kubernetes
+* [`OOM-7 <https://lf-onap.atlassian.net/browse/OOM-7>`_] - Platform monitoring and auto-healing
+* [`OOM-8 <https://lf-onap.atlassian.net/browse/OOM-8>`_] - Automated platform scalability
+* [`OOM-9 <https://lf-onap.atlassian.net/browse/OOM-9>`_] - Platform upgradability & rollbacks
+* [`OOM-10 <https://lf-onap.atlassian.net/browse/OOM-10>`_] - Platform configuration management
+* [`OOM-46 <https://lf-onap.atlassian.net/browse/OOM-46>`_] - Platform infrastructure deployment with TOSCA
+* [`OOM-109 <https://lf-onap.atlassian.net/browse/OOM-109>`_] - Platform Centralized Logging
+* [`OOM-138 <https://lf-onap.atlassian.net/browse/OOM-138>`_] - Using Optimization framework
+* [`OOM-346 <https://lf-onap.atlassian.net/browse/OOM-346>`_] - Platform Resiliency (including Recoverability, High-Availability, Backup/Restore, Geo-Redundancy)
+* [`OOM-376 <https://lf-onap.atlassian.net/browse/OOM-376>`_] - ONAP deployment options standardization
+* [`OOM-486 <https://lf-onap.atlassian.net/browse/OOM-486>`_] - HELM upgrade from 2.3 to 2.8.0
+* [`OOM-535 <https://lf-onap.atlassian.net/browse/OOM-535>`_] - Upgrade Kubernetes from 1.8.6 to 1.9.2
+* [`OOM-590 <https://lf-onap.atlassian.net/browse/OOM-590>`_] - OOM Wiki documentation of deployment options
 
 Story
 *****
 
-* [`OOM-11 <https://jira.onap.org/browse/OOM-11>`_] - Add AAF containers to ONAP Kubernetes
-* [`OOM-13 <https://jira.onap.org/browse/OOM-13>`_] - Add CLI containers to ONAP Kubernetes
-* [`OOM-15 <https://jira.onap.org/browse/OOM-15>`_] - Add DMAAP containers to ONAP Kubernetes
-* [`OOM-20 <https://jira.onap.org/browse/OOM-20>`_] - State Monitoring: MSO/mso
-* [`OOM-21 <https://jira.onap.org/browse/OOM-21>`_] - State Monitoring: A&AI/aai-service
-* [`OOM-22 <https://jira.onap.org/browse/OOM-22>`_] - State Monitoring: SDNC/sdc-be
-* [`OOM-24 <https://jira.onap.org/browse/OOM-24>`_] - State Monitoring: message-router
-* [`OOM-25 <https://jira.onap.org/browse/OOM-25>`_] - State Monitoring: MSB
-* [`OOM-29 <https://jira.onap.org/browse/OOM-29>`_] - State Monitoring: VID
-* [`OOM-31 <https://jira.onap.org/browse/OOM-31>`_] - State Monitoring: APPC/dbhost
-* [`OOM-32 <https://jira.onap.org/browse/OOM-32>`_] - State Monitoring: VFC
-* [`OOM-33 <https://jira.onap.org/browse/OOM-33>`_] - State Monitoring: Multi-VIM
-* [`OOM-34 <https://jira.onap.org/browse/OOM-34>`_] - Auto-Restart on failure: ...
-* [`OOM-35 <https://jira.onap.org/browse/OOM-35>`_] - State Monitoring: A&AI/hbase
-* [`OOM-36 <https://jira.onap.org/browse/OOM-36>`_] - State Monitoring: A&AI/model-loader-service
-* [`OOM-37 <https://jira.onap.org/browse/OOM-37>`_] - State Monitoring: APPC/dgbuilder
-* [`OOM-38 <https://jira.onap.org/browse/OOM-38>`_] - State Monitoring: APPC/sdnctldb01
-* [`OOM-39 <https://jira.onap.org/browse/OOM-39>`_] - State Monitoring: APPC/sdnctldb02
-* [`OOM-40 <https://jira.onap.org/browse/OOM-40>`_] - State Monitoring: APPC/sdnhost
-* [`OOM-41 <https://jira.onap.org/browse/OOM-41>`_] - State Monitoring: MSO/mariadb
-* [`OOM-42 <https://jira.onap.org/browse/OOM-42>`_] - State Monitoring: SDNC/dbhost
-* [`OOM-43 <https://jira.onap.org/browse/OOM-43>`_] - State Monitoring: SDNC/sdnc-dgbuilder
-* [`OOM-44 <https://jira.onap.org/browse/OOM-44>`_] - State Monitoring: SDNC/sdnc-portal
-* [`OOM-45 <https://jira.onap.org/browse/OOM-45>`_] - State Monitoring: SDNC/sdnctldb01
-* [`OOM-51 <https://jira.onap.org/browse/OOM-51>`_] - OOM ONAP Configuration Management - Externalize hardwired values
-* [`OOM-52 <https://jira.onap.org/browse/OOM-52>`_] - OOM ONAP Configuration Management - Parameterization of docker images
-* [`OOM-53 <https://jira.onap.org/browse/OOM-53>`_] - OOM ONAP Configuration Management - Parameterization for Sizing
-* [`OOM-63 <https://jira.onap.org/browse/OOM-63>`_] - Kubernetes cluster created by TOSCA description
-* [`OOM-85 <https://jira.onap.org/browse/OOM-85>`_] - Test the code in the "Lab" project environment
-* [`OOM-86 <https://jira.onap.org/browse/OOM-86>`_] - Monitoring the health status of ONAP components
-* [`OOM-87 <https://jira.onap.org/browse/OOM-87>`_] - Configure TOSCA description via dashboard
-* [`OOM-88 <https://jira.onap.org/browse/OOM-88>`_] - Deploy Holmes on K8S cluster by TOSCA description
-* [`OOM-89 <https://jira.onap.org/browse/OOM-89>`_] - Deploy CLAMP on K8S cluster by TOSCA description
-* [`OOM-91 <https://jira.onap.org/browse/OOM-91>`_] - Deploy MSB on K8S cluster by TOSCA description
-* [`OOM-92 <https://jira.onap.org/browse/OOM-92>`_] - Deploy AAF on K8S cluster by TOSCA description
-* [`OOM-93 <https://jira.onap.org/browse/OOM-93>`_] - Deploy VF-C on K8S cluster by TOSCA description
-* [`OOM-94 <https://jira.onap.org/browse/OOM-94>`_] - Deploy Multi-VIM on K8S cluster by TOSCA description
-* [`OOM-95 <https://jira.onap.org/browse/OOM-95>`_] - Deploy DCAEGen2 on K8S cluster by TOSCA description
-* [`OOM-96 <https://jira.onap.org/browse/OOM-96>`_] - Deploy AAI on K8S cluster by TOSCA description
-* [`OOM-97 <https://jira.onap.org/browse/OOM-97>`_] - Deploy APPC on K8S cluster by TOSCA description
-* [`OOM-98 <https://jira.onap.org/browse/OOM-98>`_] - Deploy MSO on K8S cluster by TOSCA description
-* [`OOM-99 <https://jira.onap.org/browse/OOM-99>`_] - Deploy Policy on K8S cluster by TOSCA description
-* [`OOM-100 <https://jira.onap.org/browse/OOM-100>`_] - Deploy SDC on K8S cluster by TOSCA description
-* [`OOM-102 <https://jira.onap.org/browse/OOM-102>`_] - Deploy VID on K8S cluster by TOSCA description
-* [`OOM-110 <https://jira.onap.org/browse/OOM-110>`_] - OOM ONAP Logging - Elastic Stack components deployment
-* [`OOM-111 <https://jira.onap.org/browse/OOM-111>`_] - OOM ONAP Logging - FileBeat deployment aside ONAP components
-* [`OOM-112 <https://jira.onap.org/browse/OOM-112>`_] - OOM ONAP Logging - Configuration of all ONAP components to emit canonical logs
-* [`OOM-116 <https://jira.onap.org/browse/OOM-116>`_] - ignore intellj files
-* [`OOM-145 <https://jira.onap.org/browse/OOM-145>`_] - update directory path from dockerdata-nfs to configured directory name (make it configurable)
-* [`OOM-235 <https://jira.onap.org/browse/OOM-235>`_] - Service endpoint annotation for Usecase UI
-* [`OOM-242 <https://jira.onap.org/browse/OOM-242>`_] - Modify DCAE seed for Helm
-* [`OOM-262 <https://jira.onap.org/browse/OOM-262>`_] - Remove "oneclick" kubectl scripts.
-* [`OOM-265 <https://jira.onap.org/browse/OOM-265>`_] - Top level helm chart for ONAP
-* [`OOM-268 <https://jira.onap.org/browse/OOM-268>`_] - Persist and externalize database directories via persistent volumes
-* [`OOM-271 <https://jira.onap.org/browse/OOM-271>`_] - Copy app config files from source
-* [`OOM-272 <https://jira.onap.org/browse/OOM-272>`_] - Set application environment variables from source
-* [`OOM-277 <https://jira.onap.org/browse/OOM-277>`_] - add automatic ONAP config parameter substitution
-* [`OOM-280 <https://jira.onap.org/browse/OOM-280>`_] - MSB automatically re-synch service data on restart.
-* [`OOM-292 <https://jira.onap.org/browse/OOM-292>`_] - Expose LOG Volume via /dockerdata-nfs
-* [`OOM-293 <https://jira.onap.org/browse/OOM-293>`_] - OOM ONAP Configuration Management - Handling of Secrets
-* [`OOM-298 <https://jira.onap.org/browse/OOM-298>`_] - Provide script to cleanup configuration data created by createConfig.sh
-* [`OOM-322 <https://jira.onap.org/browse/OOM-322>`_] - Clean-up config files that are generated at system startup
-* [`OOM-341 <https://jira.onap.org/browse/OOM-341>`_] - Provide an example of a partial deployment of ONAP components (e.g. no VFC)
-* [`OOM-342 <https://jira.onap.org/browse/OOM-342>`_] - Add pointer to Wiki page on the readme file.
-* [`OOM-344 <https://jira.onap.org/browse/OOM-344>`_] - Break the configuration tarball per appplication
-* [`OOM-345 <https://jira.onap.org/browse/OOM-345>`_] - Re-validate # of containers and configuration for DCAEgen2
-* [`OOM-356 <https://jira.onap.org/browse/OOM-356>`_] - Add 'Usecase UI' containers to ONAP Kubernetes
-* [`OOM-359 <https://jira.onap.org/browse/OOM-359>`_] - SDC logback chef failure
-* [`OOM-375 <https://jira.onap.org/browse/OOM-375>`_] - F2F: ONAP/OOM for Developers
-* [`OOM-382 <https://jira.onap.org/browse/OOM-382>`_] - Robot Version 1.1 OpenO tests
-* [`OOM-406 <https://jira.onap.org/browse/OOM-406>`_] - In Kubernetes 1.8, the annotations are no longer supported and must be converted to the PodSpec field.
-* [`OOM-457 <https://jira.onap.org/browse/OOM-457>`_] - In Kubernetes 1.8, init-container annotations to be converted to PodSpec field for aaf, clamp and vfc
-* [`OOM-460 <https://jira.onap.org/browse/OOM-460>`_] - Segregating configuration of ONAP components
-* [`OOM-476 <https://jira.onap.org/browse/OOM-476>`_] - Parameterize values.yaml docker image repos into global config variables
-* [`OOM-528 <https://jira.onap.org/browse/OOM-528>`_] - Confirm k8s context with a prompt for deleteAll.bash
-* [`OOM-534 <https://jira.onap.org/browse/OOM-534>`_] - Need to provide support for creating different sized OOM deployments
-* [`OOM-546 <https://jira.onap.org/browse/OOM-546>`_] - Provide option to collect ONAP env details for issue investigations
-* [`OOM-569 <https://jira.onap.org/browse/OOM-569>`_] - Investigate containerizing Cloudify Manager
-* [`OOM-579 <https://jira.onap.org/browse/OOM-579>`_] - Document a Cloudify deployment of OOM Beijing
-* [`OOM-633 <https://jira.onap.org/browse/OOM-633>`_] - Provide direct access to ONAP Portal without the need to use VNC
-* [`OOM-677 <https://jira.onap.org/browse/OOM-677>`_] - Update all source code files with the Apache 2 License header
-* [`OOM-678 <https://jira.onap.org/browse/OOM-678>`_] - Enforce MSB dockers dependencies using init-container
-* [`OOM-681 <https://jira.onap.org/browse/OOM-681>`_] - updating docker images/components to latest code
-* [`OOM-682 <https://jira.onap.org/browse/OOM-682>`_] - deployment of sdc workflow designer
-* [`OOM-695 <https://jira.onap.org/browse/OOM-695>`_] - Improve Readiness-check prob
-* [`OOM-722 <https://jira.onap.org/browse/OOM-722>`_] - OOM - Run all ONAP components in one namespace
-* [`OOM-725 <https://jira.onap.org/browse/OOM-725>`_] - Use Blueprint to install Helm and k8s dashboard while creating k8s cluster
-* [`OOM-727 <https://jira.onap.org/browse/OOM-727>`_] - Add Standardized Configuration to SO
-* [`OOM-728 <https://jira.onap.org/browse/OOM-728>`_] - Add Standardized Configuration to ROBOT
-* [`OOM-729 <https://jira.onap.org/browse/OOM-729>`_] - Add Standardized Configuration to VID
-* [`OOM-730 <https://jira.onap.org/browse/OOM-730>`_] - Add Standardized Configuration to Consul
-* [`OOM-731 <https://jira.onap.org/browse/OOM-731>`_] - Add Standardized Configuration to DMaaP Message Router
-* [`OOM-732 <https://jira.onap.org/browse/OOM-732>`_] - Add Standardized Configuration to AAF
-* [`OOM-733 <https://jira.onap.org/browse/OOM-733>`_] - Add Standardized Configuration to APPC
-* [`OOM-734 <https://jira.onap.org/browse/OOM-734>`_] - Add Standardized Configuration to AAI
-* [`OOM-735 <https://jira.onap.org/browse/OOM-735>`_] - Add Standardized Configuration to CLAMP
-* [`OOM-736 <https://jira.onap.org/browse/OOM-736>`_] - Add Standardized Configuration to CLI
-* [`OOM-737 <https://jira.onap.org/browse/OOM-737>`_] - Add Standardized Configuration to DCAEGEN2
-* [`OOM-738 <https://jira.onap.org/browse/OOM-738>`_] - Add Standardized Configuration to ESR
-* [`OOM-739 <https://jira.onap.org/browse/OOM-739>`_] - Add Standardized Configuration to KUBE2MSB
-* [`OOM-740 <https://jira.onap.org/browse/OOM-740>`_] - Add Standardized Configuration to LOG
-* [`OOM-742 <https://jira.onap.org/browse/OOM-742>`_] - Add Standardized Configuration to MSB
-* [`OOM-743 <https://jira.onap.org/browse/OOM-743>`_] - Replace deprecated MSO Helm Chart with Standardized SO Helm Chart
-* [`OOM-744 <https://jira.onap.org/browse/OOM-744>`_] - Add Standardized Configuration to MULTICLOUD
-* [`OOM-746 <https://jira.onap.org/browse/OOM-746>`_] - Add Standardized Configuration to PORTAL
-* [`OOM-747 <https://jira.onap.org/browse/OOM-747>`_] - Add Standardized Configuration to SDC
-* [`OOM-748 <https://jira.onap.org/browse/OOM-748>`_] - Add Standardized Configuration to SDNC
-* [`OOM-749 <https://jira.onap.org/browse/OOM-749>`_] - Add Standardized Configuration to UUI
-* [`OOM-750 <https://jira.onap.org/browse/OOM-750>`_] - Add Standardized Configuration to VFC
-* [`OOM-751 <https://jira.onap.org/browse/OOM-751>`_] - Add Standardized Configuration to VNFSDK
-* [`OOM-758 <https://jira.onap.org/browse/OOM-758>`_] - Common Mariadb Galera Helm Chart to be reused by many applications
-* [`OOM-771 <https://jira.onap.org/browse/OOM-771>`_] - OOM - update master with new policy db deployment
-* [`OOM-777 <https://jira.onap.org/browse/OOM-777>`_] - Add Standardized Configuration Helm Starter Chart
-* [`OOM-779 <https://jira.onap.org/browse/OOM-779>`_] - OOM APPC ODL (MDSAL) persistent storage
-* [`OOM-780 <https://jira.onap.org/browse/OOM-780>`_] - Update MSO to latest working version.
-* [`OOM-786 <https://jira.onap.org/browse/OOM-786>`_] - Re-add support for multiple instances of ONAP
-* [`OOM-788 <https://jira.onap.org/browse/OOM-788>`_] - Abstract docker secrets
-* [`OOM-789 <https://jira.onap.org/browse/OOM-789>`_] - Abstract cluster role binding
-* [`OOM-811 <https://jira.onap.org/browse/OOM-811>`_] - Make kube2msb use secret instead of passing token as environment variable
-* [`OOM-822 <https://jira.onap.org/browse/OOM-822>`_] - Update Documentation for the Beijing Release
-* [`OOM-823 <https://jira.onap.org/browse/OOM-823>`_] - Add CDT image to APPC chart
-* [`OOM-827 <https://jira.onap.org/browse/OOM-827>`_] - Add quick start documentation README
-* [`OOM-828 <https://jira.onap.org/browse/OOM-828>`_] - Remove oneclick scripts
-* [`OOM-857 <https://jira.onap.org/browse/OOM-857>`_] - kube2msb fails to start
-* [`OOM-914 <https://jira.onap.org/browse/OOM-914>`_] - Add LOG component robot healthcheck
-* [`OOM-960 <https://jira.onap.org/browse/OOM-960>`_] - OOM Healthcheck lockdown - currently 32/39 : 20180421
-* [`OOM-979 <https://jira.onap.org/browse/OOM-979>`_] - Enhance OOM TOSCA solution to support standardized Helm Chart
-* [`OOM-1006 <https://jira.onap.org/browse/OOM-1006>`_] - VNFSDK healthcheck fails
-* [`OOM-1073 <https://jira.onap.org/browse/OOM-1073>`_] - Change the Repository location in the image oomk8s/config-init:2.0.0-SNAPSHOT
-* [`OOM-1078 <https://jira.onap.org/browse/OOM-1078>`_] - Update Kubectl, docker, helm version
+* [`OOM-11 <https://lf-onap.atlassian.net/browse/OOM-11>`_] - Add AAF containers to ONAP Kubernetes
+* [`OOM-13 <https://lf-onap.atlassian.net/browse/OOM-13>`_] - Add CLI containers to ONAP Kubernetes
+* [`OOM-15 <https://lf-onap.atlassian.net/browse/OOM-15>`_] - Add DMAAP containers to ONAP Kubernetes
+* [`OOM-20 <https://lf-onap.atlassian.net/browse/OOM-20>`_] - State Monitoring: MSO/mso
+* [`OOM-21 <https://lf-onap.atlassian.net/browse/OOM-21>`_] - State Monitoring: A&AI/aai-service
+* [`OOM-22 <https://lf-onap.atlassian.net/browse/OOM-22>`_] - State Monitoring: SDNC/sdc-be
+* [`OOM-24 <https://lf-onap.atlassian.net/browse/OOM-24>`_] - State Monitoring: message-router
+* [`OOM-25 <https://lf-onap.atlassian.net/browse/OOM-25>`_] - State Monitoring: MSB
+* [`OOM-29 <https://lf-onap.atlassian.net/browse/OOM-29>`_] - State Monitoring: VID
+* [`OOM-31 <https://lf-onap.atlassian.net/browse/OOM-31>`_] - State Monitoring: APPC/dbhost
+* [`OOM-32 <https://lf-onap.atlassian.net/browse/OOM-32>`_] - State Monitoring: VFC
+* [`OOM-33 <https://lf-onap.atlassian.net/browse/OOM-33>`_] - State Monitoring: Multi-VIM
+* [`OOM-34 <https://lf-onap.atlassian.net/browse/OOM-34>`_] - Auto-Restart on failure: ...
+* [`OOM-35 <https://lf-onap.atlassian.net/browse/OOM-35>`_] - State Monitoring: A&AI/hbase
+* [`OOM-36 <https://lf-onap.atlassian.net/browse/OOM-36>`_] - State Monitoring: A&AI/model-loader-service
+* [`OOM-37 <https://lf-onap.atlassian.net/browse/OOM-37>`_] - State Monitoring: APPC/dgbuilder
+* [`OOM-38 <https://lf-onap.atlassian.net/browse/OOM-38>`_] - State Monitoring: APPC/sdnctldb01
+* [`OOM-39 <https://lf-onap.atlassian.net/browse/OOM-39>`_] - State Monitoring: APPC/sdnctldb02
+* [`OOM-40 <https://lf-onap.atlassian.net/browse/OOM-40>`_] - State Monitoring: APPC/sdnhost
+* [`OOM-41 <https://lf-onap.atlassian.net/browse/OOM-41>`_] - State Monitoring: MSO/mariadb
+* [`OOM-42 <https://lf-onap.atlassian.net/browse/OOM-42>`_] - State Monitoring: SDNC/dbhost
+* [`OOM-43 <https://lf-onap.atlassian.net/browse/OOM-43>`_] - State Monitoring: SDNC/sdnc-dgbuilder
+* [`OOM-44 <https://lf-onap.atlassian.net/browse/OOM-44>`_] - State Monitoring: SDNC/sdnc-portal
+* [`OOM-45 <https://lf-onap.atlassian.net/browse/OOM-45>`_] - State Monitoring: SDNC/sdnctldb01
+* [`OOM-51 <https://lf-onap.atlassian.net/browse/OOM-51>`_] - OOM ONAP Configuration Management - Externalize hardwired values
+* [`OOM-52 <https://lf-onap.atlassian.net/browse/OOM-52>`_] - OOM ONAP Configuration Management - Parameterization of docker images
+* [`OOM-53 <https://lf-onap.atlassian.net/browse/OOM-53>`_] - OOM ONAP Configuration Management - Parameterization for Sizing
+* [`OOM-63 <https://lf-onap.atlassian.net/browse/OOM-63>`_] - Kubernetes cluster created by TOSCA description
+* [`OOM-85 <https://lf-onap.atlassian.net/browse/OOM-85>`_] - Test the code in the "Lab" project environment
+* [`OOM-86 <https://lf-onap.atlassian.net/browse/OOM-86>`_] - Monitoring the health status of ONAP components
+* [`OOM-87 <https://lf-onap.atlassian.net/browse/OOM-87>`_] - Configure TOSCA description via dashboard
+* [`OOM-88 <https://lf-onap.atlassian.net/browse/OOM-88>`_] - Deploy Holmes on K8S cluster by TOSCA description
+* [`OOM-89 <https://lf-onap.atlassian.net/browse/OOM-89>`_] - Deploy CLAMP on K8S cluster by TOSCA description
+* [`OOM-91 <https://lf-onap.atlassian.net/browse/OOM-91>`_] - Deploy MSB on K8S cluster by TOSCA description
+* [`OOM-92 <https://lf-onap.atlassian.net/browse/OOM-92>`_] - Deploy AAF on K8S cluster by TOSCA description
+* [`OOM-93 <https://lf-onap.atlassian.net/browse/OOM-93>`_] - Deploy VF-C on K8S cluster by TOSCA description
+* [`OOM-94 <https://lf-onap.atlassian.net/browse/OOM-94>`_] - Deploy Multi-VIM on K8S cluster by TOSCA description
+* [`OOM-95 <https://lf-onap.atlassian.net/browse/OOM-95>`_] - Deploy DCAEGen2 on K8S cluster by TOSCA description
+* [`OOM-96 <https://lf-onap.atlassian.net/browse/OOM-96>`_] - Deploy AAI on K8S cluster by TOSCA description
+* [`OOM-97 <https://lf-onap.atlassian.net/browse/OOM-97>`_] - Deploy APPC on K8S cluster by TOSCA description
+* [`OOM-98 <https://lf-onap.atlassian.net/browse/OOM-98>`_] - Deploy MSO on K8S cluster by TOSCA description
+* [`OOM-99 <https://lf-onap.atlassian.net/browse/OOM-99>`_] - Deploy Policy on K8S cluster by TOSCA description
+* [`OOM-100 <https://lf-onap.atlassian.net/browse/OOM-100>`_] - Deploy SDC on K8S cluster by TOSCA description
+* [`OOM-102 <https://lf-onap.atlassian.net/browse/OOM-102>`_] - Deploy VID on K8S cluster by TOSCA description
+* [`OOM-110 <https://lf-onap.atlassian.net/browse/OOM-110>`_] - OOM ONAP Logging - Elastic Stack components deployment
+* [`OOM-111 <https://lf-onap.atlassian.net/browse/OOM-111>`_] - OOM ONAP Logging - FileBeat deployment aside ONAP components
+* [`OOM-112 <https://lf-onap.atlassian.net/browse/OOM-112>`_] - OOM ONAP Logging - Configuration of all ONAP components to emit canonical logs
+* [`OOM-116 <https://lf-onap.atlassian.net/browse/OOM-116>`_] - ignore intellj files
+* [`OOM-145 <https://lf-onap.atlassian.net/browse/OOM-145>`_] - update directory path from dockerdata-nfs to configured directory name (make it configurable)
+* [`OOM-235 <https://lf-onap.atlassian.net/browse/OOM-235>`_] - Service endpoint annotation for Usecase UI
+* [`OOM-242 <https://lf-onap.atlassian.net/browse/OOM-242>`_] - Modify DCAE seed for Helm
+* [`OOM-262 <https://lf-onap.atlassian.net/browse/OOM-262>`_] - Remove "oneclick" kubectl scripts.
+* [`OOM-265 <https://lf-onap.atlassian.net/browse/OOM-265>`_] - Top level helm chart for ONAP
+* [`OOM-268 <https://lf-onap.atlassian.net/browse/OOM-268>`_] - Persist and externalize database directories via persistent volumes
+* [`OOM-271 <https://lf-onap.atlassian.net/browse/OOM-271>`_] - Copy app config files from source
+* [`OOM-272 <https://lf-onap.atlassian.net/browse/OOM-272>`_] - Set application environment variables from source
+* [`OOM-277 <https://lf-onap.atlassian.net/browse/OOM-277>`_] - add automatic ONAP config parameter substitution
+* [`OOM-280 <https://lf-onap.atlassian.net/browse/OOM-280>`_] - MSB automatically re-synch service data on restart.
+* [`OOM-292 <https://lf-onap.atlassian.net/browse/OOM-292>`_] - Expose LOG Volume via /dockerdata-nfs
+* [`OOM-293 <https://lf-onap.atlassian.net/browse/OOM-293>`_] - OOM ONAP Configuration Management - Handling of Secrets
+* [`OOM-298 <https://lf-onap.atlassian.net/browse/OOM-298>`_] - Provide script to cleanup configuration data created by createConfig.sh
+* [`OOM-322 <https://lf-onap.atlassian.net/browse/OOM-322>`_] - Clean-up config files that are generated at system startup
+* [`OOM-341 <https://lf-onap.atlassian.net/browse/OOM-341>`_] - Provide an example of a partial deployment of ONAP components (e.g. no VFC)
+* [`OOM-342 <https://lf-onap.atlassian.net/browse/OOM-342>`_] - Add pointer to Wiki page on the readme file.
+* [`OOM-344 <https://lf-onap.atlassian.net/browse/OOM-344>`_] - Break the configuration tarball per appplication
+* [`OOM-345 <https://lf-onap.atlassian.net/browse/OOM-345>`_] - Re-validate # of containers and configuration for DCAEgen2
+* [`OOM-356 <https://lf-onap.atlassian.net/browse/OOM-356>`_] - Add 'Usecase UI' containers to ONAP Kubernetes
+* [`OOM-359 <https://lf-onap.atlassian.net/browse/OOM-359>`_] - SDC logback chef failure
+* [`OOM-375 <https://lf-onap.atlassian.net/browse/OOM-375>`_] - F2F: ONAP/OOM for Developers
+* [`OOM-382 <https://lf-onap.atlassian.net/browse/OOM-382>`_] - Robot Version 1.1 OpenO tests
+* [`OOM-406 <https://lf-onap.atlassian.net/browse/OOM-406>`_] - In Kubernetes 1.8, the annotations are no longer supported and must be converted to the PodSpec field.
+* [`OOM-457 <https://lf-onap.atlassian.net/browse/OOM-457>`_] - In Kubernetes 1.8, init-container annotations to be converted to PodSpec field for aaf, clamp and vfc
+* [`OOM-460 <https://lf-onap.atlassian.net/browse/OOM-460>`_] - Segregating configuration of ONAP components
+* [`OOM-476 <https://lf-onap.atlassian.net/browse/OOM-476>`_] - Parameterize values.yaml docker image repos into global config variables
+* [`OOM-528 <https://lf-onap.atlassian.net/browse/OOM-528>`_] - Confirm k8s context with a prompt for deleteAll.bash
+* [`OOM-534 <https://lf-onap.atlassian.net/browse/OOM-534>`_] - Need to provide support for creating different sized OOM deployments
+* [`OOM-546 <https://lf-onap.atlassian.net/browse/OOM-546>`_] - Provide option to collect ONAP env details for issue investigations
+* [`OOM-569 <https://lf-onap.atlassian.net/browse/OOM-569>`_] - Investigate containerizing Cloudify Manager
+* [`OOM-579 <https://lf-onap.atlassian.net/browse/OOM-579>`_] - Document a Cloudify deployment of OOM Beijing
+* [`OOM-633 <https://lf-onap.atlassian.net/browse/OOM-633>`_] - Provide direct access to ONAP Portal without the need to use VNC
+* [`OOM-677 <https://lf-onap.atlassian.net/browse/OOM-677>`_] - Update all source code files with the Apache 2 License header
+* [`OOM-678 <https://lf-onap.atlassian.net/browse/OOM-678>`_] - Enforce MSB dockers dependencies using init-container
+* [`OOM-681 <https://lf-onap.atlassian.net/browse/OOM-681>`_] - updating docker images/components to latest code
+* [`OOM-682 <https://lf-onap.atlassian.net/browse/OOM-682>`_] - deployment of sdc workflow designer
+* [`OOM-695 <https://lf-onap.atlassian.net/browse/OOM-695>`_] - Improve Readiness-check prob
+* [`OOM-722 <https://lf-onap.atlassian.net/browse/OOM-722>`_] - OOM - Run all ONAP components in one namespace
+* [`OOM-725 <https://lf-onap.atlassian.net/browse/OOM-725>`_] - Use Blueprint to install Helm and k8s dashboard while creating k8s cluster
+* [`OOM-727 <https://lf-onap.atlassian.net/browse/OOM-727>`_] - Add Standardized Configuration to SO
+* [`OOM-728 <https://lf-onap.atlassian.net/browse/OOM-728>`_] - Add Standardized Configuration to ROBOT
+* [`OOM-729 <https://lf-onap.atlassian.net/browse/OOM-729>`_] - Add Standardized Configuration to VID
+* [`OOM-730 <https://lf-onap.atlassian.net/browse/OOM-730>`_] - Add Standardized Configuration to Consul
+* [`OOM-731 <https://lf-onap.atlassian.net/browse/OOM-731>`_] - Add Standardized Configuration to DMaaP Message Router
+* [`OOM-732 <https://lf-onap.atlassian.net/browse/OOM-732>`_] - Add Standardized Configuration to AAF
+* [`OOM-733 <https://lf-onap.atlassian.net/browse/OOM-733>`_] - Add Standardized Configuration to APPC
+* [`OOM-734 <https://lf-onap.atlassian.net/browse/OOM-734>`_] - Add Standardized Configuration to AAI
+* [`OOM-735 <https://lf-onap.atlassian.net/browse/OOM-735>`_] - Add Standardized Configuration to CLAMP
+* [`OOM-736 <https://lf-onap.atlassian.net/browse/OOM-736>`_] - Add Standardized Configuration to CLI
+* [`OOM-737 <https://lf-onap.atlassian.net/browse/OOM-737>`_] - Add Standardized Configuration to DCAEGEN2
+* [`OOM-738 <https://lf-onap.atlassian.net/browse/OOM-738>`_] - Add Standardized Configuration to ESR
+* [`OOM-739 <https://lf-onap.atlassian.net/browse/OOM-739>`_] - Add Standardized Configuration to KUBE2MSB
+* [`OOM-740 <https://lf-onap.atlassian.net/browse/OOM-740>`_] - Add Standardized Configuration to LOG
+* [`OOM-742 <https://lf-onap.atlassian.net/browse/OOM-742>`_] - Add Standardized Configuration to MSB
+* [`OOM-743 <https://lf-onap.atlassian.net/browse/OOM-743>`_] - Replace deprecated MSO Helm Chart with Standardized SO Helm Chart
+* [`OOM-744 <https://lf-onap.atlassian.net/browse/OOM-744>`_] - Add Standardized Configuration to MULTICLOUD
+* [`OOM-746 <https://lf-onap.atlassian.net/browse/OOM-746>`_] - Add Standardized Configuration to PORTAL
+* [`OOM-747 <https://lf-onap.atlassian.net/browse/OOM-747>`_] - Add Standardized Configuration to SDC
+* [`OOM-748 <https://lf-onap.atlassian.net/browse/OOM-748>`_] - Add Standardized Configuration to SDNC
+* [`OOM-749 <https://lf-onap.atlassian.net/browse/OOM-749>`_] - Add Standardized Configuration to UUI
+* [`OOM-750 <https://lf-onap.atlassian.net/browse/OOM-750>`_] - Add Standardized Configuration to VFC
+* [`OOM-751 <https://lf-onap.atlassian.net/browse/OOM-751>`_] - Add Standardized Configuration to VNFSDK
+* [`OOM-758 <https://lf-onap.atlassian.net/browse/OOM-758>`_] - Common Mariadb Galera Helm Chart to be reused by many applications
+* [`OOM-771 <https://lf-onap.atlassian.net/browse/OOM-771>`_] - OOM - update master with new policy db deployment
+* [`OOM-777 <https://lf-onap.atlassian.net/browse/OOM-777>`_] - Add Standardized Configuration Helm Starter Chart
+* [`OOM-779 <https://lf-onap.atlassian.net/browse/OOM-779>`_] - OOM APPC ODL (MDSAL) persistent storage
+* [`OOM-780 <https://lf-onap.atlassian.net/browse/OOM-780>`_] - Update MSO to latest working version.
+* [`OOM-786 <https://lf-onap.atlassian.net/browse/OOM-786>`_] - Re-add support for multiple instances of ONAP
+* [`OOM-788 <https://lf-onap.atlassian.net/browse/OOM-788>`_] - Abstract docker secrets
+* [`OOM-789 <https://lf-onap.atlassian.net/browse/OOM-789>`_] - Abstract cluster role binding
+* [`OOM-811 <https://lf-onap.atlassian.net/browse/OOM-811>`_] - Make kube2msb use secret instead of passing token as environment variable
+* [`OOM-822 <https://lf-onap.atlassian.net/browse/OOM-822>`_] - Update Documentation for the Beijing Release
+* [`OOM-823 <https://lf-onap.atlassian.net/browse/OOM-823>`_] - Add CDT image to APPC chart
+* [`OOM-827 <https://lf-onap.atlassian.net/browse/OOM-827>`_] - Add quick start documentation README
+* [`OOM-828 <https://lf-onap.atlassian.net/browse/OOM-828>`_] - Remove oneclick scripts
+* [`OOM-857 <https://lf-onap.atlassian.net/browse/OOM-857>`_] - kube2msb fails to start
+* [`OOM-914 <https://lf-onap.atlassian.net/browse/OOM-914>`_] - Add LOG component robot healthcheck
+* [`OOM-960 <https://lf-onap.atlassian.net/browse/OOM-960>`_] - OOM Healthcheck lockdown - currently 32/39 : 20180421
+* [`OOM-979 <https://lf-onap.atlassian.net/browse/OOM-979>`_] - Enhance OOM TOSCA solution to support standardized Helm Chart
+* [`OOM-1006 <https://lf-onap.atlassian.net/browse/OOM-1006>`_] - VNFSDK healthcheck fails
+* [`OOM-1073 <https://lf-onap.atlassian.net/browse/OOM-1073>`_] - Change the Repository location in the image oomk8s/config-init:2.0.0-SNAPSHOT
+* [`OOM-1078 <https://lf-onap.atlassian.net/browse/OOM-1078>`_] - Update Kubectl, docker, helm version
 
 Task
 ****
 
-* [`OOM-57 <https://jira.onap.org/browse/OOM-57>`_] - Agree on configuration contract/YAML with each of the project teams
-* [`OOM-105 <https://jira.onap.org/browse/OOM-105>`_] - TOSCA based orchestration demo
-* [`OOM-257 <https://jira.onap.org/browse/OOM-257>`_] - DevOps: OOM config reset procedure for new /dockerdata-nfs content
-* [`OOM-305 <https://jira.onap.org/browse/OOM-305>`_] - Rename MSO to SO in OOM
-* [`OOM-332 <https://jira.onap.org/browse/OOM-332>`_] - Add AAI filebeat container - blocked by LOG-67
-* [`OOM-428 <https://jira.onap.org/browse/OOM-428>`_] - Add log container healthcheck to mark failed creations - see OOM-427
-* [`OOM-429 <https://jira.onap.org/browse/OOM-429>`_] - DOC: Document HELM server version 2.7.2 required for tpl usage
-* [`OOM-489 <https://jira.onap.org/browse/OOM-489>`_] - Update values.yaml files for tag name changes for docker images and versions.
-* [`OOM-543 <https://jira.onap.org/browse/OOM-543>`_] - SDNC adjust docker pullPolicy to IfNotPresent to speed up initial deployment slowdown introduced by SDNC-163
-* [`OOM-604 <https://jira.onap.org/browse/OOM-604>`_] - Update OOM and HEAT AAI sparky master from v1.1.0 to v1.1.1 - match INT-288
-* [`OOM-614 <https://jira.onap.org/browse/OOM-614>`_] - SDC, SDNC, AAI Healthcheck failures last 12 hours 20180124:1100EST
-* [`OOM-624 <https://jira.onap.org/browse/OOM-624>`_] - CII security badging: cleartext password for keystone and docker repo creds
-* [`OOM-726 <https://jira.onap.org/browse/OOM-726>`_] - Mirror AAI docker version changes into OOM from AAI-791
-* [`OOM-772 <https://jira.onap.org/browse/OOM-772>`_] - Remove old DCAE from Release
-* [`OOM-801 <https://jira.onap.org/browse/OOM-801>`_] - Policy docker images rename - key off new name in POLICY-674
-* [`OOM-810 <https://jira.onap.org/browse/OOM-810>`_] - Improve emsdriver code
-* [`OOM-819 <https://jira.onap.org/browse/OOM-819>`_] - expose log/logstash 5044 as nodeport for external log producers outside of the kubernetes cluster
-* [`OOM-820 <https://jira.onap.org/browse/OOM-820>`_] - Bypass vnc-portal for ONAP portal access
-* [`OOM-943 <https://jira.onap.org/browse/OOM-943>`_] - Upgrade prepull_docker.sh to work with new helm based master refactor - post OOM-328
-* [`OOM-947 <https://jira.onap.org/browse/OOM-947>`_] - Update AAI to latest images
-* [`OOM-975 <https://jira.onap.org/browse/OOM-975>`_] - Notes are missing in multicloud
-* [`OOM-1031 <https://jira.onap.org/browse/OOM-1031>`_] - Config Changes for consul to make vid, so, log health checks pass
-* [`OOM-1032 <https://jira.onap.org/browse/OOM-1032>`_] - Making consul Stateful
-* [`OOM-1122 <https://jira.onap.org/browse/OOM-1122>`_] - Update APPC OOM chart to use Beijing release artifacts
+* [`OOM-57 <https://lf-onap.atlassian.net/browse/OOM-57>`_] - Agree on configuration contract/YAML with each of the project teams
+* [`OOM-105 <https://lf-onap.atlassian.net/browse/OOM-105>`_] - TOSCA based orchestration demo
+* [`OOM-257 <https://lf-onap.atlassian.net/browse/OOM-257>`_] - DevOps: OOM config reset procedure for new /dockerdata-nfs content
+* [`OOM-305 <https://lf-onap.atlassian.net/browse/OOM-305>`_] - Rename MSO to SO in OOM
+* [`OOM-332 <https://lf-onap.atlassian.net/browse/OOM-332>`_] - Add AAI filebeat container - blocked by LOG-67
+* [`OOM-428 <https://lf-onap.atlassian.net/browse/OOM-428>`_] - Add log container healthcheck to mark failed creations - see OOM-427
+* [`OOM-429 <https://lf-onap.atlassian.net/browse/OOM-429>`_] - DOC: Document HELM server version 2.7.2 required for tpl usage
+* [`OOM-489 <https://lf-onap.atlassian.net/browse/OOM-489>`_] - Update values.yaml files for tag name changes for docker images and versions.
+* [`OOM-543 <https://lf-onap.atlassian.net/browse/OOM-543>`_] - SDNC adjust docker pullPolicy to IfNotPresent to speed up initial deployment slowdown introduced by SDNC-163
+* [`OOM-604 <https://lf-onap.atlassian.net/browse/OOM-604>`_] - Update OOM and HEAT AAI sparky master from v1.1.0 to v1.1.1 - match INT-288
+* [`OOM-614 <https://lf-onap.atlassian.net/browse/OOM-614>`_] - SDC, SDNC, AAI Healthcheck failures last 12 hours 20180124:1100EST
+* [`OOM-624 <https://lf-onap.atlassian.net/browse/OOM-624>`_] - CII security badging: cleartext password for keystone and docker repo creds
+* [`OOM-726 <https://lf-onap.atlassian.net/browse/OOM-726>`_] - Mirror AAI docker version changes into OOM from AAI-791
+* [`OOM-772 <https://lf-onap.atlassian.net/browse/OOM-772>`_] - Remove old DCAE from Release
+* [`OOM-801 <https://lf-onap.atlassian.net/browse/OOM-801>`_] - Policy docker images rename - key off new name in POLICY-674
+* [`OOM-810 <https://lf-onap.atlassian.net/browse/OOM-810>`_] - Improve emsdriver code
+* [`OOM-819 <https://lf-onap.atlassian.net/browse/OOM-819>`_] - expose log/logstash 5044 as nodeport for external log producers outside of the kubernetes cluster
+* [`OOM-820 <https://lf-onap.atlassian.net/browse/OOM-820>`_] - Bypass vnc-portal for ONAP portal access
+* [`OOM-943 <https://lf-onap.atlassian.net/browse/OOM-943>`_] - Upgrade prepull_docker.sh to work with new helm based master refactor - post OOM-328
+* [`OOM-947 <https://lf-onap.atlassian.net/browse/OOM-947>`_] - Update AAI to latest images
+* [`OOM-975 <https://lf-onap.atlassian.net/browse/OOM-975>`_] - Notes are missing in multicloud
+* [`OOM-1031 <https://lf-onap.atlassian.net/browse/OOM-1031>`_] - Config Changes for consul to make vid, so, log health checks pass
+* [`OOM-1032 <https://lf-onap.atlassian.net/browse/OOM-1032>`_] - Making consul Stateful
+* [`OOM-1122 <https://lf-onap.atlassian.net/browse/OOM-1122>`_] - Update APPC OOM chart to use Beijing release artifacts
 
 Bug
 ***
 
-* [`OOM-4 <https://jira.onap.org/browse/OOM-4>`_] - deleteAll.bash fails to properly delete services and ports
-* [`OOM-153 <https://jira.onap.org/browse/OOM-153>`_] - test - Sample Bug
-* [`OOM-212 <https://jira.onap.org/browse/OOM-212>`_] - deleteAll script does not have an option to delete the services
-* [`OOM-215 <https://jira.onap.org/browse/OOM-215>`_] - configure_app for helm apps is not correct
-* [`OOM-218 <https://jira.onap.org/browse/OOM-218>`_] - createConfig.sh needs a chmod 755 in release-1.0.0 only
-* [`OOM-239 <https://jira.onap.org/browse/OOM-239>`_] - mso.tar created in dockerdatanfs
-* [`OOM-258 <https://jira.onap.org/browse/OOM-258>`_] - AAI logs are not being written outside the pods
-* [`OOM-282 <https://jira.onap.org/browse/OOM-282>`_] - vnc-portal requires /etc/hosts url fix for SDC sdc.ui should be sdc.api
-* [`OOM-283 <https://jira.onap.org/browse/OOM-283>`_] - No longer able to deploy instances in specified namespace
-* [`OOM-290 <https://jira.onap.org/browse/OOM-290>`_] - config_init pod fails when /dockerdata-nfs is nfs-mounted
-* [`OOM-300 <https://jira.onap.org/browse/OOM-300>`_] - cat: /config-init/onap/mso/mso/encryption.key: No such file or directory
-* [`OOM-333 <https://jira.onap.org/browse/OOM-333>`_] - vfc-workflow fails [VFC BUG] - fixed - 20180117 vfc-ztevnfmdriver has docker pull issue
-* [`OOM-334 <https://jira.onap.org/browse/OOM-334>`_] - Change kubernetes startup user
-* [`OOM-351 <https://jira.onap.org/browse/OOM-351>`_] - Apply standard convention across the "template deployment YML" file
-* [`OOM-352 <https://jira.onap.org/browse/OOM-352>`_] - failed to start VFC containers
-* [`OOM-363 <https://jira.onap.org/browse/OOM-363>`_] - DCAE tests NOK with Robot E2E tests
-* [`OOM-366 <https://jira.onap.org/browse/OOM-366>`_] - certificates in consul agent config are not in the right directory
-* [`OOM-389 <https://jira.onap.org/browse/OOM-389>`_] - sdc-be and sdc-fe do not initialize correctly on latest master
-* [`OOM-409 <https://jira.onap.org/browse/OOM-409>`_] - Update Vid yaml file to point to the ONAPPORTAL URL
-* [`OOM-413 <https://jira.onap.org/browse/OOM-413>`_] - In portal VNC pod refresh /etc/hosts entries
-* [`OOM-414 <https://jira.onap.org/browse/OOM-414>`_] - MSB Healtcheck failure on $*_ENDPOINT variables
-* [`OOM-424 <https://jira.onap.org/browse/OOM-424>`_] - DCAE installation is not possible today
-* [`OOM-430 <https://jira.onap.org/browse/OOM-430>`_] - Portal healthcheck passing on vnc-portal down
-* [`OOM-467 <https://jira.onap.org/browse/OOM-467>`_] - Optimize config-init process
-* [`OOM-493 <https://jira.onap.org/browse/OOM-493>`_] - Kubernetes infrastructure for ESR
-* [`OOM-496 <https://jira.onap.org/browse/OOM-496>`_] - Readiness check is marking full availability of some components like SDC and SDNC before they would pass healthcheck
-* [`OOM-514 <https://jira.onap.org/browse/OOM-514>`_] - Readiness prob fails sometimes even though the relevant pods are running
-* [`OOM-539 <https://jira.onap.org/browse/OOM-539>`_] - Kube2MSB registrator doesn't support https REST service registration
-* [`OOM-570 <https://jira.onap.org/browse/OOM-570>`_] - Wrong value is assigned to kube2msb AUTH_TOKEN environment variable
-* [`OOM-574 <https://jira.onap.org/browse/OOM-574>`_] - OOM configuration for robot does not copy heat templatese in dockerdata-nfs
-* [`OOM-577 <https://jira.onap.org/browse/OOM-577>`_] - Incorrect evaluation of bash command in yaml template file (portal-vnc-dep.yaml)
-* [`OOM-578 <https://jira.onap.org/browse/OOM-578>`_] - Hard coded token in oom/kubernetes/kube2msb/values.yaml file
-* [`OOM-589 <https://jira.onap.org/browse/OOM-589>`_] - Can not acces CLI in vnc-portal
-* [`OOM-598 <https://jira.onap.org/browse/OOM-598>`_] - createAll.bash base64: invalid option -- d
-* [`OOM-600 <https://jira.onap.org/browse/OOM-600>`_] - Unable to open CLI by clicking CLI application icon
-* [`OOM-630 <https://jira.onap.org/browse/OOM-630>`_] - Red herring config pod deletion error on deleteAll - after we started deleting onap-config automatically
-* [`OOM-645 <https://jira.onap.org/browse/OOM-645>`_] - Kube2MSB RBAC security issues
-* [`OOM-653 <https://jira.onap.org/browse/OOM-653>`_] - sdnc-dbhost-0 deletion failure
-* [`OOM-657 <https://jira.onap.org/browse/OOM-657>`_] - Look into DCAEGEN2 failure on duplicate servicePort
-* [`OOM-672 <https://jira.onap.org/browse/OOM-672>`_] - hardcoded clusterIP for aai breaks auto installation
-* [`OOM-680 <https://jira.onap.org/browse/OOM-680>`_] - ONAP Failure install with kubernetes 1.8+
-* [`OOM-687 <https://jira.onap.org/browse/OOM-687>`_] - Typo in README_HELM
-* [`OOM-724 <https://jira.onap.org/browse/OOM-724>`_] - License Update in TOSCA
-* [`OOM-767 <https://jira.onap.org/browse/OOM-767>`_] - data-router-logs and elasticsearch-data mapped to same folder
-* [`OOM-768 <https://jira.onap.org/browse/OOM-768>`_] - Hardcoded onap in config files
-* [`OOM-769 <https://jira.onap.org/browse/OOM-769>`_] - sdc-es data mapping in sdc-be and sdc-fe redundant
-* [`OOM-783 <https://jira.onap.org/browse/OOM-783>`_] - UUI health check is failing
-* [`OOM-784 <https://jira.onap.org/browse/OOM-784>`_] - make new so chart one namespace compatible
-* [`OOM-791 <https://jira.onap.org/browse/OOM-791>`_] - After OOM-722 merge - docker pulls are timing out - switch to pullPolicy IfNotPresent
-* [`OOM-794 <https://jira.onap.org/browse/OOM-794>`_] - demo-k8s.sh name not modified in the usage string
-* [`OOM-795 <https://jira.onap.org/browse/OOM-795>`_] - HEAT templates for robot instantiateVFW missing
-* [`OOM-796 <https://jira.onap.org/browse/OOM-796>`_] - robot asdc/sdngc interface in synch for Master
-* [`OOM-797 <https://jira.onap.org/browse/OOM-797>`_] - GLOBAL_INJECTED_SCRIPT_VERSION missing from vm_properties.py
-* [`OOM-804 <https://jira.onap.org/browse/OOM-804>`_] - VFC vfc-ztevnfmdriver container failure
-* [`OOM-815 <https://jira.onap.org/browse/OOM-815>`_] - OOM Robot container helm failure after OOM-728 35909 merge
-* [`OOM-829 <https://jira.onap.org/browse/OOM-829>`_] - Can not make multicloud helm chart
-* [`OOM-830 <https://jira.onap.org/browse/OOM-830>`_] - Fix OOM build dependencies
-* [`OOM-835 <https://jira.onap.org/browse/OOM-835>`_] - CLAMP mariadb pv is pointing to a wrong location
-* [`OOM-836 <https://jira.onap.org/browse/OOM-836>`_] - champ and gizmo yaml validation issue
-* [`OOM-845 <https://jira.onap.org/browse/OOM-845>`_] - Global repository should not be set by default
-* [`OOM-846 <https://jira.onap.org/browse/OOM-846>`_] - Add liveness enabled fix to helm starter
-* [`OOM-847 <https://jira.onap.org/browse/OOM-847>`_] - log-elasticsearch external ports are not externally accessible
-* [`OOM-848 <https://jira.onap.org/browse/OOM-848>`_] - log-logstash logstash pipeline fails to start after oom standard config changes
-* [`OOM-851 <https://jira.onap.org/browse/OOM-851>`_] - sdc chart validation error
-* [`OOM-856 <https://jira.onap.org/browse/OOM-856>`_] - appc mysql fails deployment
-* [`OOM-858 <https://jira.onap.org/browse/OOM-858>`_] - Fail to deploy onap chart due to config map size
-* [`OOM-870 <https://jira.onap.org/browse/OOM-870>`_] - Missing CLAMP configuration
-* [`OOM-871 <https://jira.onap.org/browse/OOM-871>`_] - log kibana container fails to start after oom standard config changes
-* [`OOM-872 <https://jira.onap.org/browse/OOM-872>`_] - APPC-helm Still need config pod
-* [`OOM-873 <https://jira.onap.org/browse/OOM-873>`_] - OOM doc typo
-* [`OOM-874 <https://jira.onap.org/browse/OOM-874>`_] - Inconsistent repository references in ONAP charts
-* [`OOM-875 <https://jira.onap.org/browse/OOM-875>`_] - Cannot retrieve robot logs
-* [`OOM-876 <https://jira.onap.org/browse/OOM-876>`_] - Some containers ignore the repository setting
-* [`OOM-878 <https://jira.onap.org/browse/OOM-878>`_] - MySQL slave nodes don't deploy when mysql.replicaCount > 1
-* [`OOM-881 <https://jira.onap.org/browse/OOM-881>`_] - SDN-C Portal pod fails to come up
-* [`OOM-882 <https://jira.onap.org/browse/OOM-882>`_] - Some SDNC service names should be prefixed with the helm release name
-* [`OOM-884 <https://jira.onap.org/browse/OOM-884>`_] - VID-VID mariadb pv is pointing to a wrong location
-* [`OOM-885 <https://jira.onap.org/browse/OOM-885>`_] - Beijing oom component log messages missing in Elasticsearch
-* [`OOM-886 <https://jira.onap.org/browse/OOM-886>`_] - kube2msb not starting up
-* [`OOM-887 <https://jira.onap.org/browse/OOM-887>`_] - SDN-C db schema and sdnctl db user not reliably being created
-* [`OOM-888 <https://jira.onap.org/browse/OOM-888>`_] - aaf-cs mapping wrong
-* [`OOM-889 <https://jira.onap.org/browse/OOM-889>`_] - restore pv&pvc for mysql when NFS provisioner is disabled
-* [`OOM-898 <https://jira.onap.org/browse/OOM-898>`_] - Multicloud-framework config file is not volume-mounted
-* [`OOM-899 <https://jira.onap.org/browse/OOM-899>`_] - SDNC main pod does not come up
-* [`OOM-900 <https://jira.onap.org/browse/OOM-900>`_] - portal-cassandra missing pv and pvc
-* [`OOM-904 <https://jira.onap.org/browse/OOM-904>`_] - OOM problems bringing up components and passing healthchecks
-* [`OOM-905 <https://jira.onap.org/browse/OOM-905>`_] - Charts use nsPrefix instead of release namespace
-* [`OOM-906 <https://jira.onap.org/browse/OOM-906>`_] - Make all services independent of helm Release.Name
-* [`OOM-907 <https://jira.onap.org/browse/OOM-907>`_] - Make all persistent volume to be mapped to a location defined by helm Release.Name
-* [`OOM-908 <https://jira.onap.org/browse/OOM-908>`_] - Job portal-db-config fails due to missing image config
-* [`OOM-909 <https://jira.onap.org/browse/OOM-909>`_] - SO Health Check fails
-* [`OOM-910 <https://jira.onap.org/browse/OOM-910>`_] - VID Health Check fails
-* [`OOM-911 <https://jira.onap.org/browse/OOM-911>`_] - VFC Health Check fails for 9 components
-* [`OOM-912 <https://jira.onap.org/browse/OOM-912>`_] - Multicloud Health Check fails for 1 of its components
-* [`OOM-913 <https://jira.onap.org/browse/OOM-913>`_] - Consul agent pod is failing
-* [`OOM-916 <https://jira.onap.org/browse/OOM-916>`_] - Used to fix testing issues related to usability
-* [`OOM-918 <https://jira.onap.org/browse/OOM-918>`_] - Policy - incorrect configmap mount causes base.conf to disappear
-* [`OOM-920 <https://jira.onap.org/browse/OOM-920>`_] - Issue with CLAMP configuration
-* [`OOM-921 <https://jira.onap.org/browse/OOM-921>`_] - align onap/values.yaml and onap/resources/environments/dev.yaml - different /dockerdata-nfs
-* [`OOM-926 <https://jira.onap.org/browse/OOM-926>`_] - Disable clustering for APP-C out-of-the-box
-* [`OOM-927 <https://jira.onap.org/browse/OOM-927>`_] - Need a production grade configuration override file of ONAP deployment
-* [`OOM-928 <https://jira.onap.org/browse/OOM-928>`_] - Some charts use /dockerdata-nfs by default
-* [`OOM-929 <https://jira.onap.org/browse/OOM-929>`_] - DMaaP message router docker image fails to pull
-* [`OOM-930 <https://jira.onap.org/browse/OOM-930>`_] - New AAF Helm Charts required
-* [`OOM-931 <https://jira.onap.org/browse/OOM-931>`_] - Reintroduce VNC pod into OOM
-* [`OOM-932 <https://jira.onap.org/browse/OOM-932>`_] - Unblock integration testing
-* [`OOM-935 <https://jira.onap.org/browse/OOM-935>`_] - sdc-cassandra pod fails to delete using helm delete - forced kubectl delete
-* [`OOM-936 <https://jira.onap.org/browse/OOM-936>`_] - Readiness-check prob version is inconsistent across components
-* [`OOM-937 <https://jira.onap.org/browse/OOM-937>`_] - Portal Cassandra config map points to wrong directory
-* [`OOM-938 <https://jira.onap.org/browse/OOM-938>`_] - Can't install aai alone using helm
-* [`OOM-945 <https://jira.onap.org/browse/OOM-945>`_] - SDNC some bundles failing to start cleanly
-* [`OOM-948 <https://jira.onap.org/browse/OOM-948>`_] - make vfc got an error
-* [`OOM-951 <https://jira.onap.org/browse/OOM-951>`_] - Update APPC charts based on on changes for ccsdk and Nitrogen ODL
-* [`OOM-953 <https://jira.onap.org/browse/OOM-953>`_] - switch aai haproxy/hbase repo from hub.docker.com to nexus3
-* [`OOM-958 <https://jira.onap.org/browse/OOM-958>`_] - SDC-be deployment missing environment parameter
-* [`OOM-964 <https://jira.onap.org/browse/OOM-964>`_] - SDC Healthcheck failure on sdc-be and sdc-kb containers down
-* [`OOM-968 <https://jira.onap.org/browse/OOM-968>`_] - warning on default deployment values.yaml
-* [`OOM-969 <https://jira.onap.org/browse/OOM-969>`_] - oomk8s images have no Dockerfile's
-* [`OOM-971 <https://jira.onap.org/browse/OOM-971>`_] - Common service name template should allow for chart name override
-* [`OOM-974 <https://jira.onap.org/browse/OOM-974>`_] - Cassandra bootstrap is done incorrectly
-* [`OOM-977 <https://jira.onap.org/browse/OOM-977>`_] - The esr-gui annotations should include a "path" param when register to MSB
-* [`OOM-985 <https://jira.onap.org/browse/OOM-985>`_] - DMAAP Redis fails to start
-* [`OOM-986 <https://jira.onap.org/browse/OOM-986>`_] - SDC BE and FE logs are missing
-* [`OOM-989 <https://jira.onap.org/browse/OOM-989>`_] - Sync ete-k8.sh and ete.sh for new log file numbering
-* [`OOM-990 <https://jira.onap.org/browse/OOM-990>`_] - AUTO.json in SDC has unreachable addresses
-* [`OOM-993 <https://jira.onap.org/browse/OOM-993>`_] - AAI model-loader.properties not in sync with project file
-* [`OOM-994 <https://jira.onap.org/browse/OOM-994>`_] - DCAE cloudify controller docker image 1.1.0 N/A - use 1.2.0/1.3.0
-* [`OOM-1003 <https://jira.onap.org/browse/OOM-1003>`_] - dcae-cloudify-manager chart references obsolete image version
-* [`OOM-1004 <https://jira.onap.org/browse/OOM-1004>`_] - aai-resources constantly fails due to cassandra hostname
-* [`OOM-1005 <https://jira.onap.org/browse/OOM-1005>`_] - AAI Widgets not loading due to duplicate volumes
-* [`OOM-1007 <https://jira.onap.org/browse/OOM-1007>`_] - Update dcae robot health check config
-* [`OOM-1008 <https://jira.onap.org/browse/OOM-1008>`_] - Set default consul server replica count to 1
-* [`OOM-1010 <https://jira.onap.org/browse/OOM-1010>`_] - Fix broken property names in DCAE input files
-* [`OOM-1011 <https://jira.onap.org/browse/OOM-1011>`_] - Policy config correction after Service Name changes because of OOM-906
-* [`OOM-1013 <https://jira.onap.org/browse/OOM-1013>`_] - Update DCAE container versions
-* [`OOM-1014 <https://jira.onap.org/browse/OOM-1014>`_] - Portal login not working due to inconsistent zookeeper naming
-* [`OOM-1015 <https://jira.onap.org/browse/OOM-1015>`_] - Champ fails to start
-* [`OOM-1016 <https://jira.onap.org/browse/OOM-1016>`_] - DOC-OPS Review: Helm install command is wrong on oom_user_guide - missing namespace
-* [`OOM-1017 <https://jira.onap.org/browse/OOM-1017>`_] - DOC-OPS review: Docker/Kubernetes versions wrong for master in oom_cloud_setup_guide
-* [`OOM-1018 <https://jira.onap.org/browse/OOM-1018>`_] - DOC-OPS review: global repo override does not match git in oom quick start guide
-* [`OOM-1019 <https://jira.onap.org/browse/OOM-1019>`_] - DOC-OPS review: Add Ubuntu 16.04 reference to oom_user_guide to avoid 14/16 confusion
-* [`OOM-1021 <https://jira.onap.org/browse/OOM-1021>`_] - Update APPC resources for Nitrogen ODL
-* [`OOM-1022 <https://jira.onap.org/browse/OOM-1022>`_] - Fix SDC startup dependencies
-* [`OOM-1023 <https://jira.onap.org/browse/OOM-1023>`_] - "spring.datasource.cldsdb.url" in clamp has wrong clampdb name
-* [`OOM-1024 <https://jira.onap.org/browse/OOM-1024>`_] - Cassandra data not persisted
-* [`OOM-1033 <https://jira.onap.org/browse/OOM-1033>`_] - helm error during deployment 20180501:1900 - all builds under 2.7.2
-* [`OOM-1034 <https://jira.onap.org/browse/OOM-1034>`_] - VID Ports incorrect in deployment.yaml
-* [`OOM-1037 <https://jira.onap.org/browse/OOM-1037>`_] - Enable CLI health check
-* [`OOM-1039 <https://jira.onap.org/browse/OOM-1039>`_] - Service distribution to SO fails
-* [`OOM-1041 <https://jira.onap.org/browse/OOM-1041>`_] - aai-service was renamed, but old references remain
-* [`OOM-1042 <https://jira.onap.org/browse/OOM-1042>`_] - portalapps service was renamed, but old references remain
-* [`OOM-1045 <https://jira.onap.org/browse/OOM-1045>`_] - top level values.yaml missing entry for dmaap chart
-* [`OOM-1049 <https://jira.onap.org/browse/OOM-1049>`_] - SDNC_UEB_LISTENER db
-* [`OOM-1050 <https://jira.onap.org/browse/OOM-1050>`_] - Impossible to deploy consul using cache docker registry
-* [`OOM-1051 <https://jira.onap.org/browse/OOM-1051>`_] - Fix aaf deployment
-* [`OOM-1052 <https://jira.onap.org/browse/OOM-1052>`_] - SO cloud config file points to Rackspace cloud
-* [`OOM-1054 <https://jira.onap.org/browse/OOM-1054>`_] - Portal LoadBalancer Ingress IP is on the wrong network
-* [`OOM-1060 <https://jira.onap.org/browse/OOM-1060>`_] - Incorrect MR Kafka references prevent aai champ from starting
-* [`OOM-1061 <https://jira.onap.org/browse/OOM-1061>`_] - ConfigMap size limit exceeded
-* [`OOM-1064 <https://jira.onap.org/browse/OOM-1064>`_] - Improve docker registry secret management
-* [`OOM-1066 <https://jira.onap.org/browse/OOM-1066>`_] - Updating TOSCA blueprint to sync up with helm configuration changes (add dmaap and oof/delete message-router)
-* [`OOM-1068 <https://jira.onap.org/browse/OOM-1068>`_] - Update SO with new AAI cert
-* [`OOM-1076 <https://jira.onap.org/browse/OOM-1076>`_] - some charts still using readiness check image from amsterdam 1.x
-* [`OOM-1077 <https://jira.onap.org/browse/OOM-1077>`_] - AAI resources and traversal deployment failure on non-rancher envs
-* [`OOM-1079 <https://jira.onap.org/browse/OOM-1079>`_] - Robot charts do not allow over ride of pub_key, dcae_collector_ip and dcae_collector_port
-* [`OOM-1081 <https://jira.onap.org/browse/OOM-1081>`_] - Remove component 'mock' from TOSCA deployment
-* [`OOM-1082 <https://jira.onap.org/browse/OOM-1082>`_] - Wrong pv location of dcae postgres
-* [`OOM-1085 <https://jira.onap.org/browse/OOM-1085>`_] - appc hostname is incorrect in url
-* [`OOM-1086 <https://jira.onap.org/browse/OOM-1086>`_] - clamp deployment changes /dockerdata-nfs/ReleaseName dir permissions
-* [`OOM-1088 <https://jira.onap.org/browse/OOM-1088>`_] - APPC returns error for vCPE restart message from Policy
-* [`OOM-1089 <https://jira.onap.org/browse/OOM-1089>`_] - DCAE pods are not getting purged
-* [`OOM-1093 <https://jira.onap.org/browse/OOM-1093>`_] - Line wrapping issue in redis-cluster-config.sh script
-* [`OOM-1094 <https://jira.onap.org/browse/OOM-1094>`_] - Fix postgres startup
-* [`OOM-1095 <https://jira.onap.org/browse/OOM-1095>`_] - common makefile builds out of order
-* [`OOM-1096 <https://jira.onap.org/browse/OOM-1096>`_] - node port conflict SDNC (Geo enabled) & other charts
-* [`OOM-1097 <https://jira.onap.org/browse/OOM-1097>`_] - Nbi needs dep-nbi - crash on make all
-* [`OOM-1099 <https://jira.onap.org/browse/OOM-1099>`_] - Add External Interface NBI project into OOM TOSCA
-* [`OOM-1102 <https://jira.onap.org/browse/OOM-1102>`_] - Incorrect AAI services
-* [`OOM-1103 <https://jira.onap.org/browse/OOM-1103>`_] - Cannot disable NBI
-* [`OOM-1104 <https://jira.onap.org/browse/OOM-1104>`_] - Policy DROOLS configuration across container restarts
-* [`OOM-1110 <https://jira.onap.org/browse/OOM-1110>`_] - Clamp issue when connecting Policy
-* [`OOM-1111 <https://jira.onap.org/browse/OOM-1111>`_] - Please revert to using VNFSDK Postgres container
-* [`OOM-1114 <https://jira.onap.org/browse/OOM-1114>`_] - APPC is broken in latest helm chart
-* [`OOM-1115 <https://jira.onap.org/browse/OOM-1115>`_] - SDNC DGBuilder cant operate on DGs in database - need NodePort
-* [`OOM-1116 <https://jira.onap.org/browse/OOM-1116>`_] - Correct values needed by NBI chart
-* [`OOM-1124 <https://jira.onap.org/browse/OOM-1124>`_] - Update OOM APPC chart to enhance AAF support
-* [`OOM-1126 <https://jira.onap.org/browse/OOM-1126>`_] - Incorrect Port mapping between CDT Application and APPC main application
-* [`OOM-1127 <https://jira.onap.org/browse/OOM-1127>`_] - SO fails healthcheck
-* [`OOM-1128 <https://jira.onap.org/browse/OOM-1128>`_] - AAF CS fails to start in OpenLab
+* [`OOM-4 <https://lf-onap.atlassian.net/browse/OOM-4>`_] - deleteAll.bash fails to properly delete services and ports
+* [`OOM-153 <https://lf-onap.atlassian.net/browse/OOM-153>`_] - test - Sample Bug
+* [`OOM-212 <https://lf-onap.atlassian.net/browse/OOM-212>`_] - deleteAll script does not have an option to delete the services
+* [`OOM-215 <https://lf-onap.atlassian.net/browse/OOM-215>`_] - configure_app for helm apps is not correct
+* [`OOM-218 <https://lf-onap.atlassian.net/browse/OOM-218>`_] - createConfig.sh needs a chmod 755 in release-1.0.0 only
+* [`OOM-239 <https://lf-onap.atlassian.net/browse/OOM-239>`_] - mso.tar created in dockerdatanfs
+* [`OOM-258 <https://lf-onap.atlassian.net/browse/OOM-258>`_] - AAI logs are not being written outside the pods
+* [`OOM-282 <https://lf-onap.atlassian.net/browse/OOM-282>`_] - vnc-portal requires /etc/hosts url fix for SDC sdc.ui should be sdc.api
+* [`OOM-283 <https://lf-onap.atlassian.net/browse/OOM-283>`_] - No longer able to deploy instances in specified namespace
+* [`OOM-290 <https://lf-onap.atlassian.net/browse/OOM-290>`_] - config_init pod fails when /dockerdata-nfs is nfs-mounted
+* [`OOM-300 <https://lf-onap.atlassian.net/browse/OOM-300>`_] - cat: /config-init/onap/mso/mso/encryption.key: No such file or directory
+* [`OOM-333 <https://lf-onap.atlassian.net/browse/OOM-333>`_] - vfc-workflow fails [VFC BUG] - fixed - 20180117 vfc-ztevnfmdriver has docker pull issue
+* [`OOM-334 <https://lf-onap.atlassian.net/browse/OOM-334>`_] - Change kubernetes startup user
+* [`OOM-351 <https://lf-onap.atlassian.net/browse/OOM-351>`_] - Apply standard convention across the "template deployment YML" file
+* [`OOM-352 <https://lf-onap.atlassian.net/browse/OOM-352>`_] - failed to start VFC containers
+* [`OOM-363 <https://lf-onap.atlassian.net/browse/OOM-363>`_] - DCAE tests NOK with Robot E2E tests
+* [`OOM-366 <https://lf-onap.atlassian.net/browse/OOM-366>`_] - certificates in consul agent config are not in the right directory
+* [`OOM-389 <https://lf-onap.atlassian.net/browse/OOM-389>`_] - sdc-be and sdc-fe do not initialize correctly on latest master
+* [`OOM-409 <https://lf-onap.atlassian.net/browse/OOM-409>`_] - Update Vid yaml file to point to the ONAPPORTAL URL
+* [`OOM-413 <https://lf-onap.atlassian.net/browse/OOM-413>`_] - In portal VNC pod refresh /etc/hosts entries
+* [`OOM-414 <https://lf-onap.atlassian.net/browse/OOM-414>`_] - MSB Healtcheck failure on $*_ENDPOINT variables
+* [`OOM-424 <https://lf-onap.atlassian.net/browse/OOM-424>`_] - DCAE installation is not possible today
+* [`OOM-430 <https://lf-onap.atlassian.net/browse/OOM-430>`_] - Portal healthcheck passing on vnc-portal down
+* [`OOM-467 <https://lf-onap.atlassian.net/browse/OOM-467>`_] - Optimize config-init process
+* [`OOM-493 <https://lf-onap.atlassian.net/browse/OOM-493>`_] - Kubernetes infrastructure for ESR
+* [`OOM-496 <https://lf-onap.atlassian.net/browse/OOM-496>`_] - Readiness check is marking full availability of some components like SDC and SDNC before they would pass healthcheck
+* [`OOM-514 <https://lf-onap.atlassian.net/browse/OOM-514>`_] - Readiness prob fails sometimes even though the relevant pods are running
+* [`OOM-539 <https://lf-onap.atlassian.net/browse/OOM-539>`_] - Kube2MSB registrator doesn't support https REST service registration
+* [`OOM-570 <https://lf-onap.atlassian.net/browse/OOM-570>`_] - Wrong value is assigned to kube2msb AUTH_TOKEN environment variable
+* [`OOM-574 <https://lf-onap.atlassian.net/browse/OOM-574>`_] - OOM configuration for robot does not copy heat templatese in dockerdata-nfs
+* [`OOM-577 <https://lf-onap.atlassian.net/browse/OOM-577>`_] - Incorrect evaluation of bash command in yaml template file (portal-vnc-dep.yaml)
+* [`OOM-578 <https://lf-onap.atlassian.net/browse/OOM-578>`_] - Hard coded token in oom/kubernetes/kube2msb/values.yaml file
+* [`OOM-589 <https://lf-onap.atlassian.net/browse/OOM-589>`_] - Can not acces CLI in vnc-portal
+* [`OOM-598 <https://lf-onap.atlassian.net/browse/OOM-598>`_] - createAll.bash base64: invalid option -- d
+* [`OOM-600 <https://lf-onap.atlassian.net/browse/OOM-600>`_] - Unable to open CLI by clicking CLI application icon
+* [`OOM-630 <https://lf-onap.atlassian.net/browse/OOM-630>`_] - Red herring config pod deletion error on deleteAll - after we started deleting onap-config automatically
+* [`OOM-645 <https://lf-onap.atlassian.net/browse/OOM-645>`_] - Kube2MSB RBAC security issues
+* [`OOM-653 <https://lf-onap.atlassian.net/browse/OOM-653>`_] - sdnc-dbhost-0 deletion failure
+* [`OOM-657 <https://lf-onap.atlassian.net/browse/OOM-657>`_] - Look into DCAEGEN2 failure on duplicate servicePort
+* [`OOM-672 <https://lf-onap.atlassian.net/browse/OOM-672>`_] - hardcoded clusterIP for aai breaks auto installation
+* [`OOM-680 <https://lf-onap.atlassian.net/browse/OOM-680>`_] - ONAP Failure install with kubernetes 1.8+
+* [`OOM-687 <https://lf-onap.atlassian.net/browse/OOM-687>`_] - Typo in README_HELM
+* [`OOM-724 <https://lf-onap.atlassian.net/browse/OOM-724>`_] - License Update in TOSCA
+* [`OOM-767 <https://lf-onap.atlassian.net/browse/OOM-767>`_] - data-router-logs and elasticsearch-data mapped to same folder
+* [`OOM-768 <https://lf-onap.atlassian.net/browse/OOM-768>`_] - Hardcoded onap in config files
+* [`OOM-769 <https://lf-onap.atlassian.net/browse/OOM-769>`_] - sdc-es data mapping in sdc-be and sdc-fe redundant
+* [`OOM-783 <https://lf-onap.atlassian.net/browse/OOM-783>`_] - UUI health check is failing
+* [`OOM-784 <https://lf-onap.atlassian.net/browse/OOM-784>`_] - make new so chart one namespace compatible
+* [`OOM-791 <https://lf-onap.atlassian.net/browse/OOM-791>`_] - After OOM-722 merge - docker pulls are timing out - switch to pullPolicy IfNotPresent
+* [`OOM-794 <https://lf-onap.atlassian.net/browse/OOM-794>`_] - demo-k8s.sh name not modified in the usage string
+* [`OOM-795 <https://lf-onap.atlassian.net/browse/OOM-795>`_] - HEAT templates for robot instantiateVFW missing
+* [`OOM-796 <https://lf-onap.atlassian.net/browse/OOM-796>`_] - robot asdc/sdngc interface in synch for Master
+* [`OOM-797 <https://lf-onap.atlassian.net/browse/OOM-797>`_] - GLOBAL_INJECTED_SCRIPT_VERSION missing from vm_properties.py
+* [`OOM-804 <https://lf-onap.atlassian.net/browse/OOM-804>`_] - VFC vfc-ztevnfmdriver container failure
+* [`OOM-815 <https://lf-onap.atlassian.net/browse/OOM-815>`_] - OOM Robot container helm failure after OOM-728 35909 merge
+* [`OOM-829 <https://lf-onap.atlassian.net/browse/OOM-829>`_] - Can not make multicloud helm chart
+* [`OOM-830 <https://lf-onap.atlassian.net/browse/OOM-830>`_] - Fix OOM build dependencies
+* [`OOM-835 <https://lf-onap.atlassian.net/browse/OOM-835>`_] - CLAMP mariadb pv is pointing to a wrong location
+* [`OOM-836 <https://lf-onap.atlassian.net/browse/OOM-836>`_] - champ and gizmo yaml validation issue
+* [`OOM-845 <https://lf-onap.atlassian.net/browse/OOM-845>`_] - Global repository should not be set by default
+* [`OOM-846 <https://lf-onap.atlassian.net/browse/OOM-846>`_] - Add liveness enabled fix to helm starter
+* [`OOM-847 <https://lf-onap.atlassian.net/browse/OOM-847>`_] - log-elasticsearch external ports are not externally accessible
+* [`OOM-848 <https://lf-onap.atlassian.net/browse/OOM-848>`_] - log-logstash logstash pipeline fails to start after oom standard config changes
+* [`OOM-851 <https://lf-onap.atlassian.net/browse/OOM-851>`_] - sdc chart validation error
+* [`OOM-856 <https://lf-onap.atlassian.net/browse/OOM-856>`_] - appc mysql fails deployment
+* [`OOM-858 <https://lf-onap.atlassian.net/browse/OOM-858>`_] - Fail to deploy onap chart due to config map size
+* [`OOM-870 <https://lf-onap.atlassian.net/browse/OOM-870>`_] - Missing CLAMP configuration
+* [`OOM-871 <https://lf-onap.atlassian.net/browse/OOM-871>`_] - log kibana container fails to start after oom standard config changes
+* [`OOM-872 <https://lf-onap.atlassian.net/browse/OOM-872>`_] - APPC-helm Still need config pod
+* [`OOM-873 <https://lf-onap.atlassian.net/browse/OOM-873>`_] - OOM doc typo
+* [`OOM-874 <https://lf-onap.atlassian.net/browse/OOM-874>`_] - Inconsistent repository references in ONAP charts
+* [`OOM-875 <https://lf-onap.atlassian.net/browse/OOM-875>`_] - Cannot retrieve robot logs
+* [`OOM-876 <https://lf-onap.atlassian.net/browse/OOM-876>`_] - Some containers ignore the repository setting
+* [`OOM-878 <https://lf-onap.atlassian.net/browse/OOM-878>`_] - MySQL slave nodes don't deploy when mysql.replicaCount > 1
+* [`OOM-881 <https://lf-onap.atlassian.net/browse/OOM-881>`_] - SDN-C Portal pod fails to come up
+* [`OOM-882 <https://lf-onap.atlassian.net/browse/OOM-882>`_] - Some SDNC service names should be prefixed with the helm release name
+* [`OOM-884 <https://lf-onap.atlassian.net/browse/OOM-884>`_] - VID-VID mariadb pv is pointing to a wrong location
+* [`OOM-885 <https://lf-onap.atlassian.net/browse/OOM-885>`_] - Beijing oom component log messages missing in Elasticsearch
+* [`OOM-886 <https://lf-onap.atlassian.net/browse/OOM-886>`_] - kube2msb not starting up
+* [`OOM-887 <https://lf-onap.atlassian.net/browse/OOM-887>`_] - SDN-C db schema and sdnctl db user not reliably being created
+* [`OOM-888 <https://lf-onap.atlassian.net/browse/OOM-888>`_] - aaf-cs mapping wrong
+* [`OOM-889 <https://lf-onap.atlassian.net/browse/OOM-889>`_] - restore pv&pvc for mysql when NFS provisioner is disabled
+* [`OOM-898 <https://lf-onap.atlassian.net/browse/OOM-898>`_] - Multicloud-framework config file is not volume-mounted
+* [`OOM-899 <https://lf-onap.atlassian.net/browse/OOM-899>`_] - SDNC main pod does not come up
+* [`OOM-900 <https://lf-onap.atlassian.net/browse/OOM-900>`_] - portal-cassandra missing pv and pvc
+* [`OOM-904 <https://lf-onap.atlassian.net/browse/OOM-904>`_] - OOM problems bringing up components and passing healthchecks
+* [`OOM-905 <https://lf-onap.atlassian.net/browse/OOM-905>`_] - Charts use nsPrefix instead of release namespace
+* [`OOM-906 <https://lf-onap.atlassian.net/browse/OOM-906>`_] - Make all services independent of helm Release.Name
+* [`OOM-907 <https://lf-onap.atlassian.net/browse/OOM-907>`_] - Make all persistent volume to be mapped to a location defined by helm Release.Name
+* [`OOM-908 <https://lf-onap.atlassian.net/browse/OOM-908>`_] - Job portal-db-config fails due to missing image config
+* [`OOM-909 <https://lf-onap.atlassian.net/browse/OOM-909>`_] - SO Health Check fails
+* [`OOM-910 <https://lf-onap.atlassian.net/browse/OOM-910>`_] - VID Health Check fails
+* [`OOM-911 <https://lf-onap.atlassian.net/browse/OOM-911>`_] - VFC Health Check fails for 9 components
+* [`OOM-912 <https://lf-onap.atlassian.net/browse/OOM-912>`_] - Multicloud Health Check fails for 1 of its components
+* [`OOM-913 <https://lf-onap.atlassian.net/browse/OOM-913>`_] - Consul agent pod is failing
+* [`OOM-916 <https://lf-onap.atlassian.net/browse/OOM-916>`_] - Used to fix testing issues related to usability
+* [`OOM-918 <https://lf-onap.atlassian.net/browse/OOM-918>`_] - Policy - incorrect configmap mount causes base.conf to disappear
+* [`OOM-920 <https://lf-onap.atlassian.net/browse/OOM-920>`_] - Issue with CLAMP configuration
+* [`OOM-921 <https://lf-onap.atlassian.net/browse/OOM-921>`_] - align onap/values.yaml and onap/resources/environments/dev.yaml - different /dockerdata-nfs
+* [`OOM-926 <https://lf-onap.atlassian.net/browse/OOM-926>`_] - Disable clustering for APP-C out-of-the-box
+* [`OOM-927 <https://lf-onap.atlassian.net/browse/OOM-927>`_] - Need a production grade configuration override file of ONAP deployment
+* [`OOM-928 <https://lf-onap.atlassian.net/browse/OOM-928>`_] - Some charts use /dockerdata-nfs by default
+* [`OOM-929 <https://lf-onap.atlassian.net/browse/OOM-929>`_] - DMaaP message router docker image fails to pull
+* [`OOM-930 <https://lf-onap.atlassian.net/browse/OOM-930>`_] - New AAF Helm Charts required
+* [`OOM-931 <https://lf-onap.atlassian.net/browse/OOM-931>`_] - Reintroduce VNC pod into OOM
+* [`OOM-932 <https://lf-onap.atlassian.net/browse/OOM-932>`_] - Unblock integration testing
+* [`OOM-935 <https://lf-onap.atlassian.net/browse/OOM-935>`_] - sdc-cassandra pod fails to delete using helm delete - forced kubectl delete
+* [`OOM-936 <https://lf-onap.atlassian.net/browse/OOM-936>`_] - Readiness-check prob version is inconsistent across components
+* [`OOM-937 <https://lf-onap.atlassian.net/browse/OOM-937>`_] - Portal Cassandra config map points to wrong directory
+* [`OOM-938 <https://lf-onap.atlassian.net/browse/OOM-938>`_] - Can't install aai alone using helm
+* [`OOM-945 <https://lf-onap.atlassian.net/browse/OOM-945>`_] - SDNC some bundles failing to start cleanly
+* [`OOM-948 <https://lf-onap.atlassian.net/browse/OOM-948>`_] - make vfc got an error
+* [`OOM-951 <https://lf-onap.atlassian.net/browse/OOM-951>`_] - Update APPC charts based on on changes for ccsdk and Nitrogen ODL
+* [`OOM-953 <https://lf-onap.atlassian.net/browse/OOM-953>`_] - switch aai haproxy/hbase repo from hub.docker.com to nexus3
+* [`OOM-958 <https://lf-onap.atlassian.net/browse/OOM-958>`_] - SDC-be deployment missing environment parameter
+* [`OOM-964 <https://lf-onap.atlassian.net/browse/OOM-964>`_] - SDC Healthcheck failure on sdc-be and sdc-kb containers down
+* [`OOM-968 <https://lf-onap.atlassian.net/browse/OOM-968>`_] - warning on default deployment values.yaml
+* [`OOM-969 <https://lf-onap.atlassian.net/browse/OOM-969>`_] - oomk8s images have no Dockerfile's
+* [`OOM-971 <https://lf-onap.atlassian.net/browse/OOM-971>`_] - Common service name template should allow for chart name override
+* [`OOM-974 <https://lf-onap.atlassian.net/browse/OOM-974>`_] - Cassandra bootstrap is done incorrectly
+* [`OOM-977 <https://lf-onap.atlassian.net/browse/OOM-977>`_] - The esr-gui annotations should include a "path" param when register to MSB
+* [`OOM-985 <https://lf-onap.atlassian.net/browse/OOM-985>`_] - DMAAP Redis fails to start
+* [`OOM-986 <https://lf-onap.atlassian.net/browse/OOM-986>`_] - SDC BE and FE logs are missing
+* [`OOM-989 <https://lf-onap.atlassian.net/browse/OOM-989>`_] - Sync ete-k8.sh and ete.sh for new log file numbering
+* [`OOM-990 <https://lf-onap.atlassian.net/browse/OOM-990>`_] - AUTO.json in SDC has unreachable addresses
+* [`OOM-993 <https://lf-onap.atlassian.net/browse/OOM-993>`_] - AAI model-loader.properties not in sync with project file
+* [`OOM-994 <https://lf-onap.atlassian.net/browse/OOM-994>`_] - DCAE cloudify controller docker image 1.1.0 N/A - use 1.2.0/1.3.0
+* [`OOM-1003 <https://lf-onap.atlassian.net/browse/OOM-1003>`_] - dcae-cloudify-manager chart references obsolete image version
+* [`OOM-1004 <https://lf-onap.atlassian.net/browse/OOM-1004>`_] - aai-resources constantly fails due to cassandra hostname
+* [`OOM-1005 <https://lf-onap.atlassian.net/browse/OOM-1005>`_] - AAI Widgets not loading due to duplicate volumes
+* [`OOM-1007 <https://lf-onap.atlassian.net/browse/OOM-1007>`_] - Update dcae robot health check config
+* [`OOM-1008 <https://lf-onap.atlassian.net/browse/OOM-1008>`_] - Set default consul server replica count to 1
+* [`OOM-1010 <https://lf-onap.atlassian.net/browse/OOM-1010>`_] - Fix broken property names in DCAE input files
+* [`OOM-1011 <https://lf-onap.atlassian.net/browse/OOM-1011>`_] - Policy config correction after Service Name changes because of OOM-906
+* [`OOM-1013 <https://lf-onap.atlassian.net/browse/OOM-1013>`_] - Update DCAE container versions
+* [`OOM-1014 <https://lf-onap.atlassian.net/browse/OOM-1014>`_] - Portal login not working due to inconsistent zookeeper naming
+* [`OOM-1015 <https://lf-onap.atlassian.net/browse/OOM-1015>`_] - Champ fails to start
+* [`OOM-1016 <https://lf-onap.atlassian.net/browse/OOM-1016>`_] - DOC-OPS Review: Helm install command is wrong on oom_user_guide - missing namespace
+* [`OOM-1017 <https://lf-onap.atlassian.net/browse/OOM-1017>`_] - DOC-OPS review: Docker/Kubernetes versions wrong for master in oom_cloud_setup_guide
+* [`OOM-1018 <https://lf-onap.atlassian.net/browse/OOM-1018>`_] - DOC-OPS review: global repo override does not match git in oom quick start guide
+* [`OOM-1019 <https://lf-onap.atlassian.net/browse/OOM-1019>`_] - DOC-OPS review: Add Ubuntu 16.04 reference to oom_user_guide to avoid 14/16 confusion
+* [`OOM-1021 <https://lf-onap.atlassian.net/browse/OOM-1021>`_] - Update APPC resources for Nitrogen ODL
+* [`OOM-1022 <https://lf-onap.atlassian.net/browse/OOM-1022>`_] - Fix SDC startup dependencies
+* [`OOM-1023 <https://lf-onap.atlassian.net/browse/OOM-1023>`_] - "spring.datasource.cldsdb.url" in clamp has wrong clampdb name
+* [`OOM-1024 <https://lf-onap.atlassian.net/browse/OOM-1024>`_] - Cassandra data not persisted
+* [`OOM-1033 <https://lf-onap.atlassian.net/browse/OOM-1033>`_] - helm error during deployment 20180501:1900 - all builds under 2.7.2
+* [`OOM-1034 <https://lf-onap.atlassian.net/browse/OOM-1034>`_] - VID Ports incorrect in deployment.yaml
+* [`OOM-1037 <https://lf-onap.atlassian.net/browse/OOM-1037>`_] - Enable CLI health check
+* [`OOM-1039 <https://lf-onap.atlassian.net/browse/OOM-1039>`_] - Service distribution to SO fails
+* [`OOM-1041 <https://lf-onap.atlassian.net/browse/OOM-1041>`_] - aai-service was renamed, but old references remain
+* [`OOM-1042 <https://lf-onap.atlassian.net/browse/OOM-1042>`_] - portalapps service was renamed, but old references remain
+* [`OOM-1045 <https://lf-onap.atlassian.net/browse/OOM-1045>`_] - top level values.yaml missing entry for dmaap chart
+* [`OOM-1049 <https://lf-onap.atlassian.net/browse/OOM-1049>`_] - SDNC_UEB_LISTENER db
+* [`OOM-1050 <https://lf-onap.atlassian.net/browse/OOM-1050>`_] - Impossible to deploy consul using cache docker registry
+* [`OOM-1051 <https://lf-onap.atlassian.net/browse/OOM-1051>`_] - Fix aaf deployment
+* [`OOM-1052 <https://lf-onap.atlassian.net/browse/OOM-1052>`_] - SO cloud config file points to Rackspace cloud
+* [`OOM-1054 <https://lf-onap.atlassian.net/browse/OOM-1054>`_] - Portal LoadBalancer Ingress IP is on the wrong network
+* [`OOM-1060 <https://lf-onap.atlassian.net/browse/OOM-1060>`_] - Incorrect MR Kafka references prevent aai champ from starting
+* [`OOM-1061 <https://lf-onap.atlassian.net/browse/OOM-1061>`_] - ConfigMap size limit exceeded
+* [`OOM-1064 <https://lf-onap.atlassian.net/browse/OOM-1064>`_] - Improve docker registry secret management
+* [`OOM-1066 <https://lf-onap.atlassian.net/browse/OOM-1066>`_] - Updating TOSCA blueprint to sync up with helm configuration changes (add dmaap and oof/delete message-router)
+* [`OOM-1068 <https://lf-onap.atlassian.net/browse/OOM-1068>`_] - Update SO with new AAI cert
+* [`OOM-1076 <https://lf-onap.atlassian.net/browse/OOM-1076>`_] - some charts still using readiness check image from amsterdam 1.x
+* [`OOM-1077 <https://lf-onap.atlassian.net/browse/OOM-1077>`_] - AAI resources and traversal deployment failure on non-rancher envs
+* [`OOM-1079 <https://lf-onap.atlassian.net/browse/OOM-1079>`_] - Robot charts do not allow over ride of pub_key, dcae_collector_ip and dcae_collector_port
+* [`OOM-1081 <https://lf-onap.atlassian.net/browse/OOM-1081>`_] - Remove component 'mock' from TOSCA deployment
+* [`OOM-1082 <https://lf-onap.atlassian.net/browse/OOM-1082>`_] - Wrong pv location of dcae postgres
+* [`OOM-1085 <https://lf-onap.atlassian.net/browse/OOM-1085>`_] - appc hostname is incorrect in url
+* [`OOM-1086 <https://lf-onap.atlassian.net/browse/OOM-1086>`_] - clamp deployment changes /dockerdata-nfs/ReleaseName dir permissions
+* [`OOM-1088 <https://lf-onap.atlassian.net/browse/OOM-1088>`_] - APPC returns error for vCPE restart message from Policy
+* [`OOM-1089 <https://lf-onap.atlassian.net/browse/OOM-1089>`_] - DCAE pods are not getting purged
+* [`OOM-1093 <https://lf-onap.atlassian.net/browse/OOM-1093>`_] - Line wrapping issue in redis-cluster-config.sh script
+* [`OOM-1094 <https://lf-onap.atlassian.net/browse/OOM-1094>`_] - Fix postgres startup
+* [`OOM-1095 <https://lf-onap.atlassian.net/browse/OOM-1095>`_] - common makefile builds out of order
+* [`OOM-1096 <https://lf-onap.atlassian.net/browse/OOM-1096>`_] - node port conflict SDNC (Geo enabled) & other charts
+* [`OOM-1097 <https://lf-onap.atlassian.net/browse/OOM-1097>`_] - Nbi needs dep-nbi - crash on make all
+* [`OOM-1099 <https://lf-onap.atlassian.net/browse/OOM-1099>`_] - Add External Interface NBI project into OOM TOSCA
+* [`OOM-1102 <https://lf-onap.atlassian.net/browse/OOM-1102>`_] - Incorrect AAI services
+* [`OOM-1103 <https://lf-onap.atlassian.net/browse/OOM-1103>`_] - Cannot disable NBI
+* [`OOM-1104 <https://lf-onap.atlassian.net/browse/OOM-1104>`_] - Policy DROOLS configuration across container restarts
+* [`OOM-1110 <https://lf-onap.atlassian.net/browse/OOM-1110>`_] - Clamp issue when connecting Policy
+* [`OOM-1111 <https://lf-onap.atlassian.net/browse/OOM-1111>`_] - Please revert to using VNFSDK Postgres container
+* [`OOM-1114 <https://lf-onap.atlassian.net/browse/OOM-1114>`_] - APPC is broken in latest helm chart
+* [`OOM-1115 <https://lf-onap.atlassian.net/browse/OOM-1115>`_] - SDNC DGBuilder cant operate on DGs in database - need NodePort
+* [`OOM-1116 <https://lf-onap.atlassian.net/browse/OOM-1116>`_] - Correct values needed by NBI chart
+* [`OOM-1124 <https://lf-onap.atlassian.net/browse/OOM-1124>`_] - Update OOM APPC chart to enhance AAF support
+* [`OOM-1126 <https://lf-onap.atlassian.net/browse/OOM-1126>`_] - Incorrect Port mapping between CDT Application and APPC main application
+* [`OOM-1127 <https://lf-onap.atlassian.net/browse/OOM-1127>`_] - SO fails healthcheck
+* [`OOM-1128 <https://lf-onap.atlassian.net/browse/OOM-1128>`_] - AAF CS fails to start in OpenLab
 
 Sub-task
 ********
 
-* [`OOM-304 <https://jira.onap.org/browse/OOM-304>`_] - Service endpoint annotation for Data Router
-* [`OOM-306 <https://jira.onap.org/browse/OOM-306>`_] - Handle mariadb secrets
-* [`OOM-510 <https://jira.onap.org/browse/OOM-510>`_] - Increase vm.max_map_count to 262144 when running Rancher 1.6.11+ via helm 2.6+ - for elasticsearch log mem failure
-* [`OOM-512 <https://jira.onap.org/browse/OOM-512>`_] - Push the reviewed and merged ReadMe content to RTD
-* [`OOM-641 <https://jira.onap.org/browse/OOM-641>`_] - Segregating of configuration for SDNC-UEB component
-* [`OOM-655 <https://jira.onap.org/browse/OOM-655>`_] - Create alternate prepull script which provides more user feedback and logging
-* [`OOM-753 <https://jira.onap.org/browse/OOM-753>`_] - Create Helm Sub-Chart for SO's embedded mariadb
-* [`OOM-754 <https://jira.onap.org/browse/OOM-754>`_] - Create Helm Chart for SO
-* [`OOM-774 <https://jira.onap.org/browse/OOM-774>`_] - Create Helm Sub-Chart for APPC's embedded mySQL database
-* [`OOM-775 <https://jira.onap.org/browse/OOM-775>`_] - Create Helm Chart for APPC
-* [`OOM-778 <https://jira.onap.org/browse/OOM-778>`_] - Replace NFS Provisioner with configurable PV storage solution
-* [`OOM-825 <https://jira.onap.org/browse/OOM-825>`_] - Apache 2 License updation for All sqls and .js file
-* [`OOM-849 <https://jira.onap.org/browse/OOM-849>`_] - Policy Nexus component needs persistent volume for /sonatype-work
-* [`OOM-991 <https://jira.onap.org/browse/OOM-991>`_] - Adjust SDC-BE init job timing from 10 to 30s to avoid restarts on single node systems
-* [`OOM-1036 <https://jira.onap.org/browse/OOM-1036>`_] - update helm from 2.7.2 to 2.8.2 wiki/rtd
-* [`OOM-1063 <https://jira.onap.org/browse/OOM-1063>`_] - Document Portal LoadBalancer Ingress IP Settings
+* [`OOM-304 <https://lf-onap.atlassian.net/browse/OOM-304>`_] - Service endpoint annotation for Data Router
+* [`OOM-306 <https://lf-onap.atlassian.net/browse/OOM-306>`_] - Handle mariadb secrets
+* [`OOM-510 <https://lf-onap.atlassian.net/browse/OOM-510>`_] - Increase vm.max_map_count to 262144 when running Rancher 1.6.11+ via helm 2.6+ - for elasticsearch log mem failure
+* [`OOM-512 <https://lf-onap.atlassian.net/browse/OOM-512>`_] - Push the reviewed and merged ReadMe content to RTD
+* [`OOM-641 <https://lf-onap.atlassian.net/browse/OOM-641>`_] - Segregating of configuration for SDNC-UEB component
+* [`OOM-655 <https://lf-onap.atlassian.net/browse/OOM-655>`_] - Create alternate prepull script which provides more user feedback and logging
+* [`OOM-753 <https://lf-onap.atlassian.net/browse/OOM-753>`_] - Create Helm Sub-Chart for SO's embedded mariadb
+* [`OOM-754 <https://lf-onap.atlassian.net/browse/OOM-754>`_] - Create Helm Chart for SO
+* [`OOM-774 <https://lf-onap.atlassian.net/browse/OOM-774>`_] - Create Helm Sub-Chart for APPC's embedded mySQL database
+* [`OOM-775 <https://lf-onap.atlassian.net/browse/OOM-775>`_] - Create Helm Chart for APPC
+* [`OOM-778 <https://lf-onap.atlassian.net/browse/OOM-778>`_] - Replace NFS Provisioner with configurable PV storage solution
+* [`OOM-825 <https://lf-onap.atlassian.net/browse/OOM-825>`_] - Apache 2 License updation for All sqls and .js file
+* [`OOM-849 <https://lf-onap.atlassian.net/browse/OOM-849>`_] - Policy Nexus component needs persistent volume for /sonatype-work
+* [`OOM-991 <https://lf-onap.atlassian.net/browse/OOM-991>`_] - Adjust SDC-BE init job timing from 10 to 30s to avoid restarts on single node systems
+* [`OOM-1036 <https://lf-onap.atlassian.net/browse/OOM-1036>`_] - update helm from 2.7.2 to 2.8.2 wiki/rtd
+* [`OOM-1063 <https://lf-onap.atlassian.net/browse/OOM-1063>`_] - Document Portal LoadBalancer Ingress IP Settings
 
 **Security Notes**
 
@@ -418,7 +418,7 @@ OOM code has been formally scanned during build time using NexusIQ and no
 Critical vulnerability was found.
 
 Quick Links:
-  - `OOM project page <https://wiki.onap.org/display/DW/ONAP+Operations+Manager+Project>`_
+  - `OOM project page <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16230609/ONAP+Operations+Manager+Project>`_
 
   - `Passing Badge information for OOM <https://bestpractices.coreinfrastructure.org/en/projects/1631>`_
 
index 6b85730..7585e11 100644 (file)
@@ -55,7 +55,7 @@ Critical vulnerability was found.
 
 Quick Links:
 
-  - `OOM project page <https://wiki.onap.org/display/DW/ONAP+Operations+Manager+Project>`_
+  - `OOM project page <hhttps://lf-onap.atlassian.net/wiki/spaces/DW/pages/16230609/ONAP+Operations+Manager+Project>`_
 
   - `Passing Badge information for OOM <https://bestpractices.coreinfrastructure.org/en/projects/1631>`_
 
@@ -71,8 +71,8 @@ Quick Links:
    Kubernetes version (1.12)
 
    - `K8S Bug Report <https://github.com/kubernetes/kubernetes/issues/67659>`_
-   - `OOM-1532 <https://jira.onap.org/browse/OOM-1532>`_
-   - `OOM-1516 <https://jira.onap.org/browse/OOM-1516>`_
-   - `OOM-1520 <https://jira.onap.org/browse/OOM-1520>`_
+   - `OOM-1532 <https://lf-onap.atlassian.net/browse/OOM-1532>`_
+   - `OOM-1516 <https://lf-onap.atlassian.net/browse/OOM-1516>`_
+   - `OOM-1520 <https://lf-onap.atlassian.net/browse/OOM-1520>`_
 
 End of Release Notes
index 7a32297..243f32c 100644 (file)
@@ -62,9 +62,9 @@ Summary
 
 *Known Security Issues*
 
-* In default deployment OOM (consul-server-ui) exposes HTTP port 30270 outside of cluster. [`OJSI-134 <https://jira.onap.org/browse/OJSI-134>`_]
-* Hard coded password used for all oom deployments [`OJSI-188 <https://jira.onap.org/browse/OJSI-188>`_]
-* CVE-2019-12127 - OOM exposes unprotected API/UI on port 30270 [`OJSI-202 <https://jira.onap.org/browse/OJSI-202>`_]
+* In default deployment OOM (consul-server-ui) exposes HTTP port 30270 outside of cluster. [`OJSI-134 <https://lf-onap.atlassian.net/browse/OJSI-134>`_]
+* Hard coded password used for all oom deployments [`OJSI-188 <https://lf-onap.atlassian.net/browse/OJSI-188>`_]
+* CVE-2019-12127 - OOM exposes unprotected API/UI on port 30270 [`OJSI-202 <https://lf-onap.atlassian.net/browse/OJSI-202>`_]
 
 *Known Vulnerabilities in Used Modules*
 
@@ -73,7 +73,7 @@ Critical vulnerability was found.
 
 Quick Links:
 
-  - `OOM project page <https://wiki.onap.org/display/DW/ONAP+Operations+Manager+Project>`_
+  - `OOM project page <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16230609/ONAP+Operations+Manager+Project>`_
 
   - `Passing Badge information for OOM <https://bestpractices.coreinfrastructure.org/en/projects/1631>`_
 
index b405902..71d19bb 100644 (file)
@@ -28,7 +28,7 @@ Summary
 
 The focus of this release was on maintenance and as such no new features were
 delivered.
-A list of issues resolved in this release can be found here: https://jira.onap.org/projects/OOM/versions/10726
+A list of issues resolved in this release can be found here: https://lf-onap.atlassian.net/projects/OOM/versions/10726
 
 **New Features**
 
@@ -40,14 +40,14 @@ A list of issues resolved in this release can be found here: https://jira.onap.o
 
 The following known issues will be addressed in a future release:
 
-* [`OOM-1480 <https://jira.onap.org/browse/OOM-1480>`_] - postgres chart does not set root password when installing on an existing database instances
-* [`OOM-1966 <https://jira.onap.org/browse/OOM-1966>`_] - ONAP on HA Kubernetes Cluster - Documentation update
-* [`OOM-1995 <https://jira.onap.org/browse/OOM-1995>`_] - Mariadb Galera cluster pods keep failing
-* [`OOM-2061 <https://jira.onap.org/browse/OOM-2061>`_] - Details Missing for installing the kubectl section
-* [`OOM-2075 <https://jira.onap.org/browse/OOM-2075>`_] - Invalid MTU for Canal CNI interfaces
-* [`OOM-2080 <https://jira.onap.org/browse/OOM-2080>`_] - Need for "ReadWriteMany" access on storage when deploying on Kubernetes?
-* [`OOM-2091 <https://jira.onap.org/browse/OOM-2091>`_] - incorrect release deployed
-* [`OOM-2132 <https://jira.onap.org/browse/OOM-2132>`_] - Common Galera server.cnf does not contain Camunda required settings
+* [`OOM-1480 <https://lf-onap.atlassian.net/browse/OOM-1480>`_] - postgres chart does not set root password when installing on an existing database instances
+* [`OOM-1966 <https://lf-onap.atlassian.net/browse/OOM-1966>`_] - ONAP on HA Kubernetes Cluster - Documentation update
+* [`OOM-1995 <https://lf-onap.atlassian.net/browse/OOM-1995>`_] - Mariadb Galera cluster pods keep failing
+* [`OOM-2061 <https://lf-onap.atlassian.net/browse/OOM-2061>`_] - Details Missing for installing the kubectl section
+* [`OOM-2075 <https://lf-onap.atlassian.net/browse/OOM-2075>`_] - Invalid MTU for Canal CNI interfaces
+* [`OOM-2080 <https://lf-onap.atlassian.net/browse/OOM-2080>`_] - Need for "ReadWriteMany" access on storage when deploying on Kubernetes?
+* [`OOM-2091 <https://lf-onap.atlassian.net/browse/OOM-2091>`_] - incorrect release deployed
+* [`OOM-2132 <https://lf-onap.atlassian.net/browse/OOM-2132>`_] - Common Galera server.cnf does not contain Camunda required settings
 
 **Security Notes**
 
@@ -55,9 +55,9 @@ The following known issues will be addressed in a future release:
 
 *Known Security Issues*
 
-* In default deployment OOM (consul-server-ui) exposes HTTP port 30270 outside of cluster. [`OJSI-134 <https://jira.onap.org/browse/OJSI-134>`_]
-* Hard coded password used for all oom deployments [`OJSI-188 <https://jira.onap.org/browse/OJSI-188>`_]
-* CVE-2019-12127 - OOM exposes unprotected API/UI on port 30270 [`OJSI-202 <https://jira.onap.org/browse/OJSI-202>`_]
+* In default deployment OOM (consul-server-ui) exposes HTTP port 30270 outside of cluster. [`OJSI-134 <https://lf-onap.atlassian.net/browse/OJSI-134>`_]
+* Hard coded password used for all oom deployments [`OJSI-188 <https://lf-onap.atlassian.net/browse/OJSI-188>`_]
+* CVE-2019-12127 - OOM exposes unprotected API/UI on port 30270 [`OJSI-202 <https://lf-onap.atlassian.net/browse/OJSI-202>`_]
 
 *Known Vulnerabilities in Used Modules*
 
@@ -66,7 +66,7 @@ Critical vulnerability was found.
 
 Quick Links:
 
-  - `OOM project page <https://wiki.onap.org/display/DW/ONAP+Operations+Manager+Project>`_
+  - `OOM project page <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16230609/ONAP+Operations+Manager+Project>`_
 
   - `Passing Badge information for OOM <https://bestpractices.coreinfrastructure.org/en/projects/1631>`_
 
index c0374a6..db515dc 100644 (file)
@@ -55,36 +55,36 @@ New features
 **Bug fixes**
 
 A list of issues resolved in this release can be found here:
-https://jira.onap.org/projects/OOM/versions/10826
+https://lf-onap.atlassian.net/projects/OOM/versions/10826
 
 **Known Issues**
 
-- `OOM-1237 <https://jira.onap.org/browse/OOM-1237>`_ Source Helm Charts from
+- `OOM-1237 <https://lf-onap.atlassian.net/browse/OOM-1237>`_ Source Helm Charts from
   ONAP Repo. Having helm charts repo is not possible for Frankfurt release.
-- `OOM-1720 <https://jira.onap.org/browse/OOM-1237>`_ galera container is
+- `OOM-1720 <https://lf-onap.atlassian.net/browse/OOM-1237>`_ galera container is
   outdated. containers used for mariadb are outdated and not supported anymore.
-- `OOM-1817 <https://jira.onap.org/browse/OOM-1817>`_ Use of global.repository
+- `OOM-1817 <https://lf-onap.atlassian.net/browse/OOM-1817>`_ Use of global.repository
   inconsistent across Helm Charts. it's then may be hard to retrieve some
   containers when deploying in constrained environment.
-- `OOM-2075 <https://jira.onap.org/browse/OOM-2075>`_ Invalid MTU for Canal CNI
+- `OOM-2075 <https://lf-onap.atlassian.net/browse/OOM-2075>`_ Invalid MTU for Canal CNI
   interfaces
-- `OOM-2227 <https://jira.onap.org/browse/OOM-2227>`_ Cassandra Backup Mechanism
+- `OOM-2227 <https://lf-onap.atlassian.net/browse/OOM-2227>`_ Cassandra Backup Mechanism
   works only on "static PV" mode.
-- `OOM-2230 <https://jira.onap.org/browse/OOM-2230>`_ Missing requests/limits
+- `OOM-2230 <https://lf-onap.atlassian.net/browse/OOM-2230>`_ Missing requests/limits
   for some PODS. This can lead to "memory bombing" so cautious monitoring of
   Kubernetes resources usage must be set up.
-- `OOM-2279 <https://jira.onap.org/browse/OOM-2279>`_ OOM El Alto and master
+- `OOM-2279 <https://lf-onap.atlassian.net/browse/OOM-2279>`_ OOM El Alto and master
   clamp mariadb resources doesn't match chart.
-- `OOM-2285 <https://jira.onap.org/browse/OOM-2285>`_ deploy.sh does not work
+- `OOM-2285 <https://lf-onap.atlassian.net/browse/OOM-2285>`_ deploy.sh does not work
   for mariadb-galera. deploy script doesn't behave well with "-" in the
   component name.
-- `OOM-2369 <https://jira.onap.org/browse/OOM-2369>`_ DMAAP Helm install takes
+- `OOM-2369 <https://lf-onap.atlassian.net/browse/OOM-2369>`_ DMAAP Helm install takes
   too long and often fails.
-- `OOM-2418 <https://jira.onap.org/browse/OOM-2418>`_ Readiness-check 2.0.2 not
+- `OOM-2418 <https://lf-onap.atlassian.net/browse/OOM-2418>`_ Readiness-check 2.0.2 not
   working properly for stateful set.
-- `OOM-2421 <https://jira.onap.org/browse/OOM-2421>`_ OOM NBI chart deployment
+- `OOM-2421 <https://lf-onap.atlassian.net/browse/OOM-2421>`_ OOM NBI chart deployment
   error. In some case, NBI deployment fails.
-- `OOM-2422 <https://jira.onap.org/browse/OOM-2422>`_ Portal App is unreachable
+- `OOM-2422 <https://lf-onap.atlassian.net/browse/OOM-2422>`_ Portal App is unreachable
   when deploying without HTTPs
 
 
@@ -107,21 +107,21 @@ Known Vulnerabilities
 Workarounds
 -----------
 
-- `OOM-1237 <https://jira.onap.org/browse/OOM-1237>`_ Workaround is to generate
+- `OOM-1237 <https://lf-onap.atlassian.net/browse/OOM-1237>`_ Workaround is to generate
   them as explained in documentation.
-- `OOM-1817 <https://jira.onap.org/browse/OOM-1817>`_ Workaround is to use
+- `OOM-1817 <https://lf-onap.atlassian.net/browse/OOM-1817>`_ Workaround is to use
   offline installer if needed.
-- `OOM-2227 <https://jira.onap.org/browse/OOM-2227>`_ Workaround is to stick to
+- `OOM-2227 <https://lf-onap.atlassian.net/browse/OOM-2227>`_ Workaround is to stick to
   "static PV" (so, not using storage class) if backup is needed.
-- `OOM-2285 <https://jira.onap.org/browse/OOM-2285>`_ Workaround is to use
+- `OOM-2285 <https://lf-onap.atlassian.net/browse/OOM-2285>`_ Workaround is to use
   directly helm upgrade if needed.
-- `OOM-2369 <https://jira.onap.org/browse/OOM-2369>`_ Workaround is to play
+- `OOM-2369 <https://lf-onap.atlassian.net/browse/OOM-2369>`_ Workaround is to play
   postinstall jobs by hand.
-- `OOM-2418 <https://jira.onap.org/browse/OOM-2418>`_ Workaround is to use
+- `OOM-2418 <https://lf-onap.atlassian.net/browse/OOM-2418>`_ Workaround is to use
   version 2.2.2 in global part of override file if the new check is needed.
-- `OOM-2421 <https://jira.onap.org/browse/OOM-2421>`_ Workaround is to
+- `OOM-2421 <https://lf-onap.atlassian.net/browse/OOM-2421>`_ Workaround is to
   undeploy/redeploy NBI.
-- `OOM-2422 <https://jira.onap.org/browse/OOM-2422>`_ Workaround is to create
+- `OOM-2422 <https://lf-onap.atlassian.net/browse/OOM-2422>`_ Workaround is to create
   first portal app service with service type Cluster IP then changing it to
   NodePort or LoadBalancer so all the port are available.
 
@@ -131,9 +131,9 @@ Security Notes
 **Fixed Security Issues**
 
 - In default deployment OOM (consul-server-ui) exposes HTTP port 30270 outside
-  of cluster. [`OJSI-134 <https://jira.onap.org/browse/OJSI-134>`_]
+  of cluster. [`OJSI-134 <https://lf-onap.atlassian.net/browse/OJSI-134>`_]
 - CVE-2019-12127 - OOM exposes unprotected API/UI on port 30270
-  [`OJSI-202 <https://jira.onap.org/browse/OJSI-202>`_]
+  [`OJSI-202 <https://lf-onap.atlassian.net/browse/OJSI-202>`_]
 
 References
 ==========
@@ -147,6 +147,6 @@ For more information on the ONAP Frankfurt release, please see:
 
 
 .. _`ONAP Home Page`: https://www.onap.org
-.. _`ONAP Wiki Page`: https://wiki.onap.org
+.. _`ONAP Wiki Page`: https://lf-onap.atlassian.net/wiki
 .. _`ONAP Documentation`: https://docs.onap.org
 .. _`ONAP Release Downloads`: https://git.onap.org
index e8fda54..d6e00d0 100644 (file)
@@ -57,30 +57,30 @@ New features
 **Bug fixes**
 
 A list of issues resolved in this release can be found here:
-https://jira.onap.org/projects/OOM/versions/10826
+https://lf-onap.atlassian.net/projects/OOM/versions/10826
 
 **Known Issues**
 
-- `OOM-1237 <https://jira.onap.org/browse/OOM-1237>`_ Source Helm Charts from
+- `OOM-1237 <https://lf-onap.atlassian.net/browse/OOM-1237>`_ Source Helm Charts from
   ONAP Repo. Having helm charts repo is not possible for Frankfurt release.
-- `OOM-1720 <https://jira.onap.org/browse/OOM-1237>`_ galera container is
+- `OOM-1720 <https://lf-onap.atlassian.net/browse/OOM-1237>`_ galera container is
   outdated. containers used for mariadb are outdated and not supported anymore.
-- `OOM-1817 <https://jira.onap.org/browse/OOM-1817>`_ Use of global.repository
+- `OOM-1817 <https://lf-onap.atlassian.net/browse/OOM-1817>`_ Use of global.repository
   inconsistent across Helm Charts. it's then may be hard to retrieve some
   containers when deploying in constrained environment.
-- `OOM-2227 <https://jira.onap.org/browse/OOM-2227>`_ Cassandra Backup Mechanism
+- `OOM-2227 <https://lf-onap.atlassian.net/browse/OOM-2227>`_ Cassandra Backup Mechanism
   works only on "static PV" mode.
-- `OOM-2285 <https://jira.onap.org/browse/OOM-2285>`_ deploy.sh does not work
+- `OOM-2285 <https://lf-onap.atlassian.net/browse/OOM-2285>`_ deploy.sh does not work
   for mariadb-galera. deploy script doesn't behave well with "-" in the
   component name.
-- `OOM-2421 <https://jira.onap.org/browse/OOM-2421>`_ OOM nbi chart deployment
+- `OOM-2421 <https://lf-onap.atlassian.net/browse/OOM-2421>`_ OOM nbi chart deployment
   error
-- `OOM-2534 <https://jira.onap.org/browse/OOM-2534>`_ Cert-Service leverages
+- `OOM-2534 <https://lf-onap.atlassian.net/browse/OOM-2534>`_ Cert-Service leverages
   runtime external dependency
-- `OOM-2554 <https://jira.onap.org/browse/OOM-2554>`_ Common pods have java 8
-- `OOM-2588 <https://jira.onap.org/browse/OOM-2588>`_ Various subcharts not
+- `OOM-2554 <https://lf-onap.atlassian.net/browse/OOM-2554>`_ Common pods have java 8
+- `OOM-2588 <https://lf-onap.atlassian.net/browse/OOM-2588>`_ Various subcharts not
   installing due to helm size issues
-- `OOM-2629 <https://jira.onap.org/browse/OOM-2629>`_ NetBox demo entry setup
+- `OOM-2629 <https://lf-onap.atlassian.net/browse/OOM-2629>`_ NetBox demo entry setup
   not complete
 
 
@@ -104,20 +104,20 @@ Known Vulnerabilities
 ---------------------
 
 - Hard coded password used for all OOM deployments
-  [`OJSI-188 <https://jira.onap.org/browse/OJSI-188>`_]
+  [`OJSI-188 <https://lf-onap.atlassian.net/browse/OJSI-188>`_]
 
 Workarounds
 -----------
 
-- `OOM-1237 <https://jira.onap.org/browse/OOM-1237>`_ Workaround is to generate
+- `OOM-1237 <https://lf-onap.atlassian.net/browse/OOM-1237>`_ Workaround is to generate
   them as explained in documentation.
-- `OOM-1817 <https://jira.onap.org/browse/OOM-1817>`_ Workaround is to use
+- `OOM-1817 <https://lf-onap.atlassian.net/browse/OOM-1817>`_ Workaround is to use
   offline installer if needed.
-- `OOM-2227 <https://jira.onap.org/browse/OOM-2227>`_ Workaround is to stick to
+- `OOM-2227 <https://lf-onap.atlassian.net/browse/OOM-2227>`_ Workaround is to stick to
   "static PV" (so, not using storage class) if backup is needed.
-- `OOM-2285 <https://jira.onap.org/browse/OOM-2285>`_ Workaround is to use
+- `OOM-2285 <https://lf-onap.atlassian.net/browse/OOM-2285>`_ Workaround is to use
   directly helm upgrade if needed.
-- `OOM-2534 <https://jira.onap.org/browse/OOM-2534>`_ Workaround is to download
+- `OOM-2534 <https://lf-onap.atlassian.net/browse/OOM-2534>`_ Workaround is to download
   in advance docker.io/openjdk:11-jre-slim where you will generate the charts
 
 Security Notes
@@ -137,6 +137,6 @@ For more information on the ONAP Frankfurt release, please see:
 
 
 .. _`ONAP Home Page`: https://www.onap.org
-.. _`ONAP Wiki Page`: https://wiki.onap.org
+.. _`ONAP Wiki Page`: https://lf-onap.atlassian.net/wiki
 .. _`ONAP Documentation`: https://docs.onap.org
 .. _`ONAP Release Downloads`: https://git.onap.org
index 832ec58..1d72d76 100644 (file)
@@ -67,7 +67,7 @@ New features
 **Bug fixes**
 
 A list of issues resolved in this release can be found here:
-https://jira.onap.org/projects/OOM/versions/11073
+https://lf-onap.atlassian.net/projects/OOM/versions/11073
 
 major issues solved:
 
@@ -77,29 +77,29 @@ major issues solved:
 
 **Known Issues**
 
-- `OOM-2554 <https://jira.onap.org/browse/OOM-2554>`_ Common pods have java 8
-- `OOM-2435 <https://jira.onap.org/browse/OOM-2435>`_ SDNC karaf shell:
+- `OOM-2554 <https://lf-onap.atlassian.net/browse/OOM-2554>`_ Common pods have java 8
+- `OOM-2435 <https://lf-onap.atlassian.net/browse/OOM-2435>`_ SDNC karaf shell:
   log:list: Error executing command: Unrecognized configuration
-- `OOM-2629 <https://jira.onap.org/browse/OOM-2629>`_ NetBox demo entry setup
+- `OOM-2629 <https://lf-onap.atlassian.net/browse/OOM-2629>`_ NetBox demo entry setup
   not complete
-- `OOM-2706 <https://jira.onap.org/browse/OOM-2706>`_ CDS Blueprint Processor
+- `OOM-2706 <https://lf-onap.atlassian.net/browse/OOM-2706>`_ CDS Blueprint Processor
   does not work with local DB
-- `OOM-2713 <https://jira.onap.org/browse/OOM-2713>`_ Problem on onboarding
+- `OOM-2713 <https://lf-onap.atlassian.net/browse/OOM-2713>`_ Problem on onboarding
   custom cert to SDNC ONAP during deployment
-- `OOM-2698 <https://jira.onap.org/browse/OOM-2698>`_ SO helm override fails in
+- `OOM-2698 <https://lf-onap.atlassian.net/browse/OOM-2698>`_ SO helm override fails in
   for value with multi-level replacement
-- `OOM-2697 <https://jira.onap.org/browse/OOM-2697>`_ SO with local MariaDB
+- `OOM-2697 <https://lf-onap.atlassian.net/browse/OOM-2697>`_ SO with local MariaDB
   deployment fails
-- `OOM-2538 <https://jira.onap.org/browse/OOM-2538>`_ strange error with
+- `OOM-2538 <https://lf-onap.atlassian.net/browse/OOM-2538>`_ strange error with
   CertInitializer template
-- `OOM-2547 <https://jira.onap.org/browse/OOM-2547>`_ Health Check failures
+- `OOM-2547 <https://lf-onap.atlassian.net/browse/OOM-2547>`_ Health Check failures
   seen after bringing down/up control plane & worker node VM instances on which
   ONAP hosted
-- `OOM-2699 <https://jira.onap.org/browse/OOM-2699>`_ SO so-mariadb
+- `OOM-2699 <https://lf-onap.atlassian.net/browse/OOM-2699>`_ SO so-mariadb
   readinessCheck fails for local MariaDB instance
-- `OOM-2705 <https://jira.onap.org/browse/OOM-2705>`_ SDNC DB installation fails
+- `OOM-2705 <https://lf-onap.atlassian.net/browse/OOM-2705>`_ SDNC DB installation fails
   on local MariaDB instance
-- `OOM-2603 <https://jira.onap.org/browse/OOM-2603>`_ [SDNC] allign password for
+- `OOM-2603 <https://lf-onap.atlassian.net/browse/OOM-2603>`_ [SDNC] allign password for
   scaleoutUser/restconfUser/odlUser
 
 Deliverables
@@ -122,7 +122,7 @@ Known Vulnerabilities
 ---------------------
 
 - Hard coded password used for all OOM deployments
-  [`OJSI-188 <https://jira.onap.org/browse/OJSI-188>`_]
+  [`OJSI-188 <https://lf-onap.atlassian.net/browse/OJSI-188>`_]
 - `Hard coded certificates <../oom_hardcoded_certificates>` in Helm packages
 
 Workarounds
@@ -150,6 +150,6 @@ For more information on the ONAP Frankfurt release, please see:
 
 
 .. _`ONAP Home Page`: https://www.onap.org
-.. _`ONAP Wiki Page`: https://wiki.onap.org
+.. _`ONAP Wiki Page`: https://lf-onap.atlassian.net/wiki
 .. _`ONAP Documentation`: https://docs.onap.org
 .. _`ONAP Release Downloads`: https://git.onap.org
index a29b1e2..05f08b5 100644 (file)
@@ -56,7 +56,7 @@ New features
 **Bug fixes**
 
 A list of issues resolved in this release can be found here:
-https://jira.onap.org/projects/OOM/versions/11074
+https://lf-onap.atlassian.net/projects/OOM/versions/11074
 
 
 **Known Issues**
@@ -84,7 +84,7 @@ Known Vulnerabilities
 Workarounds
 -----------
 
-- `OOM-2754 <https://jira.onap.org/browse/OOM-2754>`_
+- `OOM-2754 <https://lf-onap.atlassian.net/browse/OOM-2754>`_
   Because of *updateEndpoint* property added to *cmpv2issuer* CRD
   it is impossible to upgrade platform component from Honolulu to Istanbul
   release without manual steps. Actions that should be performed:
@@ -119,6 +119,6 @@ For more information on the ONAP Istanbul release, please see:
 
 
 .. _`ONAP Home Page`: https://www.onap.org
-.. _`ONAP Wiki Page`: https://wiki.onap.org
+.. _`ONAP Wiki Page`: https://lf-onap.atlassian.net/wiki
 .. _`ONAP Documentation`: https://docs.onap.org
 .. _`ONAP Release Downloads`: https://git.onap.org
index cfc5788..335c6ba 100644 (file)
@@ -57,7 +57,7 @@ New features
 **Bug fixes**
 
 A list of issues resolved in this release can be found here:
-https://jira.onap.org/projects/OOM/versions/11498
+https://lf-onap.atlassian.net/projects/OOM/versions/11498
 
 
 **Known Issues**
@@ -84,7 +84,7 @@ Known Vulnerabilities
 Workarounds
 -----------
 
-- `OOM-2754 <https://jira.onap.org/browse/OOM-2754>`_
+- `OOM-2754 <https://lf-onap.atlassian.net/browse/OOM-2754>`_
   Because of *updateEndpoint* property added to *cmpv2issuer* CRD
   it is impossible to upgrade platform component from Istanbul to Jakarta
   release without manual steps. Actions that should be performed:
@@ -119,6 +119,6 @@ For more information on the ONAP Istanbul release, please see:
 
 
 .. _`ONAP Home Page`: https://www.onap.org
-.. _`ONAP Wiki Page`: https://wiki.onap.org
+.. _`ONAP Wiki Page`: https://lf-onap.atlassian.net/wiki
 .. _`ONAP Documentation`: https://docs.onap.org
 .. _`ONAP Release Downloads`: https://git.onap.org
index 66d0462..cdd1889 100644 (file)
@@ -56,7 +56,8 @@ New features
 
 * Kubernetes support for version up to 1.23.8
 * Helm support for version up to Helm: 3.8.2
-* Kubespray version used for automated deployment 2.19 (used for automated deployment)
+* Kubespray version used for automated deployment 2.19 (used for automated
+  deployment)
 * Initial Setup for "ONAP on ServiceMesh" deployment
 
   * using Istio 1.14.1 as SM platform
@@ -66,7 +67,7 @@ New features
 **Bug fixes**
 
 A list of issues resolved in this release can be found here:
-https://jira.onap.org/projects/OOM/versions/11499
+https://lf-onap.atlassian.net/projects/OOM/versions/11499
 
 
 **Known Issues**
@@ -83,12 +84,16 @@ OOM provides `Helm charts <https://nexus3.onap.org/service/rest/repository/brows
 Documentation Deliverables
 ~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-- :ref:`Project Description <oom_project_description>` - a guide for developers of OOM
+- :ref:`Project Description <oom_project_description>` - a guide for developers
+  of OOM
 - :ref:`oom_dev_guide` - a guide for developers of OOM
-- :ref:`oom_infra_guide` - a guide for those setting up the environments that OOM will use
-- :ref:`oom_deploy_guide` - a guide for those deploying OOM on an existing cloud
+- :ref:`oom_infra_guide` - a guide for those setting up the environments that
+  OOM will use
+- :ref:`oom_deploy_guide` - a guide for those deploying OOM on an existing
+  cloud
 - :ref:`oom_user_guide` - a guide for operators of an OOM instance
-- :ref:`oom_access_info_guide` - a guide for operators who require access to OOM applications
+- :ref:`oom_access_info_guide` - a guide for operators who require access to
+   OOM applications
 
 Known Limitations, Issues and Workarounds
 =========================================
@@ -97,7 +102,7 @@ Known Vulnerabilities
 ---------------------
 
 * Cassandra version needs to be updated to support new Python version
-  see `OOM-2900 <https://jira.onap.org/browse/OOM-2900>`_
+  see `OOM-2900 <https://lf-onap.atlassian.net/browse/OOM-2900>`_
 
 Workarounds
 -----------
@@ -109,7 +114,7 @@ Security Notes
 **Fixed Security Issues**
 
 * Fixed vulnerabilities for oom-platform-cert-service
-  see `Fixes <https://wiki.onap.org/pages/viewpage.action?spaceKey=SV&title=Kohn+OOM>`_
+  see `Fixes <https://lf-onap.atlassian.net/wiki/spaces/SV/pages/16093810/Kohn+OOM>`_
 
 References
 ==========
@@ -123,6 +128,6 @@ For more information on the ONAP Istanbul release, please see:
 
 
 .. _`ONAP Home Page`: https://www.onap.org
-.. _`ONAP Wiki Page`: https://wiki.onap.org
+.. _`ONAP Wiki Page`: https://lf-onap.atlassian.net/wiki
 .. _`ONAP Documentation`: https://docs.onap.org
 .. _`ONAP Release Downloads`: https://git.onap.org
index 28911b8..6ccbac0 100644 (file)
@@ -58,22 +58,25 @@ New features
 * Introduction of "Production" ONAP setup, including:
 
   * Istio Service Mesh based deployment
-  * Ingress (Istio-Gateway) deployment and usage as standard external access method
-  * Internal Security provided by ServiceMesh and Component2Component AuthorizationPolicies
-  * External Security by introducing AuthN/Z using Keycloak and OAuth2Proxy for Ingress Access
+  * Ingress (Istio-Gateway) deployment and usage as standard external access
+    method
+  * Internal Security provided by ServiceMesh and Component2Component
+    AuthorizationPolicies
+  * External Security by introducing AuthN/Z using Keycloak and OAuth2Proxy for
+    Ingress Access
 
 * Removal of unsupported components (AAF, Portal, Contrib,...)
 * Update of Helmcharts to use common templates and practices
 * Optional support for Cassandra 4.x using k8ssandra-operator
 
-* `REQ-1349 <https://jira.onap.org/browse/REQ-1349>`_ Removal of AAF.
+* `REQ-1349 <https://lf-onap.atlassian.net/browse/REQ-1349>`_ Removal of AAF.
   Internal communication encryption and authorization is offered by ServiceMesh
 
-* `REQ-1350 <https://jira.onap.org/browse/REQ-1350>`_ All component must be
+* `REQ-1350 <https://lf-onap.atlassian.net/browse/REQ-1350>`_ All component must be
   able to run without MSB. Component helm charts modified to use MSB optionally
   and test the components during Daily and Gating with and without MSB
 
-* `REQ-1351 <https://jira.onap.org/browse/REQ-1351>`_ External secure
+* `REQ-1351 <https://lf-onap.atlassian.net/browse/REQ-1351>`_ External secure
   communication only via Ingress.
   Ingress resources created by templates and Ingress installation is described
   in the OOM documents
@@ -81,7 +84,7 @@ New features
 **Bug fixes**
 
 A list of issues resolved in this release can be found here:
-https://jira.onap.org/projects/OOM/versions/11500
+https://lf-onap.atlassian.net/projects/OOM/versions/11500
 
 **Known Issues**
 
@@ -102,12 +105,16 @@ OOM provides `Helm charts <https://nexus3.onap.org/service/rest/repository/brows
 Documentation Deliverables
 ~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-- :ref:`Project Description <oom_project_description>` - a guide for developers of OOM
+- :ref:`Project Description <oom_project_description>` - a guide for developers
+  of OOM
 - :ref:`oom_dev_guide` - a guide for developers of OOM
-- :ref:`oom_infra_guide` - a guide for those setting up the environments that OOM will use
-- :ref:`oom_deploy_guide` - a guide for those deploying OOM on an existing cloud
+- :ref:`oom_infra_guide` - a guide for those setting up the environments that
+  OOM will use
+- :ref:`oom_deploy_guide` - a guide for those deploying OOM on an existing
+  cloud
 - :ref:`oom_user_guide` - a guide for operators of an OOM instance
-- :ref:`oom_access_info_guide` - a guide for operators who require access to OOM applications
+- :ref:`oom_access_info_guide` - a guide for operators who require access to
+  OOM applications
 
 Known Limitations, Issues and Workarounds
 =========================================
@@ -116,7 +123,7 @@ Known Vulnerabilities
 ---------------------
 
 * Cassandra version needs to be updated to support new Python version
-  see `OOM-2900 <https://jira.onap.org/browse/OOM-2900>`_
+  see `OOM-2900 <https://lf-onap.atlassian.net/browse/OOM-2900>`_
   In London supported as option (using k8ssandra-operator), see :ref:`oom_base_optional_addons`
 
 Workarounds
@@ -139,6 +146,6 @@ For more information on the ONAP Istanbul release, please see:
 
 
 .. _`ONAP Home Page`: https://www.onap.org
-.. _`ONAP Wiki Page`: https://wiki.onap.org
+.. _`ONAP Wiki Page`: https://lf-onap.atlassian.net/wiki
 .. _`ONAP Documentation`: https://docs.onap.org
 .. _`ONAP Release Downloads`: https://git.onap.org
diff --git a/docs/sections/release_notes/release-notes-montreal.rst b/docs/sections/release_notes/release-notes-montreal.rst
new file mode 100644 (file)
index 0000000..ab12d1e
--- /dev/null
@@ -0,0 +1,135 @@
+.. This work is licensed under a Creative Commons Attribution 4.0
+   International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. (c) ONAP Project and its contributors
+.. _release_notes_montreal:
+
+:orphan:
+
+*************************************
+ONAP Operations Manager Release Notes
+*************************************
+
+Previous Release Notes
+======================
+
+- :ref:`London <release_notes_london>`
+- :ref:`Kohn <release_notes_kohn>`
+- :ref:`Jakarta <release_notes_jakarta>`
+- :ref:`Istanbul <release_notes_istanbul>`
+- :ref:`Honolulu <release_notes_honolulu>`
+- :ref:`Guilin <release_notes_guilin>`
+- :ref:`Frankfurt <release_notes_frankfurt>`
+- :ref:`El Alto <release_notes_elalto>`
+- :ref:`Dublin <release_notes_dublin>`
+- :ref:`Casablanca <release_notes_casablanca>`
+- :ref:`Beijing <release_notes_beijing>`
+- :ref:`Amsterdam <release_notes_amsterdam>`
+
+Abstract
+========
+
+This document provides the release notes for the Montreal release.
+
+Summary
+=======
+
+
+
+Release Data
+============
+
++--------------------------------------+--------------------------------------+
+| **Project**                          | OOM                                  |
+|                                      |                                      |
++--------------------------------------+--------------------------------------+
+| **Docker images**                    | N/A                                  |
+|                                      |                                      |
++--------------------------------------+--------------------------------------+
+| **Release designation**              | Montreal                             |
+|                                      |                                      |
++--------------------------------------+--------------------------------------+
+| **Release date**                     | 2023/12/14                           |
+|                                      |                                      |
++--------------------------------------+--------------------------------------+
+
+New features
+------------
+
+* Introduction of "Production" ONAP setup, including:
+
+  * Besides the Istio Ingress APIs now the support for `Gateway-API`_
+    is added to the templates, which includes:
+
+    * TCP Routes
+    * UDP Routes
+
+* Update of Helmcharts to use common templates and practices
+* Default support for Cassandra 4.x using k8ssandra-operator
+* Default support for MariaDB 11.x using mariadb-operator
+
+**Bug fixes**
+
+A list of issues resolved in this release can be found here:
+https://lf-onap.atlassian.net/projects/OOM/versions/11501
+
+**Known Issues**
+
+* Components not working under ServiceMesh
+
+  * SO Monitor UI
+  * Policy UI
+
+Deliverables
+------------
+
+Software Deliverables
+~~~~~~~~~~~~~~~~~~~~~
+
+OOM provides `Helm charts <https://nexus3.onap.org/service/rest/repository/browse/onap-helm-release/>`_
+
+Documentation Deliverables
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+- :ref:`Project Description <oom_project_description>` - a guide for developers
+  of OOM
+- :ref:`oom_dev_guide` - a guide for developers of OOM
+- :ref:`oom_infra_guide` - a guide for those setting up the environments that
+  OOM will use
+- :ref:`oom_deploy_guide` - a guide for those deploying OOM on an existing
+  cloud
+- :ref:`oom_user_guide` - a guide for operators of an OOM instance
+- :ref:`oom_access_info_guide` - a guide for operators who require access to
+  OOM applications
+
+Known Limitations, Issues and Workarounds
+=========================================
+
+Known Vulnerabilities
+---------------------
+
+
+Workarounds
+-----------
+
+Security Notes
+--------------
+
+**Fixed Security Issues**
+
+References
+==========
+
+For more information on the ONAP Istanbul release, please see:
+
+#. `ONAP Home Page`_
+#. `ONAP Documentation`_
+#. `ONAP Release Downloads`_
+#. `ONAP Wiki Page`_
+
+
+.. _`ONAP Home Page`: https://www.onap.org
+.. _`ONAP Wiki Page`: https://lf-onap.atlassian.net/wiki
+.. _`ONAP Documentation`: https://docs.onap.org
+.. _`ONAP Release Downloads`: https://git.onap.org
+.. _`Gateway-API`: https://istio.io/latest/docs/tasks/traffic-management/ingress/gateway-api/
diff --git a/docs/sections/release_notes/release-notes-newdelhi.rst b/docs/sections/release_notes/release-notes-newdelhi.rst
new file mode 100644 (file)
index 0000000..cf7cee5
--- /dev/null
@@ -0,0 +1,138 @@
+.. This work is licensed under a Creative Commons Attribution 4.0
+   International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. (c) ONAP Project and its contributors
+.. _release_notes_newdelhi:
+
+:orphan:
+
+*************************************
+ONAP Operations Manager Release Notes
+*************************************
+
+Previous Release Notes
+======================
+
+- :ref:`Montreal <release_notes_montreal>`
+- :ref:`London <release_notes_london>`
+- :ref:`Kohn <release_notes_kohn>`
+- :ref:`Jakarta <release_notes_jakarta>`
+- :ref:`Istanbul <release_notes_istanbul>`
+- :ref:`Honolulu <release_notes_honolulu>`
+- :ref:`Guilin <release_notes_guilin>`
+- :ref:`Frankfurt <release_notes_frankfurt>`
+- :ref:`El Alto <release_notes_elalto>`
+- :ref:`Dublin <release_notes_dublin>`
+- :ref:`Casablanca <release_notes_casablanca>`
+- :ref:`Beijing <release_notes_beijing>`
+- :ref:`Amsterdam <release_notes_amsterdam>`
+
+Abstract
+========
+
+This document provides the release notes for the New Delhi release.
+
+Summary
+=======
+
+
+
+Release Data
+============
+
++--------------------------------------+--------------------------------------+
+| **Project**                          | OOM                                  |
+|                                      |                                      |
++--------------------------------------+--------------------------------------+
+| **Docker images**                    | N/A                                  |
+|                                      |                                      |
++--------------------------------------+--------------------------------------+
+| **Release designation**              | New Delhi                            |
+|                                      |                                      |
++--------------------------------------+--------------------------------------+
+| **Release date**                     | 2024/06/13                           |
+|                                      |                                      |
++--------------------------------------+--------------------------------------+
+
+New features
+------------
+
+* authentication (14.0.0) - add configurable Keycloak Realm and enable Ingress
+  Interface Authentication and Authorization
+* Update the helm common templates (13.2.0) to:
+
+  * Support the latest Database Operators:
+
+    * MariaDB-Operator (0.28.1)
+    * K8ssandra-Operator (v0.16.0)
+    * Postgres-Operator (CrunchyData) (5.5.0)
+
+* cassandra (13.1.0) - support for new K8ssandra-Operator
+* mariadb-galera (13.1.0) - support for new MariaDB-Operator
+* mongodb (14.12.3) - update to latest bitnami chart version
+* postgres (13.1.0) - support for new Postgres-Operator
+* postgres-init (13.0.1) - support for new Postgres-Operator
+* readinessCheck (13.1.0) - added check for "Service" readiness
+* serviceAccount (13.0.1) - add default role creation
+
+**Bug fixes**
+
+A list of issues resolved in this release can be found here:
+https://lf-onap.atlassian.net/projects/OOM/versions/11502
+
+**Known Issues**
+
+
+Deliverables
+------------
+
+Software Deliverables
+~~~~~~~~~~~~~~~~~~~~~
+
+OOM provides `Helm charts <https://nexus3.onap.org/service/rest/repository/browse/onap-helm-release/>`_
+
+Documentation Deliverables
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+- :ref:`Project Description <oom_project_description>` - a guide for developers
+  of OOM
+- :ref:`oom_dev_guide` - a guide for developers of OOM
+- :ref:`oom_infra_guide` - a guide for those setting up the environments that
+  OOM will use
+- :ref:`oom_deploy_guide` - a guide for those deploying OOM on an existing
+  cloud
+- :ref:`oom_user_guide` - a guide for operators of an OOM instance
+- :ref:`oom_access_info_guide` - a guide for operators who require access to
+  OOM applications
+
+Known Limitations, Issues and Workarounds
+=========================================
+
+Known Vulnerabilities
+---------------------
+
+
+Workarounds
+-----------
+
+Security Notes
+--------------
+
+**Fixed Security Issues**
+
+References
+==========
+
+For more information on the ONAP Istanbul release, please see:
+
+#. `ONAP Home Page`_
+#. `ONAP Documentation`_
+#. `ONAP Release Downloads`_
+#. `ONAP Wiki Page`_
+
+
+.. _`ONAP Home Page`: https://www.onap.org
+.. _`ONAP Wiki Page`: https://lf-onap.atlassian.net/wiki
+.. _`ONAP Documentation`: https://docs.onap.org
+.. _`ONAP Release Downloads`: https://git.onap.org
+.. _`Gateway-API`: https://istio.io/latest/docs/tasks/traffic-management/ingress/gateway-api/
index 0df9483..161f251 100644 (file)
@@ -11,6 +11,8 @@ ONAP Operations Manager Release Notes
 Previous Release Notes
 ======================
 
+- :ref:`New Delhi <release_notes_newdelhi>`
+- :ref:`Montreal <release_notes_montreal>`
 - :ref:`London <release_notes_london>`
 - :ref:`Kohn <release_notes_kohn>`
 - :ref:`Jakarta <release_notes_jakarta>`
@@ -27,7 +29,7 @@ Previous Release Notes
 Abstract
 ========
 
-This document provides the release notes for the Montreal release.
+This document provides the release notes for the Oslo release.
 
 Summary
 =======
@@ -44,39 +46,77 @@ Release Data
 | **Docker images**                    | N/A                                  |
 |                                      |                                      |
 +--------------------------------------+--------------------------------------+
-| **Release designation**              | Montreal                             |
+| **Release designation**              | Oslo                                 |
 |                                      |                                      |
 +--------------------------------------+--------------------------------------+
-| **Release date**                     | 2023/12/xx                           |
+| **Release date**                     | 2025/01/09                           |
 |                                      |                                      |
 +--------------------------------------+--------------------------------------+
 
 New features
 ------------
 
-* Introduction of "Production" ONAP setup, including:
+* Support the latest Database Operators:
 
-  * Besides the Istio Ingress APIs now the support for `Gateway-API`_
-    is added to the templates, which includes:
+  * MariaDB-Operator (0.36.0)
+  * K8ssandra-Operator (v0.20.2)
+  * Postgres-Operator (CrunchyData) (5.7.2)
+  * MongoDB-Operator (Percona) (1.18.0)
 
-    * TCP Routes
-    * UDP Routes
+* authentication (15.0.0)
 
-* Update of Helmcharts to use common templates and practices
-* Default support for Cassandra 4.x using k8ssandra-operator
-* Default support for MariaDB 11.x using mariadb-operator
+  * support for REALM Client AuthorizationSettings
+  * update oauth2-proxy and keycloak-config-cli versions
+  * add support for latest keycloak version 26.x
+
+* Update the helm common templates (13.2.10) to:
+
+  * add SecurityContext settings for Production readiness
+
+* cassandra (13.1.1)
+
+  * support for new cassandra version (4.1.6)
+  * add SecurityContext settings for Production readiness
+
+* mariadb-galera (13.2.3)
+
+  * add SecurityContext settings for Production readiness
+
+* mariadb-init (13.0.2)
+
+  * add SecurityContext settings for Production readiness
+
+* mongodb (14.12.4)
+
+  * add SecurityContext settings for Production readiness
+
+* mongodb-init (13.0.2)
+
+  * new chart to support external mongodb initialization
+
+* postgres (13.1.0)
+
+  * add SecurityContext settings for Production readiness
+
+* postgres-init (13.0.3)
+
+  * add SecurityContext settings for Production readiness
+
+* readinessCheck (13.1.1)
+
+  * add SecurityContext settings for Production readiness
+
+* serviceAccount (13.0.2)
+
+  * adjust default role mapping
 
 **Bug fixes**
 
 A list of issues resolved in this release can be found here:
-https://jira.onap.org/projects/OOM/versions/11501
+https://lf-onap.atlassian.net/projects/OOM/versions/10783
 
 **Known Issues**
 
-* Components not working under ServiceMesh
-
-  * SO Monitor UI
-  * Policy UI
 
 Deliverables
 ------------
@@ -89,12 +129,16 @@ OOM provides `Helm charts <https://nexus3.onap.org/service/rest/repository/brows
 Documentation Deliverables
 ~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-- :ref:`Project Description <oom_project_description>` - a guide for developers of OOM
+- :ref:`Project Description <oom_project_description>` - a guide for developers
+  of OOM
 - :ref:`oom_dev_guide` - a guide for developers of OOM
-- :ref:`oom_infra_guide` - a guide for those setting up the environments that OOM will use
-- :ref:`oom_deploy_guide` - a guide for those deploying OOM on an existing cloud
+- :ref:`oom_infra_guide` - a guide for those setting up the environments that
+  OOM will use
+- :ref:`oom_deploy_guide` - a guide for those deploying OOM on an existing
+  cloud
 - :ref:`oom_user_guide` - a guide for operators of an OOM instance
-- :ref:`oom_access_info_guide` - a guide for operators who require access to OOM applications
+- :ref:`oom_access_info_guide` - a guide for operators who require access to
+  OOM applications
 
 Known Limitations, Issues and Workarounds
 =========================================
@@ -123,7 +167,7 @@ For more information on the ONAP Istanbul release, please see:
 
 
 .. _`ONAP Home Page`: https://www.onap.org
-.. _`ONAP Wiki Page`: https://wiki.onap.org
+.. _`ONAP Wiki Page`: https://lf-onap.atlassian.net/wiki
 .. _`ONAP Documentation`: https://docs.onap.org
 .. _`ONAP Release Downloads`: https://git.onap.org
 .. _`Gateway-API`: https://istio.io/latest/docs/tasks/traffic-management/ingress/gateway-api/
index fbca944..b854c7a 100644 (file)
@@ -1,29 +1,24 @@
 NAME                    CHART VERSION    APP VERSION    DESCRIPTION
-local/onap                    12.0.0     London         Open Network Automation Platform (ONAP)
-local/a1policymanagement      12.0.0                    ONAP A1 Policy Management
-local/aai                     12.0.0                    ONAP Active and Available Inventory
-local/cassandra               12.0.0                    ONAP cassandra
-local/cds                     12.0.0                    ONAP Controller Design Studio (CDS)
-local/cli                     12.0.0                    ONAP Command Line Interface
-local/common                  12.0.0                    Common templates for inclusion in other charts
-local/cps                     12.0.0                    ONAP Configuration Persistene Service (CPS)
-local/dcaegen2                12.0.0                    ONAP DCAE Gen2
-local/dmaap                   12.0.0                    ONAP DMaaP components
-local/mariadb-galera          12.0.0                    Chart for MariaDB Galera cluster
-local/msb                     12.0.0                    ONAP MicroServices Bus
-local/multicloud              12.0.0                    ONAP multicloud broker
-local/nbi                     12.0.0                    ONAP Northbound Interface
-local/nfs-provisioner         12.0.0                    NFS provisioner
-local/oof                     12.0.0                    ONAP Optimization Framework
-local/policy                  12.0.0                    ONAP Policy Administration Point
-local/postgres                12.0.0                    ONAP Postgres Server
-local/robot                   12.0.0                    A helm Chart for kubernetes-ONAP Robot
-local/sdc                     12.0.0                    Service Design and Creation Umbrella Helm charts
-local/sdnc                    12.0.0                    SDN Controller
-local/sdnc-prom               12.0.0                    ONAP SDNC Policy Driven Ownership Management
-local/sniro-emulator          12.0.0                    ONAP Mock Sniro Emulator
-local/so                      12.0.0                    ONAP Service Orchestrator
-local/strimzi                 12.0.0                    ONAP Strimzi Apache Kafka
-local/uui                     12.0.0                    ONAP uui
-local/vfc                     12.0.0                    ONAP Virtual Function Controller (VF-C)
-local/vnfsdk                  12.0.0                    ONAP VNF SDK
+local/onap                    15.0.0     Oslo           Open Network Automation Platform (ONAP)
+local/a1policymanagement      13.0.0                    ONAP A1 Policy Management
+local/aai                     15.0.1                    ONAP Active and Available Inventory
+local/authentication          15.0.0                    ONAP Realm creation, Oauth2Proxy installation and configuration
+local/cassandra               13.1.1                    ONAP cassandra
+local/cds                     13.0.2                    ONAP Controller Design Studio (CDS)
+local/common                  13.2.10                   Common templates for inclusion in other charts
+local/cps                     13.0.1                    ONAP Configuration Persistene Service (CPS)
+local/dcaegen2                15.0.1                    ONAP DCAE Gen2
+local/mariadb-galera          13.2.3                    Chart for MariaDB Galera cluster
+local/multicloud              15.0.2                    ONAP multicloud broker
+local/platform                13.0.1                    ONAP platform components
+local/policy                  15.0.1                    ONAP Policy Administration Point
+local/portal-ng               13.0.1                    ONAP Next Generation Portal
+local/postgres                13.1.0                    ONAP Postgres Server
+local/repository-wrapper      13.0.0                    Wrapper chart to allow docker secret to be shared all instances
+local/robot                   13.0.0                    A helm Chart for kubernetes-ONAP Robot
+local/roles-wrapper           13.0.0                    Wrapper chart to allow default roles to be shared among onap instances
+local/sdc                     13.0.1                    Service Design and Creation Umbrella Helm charts
+local/sdnc                    15.1.0                    SDN Controller
+local/so                      13.0.1                    ONAP Service Orchestrator
+local/strimzi                 13.0.2                    ONAP Strimzi Apache Kafka
+local/uui                     13.1.0                    ONAP uui
index 3cc1cc5..cc6ed61 100644 (file)
@@ -1,4 +1,4 @@
-apiVersion: gateway.networking.k8s.io/v1beta1
+apiVersion: gateway.networking.k8s.io/v1
 kind: Gateway
 metadata:
   name: common-gateway
index 64dee3e..f49325a 100644 (file)
@@ -11,9 +11,9 @@ global:
 
   # image repositories
   repository: nexus3.onap.org:10001
-  repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ==
+  repositorySecret: <base64 encypted secret>
   # readiness check
-  readinessImage: onap/oom/readiness:6.0.3
+  readinessImage: onap/oom/readiness:6.1.1
   # logging agent
   loggingRepository: docker.elastic.co
 
diff --git a/docs/sections/resources/yaml/istiod-1_21.yaml b/docs/sections/resources/yaml/istiod-1_21.yaml
new file mode 100644 (file)
index 0000000..d85ec11
--- /dev/null
@@ -0,0 +1,21 @@
+defaults:
+  #global:
+    #logging:
+    #  level: "default:debug"
+  meshConfig:
+    rootNamespace: istio-config
+    # Controls if sidecar is injected at the front of the container list and blocks the start of the other containers until the proxy is ready
+    holdApplicationUntilProxyStarts: true
+    extensionProviders:
+    - name: oauth2-proxy
+      envoyExtAuthzHttp:
+        service: oauth2-proxy.default.svc.cluster.local
+        port: 80
+        timeout: 1.5s
+        includeHeadersInCheck: ["authorization", "cookie"]
+        headersToUpstreamOnAllow: ["x-forwarded-access-token", "authorization", "path", "x-auth-request-user", "x-auth-request-email", "x-auth-request-access-token"]
+        headersToDownstreamOnDeny: ["content-type", "set-cookie"]
+  pilot:
+    env:
+      PILOT_HTTP10: true
+      ENABLE_NATIVE_SIDECARS: true
\ No newline at end of file
index 91fc34f..9318b37 100644 (file)
@@ -24,7 +24,7 @@ spec:
     Matches:
       Path:
         Type:   PathPrefix
-        Value:  /auth
+        Value:  /
 ---
 apiVersion: gateway.networking.k8s.io/v1
 kind: HTTPRoute
@@ -46,10 +46,10 @@ spec:
   - backendRefs:
     - group: ""
       kind: Service
-      name: keycloak-keycloakx-http
+      name: keycloak-http
       port: 80
       weight: 1
     matches:
     - path:
         type: PathPrefix
-        value: /auth
+        value: /
index 0160ce8..8f13e1f 100644 (file)
@@ -1,12 +1,17 @@
 ---
+fullnameOverride: keycloak
+
+image:
+  tag: "26.0.6"
+
 command:
   - "/opt/keycloak/bin/kc.sh"
   - "--verbose"
   - "start"
+  - "--proxy-headers=forwarded"
   - "--http-enabled=true"
   - "--http-port=8080"
   - "--hostname-strict=false"
-  - "--hostname-strict-https=false"
   - "--spi-events-listener-jboss-logging-success-level=info"
   - "--spi-events-listener-jboss-logging-error-level=warn"
 
@@ -46,3 +51,7 @@ secrets:
     stringData:
       user: admin
       password: secret
+
+http:
+  # For backwards compatibility reasons we set this to the value used by previous Keycloak versions.
+  relativePath: "" # "/auth"
index 7f00c2f..89137d2 100644 (file)
 apiVersion: v2
 description: ONAP Active and Available Inventory
 name: aai
-version: 13.0.1
+version: 16.0.1
 
 dependencies:
   - name: common
     version: ~13.x-0
     repository: '@local'
   - name: cassandra
-    version: ~13.x-0
+    version: ~16.x-0
     # local reference to common chart, as it is
     # a part of this chart's package and will not
     # be published independently to a repo (at this point)
@@ -34,32 +34,35 @@ dependencies:
   - name: repositoryGenerator
     version: ~13.x-0
     repository: '@local'
-  - name: aai-babel
+  - name: readinessCheck
     version: ~13.x-0
+    repository: '@local'
+  - name: aai-babel
+    version: ~15.x-0
     repository: 'file://components/aai-babel'
     condition: aai-babel.enabled
   - name: aai-graphadmin
-    version: ~13.x-0
+    version: ~16.x-0
     repository: 'file://components/aai-graphadmin'
     condition: aai-graphadmin.enabled
   - name: aai-modelloader
-    version: ~13.x-0
+    version: ~15.x-0
     repository: 'file://components/aai-modelloader'
     condition: aai-modelloader.enabled
   - name: aai-resources
-    version: ~13.x-0
+    version: ~16.x-0
     repository: 'file://components/aai-resources'
     condition: aai-resources.enabled
   - name: aai-schema-service
-    version: ~13.x-0
+    version: ~16.x-0
     repository: 'file://components/aai-schema-service'
     condition: aai-schema-service.enabled
   - name: aai-sparky-be
-    version: ~13.x-0
+    version: ~16.x-0
     repository: 'file://components/aai-sparky-be'
     condition: aai-sparky-be.enabled
   - name: aai-traversal
-    version: ~13.x-0
+    version: ~16.x-0
     repository: 'file://components/aai-traversal'
     condition: aai-traversal.enabled
   - name: serviceAccount
index 447b59f..376a7dd 100644 (file)
@@ -18,7 +18,7 @@
 apiVersion: v2
 description: Babel microservice
 name: aai-babel
-version: 13.0.0
+version: 15.0.2
 
 dependencies:
   - name: common
index 96f1a3e..8f47bf0 100644 (file)
@@ -1,7 +1,7 @@
 {{/*
 # Copyright © 2018 Amdocs, Bell Canada, AT&T
 # Copyright © 2021 Orange
-# Modifications Copyright © 2023 Nordix Foundation
+# Modifications Copyright  2023 Nordix Foundation
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -23,3 +23,14 @@ spring.main.allow-bean-definition-overriding=true
 server.servlet.context-path=/services/babel-service
 logging.config=${CONFIG_HOME}/logback.xml
 tosca.mappings.config=${CONFIG_HOME}/tosca-mappings.json
+
+spring.application.name=aai-babel
+spring.sleuth.enabled={{ .Values.global.tracing.enabled }}
+spring.zipkin.baseUrl={{ .Values.global.tracing.collector.baseUrl }}
+spring.sleuth.messaging.jms.enabled = false
+spring.sleuth.trace-id128=true
+spring.sleuth.sampler.probability={{ .Values.global.tracing.sampling.probability }}
+spring.sleuth.propagation.type=w3c, b3
+spring.sleuth.supports-join=false
+
+management.endpoints.web.exposure.include=*
index 125731c..51ebf9d 100644 (file)
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0"?>
 <!--
 # Copyright © 2018 Amdocs, Bell Canada, AT&T
 # Modifications Copyright © 2021 Orange
 # See the License for the specific language governing permissions and
 # limitations under the License.
 -->
-<!DOCTYPE xml>
 <configuration scan="true" scanPeriod="30 seconds" debug="true">
-  <include resource="org/springframework/boot/logging/logback/base.xml" />
 
-  <property name="componentName" value="AAI-BAS" />
-  <property name="logDirectory" value="/var/log/onap/${componentName}" />
-
-  <!-- default EELF log file names -->
-  <property name="generalLogName" value="error" />
-  <property name="metricsLogName" value="metrics" />
-  <property name="auditLogName" value="audit" />
-  <property name="debugLogName" value="debug" />
-
-  <property name="errorLogPattern" value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%mdc{RequestId}|%thread|%mdc{ServiceName}|%mdc{PartnerName}|%mdc{TargetEntity}|%mdc{TargetServiceName}|%.-5level|%logger|%mdc{ClassName}|%msg%n" />
-
-  <property name="auditLogPattern" value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%mdc{BeginTimestamp}|%mdc{EndTimestamp}|%mdc{RequestId}|%mdc{ServiceInstanceId}|%thread|%mdc{ServerFQDN}|%mdc{ServiceName}|%mdc{PartnerName}|%mdc{StatusCode}|%mdc{ResponseCode}|%mdc{ResponseDescription}|%logger|%.-5level|||%mdc{ElapsedTime}|%mdc{RemoteHost}|%mdc{ClientAddress}|%mdc{ClassName}|||%msg%n" />
-
-  <property name="metricsLogPattern" value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%mdc{BeginTimestamp}|%mdc{EndTimestamp}|%mdc{RequestId}|%mdc{ServiceInstanceId}|%thread|%mdc{ServerFQDN}|%mdc{ServiceName}|%mdc{PartnerName}|%mdc{TargetEntity}|%mdc{TargetServiceName}|%mdc{StatusCode}|%mdc{ResponseCode}|%mdc{ResponseDescription}|%logger|%.-5level|||%mdc{ElapsedTime}|%mdc{RemoteHost}|%mdc{ClientAddress}|%mdc{ClassName}|||%msg%n" />
+  <statusListener class="ch.qos.logback.core.status.NopStatusListener"/>
+  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+    <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
+      <providers>
+        <timestamp>
+          <fieldName>timestamp</fieldName>
+        </timestamp>
+        <message />
+        <mdc>
+          <fieldName>context</fieldName>
+          <excludeMdcKeyName>ServerIPAddress</excludeMdcKeyName>
+          <excludeMdcKeyName>EntryTimestamp</excludeMdcKeyName>
+          <excludeMdcKeyName>InvokeTimestamp</excludeMdcKeyName>
+          <excludeMdcKeyName>ErrorCode</excludeMdcKeyName>
+          <excludeMdcKeyName>ErrorDesc</excludeMdcKeyName>
+        </mdc>
+        <stackTrace>
+          <fieldName>exception</fieldName>
+          <throwableConverter class="net.logstash.logback.stacktrace.ShortenedThrowableConverter">
+            <exclude>^sun\.reflect\..*\.invoke</exclude>
+            <exclude>^net\.sf\.cglib\.proxy\.MethodProxy\.invoke</exclude>
+            <rootCauseFirst>true</rootCauseFirst>
+          </throwableConverter>
+        </stackTrace>
+        <threadName>
+          <fieldName>thread</fieldName>
+        </threadName>
+        <loggerName>
+          <fieldName>logger</fieldName>
+          <shortenedLoggerNameLength>36</shortenedLoggerNameLength>
+        </loggerName>
+        <logLevel />
+      </providers>
+    </encoder>
+  </appender>
 
   <!-- ============================================================================ -->
   <!-- EELF Appenders -->
   <!-- ============================================================================ -->
 
-  <appender name="EELF" class="ch.qos.logback.core.rolling.RollingFileAppender">
-    <file>${logDirectory}/${generalLogName}.log</file>
-    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-      <fileNamePattern>${logDirectory}/${generalLogName}.%d{yyyy-MM-dd}.log.zip</fileNamePattern>
-      <maxHistory>60</maxHistory>
-    </rollingPolicy>
-    <encoder>
-      <pattern>${errorLogPattern}</pattern>
-    </encoder>
-  </appender>
   <appender name="asyncEELF" class="ch.qos.logback.classic.AsyncAppender">
     <!-- deny all events with a level below INFO, that is TRACE and DEBUG -->
     <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
       <level>INFO</level>
     </filter>
     <queueSize>256</queueSize>
-    <appender-ref ref="EELF" />
+    <appender-ref ref="STDOUT" />
   </appender>
 
-  <!-- EELF Audit Appender. This appender is used to record audit engine related logging events. The audit logger and appender
-       are specializations of the EELF application root logger and appender. This can be used to segregate Policy engine events
-       from other components, or it can be eliminated to record these events as part of the application root log. -->
-
-  <appender name="EELFAudit" class="ch.qos.logback.core.rolling.RollingFileAppender">
-    <file>${logDirectory}/${auditLogName}.log</file>
-    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-      <fileNamePattern>${logDirectory}/${auditLogName}.%d{yyyy-MM-dd}.log.zip</fileNamePattern>
-      <maxHistory>60</maxHistory>
-    </rollingPolicy>
-    <encoder>
-      <pattern>${auditLogPattern}</pattern>
-    </encoder>
-  </appender>
+  <!-- EELF Audit Appender. This appender is used to record audit engine related logging events. The
+  audit logger and appender
+       are specializations of the EELF application root logger and appender. This can be used to segregate
+  Policy engine events
+       from other components, or it can be eliminated to record these events as part of the application
+  root log. -->
+
   <appender name="asyncEELFAudit" class="ch.qos.logback.classic.AsyncAppender">
     <queueSize>256</queueSize>
-    <appender-ref ref="EELFAudit" />
-  </appender>
-
-  <appender name="EELFMetrics" class="ch.qos.logback.core.rolling.RollingFileAppender">
-    <file>${logDirectory}/${metricsLogName}.log</file>
-    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-      <fileNamePattern>${logDirectory}/${metricsLogName}.%d{yyyy-MM-dd}.log.zip</fileNamePattern>
-      <maxHistory>60</maxHistory>
-    </rollingPolicy>
-    <encoder>
-      <pattern>${metricsLogPattern}</pattern>
-    </encoder>
+    <appender-ref ref="STDOUT" />
   </appender>
 
   <appender name="asyncEELFMetrics" class="ch.qos.logback.classic.AsyncAppender">
     <queueSize>256</queueSize>
-    <appender-ref ref="EELFMetrics" />
-  </appender>
-
-  <appender name="EELFDebug" class="ch.qos.logback.core.rolling.RollingFileAppender">
-    <file>${logDirectory}/${debugLogName}.log</file>
-    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-      <fileNamePattern>${logDirectory}/${debugLogName}.%d{yyyy-MM-dd}.log.zip</fileNamePattern>
-      <maxHistory>60</maxHistory>
-    </rollingPolicy>
-    <encoder>
-      <pattern>${errorLogPattern}</pattern>
-    </encoder>
+    <appender-ref ref="STDOUT" />
   </appender>
 
   <appender name="asyncEELFDebug" class="ch.qos.logback.classic.AsyncAppender">
     <!-- allow only events with a level below INFO, that is TRACE and DEBUG -->
     <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
       <evaluator class="ch.qos.logback.classic.boolex.GEventEvaluator">
-        <expression>e.level.toInt() &lt; INFO.toInt()</expression>
+        <expression><![CDATA[e.level.toInt() < INFO.toInt()]]></expression>
       </evaluator>
       <OnMismatch>DENY</OnMismatch>
       <OnMatch>NEUTRAL</OnMatch>
     </filter>
     <queueSize>256</queueSize>
-    <appender-ref ref="EELFDebug" />
+    <appender-ref ref="STDOUT" />
     <includeCallerData>false</includeCallerData>
   </appender>
 
-  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-    <encoder>
-      <pattern>${errorLogPattern}</pattern>
-    </encoder>
-  </appender>
+
   <appender name="AsyncSysOut" class="ch.qos.logback.classic.AsyncAppender">
     <appender-ref ref="STDOUT" />
   </appender>
 
-  <!-- ============================================================================ -->
-  <!-- Default / root appenders -->
-  <!-- This determines the logging level for 3rd party code -->
-  <!-- ============================================================================ -->
-
-  <root level="INFO">
-    <appender-ref ref="asyncEELF" />
-    <appender-ref ref="asyncEELFDebug" />
-    <appender-ref ref="AsyncSysOut" />
-  </root>
-
-  <!-- ============================================================================ -->
-  <!--  EELF loggers -->
-  <!-- ============================================================================ -->
-
   <logger name="com.att.eelf" level="INFO" additivity="false">
     <appender-ref ref="asyncEELF" />
     <appender-ref ref="AsyncSysOut" />
   </logger>
 
-  <!-- The level of this logger determines the contents of the debug log -->
+          <!-- The level of this logger determines the contents of the debug log -->
   <logger name="com.att.eelf.debug" level="INFO" additivity="false">
     <appender-ref ref="asyncEELFDebug" />
     <appender-ref ref="AsyncSysOut" />
     <appender-ref ref="AsyncSysOut" />
   </logger>
 
-  <!-- ============================================================================ -->
-  <!-- Non-EELF loggers -->
-  <!-- ============================================================================ -->
+        <!-- ============================================================================ -->
+        <!-- Non-EELF loggers -->
+        <!-- ============================================================================ -->
 
-  <!-- ATT packages including DMAAP message routing -->
+        <!-- ATT packages including DMAAP message routing -->
   <logger name="com.att" level="INFO" />
 
-  <!-- Spring related loggers -->
+          <!-- Spring related loggers -->
   <logger name="org.springframework" level="WARN" />
   <logger name="org.springframework.beans" level="WARN" />
   <logger name="org.springframework.web" level="WARN" />
 
-  <!-- Other Loggers that may help troubleshoot -->
+          <!-- Other Loggers that may help troubleshoot -->
   <logger name="org.apache" level="WARN" />
   <logger name="org.apache.commons" level="WARN" />
 
-  <!-- Camel Related Loggers (including restlet/servlet/jaxrs/cxf logging. May aid in troubleshooting) -->
+          <!-- Camel Related Loggers (including restlet/servlet/jaxrs/cxf logging. May aid in
+          troubleshooting) -->
   <logger name="org.apache.camel" level="WARN" />
   <logger name="org.apache.cxf" level="WARN" />
   <logger name="org.apache.camel.processor.interceptor" level="WARN" />
   <logger name="org.restlet" level="WARN" />
   <logger name="org.apache.camel.component.restlet" level="WARN" />
 
-  <!-- logback internals logging -->
+          <!-- logback internals logging -->
   <logger name="ch.qos.logback.classic" level="WARN" />
   <logger name="ch.qos.logback.core" level="WARN" />
 
+  <root level={{ .Values.log.level.root | upper | quote }}>
+    <appender-ref ref="asyncEELF" />
+    <appender-ref ref="asyncEELFDebug" />
+    <appender-ref ref="AsyncSysOut" />
+  </root>
 </configuration>
index baee38c..39d494a 100644 (file)
@@ -21,10 +21,6 @@ kind: ConfigMap
 metadata:
   name: {{ include "common.fullname" . }}-configmap
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 data:
 {{ tpl (.Files.Glob "resources/config/*").AsConfig . | indent 2 }}
index 24d34e8..57f770b 100644 (file)
 
 apiVersion: apps/v1
 kind: Deployment
-metadata: {{- include "common.resourceMetadata" . | nindent 2 }}
+metadata: {{- include "common.resourceMetadata" (dict "annotations" .Values.annotations "dot" .) | nindent 2 }}
 spec:
   selector: {{- include "common.selectors" . | nindent 4 }}
+  {{- if .Values.debug.enabled }}
+  replicas: 1
+  {{- else }}
   replicas: {{ .Values.replicaCount }}
+  {{- end }}
+  revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
   strategy:
     type: {{ .Values.updateStrategy.type }}
     {{- if (eq "RollingUpdate" .Values.updateStrategy.type) }}
@@ -33,14 +38,25 @@ spec:
   template:
     metadata: {{- include "common.templateMetadata" . | nindent 6 }}
     spec:
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
       containers:
         - name: {{ include "common.name" . }}
           image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-          ports: {{ include "common.containerPorts" . | nindent 12  }}
-          # disable liveness probe when breakpoints set in debugger
-          # so K8s doesn't restart unresponsive container
-          {{ if .Values.liveness.enabled }}
+          {{ include "common.containerSecurityContext" . | indent 10 | trim }}
+          ports:
+            {{- if .Values.debug.enabled }}
+            - containerPort: {{ .Values.debug.port }}
+              name: {{ .Values.debug.portName }}
+            {{- end }}
+            {{- if .Values.profiling.enabled }}
+            - containerPort: {{ .Values.profiling.port }}
+              name: {{ .Values.profiling.portName }}
+            {{- end }}
+            {{ include "common.containerPorts" . | nindent 12  }}
+          # disable liveness probe when
+          # debugging.enabled=true or profiling.enabled=true
+          {{- if and .Values.liveness.enabled (not (or .Values.debug.enabled .Values.profiling.enabled)) }}
           livenessProbe:
             tcpSocket:
               port: {{ .Values.service.internalPort }}
@@ -57,6 +73,14 @@ spec:
               value: NotUsed
             - name: CONFIG_HOME
               value: /opt/app/babel/config
+            {{- if .Values.profiling.enabled }}
+            - name: JVM_OPTS
+              value: '{{ join " " .Values.profiling.args }}'
+            {{- end }}
+            {{- if .Values.debug.enabled }}
+            - name: JVM_OPTS
+              value: {{ .Values.debug.args | quote }}
+            {{- end }}
           volumeMounts:
           - mountPath: /opt/app/babel/config/application.properties
             name: config
@@ -77,6 +101,10 @@ spec:
           - mountPath: /opt/app/babel/config/logback.xml
             name: config
             subPath: logback.xml
+          - mountPath: /opt/app/babel/logs
+            name: babel-logs
+          - mountPath: /tmp
+            name: tmp
           resources: {{ include "common.resources" . | nindent 12 }}
       {{- if .Values.nodeSelector }}
       nodeSelector:
@@ -98,7 +126,14 @@ spec:
           secret:
             secretName: {{ include "common.fullname" . }}-babel-secrets
         - name: logs
-          emptyDir: {}
+          emptyDir:
+            sizeLimit: {{ .Values.volumes.artifactDataSizeLimit }}
+        - name: tmp
+          emptyDir:
+            sizeLimit: {{ .Values.volumes.tmpSizeLimit }}
+        - name: babel-logs
+          emptyDir:
+            sizeLimit: {{ .Values.volumes.babelLogsSizeLimit }}
         {{ include "common.log.volumes" (dict "dot" . "configMapNamePrefix" (tpl .Values.logConfigMapNamePrefix .)) | nindent 8 }}
 
       {{- include "common.imagePullSecrets" . | nindent 6 }}
index 9d7d2c5..3f2b97c 100644 (file)
@@ -21,11 +21,7 @@ kind: Secret
 metadata:
   name: {{ include "common.fullname" . }}-babel-secrets
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 type: Opaque
 data:
 {{ tpl (.Files.Glob "resources/config/auth/*").AsSecrets . | indent 2 }}
diff --git a/kubernetes/aai/components/aai-babel/templates/servicemonitor.yaml b/kubernetes/aai/components/aai-babel/templates/servicemonitor.yaml
new file mode 100644 (file)
index 0000000..dc70602
--- /dev/null
@@ -0,0 +1,3 @@
+{{- if .Values.metrics.serviceMonitor.enabled }}
+{{  include "common.serviceMonitor" . }}
+{{- end }}
index e058d82..1af40c9 100644 (file)
 #################################################################
 # Global configuration defaults.
 #################################################################
-global: {}
+global:
+  tracing:
+    enabled: false
+    collector:
+      baseUrl: http://jaeger-collector.istio-config:9411
+    sampling:
+      probability: 1.0
 
 #################################################################
 # Application configuration defaults.
 #################################################################
 
 # application image
-image: onap/babel:1.12.3
+image: onap/babel:1.13.5
 
 flavor: small
-flavorOverride: small
 
 # default number of instances
 replicaCount: 1
 
+# number of ReplicaSets that should be retained for the Deployment
+revisionHistoryLimit: 1
+
 updateStrategy:
   type: RollingUpdate
   maxUnavailable: 0
@@ -82,19 +90,48 @@ resources:
   small:
     limits:
       cpu: "1"
-      memory: "4Gi"
+      memory: "2500Mi"
     requests:
-      cpu: "0.5"
+      cpu: "100m"
       memory: "1Gi"
   large:
     limits:
       cpu: "4"
-      memory: "8Gi"
+      memory: "4Gi"
     requests:
-      cpu: "2"
-      memory: "2Gi"
+      cpu: "1"
+      memory: "1Gi"
   unlimited: {}
 
+# adds jvm args for remote debugging the application
+debug:
+  enabled: false
+  args: "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
+  port: 5005
+  portName: debug
+
+# adds jvm args for remote profiling the application
+profiling:
+  enabled: false
+  args:
+    - "-Dcom.sun.management.jmxremote"
+    - "-Dcom.sun.management.jmxremote.ssl=false"
+    - "-Dcom.sun.management.jmxremote.authenticate=false"
+    - "-Dcom.sun.management.jmxremote.local.only=false"
+    - "-Dcom.sun.management.jmxremote.port=9999"
+    - "-Dcom.sun.management.jmxremote.rmi.port=9999"
+    - "-Djava.rmi.server.hostname=127.0.0.1"
+  port: 9999
+  portName: jmx
+
+metrics:
+  serviceMonitor:
+    enabled: true
+    targetPort: 9516
+    path: /services/babel-service/actuator/prometheus
+    basicAuth:
+      enabled: false
+
 #Pods Service Account
 serviceAccount:
   nameOverride: aai-babel
@@ -104,4 +141,18 @@ serviceAccount:
 #Log configuration
 log:
   path: /var/log/onap
+  level:
+    root: INFO
 logConfigMapNamePrefix: '{{ include "common.fullname" . }}'
+
+volumes:
+  artifactDataSizeLimit: 50Mi
+  babelLogsSizeLimit: 100Mi
+  tmpSizeLimit: 100Mi
+
+securityContext:
+  user_id: 1000
+  group_id: 1000
+
+podAnnotations:
+  checksum/config: '{{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}'
index 69abea1..c7020b7 100644 (file)
@@ -22,7 +22,7 @@
 apiVersion: v2
 description: ONAP AAI GraphAdmin
 name: aai-graphadmin
-version: 13.0.0
+version: 16.0.0
 
 dependencies:
   - name: common
@@ -34,3 +34,6 @@ dependencies:
   - name: serviceAccount
     version: ~13.x-0
     repository: '@local'
+  - name: readinessCheck
+    version: ~13.x-0
+    repository: '@local'
index 8f63ac8..0266aab 100644 (file)
@@ -5,7 +5,7 @@
 # ================================================================================
 # Copyright © 2018 AT&T Intellectual Property. All rights reserved.
 # Modifications Copyright © 2021 Orange
-# Modifications Copyright © 2023 Nordix Foundation
+# Modifications Copyright Â© 2023 Nordix Foundation
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -29,11 +29,11 @@ aai.server.url.base=http://aai.{{ include "common.namespace" . }}/aai/
 aai.server.url=http://aai.{{ include "common.namespace" . }}/aai/{{ .Values.global.config.schema.version.api.default }}/
 aai.global.callback.url=http://aai.{{ include "common.namespace" . }}/aai/
 
-{{ if or (.Values.global.config.basic.auth.enabled) ( include "common.onServiceMesh" .) }}
+{{- if or (.Values.global.auth.enabled) ( include "common.onServiceMesh" .) }}
 aai.tools.enableBasicAuth=true
-aai.tools.username={{ .Values.global.config.basic.auth.username }}
-aai.tools.password={{ .Values.global.config.basic.auth.passwd }}
-{{ end }}
+aai.tools.username={{ (index .Values.global.auth.users 0).username }}
+aai.tools.password={{ (index .Values.global.auth.users 0).password }}
+{{- end }}
 
 aai.notification.current.version={{ .Values.global.config.schema.version.api.default }}
 aai.notificationEvent.default.status=UNPROCESSED
@@ -94,6 +94,7 @@ aai.datagrooming.enabledupecheckoff=false
 aai.datagrooming.enableghost2checkoff=false
 aai.datagrooming.enableghost2fixon=false
 aai.datagrooming.enablef=false
+aai.datagrooming.enableskipindexupdatefix=false
 
 # used by the dataGrooming to set values
 aai.datagrooming.timewindowminutesvalue=10500
index b63cd83..196448c 100644 (file)
@@ -38,25 +38,25 @@ spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSou
 spring.profiles.active={{ .Values.config.profiles.active }}
 spring.jersey.application-path=${schema.uri.base.path}
 #The max number of active threads in this pool
-server.tomcat.max-threads=200
+server.tomcat.max-threads=50
 #The minimum number of threads always kept alive
-server.tomcat.min-Spare-Threads=25
+server.tomcat.min-Spare-Threads=5
 #The number of milliseconds before an idle thread shutsdown, unless the number of active threads are less or equal to minSpareThreads
 server.tomcat.max-idle-time=60000
 
 # If you get an application startup failure that the port is already taken
 # If thats not it, please check if the key-store file path makes sense
 server.local.startpath=/opt/app/aai-graphadmin/resources/
-server.basic.auth.location=${server.local.startpath}etc/auth/realm.properties
 
-server.port=8449
-security.require-ssl=false
-server.ssl.enabled=false
+server.port={{ .Values.service.appPort }}
 
-# JMS bind address host port
-jms.bind.address=tcp://localhost:61649
-dmaap.ribbon.listOfServers=message-router.{{ include "common.namespace" . }}:3904
-dmaap.ribbon.transportType=http
+spring.kafka.producer.bootstrap-servers=${BOOTSTRAP_SERVERS}
+spring.kafka.producer.properties.security.protocol=SASL_PLAINTEXT
+spring.kafka.producer.properties.sasl.mechanism=SCRAM-SHA-512
+spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
+spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer
+spring.kafka.producer.properties.sasl.jaas.config=${JAAS_CONFIG}
+spring.kafka.producer.retries=3
 
 # Schema related attributes for the oxm and edges
 # Any additional schema related attributes should start with prefix schema
@@ -103,8 +103,20 @@ aperture.service.base.url=http://localhost:8457/aai/aperture
 aperture.service.timeout-in-milliseconds=300000
 
 #To Expose the Prometheus scraping endpoint
-management.server.port=8448
+management.server.port={{ .Values.service.actuatorPort }}
 management.endpoints.enabled-by-default=true
-management.endpoints.web.exposure.include=info,health,prometheus
-endpoints.enabled=false
-management.security.enabled=false
\ No newline at end of file
+management.endpoints.web.exposure.include=*
+management.security.enabled=false
+
+# If true, the actuator health check will be overriden
+# to use the AaiGraphChecker check instead.
+# This does the same as the /echo endpoint,
+# but doesn't show up in micrometer metrics
+aai.actuator.echo.enabled={{ .Values.actuator.echo.enabled }}
+
+aai.graph.properties.path=${server.local.startpath}/etc/appprops/janusgraph-realtime.properties
+aai.basic-auth.enabled={{ .Values.global.auth.enabled }}
+{{- range $index, $user := .Values.global.auth.users }}
+aai.basic-auth.users[{{ $index }}].username={{ $user.username }}
+aai.basic-auth.users[{{ $index }}].password={{ $user.password }}
+{{- end }}
diff --git a/kubernetes/aai/components/aai-graphadmin/resources/config/janusgraph-cached.properties b/kubernetes/aai/components/aai-graphadmin/resources/config/janusgraph-cached.properties
deleted file mode 100644 (file)
index 5962ebd..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-{{/*
-#
-# ============LICENSE_START=======================================================
-# org.onap.aai
-# ================================================================================
-# Copyright © 2018 AT&T Intellectual Property. All rights reserved.
-# ================================================================================
-# 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.
-# ============LICENSE_END=========================================================
-*/}}
-
-query.fast-property=true
-query.smart-limit=false
-
-{{ if .Values.global.config.cluster.cassandra.dynamic }}
-
-storage.backend=cql
-storage.hostname={{.Values.global.cassandra.serviceName}}
-storage.cql.keyspace=aaigraph
-storage.username={{.Values.global.cassandra.username}}
-storage.password={{.Values.global.cassandra.password}}
-
-storage.cql.read-consistency-level=LOCAL_QUORUM
-storage.cql.write-consistency-level=LOCAL_QUORUM
-storage.cql.replication-factor={{.Values.global.cassandra.replicas}}
-storage.cql.only-use-local-consistency-for-system-operations=true
-
-{{ else }}
-
-{{ if .Values.global.config.storage }}
-
-storage.backend={{ .Values.global.config.storage.backend }}
-
-{{ if eq .Values.global.config.storage.backend "cassandra" }}
-
-storage.hostname={{ .Values.global.config.storage.hostname }}
-storage.cassandra.keyspace={{ .Values.global.config.storage.name }}
-
-storage.cassandra.read-consistency-level={{ .Values.global.config.storage.cassandra.readConsistency }}
-storage.cassandra.write-consistency-level={{ .Values.global.config.storage.cassandra.writeConsistency }}
-storage.cassandra.replication-factor={{ .Values.global.config.storage.cassandra.replicationFactor | int }}
-storage.cassandra.astyanax.cluster-name= {{ .Values.global.config.storage.clusterName }}
-storage.cassandra.astyanax.local-datacenter= {{ .Values.global.config.storage.localDataCenter }}
-
-storage.connection-timeout={{ .Values.global.config.storage.connectionTimeout | int }}
-cache.tx-cache-size={{ .Values.global.config.storage.cacheSize | int }}
-log.tx.key-consistent={{ .Values.global.config.storage.keyConsistent }}
-
-{{ else if eq .Values.global.config.storage.backend "cql" }}
-
-storage.hostname={{ .Values.global.config.storage.hostname }}
-storage.cql.keyspace={{ .Values.global.config.storage.name }}
-
-storage.cql.read-consistency-level={{ .Values.global.config.storage.cql.readConsistency }}
-storage.cql.write-consistency-level={{ .Values.global.config.storage.cql.readConsistency }}
-storage.cql.replication-factor={{ .Values.global.config.storage.cql.replicationFactor | int }}
-
-storage.cql.only-use-local-consistency-for-system-operations={{ .Values.global.config.storage.cql.localConsistencyForSysOps }}
-storage.cql.cluster-name={{ .Values.global.config.storage.clusterName }}
-storage.cql.local-datacenter={{ .Values.global.config.storage.localDataCenter }}
-
-storage.connection-timeout={{ .Values.global.config.storage.connectionTimeout | int }}
-cache.tx-cache-size={{ .Values.global.config.storage.cacheSize | int }}
-log.tx.key-consistent={{ .Values.global.config.storage.keyConsistent }}
-
-{{ else if eq .Values.global.config.storage.backend "hbase" }}
-
-storage.hostname={{ .Values.global.config.storage.hostname }}
-storage.hbase.table={{ .Values.global.config.storage.name }}
-
-storage.connection-timeout={{ .Values.global.config.storage.connectionTimeout | int }}
-cache.tx-cache-size={{ .Values.global.config.storage.cacheSize | int }}
-log.tx.key-consistent={{ .Values.global.config.storage.keyConsistent }}
-
-{{ end }}
-
-{{ end }}
-
-{{ end }}
-
-storage.lock.wait-time=300
-#caching on
-cache.db-cache = true
-cache.db-cache-clean-wait = 20
-cache.db-cache-time = 180000
-cache.db-cache-size = 0.3
-
-#load graphson file on startup
-load.snapshot.file=false
index 61550e7..d1797a4 100644 (file)
 query.fast-property=true
 query.smart-limit=false
 
-{{ if .Values.global.config.cluster.cassandra.dynamic }}
+{{- if .Values.global.config.cluster.cassandra.dynamic }}
 
 storage.backend=cql
 storage.hostname={{.Values.global.cassandra.serviceName}}
-storage.cql.keyspace=aaigraph
 storage.username={{.Values.global.cassandra.username}}
 storage.password={{.Values.global.cassandra.password}}
 
+storage.cql.keyspace=aaigraph
+storage.cql.local-datacenter={{ .Values.global.cassandra.localDataCenter }}
 storage.cql.read-consistency-level=LOCAL_QUORUM
 storage.cql.write-consistency-level=LOCAL_QUORUM
 storage.cql.replication-factor={{.Values.global.cassandra.replicas}}
 storage.cql.only-use-local-consistency-for-system-operations=true
 
-{{ else }}
+{{- if .Values.global.cassandra.partitionerName }}
+storage.cql.partitioner-name={{ .Values.global.cassandra.partitionerName }}
+{{- end }}
 
-{{ if .Values.global.config.storage }}
+{{- if .Values.config.janusgraph.cassandraDriver }}
+storage.cql.internal.string-configuration = datastax-java-driver { {{ .Values.config.janusgraph.cassandraDriver.configuration }} }
+{{- end }}
 
-storage.backend={{ .Values.global.config.storage.backend }}
+{{- else -}}
 
-{{ if eq .Values.global.config.storage.backend "cassandra" }}
+{{- if .Values.global.config.storage }}
 
-storage.hostname={{ .Values.global.config.storage.hostname }}
-storage.cassandra.keyspace={{ .Values.global.config.storage.name }}
-
-storage.cassandra.read-consistency-level={{ .Values.global.config.storage.cassandra.readConsistency }}
-storage.cassandra.write-consistency-level={{ .Values.global.config.storage.cassandra.writeConsistency }}
-storage.cassandra.replication-factor={{ .Values.global.config.storage.cassandra.replicationFactor | int }}
-storage.cassandra.astyanax.cluster-name= {{ .Values.global.config.storage.clusterName }}
-storage.cassandra.astyanax.local-datacenter= {{ .Values.global.config.storage.localDataCenter }}
-
-storage.connection-timeout={{ .Values.global.config.storage.connectionTimeout | int }}
-cache.tx-cache-size={{ .Values.global.config.storage.cacheSize | int }}
-log.tx.key-consistent={{ .Values.global.config.storage.keyConsistent }}
+storage.backend={{ .Values.global.config.storage.backend }}
 
-{{ else if eq .Values.global.config.storage.backend "cql" }}
+{{- if eq .Values.global.config.storage.backend "cql" }}
 
 storage.hostname={{ .Values.global.config.storage.hostname }}
 storage.cql.keyspace={{ .Values.global.config.storage.name }}
+storage.cql.local-datacenter={{ .Values.global.cassandra.localDataCenter }}
 
 storage.cql.read-consistency-level={{ .Values.global.config.storage.cql.readConsistency }}
 storage.cql.write-consistency-level={{ .Values.global.config.storage.cql.readConsistency }}
@@ -65,13 +60,13 @@ storage.cql.replication-factor={{ .Values.global.config.storage.cql.replicationF
 
 storage.cql.only-use-local-consistency-for-system-operations={{ .Values.global.config.storage.cql.localConsistencyForSysOps }}
 storage.cql.cluster-name={{ .Values.global.config.storage.clusterName }}
-storage.cql.local-datacenter={{ .Values.global.config.storage.localDataCenter }}
+storage.cql.local-datacenter={{ .Values.global.cassandra.localDataCenter }}
 
 storage.connection-timeout={{ .Values.global.config.storage.connectionTimeout | int }}
 cache.tx-cache-size={{ .Values.global.config.storage.cacheSize | int }}
 log.tx.key-consistent={{ .Values.global.config.storage.keyConsistent }}
 
-{{ else if eq .Values.global.config.storage.backend "hbase" }}
+{{- else if eq .Values.global.config.storage.backend "hbase" }}
 
 storage.hostname={{ .Values.global.config.storage.hostname }}
 storage.hbase.table={{ .Values.global.config.storage.name }}
@@ -80,14 +75,16 @@ storage.connection-timeout={{ .Values.global.config.storage.connectionTimeout |
 cache.tx-cache-size={{ .Values.global.config.storage.cacheSize | int }}
 log.tx.key-consistent={{ .Values.global.config.storage.keyConsistent }}
 
-{{ end }}
-
-{{ end }}
-
-{{ end }}
+{{- end }}
+{{- end }}
+{{- end }}
 
 storage.lock.wait-time=300
 # Setting db-cache to false ensure the fastest propagation of changes across servers
-cache.db-cache = false
+cache.db-cache=false
 #load graphson file on startup
 load.snapshot.file=false
+
+{{- if .Values.config.janusgraph.allowUpgrade }}
+graph.allow-upgrade=true
+{{- end }}
index 8e1bf21..257cda6 100644 (file)
 */}}
 -->
 <configuration scan="true" scanPeriod="60 seconds" debug="false">
+    <statusListener class="ch.qos.logback.core.status.NopStatusListener"/>
     <property name="AJSC_HOME" value="${AJSC_HOME:-.}" />
     <property name="maxHistory" value='{{.Values.accessLogback.maxHistory}}' />
     <property name="totalSizeCap" value='{{.Values.accessLogback.totalSizeCap}}' />
     <property name="logToFileEnabled" value='{{.Values.accessLogback.logToFileEnabled}}'/>
-    <if condition='property("logToFileEnabled").contains("true")'>
-        <then>
-            <appender name="ACCESS"
-                class="ch.qos.logback.core.rolling.RollingFileAppender">
-                <file>${AJSC_HOME}/logs/ajsc-jetty/localhost_access.log</file>
-                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-                    <fileNamePattern>${AJSC_HOME}/logs/ajsc-jetty/localhost_access.log.%d{yyyy-MM-dd}
-                    </fileNamePattern>
-                    <maxHistory>${maxHistory}</maxHistory>
-                    <totalSizeCap>${totalSizeCap}</totalSizeCap>
-                </rollingPolicy>
-                <encoder class="org.onap.aai.logging.CustomLogPatternLayoutEncoder">
-                    <Pattern>%a %u %z [%t] "%m %U%q" %s %b %y %i{X-TransactionId} %i{X-FromAppId} %i{X-Forwarded-For} %i{X-AAI-SSL-Client-CN} %i{X-AAI-SSL-Client-OU} %i{X-AAI-SSL-Client-O} %i{X-AAI-SSL-Client-L} %i{X-AAI-SSL-Client-ST} %i{X-AAI-SSL-Client-C} %i{X-AAI-SSL-Client-NotBefore} %i{X-AAI-SSL-Client-NotAfter} %i{X-AAI-SSL-Client-DN} %D</Pattern>
-                </encoder>
-            </appender>
-            <appender-ref ref="ACCESS" />
-        </then>
-    </if>
+
 
     <appender name="STDOUTACCESS" class="ch.qos.logback.core.ConsoleAppender">
-        <encoder class="org.onap.aai.logging.CustomLogPatternLayoutEncoder">
-            <Pattern>%a %u %z [%t] "%m %U%q" %s %b %y %i{X-TransactionId} %i{X-FromAppId} %i{X-Forwarded-For} %i{X-AAI-SSL-Client-CN} %i{X-AAI-SSL-Client-OU} %i{X-AAI-SSL-Client-O} %i{X-AAI-SSL-Client-L} %i{X-AAI-SSL-Client-ST} %i{X-AAI-SSL-Client-C} %i{X-AAI-SSL-Client-NotBefore} %i{X-AAI-SSL-Client-NotAfter} %i{X-AAI-SSL-Client-DN} %D - "logType": "access"</Pattern>
+        <encoder class="net.logstash.logback.encoder.AccessEventCompositeJsonEncoder">
+            <providers>
+                <pattern>
+                    <pattern>
+                        {
+                            "remoteIp": "%a",
+                            "remoteUser": "%u",
+                            "timestamp": "%t",
+                            "requestMethod": "%m",
+                            "requestUrl": "%U",
+                            "queryString": "%q",
+                            "httpStatusCode": "%s",
+                            "bytesSent": "%b",
+                            "transactionId": "%i{X-TransactionId}",
+                            "fromAppId": "%i{X-FromAppId}",
+                            "forwardedFor": "%i{X-Forwarded-For}",
+                            "aaiSslClientCn": "%i{X-AAI-SSL-Client-CN}",
+                            "aaiSslClientOu": "%i{X-AAI-SSL-Client-OU}",
+                            "aaiSslClientO": "%i{X-AAI-SSL-Client-O}",
+                            "aaiSslClientL": "%i{X-AAI-SSL-Client-L}",
+                            "aaiSslClientSt": "%i{X-AAI-SSL-Client-ST}",
+                            "aaiSslClientC": "%i{X-AAI-SSL-Client-C}",
+                            "aaiSslClientNotBefore": "%i{X-AAI-SSL-Client-NotBefore}",
+                            "aaiSslClientNotAfter": "%i{X-AAI-SSL-Client-NotAfter}",
+                            "aaiSslClientDn": "%i{X-AAI-SSL-Client-DN}",
+                            "durationMs": "%D",
+                            "logType": "access"
+                        }
+                    </pattern>
+                </pattern>
+            </providers>
         </encoder>
     </appender>
-    <appender-ref ref="STDOUTACCESS" />
+
+<!--    <appender-ref ref="STDOUTACCESS" />-->
 </configuration>
 
 <!--
@@ -73,4 +87,4 @@
 
 %z - Custom pattern that parses the cert for the subject
 %y - Custom pattern determines rest or dme2
- -->
\ No newline at end of file
+ -->
index fd79f70..f72b266 100644 (file)
     ============LICENSE_END=========================================================
 */}}
 -->
-<configuration scan="true" scanPeriod="60 seconds" debug="false">
+<configuration scan="true" scanPeriod="60 seconds" debug="true">
   <statusListener class="ch.qos.logback.core.status.NopStatusListener"/>
   <property resource="application.properties"/>
-  <property name="namespace" value="graph-admin"/>
-  <property name="AJSC_HOME" value="${AJSC_HOME:-.}"/>
-  <property name="logDirectory" value="${AJSC_HOME}/logs"/>
-  <property name="maxHistory" value='{{.Values.logback.maxHistory}}' />
-  <property name="totalSizeCap" value='{{.Values.logback.totalSizeCap}}' />
-  <property name="queueSize" value='{{.Values.logback.queueSize}}'/>
-  <property name="logToFileEnabled" value='{{.Values.logback.logToFileEnabled}}'/>
-  <!-- Old patterns
-    <property name="eelfLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%X{serviceName}|%X{partnerName}|%ecompStatusCode|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>
-    <property name="eelfAuditLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%X{serviceName}|%X{partnerName}|%ecompStatusCode|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n|\r\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>
-    <property name="eelfMetricLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%X{serviceName}|%X{partnerName}|%X{targetEntity}|%X{targetServiceName}|%ecompStatusCode|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{targetVirtualEntity}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>
-    <property name="eelfErrorLogPattern" value="%ecompStartTime|%X{requestId}|%-10t|%X{serviceName}|%X{partnerName}|%X{targetEntity}|%X{targetServiceName}|%ecompErrorCategory|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n|\r\n', '^'}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>
-    <property name="eelfErrorLogPattern" value="%ecompStartTime|%X{requestId}|%-10t|%X{serviceName}|%X{partnerName}|%X{targetEntity}|%X{targetServiceName}|%ecompErrorCategory|%ecompResponseCode|%ecompResponseDescription|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>
-    <property name="eelfTransLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%X{serviceName}|%X{partnerName}|%ecompStatusCode|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{partnerName}:%m%n"/>
-    -->
-  <property name="p_tim" value="%d{&quot;yyyy-MM-dd'T'HH:mm:ss.SSSXXX&quot;, UTC}"/>
-  <property name="p_lvl" value="%level"/>
-  <property name="p_log" value="%logger"/>
-  <property name="p_mdc" value="%replace(%replace(%mdc){'\t','\\\\t'}){'\n', '\\\\n'}"/>
-  <property name="p_msg" value="%replace(%replace(%msg){'\t', '\\\\t'}){'\n','\\\\n'}"/>
-  <property name="p_exc" value="%replace(%replace(%rootException){'\t', '\\\\t'}){'\n','\\\\n'}"/>
-  <property name="p_mak" value="%replace(%replace(%marker){'\t', '\\\\t'}){'\n','\\\\n'}"/>
-  <property name="p_thr" value="%thread"/>
-  <property name="pattern" value="%nopexception${p_tim}\t${p_thr}\t${p_lvl}\t${p_log}\t${p_mdc}\t${p_msg}\t${p_exc}\t${p_mak}\t%n"/>
-  <!-- Patterns from onap demo -->
-  <property name="errorPattern" value="%X{LogTimestamp}|%X{RequestID}|%thread|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%.-5level|%X{ErrorCode}|%X{ErrorDesc}|%msg%n"/>
-  <property name="debugPattern" value="%X{LogTimestamp}|%X{RequestID}|%msg\t${p_mdc}\t${p_msg}\t${p_exc}\t${p_mak}\t|^%n"/>
-  <property name="auditPattern" value="%X{EntryTimestamp}|%X{LogTimestamp}|%X{RequestID}|%X{ServiceInstanceID}|%thread||%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDesc}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{RemoteHost}||||${p_mak}|${p_mdc}|||%msg%n"/>
-  <property name="metricPattern" value="%X{InvokeTimestamp}|%X{LogTimestamp}|%X{RequestID}|%X{ServiceInstanceID}|%thread||%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDesc}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{RemoteHost}||||%X{TargetVirtualEntity}|${p_mak}|${p_mdc}|||%msg%n"/>
-  <property name="transLogPattern" value="%X{LogTimestamp}|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{RequestID}|%X{ServiceInstanceID}|%-10t|%X{ServerFQDN}|%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%replace(%replace(%X{ResponseDesc}){'\\|', '!'}){'\r|\n', '^'}|%X{InstanceUUID}|%level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{clientIpAddress}||%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{PartnerName}:%m%n"/>
-  <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
-  <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
-  <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
 
   <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
     <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
           <shortenedLoggerNameLength>36</shortenedLoggerNameLength>
         </loggerName>
         <logLevel/>
-        <pattern>
-          <pattern>{"logType":"app"}</pattern>
-        </pattern>
       </providers>
     </encoder>
   </appender>
 
-  <if condition='property("logToFileEnabled").contains("true")'>
-    <then>
-        <appender name="SANE" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <file>${logDirectory}/rest/sane.log</file>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/rest/sane.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - %msg%n</pattern>
-          </encoder>
-        </appender>
-        <appender name="asyncSANE" class="ch.qos.logback.classic.AsyncAppender">
-          <queueSize>${queueSize}</queueSize>
-          <includeCallerData>true</includeCallerData>
-          <appender-ref ref="SANE"/>
-        </appender>
-        <appender name="METRIC" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <file>${logDirectory}/rest/metrics.log</file>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/rest/metrics.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${metricPattern}</pattern>
-          </encoder>
-        </appender>
-        <appender name="asyncMETRIC" class="ch.qos.logback.classic.AsyncAppender">
-          <queueSize>${queueSize}</queueSize>
-          <includeCallerData>true</includeCallerData>
-          <appender-ref ref="METRIC"/>
-        </appender>
-        <appender name="DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>DEBUG</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-          </filter>
-          <file>${logDirectory}/rest/debug.log</file>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/rest/debug.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${debugPattern}</pattern>
-          </encoder>
-        </appender>
-        <appender name="asyncDEBUG" class="ch.qos.logback.classic.AsyncAppender">
-          <queueSize>${queueSize}</queueSize>
-          <appender-ref ref="DEBUG"/>
-          <includeCallerData>true</includeCallerData>
-        </appender>
-        <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <file>${logDirectory}/rest/error.log</file>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/rest/error.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
-            <level>WARN</level>
-          </filter>
-          <encoder>
-            <pattern>${errorPattern}</pattern>
-          </encoder>
-        </appender>
-        <appender name="asyncERROR" class="ch.qos.logback.classic.AsyncAppender">
-          <queueSize>${queueSize}</queueSize>
-          <appender-ref ref="ERROR"/>
-        </appender>
-        <appender name="AUDIT" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <file>${logDirectory}/rest/audit.log</file>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/rest/audit.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${auditPattern}</pattern>
-          </encoder>
-        </appender>
-        <appender name="asyncAUDIT" class="ch.qos.logback.classic.AsyncAppender">
-          <queueSize>${queueSize}</queueSize>
-          <includeCallerData>true</includeCallerData>
-          <appender-ref ref="AUDIT"/>
-        </appender>
-        <appender name="translog" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>DEBUG</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-          </filter>
-          <file>${logDirectory}/rest/translog.log</file>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/rest/translog.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${transLogPattern}</pattern>
-          </encoder>
-        </appender>
-        <appender name="asynctranslog" class="ch.qos.logback.classic.AsyncAppender">
-          <queueSize>${queueSize}</queueSize>
-          <includeCallerData>true</includeCallerData>
-          <appender-ref ref="translog"/>
-        </appender>
-        <appender name="dmaapAAIEventConsumer" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
-            <level>WARN</level>
-          </filter>
-          <File>${logDirectory}/dmaapAAIEventConsumer/error.log</File>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/error.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${"errorPattern"}</pattern>
-          </encoder>
-        </appender>
-        <appender name="dmaapAAIEventConsumerInfo" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>INFO</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-          </filter>
-          <File>${logDirectory}/dmaapAAIEventConsumer/dmaap-transaction.log</File>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/dmaap-transaction.log.%d{yyyy-MM-dd}
-            </fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${debugPattern}</pattern>
-          </encoder>
-        </appender>
-        <appender name="dmaapAAIEventConsumerDebug" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>DEBUG</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-          </filter>
-          <File>${logDirectory}/dmaapAAIEventConsumer/debug.log</File>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/debug.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${debugPattern}</pattern>
-          </encoder>
-        </appender>
-        <appender name="dmaapAAIEventConsumerMetric" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>INFO</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-          </filter>
-          <File>${logDirectory}/dmaapAAIEventConsumer/metrics.log</File>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/metrics.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${metricPattern}</pattern>
-          </encoder>
-        </appender>
-        <appender name="external" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
-            <level>WARN</level>
-          </filter>
-          <file>${logDirectory}/external/external.log</file>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/external/external.log.%d{yyyy-MM-dd}
-            </fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${debugPattern}</pattern>
-          </encoder>
-        </appender>
-        <!-- DataGrooming logs started -->
-        <appender name="dataGrooming" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
-            <level>WARN</level>
-          </filter>
-          <File>${logDirectory}/dataGrooming/error.log</File>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/dataGrooming/error.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${errorPattern}</pattern>
-          </encoder>
-        </appender>
-        <appender name="dataGroomingdebug" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>DEBUG</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-          </filter>
-          <File>${logDirectory}/dataGrooming/debug.log</File>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/dataGrooming/debug.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${debugPattern}</pattern>
-          </encoder>
-        </appender>
-        <appender name="dataGroomingaudit" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>INFO</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-          </filter>
-          <File>${logDirectory}/dataGrooming/audit.log</File>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/dataGrooming/audit.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${auditPattern}</pattern>
-          </encoder>
-        </appender>
-        <!-- DataGrooming logs ended -->
-        <!-- DataSnapshot logs started -->
-        <appender name="dataSnapshot" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
-            <level>WARN</level>
-          </filter>
-          <File>${logDirectory}/dataSnapshot/error.log</File>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/dataSnapshot/error.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${errorPattern}</pattern>
-          </encoder>
-        </appender>
-        <appender name="dataSnapshotdebug" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>DEBUG</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-          </filter>
-          <File>${logDirectory}/dataSnapshot/debug.log</File>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/dataSnapshot/debug.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${debugPattern}</pattern>
-          </encoder>
-        </appender>
-        <appender name="dataSnapshotaudit" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>INFO</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-          </filter>
-          <File>${logDirectory}/dataSnapshot/audit.log</File>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/dataSnapshot/audit.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${auditPattern}</pattern>
-          </encoder>
-        </appender>
-        <!-- DataSnapshot logs ended -->
-        <!-- HistoryTruncate logs started -->
-        <appender name="historyTruncate" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
-            <level>WARN</level>
-          </filter>
-          <File>${logDirectory}/historyTruncate/error.log</File>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/historyTruncate/error.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${errorPattern}</pattern>
-          </encoder>
-        </appender>
-        <appender name="historyTruncatedebug" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>DEBUG</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-          </filter>
-          <File>${logDirectory}/historyTruncate/debug.log</File>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/historyTruncate/debug.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${debugPattern}</pattern>
-          </encoder>
-        </appender>
-        <appender name="historyTruncateaudit" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>INFO</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-          </filter>
-          <File>${logDirectory}/historyTruncate/audit.log</File>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/historyTruncate/audit.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${auditPattern}</pattern>
-          </encoder>
-        </appender>
-        <!-- historyTruncate logs ended -->
-        <!-- CreateDBSchema logs started  -->
-        <appender name="createDBSchema" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
-            <level>WARN</level>
-          </filter>
-          <File>${logDirectory}/createDBSchema/error.log</File>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/createDBSchema/error.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${"errorPattern"}</pattern>
-          </encoder>
-        </appender>
-        <appender name="createDBSchemadebug" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>DEBUG</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-          </filter>
-          <File>${logDirectory}/createDBSchema/debug.log</File>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/createDBSchema/debug.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${debugPattern}</pattern>
-          </encoder>
-        </appender>
-        <appender name="createDBSchemametric" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>INFO</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-          </filter>
-          <File>${logDirectory}/createDBSchema/metrics.log</File>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/createDBSchema/metrics.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${metricPattern}</pattern>
-          </encoder>
-        </appender>
-        <!-- CreateDBSchema logs ended  -->
-        <!-- DataCleanupTasks logs started  -->
-        <appender name="dataCleanuperror" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
-            <level>WARN</level>
-          </filter>
-          <File>${logDirectory}/misc/error.log</File>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/misc/error.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${"errorPattern"}</pattern>
-          </encoder>
-        </appender>
-        <appender name="dataCleanupdebug" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>DEBUG</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-          </filter>
-          <File>${logDirectory}/misc/debug.log</File>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/misc/debug.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${debugPattern}</pattern>
-          </encoder>
-        </appender>
-        <appender name="dataCleanupaudit" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>INFO</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-          </filter>
-          <File>${logDirectory}/misc/audit.log</File>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/misc/audit.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${auditPattern}</pattern>
-          </encoder>
-        </appender>
-        <!-- DataCleanupTasks logs ended  -->
-        <!-- dupeTool logs started -->
-        <appender name="dupeTooldebug" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>DEBUG</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-          </filter>
-          <File>${logDirectory}/dupetool/debug.log</File>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/dupetool/debug.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${debugPattern}</pattern>
-          </encoder>
-        </appender>
-        <appender name="dupeToolerror" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>WARN</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-          </filter>
-          <File>${logDirectory}/dupeTool/error.log</File>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/dupeTool/error.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${errorPattern}</pattern>
-          </encoder>
-        </appender>
-        <!-- dupeTool logs ended -->
-        <!-- dynamicPayloadGenerator log starts here -->
-        <appender name="dynamicPayloadGeneratorError" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
-            <level>WARN</level>
-          </filter>
-          <File>${logDirectory}/dynamicPayloadGenerator/error.log</File>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/dynamicPayloadGenerator/error.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${errorPattern}</pattern>
-          </encoder>
-        </appender>
-        <appender name="dynamicPayloadGeneratorDebug" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>DEBUG</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-          </filter>
-          <File>${logDirectory}/dynamicPayloadGenerator/debug.log</File>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/dynamicPayloadGenerator/debug.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${debugPattern}</pattern>
-          </encoder>
-        </appender>
-        <appender name="dynamicPayloadGeneratorAudit" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>INFO</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-          </filter>
-          <File>${logDirectory}/dataExport/audit.log</File>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/dynamicPayloadGenerator/audit.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${auditPattern}</pattern>
-          </encoder>
-        </appender>
-        <!-- dynamicPayloadGenerator log ends here -->
-        <!-- forceDelete logs started -->
-        <appender name="forceDeletedebug" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>DEBUG</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-          </filter>
-          <File>${logDirectory}/forceDelete/debug.log</File>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/forceDelete/debug.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${debugPattern}</pattern>
-          </encoder>
-        </appender>
-        <appender name="forceDeleteerror" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>WARN</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-          </filter>
-          <File>${logDirectory}/forceDelete/error.log</File>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/forceDelete/error.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${errorPattern}</pattern>
-          </encoder>
-        </appender>
-        <!-- forceDelete logs ended -->
-        <!-- migration logs started -->
-        <appender name="migrationdebug" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>DEBUG</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-          </filter>
-          <File>${logDirectory}/migration/debug.log</File>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/migration/debug.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${debugPattern}</pattern>
-          </encoder>
-        </appender>
-        <appender name="migrationerror" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>WARN</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-          </filter>
-          <File>${logDirectory}/migration/error.log</File>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/migration/error.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${errorPattern}</pattern>
-          </encoder>
-        </appender>
-        <!-- migration logs ended -->
-        <!-- DataGrooming logs started -->
-        <appender name="dataExportError" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
-            <level>WARN</level>
-          </filter>
-          <File>${logDirectory}/dataExport/error.log</File>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/dataExport/error.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${errorPattern}</pattern>
-          </encoder>
-        </appender>
-        <appender name="dataExportDebug" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>DEBUG</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-          </filter>
-          <File>${logDirectory}/dataExport/debug.log</File>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/dataExport/debug.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${debugPattern}</pattern>
-          </encoder>
-        </appender>
-        <appender name="dataExportAudit" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>INFO</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-          </filter>
-          <File>${logDirectory}/dataExport/audit.log</File>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/dataExport/audit.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${auditPattern}</pattern>
-          </encoder>
-        </appender>
-        <!-- schemaMod log starts -->
-        <appender name="schemaModdebug" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>DEBUG</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-          </filter>
-          <File>${logDirectory}/schemaMod/debug.log</File>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/schemaMod/debug.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${debugPattern}</pattern>
-          </encoder>
-        </appender>
-        <appender name="schemaModerror" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>WARN</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-          </filter>
-          <File>${logDirectory}/schemaMod/error.log</File>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/schemaMod/error.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${errorPattern}</pattern>
-          </encoder>
-        </appender>
-        <!-- schemaMod log ends -->
-        <!-- uniquePropertyCheck log starts here -->
-        <appender name="uniquePropertyCheckdebug" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>DEBUG</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-          </filter>
-          <File>${logDirectory}/uniquePropertyCheck/debug.log</File>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/uniquePropertyCheck/debug.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${debugPattern}</pattern>
-          </encoder>
-        </appender>
-        <appender name="uniquePropertyCheckmetric" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>INFO</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-          </filter>
-          <File>${logDirectory}/uniquePropertyCheck/metrics.log</File>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/uniquePropertyCheck/metrics.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${metricPattern}</pattern>
-          </encoder>
-        </appender>
-        <appender name="uniquePropertyCheckerror" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>WARN</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-          </filter>
-          <File>${logDirectory}/uniquePropertyCheck/error.log</File>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/uniquePropertyCheck/error.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${errorPattern}</pattern>
-          </encoder>
-        </appender>
-        <!-- uniquePropertyCheck log ends here -->
-        <!-- dynamicPayloadGenerator log starts here -->
-        <appender name="dynamicPayloadGeneratorError" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
-            <level>WARN</level>
-          </filter>
-          <File>${logDirectory}/dynamicPayloadGenerator/error.log</File>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/dynamicPayloadGenerator/error.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${errorPattern}</pattern>
-          </encoder>
-        </appender>
-        <appender name="dynamicPayloadGeneratorDebug" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>DEBUG</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-          </filter>
-          <File>${logDirectory}/dynamicPayloadGenerator/debug.log</File>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/dynamicPayloadGenerator/debug.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${debugPattern}</pattern>
-          </encoder>
-        </appender>
-        <appender name="dynamicPayloadGeneratorAudit" class="ch.qos.logback.core.rolling.RollingFileAppender">
-          <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>INFO</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-          </filter>
-          <File>${logDirectory}/dataExport/audit.log</File>
-          <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logDirectory}/dynamicPayloadGenerator/audit.log.%d{yyyy-MM-dd}</fileNamePattern>
-            <maxHistory>${maxHistory}</maxHistory>
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>
-          </rollingPolicy>
-          <encoder>
-            <pattern>${auditPattern}</pattern>
-          </encoder>
-        </appender>
-        <!-- dynamicPayloadGenerator log ends here -->
-    </then>
-  </if>
-
-  <logger name="org.onap.aai" level="DEBUG" additivity="false">
-    <if condition='property("logToFileEnabled").contains("true")'>
-      <then>
-        <appender-ref ref="asyncDEBUG"/>
-        <appender-ref ref="asyncSANE"/>
-      </then>
-    </if>
+  <logger name="org.onap.aai" level={{ .Values.log.level.base | upper | quote }} additivity="false">
     <appender-ref ref="STDOUT"/>
   </logger>
-  <!-- Spring related loggers -->
-  <logger name="org.springframework" level="WARN"/>
-  <logger name="org.springframework.beans" level="WARN"/>
-  <logger name="org.springframework.web" level="WARN"/>
-  <logger name="com.blog.spring.jms" level="WARN"/>
-  <logger name="com.jayway.jsonpath" level="WARN"/>
-  <!-- AJSC Services (bootstrap services) -->
-  <logger name="ajsc" level="WARN"/>
-  <logger name="ajsc.RouteMgmtService" level="WARN"/>
-  <logger name="ajsc.ComputeService" level="WARN"/>
-  <logger name="ajsc.VandelayService" level="WARN"/>
-  <logger name="ajsc.FilePersistenceService" level="WARN"/>
-  <logger name="ajsc.UserDefinedJarService" level="WARN"/>
-  <logger name="ajsc.UserDefinedBeansDefService" level="WARN"/>
-  <logger name="ajsc.LoggingConfigurationService" level="WARN"/>
-  <!-- AJSC related loggers (DME2 Registration, csi logging, restlet, servlet logging) -->
-  <logger name="org.codehaus.groovy" level="WARN"/>
-  <logger name="com.att.scamper" level="WARN"/>
-  <logger name="ajsc.utils" level="WARN"/>
-  <logger name="ajsc.utils.DME2Helper" level="WARN"/>
-  <logger name="ajsc.filters" level="WARN"/>
-  <logger name="ajsc.beans.interceptors" level="WARN"/>
-  <logger name="ajsc.restlet" level="WARN"/>
-  <logger name="ajsc.servlet" level="WARN"/>
-  <logger name="com.att.ajsc" level="WARN"/>
-  <logger name="com.att.ajsc.csi.logging" level="WARN"/>
-  <logger name="com.att.ajsc.filemonitor" level="WARN"/>
-  <logger name="com.netflix.loadbalancer" level="WARN"/>
-  <logger name="org.apache.zookeeper" level="WARN"/>
-  <!-- Other Loggers that may help troubleshoot -->
-  <logger name="net.sf" level="WARN"/>
-  <logger name="org.apache.commons.httpclient" level="WARN"/>
-  <logger name="org.apache.commons" level="WARN"/>
-  <logger name="org.apache.coyote" level="WARN"/>
-  <logger name="org.apache.jasper" level="WARN"/>
-  <!-- Camel Related Loggers (including restlet/servlet/jaxrs/cxf logging. May aid in troubleshooting) -->
-  <logger name="org.apache.camel" level="WARN"/>
-  <logger name="org.apache.cxf" level="WARN"/>
-  <logger name="org.apache.camel.processor.interceptor" level="WARN"/>
-  <logger name="org.apache.cxf.jaxrs.interceptor" level="WARN"/>
-  <logger name="org.apache.cxf.service" level="WARN"/>
-  <logger name="org.restlet" level="WARN"/>
-  <logger name="org.apache.camel.component.restlet" level="WARN"/>
-  <logger name="org.hibernate.validator" level="WARN"/>
-  <logger name="org.hibernate" level="WARN"/>
-  <logger name="org.hibernate.ejb" level="OFF"/>
-  <!-- logback internals logging -->
-  <logger name="ch.qos.logback.classic" level="WARN"/>
-  <logger name="ch.qos.logback.core" level="WARN"/>
-  <logger name="org.eclipse.jetty" level="WARN"/>
-  <!-- logback jms appenders & loggers definition starts here -->
-  <if condition='property("logToFileEnabled").contains("true")'>
-    <then>
-      <appender name="auditLogs" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <filter class="ch.qos.logback.classic.filter.ThresholdFilter"/>
-        <file>${logDirectory}/perf-audit/Audit-${lrmRVer}-${lrmRO}-${Pid}.log</file>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
-          <fileNamePattern>${logDirectory}/perf-audit/Audit-${lrmRVer}-${lrmRO}-${Pid}.%i.log.zip</fileNamePattern>
-          <minIndex>1</minIndex>
-          <maxIndex>9</maxIndex>
-        </rollingPolicy>
-        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
-          <maxFileSize>5MB</maxFileSize>
-        </triggeringPolicy>
-        <encoder>
-          <pattern>auditPattern</pattern>
-        </encoder>
-      </appender>
-      <appender name="perfLogs" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <filter class="ch.qos.logback.classic.filter.ThresholdFilter"/>
-        <file>${logDirectory}/perf-audit/Perform-${lrmRVer}-${lrmRO}-${Pid}.log</file>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
-          <fileNamePattern>${logDirectory}/perf-audit/Perform-${lrmRVer}-${lrmRO}-${Pid}.%i.log.zip</fileNamePattern>
-          <minIndex>1</minIndex>
-          <maxIndex>9</maxIndex>
-        </rollingPolicy>
-        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
-          <maxFileSize>5MB</maxFileSize>
-        </triggeringPolicy>
-        <encoder>
-          <pattern>"%d [%thread] %-5level %logger{1024} - %msg%n"</pattern>
-        </encoder>
-      </appender>
-      <appender name="auth" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
-          <level>DEBUG</level>
-        </filter>
-        <file>${logDirectory}/auth/auth.log</file>
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-          <fileNamePattern>${logDirectory}/auth/auth.log.%d{yyyy-MM-dd}</fileNamePattern>
-          <maxHistory>${maxHistory}</maxHistory>
-          <totalSizeCap>${totalSizeCap}</totalSizeCap>
-        </rollingPolicy>
-        <encoder>
-          <pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}[%thread] %-5level %logger{1024} - %msg%n</pattern>
-        </encoder>
-      </appender>
-      <appender name="asyncAUTH" class="ch.qos.logback.classic.AsyncAppender">
-        <queueSize>${queueSize}</queueSize>
-        <includeCallerData>true</includeCallerData>
-        <appender-ref ref="auth"/>
-      </appender>
-    </then>
-  </if>
-
   <logger name="AuditRecord" level="INFO" additivity="false">
-    <if condition='property("logToFileEnabled").contains("true")'>
-      <then>
-        <appender-ref ref="auditLogs"/>
-      </then>
-    </if>
     <appender-ref ref="STDOUT"/>
   </logger>
   <logger name="AuditRecord_DirectCall" level="INFO" additivity="false">
-    <if condition='property("logToFileEnabled").contains("true")'>
-      <then>
-        <appender-ref ref="auditLogs"/>
-      </then>
-    </if>
     <appender-ref ref="STDOUT"/>
   </logger>
   <logger name="PerfTrackerRecord" level="INFO" additivity="false">
-    <if condition='property("logToFileEnabled").contains("true")'>
-      <then>
-        <appender-ref ref="perfLogs"/>
-      </then>
-    </if>
     <appender-ref ref="STDOUT"/>
   </logger>
   <!-- logback jms appenders & loggers definition ends here -->
   <logger name="org.onap.aai.aaf" level="DEBUG" additivity="false">
-    <if condition='property("logToFileEnabled").contains("true")'>
-      <then>
-        <appender-ref ref="asyncAUTH"/>
-      </then>
-    </if>
     <appender-ref ref="STDOUT"/>
   </logger>
 
-  <if condition='property("logToFileEnabled").contains("true")'>
-    <then>
-      <logger name="org.onap.aai.aailog.filter.RestClientLoggingInterceptor" level="INFO">
-        <appender-ref ref="asyncMETRIC"/>
-      </logger>
-      <logger name="org.onap.logging.filter.base.AbstractMetricLogFilter" level="INFO">
-        <appender-ref ref="asyncMETRIC"/>
-      </logger>
-      <logger name="org.onap.aai.aailog.logs.AaiScheduledTaskAuditLog" level="INFO">
-        <appender-ref ref="asyncAUDIT"/>
-      </logger>
-      <logger name="org.onap.aai.aailog.logs.AaiDBMetricLog" level="INFO">
-        <appender-ref ref="asyncMETRIC"/>
-      </logger>
-      <logger name="org.onap.aai.logging.ErrorLogHelper" level="WARN">
-        <appender-ref ref="asyncERROR"/>
-      </logger>
-    </then>
-  </if>
-
+  <logger name="org.onap.aai.aailog.filter.RestClientLoggingInterceptor" level="INFO">
+    <appender-ref ref="STDOUT"/>
+  </logger>
+  <logger name="org.onap.logging.filter.base.AbstractMetricLogFilter" level="INFO">
+    <appender-ref ref="STDOUT"/>
+  </logger>
+  <logger name="org.onap.aai.aailog.logs.AaiScheduledTaskAuditLog" level="INFO">
+    <appender-ref ref="STDOUT"/>
+  </logger>
+  <logger name="org.onap.aai.aailog.logs.AaiDBMetricLog" level="INFO">
+    <appender-ref ref="STDOUT"/>
+  </logger>
+  <logger name="org.onap.aai.logging.ErrorLogHelper" level="WARN">
+    <appender-ref ref="STDOUT"/>
+  </logger>
   <logger name="org.onap.logging.filter.base.AbstractAuditLogFilter" level="INFO">
-    <if condition='property("logToFileEnabled").contains("true")'>
-      <then>
-        <appender-ref ref="asyncAUDIT"/>
-      </then>
-    </if>
     <appender-ref ref="STDOUT"/>
   </logger>
   <logger name="org.onap.aai.interceptors.post" level="DEBUG" additivity="false">
-    <if condition='property("logToFileEnabled").contains("true")'>
-      <then>
-        <appender-ref ref="asynctranslog"/>
-      </then>
-    </if>
     <appender-ref ref="STDOUT"/>
   </logger>
-  <logger name="org.onap.aai.dmaap" level="DEBUG" additivity="false">
-    <if condition='property("logToFileEnabled").contains("true")'>
-      <then>
-        <appender-ref ref="dmaapAAIEventConsumer"/>
-        <appender-ref ref="dmaapAAIEventConsumerDebug"/>
-        <appender-ref ref="dmaapAAIEventConsumerMetric"/>
-      </then>
-    </if>
+  <logger name="org.onap.aai.kafka" level="DEBUG" additivity="false">
     <appender-ref ref="STDOUT"/>
   </logger>
   <logger name="org.onap.aai.datasnapshot" level="DEBUG" additivity="false">
-    <if condition='property("logToFileEnabled").contains("true")'>
-      <then>
-        <appender-ref ref="dataSnapshot"/>
-        <appender-ref ref="dataSnapshotdebug"/>
-        <appender-ref ref="dataSnapshotaudit"/>
-      </then>
-    </if>
     <appender-ref ref="STDOUT"/>
   </logger>
   <logger name="org.onap.aai.historytruncate" level="DEBUG" additivity="false">
-    <if condition='property("logToFileEnabled").contains("true")'>
-      <then>
-        <appender-ref ref="historyTruncate"/>
-        <appender-ref ref="historyTruncatedebug"/>
-        <appender-ref ref="historyTruncateaudit"/>
-      </then>
-    </if>
     <appender-ref ref="STDOUT"/>
   </logger>
   <logger name="org.onap.aai.datagrooming" level="DEBUG" additivity="false">
-    <if condition='property("logToFileEnabled").contains("true")'>
-      <then>
-        <appender-ref ref="dataGrooming"/>
-        <appender-ref ref="dataGroomingdebug"/>
-        <appender-ref ref="dataGroomingaudit"/>
-      </then>
-    </if>
     <appender-ref ref="STDOUT"/>
   </logger>
   <logger name="org.onap.aai.schema" level="DEBUG" additivity="false">
-    <if condition='property("logToFileEnabled").contains("true")'>
-      <then>
-        <appender-ref ref="createDBSchema"/>
-        <appender-ref ref="createDBSchemadebug"/>
-        <appender-ref ref="createDBSchemametric"/>
-      </then>
-    </if>
     <appender-ref ref="STDOUT"/>
   </logger>
   <logger name="org.onap.aai.dbgen.DupeTool" level="DEBUG" additivity="false">
-    <if condition='property("logToFileEnabled").contains("true")'>
-      <then>
-        <appender-ref ref="dupeTooldebug"/>
-        <appender-ref ref="dupeToolerror"/>
-      </then>
-    </if>
     <appender-ref ref="STDOUT"/>
   </logger>
   <logger name="org.onap.aai.dbgen.DynamicPayloadGenerator" level="DEBUG" additivity="false">
-    <if condition='property("logToFileEnabled").contains("true")'>
-      <then>
-        <appender-ref ref="dynamicPayloadGeneratorAudit"/>
-        <appender-ref ref="dynamicPayloadGeneratorError"/>
-        <appender-ref ref="dynamicPayloadGeneratorDebug"/>
-      </then>
-    </if>
     <appender-ref ref="STDOUT"/>
   </logger>
   <logger name="org.onap.aai.dbgen" level="DEBUG" additivity="false">
-    <if condition='property("logToFileEnabled").contains("true")'>
-      <then>
-        <appender-ref ref="createDBSchema"/>
-        <appender-ref ref="createDBSchemadebug"/>
-        <appender-ref ref="createDBSchemametric"/>
-      </then>
-    </if>
     <appender-ref ref="STDOUT"/>
   </logger>
   <logger name="org.onap.aai.datacleanup" level="DEBUG" additivity="false">
-    <if condition='property("logToFileEnabled").contains("true")'>
-      <then>
-        <appender-ref ref="dataCleanuperror"/>
-        <appender-ref ref="dataCleanupdebug"/>
-        <appender-ref ref="dataCleanupaudit"/>
-      </then>
-    </if>
     <appender-ref ref="STDOUT"/>
   </logger>
   <logger name="org.onap.aai.migration" level="DEBUG" additivity="false">
-    <if condition='property("logToFileEnabled").contains("true")'>
-      <then>
-        <appender-ref ref="migrationdebug"/>
-        <appender-ref ref="migrationerror"/>
-      </then>
-    </if>
     <appender-ref ref="STDOUT"/>
   </logger>
   <logger name="org.onap.aai.util.SendMigrationNotifications" level="DEBUG" additivity="false">
-    <if condition='property("logToFileEnabled").contains("true")'>
-      <then>
-        <appender-ref ref="migrationdebug"/>
-        <appender-ref ref="migrationerror"/>
-      </then>
-    </if>
     <appender-ref ref="STDOUT"/>
   </logger>
   <logger name="org.onap.aai.util.SendDeleteMigrationNotifications" level="DEBUG" additivity="false">
-    <if condition='property("logToFileEnabled").contains("true")'>
-      <then>
-        <appender-ref ref="migrationdebug"/>
-        <appender-ref ref="migrationerror"/>
-      </then>
-    </if>
     <appender-ref ref="STDOUT"/>
   </logger>
   <logger name="org.onap.aai.dataexport" level="DEBUG" additivity="false">
-    <if condition='property("logToFileEnabled").contains("true")'>
-      <then>
-        <appender-ref ref="dataExportError"/>
-        <appender-ref ref="dataExportDebug"/>
-      </then>
-    </if>
     <appender-ref ref="STDOUT"/>
   </logger>
-  <if condition='property("logToFileEnabled").contains("true")'>
-    <then>
-      <logger name="org.onap.aai.dataexport" level="DEBUG" additivity="false">
-        <appender-ref ref="dataExportAudit"/>
-      </logger>
-    </then>
-  </if>
+
   <logger name="org.apache" level="WARN"/>
   <logger name="org.zookeeper" level="WARN"/>
   <logger name="com.netflix" level="WARN"/>
   <logger name="org.janusgraph" level="WARN"/>
+  <logger name="org.janusgraph.graphdb.transaction" level="ERROR" />
   <logger name="com.att.aft.dme2" level="WARN"/>
   <!-- ============================================================================ -->
   <!-- General EELF logger -->
   <!-- ============================================================================ -->
   <logger name="com.att.eelf" level="WARN" additivity="false">
-    <if condition='property("logToFileEnabled").contains("true")'>
-      <then>
-        <appender-ref ref="asyncDEBUG"/>
-        <appender-ref ref="asyncERROR"/>
-        <appender-ref ref="asyncMETRIC"/>
-      </then>
-    </if>
     <appender-ref ref="STDOUT"/>
   </logger>
-  <root level="DEBUG">
-    <if condition='property("logToFileEnabled").contains("true")'>
-      <then>
-        <appender-ref ref="external"/>
-      </then>
-    </if>
+  <root level={{ .Values.log.level.root | upper | quote }}>
     <appender-ref ref="STDOUT"/>
   </root>
 </configuration>
diff --git a/kubernetes/aai/components/aai-graphadmin/resources/config/realm.properties b/kubernetes/aai/components/aai-graphadmin/resources/config/realm.properties
deleted file mode 100644 (file)
index 40dc674..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-{{/*
-#
-# ============LICENSE_START=======================================================
-# org.onap.aai
-# ================================================================================
-# Copyright � 2018 AT&T Intellectual Property. All rights reserved.
-# ================================================================================
-# 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.
-# ============LICENSE_END=========================================================
-# format : username: password[,rolename ...]
-# default username/password: AAI/AAI, MSO/MSO, ModelLoader/ModelLoader...
-*/ -}}
-AAI:OBF:1gfr1ev31gg7,admin
-MSO:OBF:1jzx1lz31k01,admin
-SDNC:OBF:1itr1i0l1i151isv,admin
-DCAE:OBF:1g8u1f9d1f991g8w,admin
-POLICY:OBF:1mk61i171ima1im41i0j1mko,admin
-ASDC:OBF:1f991j0u1j001f9d,admin
-ModelLoader:OBF:1qvu1v2h1sov1sar1wfw1j7j1wg21saj1sov1v1x1qxw,admin
-AaiUI:OBF:1gfr1p571unz1p4j1gg7,admin
-OOF:OBF:1img1ke71ily,admin
-aai@aai.onap.org:OBF:1fia1ju61l871lfe18xp18xr18xt1lc41l531jrk1fek,admin
-so@so.onap.org:OBF:1fia1ju61l871lfe18xp18xr18xt1lc41l531jrk1fek,admin
-sdnc@sdnc.onap.org:OBF:1fia1ju61l871lfe18xp18xr18xt1lc41l531jrk1fek,admin
-dcae@dcae.onap.org:OBF:1fia1ju61l871lfe18xp18xr18xt1lc41l531jrk1fek,admin
-policy@policy.onap.org:OBF:1fia1ju61l871lfe18xp18xr18xt1lc41l531jrk1fek,admin
-sdc@sdc.onap.org:OBF:1fia1ju61l871lfe18xp18xr18xt1lc41l531jrk1fek,admin
-oof@oof.onap.org:OBF:1fia1ju61l871lfe18xp18xr18xt1lc41l531jrk1fek,admin
-pomba@pomba.onap.org:OBF:1fia1ju61l871lfe18xp18xr18xt1lc41l531jrk1fek,admin
-vfc@vfc.onap.org:OBF:1fia1ju61l871lfe18xp18xr18xt1lc41l531jrk1fek,admin
diff --git a/kubernetes/aai/components/aai-graphadmin/templates/_helpers.tpl b/kubernetes/aai/components/aai-graphadmin/templates/_helpers.tpl
new file mode 100644 (file)
index 0000000..dd3a3fc
--- /dev/null
@@ -0,0 +1,20 @@
+{{- define "aai.waitForSchemaService" -}}
+- name: wait-for-schema-service
+  image: "{{ include "repositoryGenerator.image.curl" . }}"
+  imagePullPolicy: IfNotPresent
+  command: ["/bin/sh", "-c"]
+  args:
+    - |
+      URL="{{ required "URL is required" (.Values.schemaInitCheckURL | default "http://aai-schema-service:8452/aai/schema-service/util/echo") }}"
+      AUTH="{{ printf "%s:%s" (index .Values.global.auth.users 0).username (index .Values.global.auth.users 0).password }}"
+      while true; do
+        if curl --fail --header 'X-FromAppId: graphadmin' --header 'X-TransactionId: someTransaction' -u $AUTH -s $URL; then
+          echo "Request successful. Schema-service is available"
+          exit 0
+        else
+          echo "Request unsuccessful. Schema-service is not available yet. Retrying in 3 seconds..."
+          sleep 3
+        fi
+      done
+  {{ include "common.containerSecurityContext" . | indent 2 | trim }}
+{{- end -}}
diff --git a/kubernetes/aai/components/aai-graphadmin/templates/aai-graph-kafka-user.yml b/kubernetes/aai/components/aai-graphadmin/templates/aai-graph-kafka-user.yml
new file mode 100644 (file)
index 0000000..04692fe
--- /dev/null
@@ -0,0 +1,32 @@
+{{/*
+# Copyright © 2022-23 Nordix Foundation
+#
+# 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.
+*/}}
+apiVersion: kafka.strimzi.io/v1beta2
+kind: KafkaUser
+metadata:
+  name: {{ include "common.release" . }}-{{ .Values.global.aaiGraphKafkaUser }}
+  labels: {{- include "common.labels" . | nindent 4 }}
+    strimzi.io/cluster: {{ include "common.release" . }}-strimzi
+spec:
+  authentication:
+    type: scram-sha-512
+  authorization:
+    type: simple
+    acls:
+    - resource:
+        type: topic
+        name: AAI-EVENT
+      operations:
+        - All
index 8eb4a4a..90768b0 100644 (file)
@@ -25,11 +25,7 @@ kind: ConfigMap
 metadata:
   name: {{ include "common.fullname" . }}
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" . | nindent 4 }}
   {{- if .Values.global.jobs.migration.enabled }}
   annotations:
     "helm.sh/hook": pre-upgrade,pre-install
@@ -40,19 +36,13 @@ data:
 {{ tpl (.Files.Glob "resources/config/logback.xml").AsConfig . | indent 2 }}
 {{ tpl (.Files.Glob "resources/config/localhost-access-logback.xml").AsConfig . | indent 2 }}
 {{ tpl (.Files.Glob "resources/config/janusgraph-realtime.properties").AsConfig . | indent 2 }}
-{{ tpl (.Files.Glob "resources/config/janusgraph-cached.properties").AsConfig . | indent 2 }}
-{{ tpl (.Files.Glob "resources/config/realm.properties").AsConfig . | indent 2 }}
 ---
 apiVersion: v1
 kind: ConfigMap
 metadata:
   name: {{ include "common.fullname" . }}-properties
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" . | nindent 4 }}
   {{- if .Values.global.jobs.migration.enabled }}
   annotations:
     "helm.sh/hook": pre-upgrade,pre-install
@@ -69,11 +59,7 @@ kind: ConfigMap
 metadata:
   name: {{ include "common.fullname" . }}-migration
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" . | nindent 4 }}
   annotations:
     "helm.sh/hook": pre-upgrade,pre-install
     "helm.sh/hook-weight": "0"
index cad213a..4f3b44f 100644 (file)
 */}}
 apiVersion: apps/v1
 kind: Deployment
-metadata:
-  name: {{ include "common.fullname" . }}
-  namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    app.kubernetes.io/name: {{ include "common.name" . }}
-    {{- if .Chart.AppVersion }}
-    version: "{{ .Chart.AppVersion | replace "+" "_" }}"
-    {{- else }}
-    version: "{{ .Chart.Version | replace "+" "_" }}"
-    {{- end }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+metadata: {{- include "common.resourceMetadata" (dict "annotations" .Values.annotations "dot" .) | nindent 2 }}
 spec:
+  {{- if .Values.config.debug.enabled }}
+  replicas: 1
+  {{- else }}
   replicas: {{ .Values.replicaCount }}
+  {{- end }}
+  revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
   minReadySeconds: {{ .Values.minReadySeconds }}
   strategy:
     type: {{ .Values.updateStrategy.type }}
@@ -49,106 +41,141 @@ spec:
     matchLabels:
       app: {{ include "common.name" . }}
   template:
-    metadata:
-      labels:
-        app: {{ include "common.name" . }}
-        release: {{ include "common.release" . }}
-        app.kubernetes.io/name: {{ include "common.name" . }}
-        {{- if .Chart.AppVersion }}
-        version: "{{ .Chart.AppVersion | replace "+" "_" }}"
-        {{- else }}
-        version: "{{ .Chart.Version | replace "+" "_" }}"
-        {{- end }}
-      name: {{ include "common.name" . }}
-      annotations:
-        checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
+    metadata: {{- include "common.templateMetadata" . | nindent 6 }}
     spec:
       hostname: aai-graphadmin
       terminationGracePeriodSeconds: {{ .Values.service.terminationGracePeriodSeconds }}
-    {{ if .Values.global.initContainers.enabled }}
+      {{- if .Values.global.initContainers.enabled }}
       initContainers:
-      - command:
-      {{ if .Values.global.jobs.migration.enabled }}
-        - /app/ready.py
-        args:
-        - --job-name
-        - {{ include "common.release" . }}-aai-graphadmin-migration
-      {{  else if .Values.global.jobs.createSchema.enabled  }}
-        - /app/ready.py
-        args:
-        - --job-name
-        - {{ include "common.release" . }}-aai-graphadmin-create-db-schema
-      {{  else }}
-        - /app/ready.py
-        args:
-        - --service-name
-        - {{ .Values.global.cassandra.serviceName }}
-        - --service-name
-        - aai-schema-service
-      {{  end  }}
-        env:
-        - name: NAMESPACE
-          valueFrom:
-            fieldRef:
-              apiVersion: v1
-              fieldPath: metadata.namespace
-        image: {{ include "repositoryGenerator.image.readiness" . }}
-        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-        name: {{ include "common.name" . }}-readiness
-        resources:
-          limits:
-            cpu: "100m"
-            memory: "500Mi"
-          requests:
-            cpu: "3m"
-            memory: "20Mi"
-      {{  end  }}
+        {{ include "common.readinessCheck.waitFor" (dict "dot" . "wait_for" .Values.readinessCheck.waitForCassandraService ) | indent 8 | trim }}
+        {{- if not .Values.createDbSchemaViaJob.enabled }}
+        {{- include "aai.waitForSchemaService" . | nindent 8 }}
+        - name: {{ include "common.name" . }}-create-db-schema
+          image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
+          imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+          {{ include "common.containerSecurityContext" . | nindent 10 | trim }}
+          command:
+          - sh
+          args:
+          - -c
+          - |
+            {{- if include "common.onServiceMesh" . }}
+            echo "waiting 15s for istio side cars to be up"; sleep 15s;{{- end }}
+            sh docker-entrypoint.sh createDBSchema.sh;
+            {{ include "common.serviceMesh.killSidecar" . | indent 11 | trim }}
+          env:
+          {{- if .Values.config.debug.enabled }}
+          - name: JVM_OPTS
+            value: {{ .Values.config.debug.args | quote }}
+          {{- end }}
+          {{- if .Values.config.env }}
+          {{- range $key,$value := .Values.config.env }}
+          - name: {{ $key | upper | quote}}
+            value: {{ $value | quote}}
+          {{- end }}
+          {{- end }}
+          - name: BOOTSTRAP_SERVERS
+            value: {{ include "common.release" . }}-strimzi-kafka-bootstrap:9092
+          - name: JAAS_CONFIG
+            valueFrom:
+              secretKeyRef:
+                name: {{ include "common.release" . }}-{{ .Values.global.aaiGraphKafkaUser }}
+                key: sasl.jaas.config
+          {{- if .Values.config.debug.enabled }}
+          ports:
+          - containerPort: {{ .Values.service.debugPort }}
+            name: {{ .Values.service.debugPortName }}
+          {{- end }}
+          volumeMounts:
+          - mountPath: /opt/app/aai-graphadmin/resources/etc/appprops/janusgraph-realtime.properties
+            name: config
+            subPath: janusgraph-realtime.properties
+          - mountPath: /opt/app/aai-graphadmin/resources/etc/appprops/aaiconfig.properties
+            name: properties
+            subPath: aaiconfig.properties
+          - mountPath: /opt/aai/logroot/AAI-GA
+            name: logs
+          - mountPath: /opt/app/aai-graphadmin/resources/logback.xml
+            name: config
+            subPath: logback.xml
+          - mountPath: /opt/app/aai-graphadmin/resources/localhost-access-logback.xml
+            name: config
+            subPath: localhost-access-logback.xml
+          - mountPath: /opt/app/aai-graphadmin/resources/application.properties
+            name: properties
+            subPath: application.properties
+          resources: {{ include "common.resources" . | nindent 12 }}
+        {{- end }}
+      {{- end }}
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
       containers:
       - name: {{ include "common.name" . }}
         image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        {{ include "common.containerSecurityContext" . | indent 8 | trim }}
         env:
-        - name: LOCAL_USER_ID
-          value: {{ .Values.securityContext.user_id | quote }}
-        - name: LOCAL_GROUP_ID
-          value: {{ .Values.securityContext.group_id | quote }}
+        {{- if .Values.config.env }}
+        {{- range $key,$value := .Values.config.env }}
+        - name: {{ $key | upper | quote}}
+          value: {{ $value | quote}}
+        {{- end }}
+        {{- end }}
         - name: INTERNAL_PORT_1
-          value: {{ .Values.service.internalPort | quote }}
+          value: {{ .Values.service.appPort | quote }}
         - name: INTERNAL_PORT_2
-          value: {{ .Values.service.internalPort2 | quote }}
+          value: {{ .Values.service.debugPort | quote }}
         - name: INTERNAL_PORT_3
-          value: {{ .Values.service.internalPort3 | quote }}
+          value: {{ .Values.service.actuatorPort | quote }}
+        - name: BOOTSTRAP_SERVERS
+          value: {{ include "common.release" . }}-strimzi-kafka-bootstrap:9092
+        - name: JAAS_CONFIG
+          valueFrom:
+            secretKeyRef:
+              name: {{ include "common.release" . }}-{{ .Values.global.aaiGraphKafkaUser }}
+              key: sasl.jaas.config
+        {{- if .Values.config.profiling.enabled }}
+        - name: PRE_JVM_ARGS
+          value: '{{ join " " .Values.config.profiling.args }}'
+        {{- end }}
+        {{- if .Values.config.debug.enabled }}
+        - name: POST_JVM_ARGS
+          value: {{ .Values.config.debug.args | quote }}
+        {{- end }}
         volumeMounts:
         - mountPath: /opt/app/aai-graphadmin/resources/etc/appprops/janusgraph-realtime.properties
           name: config
           subPath: janusgraph-realtime.properties
-        - mountPath: /opt/app/aai-graphadmin/resources/etc/appprops/janusgraph-cached.properties
-          name: config
-          subPath: janusgraph-cached.properties
         - mountPath: /opt/app/aai-graphadmin/resources/etc/appprops/aaiconfig.properties
           name: properties
           subPath: aaiconfig.properties
         - mountPath: /opt/aai/logroot/AAI-RES
           name: logs
+        - mountPath: /opt/app/aai-graphadmin/logs
+          name: script-logs
         - mountPath: /opt/app/aai-graphadmin/resources/logback.xml
           name: config
           subPath: logback.xml
         - mountPath: /opt/app/aai-graphadmin/resources/localhost-access-logback.xml
           name: config
           subPath: localhost-access-logback.xml
-        - mountPath: /opt/app/aai-graphadmin/resources/etc/auth/realm.properties
-          name: config
-          subPath: realm.properties
         - mountPath: /opt/app/aai-graphadmin/resources/application.properties
           name: properties
           subPath: application.properties
+        - mountPath: /tmp
+          name: tmp-volume
         ports:
-        - containerPort: {{ .Values.service.internalPort }}
-          name: {{ .Values.service.portName }}
-        - containerPort: {{ .Values.service.internalPort2 }}
-          name: {{ .Values.service.portName2 }}
-        - containerPort: {{ .Values.service.internalPort3 }}
-          name: {{ .Values.service.portName3 }}
+        - containerPort: {{ .Values.service.appPort }}
+          name: {{ .Values.service.appPortName }}
+        {{- if .Values.config.debug.enabled }}
+        - containerPort: {{ .Values.service.debugPort }}
+          name: {{ .Values.service.debugPortName }}
+        {{- end }}
+        {{- if .Values.config.profiling.enabled }}
+        - containerPort: {{ .Values.service.profilingPort }}
+          name: {{ .Values.service.profilingPortName }}
+        {{- end }}
+        - containerPort: {{ .Values.service.actuatorPort }}
+          name: {{ .Values.service.actuatorPortName }}
         lifecycle:
           # wait for active requests (long-running tasks) to be finished
           # Before the SIGTERM is invoked, Kubernetes exposes a preStop hook in the Pod.
@@ -158,39 +185,58 @@ spec:
                 - sh
                 - -c
                 - |
-                  while (netstat -an | grep ESTABLISHED | grep -e $INTERNAL_PORT_1 -e $INTERNAL_PORT_2)
-                  do sleep 10
+                  while (netstat -an | grep ESTABLISHED | grep -e $INTERNAL_PORT_1 -e $INTERNAL_PORT_2) do
+                    echo "Still active connections. Waiting for active requests to be finished"
+                    sleep 3
                   done
-        # disable liveness probe when breakpoints set in debugger
-        # so K8s doesn't restart unresponsive container
-        {{ if .Values.liveness.enabled }}
+        # disable liveness probe when
+        # debugging.enabled=true or profiling.enabled=true
+        {{- if and .Values.liveness.enabled (not (or .Values.config.debug.enabled .Values.config.profiling.enabled)) }}
         livenessProbe:
-          tcpSocket:
-            port: {{ .Values.service.internalPort }}
+          httpGet:
+            port: {{ .Values.service.actuatorPort }}
+            path: {{ .Values.liveness.path }}
+          {{- if .Values.liveness.initialDelaySeconds }}
           initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
+          {{- end }}
           periodSeconds: {{ .Values.liveness.periodSeconds }}
-        {{ end }}
+        {{- end }}
         readinessProbe:
-          tcpSocket:
-            port: {{ .Values.service.internalPort }}
+          httpGet:
+            port: {{ .Values.service.actuatorPort }}
+            path: {{ .Values.readiness.path }}
+          {{- if .Values.readiness.initialDelaySeconds }}
           initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
+          {{- end }}
           periodSeconds: {{ .Values.readiness.periodSeconds }}
+        startupProbe:
+          httpGet:
+            port: {{ .Values.service.actuatorPort }}
+            path: {{ .Values.startup.path }}
+          failureThreshold: {{ .Values.startup.failureThreshold }}
+          periodSeconds: {{ .Values.startup.periodSeconds }}
         resources: {{ include "common.resources" . | nindent 10 }}
       {{- if .Values.nodeSelector }}
       nodeSelector:
-{{ toYaml .Values.nodeSelector | indent 8 }}
+      {{ toYaml .Values.nodeSelector | indent 8 }}
       {{- end -}}
       {{- if .Values.affinity }}
       affinity:
-{{ toYaml .Values.affinity | indent 8 }}
+      {{ toYaml .Values.affinity | indent 8 }}
       {{- end }}
-
       # side car containers
       {{ include "common.log.sidecar" . | nindent 6 }}
       serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
       volumes:
+      - name: tmp-volume
+        emptyDir:
+          sizeLimit: {{ .Values.volumes.tmpSizeLimit }}
       - name: logs
-        emptyDir: {}
+        emptyDir:
+          sizeLimit: {{ .Values.volumes.logSizeLimit }}
+      - name: script-logs
+        emptyDir:
+          sizeLimit: {{ .Values.volumes.scriptlogSizeLimit }}
       {{ include "common.log.volumes" (dict "dot" . "configMapNamePrefix" (tpl .Values.logConfigMapNamePrefix .)) | nindent 6 }}
       - name: config
         configMap:
index c949f7d..6366e06 100644 (file)
@@ -41,51 +41,27 @@ kind: Job
 metadata:
   name: {{ include "common.fullname" . }}-db-backup
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}-job
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-  annotations:
-    "helm.sh/hook": pre-upgrade,pre-install
-    "helm.sh/hook-weight": "2"
-    "helm.sh/hook-delete-policy": before-hook-creation
+  labels: {{- include "common.labels" (dict "labels" .Values.labels "ignoreHelmChart" .Values.ignoreHelmChart "dot" . "suffix" "job") | nindent 4 }}
+  {{- if .Values.jobAnnotations.backup }}
+  annotations:  {{- include "common.tplValue" (dict "value" .Values.jobAnnotations.backup "context" $) | nindent 4 }}
+  {{- end }}
 spec:
   backoffLimit: 20
   template:
     metadata:
-      labels:
-        app: {{ include "common.name" . }}-job
-        release: {{ include "common.release" . }}
+      labels: {{- include "common.labels" (dict "labels" .Values.labels "ignoreHelmChart" .Values.ignoreHelmChart "dot" . "suffix" "job") | nindent 8 }}
       name: {{ include "common.name" . }}
     spec:
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
       initContainers:
-      {{ if eq .Values.global.jobs.migration.remoteCassandra.enabled false }}
-      - command:
-        - /bin/bash
-        - -c
-        - /app/ready.py --service-name {{ .Values.global.cassandra.serviceName }}
-        env:
-        - name: NAMESPACE
-          valueFrom:
-            fieldRef:
-              apiVersion: v1
-              fieldPath: metadata.namespace
-        image: {{ include "repositoryGenerator.image.readiness" . }}
-        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-        name: {{ include "common.name" . }}-db-backup-readiness
-        resources:
-          limits:
-            cpu: "100m"
-            memory: "500Mi"
-          requests:
-            cpu: "3m"
-            memory: "20Mi"
+      {{- if eq .Values.global.jobs.migration.remoteCassandra.enabled false }}
+      {{ include "common.readinessCheck.waitFor" (dict "dot" . "wait_for" .Values.readinessCheck.waitForCassandraService ) | indent 6 | trim}}
       {{- end }}
       containers:
       - name: {{ include "common.name" . }}-db-backup-job
         image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        {{ include "common.containerSecurityContext" . | indent 8 | trim }}
         command:
         - sh
         args:
@@ -95,11 +71,6 @@ spec:
            echo "waiting 15s for istio side cars to be up"; sleep 15s;{{- end }}
            bash docker-entrypoint.sh dataSnapshot.sh;
            {{ include "common.serviceMesh.killSidecar" . | indent 11 | trim }}
-        env:
-        - name: LOCAL_USER_ID
-          value: {{ .Values.securityContext.user_id | quote }}
-        - name: LOCAL_GROUP_ID
-          value: {{ .Values.securityContext.group_id | quote }}
         volumeMounts:
         - mountPath: /opt/app/aai-graphadmin/logs/data/dataSnapshots
           name: snapshots
index 5046b0c..fc35966 100644 (file)
 # then it is your job to ensure that there are no connections to the database
 */}}
 
+{{/* the new default is schema creation via graphadmin init container. This will be removed in the future. */}}
+{{- if .Values.createDbSchemaViaJob.enabled }}
 {{- if and ( not .Values.global.jobs.migration.enabled ) ( .Values.global.jobs.createSchema.enabled ) }}
 apiVersion: batch/v1
 kind: Job
 metadata:
   name: {{ include "common.fullname" . }}-create-db-schema
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}-job
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" (dict "labels" .Values.labels "ignoreHelmChart" .Values.ignoreHelmChart "dot" . "suffix" "job") | nindent 4 }}
+  {{- if .Values.jobAnnotations.createDBSchema }}
+  annotations:  {{- include "common.tplValue" (dict "value" .Values.jobAnnotations.createDBSchema "context" $) | nindent 4 }}
+  {{- end }}
 spec:
   backoffLimit: 20
   template:
     metadata:
-      labels:
-        app: {{ include "common.name" . }}-job
-        release: {{ include "common.release" . }}
+      labels: {{- include "common.labels" (dict "labels" .Values.labels "ignoreHelmChart" .Values.ignoreHelmChart "dot" . "suffix" "job") | nindent 8 }}
       name: {{ include "common.name" . }}
     spec:
-      initContainers:
-      - command:
-        - /app/ready.py
-        args:
-        - --service-name
-        - {{ .Values.global.cassandra.serviceName }}
-        - --service-name
-        - aai-schema-service
-        env:
-        - name: NAMESPACE
-          valueFrom:
-            fieldRef:
-              apiVersion: v1
-              fieldPath: metadata.namespace
-        image: {{ include "repositoryGenerator.image.readiness" . }}
-        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-        name: {{ include "common.name" . }}-readiness
-        resources:
-          limits:
-            cpu: "100m"
-            memory: "500Mi"
-          requests:
-            cpu: "3m"
-            memory: "20Mi"
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
       containers:
       - name: {{ include "common.name" . }}-job
         image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        {{ include "common.containerSecurityContext" . | nindent 8 | trim }}
         command:
         - sh
         args:
@@ -89,20 +66,33 @@ spec:
         - |
            {{- if include "common.onServiceMesh" . }}
            echo "waiting 15s for istio side cars to be up"; sleep 15s;{{- end }}
-           bash docker-entrypoint.sh createDBSchema.sh;
+           sh docker-entrypoint.sh createDBSchema.sh;
            {{ include "common.serviceMesh.killSidecar" . | indent 11 | trim }}
         env:
-        - name: LOCAL_USER_ID
-          value: {{ .Values.securityContext.user_id | quote }}
-        - name: LOCAL_GROUP_ID
-          value: {{ .Values.securityContext.group_id | quote }}
+        {{- if .Values.config.debug.enabled }}
+        - name: JVM_OPTS
+          value: {{ .Values.config.debug.args | quote }}
+        {{- end }}
+        {{- if .Values.config.env }}
+        {{- range $key,$value := .Values.config.env }}
+        - name: {{ $key | upper | quote}}
+          value: {{ $value | quote}}
+        {{- end }}
+        {{- end }}
+        - name: JAAS_CONFIG
+          valueFrom:
+            secretKeyRef:
+              name: {{ include "common.release" . }}-{{ .Values.global.aaiGraphKafkaUser }}
+              key: sasl.jaas.config
+        {{- if .Values.config.debug.enabled }}
+        ports:
+        - containerPort: {{ .Values.service.debugPort }}
+          name: {{ .Values.service.debugPortName }}
+        {{- end }}
         volumeMounts:
         - mountPath: /opt/app/aai-graphadmin/resources/etc/appprops/janusgraph-realtime.properties
           name: config
           subPath: janusgraph-realtime.properties
-        - mountPath: /opt/app/aai-graphadmin/resources/etc/appprops/janusgraph-cached.properties
-          name: config
-          subPath: janusgraph-cached.properties
         - mountPath: /opt/app/aai-graphadmin/resources/etc/appprops/aaiconfig.properties
           name: properties
           subPath: aaiconfig.properties
@@ -128,7 +118,8 @@ spec:
       volumes:
       {{ include "common.log.volumes" (dict "dot" . "configMapNamePrefix" (tpl .Values.logConfigMapNamePrefix .)) | nindent 6 }}
       - name: logs
-        emptyDir: {}
+        emptyDir:
+          sizeLimit: 64Mi
       - name: config
         configMap:
           name: {{ include "common.fullname" . }}
@@ -137,4 +128,5 @@ spec:
           name: {{ include "common.fullname" . }}-properties
       restartPolicy: Never
       {{- include "common.imagePullSecrets" . | nindent 6 }}
-{{ end }}
+{{- end }}
+{{- end }}
index 9247403..fcfb479 100644 (file)
@@ -41,68 +41,32 @@ kind: Job
 metadata:
   name: {{ include "common.fullname" . }}-migration
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}-job
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
-  annotations:
-    "helm.sh/hook": post-upgrade,post-rollback,post-install
-    "helm.sh/hook-weight": "1"
-    "helm.sh/hook-delete-policy": before-hook-creation
+  labels: {{- include "common.labels" (dict "labels" .Values.labels "ignoreHelmChart" .Values.ignoreHelmChart "dot" . "suffix" "job") | nindent 4 }}
+  {{- if .Values.jobAnnotations.migration }}
+  annotations:  {{- include "common.tplValue" (dict "value" .Values.jobAnnotations.migration "context" $) | nindent 4 }}
+  {{- end }}
 spec:
   backoffLimit: 20
   template:
     metadata:
-      labels:
-        app: {{ include "common.name" . }}-job
-        release: {{ include "common.release" . }}
+      labels: {{- include "common.labels" (dict "labels" .Values.labels "ignoreHelmChart" .Values.ignoreHelmChart "dot" . "suffix" "job") | nindent 8 }}
       name: {{ include "common.name" . }}
     spec:
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
       initContainers:
-      - command:
-        - /app/ready.py
-        args:
-        - --service-name
-        - {{ .Values.global.cassandra.serviceName }}
-        - --service-name
-        - aai-schema-service
-        env:
-        - name: NAMESPACE
-          valueFrom:
-            fieldRef:
-              apiVersion: v1
-              fieldPath: metadata.namespace
-        image: {{ include "repositoryGenerator.image.readiness" . }}
-        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-        name: {{ include "common.name" . }}-readiness
-        resources:
-          limits:
-            cpu: "100m"
-            memory: "500Mi"
-          requests:
-            cpu: "3m"
-            memory: "20Mi"
+      {{ include "common.readinessCheck.waitFor" (dict "dot" . "wait_for" .Values.readinessCheck.waitForWithSchemaService) | indent 6 | trim }}
       - command:
         - sh
         args:
         - -c
         - |
-           bash docker-entrypoint.sh dataRestoreFromSnapshot.sh `ls -t /opt/app/aai-graphadmin/logs/data/dataSnapshots|head -1|awk -F".P" '{ print $1 }'`
-        env:
-        - name: LOCAL_USER_ID
-          value: {{ .Values.securityContext.user_id | quote }}
-        - name: LOCAL_GROUP_ID
-          value: {{ .Values.securityContext.group_id | quote }}
+           sh docker-entrypoint.sh dataRestoreFromSnapshot.sh `ls -t /opt/app/aai-graphadmin/logs/data/dataSnapshots|head -1|awk -F".P" '{ print $1 }'`
         volumeMounts:
         - mountPath: /opt/app/aai-graphadmin/resources/etc/appprops/janusgraph-realtime.properties
           name: config
           subPath: janusgraph-realtime.properties
         - mountPath: /opt/app/aai-graphadmin/logs/data/dataSnapshots
           name: snapshots
-        - mountPath: /opt/app/aai-graphadmin/resources/etc/appprops/janusgraph-cached.properties
-          name: config
-          subPath: janusgraph-cached.properties
         - mountPath: /opt/app/aai-graphadmin/resources/etc/appprops/aaiconfig.properties
           name: properties
           subPath: aaiconfig.properties
@@ -131,20 +95,13 @@ spec:
         - |
            {{- if include "common.onServiceMesh" . }}
            echo "waiting 15s for istio side cars to be up"; sleep 15s;{{- end }}
-           bash docker-entrypoint.sh run_Migrations.sh -e UpdateAaiUriIndexMigration --commit --skipPreMigrationSnapShot --runDisabled RebuildAllEdges ;
+           sh docker-entrypoint.sh run_Migrations.sh -e UpdateAaiUriIndexMigration --commit --skipPreMigrationSnapShot --runDisabled RebuildAllEdges ;
            {{ include "common.serviceMesh.killSidecar" . | indent 11 | trim }}
-        env:
-        - name: LOCAL_USER_ID
-          value: {{ .Values.securityContext.user_id | quote }}
-        - name: LOCAL_GROUP_ID
-          value: {{ .Values.securityContext.group_id | quote }}
+        {{ include "common.containerSecurityContext" . | indent 8 | trim }}
         volumeMounts:
         - mountPath: /opt/app/aai-graphadmin/resources/etc/appprops/janusgraph-realtime.properties
           name: config
           subPath: janusgraph-realtime.properties
-        - mountPath: /opt/app/aai-graphadmin/resources/etc/appprops/janusgraph-cached.properties
-          name: config
-          subPath: janusgraph-cached.properties
         - mountPath: /opt/app/aai-graphadmin/resources/etc/appprops/aaiconfig.properties
           name: properties
           subPath: aaiconfig.properties
@@ -188,11 +145,7 @@ kind: Job
 metadata:
   name: {{ include "common.fullname" . }}-db-backup-job
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}-db-backup-job
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+  labels: {{- include "common.labels" (dict "labels" .Values.labels "ignoreHelmChart" .Values.ignoreHelmChart "dot" . "suffix" "db-backup-job") | nindent 4 }}
   annotations:
     "helm.sh/hook": pre-upgrade,pre-install
     "helm.sh/hook-weight": "2"
@@ -201,13 +154,11 @@ spec:
   backoffLimit: 20
   template:
     metadata:
-      labels:
-        app: {{ include "common.name" . }}-db-backup-job
-        release: {{ include "common.release" . }}
+      labels: {{- include "common.labels" (dict "labels" .Values.labels "ignoreHelmChart" .Values.ignoreHelmChart "dot" . "suffix" "db-backup-job") | nindent 8 }}
       name: {{ include "common.name" . }}
     spec:
       initContainers:
-      {{ if eq .Values.global.jobs.migration.remoteCassandra.enabled false }}
+      {{- if eq .Values.global.jobs.migration.remoteCassandra.enabled false }}
       - command:
         - /bin/bash
         - -c
@@ -240,13 +191,8 @@ spec:
         - |
            {{- if include "common.onServiceMesh" . }}
            echo "waiting 15s for istio side cars to be up"; sleep 15s;{{- end }}
-           bash docker-entrypoint.sh dataSnapshot.sh
+           sh docker-entrypoint.sh dataSnapshot.sh
            {{ include "common.serviceMesh.killSidecar" . | indent 11 | trim }}
-        env:
-        - name: LOCAL_USER_ID
-          value: {{ .Values.securityContext.user_id | quote }}
-        - name: LOCAL_GROUP_ID
-          value: {{ .Values.securityContext.group_id | quote }}
         volumeMounts:
         - mountPath: /opt/app/aai-graphadmin/logs/data/dataSnapshots
           name: snapshots
index 563b920..cd72d7f 100644 (file)
 
 {{- if .Values.global.jobs.migration.enabled -}}
 {{- if eq "True" (include "common.needPV" .) -}}
+{{- if not .Values.persistence.storageClass -}}
 kind: PersistentVolume
 apiVersion: v1
 metadata:
   name: {{ include "common.fullname" . }}
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
-    release: "{{ include "common.release" . }}"
-    heritage: "{{ .Release.Service }}"
+  labels: {{- include "common.labels" . | nindent 4 }}
     name: {{ include "common.fullname" . }}
   annotations:
     "helm.sh/hook": pre-upgrade,pre-install
@@ -42,3 +39,4 @@ spec:
     path: {{ .Values.global.persistence.mountPath | default .Values.persistence.mountPath }}/{{ include "common.release" . }}/{{ .Values.persistence.mountSubPath1 }}
 {{- end -}}
 {{- end -}}
+{{- end -}}
index bf89006..19c1016 100644 (file)
@@ -20,11 +20,7 @@ apiVersion: v1
 metadata:
   name: {{ include "common.fullname" . }}-migration
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
-    release: "{{ include "common.release" . }}"
-    heritage: "{{ .Release.Service }}"
+  labels: {{- include "common.labels" . | nindent 4 }}
   annotations:
     "helm.sh/hook": pre-upgrade,pre-install
     "helm.sh/hook-weight": "-1"
index e3f7569..b7c09cf 100644 (file)
@@ -25,39 +25,32 @@ kind: Service
 metadata:
   name: {{ include "common.servicename" . }}
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    app.kubernetes.io/name: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 spec:
   type: {{ .Values.service.type }}
   ports:
   {{if eq .Values.service.type "NodePort" -}}
-  - port: {{ .Values.service.internalPort }}
+  - port: {{ .Values.service.appPort }}
     nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }}
-    name: {{ .Values.service.portName }}
-    targetPort: {{ .Values.service.portName }}
-  - port: {{ .Values.service.internalPort2 }}
+    name: {{ .Values.service.appPortName }}
+    targetPort: {{ .Values.service.appPortName }}
+  - port: {{ .Values.service.debugPort }}
     nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort2 }}
-    name: {{ .Values.service.portName2 }}
-    targetPort: {{ .Values.service.portName2 }}
-  - port: {{ .Values.service.internalPort3 }}
+    name: {{ .Values.service.debugPortName }}
+    targetPort: {{ .Values.service.debugPortName }}
+  - port: {{ .Values.service.actuatorPort }}
     nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort3 }}
-    name: {{ .Values.service.portName3 }}
-    targetPort: {{ .Values.service.portName3 }}
+    name: {{ .Values.service.actuatorPortName }}
+    targetPort: {{ .Values.service.actuatorPortName }}
   {{- else -}}
-  - port: {{ .Values.service.internalPort }}
-    name: {{ .Values.service.portName }}
-    targetPort: {{ .Values.service.portName }}
-  - port: {{ .Values.service.internalPort2 }}
-    name: {{ .Values.service.portName2 }}
-    targetPort: {{ .Values.service.portName2 }}
-  - port: {{ .Values.service.internalPort3 }}
-    name: {{ .Values.service.portName3 }}
-    targetPort: {{ .Values.service.portName }}
+  - port: {{ .Values.service.appPort }}
+    name: {{ .Values.service.appPortName }}
+    targetPort: {{ .Values.service.appPortName }}
+  - port: {{ .Values.service.debugPort }}
+    name: {{ .Values.service.debugPortName }}
+    targetPort: {{ .Values.service.debugPortName }}
+  - port: {{ .Values.service.actuatorPort }}
+    name: {{ .Values.service.actuatorPortName }}
+    targetPort: {{ .Values.service.appPort }}
   {{- end}}
-  selector:
-    app: {{ include "common.name" . }}
-    release: {{ include "common.release" . }}
+  selector: {{- include "common.matchLabels" . | nindent 4 }}
index c0d9f21..dc70602 100644 (file)
@@ -1,3 +1,3 @@
 {{- if .Values.metrics.serviceMonitor.enabled }}
 {{  include "common.serviceMonitor" . }}
-{{- end }}
\ No newline at end of file
+{{- end }}
index 8b6b5f9..c36a576 100644 (file)
 # Declare variables to be passed into your templates.
 global: # global defaults
   nodePortPrefix: 302
+  kafkaBootstrap: strimzi-kafka-bootstrap
+  aaiGraphKafkaUser: aai-graph-kafka-user
   cassandra:
     #This will instantiate AAI cassandra cluster, default:shared cassandra.
     localCluster: false
     # flag to enable the DB creation via k8ssandra-operator
     useOperator: true
+    #Cassandra datacenter name
+    localDataCenter: dc1
   initContainers:
     enabled: true
   jobs:
@@ -39,26 +43,27 @@ global: # global defaults
     #migration using helm hooks
     migration:
       enabled: false
+    duplicates:
+      enabled: false
+  # Specifies if basic authorization is enabled
+  auth:
+    enabled: true
+    # users that can authenticate via basic auth
+    users:
+      - username: aai@aai.onap.org
+        password: demo123456!
+      - username: AAI
+        password: AAI
   config:
-
     # Specifies that the cluster connected to a dynamic
     # cluster being spinned up by kubernetes deployment
     cluster:
       cassandra:
         dynamic: true
-
-    # Specifies if the basic authorization is enabled
-    basic:
-      auth:
-        enabled: true
-        username: AAI
-        passwd: AAI
-
     # Notification event specific properties
     notification:
       eventType: AAI-EVENT
       domain: dev
-
     # Schema specific properties that include supported versions of api
     schema:
       # Specifies if the connection should be one way ssl, two way ssl or no auth
@@ -79,11 +84,11 @@ global: # global defaults
       version:
         # Current version of the REST API
         api:
-          default: v28
+          default: v30
         # Specifies which version the depth parameter is configurable
         depth: v11
         # List of all the supported versions of the API
-        list: v11,v12,v13,v14,v15,v16,v17,v18,v19,v20,v21,v22,v23,v24,v25,v26,v27,v28
+        list: v11,v12,v13,v14,v15,v16,v17,v18,v19,v20,v21,v22,v23,v24,v25,v26,v27,v28,v29,v30
         # Specifies from which version related link should appear
         related:
           link: v11
@@ -96,19 +101,22 @@ global: # global defaults
         # Specifies from which version the edge label appeared in API
         edge:
           label: v12
-
     # Specifies which clients should always default to realtime graph connection
     realtime:
       clients: SDNC,-1|MSO,-1|SO,-1|robot-ete,-1
 
 # application image
-image: onap/aai-graphadmin:1.12.3
+image: onap/aai-graphadmin:1.16.0
 pullPolicy: Always
 restartPolicy: Always
 flavor: small
-flavorOverride: small
+
 # default number of instances
 replicaCount: 1
+
+# number of ReplicaSets that should be retained for the Deployment
+revisionHistoryLimit: 1
+
 # the minimum number of seconds that a newly created Pod should be ready
 minReadySeconds: 30
 updateStrategy:
@@ -120,27 +128,31 @@ updateStrategy:
 
 # Configuration for the graphadmin deployment
 config:
-
   # Specify the profiles for the graphadmin microservice
   profiles:
-
-    active: dmaap
-
+    active: kafka
+    jaasConfExternalSecret: '{{ include "common.release" . }}-{{ .Values.global.aaiGraphKafkaUser }}'
+    someConfig: graphrandom
   # Specifies the timeout limit for the REST API requests
   timeout:
     enabled: true
     limit: 180000
-
+  janusgraph:
+    # temporarily enable this to update the graph storage version
+    # see: https://docs.janusgraph.org/changelog/#upgrade-instructions_9
+    allowUpgrade: true
+    # config override for the cassandra driver
+    # see: https://docs.janusgraph.org/master/configs/configuration-reference/#storagecqlinternal
+    cassandraDriver:
+      configuration: advanced.metadata.schema.debouncer.window = 2 second
   # Default maximum records to fix for the data grooming and dupeTool
   maxFix:
     dataGrooming: 150
     dupeTool: 25
-
   # Default number of sleep minutes for dataGrooming and dupeTool
   sleepMinutes:
     dataGrooming: 7
     dupeTool: 7
-
   # Cron specific attributes to be triggered for the graphadmin spring cron tasks
   cron:
     # Specifies that the data grooming tool which runs duplicates should be enabled
@@ -150,10 +162,8 @@ config:
     dataSnapshot:
       enabled: true
       params: JUST_TAKE_SNAPSHOT
-
     # Data cleanup which zips snapshots older than x days and deletes older than y days
     dataCleanup:
-
       dataGrooming:
         enabled: true
         # Zips up the dataGrooming files older than 5 days
@@ -172,7 +182,26 @@ config:
     lock:
       uri:
         enabled: false
-
+  # adds jvm args for remote debugging the application
+  debug:
+    enabled: false
+    args: "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
+  # adds jvm args for remote profiling the application
+  profiling:
+    enabled: false
+    args:
+      - "-Dcom.sun.management.jmxremote"
+      - "-Dcom.sun.management.jmxremote.ssl=false"
+      - "-Dcom.sun.management.jmxremote.authenticate=false"
+      - "-Dcom.sun.management.jmxremote.local.only=false"
+      - "-Dcom.sun.management.jmxremote.port=9999"
+      - "-Dcom.sun.management.jmxremote.rmi.port=9999"
+      - "-Djava.rmi.server.hostname=127.0.0.1"
+  env:
+    BOOTSTRAP_SERVERS: onap-strimzi-kafka-bootstrap:9092
+    DATA_SNAPSHOT_TASKS_ENABLED: false
+    DATA_SNAPSHOT_CLEANUP_ENABLED: false
+    HISTORY_TRUNCATE_TASK_ENABLED: false
 
 nodeSelector: {}
 
@@ -180,26 +209,56 @@ affinity: {}
 
 # probe configuration parameters
 liveness:
-  initialDelaySeconds: 60
-  periodSeconds: 60
-  # necessary to disable liveness probe when setting breakpoints
-  # in debugger so K8s doesn't restart unresponsive container
-  enabled: false
+  enabled: true
+  path: /actuator/health
+  periodSeconds: 10
 
 readiness:
-  initialDelaySeconds: 60
+  path: /actuator/health/readiness
   periodSeconds: 10
 
+startup:
+  path: /actuator/health/liveness
+  failureThreshold: 60
+  periodSeconds: 5
+
+actuator:
+  echo:
+    enabled: true
+
+## Can be used to restore the old behaviour of having a separate job for schema creation
+createDbSchemaViaJob:
+  enabled: false
+
+readinessCheck:
+  waitForSchemaCreationJob:
+    jobs:
+      - '{{ include "common.release" . }}-aai-graphadmin-create-db-schema'
+  waitForLocalCassandra:
+    containers:
+      - aai-schema-service
+    apps:
+      - aai-cassandra
+  waitForCassandraService:
+    services:
+      - '{{ .Values.global.cassandra.serviceName }}'
+  waitForWithSchemaService:
+    services:
+      - '{{ .Values.global.cassandra.serviceName }}'
+      - aai-schema-service
+
 service:
   type: ClusterIP
   # REST API port for the graphadmin microservice
-  portName: http
-  internalPort: 8449
-  portName2: tcp-5005
-  internalPort2: 5005
-  portName3: http-graphadmin
-  internalPort3: 8448
-  terminationGracePeriodSeconds: 120
+  appPortName: http
+  appPort: 8449
+  debugPortName: tcp-5005
+  debugPort: 5005
+  profilingPortName: jxm-9999
+  profilingPort: 9999
+  actuatorPortName: http-graphadmin
+  actuatorPort: 8448
+  terminationGracePeriodSeconds: 45
 
 ingress:
   enabled: false
@@ -249,20 +308,20 @@ resources:
       cpu: "1"
       memory: "4Gi"
     requests:
-      cpu: "0.5"
-      memory: "1.6Gi"
+      cpu: "500m"
+      memory: "1600Mi"
   large:
     limits:
       cpu: "2"
       memory: "8Gi"
     requests:
       cpu: "1"
-      memory: "3.2Gi"
+      memory: "4Gi"
   unlimited: {}
 
 metrics:
   serviceMonitor:
-    enabled: false
+    enabled: true
     targetPort: 8448
     path: /actuator/prometheus
     basicAuth:
@@ -270,9 +329,9 @@ metrics:
 
     selector:
       app: '{{ include "common.name" . }}'
-      chart: '{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}'
-      release: '{{ include "common.release" . }}'
-      heritage: '{{ .Release.Service }}'
+      helm.sh/chart: '{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}'
+      app.kubernetes.io/instance: '{{ include "common.release" . }}'
+      app.kubernetes.io/managed-by: '{{ .Release.Service }}'
 
     relabelings: []
 
@@ -280,8 +339,8 @@ metrics:
 
 # Not fully used for now
 securityContext:
-  user_id: 1000
-  group_id: 1000
+  user_id: 65534
+  group_id: 65534
 
 #Pods Service Account
 serviceAccount:
@@ -291,4 +350,50 @@ serviceAccount:
 #Log configuration
 log:
   path: /var/log/onap
+  level:
+    root: INFO
+    base: INFO
 logConfigMapNamePrefix: '{{ include "common.fullname" . }}'
+
+#DupeTool cronjob parameters
+dupeToolParams:
+  schedule: "0 8 * * *"
+  userId: "am8383 "
+  nodeType: "complex"
+  timeWindowMinutes: 60
+  autoFix: true
+#################################################################
+# Secrets metaconfig
+#################################################################
+secrets:
+  - uid: aai-graph-kafka-user
+    externalSecret: '{{ tpl (default "" .Values.config.jaasConfExternalSecret) . }}'
+    type: genericKV
+    envs:
+      - name: sasl.jaas.config
+        value: '{{ .Values.config.someConfig }}'
+        policy: generate
+kafkaUser:
+  authenticationType: scram-sha-512
+  acls:
+    - name: AAI-EVENT
+      type: topic
+      operations: [Read, Write]
+
+volumes:
+  logSizeLimit: 64Mi
+  scriptlogSizeLimit: 300Mi
+  tmpSizeLimit: 500Mi
+
+podAnnotations:
+  checksum/config: '{{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}'
+
+jobAnnotations:
+  backup:
+    "helm.sh/hook": pre-upgrade,pre-rollback,post-install
+    "helm.sh/hook-weight": "2"
+    "helm.sh/hook-delete-policy": before-hook-creation
+  migration:
+    "helm.sh/hook": pre-upgrade,pre-rollback,post-install
+    "helm.sh/hook-weight": "2"
+    "helm.sh/hook-delete-policy": before-hook-creation
index 123da09..dee4138 100644 (file)
@@ -17,7 +17,7 @@
 apiVersion: v2
 description: ONAP AAI modelloader
 name: aai-modelloader
-version: 13.0.0
+version: 15.0.5
 
 dependencies:
   - name: common
diff --git a/kubernetes/aai/components/aai-modelloader/resources/application.properties b/kubernetes/aai/components/aai-modelloader/resources/application.properties
new file mode 100644 (file)
index 0000000..8180e96
--- /dev/null
@@ -0,0 +1,39 @@
+# Note that the start.sh script sets the following System Properties
+# We provide default values here for testing purposes
+AJSC_HOME=.
+CONFIG_HOME=appconfig-local
+com.att.eelf.logging.path=src/main/resources
+com.att.eelf.logging.file=logback.xml
+logback.configurationFile=${com.att.eelf.logging.path}/${com.att.eelf.logging.file}
+
+server.port=9500
+
+spring.application.name=aai-model-loader
+
+spring.sleuth.enabled={{ .Values.global.tracing.enabled }}
+spring.zipkin.baseUrl={{ .Values.global.tracing.collector.baseUrl }}
+spring.sleuth.messaging.jms.enabled=false
+spring.sleuth.trace-id128=true
+spring.sleuth.sampler.probability={{ .Values.global.tracing.sampling.probability }}
+spring.sleuth.propagation.type=w3c,b3
+spring.sleuth.supports-join=false
+spring.sleuth.web.skip-pattern={{ join "," .Values.tracing.ignorePatterns }}
+
+server.tomcat.threads.max=200
+# The minimum number of threads always kept alive
+server.tomcat.threads.min-spare=25
+
+# Spring Boot logging
+logging.config=${logback.configurationFile}
+
+# Model Loader Client Configuration for the A&AI REST interface
+ml.aai.base-url=http://aai.{{.Release.Namespace}}:80
+ml.aai.model-url=/aai/%s/service-design-and-creation/models/model/
+ml.aai.named-query-url=/aai/%s/service-design-and-creation/named-queries/named-query/
+ml.aai.vnf-image-url=/aai/v*/service-design-and-creation/vnf-images # v* is supported by the resources api and translates to 'latest'
+ml.aai.auth-user={{ (index .Values.global.auth.users 0).username }}
+ml.aai.auth-password={{ (index .Values.global.auth.users 0).password }}
+ml.aai.use-gizmo=false
+# Babel client config
+ml.babel.base-url={{ include "common.scheme" . }}://aai-babel.{{.Release.Namespace}}:9516
+ml.babel.generate-artifacts-url=/services/babel-service/v1/app/generateArtifacts
index 129af8f..944078d 100644 (file)
 -->
 */}}
 <configuration scan="true" scanPeriod="3 seconds" debug="false">
-  <include resource="org/springframework/boot/logging/logback/base.xml" />
-  <property name="logDir" value="/var/log/onap" />
-  <property name="componentName" value="AAI-ML"></property>
 
-  <!-- default eelf log file names -->
-  <property name="generalLogName" value="error" />
-  <property name="metricsLogName" value="metrics" />
-  <property name="auditLogName" value="audit" />
-  <property name="debugLogName" value="debug" />
-
-  <property name="errorLogPattern" value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%mdc{RequestId}|%thread|ModelLoader|%mdc{PartnerName}|%logger||%.-5level|%msg%n" />
-  <property name="auditMetricPattern" value="%m%n" />
-
-  <property name="logDirectory" value="${logDir}/${componentName}" />
-
-  <!-- Example evaluator filter applied against console appender -->
   <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-    <encoder>
-      <pattern>${errorLogPattern}</pattern>
+    <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
+      <providers>
+        <timestamp><fieldName>timestamp</fieldName></timestamp>
+        <message/>
+        <mdc>
+          <fieldName>context</fieldName>
+          <excludeMdcKeyName>ServerIPAddress</excludeMdcKeyName>
+          <excludeMdcKeyName>EntryTimestamp</excludeMdcKeyName>
+          <excludeMdcKeyName>InvokeTimestamp</excludeMdcKeyName>
+          <excludeMdcKeyName>ErrorCode</excludeMdcKeyName>
+          <excludeMdcKeyName>ErrorDesc</excludeMdcKeyName>
+        </mdc>
+        <stackTrace>
+          <fieldName>exception</fieldName>
+          <throwableConverter class="net.logstash.logback.stacktrace.ShortenedThrowableConverter">
+            <exclude>^sun\.reflect\..*\.invoke</exclude>
+            <exclude>^net\.sf\.cglib\.proxy\.MethodProxy\.invoke</exclude>
+            <rootCauseFirst>true</rootCauseFirst>
+          </throwableConverter>
+        </stackTrace>
+        <threadName><fieldName>thread</fieldName></threadName>
+        <loggerName>
+          <fieldName>logger</fieldName>
+          <shortenedLoggerNameLength>36</shortenedLoggerNameLength>
+        </loggerName>
+        <logLevel/>
+      </providers>
     </encoder>
   </appender>
+
   <appender name="AsyncSysOut" class="ch.qos.logback.classic.AsyncAppender">
     <appender-ref ref="STDOUT" />
   </appender>
 
-  <!-- ============================================================================ -->
-  <!-- EELF Appenders -->
-  <!-- ============================================================================ -->
-
-  <!-- The EELFAppender is used to record events to the general application
-       log -->
-
-  <appender name="EELF" class="ch.qos.logback.core.rolling.RollingFileAppender">
-    <file>${logDirectory}/${generalLogName}.log</file>
-    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-      <fileNamePattern>${logDirectory}/${generalLogName}.%d{yyyy-MM-dd}.log.zip</fileNamePattern>
-      <maxHistory>60</maxHistory>
-    </rollingPolicy>
-    <encoder>
-      <pattern>${errorLogPattern}</pattern>
-    </encoder>
-  </appender>
-  <appender name="asyncEELF" class="ch.qos.logback.classic.AsyncAppender">
-    <!-- deny all events with a level below INFO, that is TRACE and DEBUG -->
-    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
-      <level>INFO</level>
-    </filter>
-    <queueSize>256</queueSize>
-    <appender-ref ref="EELF" />
-  </appender>
-
-  <appender name="EELFAudit" class="ch.qos.logback.core.rolling.RollingFileAppender">
-    <file>${logDirectory}/${auditLogName}.log</file>
-    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-      <fileNamePattern>${logDirectory}/${auditLogName}.%d{yyyy-MM-dd}.log.zip</fileNamePattern>
-      <maxHistory>60</maxHistory>
-    </rollingPolicy>
-    <encoder>
-      <pattern>${auditMetricPattern}</pattern>
-    </encoder>
-  </appender>
-  <appender name="asyncEELFAudit" class="ch.qos.logback.classic.AsyncAppender">
-    <queueSize>256</queueSize>
-    <appender-ref ref="EELFAudit" />
-  </appender>
-
-  <appender name="EELFMetrics" class="ch.qos.logback.core.rolling.RollingFileAppender">
-    <file>${logDirectory}/${metricsLogName}.log</file>
-    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-      <fileNamePattern>${logDirectory}/${metricsLogName}.%d{yyyy-MM-dd}.log.zip</fileNamePattern>
-      <maxHistory>60</maxHistory>
-    </rollingPolicy>
-    <encoder>
-      <pattern>${auditMetricPattern}</pattern>
-    </encoder>
-  </appender>
-  <appender name="asyncEELFMetrics" class="ch.qos.logback.classic.AsyncAppender">
-    <queueSize>256</queueSize>
-    <appender-ref ref="EELFMetrics" />
-  </appender>
-
-  <appender name="EELFDebug" class="ch.qos.logback.core.rolling.RollingFileAppender">
-    <file>${logDirectory}/${debugLogName}.log</file>
-    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-      <fileNamePattern>${logDirectory}/${debugLogName}.%d{yyyy-MM-dd}.log.zip</fileNamePattern>
-      <maxHistory>60</maxHistory>
-    </rollingPolicy>
-    <encoder>
-      <pattern>${errorLogPattern}</pattern>
-    </encoder>
-  </appender>
-  <appender name="asyncEELFDebug" class="ch.qos.logback.classic.AsyncAppender">
-    <queueSize>256</queueSize>
-    <appender-ref ref="EELFDebug" />
-    <includeCallerData>true</includeCallerData>
-  </appender>
-
   <!-- ============================================================================ -->
   <!-- EELF loggers -->
   <!-- ============================================================================ -->
   <logger name="com.att.eelf" level="info" additivity="false">
-    <appender-ref ref="asyncEELF" />
-    <appender-ref ref="asyncEELFDebug" />
-    <appender-ref ref="AsyncSysOut" />
+    <appender-ref ref="STDOUT" />
   </logger>
   <logger name="com.att.eelf.audit" level="info" additivity="false">
-    <appender-ref ref="asyncEELFAudit" />
-    <appender-ref ref="AsyncSysOut" />
+    <appender-ref ref="STDOUT" />
   </logger>
   <logger name="com.att.eelf.metrics" level="info" additivity="false">
-    <appender-ref ref="asyncEELFMetrics" />
-    <appender-ref ref="AsyncSysOut" />
+    <appender-ref ref="STDOUT" />
   </logger>
 
   <!-- Spring related loggers -->
   <!-- Model Loader loggers -->
   <logger name="org.openecomp.modelloader" level="INFO" />
 
+  <logger name="org.onap.sdc.impl.NotificationConsumer" level="WARN" />
+
   <!-- Other Loggers that may help troubleshoot -->
   <logger name="net.sf" level="WARN" />
   <logger name="org.apache.commons.httpclient" level="WARN" />
   <logger name="ch.qos.logback.classic" level="WARN" />
   <logger name="ch.qos.logback.core" level="WARN" />
 
-  <root>
-    <appender-ref ref="asyncEELF" />
-    <appender-ref ref="AsyncSysOut" />
-    <!-- <appender-ref ref="asyncEELFDebug" /> -->
+  <root level={{ .Values.log.level.root | upper | quote }}>
+    <appender-ref ref="STDOUT" />
   </root>
 
 </configuration>
index e32f48f..2c0696c 100644 (file)
@@ -1,7 +1,7 @@
 {{/*
 # Copyright © 2018 Amdocs, Bell Canada, AT&T
 # Modifications Copyright © 2021 Orange
-# Modifications Copyright © 2023 Nordix Foundation
+# Modifications Copyright Â© 2023 Nordix Foundation
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -32,22 +32,3 @@ ml.distribution.POLLING_TIMEOUT=20
 ml.distribution.USER={{ .name }}
 {{- end }}
 ml.distribution.ARTIFACT_TYPES=MODEL_QUERY_SPEC,TOSCA_CSAR
-
-# Model Loader AAI REST Client Configuration
-ml.aai.BASE_URL=http://aai.{{.Release.Namespace}}:80
-ml.aai.USE_HTTPS= false
-ml.aai.MODEL_URL=/aai/v*/service-design-and-creation/models/model/
-ml.aai.NAMED_QUERY_URL=/aai/v*/service-design-and-creation/named-queries/named-query/
-ml.aai.VNF_IMAGE_URL=/aai/v*/service-design-and-creation/vnf-images
-
-ml.aai.AUTH_USER=ModelLoader
-ml.aai.AUTH_PASSWORD=OBF:1qvu1v2h1sov1sar1wfw1j7j1wg21saj1sov1v1x1qxw
-
-# Model Loader Babel REST Client Configuration\r
-ml.babel.BASE_URL={{ include "common.scheme" . }}://aai-babel.{{.Release.Namespace}}:9516
-ml.babel.GENERATE_ARTIFACTS_URL=/services/babel-service/v1/app/generateArtifacts
-ml.babel.KEYSTORE_FILE=
-ml.babel.KEYSTORE_PASSWORD=
-ml.babel.TRUSTSTORE_FILE=
-ml.babel.TRUSTSTORE_PASSWORD=
-ml.babel.USE_HTTPS= false
index 534fd02..c298462 100644 (file)
@@ -19,23 +19,16 @@ kind: ConfigMap
 metadata:
   name: {{ include "common.fullname" . }}-prop
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 data:
 {{ tpl (.Files.Glob "resources/config/model-loader.properties").AsConfig . | indent 2 }}
+{{ tpl (.Files.Glob "resources/application.properties").AsConfig . | indent 2 }}
 ---
 apiVersion: v1
 kind: ConfigMap
 metadata:
   name: {{ include "common.fullname" . }}-log
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 data:
 {{ tpl (.Files.Glob "resources/config/log/logback.xml").AsConfig . | indent 2 }}
index 139c254..50c75ef 100644 (file)
 
 apiVersion: apps/v1
 kind: Deployment
-metadata:
-  name: {{ include "common.fullname" . }}
-  namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    app.kubernetes.io/name: {{ include "common.name" . }}
-    {{- if .Chart.AppVersion }}
-    version: "{{ .Chart.AppVersion | replace "+" "_" }}"
-    {{- else }}
-    version: "{{ .Chart.Version | replace "+" "_" }}"
-    {{- end }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+metadata: {{- include "common.resourceMetadata" (dict "annotations" .Values.annotations "dot" .) | nindent 2 }}
 spec:
+  {{- if .Values.debug.enabled }}
+  replicas: 1
+  {{- else }}
   replicas: {{ .Values.replicaCount }}
+  {{- end }}
+  revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
   strategy:
     type: {{ .Values.updateStrategy.type }}
     {{- if (eq "RollingUpdate" .Values.updateStrategy.type) }}
@@ -46,17 +38,7 @@ spec:
     matchLabels:
       app: {{ include "common.name" . }}
   template:
-    metadata:
-      labels:
-        app: {{ include "common.name" . }}
-        release: {{ include "common.release" . }}
-        app.kubernetes.io/name: {{ include "common.name" . }}
-        {{- if .Chart.AppVersion }}
-        version: "{{ .Chart.AppVersion | replace "+" "_" }}"
-        {{- else }}
-        version: "{{ .Chart.Version | replace "+" "_" }}"
-        {{- end }}
-      name: {{ include "common.name" . }}
+    metadata: {{- include "common.templateMetadata" . | nindent 6 }}
     spec:
       {{- if .Values.nodeSelector }}
       nodeSelector: {{ toYaml .Values.nodeSelector | nindent 8 }}
@@ -64,10 +46,12 @@ spec:
       {{- if .Values.affinity }}
       affinity: {{ toYaml .Values.affinity | nindent 8 }}
       {{- end }}
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
       containers:
       - name: {{ include "common.name" . }}
         image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        {{ include "common.containerSecurityContext" . | indent 8 | trim }}
         env:
         - name: CONFIG_HOME
           value: /opt/app/model-loader/config/
@@ -76,12 +60,36 @@ spec:
             secretKeyRef:
               name: {{ include "common.name" . }}-ku
               key: sasl.jaas.config
+        {{- if .Values.profiling.enabled }}
+        - name: JVM_ARGS
+          value: '{{ join " " .Values.profiling.args }}'
+        {{- end }}
+        {{- if .Values.debug.enabled }}
+        - name: JVM_ARGS
+          value: {{ .Values.debug.args | quote }}
+        {{- end }}
+        ports:
+        - containerPort: {{ .Values.service.appPort }}
+          name: {{ .Values.service.appPortName }}
+        {{- if .Values.debug.enabled }}
+        - containerPort: {{ .Values.debug.port }}
+          name: {{ .Values.debug.portName }}
+        {{- end }}
+        {{- if .Values.profiling.enabled }}
+        - containerPort: {{ .Values.profiling.port }}
+          name: {{ .Values.profiling.portName }}
+        {{- end }}
         volumeMounts:
         - mountPath: /opt/app/model-loader/config/model-loader.properties
           subPath: model-loader.properties
           name: prop-config
+        - mountPath: /opt/app/model-loader/application.properties
+          subPath: application.properties
+          name: prop-config
         - mountPath: {{ .Values.log.path }}
           name: logs
+        - mountPath: /tmp
+          name: tmp
         - mountPath: /opt/app/model-loader/logback.xml
           name: log-config
           subPath: logback.xml
@@ -94,7 +102,11 @@ spec:
         configMap:
           name: {{ include "common.fullname" . }}-prop
       - name: logs
-        emptyDir: {}
+        emptyDir:
+          sizeLimit: {{ .Values.volumes.logSizeLimit }}
+      - name: tmp
+        emptyDir:
+          sizeLimit: {{ .Values.volumes.tmpSizeLimit }}
       {{ include "common.log.volumes" (dict "dot" . "configMapNamePrefix" (tpl .Values.logConfigMapNamePrefix .)) | nindent 6 }}
       - name: log-config
         configMap:
diff --git a/kubernetes/aai/components/aai-modelloader/templates/podmonitor.yaml b/kubernetes/aai/components/aai-modelloader/templates/podmonitor.yaml
new file mode 100644 (file)
index 0000000..961a850
--- /dev/null
@@ -0,0 +1,33 @@
+{{/*
+# Copyright © 2024 Deutsche Telekom
+#
+# 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.metrics.podMonitor.enabled }}
+apiVersion: monitoring.coreos.com/v1
+kind: PodMonitor
+metadata:
+  name: {{ include "common.fullname" . }}
+  labels: {{- include "common.labels" . | nindent 4 }}
+spec:
+  selector:
+    matchLabels:
+      app: {{ include "common.name" . }}
+  podMetricsEndpoints:
+    - port: {{ .Values.metrics.podMonitor.port }}
+      path: {{ .Values.metrics.podMonitor.path }}
+  namespaceSelector:
+    matchNames:
+      - {{ .Release.Namespace }}
+{{- end }}
index aa62f60..6d43771 100644 (file)
 # Declare variables to be passed into your templates.
 global: # global defaults
   nodePortPrefix: 302
+  tracing:
+    enabled: false
+    collector:
+      baseUrl: http://jaeger-collector.istio-config:9411
+    sampling:
+      probability: 1.0 # percentage of requests that are sampled (between 0-1/0%-100%)
+  auth:
+    # users that can authenticate via basic auth
+    users:
+      - username: aai@aai.onap.org
+        password: demo123456!
+      - username: AAI
+        password: AAI
+
 
 # application image
-image: onap/model-loader:1.12.0
+image: onap/model-loader:1.14.3
 pullPolicy: Always
 restartPolicy: Always
 flavor: small
-flavorOverride: small
 
 # Strimzi KafkaUser config
 kafkaUser:
@@ -41,26 +54,56 @@ kafkaUser:
 # default number of instances
 replicaCount: 1
 
+# number of ReplicaSets that should be retained for the Deployment
+revisionHistoryLimit: 1
+
 updateStrategy:
   type: RollingUpdate
   maxUnavailable: 0
   maxSurge: 1
 
+# adds jvm args for remote debugging the application
+debug:
+  enabled: false
+  args: "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
+  port: 5005
+  portName: debug
+
+# adds jvm args for remote profiling the application
+profiling:
+  enabled: false
+  args:
+    - "-Dcom.sun.management.jmxremote"
+    - "-Dcom.sun.management.jmxremote.ssl=false"
+    - "-Dcom.sun.management.jmxremote.authenticate=false"
+    - "-Dcom.sun.management.jmxremote.local.only=false"
+    - "-Dcom.sun.management.jmxremote.port=9999"
+    - "-Dcom.sun.management.jmxremote.rmi.port=9999"
+    - "-Djava.rmi.server.hostname=127.0.0.1"
+  port: 9999
+  portName: jmx
+
+
 nodeSelector: {}
 
 affinity: {}
 
+service:
+  # REST API port for the graphadmin microservice
+  appPortName: http
+  appPort: 9500
+
 # probe configuration parameters
 liveness:
-  initialDelaySeconds: 10
-  periodSeconds: 10
-  # necessary to disable liveness probe when setting breakpoints
-  # in debugger so K8s doesn't restart unresponsive container
   enabled: true
+  path: /healthz
+  periodSeconds: 10
+  initialDelaySeconds: 10
 
 readiness:
-  initialDelaySeconds: 10
+  path: /healthz
   periodSeconds: 10
+  initialDelaySeconds: 10
 
 resources:
   small:
@@ -68,7 +111,7 @@ resources:
       cpu: "1"
       memory: "4Gi"
     requests:
-      cpu: "0.5"
+      cpu: "500m"
       memory: "1Gi"
   large:
     limits:
@@ -79,6 +122,18 @@ resources:
       memory: "2Gi"
   unlimited: {}
 
+# use this to define service specific overrides
+# for the global.tracing.* config keys
+tracing:
+  ignorePatterns:
+    - /aai/util.*
+
+metrics:
+  podMonitor:
+    enabled: true
+    port: http
+    path: /actuator/prometheus
+
 #Pods Service Account
 serviceAccount:
   nameOverride: aai-modelloader
@@ -93,4 +148,10 @@ securityContext:
 #Log configuration
 log:
   path: /var/log/onap
+  level:
+    root: INFO
 logConfigMapNamePrefix: '{{ include "common.fullname" . }}'
+
+volumes:
+  logSizeLimit: 64Mi
+  tmpSizeLimit: 100Mi
index daebc7d..f0c1319 100644 (file)
@@ -1,21 +1,21 @@
-# Patterns to ignore when building packages.\r
-# This supports shell glob matching, relative path matching, and\r
-# negation (prefixed with !). Only one pattern per line.\r
-.DS_Store\r
-# Common VCS dirs\r
-.git/\r
-.gitignore\r
-.bzr/\r
-.bzrignore\r
-.hg/\r
-.hgignore\r
-.svn/\r
-# Common backup files\r
-*.swp\r
-*.bak\r
-*.tmp\r
-*~\r
-# Various IDEs\r
-.project\r
-.idea/\r
-*.tmproj\r
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*~
+# Various IDEs
+.project
+.idea/
+*.tmproj
index 3594492..29afa6a 100644 (file)
@@ -18,7 +18,7 @@
 apiVersion: v2
 description: ONAP AAI resources
 name: aai-resources
-version: 13.0.1
+version: 16.0.0
 
 dependencies:
   - name: common
@@ -30,3 +30,6 @@ dependencies:
   - name: serviceAccount
     version: ~13.x-0
     repository: '@local'
+  - name: readinessCheck
+    version: ~13.x-0
+    repository: '@local'
index adabae3..44d9070 100644 (file)
@@ -5,7 +5,7 @@
 # ================================================================================
 # Copyright © 2017 AT&T Intellectual Property. All rights reserved.
 # Modifications Copyright © 2020 Orange
-# Modifications Copyright © 2023 Nordix Foundation
+# Modifications Copyright Â© 2023 Nordix Foundation
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -43,10 +43,10 @@ aai.server.url.base=http://aai.{{ include "common.namespace" . }}/aai/
 aai.server.url=http://aai.{{ include "common.namespace" . }}/aai/{{ .Values.global.config.schema.version.api.default }}/
 aai.global.callback.url=http://aai.{{ include "common.namespace" . }}/aai/
 
-{{ if .Values.global.config.basic.auth.enabled }}
+{{ if .Values.global.auth.enabled }}
 aai.tools.enableBasicAuth=true
-aai.tools.username={{ .Values.global.config.basic.auth.username }}
-aai.tools.password={{ .Values.global.config.basic.auth.passwd }}
+aai.tools.username={{ (index .Values.global.auth.users 0).username }}
+aai.tools.password={{ (index .Values.global.auth.users 0).password }}
 {{ end }}
 
 aai.notification.current.version={{ .Values.global.config.schema.version.api.default }}
@@ -91,10 +91,10 @@ aai.bulkconsumer.payloadoverride={{ .Values.config.bulk.override }}
 #
 
 # Indicator to enable or disable scheduled task (true/false)
-aai.graph.checker.task.enabled=true
+aai.graph.checker.task.enabled=false
 
 # Delay, in seconds, before the scheduled task is started, if enabled
 aai.graph.checker.task.delay=5
 
 # Period, in seconds, between two consecutive executions of the scheduled task, if enabled
-aai.graph.checker.task.period=10
\ No newline at end of file
+aai.graph.checker.task.period=10
diff --git a/kubernetes/aai/components/aai-resources/resources/config/application-keycloak.properties b/kubernetes/aai/components/aai-resources/resources/config/application-keycloak.properties
deleted file mode 100644 (file)
index 774e8bd..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-
-spring.autoconfigure.exclude=\
-  org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,\
-  org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration
-
-multi.tenancy.enabled={{ .Values.config.keycloak.multiTenancy.enabled }}
-keycloak.auth-server-url=http://{{ .Values.config.keycloak.host }}:{{ .Values.config.keycloak.port }}/auth
-keycloak.realm={{ .Values.config.keycloak.realm }}
-keycloak.resource={{ .Values.config.keycloak.resource }}
-keycloak.public-client=true
-keycloak.principal-attribute=preferred_username
-
-keycloak.ssl-required=external
-keycloak.bearer-only=true
\ No newline at end of file
index 1b7bdf8..7676475 100644 (file)
@@ -28,13 +28,10 @@ spring.jersey.type=filter
 spring.main.allow-bean-definition-overriding=true
 server.servlet.context-path=/
 
-spring.zipkin.baseUrl={{ .Values.tracing.collector.baseUrl }}
-spring.sleuth.messaging.jms.enabled = false
-spring.sleuth.trace-id128=true
-spring.sleuth.sampler.probability={{ .Values.tracing.sampling.probability }}
-spring.sleuth.propagation.type=w3c, b3
-spring.sleuth.supports-join=false
-spring.sleuth.web.skip-pattern={{ join "," .Values.tracing.ignorePatterns }}
+management.tracing.enabled={{ .Values.global.tracing.enabled }}
+management.tracing.sampling.probability={{ .Values.global.tracing.sampling.probability }}
+management.tracing.propagation.type=w3c, b3
+management.zipkin.tracing.endpoint={{ .Values.global.tracing.collector.baseUrl }}
 
 spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration,org.keycloak.adapters.springboot.KeycloakAutoConfiguration,org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration,org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration
 
@@ -50,16 +47,16 @@ server.tomcat.max-idle-time=60000
 # If you get an application startup failure that the port is already taken
 # If thats not it, please check if the key-store file path makes sense
 server.local.startpath=aai-resources/src/main/resources/
-server.basic.auth.location=${server.local.startpath}etc/auth/realm.properties
 
-server.port=8447
-security.require-ssl=false
-server.ssl.enabled=false
+server.port={{ .Values.service.resourcesPort }}
 
-# JMS bind address host port
-jms.bind.address=tcp://localhost:61647
-dmaap.ribbon.listOfServers=message-router.{{ include "common.namespace" . }}:3904
-dmaap.ribbon.transportType=http
+spring.kafka.producer.bootstrap-servers=${BOOTSTRAP_SERVERS}
+spring.kafka.producer.properties.security.protocol=SASL_PLAINTEXT
+spring.kafka.producer.properties.sasl.mechanism=SCRAM-SHA-512
+spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
+spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer
+spring.kafka.producer.properties.sasl.jaas.config=${JAAS_CONFIG}
+spring.kafka.producer.retries=3
 
 # Schema related attributes for the oxm and edges
 # Any additional schema related attributes should start with prefix schema
@@ -100,7 +97,7 @@ schema.service.client=no-auth
 #to expose the Prometheus scraping endpoint
 management.server.port=8448
 management.endpoints.enabled-by-default=true
-management.endpoints.web.exposure.include=info,health,prometheus
+management.endpoints.web.exposure.include=*
 endpoints.enabled={{ .Values.endpoints.enabled }}
 endpoints.info.enabled={{ .Values.endpoints.info.enabled }}
 endpoints.prometheus.enabled={{ .Values.metrics.serviceMonitor.enabled }}
@@ -111,4 +108,17 @@ management.metrics.distribution.sla[http.server.requests]=20ms, 30ms, 40ms, 50ms
 #Add common tag for grouping all aai related metrics
 management.metrics.tags.group_id=aai
 #It is not advisable to use labels to store dimensions with high cardinality. Enable this option only for debug purposes. For more information: https://github.com/micrometer-metrics/micrometer/issues/1584
-scrape.uri.metrics=false
\ No newline at end of file
+scrape.uri.metrics=false
+
+# If true, the actuator health check will be overriden
+# to use the AaiGraphChecker check instead.
+# This does the same as the /echo endpoint,
+# but doesn't show up in micrometer metrics
+aai.actuator.echo.enabled={{ .Values.actuator.echo.enabled }}
+aai.graph.properties.path=${server.local.startpath}/etc/appprops/janusgraph-realtime.properties
+
+aai.basic-auth.enabled={{ .Values.global.auth.enabled }}
+{{- range $index, $user := .Values.global.auth.users }}
+aai.basic-auth.users[{{ $index }}].username={{ $user.username }}
+aai.basic-auth.users[{{ $index }}].password={{ $user.password }}
+{{- end }}
diff --git a/kubernetes/aai/components/aai-resources/resources/config/janusgraph-cached.properties b/kubernetes/aai/components/aai-resources/resources/config/janusgraph-cached.properties
deleted file mode 100644 (file)
index b6fdd4c..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-{{/*
-#
-# ============LICENSE_START=======================================================
-# org.onap.aai
-# ================================================================================
-# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
-# ================================================================================
-# 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.
-# ============LICENSE_END=========================================================
-#
-# ECOMP is a trademark and service mark of AT&T Intellectual Property.
-#
-*/}}
-
-query.fast-property=true
-query.smart-limit=false
-
-{{ if .Values.global.config.cluster.cassandra.dynamic }}
-
-storage.backend=cql
-storage.hostname={{.Values.global.cassandra.serviceName}}
-storage.cql.keyspace=aaigraph
-storage.username={{.Values.global.cassandra.username}}
-storage.password={{.Values.global.cassandra.password}}
-
-storage.cql.read-consistency-level=LOCAL_QUORUM
-storage.cql.write-consistency-level=LOCAL_QUORUM
-storage.cql.replication-factor={{.Values.global.cassandra.replicas}}
-storage.cql.only-use-local-consistency-for-system-operations=true
-
-{{ else }}
-
-{{ if .Values.global.config.storage }}
-
-storage.backend={{ .Values.global.config.storage.backend }}
-
-{{ if eq .Values.global.config.storage.backend "cassandra" }}
-
-storage.hostname={{ .Values.global.config.storage.hostname }}
-storage.cassandra.keyspace={{ .Values.global.config.storage.name }}
-
-storage.cassandra.read-consistency-level={{ .Values.global.config.storage.cassandra.readConsistency }}
-storage.cassandra.write-consistency-level={{ .Values.global.config.storage.cassandra.writeConsistency }}
-storage.cassandra.replication-factor={{ .Values.global.config.storage.cassandra.replicationFactor | int }}
-storage.cassandra.astyanax.cluster-name= {{ .Values.global.config.storage.clusterName }}
-storage.cassandra.astyanax.local-datacenter= {{ .Values.global.config.storage.localDataCenter }}
-
-storage.connection-timeout={{ .Values.global.config.storage.connectionTimeout | int }}
-cache.tx-cache-size={{ .Values.global.config.storage.cacheSize | int }}
-log.tx.key-consistent={{ .Values.global.config.storage.keyConsistent }}
-
-{{ else if eq .Values.global.config.storage.backend "cql" }}
-
-storage.hostname={{ .Values.global.config.storage.hostname }}
-storage.cql.keyspace={{ .Values.global.config.storage.name }}
-
-storage.cql.read-consistency-level={{ .Values.global.config.storage.cql.readConsistency }}
-storage.cql.write-consistency-level={{ .Values.global.config.storage.cql.readConsistency }}
-storage.cql.replication-factor={{ .Values.global.config.storage.cql.replicationFactor | int }}
-
-storage.cql.only-use-local-consistency-for-system-operations={{ .Values.global.config.storage.cql.localConsistencyForSysOps }}
-storage.cql.cluster-name={{ .Values.global.config.storage.clusterName }}
-storage.cql.local-datacenter={{ .Values.global.config.storage.localDataCenter }}
-
-storage.connection-timeout={{ .Values.global.config.storage.connectionTimeout | int }}
-cache.tx-cache-size={{ .Values.global.config.storage.cacheSize | int }}
-log.tx.key-consistent={{ .Values.global.config.storage.keyConsistent }}
-
-{{ else if eq .Values.global.config.storage.backend "hbase" }}
-
-storage.hostname={{ .Values.global.config.storage.hostname }}
-storage.hbase.table={{ .Values.global.config.storage.name }}
-
-storage.connection-timeout={{ .Values.global.config.storage.connectionTimeout | int }}
-cache.tx-cache-size={{ .Values.global.config.storage.cacheSize | int }}
-log.tx.key-consistent={{ .Values.global.config.storage.keyConsistent }}
-
-{{ end }}
-
-{{ end }}
-
-{{ end }}
-
-storage.lock.wait-time=300
-#caching on
-cache.db-cache = true
-cache.db-cache-clean-wait = 20
-cache.db-cache-time = 180000
-cache.db-cache-size = 0.3
-
-#load graphson file on startup
-load.snapshot.file=false
index 4835560..1f46755 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 # ============LICENSE_END=========================================================
-#
-# ECOMP is a trademark and service mark of AT&T Intellectual Property.
-#
 */}}
-
 query.fast-property=true
 query.smart-limit=false
 
-{{ if .Values.global.config.cluster.cassandra.dynamic }}
-
+{{- if .Values.global.config.cluster.cassandra.dynamic }}
 storage.backend=cql
 storage.hostname={{.Values.global.cassandra.serviceName}}
-storage.cql.keyspace=aaigraph
 storage.username={{.Values.global.cassandra.username}}
 storage.password={{.Values.global.cassandra.password}}
 
+storage.cql.keyspace=aaigraph
+storage.cql.local-datacenter={{ .Values.global.cassandra.localDataCenter }}
 storage.cql.read-consistency-level=LOCAL_QUORUM
 storage.cql.write-consistency-level=LOCAL_QUORUM
 storage.cql.replication-factor={{.Values.global.cassandra.replicas}}
 storage.cql.only-use-local-consistency-for-system-operations=true
 
-{{ else }}
-
-{{ if .Values.global.config.storage }}
-
+{{- if .Values.global.cassandra.partitionerName }}
+storage.cql.partitioner-name={{ .Values.global.cassandra.partitionerName }}
+{{- end }}
+{{- else -}}
+{{- if .Values.global.config.storage }}
 storage.backend={{ .Values.global.config.storage.backend }}
-
-{{ if eq .Values.global.config.storage.backend "cassandra" }}
-
-storage.hostname={{ .Values.global.config.storage.hostname }}
-storage.cassandra.keyspace={{ .Values.global.config.storage.name }}
-
-storage.cassandra.read-consistency-level={{ .Values.global.config.storage.cassandra.readConsistency }}
-storage.cassandra.write-consistency-level={{ .Values.global.config.storage.cassandra.writeConsistency }}
-storage.cassandra.replication-factor={{ .Values.global.config.storage.cassandra.replicationFactor | int }}
-storage.cassandra.astyanax.cluster-name= {{ .Values.global.config.storage.clusterName }}
-storage.cassandra.astyanax.local-datacenter= {{ .Values.global.config.storage.localDataCenter }}
-
-storage.connection-timeout={{ .Values.global.config.storage.connectionTimeout | int }}
-cache.tx-cache-size={{ .Values.global.config.storage.cacheSize | int }}
-log.tx.key-consistent={{ .Values.global.config.storage.keyConsistent }}
-
-{{ else if eq .Values.global.config.storage.backend "cql" }}
-
+{{- if eq .Values.global.config.storage.backend "cql" }}
 storage.hostname={{ .Values.global.config.storage.hostname }}
 storage.cql.keyspace={{ .Values.global.config.storage.name }}
+storage.cql.local-datacenter={{ .Values.global.cassandra.localDataCenter }}
 
 storage.cql.read-consistency-level={{ .Values.global.config.storage.cql.readConsistency }}
 storage.cql.write-consistency-level={{ .Values.global.config.storage.cql.readConsistency }}
@@ -68,26 +49,21 @@ storage.cql.replication-factor={{ .Values.global.config.storage.cql.replicationF
 
 storage.cql.only-use-local-consistency-for-system-operations={{ .Values.global.config.storage.cql.localConsistencyForSysOps }}
 storage.cql.cluster-name={{ .Values.global.config.storage.clusterName }}
-storage.cql.local-datacenter={{ .Values.global.config.storage.localDataCenter }}
+storage.cql.local-datacenter={{ .Values.global.cassandra.localDataCenter }}
 
 storage.connection-timeout={{ .Values.global.config.storage.connectionTimeout | int }}
 cache.tx-cache-size={{ .Values.global.config.storage.cacheSize | int }}
 log.tx.key-consistent={{ .Values.global.config.storage.keyConsistent }}
-
 {{ else if eq .Values.global.config.storage.backend "hbase" }}
-
 storage.hostname={{ .Values.global.config.storage.hostname }}
 storage.hbase.table={{ .Values.global.config.storage.name }}
 
 storage.connection-timeout={{ .Values.global.config.storage.connectionTimeout | int }}
 cache.tx-cache-size={{ .Values.global.config.storage.cacheSize | int }}
 log.tx.key-consistent={{ .Values.global.config.storage.keyConsistent }}
-
-{{ end }}
-
-{{ end }}
-
-{{ end }}
+{{- end }}
+{{- end }}
+{{- end }}
 
 storage.lock.wait-time=300
 
@@ -95,12 +71,16 @@ storage.lock.wait-time=300
 # Setting db-cache to false will ensure the fastest propagation of changes across servers
 # Setting db-cache to true will ensure fastest response times
 cache.db-cache={{ .Values.config.janusgraph.caching.enabled }}
-{{ if .Values.config.janusgraph.caching.enabled }}
+{{- if .Values.config.janusgraph.caching.enabled }}
 # cache-time in milliseconds
 cache.db-cache-time={{ .Values.config.janusgraph.caching.dbCacheTime }}
 cache.db-cache-size={{ .Values.config.janusgraph.caching.dbCacheSize }}
 cache.db-cache-clean-wait={{ .Values.config.janusgraph.caching.dbCacheCleanWait }}
-{{ end }}
+{{- end }}
 
 #load graphson file on startup
 load.snapshot.file=false
+
+{{- if .Values.config.janusgraph.allowUpgrade }}
+graph.allow-upgrade=true
+{{- end }}
diff --git a/kubernetes/aai/components/aai-resources/resources/config/localhost-access-logback.xml b/kubernetes/aai/components/aai-resources/resources/config/localhost-access-logback.xml
deleted file mode 100644 (file)
index 07919a9..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-{{/*\r
-<!--\r
-\r
-    ============LICENSE_START=======================================================\r
-    org.onap.aai\r
-    ================================================================================\r
-    Copyright © 2017 AT&T Intellectual Property. All rights reserved.\r
-    Modifications Copyright © 2018 Amdocs, Bell Canada\r
-    ================================================================================\r
-    Licensed under the Apache License, Version 2.0 (the "License");\r
-    you may not use this file except in compliance with the License.\r
-    You may obtain a copy of the License at\r
-\r
-       http://www.apache.org/licenses/LICENSE-2.0\r
-\r
-    Unless required by applicable law or agreed to in writing, software\r
-    distributed under the License is distributed on an "AS IS" BASIS,\r
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-    See the License for the specific language governing permissions and\r
-    limitations under the License.\r
-    ============LICENSE_END=========================================================\r
-\r
-    ECOMP is a trademark and service mark of AT&T Intellectual Property.\r
-\r
--->\r
-*/}}\r
-<configuration>\r
-  <property name="AJSC_HOME" value="${AJSC_HOME:-.}" />\r
-\r
-  <property name="logToFileEnabled" value='{{.Values.accessLogback.logToFileEnabled}}' />\r
-  <property name="maxHistory" value='{{.Values.accessLogback.maxHistory}}' />\r
-  <property name="totalSizeCap" value='{{.Values.accessLogback.totalSizeCap}}' />\r
-  <property name="livenessAccessLogEnabled"\r
-    value='{{.Values.accessLogback.livenessAccessLogEnabled}}' />\r
-\r
-\r
-  <if condition='property("logToFileEnabled").contains("true")'>\r
-    <then>\r
-      <appender name="ACCESS"\r
-        class="ch.qos.logback.core.rolling.RollingFileAppender">\r
-        <file>${AJSC_HOME}/logs/ajsc-jetty/localhost_access.log</file>\r
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">\r
-          <fileNamePattern>${AJSC_HOME}/logs/ajsc-jetty/localhost_access.log.%d{yyyy-MM-dd}.zip\r
-          </fileNamePattern>\r
-          <maxHistory>${maxHistory}</maxHistory>\r
-          <totalSizeCap>${totalSizeCap}</totalSizeCap>\r
-        </rollingPolicy>\r
-        <encoder class="org.onap.aai.logging.CustomLogPatternLayoutEncoder">\r
-          <Pattern>%a %u %z [%t] "%m %U%q" %s %b %y %i{X-TransactionId} %i{X-FromAppId}\r
-            %i{X-Forwarded-For} %i{X-AAI-SSL-Client-CN} %i{X-AAI-SSL-Client-OU}\r
-            %i{X-AAI-SSL-Client-O} %i{X-AAI-SSL-Client-L} %i{X-AAI-SSL-Client-ST}\r
-            %i{X-AAI-SSL-Client-C} %i{X-AAI-SSL-Client-NotBefore} %i{X-AAI-SSL-Client-NotAfter}\r
-            %i{X-AAI-SSL-Client-DN} %D</Pattern>\r
-        </encoder>\r
-      </appender>\r
-      <appender-ref ref="ACCESS" />\r
-    </then>\r
-  </if>\r
-\r
-  <appender name="STDOUTACCESS" class="ch.qos.logback.core.ConsoleAppender">\r
-    <encoder class="org.onap.aai.logging.CustomLogPatternLayoutEncoder">\r
-      <Pattern>%a %u %z [%t] "%m %U%q" %s %b %y %i{X-TransactionId} %i{X-FromAppId}\r
-        %i{X-Forwarded-For} %i{X-AAI-SSL-Client-CN} %i{X-AAI-SSL-Client-OU} %i{X-AAI-SSL-Client-O}\r
-        %i{X-AAI-SSL-Client-L} %i{X-AAI-SSL-Client-ST} %i{X-AAI-SSL-Client-C}\r
-        %i{X-AAI-SSL-Client-NotBefore} %i{X-AAI-SSL-Client-NotAfter} %i{X-AAI-SSL-Client-DN} %D -\r
-        "logType": "access"</Pattern>\r
-    </encoder>\r
-    <if condition='property("livenessAccessLogEnabled").contains("false")'>\r
-      <then>\r
-        <filter class="ch.qos.logback.core.filter.EvaluatorFilter">\r
-          <evaluator class="ch.qos.logback.access.net.URLEvaluator">\r
-            <URL>/aai/util/echo</URL>\r
-          </evaluator>\r
-          <OnMismatch>NEUTRAL</OnMismatch>\r
-          <OnMatch>DENY</OnMatch>\r
-        </filter>\r
-      </then>\r
-    </if>\r
-  </appender>\r
-\r
-  <appender-ref ref="STDOUTACCESS" />\r
-\r
-</configuration>\r
-{{/*\r
-<!--\r
-%a - Remote IP address\r
-%A - Local IP address\r
-%b - Bytes sent, excluding HTTP headers, or '-' if no bytes were sent\r
-%B - Bytes sent, excluding HTTP headers\r
-%h - Remote host name\r
-%H - Request protocol\r
-%l - Remote logical username from identd (always returns '-')\r
-%m - Request method\r
-%p - Local port\r
-%q - Query string (prepended with a '?' if it exists, otherwise an empty string\r
-%r - First line of the request\r
-%s - HTTP status code of the response\r
-%S - User session ID\r
-%t - Date and time, in Common Log Format format\r
-%u - Remote user that was authenticated\r
-%U - Requested URL path\r
-%v - Local server name\r
-%I - current request thread name (can compare later with stacktraces)\r
-\r
-%z - Custom pattern that parses the cert for the subject\r
-%y - Custom pattern determines rest or dme2\r
--->\r
-*/}}
\ No newline at end of file
index b523185..c4c2a3a 100644 (file)
 
   <property resource="application.properties" />
 
-  <property name="maxHistory" value='{{.Values.logback.maxHistory}}' />
-  <property name="totalSizeCap" value='{{.Values.logback.totalSizeCap}}' />
-  <property name="queueSize" value='{{.Values.logback.queueSize}}'/>
-
-  <property name="logToFileEnabled" value='{{.Values.logback.logToFileEnabled}}'/>
-
-  <property name="namespace" value="aai-resources"/>
-
-  <property name="AJSC_HOME" value="${AJSC_HOME:-.}" />
-  <jmxConfigurator />
-  <property name="logDirectory" value="${AJSC_HOME}/logs" />
-  <!-- Old patterns
-  <property name="eelfLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%ecompServiceName|%X{partnerName}|%ecompStatusCode|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>
-  <property name="eelfAuditLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%ecompServiceName|%X{partnerName}|%ecompStatusCode|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n|\r\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>
-  <property name="eelfMetricLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%ecompServiceName|%X{partnerName}|%X{targetEntity}|%X{targetServiceName}|%ecompStatusCode|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{targetVirtualEntity}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>
-  <property name="eelfErrorLogPattern" value="%ecompStartTime|%X{requestId}|%-10t|%ecompServiceName|%X{partnerName}|%X{targetEntity}|%X{targetServiceName}|%ecompErrorCategory|%ecompResponseCode|%ecompResponseDescription|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>
-    <property name="eelfTransLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%ecompServiceName|%X{partnerName}|%ecompStatusCode|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{partnerName}:%m%n"/>
-    -->
-  <property name="p_tim" value="%d{&quot;yyyy-MM-dd'T'HH:mm:ss.SSSXXX&quot;, UTC}"/>
-  <property name="p_lvl" value="%level"/>
-  <property name="p_log" value="%logger"/>
-  <property name="p_mdc" value="%replace(%replace(%replace(%mdc){'\t','\\\\t'}){'\n', '\\\\n'}){'\\|', '!'}"/>
-  <property name="p_msg" value="%replace(%replace(%msg){'\t', '\\\\t'}){'\n','\\\\n'}"/>
-  <property name="p_exc" value="%replace(%replace(%rootException){'\t', '\\\\t'}){'\n','\\\\n'}"/>
-  <property name="p_mak" value="%replace(%replace(%marker){'\t', '\\\\t'}){'\n','\\\\n'}"/>
-  <property name="p_thr" value="%thread"/>
-  <property name="pattern" value="%nopexception${p_tim}\t${p_thr}\t${p_lvl}\t${p_log}\t${p_mdc}\t${p_msg}\t${p_exc}\t${p_mak}\t%n"/>
-  <!-- Patterns from onap demo -->
-  <property name="errorPattern" value="%X{LogTimestamp}|%X{RequestID}|%thread|%replace(%X{ServiceName}){'\\|', '!'}|%X{PartnerName}|%X{TargetEntity}|%replace(%X{TargetServiceName}){'\\|', '!'}|%.-5level|%X{ErrorCode}|%X{ErrorDesc}|%msg%n" />
-  <property name="debugPattern" value="%X{LogTimestamp}|%X{RequestID}|%msg\t${p_mdc}\t${p_msg}\t${p_exc}\t${p_mak}\t|^%n" />
-  <property name="auditPattern" value="%X{EntryTimestamp}|%X{LogTimestamp}|%X{RequestID}|%X{ServiceInstanceID}|%thread||%replace(%X{ServiceName}){'\\|', '!'}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDesc}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{RemoteHost}||||${p_mak}|${p_mdc}|||%msg%n" />
-  <property name="metricPattern" value="%X{InvokeTimestamp}|%X{LogTimestamp}|%X{RequestID}|%X{ServiceInstanceID}|%thread||%replace(%X{ServiceName}){'\\|', '!'}|%X{PartnerName}|%X{TargetEntity}|%replace(%X{TargetServiceName}){'\\|', '!'}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDesc}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{RemoteHost}||||%X{TargetVirtualEntity}|${p_mak}|${p_mdc}|||%msg%n" />
-  <property name="transLogPattern" value="%X{LogTimestamp}|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{RequestID}|%X{ServiceInstanceID}|%-10t|%X{ServerFQDN}|%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%replace(%replace(%X{ResponseDesc}){'\\|', '!'}){'\r|\n', '^'}|%X{InstanceUUID}|%level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{clientIpAddress}||%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{PartnerName}:%m%n"/>
-  <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
-  <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
-  <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
-
-  <if condition='property("logToFileEnabled").contains("true")'>
-    <then>
-      <appender name="SANE" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <file>${logDirectory}/rest/sane.log</file>
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-          <fileNamePattern>${logDirectory}/rest/sane.log.%d{yyyy-MM-dd}.zip</fileNamePattern>
-          <maxHistory>${maxHistory}</maxHistory>
-          <totalSizeCap>${totalSizeCap}</totalSizeCap>
-        </rollingPolicy>
-        <encoder>
-          <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - %msg%n
-          </pattern>
-        </encoder>
-      </appender>
-
-      <appender name="asyncSANE" class="ch.qos.logback.classic.AsyncAppender">
-        <queueSize>${queueSize}</queueSize>
-        <includeCallerData>true</includeCallerData>
-        <appender-ref ref="SANE"/>
-      </appender>
-      <appender name="METRIC" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <file>${logDirectory}/rest/metrics.log</file>
-        <rollingPolicy
-                class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-          <fileNamePattern>${logDirectory}/rest/metrics.log.%d{yyyy-MM-dd}.zip</fileNamePattern>
-          <maxHistory>${maxHistory}</maxHistory>
-          <totalSizeCap>${totalSizeCap}</totalSizeCap>
-        </rollingPolicy>
-        <encoder>
-          <pattern>${metricPattern}</pattern>
-        </encoder>
-      </appender>
-
-      <appender name="asyncMETRIC" class="ch.qos.logback.classic.AsyncAppender">
-        <queueSize>${queueSize}</queueSize>
-        <includeCallerData>true</includeCallerData>
-        <appender-ref ref="METRIC"/>
-      </appender>
-
-      <appender name="DEBUG"
-                class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <filter class="ch.qos.logback.classic.filter.LevelFilter">
-          <level>DEBUG</level>
-          <onMatch>ACCEPT</onMatch>
-          <onMismatch>DENY</onMismatch>
-        </filter>
-        <file>${logDirectory}/rest/debug.log</file>
-        <rollingPolicy
-                class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-          <fileNamePattern>${logDirectory}/rest/debug.log.%d{yyyy-MM-dd}.zip</fileNamePattern>
-          <maxHistory>${maxHistory}</maxHistory>
-          <totalSizeCap>${totalSizeCap}</totalSizeCap>
-        </rollingPolicy>
-        <encoder>
-          <pattern>${debugPattern}</pattern>
-        </encoder>
-      </appender>
-
-      <appender name="asyncDEBUG" class="ch.qos.logback.classic.AsyncAppender">
-        <queueSize>${queueSize}</queueSize>
-        <appender-ref ref="DEBUG"/>
-        <includeCallerData>true</includeCallerData>
-      </appender>
-      <appender name="ERROR"
-                class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <file>${logDirectory}/rest/error.log</file>
-        <rollingPolicy
-                class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-          <fileNamePattern>${logDirectory}/rest/error.log.%d{yyyy-MM-dd}.zip</fileNamePattern>
-          <maxHistory>${maxHistory}</maxHistory>
-          <totalSizeCap>${totalSizeCap}</totalSizeCap>
-        </rollingPolicy>
-        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
-          <level>WARN</level>
-        </filter>
-        <encoder>
-          <pattern>${errorPattern}</pattern>
-        </encoder>
-      </appender>
-
-      <appender name="asyncERROR" class="ch.qos.logback.classic.AsyncAppender">
-        <queueSize>${queueSize}</queueSize>
-        <appender-ref ref="ERROR"/>
-      </appender>
-
-      <appender name="AUDIT"
-                class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <file>${logDirectory}/rest/audit.log</file>
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-          <fileNamePattern>${logDirectory}/rest/audit.log.%d{yyyy-MM-dd}.zip
-          </fileNamePattern>
-          <maxHistory>${maxHistory}</maxHistory>
-          <totalSizeCap>${totalSizeCap}</totalSizeCap>
-        </rollingPolicy>
-        <encoder>
-          <pattern>${auditPattern}</pattern>
-        </encoder>
-      </appender>
-
-      <appender name="asyncAUDIT" class="ch.qos.logback.classic.AsyncAppender">
-        <queueSize>${queueSize}</queueSize>
-        <includeCallerData>true</includeCallerData>
-        <appender-ref ref="AUDIT"/>
-      </appender>
-
-      <appender name="translog"
-                class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <filter class="ch.qos.logback.classic.filter.LevelFilter">
-          <level>DEBUG</level>
-          <onMatch>ACCEPT</onMatch>
-          <onMismatch>DENY</onMismatch>
-        </filter>
-        <file>${logDirectory}/rest/translog.log</file>
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-          <fileNamePattern>${logDirectory}/rest/translog.log.%d{yyyy-MM-dd}.zip
-          </fileNamePattern>
-          <maxHistory>${maxHistory}</maxHistory>
-          <totalSizeCap>${totalSizeCap}</totalSizeCap>
-        </rollingPolicy>
-        <encoder>
-          <pattern>${transLogPattern}</pattern>
-        </encoder>
-      </appender>
-
-      <appender name="asynctranslog" class="ch.qos.logback.classic.AsyncAppender">
-        <queueSize>${queueSize}</queueSize>
-        <includeCallerData>true</includeCallerData>
-        <appender-ref ref="translog"/>
-      </appender>
-
-      <appender name="dmaapAAIEventConsumer"
-                class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
-          <level>WARN</level>
-        </filter>
-        <File>${logDirectory}/dmaapAAIEventConsumer/error.log</File>
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-          <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/error.log.%d{yyyy-MM-dd}.zip
-          </fileNamePattern>
-          <maxHistory>${maxHistory}</maxHistory>
-          <totalSizeCap>${totalSizeCap}</totalSizeCap>
-        </rollingPolicy>
-        <encoder>
-          <pattern>${errorPattern}</pattern>
-        </encoder>
-
-      </appender>
-
-      <appender name="dmaapAAIEventConsumerDebug"
-                class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <filter class="ch.qos.logback.classic.filter.LevelFilter">
-          <level>DEBUG</level>
-          <onMatch>ACCEPT</onMatch>
-          <onMismatch>DENY</onMismatch>
-        </filter>
-        <File>${logDirectory}/dmaapAAIEventConsumer/debug.log</File>
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-          <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/debug.log.%d{yyyy-MM-dd}.zip
-          </fileNamePattern>
-          <maxHistory>${maxHistory}</maxHistory>
-          <totalSizeCap>${totalSizeCap}</totalSizeCap>
-        </rollingPolicy>
-        <encoder>
-          <pattern>${debugPattern}</pattern>
-        </encoder>
-      </appender>
-      <appender name="dmaapAAIEventConsumerInfo"
-                class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <filter class="ch.qos.logback.classic.filter.LevelFilter">
-          <level>INFO</level>
-          <onMatch>ACCEPT</onMatch>
-          <onMismatch>DENY</onMismatch>
-        </filter>
-        <File>${logDirectory}/dmaapAAIEventConsumer/dmaap-transaction.log</File>
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-          <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/dmaap-transaction.log.%d{yyyy-MM-dd}.zip
-          </fileNamePattern>
-          <maxHistory>${maxHistory}</maxHistory>
-          <totalSizeCap>${totalSizeCap}</totalSizeCap>
-        </rollingPolicy>
-        <encoder>
-          <pattern>${auditPattern}</pattern>
-        </encoder>
-      </appender>
-      <appender name="dmaapAAIEventConsumerMetric"
-                class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <filter class="ch.qos.logback.classic.filter.LevelFilter">
-          <level>INFO</level>
-          <onMatch>ACCEPT</onMatch>
-          <onMismatch>DENY</onMismatch>
-        </filter>
-        <File>${logDirectory}/dmaapAAIEventConsumer/metrics.log</File>
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-          <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/metrics.log.%d{yyyy-MM-dd}.zip
-          </fileNamePattern>
-          <maxHistory>${maxHistory}</maxHistory>
-          <totalSizeCap>${totalSizeCap}</totalSizeCap>
-        </rollingPolicy>
-        <encoder>
-          <pattern>${metricPattern}</pattern>
-        </encoder>
-      </appender>
-      <appender name="external"
-                class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
-          <level>WARN</level>
-        </filter>
-        <file>${logDirectory}/external/external.log</file>
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-          <fileNamePattern>${logDirectory}/external/external.log.%d{yyyy-MM-dd}.zip
-          </fileNamePattern>
-          <maxHistory>${maxHistory}</maxHistory>
-          <totalSizeCap>${totalSizeCap}</totalSizeCap>
-        </rollingPolicy>
-        <encoder>
-          <pattern>${debugPattern}</pattern>
-        </encoder>
-      </appender>
-      <appender name="auth"
-                class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
-          <level>DEBUG</level>
-        </filter>
-        <file>${logDirectory}/auth/auth.log</file>
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-          <fileNamePattern>${logDirectory}/auth/auth.log.%d{yyyy-MM-dd}.zip
-          </fileNamePattern>
-          <maxHistory>${maxHistory}</maxHistory>
-          <totalSizeCap>${totalSizeCap}</totalSizeCap>
-        </rollingPolicy>
-        <encoder>
-          <pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}[%thread] %-5level %logger{1024} - %msg%n</pattern>
-        </encoder>
-      </appender>
-      <appender name="asyncAUTH" class="ch.qos.logback.classic.AsyncAppender">
-        <queueSize>${queueSize}</queueSize>
-        <includeCallerData>true</includeCallerData>
-        <appender-ref ref="auth"/>
-      </appender>
-    </then>
-  </if>
-
   <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
     <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
       <providers>
           <shortenedLoggerNameLength>36</shortenedLoggerNameLength>
         </loggerName>
         <logLevel/>
-        <pattern>
-          <pattern>{"logType":"app"}</pattern>
-        </pattern>
       </providers>
     </encoder>
   </appender>
 
-  <!-- logback internals logging -->
 
+
+  <!-- logback internals logging -->
   <logger name="ch.qos.logback.classic" level="WARN" />
   <logger name="ch.qos.logback.core" level="WARN" />
 
   <logger name="org.springframework.beans" level="WARN" />
   <logger name="org.springframework.web" level="WARN" />
   <logger name="org.janusgraph" level="WARN" />
+  <logger name="org.janusgraph.graphdb.transaction" level="ERROR" />
   <logger name="org.zookeeper" level="OFF" />
 
 
-  <logger name="org.onap.aai" level="DEBUG" additivity="false">
-    <if condition='property("logToFileEnabled").contains("true")'>
-      <then>
-        <appender-ref ref="asyncDEBUG"/>
-        <appender-ref ref="asyncSANE"/>
-      </then>
-    </if>
+  <logger name="org.onap.aai" level={{ .Values.log.level.base | upper | quote }} additivity="false">
     <appender-ref ref="STDOUT"/>
   </logger>
   <logger name="org.onap.aai.aaf.auth" level="DEBUG" additivity="false">
-    <if condition='property("logToFileEnabled").contains("true")'>
-      <then>
-        <appender-ref ref="asyncAUTH"/>
-      </then>
-    </if>
     <appender-ref ref="STDOUT"/>
   </logger>
 
-  <if condition='property("logToFileEnabled").contains("true")'>
-    <then>
-      <!-- These loggers are not additive and will be redirected to the parent logger.
-        Sending events to log is handled by parent loggers-->
-      <logger name="org.onap.aai.aailog.logs.AaiScheduledTaskAuditLog" level="INFO">
-        <appender-ref ref="asyncAUDIT"/>
-      </logger>
-      <logger name="org.onap.logging.filter.base.AbstractAuditLogFilter" level="INFO">
-        <appender-ref ref="asyncAUDIT"/>
-      </logger>
-      <logger name="org.onap.aai.aailog.logs.AaiDBMetricLog" level="INFO">
-        <appender-ref ref="asyncMETRIC"/>
-      </logger>
-      <logger name="org.onap.aai.aailog.logs.AaiDmaapMetricLog" level="INFO">
-        <appender-ref ref="dmaapAAIEventConsumerMetric"/>
-      </logger>
-      <logger name="org.onap.aai.logging.ErrorLogHelper" level="WARN">
-        <appender-ref ref="asyncERROR"/>
-      </logger>
-      <logger name="com.att.nsa.mr" level="INFO">
-        <appender-ref ref="dmaapAAIEventConsumerInfo"/>
-      </logger>
-    </then>
-  </if>
-
   <logger name="org.onap.aai.interceptors.post" level="DEBUG" additivity="false">
-    <if condition='property("logToFileEnabled").contains("true")'>
-      <then>
-        <appender-ref ref="asynctranslog"/>
-      </then>
-    </if>
     <appender-ref ref="STDOUT"/>
   </logger>
 
-  <logger name="org.onap.aai.dmaap" level="DEBUG" additivity="false">
-    <if condition='property("logToFileEnabled").contains("true")'>
-      <then>
-        <appender-ref ref="dmaapAAIEventConsumer"/>
-        <appender-ref ref="dmaapAAIEventConsumerDebug"/>
-      </then>
-    </if>
+  <logger name="org.onap.aai.kafka" level="DEBUG" additivity="false">
     <appender-ref ref="STDOUT"/>
   </logger>
 
-  <root level="DEBUG">
-    <if condition='property("logToFileEnabled").contains("true")'>
-      <then>
-        <appender-ref ref="external"/>
-      </then>
-    </if>
+  <root level={{ .Values.log.level.root | upper | quote }}>
     <appender-ref ref="STDOUT"/>
   </root>
-</configuration>
\ No newline at end of file
+</configuration>
diff --git a/kubernetes/aai/components/aai-resources/resources/config/realm.properties b/kubernetes/aai/components/aai-resources/resources/config/realm.properties
deleted file mode 100644 (file)
index f254d03..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-{{/*
-# Copyright © 2018 Amdocs, Bell Canada, AT&T
-#
-# 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.
-# format : username: password[,rolename ...]
-# default username/password: AAI/AAI, MSO/MSO, ModelLoader/ModelLoader...
-*/ -}}
-AAI:OBF:1gfr1ev31gg7,admin
-MSO:OBF:1jzx1lz31k01,admin
-SDNC:OBF:1itr1i0l1i151isv,admin
-DCAE:OBF:1g8u1f9d1f991g8w,admin
-POLICY:OBF:1mk61i171ima1im41i0j1mko,admin
-ASDC:OBF:1f991j0u1j001f9d,admin
-ModelLoader:OBF:1qvu1v2h1sov1sar1wfw1j7j1wg21saj1sov1v1x1qxw,admin
-AaiUI:OBF:1gfr1p571unz1p4j1gg7,admin
-OOF:OBF:1img1ke71ily,admin
-aai@aai.onap.org:OBF:1fia1ju61l871lfe18xp18xr18xt1lc41l531jrk1fek,admin
-so@so.onap.org:OBF:1fia1ju61l871lfe18xp18xr18xt1lc41l531jrk1fek,admin
-sdnc@sdnc.onap.org:OBF:1fia1ju61l871lfe18xp18xr18xt1lc41l531jrk1fek,admin
-dcae@dcae.onap.org:OBF:1fia1ju61l871lfe18xp18xr18xt1lc41l531jrk1fek,admin
-policy@policy.onap.org:OBF:1fia1ju61l871lfe18xp18xr18xt1lc41l531jrk1fek,admin
-sdc@sdc.onap.org:OBF:1fia1ju61l871lfe18xp18xr18xt1lc41l531jrk1fek,admin
-oof@oof.onap.org:OBF:1fia1ju61l871lfe18xp18xr18xt1lc41l531jrk1fek,admin
-pomba@pomba.onap.org:OBF:1fia1ju61l871lfe18xp18xr18xt1lc41l531jrk1fek,admin
-vfc@vfc.onap.org:OBF:1fia1ju61l871lfe18xp18xr18xt1lc41l531jrk1fek,admin
diff --git a/kubernetes/aai/components/aai-resources/templates/_helpers.tpl b/kubernetes/aai/components/aai-resources/templates/_helpers.tpl
new file mode 100644 (file)
index 0000000..7352b5d
--- /dev/null
@@ -0,0 +1,21 @@
+{{- define "aairesources.waitForSchemaCreation" -}}
+- name: wait-for-schema-creation
+  image: "{{ include "repositoryGenerator.image.curl" . }}"
+  imagePullPolicy: IfNotPresent
+  command: ["/bin/sh", "-c"]
+  args:
+    - |
+      URL="{{ required "URL is required" (.Values.schemaInitCheckURL | default "http://aai-graphadmin:8449/isSchemaInitialized") }}"
+      AUTH="{{ printf "%s:%s" (index .Values.global.auth.users 0).username (index .Values.global.auth.users 0).password }}"
+      while true; do
+        RESPONSE=$(curl -u $AUTH -s $URL)
+        if [ "$RESPONSE" = "true" ]; then
+          echo "Request successful. Schema is initialized."
+          exit 0
+        else
+          echo "Request unsuccessful. Schema is not yet initialized. Retrying in 3 seconds..."
+          sleep 3
+        fi
+      done
+  {{ include "common.containerSecurityContext" . | indent 2 | trim }}
+{{- end -}}
diff --git a/kubernetes/aai/components/aai-resources/templates/aai-kafka-user.yml b/kubernetes/aai/components/aai-resources/templates/aai-kafka-user.yml
new file mode 100644 (file)
index 0000000..f6063a0
--- /dev/null
@@ -0,0 +1,32 @@
+{{/*
+# Copyright © 2022-23 Nordix Foundation
+#
+# 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.
+*/}}
+apiVersion: kafka.strimzi.io/v1beta2
+kind: KafkaUser
+metadata:
+  name: {{ include "common.release" . }}-{{ .Values.global.aaiKafkaUser }}
+  labels: {{- include "common.labels" . | nindent 4 }}
+    strimzi.io/cluster: {{ include "common.release" . }}-strimzi
+spec:
+  authentication:
+    type: scram-sha-512
+  authorization:
+    type: simple
+    acls:
+    - resource:
+        type: topic
+        name: AAI-EVENT
+      operations:
+        - All
diff --git a/kubernetes/aai/components/aai-resources/templates/autoscaling.yaml b/kubernetes/aai/components/aai-resources/templates/autoscaling.yaml
new file mode 100644 (file)
index 0000000..29b191b
--- /dev/null
@@ -0,0 +1,32 @@
+{{- if and .Values.autoscaling.enabled (not (or .Values.config.debug.enabled .Values.config.profiling.enabled)) }}
+apiVersion: autoscaling/v2
+kind: HorizontalPodAutoscaler
+metadata:
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
+  labels: {{- include "common.labels" . | nindent 4 }}
+spec:
+  scaleTargetRef:
+    apiVersion: apps/v1
+    kind: Deployment
+    name: {{ include "common.fullname" . }}
+  minReplicas: {{ .Values.autoscaling.minReplicas }}
+  maxReplicas: {{ .Values.autoscaling.maxReplicas }}
+  metrics:
+    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}
+    - type: Resource
+      resource:
+        name: cpu
+        target:
+          type: Utilization
+          averageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}
+    {{- end }}
+    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}
+    - type: Resource
+      resource:
+        name: memory
+        target:
+          type: Utilization
+          averageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}
+    {{- end }}
+{{- end }}
index eccc4ba..73723a1 100644 (file)
@@ -20,17 +20,9 @@ kind: ConfigMap
 metadata:
   name: {{ include "common.fullname" . }}
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 data:
 {{ tpl (.Files.Glob "resources/config/logback.xml").AsConfig . | indent 2 }}
-{{ tpl (.Files.Glob "resources/config/localhost-access-logback.xml").AsConfig . | indent 2 }}
 {{ tpl (.Files.Glob "resources/config/janusgraph-realtime.properties").AsConfig . | indent 2 }}
-{{ tpl (.Files.Glob "resources/config/janusgraph-cached.properties").AsConfig . | indent 2 }}
 {{ tpl (.Files.Glob "resources/config/aaiconfig.properties").AsConfig . | indent 2 }}
 {{ tpl (.Files.Glob "resources/config/application.properties").AsConfig . | indent 2 }}
-{{ tpl (.Files.Glob "resources/config/application-keycloak.properties").AsConfig . | indent 2 }}
-{{ tpl (.Files.Glob "resources/config/realm.properties").AsConfig . | indent 2 }}
index 122e522..6dde781 100644 (file)
 
 apiVersion: apps/v1
 kind: Deployment
-metadata:
-  name: {{ include "common.fullname" . }}
-  namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    app.kubernetes.io/name: {{ include "common.name" . }}
-    {{- if .Chart.AppVersion }}
-    version: "{{ .Chart.AppVersion | replace "+" "_" }}"
-    {{- else }}
-    version: "{{ .Chart.Version | replace "+" "_" }}"
-    {{- end }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+metadata: {{- include "common.resourceMetadata" (dict "annotations" .Values.annotations "dot" .) | nindent 2 }}
 spec:
+  {{- if or .Values.config.debug.enabled .Values.config.profiling.enabled }}
+  replicas: 1
+  {{- else }}
+  {{- if not .Values.autoscaling.enabled }}
   replicas: {{ .Values.replicaCount }}
+  {{- end }}
+  {{- end }}
+  revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
   minReadySeconds: {{ .Values.minReadySeconds }}
   strategy:
     type: {{ .Values.updateStrategy.type }}
@@ -46,97 +40,22 @@ spec:
     matchLabels:
       app: {{ include "common.name" . }}
   template:
-    metadata:
-      labels:
-        app: {{ include "common.name" . }}
-        release: {{ include "common.release" . }}
-        app.kubernetes.io/name: {{ include "common.name" . }}
-        {{- if .Chart.AppVersion }}
-        version: "{{ .Chart.AppVersion | replace "+" "_" }}"
-        {{- else }}
-        version: "{{ .Chart.Version | replace "+" "_" }}"
-        {{- end }}
-      name: {{ include "common.name" . }}
-      annotations:
-        checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
-      {{- if .Values.global.msbEnabled }}
-        {{ $values := .Values }}
-        msb.onap.org/service-info: '[
-        {{- range $api_endpoint := $values.aai_enpoints -}}
-          {{- range $api_version := $values.api_list }}
-          {
-              "serviceName": "_{{ $api_endpoint.name }}",
-              "version": "v{{ $api_version }}",
-              "url": "/aai/v{{ $api_version }}/{{ $api_endpoint.url }}",
-              "protocol": "REST",
-              "port": "8447",
-              "enable_ssl": true,
-              "lb_policy":"ip_hash",
-              "visualRange": "1",
-              "path": "/aai/v{{ $api_version }}/{{ $api_endpoint.url }}"
-          },
-          {
-              "serviceName": "{{ $api_endpoint.name }}",
-              "version": "v{{ $api_version }}",
-              "url": "/aai/v{{ $api_version }}/{{ $api_endpoint.url }}",
-              "protocol": "REST",
-              "port": "8447",
-              "enable_ssl": true,
-              "lb_policy":"ip_hash",
-              "visualRange": "1"
-          },
-          {{- end }}
-        {{- end }}
-          ]'
-      {{- end }}
+    metadata: {{- include "common.templateMetadata" . | nindent 6 }}
     spec:
       hostname: aai-resources
       terminationGracePeriodSeconds: {{ .Values.service.terminationGracePeriodSeconds }}
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
       initContainers:
-      - name: {{ include "common.name" . }}-readiness
-        command:
-        - /app/ready.py
-        args:
-        {{- if .Values.global.jobs.migration.enabled }}
-        - --job-name
-        - {{ include "common.release" . }}-aai-graphadmin-migration
-        {{- else }}
-          {{- if .Values.global.jobs.createSchema.enabled  }}
-        - --job-name
-        - {{ include "common.release" . }}-aai-graphadmin-create-db-schema
-          {{- else }}
-        - --service-name
-        - {{ .Values.global.cassandra.serviceName }}
-        - --service-name
-        - aai-schema-service
-          {{- end }}
-        {{- end }}
-        env:
-        - name: NAMESPACE
-          valueFrom:
-            fieldRef:
-              apiVersion: v1
-              fieldPath: metadata.namespace
-        image: {{ include "repositoryGenerator.image.readiness" . }}
-        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-        resources:
-          limits:
-            cpu: "100m"
-            memory: "500Mi"
-          requests:
-            cpu: "3m"
-            memory: "20Mi"
+      {{- if .Values.global.jobs.migration.enabled }}
+      {{ include "common.readinessCheck.waitFor" (dict "dot" . "wait_for" .Values.readinessCheck.wait_for_migration) | nindent 8 }}
+      {{- else if .Values.global.jobs.createSchema.enabled  }}
+      {{ include "aairesources.waitForSchemaCreation" . | nindent 6 }}
+      {{- end }}
       containers:
       - name: {{ include "common.name" . }}
         image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-        command:
-        - sh
-        args:
-        - -c
-        - |
-          echo "*** actual launch of AAI Resources"
-          /bin/bash /opt/app/aai-resources/docker-entrypoint.sh
+        {{ include "common.containerSecurityContext" . | indent 8 | trim }}
         env:
         {{- if .Values.config.env }}
         {{- range $key,$value := .Values.config.env }}
@@ -152,23 +71,23 @@ spec:
         - name: POST_JVM_ARGS
           value: {{ .Values.config.debug.args | quote }}
         {{- end }}
-        - name: LOCAL_USER_ID
-          value: {{ .Values.global.config.userId | quote }}
-        - name: LOCAL_GROUP_ID
-          value: {{ .Values.global.config.groupId | quote }}
         - name: INTERNAL_PORT_1
-          value: {{ .Values.service.internalPort | quote }}
+          value: {{ .Values.service.resourcesPort | quote }}
         - name: INTERNAL_PORT_2
-          value: {{ .Values.service.internalPort2 | quote }}
+          value: {{ .Values.service.debugPort | quote }}
         - name: INTERNAL_PORT_3
-          value: {{ .Values.service.internalPort3 | quote }}
+          value: {{ .Values.service.metricsPort | quote }}
+        - name: BOOTSTRAP_SERVERS
+          value: {{ include "common.release" . }}-strimzi-kafka-bootstrap:9092
+        - name: JAAS_CONFIG
+          valueFrom:
+            secretKeyRef:
+              name: {{ include "common.release" . }}-{{ .Values.global.aaiKafkaUser }}
+              key: sasl.jaas.config
         volumeMounts:
         - mountPath: /opt/app/aai-resources/resources/etc/appprops/janusgraph-realtime.properties
           name: {{ include "common.fullname" . }}-config
           subPath: janusgraph-realtime.properties
-        - mountPath: /opt/app/aai-resources/resources/etc/appprops/janusgraph-cached.properties
-          name: {{ include "common.fullname" . }}-config
-          subPath: janusgraph-cached.properties
         - mountPath: /opt/app/aai-resources/resources/etc/appprops/aaiconfig.properties
           name: {{ include "common.fullname" . }}-config
           subPath: aaiconfig.properties
@@ -177,32 +96,24 @@ spec:
         - mountPath: /opt/app/aai-resources/resources/logback.xml
           name: {{ include "common.fullname" . }}-config
           subPath: logback.xml
-        - mountPath: /opt/app/aai-resources/resources/localhost-access-logback.xml
-          name: {{ include "common.fullname" . }}-config
-          subPath: localhost-access-logback.xml
-        - mountPath: /opt/app/aai-resources/resources/etc/auth/realm.properties
-          name: {{ include "common.fullname" . }}-config
-          subPath: realm.properties
         - mountPath: /opt/app/aai-resources/resources/application.properties
           name: {{ include "common.fullname" . }}-config
           subPath: application.properties
-        - mountPath: /opt/app/aai-resources/resources/application-keycloak.properties
-          name: {{ include "common.fullname" . }}-config
-          subPath: application-keycloak.properties
+        - mountPath: /tmp
+          name: tmp
         ports:
-        - containerPort: {{ .Values.service.internalPort }}
-          name: {{ .Values.service.portName }}
+        - containerPort: {{ .Values.service.resourcesPort }}
+          name: {{ .Values.service.resourcesPortName }}
         {{- if .Values.config.debug.enabled }}
-        - containerPort: {{ .Values.service.internalPort2 }}
-          name: {{ .Values.service.portName2 }}
+        - containerPort: {{ .Values.service.debugPort }}
+          name: {{ .Values.service.debugPortName }}
         {{- end }}
-        - containerPort: {{ .Values.service.internalPort3 }}
-          name: {{ .Values.service.portName3 }}
+        - containerPort: {{ .Values.service.metricsPort }}
+          name: {{ .Values.service.metricsPortName }}
         {{- if .Values.config.profiling.enabled }}
-        - containerPort: {{ .Values.service.internalPort4 }}
-          name: {{ .Values.service.portName4 }}
+        - containerPort: {{ .Values.service.profilingPort }}
+          name: {{ .Values.service.profilingPortName }}
         {{- end }}
-
         lifecycle:
           # wait for active requests (long-running tasks) to be finished
           # Before the SIGTERM is invoked, Kubernetes exposes a preStop hook in the Pod.
@@ -212,41 +123,38 @@ spec:
                 - sh
                 - -c
                 - |
-                  while (netstat -an | grep ESTABLISHED | grep -e $INTERNAL_PORT_1 -e $INTERNAL_PORT_2)
-                  do sleep 10
+                  while (netstat -an | grep ESTABLISHED | grep -e $INTERNAL_PORT_1)
+                  do sleep 3
                   done
-        # disable liveness probe when breakpoints set in debugger
-        # so K8s doesn't restart unresponsive container
-        {{- if .Values.liveness.enabled }}
+        # disable liveness probe when
+        # debugging.enable=true or profiling.enabled=true
+        {{- if and .Values.liveness.enabled (not (or .Values.config.debug.enabled .Values.config.profiling.enabled)) }}
         livenessProbe:
           httpGet:
-            path: /aai/util/echo?action=checkDB
-            port: {{ .Values.service.internalPort }}
-            scheme: HTTP
-            httpHeaders:
-            - name: X-FromAppId
-              value: LivenessCheck
-            - name: X-TransactionId
-              value: LiveCheck_TID
-            - name: Accept
-              value: application/json
+            port: {{ .Values.service.metricsPort }}
+            path: {{ .Values.liveness.path }}
+          {{- if .Values.liveness.initialDelaySeconds }}
           initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
+          {{- end }}
           periodSeconds: {{ .Values.liveness.periodSeconds }}
+          timeoutSeconds: {{ .Values.liveness.timeoutSeconds }}
         {{- end }}
         readinessProbe:
           httpGet:
-            path: /aai/util/echo?action=checkDB
-            port: {{ .Values.service.internalPort }}
-            scheme: HTTP
-            httpHeaders:
-            - name: X-FromAppId
-              value: ReadinessCheck
-            - name: X-TransactionId
-              value: ReadinessCheck_TID
-            - name: Accept
-              value: application/json
+            port: {{ .Values.service.metricsPort }}
+            path: {{ .Values.readiness.path }}
+          {{- if .Values.readiness.initialDelaySeconds }}
           initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
+          {{- end }}
           periodSeconds: {{ .Values.readiness.periodSeconds }}
+          timeoutSeconds: {{ .Values.readiness.timeoutSeconds }}
+        startupProbe:
+          httpGet:
+            port: {{ .Values.service.metricsPort }}
+            path: {{ .Values.startup.path }}
+          failureThreshold: {{ .Values.startup.failureThreshold }}
+          periodSeconds: {{ .Values.startup.periodSeconds }}
+          timeoutSeconds: {{ .Values.startup.timeoutSeconds }}
         resources: {{ include "common.resources" . | nindent 10 }}
       {{- if .Values.nodeSelector }}
       nodeSelector: {{ toYaml .Values.nodeSelector | nindent 8 }}
@@ -259,7 +167,11 @@ spec:
       serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
       volumes:
       - name: logs
-        emptyDir: {}
+        emptyDir:
+          sizeLimit: {{ .Values.volumes.logSizeLimit }}
+      - name: tmp
+        emptyDir:
+          sizeLimit: {{ .Values.volumes.tmpSizeLimit }}
       {{ include "common.log.volumes" (dict "dot" . "configMapNamePrefix" (tpl .Values.logConfigMapNamePrefix .)) | nindent 6 }}
       - name: {{ include "common.fullname" . }}-config
         configMap:
index 0613129..605679e 100644 (file)
@@ -19,41 +19,36 @@ kind: Service
 metadata:
   name: {{ include "common.servicename" . }}
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    app.kubernetes.io/name: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 spec:
   type: {{ .Values.service.type }}
   ports:
   {{ if eq .Values.service.type "NodePort" -}}
-  - port: {{ .Values.service.internalPort }}
+  - port: {{ .Values.service.resourcesPort }}
     nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }}
-    name: {{ .Values.service.portName }}
-    targetPort: {{ .Values.service.portName }}
-  - port: {{ .Values.service.internalPort2 }}
+    name: {{ .Values.service.resourcesPortName }}
+    targetPort: {{ .Values.service.resourcesPortName }}
+  - port: {{ .Values.service.debugPort }}
     nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort2 }}
-    name: {{ .Values.service.portName2 }}
-    targetPort: {{ .Values.service.portName2 }}
-  - port: {{ .Values.service.internalPort3 }}
+    name: {{ .Values.service.debugPortName }}
+    targetPort: {{ .Values.service.debugPortName }}
+  - port: {{ .Values.service.metricsPort }}
     nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort3 }}
-    name: {{ .Values.service.portName3 }}
-    targetPort: {{ .Values.service.portName3 }}
+    name: {{ .Values.service.metricsPortName }}
+    targetPort: {{ .Values.service.metricsPortName }}
   {{- else -}}
-  - port: {{ .Values.service.internalPort }}
-    name: {{ .Values.service.portName }}
-    targetPort: {{ .Values.service.portName }}
-  - port: {{ .Values.service.internalPort2 }}
-    name: {{ .Values.service.portName2 }}
-    targetPort: {{ .Values.service.portName2 }}
-  - port: {{ .Values.service.internalPort3 }}
-    name: {{ .Values.service.portName3 }}
-    targetPort: {{ .Values.service.portName3 }}
+  - port: {{ .Values.service.resourcesPort }}
+    name: {{ .Values.service.resourcesPortName }}
+    targetPort: {{ .Values.service.resourcesPortName }}
+  {{- if .Values.config.debug.enabled }}
+  - port: {{ .Values.service.debugPort }}
+    name: {{ .Values.service.debugPortName }}
+    targetPort: {{ .Values.service.debugPortName }}
   {{- end }}
-  selector:
-    app: {{ include "common.name" . }}
-    release: {{ include "common.release" . }}
+  - port: {{ .Values.service.metricsPort }}
+    name: {{ .Values.service.metricsPortName }}
+    targetPort: {{ .Values.service.metricsPortName }}
+  {{- end }}
+  selector: {{- include "common.matchLabels" . | nindent 4 }}
   clusterIP: None
   sessionAffinity: {{ .Values.service.sessionAffinity }}
index c0d9f21..dc70602 100644 (file)
@@ -1,3 +1,3 @@
 {{- if .Values.metrics.serviceMonitor.enabled }}
 {{  include "common.serviceMonitor" . }}
-{{- end }}
\ No newline at end of file
+{{- end }}
index b1d3202..f97ca98 100644 (file)
 # Declare variables to be passed into your templates.
 global: # global defaults
   nodePortPrefix: 302
+  kafkaBootstrap: strimzi-kafka-bootstrap
+  aaiKafkaUser: aai-kafka-user
   cassandra:
     #Service Name of the cassandra cluster to connect to.
     #Override it to aai-cassandra if localCluster is enabled.
     serviceName: cassandra
+  tracing:
+    enabled: false
+    collector:
+      baseUrl: http://jaeger-collector.istio-config:9411
+    sampling:
+      probability: 1.0
 
   # Specifies a list of jobs to be run
   jobs:
@@ -34,6 +42,37 @@ global: # global defaults
     migration:
       enabled: false
 
+  # Specifies if basic authorization is enabled
+  auth:
+    enabled: true
+    # users that can authenticate via basic auth
+    users:
+      - username: aai@aai.onap.org
+        password: demo123456!
+      - username: so@so.onap.org
+        password: demo123456!
+      - username: sdnc@sdnc.onap.org
+        password: demo123456!
+      - username: dcae@dcae.onap.org
+        password: demo123456!
+      - username: policy@policy.onap.org
+        password: demo123456!
+      - username: sdc@sdc.onap.org
+        password: demo123456!
+      - username: AAI
+        password: AAI
+      - username: DCAE
+        password: DCAE
+      - username: MSO
+        password: MSO
+      - username: POLICY
+        password: POLICY
+      - username: ASDC
+        password: ASDC
+      - username: ModelLoader
+        password: ModelLoader
+      - username: AaiUI
+        password: AaiUI
   config:
     # Specifies that the cluster connected to a dynamic
     # cluster being spinned up by kubernetes deployment
@@ -41,16 +80,9 @@ global: # global defaults
       cassandra:
         dynamic: true
 
-    # Specifies if the basic authorization is enabled
-    basic:
-      auth:
-        enabled: true
-        username: AAI
-        passwd: AAI
-
     # Active spring profiles for the resources microservice
     profiles:
-      active: production,dmaap
+      active: production,kafka
 
     # Notification event specific properties
     notification:
@@ -75,11 +107,11 @@ global: # global defaults
       version:
         # Current version of the REST API
         api:
-          default: v28
+          default: v30
         # Specifies which version the depth parameter is configurable
         depth: v11
         # List of all the supported versions of the API
-        list: v11,v12,v13,v14,v15,v16,v17,v18,v19,v20,v21,v22,v23,v24,v25,v26,v27,v28
+        list: v11,v12,v13,v14,v15,v16,v17,v18,v19,v20,v21,v22,v23,v24,v25,v26,v27,v28,v29,v30
         # Specifies from which version related link should appear
         related:
           link: v11
@@ -96,7 +128,6 @@ global: # global defaults
     # Specifies which clients should always default to realtime graph connection
     realtime:
       clients: SDNC,MSO,SO,robot-ete
-
 api_list:
   - 11
   - 12
@@ -107,6 +138,16 @@ api_list:
   - 17
   - 18
   - 19
+  - 20
+  - 21
+  - 22
+  - 23
+  - 24
+  - 25
+  - 26
+  - 27
+  - 28
+  - 29
 
 aai_enpoints:
   - name: aai-cloudInfrastructure
@@ -123,13 +164,16 @@ aai_enpoints:
     url: external-system
 
 # application image
-image: onap/aai-resources:1.13.0
+image: onap/aai-resources:1.16.0
 pullPolicy: Always
 restartPolicy: Always
 flavor: small
-flavorOverride: small
 # default number of instances
 replicaCount: 1
+
+# number of ReplicaSets that should be retained for the Deployment
+revisionHistoryLimit: 1
+
 # the minimum number of seconds that a newly created Pod should be ready
 minReadySeconds: 30
 updateStrategy:
@@ -141,30 +185,21 @@ updateStrategy:
 
 # Configuration for the resources deployment
 config:
-  # configure keycloak according to your environment.
-  # don't forget to add keycloak in active profiles above (global.config.profiles)
-  keycloak:
-    host: keycloak.your.domain
-    port: 8180
-    # Specifies a set of users, credentials, roles, and groups
-    realm: aai-resources
-    # Used by any client application for enabling fine-grained authorization for their protected resources
-    resource: aai-resources-app
-    # If set to true, additional criteria will be added that match the data-owner property with the given role
-    # to the user in keycloak
-    multiTenancy:
-      enabled: true
   janusgraph:
     caching:
       # enable when running read-heavy workloads
       # modifications to graph done by this service/janusgraph instance will immediately invalidate the cache
       # modifications to graph done by other services (traversal) will only be visible
       # after time specified in db-cache-time
-      enabled: false
+      enabled: true
       # Documentation: https://docs.janusgraph.org/operations/cache/#database-level-caching
       dbCacheTime: 180000 # in milliseconds
-      dbCacheSize: 0.1 # percentage (expressed as a decimal between 0 and 1) of the total heap space available to the JVM running
+      dbCacheSize: 0.5 # percentage (expressed as a decimal between 0 and 1) of the total heap space available to the JVM running
       dbCacheCleanWait: 20 # in milliseconds
+    # temporarily enable this to update the graph storage version
+    # see: https://docs.janusgraph.org/changelog/#upgrade-instructions_9
+    allowUpgrade: true
+
 
 
   # Specifies crud related operation timeouts and overrides
@@ -189,8 +224,6 @@ config:
 
   # environment variables added to the launch of the image in deployment
   env:
-    MIN_HEAP_SIZE: "512m"
-    MAX_HEAP_SIZE: "1024m"
     MAX_METASPACE_SIZE: "512m"
 
   # adds jvm args for remote debugging the application
@@ -220,25 +253,37 @@ affinity: {}
 
 # probe configuration parameters
 liveness:
-  initialDelaySeconds: 60
-  periodSeconds: 60
-  # necessary to disable liveness probe when setting breakpoints
-  # in debugger so K8s doesn't restart unresponsive container
-  enabled: false
+  enabled: true
+  path: /actuator/health
+  periodSeconds: 10
+  timeoutSeconds: 3
 
 readiness:
-  initialDelaySeconds: 60
+  path: /actuator/health/readiness
   periodSeconds: 10
+  timeoutSeconds: 3
+
+startup:
+  path: /actuator/health/liveness
+  failureThreshold: 60
+  periodSeconds: 5
+  timeoutSeconds: 3
+
+actuator:
+  echo:
+    enabled: true
 
 service:
   type: ClusterIP
-  portName: http
-  internalPort: 8447
-  portName2: tcp-5005
-  internalPort2: 5005
-  portName3: http-resources
-  internalPort3: 8448
-  terminationGracePeriodSeconds: 120
+  resourcesPortName: http
+  resourcesPort: 8447
+  debugPortName: tcp-5005
+  debugPort: 5005
+  metricsPortName: metrics
+  metricsPort: 8448
+  profilingPortName: jmx-9999
+  profilingPort: 9999
+  terminationGracePeriodSeconds: 30
   sessionAffinity: None
 
 ingress:
@@ -260,13 +305,6 @@ serviceMesh:
   # ref: http://kubernetes.io/docs/user-guide/compute-resources/
   # Minimum memory for development is 2 CPU cores and 4GB memory
   # Minimum memory for production is 4 CPU cores and 8GB memory
-#resources:
-#  limits:
-#    cpu: "2"
-#    memory: "4Gi"
-#  requests:
-#    cpu: "2"
-#    memory: "4Gi"
 resources:
   small:
     limits:
@@ -277,18 +315,14 @@ resources:
       memory: "3Gi"
   large:
     limits:
-      cpu: "4"
+      cpu: "8"
       memory: "8Gi"
     requests:
-      cpu: "2"
+      cpu: "4"
       memory: "6Gi"
   unlimited: {}
 
 tracing:
-  collector:
-    baseUrl: http://jaeger-collector.istio-system:9411
-  sampling:
-    probability: 1.0 # percentage of requests that are sampled (between 0-1/0%-100%)
   ignorePatterns:
     - /aai/util.*
 
@@ -299,9 +333,15 @@ endpoints:
   info:
     enabled: true
 
+autoscaling:
+  enabled: false
+  minReplicas: 1
+  maxReplicas: 3
+  targetCPUUtilizationPercentage: 80
+
 metrics:
   serviceMonitor:
-    enabled: false
+    enabled: true
     targetPort: 8448
     path: /actuator/prometheus
     basicAuth:
@@ -329,9 +369,9 @@ metrics:
     ##
     selector:
       app: '{{ include "common.name" . }}'
-      chart: '{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}'
-      release: '{{ include "common.release" . }}'
-      heritage: '{{ .Release.Service }}'
+      helm.sh/chart: '{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}'
+      app.kubernetes.io/instance: '{{ include "common.release" . }}'
+      app.kubernetes.io/managed-by: '{{ .Release.Service }}'
 
     ## RelabelConfigs to apply to samples before scraping
     ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#relabelconfig
@@ -360,17 +400,50 @@ serviceAccount:
 #Log configuration
 log:
   path: /var/log/onap
+  level:
+    root: INFO
+    base: INFO # base package (org.onap.aai)
+    audit: WARN
+    dbMetric: WARN
 logConfigMapNamePrefix: '{{ include "common.fullname" . }}'
 
-# To make logback capping values configurable
-logback:
-  logToFileEnabled: false
-  maxHistory: 7
-  totalSizeCap: 1GB
-  queueSize: 1000
-
-accessLogback:
-  livenessAccessLogEnabled: false # false: do not log kubernetes liveness probes
-  logToFileEnabled: false
-  maxHistory: 7
-  totalSizeCap: 1GB
+#################################################################
+# Secrets metaconfig
+#################################################################
+secrets:
+  - uid: aai-kafka-user
+    externalSecret: '{{ tpl (default "" .Values.config.jaasConfExternalSecret) . }}'
+    type: genericKV
+    envs:
+      - name: sasl.jaas.config
+        value: '{{ .Values.config.someConfig }}'
+        policy: generate
+kafkaUser:
+  authenticationType: scram-sha-512
+  acls:
+    - name: AAI-EVENT
+      type: topic
+      operations: [Read, Write]
+
+volumes:
+  logSizeLimit: 50Mi
+  tmpSizeLimit: 100Mi
+
+securityContext:
+  user_id: 1000
+  group_id: 1000
+
+readinessCheck:
+  wait_for_migration:
+    jobs:
+      - '{{ include "common.release" . }}-aai-graphadmin-migration'
+  wait_for_createSchema:
+    jobs:
+      - '{{ include "common.release" . }}-aai-graphadmin-create-db-schema'
+  wait_for_cassandra:
+    services:
+      - '{{ .Values.global.cassandra.serviceName }}'
+      - aai-schema-service
+
+podAnnotations:
+  checksum/config: '{{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}'
index daebc7d..f0c1319 100644 (file)
@@ -1,21 +1,21 @@
-# Patterns to ignore when building packages.\r
-# This supports shell glob matching, relative path matching, and\r
-# negation (prefixed with !). Only one pattern per line.\r
-.DS_Store\r
-# Common VCS dirs\r
-.git/\r
-.gitignore\r
-.bzr/\r
-.bzrignore\r
-.hg/\r
-.hgignore\r
-.svn/\r
-# Common backup files\r
-*.swp\r
-*.bak\r
-*.tmp\r
-*~\r
-# Various IDEs\r
-.project\r
-.idea/\r
-*.tmproj\r
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*~
+# Various IDEs
+.project
+.idea/
+*.tmproj
index 3860826..ec476bf 100644 (file)
@@ -18,7 +18,7 @@
 apiVersion: v2
 description: ONAP AAI Schema Service
 name: aai-schema-service
-version: 13.0.0
+version: 16.0.0
 
 dependencies:
   - name: common
index 4c620a0..3d4fd65 100644 (file)
@@ -4,7 +4,7 @@
 # org.onap.aai
 # ================================================================================
 # Copyright © 2019 AT&T Intellectual Property. All rights reserved.
-# Modifications Copyright © 2023 Nordix Foundation
+# Modifications Copyright Â© 2023 Nordix Foundation
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -24,13 +24,12 @@ aai.server.url.base=http://aai.{{ include "common.namespace" . }}/aai/
 aai.server.url=http://aai.{{ include "common.namespace" . }}/aai/{{ .Values.global.config.schema.version.api.default }}/
 aai.global.callback.url=http://aai.{{ include "common.namespace" . }}/aai/
 
-{{ if or (.Values.global.config.basic.auth.enabled) ( include "common.onServiceMesh" .) }}
-aai.tools.enableBasicAuth=true
-aai.tools.username={{ .Values.global.config.basic.auth.username }}
-aai.tools.password={{ .Values.global.config.basic.auth.passwd }}
+{{ if or (.Values.global.auth.enabled) ( include "common.onServiceMesh" .) }}
+aai.tools.enableBasicAuth={{ .Values.global.auth.enabled }}
+aai.tools.username={{ (index .Values.global.auth.users 0).username }}
+aai.tools.password={{ (index .Values.global.auth.users 0).password }}
 {{ end }}
 
-
 aai.default.api.version={{ .Values.global.config.schema.version.api.default }}
 
 aai.logging.trace.enabled=true
index 20dc6bc..ff37210 100644 (file)
@@ -1,6 +1,6 @@
 {{/*
 # Copyright © 2018 Amdocs, Bell Canada, AT&T
-# Modifications Copyright © 2023 Nordix Foundation
+# Modifications Copyright Â© 2023 Nordix Foundation
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -23,19 +23,25 @@ info.build.version=1.1.0
 
 spring.application.name=aai-schema-service
 spring.jersey.type=filter
-
+spring.jersey.application-path=${schema.uri.base.path}
 spring.main.allow-bean-definition-overriding=true
-server.servlet.context-path=/
-
 spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration
+spring.sleuth.enabled={{ .Values.global.tracing.enabled }}
+spring.zipkin.baseUrl={{ .Values.global.tracing.collector.baseUrl }}
+spring.sleuth.trace-id128=true
+spring.sleuth.sampler.probability={{ .Values.global.tracing.sampling.probability }}
+spring.sleuth.propagation.type=w3c, b3
+spring.sleuth.supports-join=false
+{{- if and .Values.tracing .Values.tracing.ignorePatterns }}
+spring.sleuth.web.skip-pattern={{ join "," .Values.tracing.ignorePatterns }}
+{{- end }}
 
-spring.jersey.application-path=${schema.uri.base.path}
+server.servlet.context-path=/
 server.tomcat.max-threads=200
 server.tomcat.min-Spare-Threads=25
 server.tomcat.max-idle-time=60000
 
 server.local.startpath=aai-schema-service/src/main/resources/
-server.basic.auth.location=${server.local.startpath}/etc/auth/realm.properties
 
 server.port=8452
 security.require-ssl=false
index d062835..36acef2 100644 (file)
@@ -9,7 +9,7 @@
     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
+        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,
@@ -58,4 +58,4 @@
 %z - Custom pattern that parses the cert for the subject
 %y - Custom pattern determines rest or dme2
  -->
-*/}}
\ No newline at end of file
+*/}}
index e91e257..a30ffdf 100644 (file)
@@ -10,7 +10,7 @@
   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
+      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,
 
   <property resource="application.properties"/>
 
-  <property name="namespace" value="aai-schema-service"/>
-
-  <property name="AJSC_HOME" value="${AJSC_HOME:-.}"/>
-  <property name="logDirectory" value="${AJSC_HOME}/logs"/>
-  <!-- Old patterns
-  <property name="eelfLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%ecompServiceName|%X{partnerName}|%ecompStatusCode|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>
-  <property name="eelfAuditLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%ecompServiceName|%X{partnerName}|%ecompStatusCode|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n|\r\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>
-  <property name="eelfMetricLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%ecompServiceName|%X{partnerName}|%X{targetEntity}|%X{targetServiceName}|%ecompStatusCode|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{targetVirtualEntity}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>
-  //<property name="eelfErrorLogPattern" value="%ecompStartTime|%X{requestId}|%-10t|%ecompServiceName|%X{partnerName}|%X{targetEntity}|%X{targetServiceName}|%ecompErrorCategory|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n|\r\n', '^'}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>
-  <property name="eelfErrorLogPattern" value="%ecompStartTime|%X{requestId}|%-10t|%ecompServiceName|%X{partnerName}|%X{targetEntity}|%X{targetServiceName}|%ecompErrorCategory|%ecompResponseCode|%ecompResponseDescription|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>
-  <property name="eelfTransLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%ecompServiceName|%X{partnerName}|%ecompStatusCode|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{partnerName}:%m%n"/>
-  -->
-  <property name="p_tim" value="%d{&quot;yyyy-MM-dd'T'HH:mm:ss.SSSXXX&quot;, UTC}"/>
-  <property name="p_lvl" value="%level"/>
-  <property name="p_log" value="%logger"/>
-  <property name="p_mdc" value="%replace(%replace(%replace(%mdc){'\t','\\\\t'}){'\n', '\\\\n'}){'\\|', '!'}"/>
-  <property name="p_msg" value="%replace(%replace(%msg){'\t', '\\\\t'}){'\n','\\\\n'}"/>
-  <property name="p_exc" value="%replace(%replace(%rootException){'\t', '\\\\t'}){'\n','\\\\n'}"/>
-  <property name="p_mak" value="%replace(%replace(%marker){'\t', '\\\\t'}){'\n','\\\\n'}"/>
-  <property name="p_thr" value="%thread"/>
-  <property name="pattern" value="%nopexception${p_tim}\t${p_thr}\t${p_lvl}\t${p_log}\t${p_mdc}\t${p_msg}\t${p_exc}\t${p_mak}\t%n"/>
-  <!-- Patterns from onap demo -->
-  <property name="errorPattern" value="%X{LogTimestamp}|%X{RequestID}|%thread|%replace(%X{ServiceName}){'\\|', '!'}|%X{PartnerName}|%X{TargetEntity}|%replace(%X{TargetServiceName}){'\\|', '!'}|%.-5level|%X{ErrorCode}|%X{ErrorDesc}|%msg%n" />
-  <property name="debugPattern" value="%X{LogTimestamp}|%X{RequestID}|%msg\t${p_mdc}\t${p_msg}\t${p_exc}\t${p_mak}\t|^%n" />
-
-  <property name="auditPattern" value="%X{EntryTimestamp}|%X{LogTimestamp}|%X{RequestID}|%X{ServiceInstanceID}|%thread||%replace(%X{ServiceName}){'\\|', '!'}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDesc}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{RemoteHost}||||${p_mak}|${p_mdc}|||%msg%n" />
-  <property name="metricPattern" value="%X{InvokeTimestamp}|%X{LogTimestamp}|%X{RequestID}|%X{ServiceInstanceID}|%thread||%replace(%X{ServiceName}){'\\|', '!'}|%X{PartnerName}|%X{TargetEntity}|%replace(%X{TargetServiceName}){'\\|', '!'}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDesc}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{RemoteHost}||||%X{TargetVirtualEntity}|${p_mak}|${p_mdc}|||%msg%n" />
-  <property name="transLogPattern" value="%X{LogTimestamp}|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{RequestID}|%X{ServiceInstanceID}|%-10t|%X{ServerFQDN}|%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%replace(%replace(%X{ResponseDesc}){'\\|', '!'}){'\r|\n', '^'}|%X{InstanceUUID}|%level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{clientIpAddress}||%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{PartnerName}:%m%n"/>
-
-  <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
-  <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
-  <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
   <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-    <encoder>
-      <pattern>
-        %clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}
-      </pattern>
-    </encoder>
-  </appender>
-
-  <appender name="SANE" class="ch.qos.logback.core.rolling.RollingFileAppender">
-    <file>${logDirectory}/rest/sane.log</file>
-    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-      <fileNamePattern>${logDirectory}/rest/sane.log.%d{yyyy-MM-dd}</fileNamePattern>
-    </rollingPolicy>
-    <encoder>
-      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - %msg%n
-      </pattern>
-    </encoder>
-  </appender>
-
-  <appender name="asyncSANE" class="ch.qos.logback.classic.AsyncAppender">
-    <queueSize>1000</queueSize>
-    <includeCallerData>true</includeCallerData>
-    <appender-ref ref="SANE"/>
-  </appender>
-
-  <appender name="METRIC" class="ch.qos.logback.core.rolling.RollingFileAppender">
-    <file>${logDirectory}/rest/metrics.log</file>
-    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-      <fileNamePattern>${logDirectory}/rest/metrics.log.%d{yyyy-MM-dd}</fileNamePattern>
-    </rollingPolicy>
-    <encoder>
-      <pattern>${metricPattern}</pattern>
-    </encoder>
-  </appender>
-  <appender name="asyncMETRIC" class="ch.qos.logback.classic.AsyncAppender">
-    <queueSize>1000</queueSize>
-    <includeCallerData>true</includeCallerData>
-    <appender-ref ref="METRIC"/>
-  </appender>
-
-  <appender name="DEBUG"
-        class="ch.qos.logback.core.rolling.RollingFileAppender">
-    <filter class="ch.qos.logback.classic.filter.LevelFilter">
-      <level>DEBUG</level>
-      <onMatch>ACCEPT</onMatch>
-      <onMismatch>DENY</onMismatch>
-    </filter>
-    <file>${logDirectory}/rest/debug.log</file>
-    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-      <fileNamePattern>${logDirectory}/rest/debug.log.%d{yyyy-MM-dd}
-      </fileNamePattern>
-    </rollingPolicy>
-    <encoder>
-      <pattern>${debugPattern}</pattern>
-    </encoder>
-  </appender>
-
-  <appender name="asyncDEBUG" class="ch.qos.logback.classic.AsyncAppender">
-    <queueSize>1000</queueSize>
-    <appender-ref ref="DEBUG"/>
-    <includeCallerData>true</includeCallerData>
-  </appender>
-
-  <appender name="ERROR"
-        class="ch.qos.logback.core.rolling.RollingFileAppender">
-    <file>${logDirectory}/rest/error.log</file>
-    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-      <fileNamePattern>${logDirectory}/rest/error.log.%d{yyyy-MM-dd}
-      </fileNamePattern>
-    </rollingPolicy>
-    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
-      <level>WARN</level>
-    </filter>
-    <encoder>
-      <pattern>${errorPattern}</pattern>
-    </encoder>
-  </appender>
-
-  <appender name="asyncERROR" class="ch.qos.logback.classic.AsyncAppender">
-    <queueSize>1000</queueSize>
-    <appender-ref ref="ERROR"/>
-  </appender>
-
-  <appender name="AUDIT"
-        class="ch.qos.logback.core.rolling.RollingFileAppender">
-    <file>${logDirectory}/rest/audit.log</file>
-    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-      <fileNamePattern>${logDirectory}/rest/audit.log.%d{yyyy-MM-dd}
-      </fileNamePattern>
-    </rollingPolicy>
-    <encoder>
-      <pattern>${auditPattern}</pattern>
+    <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
+      <providers>
+        <timestamp><fieldName>timestamp</fieldName></timestamp>
+        <message/>
+        <mdc>
+          <fieldName>context</fieldName>
+          <excludeMdcKeyName>ServerIPAddress</excludeMdcKeyName>
+          <excludeMdcKeyName>EntryTimestamp</excludeMdcKeyName>
+          <excludeMdcKeyName>InvokeTimestamp</excludeMdcKeyName>
+          <excludeMdcKeyName>ErrorCode</excludeMdcKeyName>
+          <excludeMdcKeyName>ErrorDesc</excludeMdcKeyName>
+        </mdc>
+        <stackTrace>
+          <fieldName>exception</fieldName>
+          <throwableConverter class="net.logstash.logback.stacktrace.ShortenedThrowableConverter">
+            <exclude>^sun\.reflect\..*\.invoke</exclude>
+            <exclude>^net\.sf\.cglib\.proxy\.MethodProxy\.invoke</exclude>
+            <rootCauseFirst>true</rootCauseFirst>
+          </throwableConverter>
+        </stackTrace>
+        <threadName><fieldName>thread</fieldName></threadName>
+        <loggerName>
+          <fieldName>logger</fieldName>
+          <shortenedLoggerNameLength>36</shortenedLoggerNameLength>
+        </loggerName>
+        <logLevel/>
+      </providers>
     </encoder>
   </appender>
 
-  <appender name="asyncAUDIT" class="ch.qos.logback.classic.AsyncAppender">
-    <queueSize>1000</queueSize>
-    <includeCallerData>true</includeCallerData>
-    <appender-ref ref="AUDIT"/>
-  </appender>
-
-  <appender name="translog"
-        class="ch.qos.logback.core.rolling.RollingFileAppender">
-    <filter class="ch.qos.logback.classic.filter.LevelFilter">
-      <level>DEBUG</level>
-      <onMatch>ACCEPT</onMatch>
-      <onMismatch>DENY</onMismatch>
-    </filter>
-    <file>${logDirectory}/rest/translog.log</file>
-    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-      <fileNamePattern>${logDirectory}/rest/translog.log.%d{yyyy-MM-dd}
-      </fileNamePattern>
-    </rollingPolicy>
-    <encoder>
-      <pattern>${transLogPattern}</pattern>
-    </encoder>
-  </appender>
-
-  <appender name="asynctranslog" class="ch.qos.logback.classic.AsyncAppender">
-    <queueSize>1000</queueSize>
-    <includeCallerData>true</includeCallerData>
-    <appender-ref ref="translog"/>
-  </appender>
-
-  <appender name="external"
-        class="ch.qos.logback.core.rolling.RollingFileAppender">
-    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
-      <level>WARN</level>
-    </filter>
-    <file>${logDirectory}/external/external.log</file>
-    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-      <fileNamePattern>${logDirectory}/external/external.log.%d{yyyy-MM-dd}
-      </fileNamePattern>
-    </rollingPolicy>
-    <encoder>
-      <pattern>${debugPattern}</pattern>
-    </encoder>
-  </appender>
-
-  <appender name="auth"
-        class="ch.qos.logback.core.rolling.RollingFileAppender">
-    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
-      <level>DEBUG</level>
-    </filter>
-    <file>${logDirectory}/auth/auth.log</file>
-    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-      <fileNamePattern>${logDirectory}/auth/auth.log.%d{yyyy-MM-dd}
-      </fileNamePattern>
-    </rollingPolicy>
-    <encoder>
-      <pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}[%thread] %-5level %logger{1024} - %msg%n</pattern>
-    </encoder>
-  </appender>
-  <appender name="asyncAUTH" class="ch.qos.logback.classic.AsyncAppender">
-    <queueSize>1000</queueSize>
-    <includeCallerData>true</includeCallerData>
-    <appender-ref ref="auth" />
-  </appender>
-
-  <logger name="org.onap.aai" level="DEBUG" additivity="false">
-    <appender-ref ref="asyncDEBUG"/>
-    <appender-ref ref="asyncSANE"/>
+  <logger name="org.onap.aai" level={{ .Values.log.level.base | upper | quote }} additivity="false">
     <appender-ref ref="STDOUT"/>
   </logger>
 
 
   <logger name="org.eclipse.jetty" level="WARN"/>
 
-  <logger name="org.onap.aai.aaf.auth" level="DEBUG" additivity="false">
-    <appender-ref ref="asyncAUTH" />
-    <appender-ref ref="STDOUT"/>
-  </logger>
+
   <logger name="org.onap.aai.aailog.logs.AaiScheduledTaskAuditLog" level="INFO">
-    <appender-ref ref="asyncAUDIT"/>
     <appender-ref ref="STDOUT"/>
   </logger>
 
   <logger name="org.onap.logging.filter.base.AbstractAuditLogFilter" level="INFO">
-    <appender-ref ref="asyncAUDIT"/>
     <appender-ref ref="STDOUT"/>
   </logger>
 
   <logger name="org.onap.aai.logging.ErrorLogHelper" level="WARN">
-    <appender-ref ref="asyncERROR"/>
     <appender-ref ref="STDOUT"/>
   </logger>
   <logger name="org.onap.aai.schemaservice.interceptors.post" level="DEBUG" additivity="false">
-    <appender-ref ref="asynctranslog" />
     <appender-ref ref="STDOUT"/>
   </logger>
 
   <logger name="com.att.aft.dme2" level="WARN"/>
 
 
-  <root level="DEBUG">
+  <root level={{ .Values.log.level.root | upper | quote }}>
     <appender-ref ref="STDOUT" />
-    <appender-ref ref="external"/>
   </root>
 </configuration>
index 9573871..b98b030 100644 (file)
@@ -19,11 +19,7 @@ kind: ConfigMap
 metadata:
   name: {{ include "common.fullname" . }}-log
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 data:
 {{ tpl (.Files.Glob "config/logback.xml").AsConfig . | indent 2 }}
 ---
@@ -32,11 +28,7 @@ kind: ConfigMap
 metadata:
   name: {{ include "common.fullname" . }}-localhost-access-log
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 data:
 {{ tpl (.Files.Glob "config/localhost-access-logback.xml").AsConfig . | indent 2 }}
 ---
@@ -45,11 +37,7 @@ kind: ConfigMap
 metadata:
   name: {{ include "common.fullname" . }}-aaiconfig
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 data:
 {{ tpl (.Files.Glob "config/aaiconfig.properties").AsConfig . | indent 2 }}
 ---
@@ -58,23 +46,6 @@ kind: ConfigMap
 metadata:
   name: {{ include "common.fullname" . }}-springapp
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 data:
 {{ tpl (.Files.Glob "config/application.properties").AsConfig . | indent 2 }}
----
-apiVersion: v1
-kind: ConfigMap
-metadata:
-  name: {{ include "common.fullname" . }}-realm
-  namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
-data:
-{{ tpl (.Files.Glob "config/realm.properties").AsConfig . | indent 2 }}
index 0ecc2b2..a0c532e 100644 (file)
 
 apiVersion: apps/v1
 kind: Deployment
-metadata:
-  name: {{ include "common.fullname" . }}
-  namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    app.kubernetes.io/name: {{ include "common.name" . }}
-    {{- if .Chart.AppVersion }}
-    version: "{{ .Chart.AppVersion | replace "+" "_" }}"
-    {{- else }}
-    version: "{{ .Chart.Version | replace "+" "_" }}"
-    {{- end }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+metadata: {{- include "common.resourceMetadata" (dict "dot" . "suffix" "" "labels" .Values.labels "annotations" .Values.annotations ) | nindent 2 }}
 spec:
+  {{- if .Values.debug.enabled }}
+  replicas: 1
+  {{- else }}
   replicas: {{ .Values.replicaCount }}
+  {{- end }}
+  revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
   strategy:
     type: {{ .Values.updateStrategy.type }}
     {{- if (eq "RollingUpdate" .Values.updateStrategy.type) }}
@@ -46,30 +38,44 @@ spec:
     matchLabels:
       app: {{ include "common.name" . }}
   template:
-    metadata:
-      labels:
-        app: {{ include "common.name" . }}
-        release: {{ include "common.release" . }}
-        app.kubernetes.io/name: {{ include "common.name" . }}
-        {{- if .Chart.AppVersion }}
-        version: "{{ .Chart.AppVersion | replace "+" "_" }}"
-        {{- else }}
-        version: "{{ .Chart.Version | replace "+" "_" }}"
-        {{- end }}
-      name: {{ include "common.name" . }}
-      annotations:
-        checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
+    metadata: {{- include "common.templateMetadata" . | nindent 6 }}
     spec:
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
+      initContainers:
+      - command: ["cp", "-R", "/opt/app/aai-schema-service/.", "/opt/app/aai-schema-service_rw/"]
+        image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        name: copy-base-folder
+        {{ include "common.containerSecurityContext" . | indent 8 | trim }}
+        resources:
+          limits:
+            cpu: 100m
+            memory: 200Mi
+          requests:
+            cpu: 3m
+            memory: 20Mi
+        volumeMounts:
+        - mountPath: /opt/app/aai-schema-service_rw
+          name: aai-schema-service
+        - mountPath: /tmp
+          name: tmp-volume
       containers:
       - name: {{ include "common.name" . }}
         image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        {{ include "common.containerSecurityContext" . | indent 8 | trim }}
         env:
-        - name: LOCAL_USER_ID
-          value: {{ .Values.securityContext.user_id | quote }}
-        - name: LOCAL_GROUP_ID
-          value: {{ .Values.securityContext.group_id | quote }}
+        {{- if .Values.profiling.enabled }}
+        - name: PRE_JVM_ARGS
+          value: '{{ join " " .Values.profiling.args }}'
+        {{- end }}
+        {{- if .Values.debug.enabled }}
+        - name: POST_JAVA_OPTS
+          value: {{ .Values.debug.args | quote }}
+        {{- end }}
         volumeMounts:
+        - mountPath: /opt/app/aai-schema-service
+          name: aai-schema-service
         - mountPath: /opt/app/aai-schema-service/resources/etc/appprops/aaiconfig.properties
           name: aaiconfig-conf
           subPath: aaiconfig.properties
@@ -81,29 +87,34 @@ spec:
         - mountPath: /opt/app/aai-schema-service/resources/localhost-access-logback.xml
           name: localhost-access-log-conf
           subPath: localhost-access-logback.xml
-        - mountPath: /opt/app/aai-schema-service/resources/etc/auth/realm.properties
-          name: realm-conf
-          subPath: realm.properties
         - mountPath: /opt/app/aai-schema-service/resources/application.properties
           name: springapp-conf
           subPath: application.properties
+        - mountPath: /tmp
+          name: tmp-volume
         ports:
-        - containerPort: {{ .Values.service.internalPort }}
-          name: {{ .Values.service.portName }}
-        - containerPort: {{ .Values.service.internalPort2 }}
-          name: {{ .Values.service.portName2 }}
-        # disable liveness probe when breakpoints set in debugger
-        # so K8s doesn't restart unresponsive container
-        {{ if .Values.liveness.enabled }}
+        - containerPort: {{ .Values.service.appPort }}
+          name: {{ .Values.service.appPortName }}
+        {{- if .Values.debug.enabled }}
+        - containerPort: {{ .Values.service.debugPort }}
+          name: {{ .Values.service.debugPortName }}
+        {{- end }}
+        {{- if .Values.profiling.enabled }}
+        - containerPort: {{ .Values.service.profilingPort }}
+          name: {{ .Values.service.profilingPortName }}
+        {{- end }}
+        # disable liveness probe when
+        # debugging.enabled=true or profiling.enabled=true
+        {{- if and .Values.liveness.enabled (not (or .Values.debug.enabled .Values.profiling.enabled)) }}
         livenessProbe:
           tcpSocket:
-            port: {{ .Values.service.internalPort }}
+            port: {{ .Values.service.appPort }}
           initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
           periodSeconds: {{ .Values.liveness.periodSeconds }}
         {{ end }}
         readinessProbe:
           tcpSocket:
-            port: {{ .Values.service.internalPort }}
+            port: {{ .Values.service.appPort }}
           initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
           periodSeconds: {{ .Values.readiness.periodSeconds }}
         resources: {{ include "common.resources" . | nindent 10 }}
@@ -120,11 +131,15 @@ spec:
       {{ include "common.log.sidecar" . | nindent 6 }}
       serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
       volumes:
-      - name: aai-common-aai-auth-mount
-        secret:
-          secretName: aai-common-aai-auth
+      - name: aai-schema-service
+        emptyDir:
+          sizeLimit: {{ .Values.volumes.aaiSizeLimit }}
+      - name: tmp-volume
+        emptyDir:
+          sizeLimit: {{ .Values.volumes.aaiSizeLimit }}
       - name: logs
-        emptyDir: {}
+        emptyDir:
+          sizeLimit: {{ .Values.volumes.logSizeLimit }}
       {{ include "common.log.volumes" (dict "dot" . "configMapNamePrefix" (tpl .Values.logConfigMapNamePrefix .)) | nindent 6 }}
       - name: log-conf
         configMap:
@@ -138,8 +153,5 @@ spec:
       - name: aaiconfig-conf
         configMap:
           name: {{ include "common.fullname" . }}-aaiconfig
-      - name: realm-conf
-        configMap:
-          name: {{ include "common.fullname" . }}-realm
       restartPolicy: {{ .Values.restartPolicy }}
       {{- include "common.imagePullSecrets" . | nindent 6 }}
index 79f01d6..de0270f 100644 (file)
@@ -19,32 +19,25 @@ kind: Service
 metadata:
   name: {{ include "common.servicename" . }}
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    app.kubernetes.io/name: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 spec:
   type: {{ .Values.service.type }}
   ports:
   {{if eq .Values.service.type "NodePort" -}}
-  - port: {{ .Values.service.internalPort }}
+  - port: {{ .Values.service.appPort }}
     nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }}
-    name: {{ .Values.service.portName }}
-    targetPort: {{ .Values.service.portName }}
-  - port: {{ .Values.service.internalPort2 }}
+    name: {{ .Values.service.appPortName }}
+    targetPort: {{ .Values.service.appPortName }}
+  - port: {{ .Values.service.debugPort }}
     nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort2 }}
-    name: {{ .Values.service.portName2 }}
-    targetPort: {{ .Values.service.portName2 }}
+    name: {{ .Values.service.debugPortName }}
+    targetPort: {{ .Values.service.debugPortName }}
   {{- else -}}
-  - port: {{ .Values.service.internalPort }}
-    name: {{ .Values.service.portName }}
-    targetPort: {{ .Values.service.portName }}
-  - port: {{ .Values.service.internalPort2 }}
-    name: {{ .Values.service.portName2 }}
-    targetPort: {{ .Values.service.portName2 }}
+  - port: {{ .Values.service.appPort }}
+    name: {{ .Values.service.appPortName }}
+    targetPort: {{ .Values.service.appPortName }}
+  - port: {{ .Values.service.debugPort }}
+    name: {{ .Values.service.debugPortName }}
+    targetPort: {{ .Values.service.debugPortName }}
   {{- end }}
-  selector:
-    app: {{ include "common.name" . }}
-    release: {{ include "common.release" . }}
+  selector: {{- include "common.matchLabels" . | nindent 4 }}
index ccda86d..4333129 100644 (file)
 # Declare variables to be passed into your templates.
 global: # global defaults
   nodePortPrefix: 302
-
+  tracing:
+    enabled: false
+    collector:
+      baseUrl: http://jaeger-collector.istio-config:9411
+    sampling:
+      probability: 1.0 # percentage of requests that are sampled (between 0-1/0%-100%)
+
+  # Specifies if basic authorization is enabled
+  auth:
+    enabled: true
+    users:
+      - username: AAI
+        password: AAI
   # Common configuration for resources traversal and graphadmin
   config:
-    # Specifies if the basic authorization is enabled
-    basic:
-      auth:
-        enabled: true
-        username: AAI
-        passwd: AAI
-
     # Schema specific properties that include supported versions of api
     schema:
       source:
@@ -41,11 +46,11 @@ global: # global defaults
       version:
       # Current version of the REST API
         api:
-          default: v28
+          default: v30
         # Specifies which version the depth parameter is configurable
         depth: v11
         # List of all the supported versions of the API
-        list: v11,v12,v13,v14,v15,v16,v17,v18,v19,v20,v21,v22,v23,v24,v25,v26,v27,v28
+        list: v11,v12,v13,v14,v15,v16,v17,v18,v19,v20,v21,v22,v23,v24,v25,v26,v27,v28,v29,v30
         # Specifies from which version related link should appear
         related:
           link: v11
@@ -60,13 +65,33 @@ global: # global defaults
           label: v12
 
 # application image
-image: onap/aai-schema-service:1.12.3
+image: onap/aai-schema-service:1.12.11
 pullPolicy: Always
 restartPolicy: Always
-flavorOverride: small
+flavor: small
 # default number of instances
 replicaCount: 1
 
+# adds jvm args for remote debugging the application
+debug:
+  enabled: false
+  args: "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
+
+# adds jvm args for remote profiling the application
+profiling:
+  enabled: false
+  args:
+    - "-Dcom.sun.management.jmxremote"
+    - "-Dcom.sun.management.jmxremote.ssl=false"
+    - "-Dcom.sun.management.jmxremote.authenticate=false"
+    - "-Dcom.sun.management.jmxremote.local.only=false"
+    - "-Dcom.sun.management.jmxremote.port=9999"
+    - "-Dcom.sun.management.jmxremote.rmi.port=9999"
+    - "-Djava.rmi.server.hostname=127.0.0.1"
+
+# number of ReplicaSets that should be retained for the Deployment
+revisionHistoryLimit: 1
+
 updateStrategy:
   type: RollingUpdate
   maxUnavailable: 0
@@ -78,11 +103,9 @@ affinity: {}
 
 # probe configuration parameters
 liveness:
+  enabled: true
   initialDelaySeconds: 60
   periodSeconds: 60
-  # necessary to disable liveness probe when setting breakpoints
-  # in debugger so K8s doesn't restart unresponsive container
-  enabled: false
 
 readiness:
   initialDelaySeconds: 60
@@ -90,10 +113,12 @@ readiness:
 
 service:
   type: ClusterIP
-  portName: http
-  internalPort: 8452
-  portName2: tcp-5005
-  internalPort2: 5005
+  appPortName: http
+  appPort: 8452
+  debugPortName: tcp-5005
+  debugPort: 5005
+  profilingPortName: jmx-9999
+  profilingPort: 9999
 
 ingress:
   enabled: false
@@ -153,4 +178,18 @@ securityContext:
 #Log configuration
 log:
   path: /var/log/onap
+  level:
+    root: INFO
+    base: INFO # base package (org.onap.aai)
 logConfigMapNamePrefix: '{{ include "common.fullname" . }}'
+
+volumes:
+  logSizeLimit: 50Mi
+  aaiSizeLimit: 150Mi
+
+podAnnotations:
+  checksum/config: '{{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}'
+
+tracing: {}
+  # ignorePatterns:
+  #   - ""
index daebc7d..f0c1319 100644 (file)
@@ -1,21 +1,21 @@
-# Patterns to ignore when building packages.\r
-# This supports shell glob matching, relative path matching, and\r
-# negation (prefixed with !). Only one pattern per line.\r
-.DS_Store\r
-# Common VCS dirs\r
-.git/\r
-.gitignore\r
-.bzr/\r
-.bzrignore\r
-.hg/\r
-.hgignore\r
-.svn/\r
-# Common backup files\r
-*.swp\r
-*.bak\r
-*.tmp\r
-*~\r
-# Various IDEs\r
-.project\r
-.idea/\r
-*.tmproj\r
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*~
+# Various IDEs
+.project
+.idea/
+*.tmproj
index a057002..b63a2dc 100644 (file)
@@ -17,7 +17,7 @@
 apiVersion: v2
 description: ONAP AAI sparky-be
 name: aai-sparky-be
-version: 13.0.0
+version: 16.0.0
 
 dependencies:
   - name: common
@@ -29,3 +29,6 @@ dependencies:
   - name: serviceAccount
     version: ~13.x-0
     repository: '@local'
+  - name: readinessCheck
+    version: ~13.x-0
+    repository: '@local'
index 178adb8..79f48da 100644 (file)
@@ -1,6 +1,6 @@
 {{/*
 # Copyright © 2018 Amdocs, Bell Canada, AT&T
-# Modifications Copyright © 2023 Nordix Foundation
+# Modifications Copyright Â© 2023 Nordix Foundation
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
index e9ed63e..e0cf24c 100644 (file)
@@ -1,6 +1,6 @@
 {{/*
 # Copyright © 2018 Amdocs, Bell Canada, AT&T
-# Modifications Copyright © 2023 Nordix Foundation
+# Modifications Copyright Â© 2023 Nordix Foundation
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -19,4 +19,3 @@ resources.hostname=aai
 
 resources.port=80
 resources.authType=HTTP_NOAUTH
-
index c6e1baa..68e1141 100644 (file)
@@ -1,5 +1,5 @@
 # Copyright © 2018 Amdocs, Bell Canada, AT&T
-# Modifications Copyright © 2023 Nordix Foundation
+# Modifications Copyright Â© 2023 Nordix Foundation
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -16,4 +16,3 @@
 server.port=8000
 security.require-ssl=false
 server.ssl.enabled=false
-
index b5ad6b3..41c41d2 100644 (file)
@@ -1,5 +1,5 @@
 # Copyright © 2018 Amdocs, Bell Canada, AT&T
-# Modifications Copyright © 2023 Nordix Foundation
+# Modifications Copyright Â© 2023 Nordix Foundation
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -30,3 +30,55 @@ searchservice.hostname={{.Values.global.searchData.serviceName}}
 searchservice.port=9509
 
 schema.ingest.file=${CONFIG_HOME}/schemaIngest.properties
+
+# Properties for the SchemaLocationsBean
+# Files named aai_oxm_v*.xml are unpacked here:
+# Schema Version Related Attributes
+schema.uri.base.path=/aai
+# Lists all of the versions in the schema
+schema.version.list=v9,v10,v11,v12,v13,v14
+# Specifies from which version should the depth parameter to default to zero
+schema.version.depth.start=v10
+# Specifies from which version should the related link be displayed in response payload
+schema.version.related.link.start=v10
+# Specifies from which version should the client see only the uri excluding host info
+# Before this version server base will also be included
+schema.version.app.root.start=v11
+# Specifies from which version should the namespace be changed
+schema.version.namespace.change.start=v12
+# Specifies from which version should the client start seeing the edge label in payload
+schema.version.edge.label.start=v12
+# Specifies the version that the application should default to
+schema.version.api.default=v14
+# Schema Location Related Attributes
+schema.configuration.location=NA
+# New propterties required by the aai-common - aai-schema-ingest lib as of 1.3.0
+schema.configuration.location=N/A
+schema.nodes.location=${APP_HOME}/onap/oxm
+schema.edges.location=
+# Setting this values to ${oxm.apiVersion} only to ensure the value used exists (we don't use this properties in our application)
+# schema.version.depth.start=${oxm.apiVersion}
+# schema.version.related.link.start=${oxm.apiVersion}
+# schema.version.app.root.start=${oxm.apiVersion}
+# schema.version.namespace.change.start=${oxm.apiVersion}
+# schema.version.edge.label.start=${oxm.apiVersion}
+# Properties required by AAI Schema Service MS
+schema.translator.list=config
+schema.service.base.url=${oxm.schemaServiceBaseUrl}
+schema.service.nodes.endpoint=nodes?version=
+schema.service.edges.endpoint=edgerules?version=
+schema.service.versions.endpoint=versions
+schema.local=true
+schema.filename=mockrequests
+#Default rest client is the two-way-ssl
+#schema.service.client=two-way-ssl
+#Replace the below with the A&AI client key store
+schema.service.ssl.key-store=${oxm.schemaServiceKeystore}
+#Replace the below with the A&AI tomcat trust store
+schema.service.ssl.trust-store=${oxm.schemaServiceTruststore}
+schema.service.ssl.key-store-password=${oxm.schemaServiceKeystorePassword}
+schema.service.ssl.trust-store-password=${oxm.schemaServiceTruststorePassword}
+spring.application.name=sparky
+nodeDir=src/main/resources/schema/onap/oxm/
+edgeDir=src/main/resources/schema/onap/oxm
+schemaIngestPropLoc=src/main/resources/schema/onap/oxm
index cd5338f..5ceae5c 100644 (file)
 <configuration scan="true" scanPeriod="3 seconds" debug="false">
-    <!--{{/*
-    # Copyright © 2018 AT&T
-    # Copyright © 2021 Orange
-    #
-    # 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.
-    */}}-->
-  <!--<jmxConfigurator /> -->
-  <!-- directory path for all other type logs -->
-
-  <property name="logDir" value="/var/log/onap" />
-
-  <!-- <ECOMP-component-name>::= "MSO" | "DCAE" | "ASDC " | "AAI" |"Policy"
-          | "SDNC" | "AC" -->
-  <property name="componentName" value="AAI-UI"></property>
-
-  <!-- default eelf log file names -->
-  <property name="generalLogName" value="error" />
-  <property name="metricsLogName" value="metrics" />
-  <property name="auditLogName" value="audit" />
-  <property name="debugLogName" value="debug" />
-
-  <property name="errorLogPattern" value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%mdc{RequestId}|%thread|AAIUI|%mdc{PartnerName}|%logger|%.-5level|%msg%n" />
-  <property name="auditMetricPattern" value="%m%n" />
-
-  <property name="logDirectory" value="${logDir}/${componentName}" />
-
-
-  <!-- Example evaluator filter applied against console appender -->
-  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-    <encoder>
-      <pattern>${errorLogPattern}</pattern>
-    </encoder>
-  </appender>
-
-  <!-- ============================================================================ -->
-  <!-- EELF Appenders -->
-  <!-- ============================================================================ -->
-
-  <!-- The EELFAppender is used to record events to the general application
-          log -->
-
-  <appender name="EELF" class="ch.qos.logback.core.rolling.RollingFileAppender">
-    <file>${logDirectory}/${generalLogName}.log</file>
-    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-      <fileNamePattern>${logDirectory}/${generalLogName}.%d{yyyy-MM-dd}.log.zip
+<!--{{/*
+  # Copyright © 2018 AT&T
+  # Copyright © 2021 Orange
+  #
+  # 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.
+  */}}-->
+<!--<jmxConfigurator /> -->
+<!-- directory path for all other type logs -->
+
+<property name="logDir" value="/var/log/onap" />
+
+<!-- <ECOMP-component-name>::= "MSO" | "DCAE" | "ASDC " | "AAI" |"Policy"
+        | "SDNC" | "AC" -->
+<property name="componentName" value="AAI-UI"></property>
+
+<!-- default eelf log file names -->
+<property name="generalLogName" value="error" />
+<property name="metricsLogName" value="metrics" />
+<property name="auditLogName" value="audit" />
+<property name="debugLogName" value="debug" />
+
+<property name="errorLogPattern" value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%mdc{RequestId}|%thread|AAIUI|%mdc{PartnerName}|%logger|%.-5level|%msg%n" />
+<property name="auditMetricPattern" value="%m%n" />
+
+<property name="logDirectory" value="${logDir}/${componentName}" />
+
+
+<!-- Example evaluator filter applied against console appender -->
+<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+  <encoder>
+    <pattern>${errorLogPattern}</pattern>
+  </encoder>
+</appender>
+
+<!-- ============================================================================ -->
+<!-- EELF Appenders -->
+<!-- ============================================================================ -->
+
+<!-- The EELFAppender is used to record events to the general application
+        log -->
+
+<appender name="EELF" class="ch.qos.logback.core.rolling.RollingFileAppender">
+  <file>${logDirectory}/${generalLogName}.log</file>
+  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+    <fileNamePattern>${logDirectory}/${generalLogName}.%d{yyyy-MM-dd}.log.zip
 </fileNamePattern>
-      <maxHistory>60</maxHistory>
-    </rollingPolicy>
-    <encoder>
-      <pattern>${errorLogPattern}</pattern>
-    </encoder>
-  </appender>
-  <appender name="asyncEELF" class="ch.qos.logback.classic.AsyncAppender">
-    <!-- deny all events with a level below INFO, that is TRACE and DEBUG -->
-    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
-      <level>INFO</level>
-    </filter>
-    <queueSize>256</queueSize>
-    <appender-ref ref="EELF" />
-  </appender>
-
-
-  <!-- EELF Audit Appender. This appender is used to record audit engine related
-          logging events. The audit logger and appender are specializations of the
-          EELF application root logger and appender. This can be used to segregate
-          Policy engine events from other components, or it can be eliminated to record
-          these events as part of the application root log. -->
-
-  <appender name="EELFAudit" class="ch.qos.logback.core.rolling.RollingFileAppender">
-    <file>${logDirectory}/${auditLogName}.log</file>
-    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-      <fileNamePattern>${logDirectory}/${auditLogName}.%d{yyyy-MM-dd}.log.zip
+    <maxHistory>60</maxHistory>
+  </rollingPolicy>
+  <encoder>
+    <pattern>${errorLogPattern}</pattern>
+  </encoder>
+</appender>
+<appender name="asyncEELF" class="ch.qos.logback.classic.AsyncAppender">
+  <!-- deny all events with a level below INFO, that is TRACE and DEBUG -->
+  <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+    <level>INFO</level>
+  </filter>
+  <queueSize>256</queueSize>
+  <appender-ref ref="EELF" />
+</appender>
+
+
+<!-- EELF Audit Appender. This appender is used to record audit engine related
+        logging events. The audit logger and appender are specializations of the
+        EELF application root logger and appender. This can be used to segregate
+        Policy engine events from other components, or it can be eliminated to record
+        these events as part of the application root log. -->
+
+<appender name="EELFAudit" class="ch.qos.logback.core.rolling.RollingFileAppender">
+  <file>${logDirectory}/${auditLogName}.log</file>
+  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+    <fileNamePattern>${logDirectory}/${auditLogName}.%d{yyyy-MM-dd}.log.zip
 </fileNamePattern>
-      <maxHistory>60</maxHistory>
-    </rollingPolicy>
-    <encoder>
-      <pattern>${auditMetricPattern}</pattern>
-    </encoder>
-  </appender>
-  <appender name="asyncEELFAudit" class="ch.qos.logback.classic.AsyncAppender">
-    <queueSize>256</queueSize>
-    <appender-ref ref="EELFAudit" />
-  </appender>
-
-  <appender name="EELFMetrics" class="ch.qos.logback.core.rolling.RollingFileAppender">
-    <file>${logDirectory}/${metricsLogName}.log</file>
-    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-      <fileNamePattern>${logDirectory}/${metricsLogName}.%d{yyyy-MM-dd}.log.zip
+    <maxHistory>60</maxHistory>
+  </rollingPolicy>
+  <encoder>
+    <pattern>${auditMetricPattern}</pattern>
+  </encoder>
+</appender>
+<appender name="asyncEELFAudit" class="ch.qos.logback.classic.AsyncAppender">
+  <queueSize>256</queueSize>
+  <appender-ref ref="EELFAudit" />
+</appender>
+
+<appender name="EELFMetrics" class="ch.qos.logback.core.rolling.RollingFileAppender">
+  <file>${logDirectory}/${metricsLogName}.log</file>
+  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+    <fileNamePattern>${logDirectory}/${metricsLogName}.%d{yyyy-MM-dd}.log.zip
 </fileNamePattern>
-      <maxHistory>60</maxHistory>
-    </rollingPolicy>
-    <encoder>
-      <!-- <pattern>"%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - %msg%n"</pattern> -->
-      <pattern>${auditMetricPattern}</pattern>
-    </encoder>
-  </appender>
-
-
-  <appender name="asyncEELFMetrics" class="ch.qos.logback.classic.AsyncAppender">
-    <queueSize>256</queueSize>
-    <appender-ref ref="EELFMetrics" />
-  </appender>
-
-  <appender name="EELFDebug" class="ch.qos.logback.core.rolling.RollingFileAppender">
-    <file>${logDirectory}/${debugLogName}.log</file>
-    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-      <fileNamePattern>${logDirectory}/${debugLogName}.%d{yyyy-MM-dd}.log.zip
+    <maxHistory>60</maxHistory>
+  </rollingPolicy>
+  <encoder>
+    <!-- <pattern>"%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - %msg%n"</pattern> -->
+    <pattern>${auditMetricPattern}</pattern>
+  </encoder>
+</appender>
+
+
+<appender name="asyncEELFMetrics" class="ch.qos.logback.classic.AsyncAppender">
+  <queueSize>256</queueSize>
+  <appender-ref ref="EELFMetrics" />
+</appender>
+
+<appender name="EELFDebug" class="ch.qos.logback.core.rolling.RollingFileAppender">
+  <file>${logDirectory}/${debugLogName}.log</file>
+  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+    <fileNamePattern>${logDirectory}/${debugLogName}.%d{yyyy-MM-dd}.log.zip
 </fileNamePattern>
-      <maxHistory>60</maxHistory>
-    </rollingPolicy>
-    <encoder>
-      <pattern>${errorLogPattern}</pattern>
-    </encoder>
-  </appender>
-
-  <appender name="asyncEELFDebug" class="ch.qos.logback.classic.AsyncAppender">
-    <queueSize>256</queueSize>
-    <appender-ref ref="EELFDebug" />
-    <includeCallerData>false</includeCallerData>
-  </appender>
-
-  <!-- ============================================================================ -->
-  <!-- EELF loggers -->
-  <!-- ============================================================================ -->
-  <logger name="com.att.eelf" level="info" additivity="false">
-    <appender-ref ref="asyncEELF" />
-    <appender-ref ref="asyncEELFDebug" />
-    <appender-ref ref="STDOUT" />
-  </logger>
-
-  <logger name="com.att.eelf.audit" level="info" additivity="false">
-    <appender-ref ref="asyncEELFAudit" />
-  </logger>
-  <logger name="com.att.eelf.metrics" level="info" additivity="false">
-    <appender-ref ref="asyncEELFMetrics" />
-  </logger>
-
-  <!-- Spring related loggers -->
-  <logger name="org.springframework" level="WARN" />
-  <logger name="org.springframework.beans" level="WARN" />
-  <logger name="org.springframework.web" level="WARN" />
-  <logger name="com.blog.spring.jms" level="WARN" />
-
-  <!-- Sparky loggers -->
-  <logger name="org.onap" level="INFO">
-    <appender-ref ref="STDOUT" />
-  </logger>
-
-  <!-- Other Loggers that may help troubleshoot -->
-  <logger name="net.sf" level="WARN" />
-  <logger name="org.apache.commons.httpclient" level="WARN" />
-  <logger name="org.apache.commons" level="WARN" />
-  <logger name="org.apache.coyote" level="WARN" />
-  <logger name="org.apache.jasper" level="WARN" />
-
-  <!-- Camel Related Loggers (including restlet/servlet/jaxrs/cxf logging.
-          May aid in troubleshooting) -->
-  <logger name="org.apache.camel" level="WARN" />
-  <logger name="org.apache.cxf" level="WARN" />
-  <logger name="org.apache.camel.processor.interceptor" level="WARN" />
-  <logger name="org.apache.cxf.jaxrs.interceptor" level="WARN" />
-  <logger name="org.apache.cxf.service" level="WARN" />
-  <logger name="org.restlet" level="WARN" />
-  <logger name="org.apache.camel.component.restlet" level="WARN" />
-
-  <!-- logback internals logging -->
-  <logger name="ch.qos.logback.classic" level="WARN" />
-  <logger name="ch.qos.logback.core" level="WARN" />
-
-  <root>
-    <appender-ref ref="asyncEELF" />
-    <appender-ref ref="STDOUT" />
-    <!-- <appender-ref ref="asyncEELFDebug" /> -->
-  </root>
-
-</configuration>
\ No newline at end of file
+    <maxHistory>60</maxHistory>
+  </rollingPolicy>
+  <encoder>
+    <pattern>${errorLogPattern}</pattern>
+  </encoder>
+</appender>
+
+<appender name="asyncEELFDebug" class="ch.qos.logback.classic.AsyncAppender">
+  <queueSize>256</queueSize>
+  <appender-ref ref="EELFDebug" />
+  <includeCallerData>false</includeCallerData>
+</appender>
+
+<!-- ============================================================================ -->
+<!-- EELF loggers -->
+<!-- ============================================================================ -->
+<logger name="com.att.eelf" level="info" additivity="false">
+  <appender-ref ref="asyncEELF" />
+  <appender-ref ref="asyncEELFDebug" />
+  <appender-ref ref="STDOUT" />
+</logger>
+
+<logger name="com.att.eelf.audit" level="info" additivity="false">
+  <appender-ref ref="asyncEELFAudit" />
+</logger>
+<logger name="com.att.eelf.metrics" level="info" additivity="false">
+  <appender-ref ref="asyncEELFMetrics" />
+</logger>
+
+<!-- Spring related loggers -->
+<logger name="org.springframework" level="WARN" />
+<logger name="org.springframework.beans" level="WARN" />
+<logger name="org.springframework.web" level="WARN" />
+<logger name="com.blog.spring.jms" level="WARN" />
+
+<!-- Sparky loggers -->
+<logger name="org.onap" level="INFO">
+  <appender-ref ref="STDOUT" />
+</logger>
+
+<!-- Other Loggers that may help troubleshoot -->
+<logger name="net.sf" level="WARN" />
+<logger name="org.apache.commons.httpclient" level="WARN" />
+<logger name="org.apache.commons" level="WARN" />
+<logger name="org.apache.coyote" level="WARN" />
+<logger name="org.apache.jasper" level="WARN" />
+
+<!-- Camel Related Loggers (including restlet/servlet/jaxrs/cxf logging.
+        May aid in troubleshooting) -->
+<logger name="org.apache.camel" level="WARN" />
+<logger name="org.apache.cxf" level="WARN" />
+<logger name="org.apache.camel.processor.interceptor" level="WARN" />
+<logger name="org.apache.cxf.jaxrs.interceptor" level="WARN" />
+<logger name="org.apache.cxf.service" level="WARN" />
+<logger name="org.restlet" level="WARN" />
+<logger name="org.apache.camel.component.restlet" level="WARN" />
+
+<!-- logback internals logging -->
+<logger name="ch.qos.logback.classic" level="WARN" />
+<logger name="ch.qos.logback.core" level="WARN" />
+
+<root>
+  <appender-ref ref="asyncEELF" />
+  <appender-ref ref="STDOUT" />
+  <!-- <appender-ref ref="asyncEELFDebug" /> -->
+</root>
+
+</configuration>
index ce69e88..093e7b0 100644 (file)
@@ -1,20 +1,20 @@
-[{\r
-    "orgId": null,\r
-    "managerId": null,\r
-    "firstName": "Demo",\r
-    "middleInitial": null,\r
-    "lastName": "User",\r
-    "phone": null,\r
-    "email": "demo@email.com",\r
-    "hrid": null,\r
-    "orgUserId": "demo",\r
-    "orgCode": null,\r
-    "orgManagerUserId": null,\r
-    "jobTitle": null,\r
-    "loginId": "demo",\r
-    "active": false,\r
-    "roles": [{\r
-        "id": 1,\r
-        "name": "View"\r
-    }]\r
-}]
\ No newline at end of file
+[{
+    "orgId": null,
+    "managerId": null,
+    "firstName": "Demo",
+    "middleInitial": null,
+    "lastName": "User",
+    "phone": null,
+    "email": "demo@email.com",
+    "hrid": null,
+    "orgUserId": "demo",
+    "orgCode": null,
+    "orgManagerUserId": null,
+    "jobTitle": null,
+    "loginId": "demo",
+    "active": false,
+    "roles": [{
+        "id": 1,
+        "name": "View"
+    }]
+}]
index 7c958fa..407850e 100644 (file)
 ---
 apiVersion: v1
 kind: ConfigMap
-metadata:
-  name: {{ include "common.fullname" . }}
-  namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+metadata: {{- include "common.resourceMetadata" . | nindent 2 }}
 data:
 {{ tpl (.Files.Glob "resources/config/application/*").AsConfig . | indent 2 }}
index f8813cd..517601b 100644 (file)
@@ -1,7 +1,7 @@
 {{/*
-# Copyright (c) 2017 Amdocs, Bell Canada
-# Modifications Copyright (c) 2018 AT&T
-# Modifications Copyright (c) 2020 Nokia
+# Copyright © 2017 Amdocs, Bell Canada
+# Modifications Copyright © 2018 AT&T
+# Modifications Copyright © 2020 Nokia
 # Modifications Copyright © 2023 Nordix Foundation
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 
 apiVersion: apps/v1
 kind: Deployment
-metadata: {{- include "common.resourceMetadata" . | nindent 2 }}
+metadata: {{- include "common.resourceMetadata" (dict "annotations" .Values.annotations "dot" .) | nindent 2 }}
 spec:
   selector: {{- include "common.selectors" . | nindent 4 }}
+  {{- if .Values.debug.enabled }}
+  replicas: 1
+  {{- else }}
   replicas: {{ .Values.replicaCount }}
+  {{- end }}
+  revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
   strategy:
     type: {{ .Values.updateStrategy.type }}
     {{- if (eq "RollingUpdate" .Values.updateStrategy.type) }}
@@ -33,39 +38,14 @@ spec:
   template:
     metadata: {{- include "common.templateMetadata" . | nindent 6 }}
     spec:
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
       initContainers:
-      - command:
-        - /app/ready.py
-        args:
-        - --service-name
-        - aai
-        env:
-        - name: NAMESPACE
-          valueFrom:
-            fieldRef:
-              apiVersion: v1
-              fieldPath: metadata.namespace
-        image: {{ include "repositoryGenerator.image.readiness" . }}
-        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-        name: {{ include "common.name" . }}-readiness
-        resources:
-          limits:
-            cpu: "100m"
-            memory: "500Mi"
-          requests:
-            cpu: "3m"
-            memory: "20Mi"
+      {{ include "common.readinessCheck.waitFor" . | nindent 8 }}
       containers:
       - name: {{ include "common.name" . }}
         image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-        command:
-        - sh
-        args:
-        - -c
-        - |
-          echo "*** actual launch of AAI Sparky BE"
-          /opt/app/sparky/bin/start.sh
+        {{ include "common.containerSecurityContext" . | indent 8 | trim }}
         volumeMounts:
         - mountPath: {{ .Values.log.path }}
           name: logs
@@ -96,21 +76,52 @@ spec:
         - mountPath:  /opt/app/sparky/config/logging/logback.xml
           name: config
           subPath: logback.xml
-        ports: {{ include "common.containerPorts" . | nindent 10  }}
-        # disable liveness probe when breakpoints set in debugger
-        # so K8s doesn't restart unresponsive container
-        {{- if eq .Values.liveness.enabled true }}
+        - mountPath: /tmp
+          name: tmp-volume
+        ports:
+          {{- if .Values.debug.enabled }}
+          - containerPort: {{ .Values.debug.port }}
+            name: {{ .Values.debug.portName }}
+          {{- end }}
+          {{- if .Values.profiling.enabled }}
+          - containerPort: {{ .Values.profiling.port }}
+            name: {{ .Values.profiling.portName }}
+          {{- end }}
+          {{ include "common.containerPorts" . | nindent 10  }}
+        env:
+        {{- if .Values.config.env }}
+        {{- range $key,$value := .Values.config.env }}
+        - name: {{ $key | upper | quote}}
+          value: {{ $value | quote}}
+        {{- end }}
+        {{- end }}
+        {{- if .Values.profiling.enabled }}
+        - name: PRE_JVM_ARGS
+          value: '{{ join " " .Values.profiling.args }}'
+        {{- end }}
+        {{- if .Values.debug.enabled }}
+        - name: JVM_ARGS
+          value: {{ .Values.debug.args | quote }}
+        {{- end }}
+        # disable liveness probe when
+        # debugging.enabled=true or profiling.enabled=true
+        {{- if and .Values.liveness.enabled (not (or .Values.debug.enabled .Values.profiling.enabled)) }}
         livenessProbe:
           tcpSocket:
             port: {{ .Values.service.internalPort }}
           initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
           periodSeconds: {{ .Values.liveness.periodSeconds }}
-        {{ end -}}
+        {{- end }}
         readinessProbe:
           tcpSocket:
             port: {{ .Values.service.internalPort }}
           initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
           periodSeconds: {{ .Values.readiness.periodSeconds }}
+        startupProbe:
+          tcpSocket:
+            port: {{ .Values.service.internalPort }}
+          failureThreshold: {{ .Values.startup.failureThreshold }}
+          periodSeconds: {{ .Values.startup.periodSeconds }}
         resources: {{ include "common.resources" . | nindent 10 }}
       {{- if .Values.nodeSelector }}
       nodeSelector:
@@ -129,9 +140,14 @@ spec:
         configMap:
           name: {{ include "common.fullname" . }}
       - name: logs
-        emptyDir: {}
+        emptyDir:
+          sizeLimit: {{ .Values.volumes.logSizeLimit }}
         {{ include "common.log.volumes" (dict "dot" . "configMapNamePrefix" (tpl .Values.logConfigMapNamePrefix .)) | nindent 6 }}
       - name: modeldir
-        emptyDir: {}
+        emptyDir:
+          sizeLimit: {{ .Values.volumes.modeldirSizeLimit }}
+      - name: tmp-volume
+        emptyDir:
+          sizeLimit: {{ .Values.volumes.tmpSizeLimit }}
       restartPolicy: {{ .Values.global.restartPolicy | default .Values.restartPolicy }}
       {{- include "common.imagePullSecrets" . | nindent 6 }}
index 0a9de51..16fbf7f 100644 (file)
@@ -1,5 +1,5 @@
-# Copyright (c) 2018 Amdocs, Bell Canada, AT&T
-# Modifications Copyright (c) 2020 Nokia, Orange
+# Copyright © 2018 Amdocs, Bell Canada, AT&T
+# Modifications Copyright © 2020 Nokia, Orange
 # Modifications Copyright © 2023 Nordix Foundation
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
@@ -29,13 +29,12 @@ global: # global defaults
     serviceName: aai-search-data
 
 # application image
-image: onap/sparky-be:2.0.3
+image: onap/sparky-be:2.1.0
 pullPolicy: Always
 restartPolicy: Always
 flavor: small
-flavorOverride: small
 dockerhubRepository: registry.hub.docker.com
-ubuntuInitImage: oomk8s/ubuntu-init:2.0.0
+
 # application configuration
 config:
   elasticsearchHttpPort: 9200
@@ -46,6 +45,8 @@ config:
   portalCookieName: UserId
   portalAppRoles: ui_view
   cookieDecryptorClass: org.onap.aai.sparky.security.BaseCookieDecryptor
+  env:
+    JVM_ARGS: -XX:MaxRAMPercentage=50.0
 
 # ONAP Cookie Processing - During initial development, the following flag, if true, will
 # prevent the portal interface's login processing from searching for a user
@@ -53,9 +54,33 @@ config:
   portalOnapEnabled: true
 #
 
+# adds jvm args for remote debugging the application
+debug:
+  enabled: false
+  args: "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
+  port: 5555
+  portName: debug
+
+# adds jvm args for remote profiling the application
+profiling:
+  enabled: false
+  args:
+    - "-Dcom.sun.management.jmxremote"
+    - "-Dcom.sun.management.jmxremote.ssl=false"
+    - "-Dcom.sun.management.jmxremote.authenticate=false"
+    - "-Dcom.sun.management.jmxremote.local.only=false"
+    - "-Dcom.sun.management.jmxremote.port=9999"
+    - "-Dcom.sun.management.jmxremote.rmi.port=9999"
+    - "-Djava.rmi.server.hostname=127.0.0.1"
+  port: 9999
+  portName: jmx
+
 # default number of instances
 replicaCount: 1
 
+# number of ReplicaSets that should be retained for the Deployment
+revisionHistoryLimit: 1
+
 updateStrategy:
   type: RollingUpdate
   maxUnavailable: 0
@@ -77,6 +102,10 @@ readiness:
   initialDelaySeconds: 10
   periodSeconds: 10
 
+startup:
+  failureThreshold: 90
+  periodSeconds: 1
+
 service:
   type: NodePort
   internalPort: 9517
@@ -103,23 +132,24 @@ serviceMesh:
 
 podAnnotations:
   sidecar.istio.io/rewriteAppHTTPProbers: "false"
+  checksum/config: '{{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}'
 
 # Configure resource requests and limits
 # ref: http://kubernetes.io/docs/user-guide/compute-resources/
 resources:
   small:
     limits:
-      cpu: "0.5"
-      memory: "4Gi"
+      cpu: "500m"
+      memory: "2Gi"
     requests:
-      cpu: "0.25"
+      cpu: "250m"
       memory: "1Gi"
   large:
     limits:
       cpu: "1"
-      memory: "8Gi"
+      memory: "4Gi"
     requests:
-      cpu: "0.5"
+      cpu: "500m"
       memory: "2Gi"
   unlimited: {}
 
@@ -133,3 +163,17 @@ serviceAccount:
 log:
   path: /var/log/onap
 logConfigMapNamePrefix: '{{ include "common.fullname" . }}'
+
+volumes:
+  logSizeLimit: 64Mi
+  modeldirSizeLimit: 64Mi
+  tmpSizeLimit: 64Mi
+
+securityContext:
+  user_id: 1000
+  group_id: 1000
+
+readinessCheck:
+  wait_for:
+    services:
+      - aai
index daebc7d..f0c1319 100644 (file)
@@ -1,21 +1,21 @@
-# Patterns to ignore when building packages.\r
-# This supports shell glob matching, relative path matching, and\r
-# negation (prefixed with !). Only one pattern per line.\r
-.DS_Store\r
-# Common VCS dirs\r
-.git/\r
-.gitignore\r
-.bzr/\r
-.bzrignore\r
-.hg/\r
-.hgignore\r
-.svn/\r
-# Common backup files\r
-*.swp\r
-*.bak\r
-*.tmp\r
-*~\r
-# Various IDEs\r
-.project\r
-.idea/\r
-*.tmproj\r
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*~
+# Various IDEs
+.project
+.idea/
+*.tmproj
index 8c77848..e1602b9 100644 (file)
@@ -17,7 +17,7 @@
 apiVersion: v2
 description: ONAP AAI traversal
 name: aai-traversal
-version: 13.0.0
+version: 16.0.0
 
 dependencies:
   - name: common
@@ -29,3 +29,6 @@ dependencies:
   - name: serviceAccount
     version: ~13.x-0
     repository: '@local'
+  - name: readinessCheck
+    version: ~13.x-0
+    repository: '@local'
index 559166b..92eb347 100644 (file)
@@ -5,7 +5,7 @@
 # ================================================================================
 # Copyright © 2017 AT&T Intellectual Property. All rights reserved.
 # Modifications Copyright © 2020 Orange
-# Modifications Copyright © 2023 Nordix Foundation
+# Modifications Copyright Â© 2023 Nordix Foundation
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -32,10 +32,10 @@ aai.server.url.base=http://aai.{{ include "common.namespace" . }}/aai/
 aai.server.url=http://aai.{{ include "common.namespace" . }}/aai/{{ .Values.global.config.schema.version.api.default }}/
 aai.global.callback.url=http://aai.{{ include "common.namespace" . }}/aai/
 
-{{ if or (.Values.global.config.basic.auth.enabled) ( include "common.onServiceMesh" .) }}
+{{ if or (.Values.global.auth.enabled) ( include "common.onServiceMesh" .) }}
 aai.tools.enableBasicAuth=true
-aai.tools.username={{ .Values.global.config.basic.auth.username }}
-aai.tools.password={{ .Values.global.config.basic.auth.passwd }}
+aai.tools.username={{ (index .Values.global.auth.users 0).username }}
+aai.tools.password={{ (index .Values.global.auth.users 0).password }}
 {{ end }}
 
 aai.notification.current.version={{ .Values.global.config.schema.version.api.default }}
diff --git a/kubernetes/aai/components/aai-traversal/resources/config/application-keycloak.properties b/kubernetes/aai/components/aai-traversal/resources/config/application-keycloak.properties
deleted file mode 100644 (file)
index dd1956b..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-spring.autoconfigure.exclude=\
-  org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,\
-  org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration
-
-multi.tenancy.enabled={{ .Values.config.keycloak.multiTenancy.enabled }}
-keycloak.auth-server-url=http://{{ .Values.config.keycloak.host }}:{{ .Values.config.keycloak.port }}/auth
-keycloak.realm={{ .Values.config.keycloak.realm }}
-keycloak.resource={{ .Values.config.keycloak.resource }}
-keycloak.public-client=false
-keycloak.principal-attribute=preferred_username
-
-keycloak.ssl-required=external
-keycloak.bearer-only=true
index 276dbfe..b3e869d 100644 (file)
@@ -1,7 +1,7 @@
 {{/*
 # Copyright © 2018 Amdocs, Bell Canada, AT&T
 # Modifications Copyright © 2020 Orange
-# Modifications Copyright  2023 Nordix Foundation
+# Modifications Copyright © 2023 Nordix Foundation
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -26,11 +26,17 @@ spring.application.name=aai-traversal
 spring.jersey.type=filter
 
 spring.main.allow-bean-definition-overriding=true
-server.servlet.context-path=/
+server.servlet.context-path=${schema.uri.base.path}
 
-spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration,org.keycloak.adapters.springboot.KeycloakAutoConfiguration,org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration,org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration
+spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration,org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration,org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration
 spring.profiles.active={{ .Values.global.config.profiles.active }}
-spring.jersey.application-path=${schema.uri.base.path}
+spring.jersey.application-path=/
+
+management.tracing.enabled={{ .Values.global.tracing.enabled }}
+management.tracing.sampling.probability={{ .Values.global.tracing.sampling.probability }}
+management.tracing.propagation.type=w3c, b3
+management.zipkin.tracing.endpoint={{ .Values.global.tracing.collector.baseUrl }}
+
 #The max number of active threads in this pool
 server.tomcat.max-threads=200
 #The minimum number of threads always kept alive
@@ -41,16 +47,16 @@ server.tomcat.max-idle-time=60000
 # If you get an application startup failure that the port is already taken
 # If thats not it, please check if the key-store file path makes sense
 server.local.startpath=aai-traversal/src/main/resources/
-server.basic.auth.location=${server.local.startpath}etc/auth/realm.properties
 
 server.port=8446
-security.require-ssl=false
-server.ssl.enabled=false
 
-# JMS bind address host port
-jms.bind.address=tcp://localhost:61647
-dmaap.ribbon.listOfServers=message-router.{{ include "common.namespace" . }}:3904
-dmaap.ribbon.transportType=http
+spring.kafka.producer.bootstrap-servers=${BOOTSTRAP_SERVERS}
+spring.kafka.producer.properties.security.protocol=SASL_PLAINTEXT
+spring.kafka.producer.properties.sasl.mechanism=SCRAM-SHA-512
+spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
+spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer
+spring.kafka.producer.properties.sasl.jaas.config=${JAAS_CONFIG}
+spring.kafka.producer.retries=3
 
 # Schema related attributes for the oxm and edges
 # Any additional schema related attributes should start with prefix schema
@@ -94,7 +100,8 @@ schema.service.client=no-auth
 #to expose the Prometheus scraping endpoint
 management.server.port=8448
 management.endpoints.enabled-by-default=true
-management.endpoints.web.exposure.include=info,health,prometheus
+management.endpoints.web.exposure.include=*
+management.security.enabled=false
 endpoints.enabled={{ .Values.endpoints.enabled }}
 endpoints.info.enabled={{ .Values.endpoints.info.enabled }}
 endpoints.prometheus.enabled={{ .Values.metrics.serviceMonitor.enabled }}
@@ -105,4 +112,17 @@ management.metrics.distribution.sla[http.server.requests]=20ms, 30ms, 40ms, 50ms
 #Add common tag for grouping all aai related metrics
 management.metrics.tags.group_id=aai
 #It is not advisable to use labels to store dimensions with high cardinality. Enable this option only for debug purposes. For more information: https://github.com/micrometer-metrics/micrometer/issues/1584
-scrape.uri.metrics=false
\ No newline at end of file
+scrape.uri.metrics=false
+
+# If true, the actuator health check will be overriden
+# to use the AaiGraphChecker check instead.
+# This does the same as the /echo endpoint,
+# but doesn't show up in micrometer metrics
+aai.actuator.echo.enabled={{ .Values.actuator.echo.enabled }}
+aai.graph.properties.path=${server.local.startpath}/etc/appprops/janusgraph-realtime.properties
+
+aai.basic-auth.enabled={{ .Values.global.auth.enabled }}
+{{- range $index, $user := .Values.global.auth.users }}
+aai.basic-auth.users[{{ $index }}].username={{ $user.username }}
+aai.basic-auth.users[{{ $index }}].password={{ $user.password }}
+{{- end }}
diff --git a/kubernetes/aai/components/aai-traversal/resources/config/janusgraph-cached.properties b/kubernetes/aai/components/aai-traversal/resources/config/janusgraph-cached.properties
deleted file mode 100644 (file)
index b6fdd4c..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-{{/*
-#
-# ============LICENSE_START=======================================================
-# org.onap.aai
-# ================================================================================
-# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
-# ================================================================================
-# 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.
-# ============LICENSE_END=========================================================
-#
-# ECOMP is a trademark and service mark of AT&T Intellectual Property.
-#
-*/}}
-
-query.fast-property=true
-query.smart-limit=false
-
-{{ if .Values.global.config.cluster.cassandra.dynamic }}
-
-storage.backend=cql
-storage.hostname={{.Values.global.cassandra.serviceName}}
-storage.cql.keyspace=aaigraph
-storage.username={{.Values.global.cassandra.username}}
-storage.password={{.Values.global.cassandra.password}}
-
-storage.cql.read-consistency-level=LOCAL_QUORUM
-storage.cql.write-consistency-level=LOCAL_QUORUM
-storage.cql.replication-factor={{.Values.global.cassandra.replicas}}
-storage.cql.only-use-local-consistency-for-system-operations=true
-
-{{ else }}
-
-{{ if .Values.global.config.storage }}
-
-storage.backend={{ .Values.global.config.storage.backend }}
-
-{{ if eq .Values.global.config.storage.backend "cassandra" }}
-
-storage.hostname={{ .Values.global.config.storage.hostname }}
-storage.cassandra.keyspace={{ .Values.global.config.storage.name }}
-
-storage.cassandra.read-consistency-level={{ .Values.global.config.storage.cassandra.readConsistency }}
-storage.cassandra.write-consistency-level={{ .Values.global.config.storage.cassandra.writeConsistency }}
-storage.cassandra.replication-factor={{ .Values.global.config.storage.cassandra.replicationFactor | int }}
-storage.cassandra.astyanax.cluster-name= {{ .Values.global.config.storage.clusterName }}
-storage.cassandra.astyanax.local-datacenter= {{ .Values.global.config.storage.localDataCenter }}
-
-storage.connection-timeout={{ .Values.global.config.storage.connectionTimeout | int }}
-cache.tx-cache-size={{ .Values.global.config.storage.cacheSize | int }}
-log.tx.key-consistent={{ .Values.global.config.storage.keyConsistent }}
-
-{{ else if eq .Values.global.config.storage.backend "cql" }}
-
-storage.hostname={{ .Values.global.config.storage.hostname }}
-storage.cql.keyspace={{ .Values.global.config.storage.name }}
-
-storage.cql.read-consistency-level={{ .Values.global.config.storage.cql.readConsistency }}
-storage.cql.write-consistency-level={{ .Values.global.config.storage.cql.readConsistency }}
-storage.cql.replication-factor={{ .Values.global.config.storage.cql.replicationFactor | int }}
-
-storage.cql.only-use-local-consistency-for-system-operations={{ .Values.global.config.storage.cql.localConsistencyForSysOps }}
-storage.cql.cluster-name={{ .Values.global.config.storage.clusterName }}
-storage.cql.local-datacenter={{ .Values.global.config.storage.localDataCenter }}
-
-storage.connection-timeout={{ .Values.global.config.storage.connectionTimeout | int }}
-cache.tx-cache-size={{ .Values.global.config.storage.cacheSize | int }}
-log.tx.key-consistent={{ .Values.global.config.storage.keyConsistent }}
-
-{{ else if eq .Values.global.config.storage.backend "hbase" }}
-
-storage.hostname={{ .Values.global.config.storage.hostname }}
-storage.hbase.table={{ .Values.global.config.storage.name }}
-
-storage.connection-timeout={{ .Values.global.config.storage.connectionTimeout | int }}
-cache.tx-cache-size={{ .Values.global.config.storage.cacheSize | int }}
-log.tx.key-consistent={{ .Values.global.config.storage.keyConsistent }}
-
-{{ end }}
-
-{{ end }}
-
-{{ end }}
-
-storage.lock.wait-time=300
-#caching on
-cache.db-cache = true
-cache.db-cache-clean-wait = 20
-cache.db-cache-time = 180000
-cache.db-cache-size = 0.3
-
-#load graphson file on startup
-load.snapshot.file=false
index 4835560..47095ad 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 # ============LICENSE_END=========================================================
-#
-# ECOMP is a trademark and service mark of AT&T Intellectual Property.
-#
 */}}
 
 query.fast-property=true
 query.smart-limit=false
 
-{{ if .Values.global.config.cluster.cassandra.dynamic }}
+{{- if .Values.global.config.cluster.cassandra.dynamic }}
 
 storage.backend=cql
 storage.hostname={{.Values.global.cassandra.serviceName}}
-storage.cql.keyspace=aaigraph
 storage.username={{.Values.global.cassandra.username}}
 storage.password={{.Values.global.cassandra.password}}
 
+storage.cql.keyspace=aaigraph
+storage.cql.local-datacenter={{ .Values.global.cassandra.localDataCenter }}
 storage.cql.read-consistency-level=LOCAL_QUORUM
 storage.cql.write-consistency-level=LOCAL_QUORUM
 storage.cql.replication-factor={{.Values.global.cassandra.replicas}}
 storage.cql.only-use-local-consistency-for-system-operations=true
 
-{{ else }}
-
-{{ if .Values.global.config.storage }}
-
-storage.backend={{ .Values.global.config.storage.backend }}
-
-{{ if eq .Values.global.config.storage.backend "cassandra" }}
+{{- if .Values.global.cassandra.partitionerName }}
+storage.cql.partitioner-name={{ .Values.global.cassandra.partitionerName }}
+{{- end }}
 
-storage.hostname={{ .Values.global.config.storage.hostname }}
-storage.cassandra.keyspace={{ .Values.global.config.storage.name }}
+{{- else -}}
 
-storage.cassandra.read-consistency-level={{ .Values.global.config.storage.cassandra.readConsistency }}
-storage.cassandra.write-consistency-level={{ .Values.global.config.storage.cassandra.writeConsistency }}
-storage.cassandra.replication-factor={{ .Values.global.config.storage.cassandra.replicationFactor | int }}
-storage.cassandra.astyanax.cluster-name= {{ .Values.global.config.storage.clusterName }}
-storage.cassandra.astyanax.local-datacenter= {{ .Values.global.config.storage.localDataCenter }}
+{{- if .Values.global.config.storage }}
 
-storage.connection-timeout={{ .Values.global.config.storage.connectionTimeout | int }}
-cache.tx-cache-size={{ .Values.global.config.storage.cacheSize | int }}
-log.tx.key-consistent={{ .Values.global.config.storage.keyConsistent }}
+storage.backend={{ .Values.global.config.storage.backend }}
 
-{{ else if eq .Values.global.config.storage.backend "cql" }}
+{{- if eq .Values.global.config.storage.backend "cql" }}
 
 storage.hostname={{ .Values.global.config.storage.hostname }}
 storage.cql.keyspace={{ .Values.global.config.storage.name }}
+storage.cql.local-datacenter={{ .Values.global.cassandra.localDataCenter }}
 
 storage.cql.read-consistency-level={{ .Values.global.config.storage.cql.readConsistency }}
 storage.cql.write-consistency-level={{ .Values.global.config.storage.cql.readConsistency }}
@@ -68,13 +56,13 @@ storage.cql.replication-factor={{ .Values.global.config.storage.cql.replicationF
 
 storage.cql.only-use-local-consistency-for-system-operations={{ .Values.global.config.storage.cql.localConsistencyForSysOps }}
 storage.cql.cluster-name={{ .Values.global.config.storage.clusterName }}
-storage.cql.local-datacenter={{ .Values.global.config.storage.localDataCenter }}
+storage.cql.local-datacenter={{ .Values.global.cassandra.localDataCenter }}
 
 storage.connection-timeout={{ .Values.global.config.storage.connectionTimeout | int }}
 cache.tx-cache-size={{ .Values.global.config.storage.cacheSize | int }}
 log.tx.key-consistent={{ .Values.global.config.storage.keyConsistent }}
 
-{{ else if eq .Values.global.config.storage.backend "hbase" }}
+{{- else if eq .Values.global.config.storage.backend "hbase" -}}
 
 storage.hostname={{ .Values.global.config.storage.hostname }}
 storage.hbase.table={{ .Values.global.config.storage.name }}
@@ -83,11 +71,9 @@ storage.connection-timeout={{ .Values.global.config.storage.connectionTimeout |
 cache.tx-cache-size={{ .Values.global.config.storage.cacheSize | int }}
 log.tx.key-consistent={{ .Values.global.config.storage.keyConsistent }}
 
-{{ end }}
-
-{{ end }}
-
-{{ end }}
+{{- end }}
+{{- end }}
+{{- end }}
 
 storage.lock.wait-time=300
 
@@ -95,12 +81,16 @@ storage.lock.wait-time=300
 # Setting db-cache to false will ensure the fastest propagation of changes across servers
 # Setting db-cache to true will ensure fastest response times
 cache.db-cache={{ .Values.config.janusgraph.caching.enabled }}
-{{ if .Values.config.janusgraph.caching.enabled }}
+{{- if .Values.config.janusgraph.caching.enabled }}
 # cache-time in milliseconds
 cache.db-cache-time={{ .Values.config.janusgraph.caching.dbCacheTime }}
 cache.db-cache-size={{ .Values.config.janusgraph.caching.dbCacheSize }}
 cache.db-cache-clean-wait={{ .Values.config.janusgraph.caching.dbCacheCleanWait }}
-{{ end }}
+{{- end }}
 
 #load graphson file on startup
 load.snapshot.file=false
+
+{{- if .Values.config.janusgraph.allowUpgrade }}
+graph.allow-upgrade=true
+{{- end }}
diff --git a/kubernetes/aai/components/aai-traversal/resources/config/localhost-access-logback.xml b/kubernetes/aai/components/aai-traversal/resources/config/localhost-access-logback.xml
deleted file mode 100644 (file)
index 5e3a15c..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-{{/*<!--\r
-    ============LICENSE_START=======================================================\r
-    org.onap.aai\r
-    ================================================================================\r
-    Copyright © 2017 AT&T Intellectual Property. All rights reserved.\r
-    Modifications Copyright © 2018 Amdocs, Bell Canada\r
-    Modifications Copyright © 2020 Orange\r
-    ================================================================================\r
-    Licensed under the Apache License, Version 2.0 (the "License");\r
-    you may not use this file except in compliance with the License.\r
-    You may obtain a copy of the License at\r
-\r
-        http://www.apache.org/licenses/LICENSE-2.0\r
-\r
-    Unless required by applicable law or agreed to in writing, software\r
-    distributed under the License is distributed on an "AS IS" BASIS,\r
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-    See the License for the specific language governing permissions and\r
-    limitations under the License.\r
-    ============LICENSE_END=========================================================\r
--->\r
-*/}}\r
-<configuration scan="true" scanPeriod="60 seconds" debug="false">\r
-  <property name="AJSC_HOME" value="${AJSC_HOME:-.}" />\r
-  <property name="maxHistory" value='{{.Values.accessLogback.maxHistory}}' />\r
-  <property name="totalSizeCap" value='{{.Values.accessLogback.totalSizeCap}}' />\r
-  <property name="logToFileEnabled" value='{{.Values.accessLogback.logToFileEnabled}}' />\r
-  <property name="livenessAccessLogEnabled"\r
-    value='{{.Values.accessLogback.livenessAccessLogEnabled}}' />\r
-\r
-  <if condition='property("logToFileEnabled").contains("true")'>\r
-    <then>\r
-      <appender name="ACCESS" class="ch.qos.logback.core.rolling.RollingFileAppender">\r
-        <file>${AJSC_HOME}/logs/ajsc-jetty/localhost_access.log</file>\r
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">\r
-          <fileNamePattern>${AJSC_HOME}/logs/ajsc-jetty/localhost_access.log.%d{yyyy-MM-dd}\r
-          </fileNamePattern>\r
-          <maxHistory>${maxHistory}</maxHistory>\r
-          <totalSizeCap>${totalSizeCap}</totalSizeCap>\r
-        </rollingPolicy>\r
-        <encoder class="org.onap.aai.logging.CustomLogPatternLayoutEncoder">\r
-          <Pattern>%a %u %z [%t] "%m %U%q" %s %b %y %i{X-TransactionId} %i{X-FromAppId}\r
-            %i{X-Forwarded-For} %i{X-AAI-SSL-Client-CN} %i{X-AAI-SSL-Client-OU}\r
-            %i{X-AAI-SSL-Client-O} %i{X-AAI-SSL-Client-L} %i{X-AAI-SSL-Client-ST}\r
-            %i{X-AAI-SSL-Client-C} %i{X-AAI-SSL-Client-NotBefore} %i{X-AAI-SSL-Client-NotAfter}\r
-            %i{X-AAI-SSL-Client-DN} %D</Pattern>\r
-        </encoder>\r
-      </appender>\r
-      <appender-ref ref="ACCESS" />\r
-    </then>\r
-  </if>\r
-\r
-  <appender name="STDOUTACCESS" class="ch.qos.logback.core.ConsoleAppender">\r
-    <encoder class="org.onap.aai.logging.CustomLogPatternLayoutEncoder">\r
-      <Pattern>%a %u %z [%t] "%m %U%q" %s %b %y %i{X-TransactionId} %i{X-FromAppId}\r
-        %i{X-Forwarded-For} %i{X-AAI-SSL-Client-CN} %i{X-AAI-SSL-Client-OU} %i{X-AAI-SSL-Client-O}\r
-        %i{X-AAI-SSL-Client-L} %i{X-AAI-SSL-Client-ST} %i{X-AAI-SSL-Client-C}\r
-        %i{X-AAI-SSL-Client-NotBefore} %i{X-AAI-SSL-Client-NotAfter} %i{X-AAI-SSL-Client-DN} %D -\r
-        "logType": "access"</Pattern>\r
-    </encoder>\r
-    <if condition='property("livenessAccessLogEnabled").contains("false")'>\r
-      <then>\r
-        <filter class="ch.qos.logback.core.filter.EvaluatorFilter">\r
-          <evaluator class="ch.qos.logback.access.net.URLEvaluator">\r
-            <URL>/aai/util/echo</URL>\r
-          </evaluator>\r
-          <OnMismatch>NEUTRAL</OnMismatch>\r
-          <OnMatch>DENY</OnMatch>\r
-        </filter>\r
-      </then>\r
-    </if>\r
-  </appender>\r
-  <appender-ref ref="STDOUTACCESS" />\r
-</configuration>\r
-{{/*<!--\r
-%a - Remote IP address\r
-%A - Local IP address\r
-%b - Bytes sent, excluding HTTP headers, or '-' if no bytes were sent\r
-%B - Bytes sent, excluding HTTP headers\r
-%h - Remote host name\r
-%H - Request protocol\r
-%l - Remote logical username from identd (always returns '-')\r
-%m - Request method\r
-%p - Local port\r
-%q - Query string (prepended with a '?' if it exists, otherwise an empty string\r
-%r - First line of the request\r
-%s - HTTP status code of the response\r
-%S - User session ID\r
-%t - Date and time, in Common Log Format format\r
-%u - Remote user that was authenticated\r
-%U - Requested URL path\r
-%v - Local server name\r
-%I - current request thread name (can compare later with stacktraces)\r
-\r
-%z - Custom pattern that parses the cert for the subject\r
-%y - Custom pattern determines rest or dme2\r
--->*/}}
\ No newline at end of file
index 3dc4867..65fb244 100644 (file)
@@ -1,23 +1,23 @@
 {{/*<!--
-    ============LICENSE_START=======================================================
-    org.onap.aai
-    ================================================================================
-    Copyright © 2017 AT&T Intellectual Property. All rights reserved.
-    Modifications Copyright © 2018 Amdocs, Bell Canada
-    Modifications Copyright © 2020 Orange
-    ================================================================================
-    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.
-    ============LICENSE_END=========================================================
+  ============LICENSE_START=======================================================
+  org.onap.aai
+  ================================================================================
+  Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+  Modifications Copyright © 2018 Amdocs, Bell Canada
+  Modifications Copyright © 2020 Orange
+  ================================================================================
+  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.
+  ============LICENSE_END=========================================================
 -->
 */}}
 <configuration scan="true" scanPeriod="60 seconds" debug="false">
 
   <property resource="application.properties" />
 
-  <property name="maxHistory" value='{{.Values.logback.maxHistory}}' />
-  <property name="totalSizeCap" value='{{.Values.logback.totalSizeCap}}' />
-  <property name="queueSize" value='{{.Values.logback.queueSize}}'/>
-  <property name="logToFileEnabled" value='{{.Values.logback.logToFileEnabled}}'/>
-
-  <property name="namespace" value="aai-traversal" />
-
-  <property name="AJSC_HOME" value="${AJSC_HOME:-.}" />
-  <jmxConfigurator />
-  <property name="logDirectory" value="${AJSC_HOME}/logs" />
-  <!-- Old patterns
-    <property name="eelfLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%ecompServiceName|%X{partnerName}|%ecompStatusCode|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>
-    <property name="eelfAuditLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%ecompServiceName|%X{partnerName}|%ecompStatusCode|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n|\r\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>
-    <property name="eelfMetricLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%ecompServiceName|%X{partnerName}|%X{targetEntity}|%X{targetServiceName}|%ecompStatusCode|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{targetVirtualEntity}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>
-    <property name="eelfErrorLogPattern" value="%ecompStartTime|%X{requestId}|%-10t|%ecompServiceName|%X{partnerName}|%X{targetEntity}|%X{targetServiceName}|%ecompErrorCategory|%ecompResponseCode|%ecompResponseDescription|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>
-    <property name="eelfTransLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%ecompServiceName|%X{partnerName}|%ecompStatusCode|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{partnerName}:%m%n"/>
-    -->
-  <property name="p_tim" value="%d{&quot;yyyy-MM-dd'T'HH:mm:ss.SSSXXX&quot;, UTC}" />
-  <property name="p_lvl" value="%level" />
-  <property name="p_log" value="%logger" />
-  <property name="p_mdc" value="%replace(%replace(%replace(%mdc){'\t','\\\\t'}){'\n', '\\\\n'}){'\\|', '!'}" />
-  <property name="p_msg" value="%replace(%replace(%msg){'\t', '\\\\t'}){'\n','\\\\n'}" />
-  <property name="p_exc" value="%replace(%replace(%rootException){'\t', '\\\\t'}){'\n','\\\\n'}" />
-  <property name="p_mak" value="%replace(%replace(%marker){'\t', '\\\\t'}){'\n','\\\\n'}" />
-  <property name="p_thr" value="%thread" />
-  <property name="pattern" value="%nopexception${p_tim}\t${p_thr}\t${p_lvl}\t${p_log}\t${p_mdc}\t${p_msg}\t${p_exc}\t${p_mak}\t%n" />
-  <!-- Patterns from onap demo -->
-  <property name="errorPattern" value="%X{LogTimestamp}|%X{RequestID}|%thread|%replace(%X{ServiceName}){'\\|', '!'}|%X{PartnerName}|%X{TargetEntity}|%replace(%X{TargetServiceName}){'\\|', '!'}|%.-5level|%X{ErrorCode}|%X{ErrorDesc}|%msg%n" />
-  <property name="debugPattern" value="%X{LogTimestamp}|%X{RequestID}|%msg\t${p_mdc}\t${p_msg}\t${p_exc}\t${p_mak}\t|^%n" />
-  <property name="auditPattern" value="%X{EntryTimestamp}|%X{LogTimestamp}|%X{RequestID}|%X{ServiceInstanceID}|%thread||%replace(%X{ServiceName}){'\\|', '!'}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDesc}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{RemoteHost}||||${p_mak}|${p_mdc}|||%msg%n" />
-  <property name="metricPattern" value="%X{InvokeTimestamp}|%X{LogTimestamp}|%X{RequestID}|%X{ServiceInstanceID}|%thread||%replace(%X{ServiceName}){'\\|', '!'}|%X{PartnerName}|%X{TargetEntity}|%replace(%X{TargetServiceName}){'\\|', '!'}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDesc}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{RemoteHost}||||%X{TargetVirtualEntity}|${p_mak}|${p_mdc}|||%msg%n" />
-  <property name="transLogPattern" value="%X{LogTimestamp}|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{RequestID}|%X{ServiceInstanceID}|%-10t|%X{ServerFQDN}|%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%replace(%replace(%X{ResponseDesc}){'\\|', '!'}){'\r|\n', '^'}|%X{InstanceUUID}|%level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{clientIpAddress}||%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{PartnerName}:%m%n" />
-  <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
-  <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
-  <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
-
   <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
     <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
       <providers>
           <shortenedLoggerNameLength>36</shortenedLoggerNameLength>
         </loggerName>
         <logLevel/>
-        <pattern>
-          <pattern>{"logType":"app"}</pattern>
-        </pattern>
       </providers>
     </encoder>
   </appender>
 
-  <if condition='property("logToFileEnabled").contains("true")'>
-    <then>
-      <appender name="SANE" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <file>${logDirectory}/rest/sane.log</file>
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-          <fileNamePattern>${logDirectory}/rest/sane.log.%d{yyyy-MM-dd}</fileNamePattern>
-          <maxHistory>${maxHistory}</maxHistory>
-          <totalSizeCap>${totalSizeCap}</totalSizeCap>
-        </rollingPolicy>
-        <encoder>
-          <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - %msg%n
-          </pattern>
-        </encoder>
-      </appender>
-      <appender name="asyncSANE" class="ch.qos.logback.classic.AsyncAppender">
-        <queueSize>${queueSize}</queueSize>
-        <includeCallerData>true</includeCallerData>
-        <appender-ref ref="SANE" />
-      </appender>
-      <appender name="METRIC" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <file>${logDirectory}/rest/metrics.log</file>
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-          <fileNamePattern>${logDirectory}/rest/metrics.log.%d{yyyy-MM-dd}</fileNamePattern>
-          <maxHistory>${maxHistory}</maxHistory>
-          <totalSizeCap>${totalSizeCap}</totalSizeCap>
-        </rollingPolicy>
-        <encoder>
-          <pattern>${metricPattern}</pattern>
-        </encoder>
-      </appender>
-      <appender name="asyncMETRIC" class="ch.qos.logback.classic.AsyncAppender">
-        <queueSize>${queueSize}</queueSize>
-        <includeCallerData>true</includeCallerData>
-        <appender-ref ref="METRIC" />
-      </appender>
-      <appender name="DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <filter class="ch.qos.logback.classic.filter.LevelFilter">
-          <level>DEBUG</level>
-          <onMatch>ACCEPT</onMatch>
-          <onMismatch>DENY</onMismatch>
-        </filter>
-        <file>${logDirectory}/rest/debug.log</file>
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-          <fileNamePattern>${logDirectory}/rest/debug.log.%d{yyyy-MM-dd}</fileNamePattern>
-          <maxHistory>${maxHistory}</maxHistory>
-          <totalSizeCap>${totalSizeCap}</totalSizeCap>
-        </rollingPolicy>
-        <encoder>
-          <pattern>${debugPattern}</pattern>
-        </encoder>
-      </appender>
-      <appender name="asyncDEBUG" class="ch.qos.logback.classic.AsyncAppender">
-        <queueSize>${queueSize}</queueSize>
-        <appender-ref ref="DEBUG" />
-        <includeCallerData>true</includeCallerData>
-      </appender>
-      <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <file>${logDirectory}/rest/error.log</file>
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-          <fileNamePattern>${logDirectory}/rest/error.log.%d{yyyy-MM-dd}</fileNamePattern>
-          <maxHistory>${maxHistory}</maxHistory>
-          <totalSizeCap>${totalSizeCap}</totalSizeCap>
-        </rollingPolicy>
-        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
-          <level>WARN</level>
-        </filter>
-        <encoder>
-          <pattern>${errorPattern}</pattern>
-        </encoder>
-      </appender>
-      <appender name="asyncERROR" class="ch.qos.logback.classic.AsyncAppender">
-        <queueSize>${queueSize}</queueSize>
-        <appender-ref ref="ERROR" />
-      </appender>
-      <appender name="AUDIT" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <file>${logDirectory}/rest/audit.log</file>
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-          <fileNamePattern>${logDirectory}/rest/audit.log.%d{yyyy-MM-dd}
-          </fileNamePattern>
-          <maxHistory>${maxHistory}</maxHistory>
-          <totalSizeCap>${totalSizeCap}</totalSizeCap>
-        </rollingPolicy>
-        <encoder>
-          <pattern>${auditPattern}</pattern>
-        </encoder>
-      </appender>
-      <appender name="asyncAUDIT" class="ch.qos.logback.classic.AsyncAppender">
-        <queueSize>${queueSize}</queueSize>
-        <includeCallerData>true</includeCallerData>
-        <appender-ref ref="AUDIT" />
-      </appender>
-      <appender name="translog" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <filter class="ch.qos.logback.classic.filter.LevelFilter">
-          <level>DEBUG</level>
-          <onMatch>ACCEPT</onMatch>
-          <onMismatch>DENY</onMismatch>
-        </filter>
-        <file>${logDirectory}/rest/translog.log</file>
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-          <fileNamePattern>${logDirectory}/rest/translog.log.%d{yyyy-MM-dd}
-          </fileNamePattern>
-          <maxHistory>${maxHistory}</maxHistory>
-          <totalSizeCap>${totalSizeCap}</totalSizeCap>
-        </rollingPolicy>
-        <encoder>
-          <pattern>${transLogPattern}</pattern>
-        </encoder>
-      </appender>
-      <appender name="asynctranslog" class="ch.qos.logback.classic.AsyncAppender">
-        <queueSize>${queueSize}</queueSize>
-        <includeCallerData>true</includeCallerData>
-        <appender-ref ref="translog" />
-      </appender>
-      <appender name="dmaapAAIEventConsumer" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
-          <level>WARN</level>
-        </filter>
-        <File>${logDirectory}/dmaapAAIEventConsumer/error.log</File>
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-          <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/error.log.%d{yyyy-MM-dd}
-          </fileNamePattern>
-          <maxHistory>${maxHistory}</maxHistory>
-          <totalSizeCap>${totalSizeCap}</totalSizeCap>
-        </rollingPolicy>
-        <encoder>
-          <pattern>${errorPattern}</pattern>
-        </encoder>
-      </appender>
-      <appender name="dmaapAAIEventConsumerDebug" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <filter class="ch.qos.logback.classic.filter.LevelFilter">
-          <level>DEBUG</level>
-          <onMatch>ACCEPT</onMatch>
-          <onMismatch>DENY</onMismatch>
-        </filter>
-        <File>${logDirectory}/dmaapAAIEventConsumer/debug.log</File>
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-          <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/debug.log.%d{yyyy-MM-dd}
-          </fileNamePattern>
-          <maxHistory>${maxHistory}</maxHistory>
-          <totalSizeCap>${totalSizeCap}</totalSizeCap>
-        </rollingPolicy>
-        <encoder>
-          <pattern>${debugPattern}</pattern>
-        </encoder>
-      </appender>
-      <appender name="dmaapAAIEventConsumerInfo" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <filter class="ch.qos.logback.classic.filter.LevelFilter">
-          <level>INFO</level>
-          <onMatch>ACCEPT</onMatch>
-          <onMismatch>DENY</onMismatch>
-        </filter>
-        <File>${logDirectory}/dmaapAAIEventConsumer/dmaap-transaction.log</File>
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-          <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/dmaap-transaction.log.%d{yyyy-MM-dd}
-          </fileNamePattern>
-          <maxHistory>${maxHistory}</maxHistory>
-          <totalSizeCap>${totalSizeCap}</totalSizeCap>
-        </rollingPolicy>
-        <encoder>
-          <pattern>${auditPattern}</pattern>
-        </encoder>
-      </appender>
-      <appender name="dmaapAAIEventConsumerMetric" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <filter class="ch.qos.logback.classic.filter.LevelFilter">
-          <level>INFO</level>
-          <onMatch>ACCEPT</onMatch>
-          <onMismatch>DENY</onMismatch>
-        </filter>
-        <File>${logDirectory}/dmaapAAIEventConsumer/metrics.log</File>
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-          <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/metrics.log.%d{yyyy-MM-dd}
-          </fileNamePattern>
-          <maxHistory>${maxHistory}</maxHistory>
-          <totalSizeCap>${totalSizeCap}</totalSizeCap>
-        </rollingPolicy>
-        <encoder>
-          <pattern>${metricPattern}</pattern>
-        </encoder>
-      </appender>
-      <appender name="external" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
-          <level>WARN</level>
-        </filter>
-        <file>${logDirectory}/external/external.log</file>
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-          <fileNamePattern>${logDirectory}/external/external.log.%d{yyyy-MM-dd}
-          </fileNamePattern>
-          <maxHistory>${maxHistory}</maxHistory>
-          <totalSizeCap>${totalSizeCap}</totalSizeCap>
-        </rollingPolicy>
-        <encoder>
-          <pattern>${debugPattern}</pattern>
-        </encoder>
-      </appender>
-      <appender name="auth" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
-          <level>DEBUG</level>
-        </filter>
-        <file>${logDirectory}/auth/auth.log</file>
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-          <fileNamePattern>${logDirectory}/auth/auth.log.%d{yyyy-MM-dd}
-          </fileNamePattern>
-          <maxHistory>${maxHistory}</maxHistory>
-          <totalSizeCap>${totalSizeCap}</totalSizeCap>
-        </rollingPolicy>
-        <encoder>
-          <pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}[%thread] %-5level %logger{1024} - %msg%n</pattern>
-        </encoder>
-      </appender>
-      <appender name="asyncAUTH" class="ch.qos.logback.classic.AsyncAppender">
-        <queueSize>${queueSize}</queueSize>
-        <includeCallerData>true</includeCallerData>
-        <appender-ref ref="auth" />
-      </appender>
-    </then>
-  </if>
-
   <!-- logback internals logging -->
   <logger name="ch.qos.logback.classic" level="WARN" />
   <logger name="ch.qos.logback.core" level="WARN" />
   <logger name="org.springframework.beans" level="WARN" />
   <logger name="org.springframework.web" level="WARN" />
   <logger name="org.janusgraph" level="WARN" />
+  <logger name="org.janusgraph.graphdb.transaction" level="ERROR" />
   <logger name="org.zookeeper" level="OFF" />
 
 
-  <logger name="org.onap.aai" level="DEBUG" additivity="false">
-    <if condition='property("logToFileEnabled").contains("true")'>
-      <then>
-        <appender-ref ref="asyncDEBUG" />
-        <appender-ref ref="asyncSANE" />
-      </then>
-    </if>
-    <appender-ref ref="STDOUT" />
-  </logger>
-
-  <logger name="org.onap.aai.aaf.auth" level="DEBUG" additivity="false">
-    <if condition='property("logToFileEnabled").contains("true")'>
-      <then>
-        <appender-ref ref="asyncAUTH" />
-      </then>
-    </if>
+  <logger name="org.onap.aai" level={{ .Values.log.level.base | upper | quote }} additivity="false">
     <appender-ref ref="STDOUT" />
   </logger>
 
   <logger name="org.onap.aai.aailog.logs.AaiScheduledTaskAuditLog" level="INFO" additivity="false">
-    <if condition='property("logToFileEnabled").contains("true")'>
-      <then>
-        <appender-ref ref="asyncAUDIT" />
-      </then>
-    </if>
     <appender-ref ref="STDOUT" />
   </logger>
 
   <logger name="org.onap.logging.filter.base.AbstractAuditLogFilter" level="INFO" additivity="false">
-    <if condition='property("logToFileEnabled").contains("true")'>
-      <then>
-        <appender-ref ref="asyncAUDIT" />
-      </then>
-    </if>
     <appender-ref ref="STDOUT" />
   </logger>
 
   <logger name="org.onap.aai.aailog.logs.AaiDBMetricLog" level="INFO" additivity="false">
-    <if condition='property("logToFileEnabled").contains("true")'>
-      <then>
-        <appender-ref ref="asyncMETRIC" />
-      </then>
-    </if>
     <appender-ref ref="STDOUT" />
   </logger>
 
   <logger name="org.onap.aai.aailog.logs.AaiDmaapMetricLog" level="INFO" additivity="false">
-    <if condition='property("logToFileEnabled").contains("true")'>
-      <then>
-        <appender-ref ref="dmaapAAIEventConsumerMetric" />
-      </then>
-    </if>
     <appender-ref ref="STDOUT" />
   </logger>
 
-  <logger name="org.onap.aai.logging.ErrorLogHelper" level="WARN" additivity="false">
-    <if condition='property("logToFileEnabled").contains("true")'>
-      <then>
-        <appender-ref ref="asyncERROR" />
-      </then>
-    </if>
+  <logger name="org.onap.aai.logging.ErrorLogHelper" level="INFO" additivity="false">
     <appender-ref ref="STDOUT" />
   </logger>
 
   <logger name="org.onap.aai.interceptors.post" level="DEBUG" additivity="false">
-    <if condition='property("logToFileEnabled").contains("true")'>
-      <then>
-        <appender-ref ref="asynctranslog" />
-      </then>
-    </if>
-    <appender-ref ref="STDOUT" />
-  </logger>
-
-  <logger name="org.onap.aai.dmaap" level="DEBUG" additivity="false">
-    <if condition='property("logToFileEnabled").contains("true")'>
-      <then>
-        <appender-ref ref="dmaapAAIEventConsumer" />
-        <appender-ref ref="dmaapAAIEventConsumerDebug" />
-      </then>
-    </if>
     <appender-ref ref="STDOUT" />
   </logger>
 
-  <logger name="com.att.nsa.mr" level="INFO">
-    <if condition='property("logToFileEnabled").contains("true")'>
-      <then>
-        <appender-ref ref="dmaapAAIEventConsumerInfo" />
-      </then>
-    </if>
+  <logger name="org.onap.aai.kafka" level="DEBUG" additivity="false">
     <appender-ref ref="STDOUT" />
   </logger>
 
-  <root level="DEBUG">
-    <if condition='property("logToFileEnabled").contains("true")'>
-      <then>
-        <appender-ref ref="external" />
-      </then>
-    </if>
+  <root level={{ .Values.log.level.root | upper | quote }}>
     <appender-ref ref="STDOUT" />
   </root>
-</configuration>
\ No newline at end of file
+</configuration>
diff --git a/kubernetes/aai/components/aai-traversal/templates/_helpers.tpl b/kubernetes/aai/components/aai-traversal/templates/_helpers.tpl
new file mode 100644 (file)
index 0000000..fa95534
--- /dev/null
@@ -0,0 +1,21 @@
+{{- define "aai.waitForSchemaCreation" -}}
+- name: wait-for-schema-creation
+  image: "{{ include "repositoryGenerator.image.curl" . }}"
+  imagePullPolicy: IfNotPresent
+  command: ["/bin/sh", "-c"]
+  args:
+    - |
+      URL="{{ required "URL is required" (.Values.schemaInitCheckURL | default "http://aai-graphadmin:8449/isSchemaInitialized") }}"
+      AUTH="{{ printf "%s:%s" (index .Values.global.auth.users 0).username (index .Values.global.auth.users 0).password }}"
+      while true; do
+        RESPONSE=$(curl -u $AUTH -s $URL)
+        if [ "$RESPONSE" = "true" ]; then
+          echo "Request successful. Schema is initialized."
+          exit 0
+        else
+          echo "Request unsuccessful. Schema is not yet initialized. Retrying in 3 seconds..."
+          sleep 3
+        fi
+      done
+  {{ include "common.containerSecurityContext" . | indent 2 | trim }}
+{{- end -}}
diff --git a/kubernetes/aai/components/aai-traversal/templates/aai-trav-kafka-user.yml b/kubernetes/aai/components/aai-traversal/templates/aai-trav-kafka-user.yml
new file mode 100644 (file)
index 0000000..966e566
--- /dev/null
@@ -0,0 +1,32 @@
+{{/*
+# Copyright © 2022-23 Nordix Foundation
+#
+# 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.
+*/}}
+apiVersion: kafka.strimzi.io/v1beta2
+kind: KafkaUser
+metadata:
+  name: {{ include "common.release" . }}-{{ .Values.global.aaiTravKafkaUser }}
+  labels: {{- include "common.labels" . | nindent 4 }}
+    strimzi.io/cluster: {{ include "common.release" . }}-strimzi
+spec:
+  authentication:
+    type: scram-sha-512
+  authorization:
+    type: simple
+    acls:
+    - resource:
+        type: topic
+        name: AAI-EVENT
+      operations:
+        - All
diff --git a/kubernetes/aai/components/aai-traversal/templates/autoscaling.yaml b/kubernetes/aai/components/aai-traversal/templates/autoscaling.yaml
new file mode 100644 (file)
index 0000000..a14a9b5
--- /dev/null
@@ -0,0 +1,29 @@
+{{- if .Values.autoscaling.enabled }}
+apiVersion: autoscaling/v2
+kind: HorizontalPodAutoscaler
+metadata: {{- include "common.resourceMetadata" . | nindent 2 }}
+spec:
+  scaleTargetRef:
+    apiVersion: apps/v1
+    kind: Deployment
+    name: {{ include "common.fullname" . }}
+  minReplicas: {{ .Values.autoscaling.minReplicas }}
+  maxReplicas: {{ .Values.autoscaling.maxReplicas }}
+  metrics:
+    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}
+    - type: Resource
+      resource:
+        name: cpu
+        target:
+          type: Utilization
+          averageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}
+    {{- end }}
+    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}
+    - type: Resource
+      resource:
+        name: memory
+        target:
+          type: Utilization
+          averageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}
+    {{- end }}
+{{- end }}
index e3d7299..5db7fb1 100644 (file)
 
 apiVersion: v1
 kind: ConfigMap
-metadata:
-  name: {{ include "common.fullname" . }}
-  namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+metadata: {{- include "common.resourceMetadata" . | nindent 2 }}
 data:
 {{ tpl (.Files.Glob "resources/config/logback.xml").AsConfig . | indent 2 }}
-{{ tpl (.Files.Glob "resources/config/localhost-access-logback.xml").AsConfig . | indent 2 }}
 {{ tpl (.Files.Glob "resources/config/janusgraph-realtime.properties").AsConfig . | indent 2 }}
-{{ tpl (.Files.Glob "resources/config/janusgraph-cached.properties").AsConfig . | indent 2 }}
 {{ tpl (.Files.Glob "resources/config/aaiconfig.properties").AsConfig . | indent 2 }}
 {{ tpl (.Files.Glob "resources/config/application.properties").AsConfig . | indent 2 }}
-{{ tpl (.Files.Glob "resources/config/application-keycloak.properties").AsConfig . | indent 2 }}
-{{ tpl (.Files.Glob "resources/config/realm.properties").AsConfig . | indent 2 }}
index 6627a80..36e1cbe 100644 (file)
@@ -1,8 +1,8 @@
 {{/*
-# Copyright (c) 2017 Amdocs, Bell Canada
-# Modifications Copyright (c) 2018 AT&T
-# Modifications Copyright (c) 2020 Nokia, Orange
-# Modifications Copyright (c) 2021 Orange
+# Copyright © 2017 Amdocs, Bell Canada
+# Modifications Copyright © 2018 AT&T
+# Modifications Copyright © 2020 Nokia, Orange
+# Modifications Copyright © 2021 Orange
 # Modifications Copyright © 2023 Nordix Foundation
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 
 apiVersion: apps/v1
 kind: Deployment
-metadata:
-  name: {{ include "common.fullname" . }}
-  namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    app.kubernetes.io/name: {{ include "common.name" . }}
-    {{- if .Chart.AppVersion }}
-    version: "{{ .Chart.AppVersion | replace "+" "_" }}"
-    {{- else }}
-    version: "{{ .Chart.Version | replace "+" "_" }}"
-    {{- end }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+metadata: {{- include "common.resourceMetadata" (dict "annotations" .Values.annotations "dot" .) | nindent 2 }}
 spec:
+  {{- if or .Values.config.debug.enabled .Values.config.profiling.enabled }}
+  replicas: 1
+  {{- else }}
+  {{- if not .Values.autoscaling.enabled }}
   replicas: {{ .Values.replicaCount }}
+  {{- end }}
+  {{- end }}
+  revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
   minReadySeconds: {{ .Values.minReadySeconds }}
   strategy:
     type: {{ .Values.updateStrategy.type }}
@@ -46,116 +40,24 @@ spec:
     matchLabels:
       app: {{ include "common.name" . }}
   template:
-    metadata:
-      labels:
-        app: {{ include "common.name" . }}
-        release: {{ include "common.release" . }}
-        app.kubernetes.io/name: {{ include "common.name" . }}
-        {{- if .Chart.AppVersion }}
-        version: "{{ .Chart.AppVersion | replace "+" "_" }}"
-        {{- else }}
-        version: "{{ .Chart.Version | replace "+" "_" }}"
-        {{- end }}
-      name: {{ include "common.name" . }}
-      annotations:
-        checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
-      {{- if .Values.global.msbEnabled }}
-        {{ $values := .Values }}
-        msb.onap.org/service-info: '[
-        {{- range $api_endpoint := $values.aai_enpoints -}}
-          {{- range $api_version := $values.api_list }}
-          {
-              "serviceName": "_{{ $api_endpoint.name }}",
-              "version": "v{{ $api_version }}",
-              "url": "/aai/v{{ $api_version }}/{{ $api_endpoint.url }}",
-              "protocol": "REST",
-              "port": "8446",
-              "enable_ssl": true,
-              "lb_policy":"ip_hash",
-              "visualRange": "1",
-              "path": "/aai/v{{ $api_version }}/{{ $api_endpoint.url }}"
-          },
-          {
-              "serviceName": "{{ $api_endpoint.name }}",
-              "version": "v{{ $api_version }}",
-              "url": "/aai/v{{ $api_version }}/{{ $api_endpoint.url }}",
-              "protocol": "REST",
-              "port": "8446",
-              "enable_ssl": true,
-              "lb_policy":"ip_hash",
-              "visualRange": "1"
-          },
-          {{- end }}
-        {{- end }}
-          {
-              "serviceName": "_aai-named-query",
-              "url": "/aai/search",
-              "protocol": "REST",
-              "port": "8446",
-              "enable_ssl": true,
-              "lb_policy":"ip_hash",
-              "visualRange": "1",
-              "path": "/aai/search"
-          },
-          {
-              "serviceName": "aai-named-query",
-              "url": "/aai/search",
-              "protocol": "REST",
-              "port": "8446",
-              "enable_ssl": true,
-              "lb_policy":"ip_hash",
-              "visualRange": "1"
-          }
-          ]'
-      {{- end }}
+    metadata: {{- include "common.templateMetadata" . | nindent 6 }}
     spec:
       hostname: aai-traversal
       terminationGracePeriodSeconds: {{ .Values.service.terminationGracePeriodSeconds }}
       initContainers:
-      - command:
-        - /app/ready.py
-        args:
       {{- if .Values.global.jobs.migration.enabled }}
-        - --job-name
-        - {{ include "common.release" . }}-aai-graphadmin-migration
-      {{- else  }}
-        {{- if .Values.global.jobs.createSchema.enabled  }}
-        - --job-name
-        - {{ include "common.release" . }}-aai-graphadmin-create-db-schema
-        {{- else }}
-        - --service-name
-        - {{ .Values.global.cassandra.serviceName }}
-        - --service-name
-        - aai-schema-service
-        {{- end }}
+      {{ include "common.readinessCheck.waitFor" (dict "dot" . "wait_for" .Values.readinessCheck.wait_for_migration) | nindent 8 }}
+      {{- else if .Values.global.jobs.createSchema.enabled  }}
+      {{ include "aai.waitForSchemaCreation" . | nindent 6 }}
+      {{- else }}
+      {{ include "common.readinessCheck.waitFor" (dict "dot" . "wait_for" .Values.readinessCheck.wait_for_cassandra) | nindent 8 }}
       {{- end }}
-        env:
-        - name: NAMESPACE
-          valueFrom:
-            fieldRef:
-              apiVersion: v1
-              fieldPath: metadata.namespace
-        image: {{ include "repositoryGenerator.image.readiness" . }}
-        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-        name: {{ include "common.name" . }}-readiness
-        resources:
-          limits:
-            cpu: "100m"
-            memory: "500Mi"
-          requests:
-            cpu: "3m"
-            memory: "20Mi"
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
       containers:
       - name: {{ include "common.name" . }}
         image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-        command:
-        - sh
-        args:
-        - -c
-        - |
-          echo "*** actual launch of AAI Resources"
-          /bin/bash /opt/app/aai-traversal/docker-entrypoint.sh
+        {{ include "common.containerSecurityContext" . | indent 8 | trim }}
         env:
         {{- if .Values.config.env }}
         {{- range $key,$value := .Values.config.env }}
@@ -163,6 +65,13 @@ spec:
           value: {{ $value | quote}}
         {{- end }}
         {{- end }}
+        {{- if eq .Values.flavor "small" }}
+        - name: MAX_HEAP_SIZE
+          value: {{ .Values.small.maxHeapSize | quote }}
+        {{- else if eq .Values.flavor "large" }}
+        - name: MAX_HEAP_SIZE
+          value: {{ .Values.large.maxHeapSize | quote }}
+        {{- end }}
         {{- if .Values.config.profiling.enabled }}
         - name: PRE_JVM_ARGS
           value: '{{ join " " .Values.config.profiling.args }}'
@@ -173,23 +82,23 @@ spec:
         {{- end }}
         - name: DISABLE_UPDATE_QUERY
           value: {{ .Values.config.disableUpdateQuery | quote }}
-        - name: LOCAL_USER_ID
-          value: {{ .Values.global.config.userId | quote }}
-        - name: LOCAL_GROUP_ID
-          value: {{ .Values.global.config.groupId | quote }}
         - name: INTERNAL_PORT_1
-          value: {{ .Values.service.internalPort | quote }}
+          value: {{ .Values.service.traversalPort | quote }}
         - name: INTERNAL_PORT_2
-          value: {{ .Values.service.internalPort2 | quote }}
+          value: {{ .Values.service.debugPort | quote }}
         - name: INTERNAL_PORT_3
-          value: {{ .Values.service.internalPort3 | quote }}
+          value: {{ .Values.service.metricsPort | quote }}
+        - name: BOOTSTRAP_SERVERS
+          value: {{ include "common.release" . }}-strimzi-kafka-bootstrap:9092
+        - name: JAAS_CONFIG
+          valueFrom:
+            secretKeyRef:
+              name: {{ include "common.release" . }}-{{ .Values.global.aaiTravKafkaUser }}
+              key: sasl.jaas.config
         volumeMounts:
         - mountPath: /opt/app/aai-traversal/resources/etc/appprops/janusgraph-realtime.properties
           name: {{ include "common.fullname" . }}-config
           subPath: janusgraph-realtime.properties
-        - mountPath: /opt/app/aai-traversal/resources/etc/appprops/janusgraph-cached.properties
-          name: {{ include "common.fullname" . }}-config
-          subPath: janusgraph-cached.properties
         - mountPath: /opt/app/aai-traversal/resources/etc/appprops/aaiconfig.properties
           name: {{ include "common.fullname" . }}-config
           subPath: aaiconfig.properties
@@ -200,33 +109,24 @@ spec:
         - mountPath: /opt/app/aai-traversal/resources/logback.xml
           name: {{ include "common.fullname" . }}-config
           subPath: logback.xml
-        - mountPath: /opt/app/aai-traversal/resources/localhost-access-logback.xml
-          name: {{ include "common.fullname" . }}-config
-          subPath: localhost-access-logback.xml
-        - mountPath: /opt/app/aai-traversal/resources/etc/auth/realm.properties
-          name: {{ include "common.fullname" . }}-config
-          subPath: realm.properties
         - mountPath: /opt/app/aai-traversal/resources/application.properties
           name: {{ include "common.fullname" . }}-config
           subPath: application.properties
-        - mountPath: /opt/app/aai-traversal/resources/application-keycloak.properties
-          name: {{ include "common.fullname" . }}-config
-          subPath: application-keycloak.properties
+        - mountPath: /tmp
+          name: tmp
         ports:
-        - containerPort: {{ .Values.service.internalPort }}
-          name: {{ .Values.service.portName }}
-
+        - containerPort: {{ .Values.service.traversalPort }}
+          name: {{ .Values.service.traversalPortName }}
         {{- if .Values.config.debug.enabled }}
-        - containerPort: {{ .Values.service.internalPort2 }}
-          name: {{ .Values.service.portName2 }}
+        - containerPort: {{ .Values.service.debugPort }}
+          name: {{ .Values.service.debugPortName }}
         {{- end }}
-        - containerPort: {{ .Values.service.internalPort3 }}
-          name: {{ .Values.service.portName3 }}
+        - containerPort: {{ .Values.service.metricsPort }}
+          name: {{ .Values.service.metricsPortName }}
         {{- if .Values.config.profiling.enabled }}
-        - containerPort: {{ .Values.service.internalPort4 }}
-          name: {{ .Values.service.portName4 }}
+        - containerPort: {{ .Values.service.profilingPort }}
+          name: {{ .Values.service.profilingPortName }}
         {{- end }}
-
         lifecycle:
           # wait for active requests (long-running tasks) to be finished
           # Before the SIGTERM is invoked, Kubernetes exposes a preStop hook in the Pod.
@@ -236,49 +136,35 @@ spec:
                 - sh
                 - -c
                 - |
-                  while (netstat -an | grep ESTABLISHED | grep -e $INTERNAL_PORT_1 -e $INTERNAL_PORT_2)
-                  do sleep 10
+                  while (netstat -an | grep ESTABLISHED | grep -e $INTERNAL_PORT_1)
+                  do sleep 3
                   done
-        # disable liveness probe when breakpoints set in debugger
-        # so K8s doesn't restart unresponsive container
-        {{ if .Values.liveness.enabled }}
+        # disable liveness probe when
+        # debugging.enable=true or profiling.enabled=true
+        {{- if and .Values.liveness.enabled (not (or .Values.config.debug.enabled .Values.config.profiling.enabled)) }}
         livenessProbe:
           httpGet:
-            path: /aai/util/echo?action=checkDB
-            port: {{ .Values.service.internalPort }}
-            scheme: HTTP
-            httpHeaders:
-            - name: X-FromAppId
-              value: LivenessCheck
-            - name: X-TransactionId
-              value: LiveCheck_TID
-            - name: Accept
-              value: application/json
+            port: {{ .Values.service.metricsPort }}
+            path: {{ .Values.liveness.path }}
+          {{- if .Values.liveness.initialDelaySeconds }}
           initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
+          {{- end }}
           periodSeconds: {{ .Values.liveness.periodSeconds }}
-        {{ end }}
+        {{- end }}
         readinessProbe:
           httpGet:
-            path: /aai/util/echo?action=checkDB
-            port: {{ .Values.service.internalPort }}
-            scheme: HTTP
-            httpHeaders:
-            - name: X-FromAppId
-              value: ReadinessCheck
-            - name: X-TransactionId
-              value: ReadinessCheck_TID
-            - name: Accept
-              value: application/json
+            port: {{ .Values.service.metricsPort }}
+            path: {{ .Values.readiness.path }}
+          {{- if .Values.readiness.initialDelaySeconds }}
           initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
+          {{- end }}
           periodSeconds: {{ .Values.readiness.periodSeconds }}
         resources: {{ include "common.resources" . | nindent 10 }}
       {{- if .Values.nodeSelector }}
-      nodeSelector:
-{{ toYaml .Values.nodeSelector | indent 8 }}
+      nodeSelector: {{ toYaml .Values.nodeSelector | indent 8 }}
       {{- end }}
       {{- if .Values.affinity }}
-      affinity:
-{{ toYaml .Values.affinity | indent 8 }}
+      affinity: {{ toYaml .Values.affinity | indent 8 }}
       {{- end }}
 
       # side car containers
@@ -286,9 +172,14 @@ spec:
       serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
       volumes:
       - name: logs
-        emptyDir: {}
+        emptyDir:
+          sizeLimit: {{ .Values.volumes.logSizeLimit }}
+      - name: tmp
+        emptyDir:
+          sizeLimit: {{ .Values.volumes.tmpSizeLimit }}
       - name: {{ include "common.fullname" . }}-logs-misc
-        emptyDir: {}
+        emptyDir:
+          sizeLimit: {{ .Values.volumes.logmiscSizeLimit }}
       {{ include "common.log.volumes" (dict "dot" . "configMapNamePrefix" (tpl .Values.logConfigMapNamePrefix .)) | nindent 6 }}
       - name: {{ include "common.fullname" . }}-config
         configMap:
index 88fbe47..2e51fd0 100644 (file)
@@ -24,40 +24,44 @@ kind: Job
 metadata:
   name: {{ include "common.fullname" . }}-update-query-data
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 {{ if .Values.global.jobs.migration.enabled }}
-  annotations:
-    "helm.sh/hook": post-upgrade,post-rollback,post-install
-    "helm.sh/hook-weight": "2"
-    "helm.sh/hook-delete-policy": before-hook-creation
+  {{- if .Values.jobAnnotations }}
+  annotations:  {{- include "common.tplValue" (dict "value" .Values.jobAnnotations "context" $) | nindent 4 }}
+  {{- end }}
 {{ end }}
 spec:
   template:
     metadata:
-      labels:
-        app: {{ include "common.name" . }}-job
-        release: {{ include "common.release" . }}
+      labels: {{- include "common.labels" (dict "labels" .Values.labels "ignoreHelmChart" .Values.ignoreHelmChart "dot" . "suffix" "job") | nindent 8 }}
       name: {{ include "common.name" . }}
     spec:
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
       initContainers:
-      - command:
-        - /app/ready.py
-        args:
-        - --service-name
-        - aai
-        env:
-        - name: NAMESPACE
-          valueFrom:
-            fieldRef:
-              apiVersion: v1
-              fieldPath: metadata.namespace
+      {{ include "common.readinessCheck.waitFor" (dict "dot" . "wait_for" .Values.readinessCheck.wait_for_traversal) | nindent 6 }}
+      - name: {{ include "common.name" . }}-wait-for-aai-haproxy
         image: {{ include "repositoryGenerator.image.readiness" . }}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-        name: {{ include "common.name" . }}-readiness
+        securityContext:
+          runAsUser: 100
+          runAsGroup: 65533
+          readOnlyRootFilesystem: true
+          privileged: false
+          allowPrivilegeEscalation: false
+          capabilities:
+            drop:
+              - ALL
+              - CAP_NET_RAW
+        command:
+        - sh
+        - "-c"
+        - |
+           set -x;
+
+           until nc -w10 -z -v aai.{{.Release.Namespace}} 80; do
+            echo "Retrying to reach aai on port 80";
+            sleep 1;
+           done;
         resources:
           limits:
             cpu: "100m"
@@ -70,28 +74,23 @@ spec:
         image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
         command:
-        - bash
+        - sh
         - "-c"
         - |
-           set -x
-           if [ ! -d /opt/aai/logroot/AAI-GQ/misc ]; then mkdir -p /opt/aai/logroot/AAI-GQ/misc; fi
-           until nc -w10 -z -v aai.{{.Release.Namespace}} 80; do echo "Retrying to reach aai on port 80"; done;
-           bash -x /opt/app/aai-traversal/docker-entrypoint.sh install/updateQueryData.sh ;
-           {{ include "common.serviceMesh.killSidecar" . | indent 11 | trim }}
+           set -x;
+           if [ ! -d /opt/aai/logroot/AAI-GQ/misc ];
+            then mkdir -p /opt/aai/logroot/AAI-GQ/misc;
+           fi
 
-        env:
-        - name: LOCAL_USER_ID
-          value: {{ .Values.global.config.userId | quote }}
-        - name: LOCAL_GROUP_ID
-          value: {{ .Values.global.config.groupId | quote }}
+           sh -x /opt/app/aai-traversal/bin/install/updateQueryData.sh ;
+
+           {{ include "common.serviceMesh.killSidecar" . | indent 11 | trim }}
+        {{ include "common.containerSecurityContext" . | indent 8 | trim }}
         resources: {{ include "common.resources" . | nindent 10 }}
         volumeMounts:
         - mountPath: /opt/app/aai-traversal/resources/etc/appprops/janusgraph-realtime.properties
           name: {{ include "common.fullname" . }}-config
           subPath: janusgraph-realtime.properties
-        - mountPath: /opt/app/aai-traversal/resources/etc/appprops/janusgraph-cached.properties
-          name: {{ include "common.fullname" . }}-config
-          subPath: janusgraph-cached.properties
         - mountPath: /opt/app/aai-traversal/resources/etc/appprops/aaiconfig.properties
           name: {{ include "common.fullname" . }}-config
           subPath: aaiconfig.properties
@@ -102,9 +101,6 @@ spec:
         - mountPath: /opt/app/aai-traversal/resources/logback.xml
           name: {{ include "common.fullname" . }}-config
           subPath: logback.xml
-        - mountPath: /opt/app/aai-traversal/resources/localhost-access-logback.xml
-          name: {{ include "common.fullname" . }}-config
-          subPath: localhost-access-logback.xml
         - mountPath: /opt/app/aai-traversal/resources/application.properties
           name: {{ include "common.fullname" . }}-config
           subPath: application.properties
@@ -113,9 +109,11 @@ spec:
       serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
       volumes:
       - name: {{ include "common.fullname" . }}-logs
-        emptyDir: {}
+        emptyDir:
+          sizeLimit: {{ .Values.volumes.logSizeLimit }}
       - name: {{ include "common.fullname" . }}-logs-misc
-        emptyDir: {}
+        emptyDir:
+          sizeLimit: {{ .Values.volumes.logmiscSizeLimit }}
       {{ include "common.log.volumes" (dict "dot" . "configMapNamePrefix" (tpl .Values.logConfigMapNamePrefix .)) | nindent 6 }}
       - name: {{ include "common.fullname" . }}-config
         configMap:
index 2fac1e5..60e8efc 100644 (file)
@@ -19,41 +19,36 @@ kind: Service
 metadata:
   name: {{ include "common.servicename" . }}
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    app.kubernetes.io/name: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 spec:
   type: {{ .Values.service.type }}
   ports:
   {{if eq .Values.service.type "NodePort" -}}
-  - port: {{ .Values.service.internalPort }}
+  - port: {{ .Values.service.traversalPort }}
     nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }}
-    name: {{ .Values.service.portName }}
-    targetPort: {{ .Values.service.portName }}
-  - port: {{ .Values.service.internalPort2 }}
+    name: {{ .Values.service.traversalPortName }}
+    targetPort: {{ .Values.service.traversalPortName }}
+  - port: {{ .Values.service.debugPort }}
     nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort2 }}
-    name: {{ .Values.service.portName2 }}
-    targetPort: {{ .Values.service.portName2 }}
-  - port: {{ .Values.service.internalPort3 }}
+    name: {{ .Values.service.debugPortName }}
+    targetPort: {{ .Values.service.debugPortName }}
+  - port: {{ .Values.service.metricsPort }}
     nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort3 }}
-    name: {{ .Values.service.portName3 }}
-    targetPort: {{ .Values.service.portName3 }}
+    name: {{ .Values.service.metricsPortName }}
+    targetPort: {{ .Values.service.metricsPortName }}
   {{- else -}}
-  - port: {{ .Values.service.internalPort }}
-    name: {{ .Values.service.portName }}
-    targetPort: {{ .Values.service.portName }}
-  - port: {{ .Values.service.internalPort2 }}
-    name: {{ .Values.service.portName2 }}
-    targetPort: {{ .Values.service.portName2 }}
-  - port: {{ .Values.service.internalPort3 }}
-    name: {{ .Values.service.portName3 }}
-    targetPort: {{ .Values.service.portName3 }}
+  - port: {{ .Values.service.traversalPort }}
+    name: {{ .Values.service.traversalPortName }}
+    targetPort: {{ .Values.service.traversalPortName }}
+  {{- if .Values.config.debug.enabled }}
+  - port: {{ .Values.service.debugPort }}
+    name: {{ .Values.service.debugPortName }}
+    targetPort: {{ .Values.service.debugPortName }}
   {{- end }}
-  selector:
-    app: {{ include "common.name" . }}
-    release: {{ include "common.release" . }}
+  - port: {{ .Values.service.metricsPort }}
+    name: {{ .Values.service.metricsPortName }}
+    targetPort: {{ .Values.service.metricsPortName }}
+  {{- end }}
+  selector: {{- include "common.matchLabels" . | nindent 4 }}
   clusterIP: None
   sessionAffinity: {{ .Values.service.sessionAffinity }}
index c0d9f21..dc70602 100644 (file)
@@ -1,3 +1,3 @@
 {{- if .Values.metrics.serviceMonitor.enabled }}
 {{  include "common.serviceMonitor" . }}
-{{- end }}
\ No newline at end of file
+{{- end }}
index aca1ec7..34d07c1 100644 (file)
 # Declare variables to be passed into your templates.
 global: # global defaults
   nodePortPrefix: 302
-
+  kafkaBootstrap: strimzi-kafka-bootstrap
+  aaiTravKafkaUser: aai-trav-kafka-user
   cassandra:
     #Service Name of the cassandra cluster to connect to.
     #Override it to aai-cassandra if localCluster is enabled.
     serviceName: cassandra
+    # Cassandra datacenter name
+    localDataCenter: dc1
+  tracing:
+    enabled: false
+    collector:
+      baseUrl: http://jaeger-collector.istio-config:9411
+    sampling:
+      probability: 1.0 # percentage of requests that are sampled (between 0-1/0%-100%)
 
   # Specifies a list of jobs to be run
   jobs:
@@ -37,7 +46,26 @@ global: # global defaults
     #migration using helm hooks
     migration:
       enabled: false
-
+  # Specifies if basic authorization is enabled
+  auth:
+    enabled: true
+    users:
+      - username: aai@aai.onap.org
+        password: demo123456!
+      - username: AAI
+        password: AAI
+      - username: DCAE
+        password: DCAE
+      - username: MSO
+        password: MSO
+      - username: POLICY
+        password: POLICY
+      - username: ASDC
+        password: ASDC
+      - username: ModelLoader
+        password: ModelLoader
+      - username: AaiUI
+        password: AaiUI
   # Common configuration for resources traversal and graphadmin
   config:
     # User information for the admin user in container
@@ -50,16 +78,9 @@ global: # global defaults
       cassandra:
         dynamic: true
 
-    # Specifies if the basic authorization is enabled
-    basic:
-      auth:
-        enabled: true
-        username: AAI
-        passwd: AAI
-
     # Active spring profiles for the resources microservice
     profiles:
-      active: production,dmaap
+      active: production,kafka
 
     # Notification event specific properties
     notification:
@@ -84,11 +105,11 @@ global: # global defaults
       version:
         # Current version of the REST API
         api:
-          default: v28
+          default: v30
         # Specifies which version the depth parameter is configurable
         depth: v11
         # List of all the supported versions of the API
-        list: v11,v12,v13,v14,v15,v16,v17,v18,v19,v20,v21,v22,v23,v24,v25,v26,v27,v28
+        list: v11,v12,v13,v14,v15,v16,v17,v18,v19,v20,v21,v22,v23,v24,v25,v26,v27,v28,v29,v30
         # Specifies from which version related link should appear
         related:
           link: v11
@@ -105,13 +126,14 @@ global: # global defaults
     # Specifies which clients should always default to realtime graph connection
     realtime:
       clients: SDNC,MSO,SO,robot-ete
+    jaasConfExternalSecret: '{{ include "common.release" . }}-{{ .Values.global.aaiTravKafkaUser }}'
+    someConfig: random
 
 # application image
-image: onap/aai-traversal:1.12.3
+image: onap/aai-traversal:1.16.0
 pullPolicy: Always
 restartPolicy: Always
 flavor: small
-flavorOverride: small
 # the minimum number of seconds that a newly created Pod should be ready
 minReadySeconds: 30
 updateStrategy:
@@ -131,6 +153,16 @@ api_list:
   - 17
   - 18
   - 19
+  - 20
+  - 21
+  - 22
+  - 23
+  - 24
+  - 25
+  - 26
+  - 27
+  - 28
+  - 29
 
 aai_enpoints:
   - name: aai-generic-query
@@ -142,31 +174,20 @@ aai_enpoints:
 
 # application configuration
 config:
-  # configure keycloak according to your environment.
-  # don't forget to add keycloak in active profiles above (global.config.profiles)
-  keycloak:
-    host: keycloak.your.domain
-    port: 8180
-    # Specifies a set of users, credentials, roles, and groups
-    realm: aai-traversal
-    # Used by any client application for enabling fine-grained authorization for their protected resources
-    resource: aai-traversal-app
-    # If set to true, additional criteria will be added into traversal query to returns all the vertices that match
-    # the data-owner property with the given role to the user in keycloak
-    multiTenancy:
-      enabled: true
   janusgraph:
     caching:
       # enable when running read-heavy workloads
       # modifications to graph done by this service/janusgraph instance will immediately invalidate the cache
-      # modifications to graph done by other services (resources) will only be visible
+      # modifications to graph done by other services (traversal) will only be visible
       # after time specified in db-cache-time
-      enabled: false
+      enabled: true
       # Documentation: https://docs.janusgraph.org/operations/cache/#database-level-caching
       dbCacheTime: 180000 # in milliseconds
       dbCacheSize: 0.1 # percentage (expressed as a decimal between 0 and 1) of the total heap space available to the JVM running
       dbCacheCleanWait: 20 # in milliseconds
-
+    # temporarily enable this to update the graph storage version
+    # see: https://docs.janusgraph.org/changelog/#upgrade-instructions_9
+    allowUpgrade: true
 
   # Specifies timeout information such as application specific and limits
   timeout:
@@ -180,8 +201,8 @@ config:
   # environment variables added to the launch of the image in deployment
   env:
     MIN_HEAP_SIZE: "512m"
-    MAX_HEAP_SIZE: "1024m"
     MAX_METASPACE_SIZE: "512m"
+    # POST_JVM_ARGS: "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
 
   # adds jvm args for remote debugging the application
   debug:
@@ -232,31 +253,40 @@ persistence:
 # default number of instances
 replicaCount: 1
 
+# number of ReplicaSets that should be retained for the Deployment
+revisionHistoryLimit: 1
+
 nodeSelector: {}
 
 affinity: {}
 
 # probe configuration parameters
 liveness:
+  path: /actuator/health
   initialDelaySeconds: 60
   periodSeconds: 60
-  # necessary to disable liveness probe when setting breakpoints
-  # in debugger so K8s doesn't restart unresponsive container
-  enabled: false
+  enabled: true
 
 readiness:
+  path: /actuator/health/readiness
   initialDelaySeconds: 10
   periodSeconds: 10
 
+actuator:
+  echo:
+    enabled: true
+
 service:
   type: ClusterIP
-  portName: http
-  internalPort: 8446
-  portName2: tcp-5005
-  internalPort2: 5005
-  portName3: http-traversal
-  internalPort3: 8448
-  terminationGracePeriodSeconds: 120
+  traversalPortName: http
+  traversalPort: 8446
+  debugPortName: tcp-5005
+  debugPort: 5005
+  metricsPortName: metrics
+  metricsPort: 8448
+  profilingPortName: jmx-9999
+  profilingPort: 9999
+  terminationGracePeriodSeconds: 30
   sessionAffinity: None
 
 ingress:
@@ -276,8 +306,8 @@ logback:
   queueSize: 1000
 
 accessLogback:
-  livenessAccessLogEnabled: false # false: do not log kubernetes liveness probes
   logToFileEnabled: false
+  livenessAccessLogEnabled: false # false: do not log kubernetes liveness probes
   maxHistory: 7
   totalSizeCap: 6GB
 
@@ -300,6 +330,23 @@ resources:
       memory: "4Gi"
   unlimited: {}
 
+# define the heap size for the JVM
+# according to the resource flavor
+small:
+  maxHeapSize: "2500m"
+large:
+  maxHeapSize: "3g"
+
+autoscaling:
+  enabled: false
+  minReplicas: 1
+  maxReplicas: 3
+  targetCPUUtilizationPercentage: 80
+
+tracing:
+  ignorePatterns:
+    - /aai/util.*
+
 endpoints:
   enabled: true
   health:
@@ -307,9 +354,12 @@ endpoints:
   info:
     enabled: true
 
+podAnnotations:
+  checksum/config: '{{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}'
+
 metrics:
   serviceMonitor:
-    enabled: false
+    enabled: true
     targetPort: 8448
     path: /actuator/prometheus
     basicAuth:
@@ -337,9 +387,9 @@ metrics:
     ##
     selector:
       app: '{{ include "common.name" . }}'
-      chart: '{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}'
-      release: '{{ include "common.release" . }}'
-      heritage: '{{ .Release.Service }}'
+      helm.sh/chart: '{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}'
+      app.kubernetes.io/instance: '{{ include "common.release" . }}'
+      app.kubernetes.io/managed-by: '{{ .Release.Service }}'
 
     ## RelabelConfigs to apply to samples before scraping
     ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#relabelconfig
@@ -368,4 +418,54 @@ serviceAccount:
 #Log configuration
 log:
   path: /var/log/onap
+  level:
+    root: INFO
+    base: INFO # base package (org.onap.aai)
 logConfigMapNamePrefix: '{{ include "common.fullname" . }}'
+
+volumes:
+  logSizeLimit: 50Mi
+  logmiscSizeLimit: 50Mi
+  tmpSizeLimit: 100Mi
+
+securityContext:
+  user_id: 1000
+  group_id: 1000
+
+readinessCheck:
+  wait_for_migration:
+    jobs:
+      - '{{ include "common.release" . }}-aai-graphadmin-migration'
+  wait_for_createSchema:
+    jobs:
+      - '{{ include "common.release" . }}-aai-graphadmin-create-db-schema'
+  wait_for_cassandra:
+    services:
+      - '{{ .Values.global.cassandra.serviceName }}'
+      - aai-schema-service
+  wait_for_traversal:
+    services:
+      - aai-traversal
+
+jobAnnotations:
+  "helm.sh/hook": pre-upgrade,pre-rollback,post-install
+  "helm.sh/hook-weight": "2"
+  "helm.sh/hook-delete-policy": before-hook-creation
+
+#################################################################
+# Secrets metaconfig
+#################################################################
+secrets:
+  - uid: aai-trav-kafka-user
+    externalSecret: '{{ tpl (default "" .Values.config.jaasConfExternalSecret) . }}'
+    type: genericKV
+    envs:
+      - name: sasl.jaas.config
+        value: '{{ .Values.config.someConfig }}'
+        policy: generate
+kafkaUser:
+  authenticationType: scram-sha-512
+  acls:
+    - name: AAI-EVENT
+      type: topic
+      operations: [Read, Write]
diff --git a/kubernetes/aai/resources/config/haproxy/resolvers.conf b/kubernetes/aai/resources/config/haproxy/resolvers.conf
new file mode 100644 (file)
index 0000000..c456e35
--- /dev/null
@@ -0,0 +1,3 @@
+resolvers kubernetes
+  nameserver dns1 {{.Values.config.NAME_SERVER}}:53
+  hold valid      1s
index fa59f52..f48e06e 100644 (file)
@@ -27,6 +27,7 @@ kind: AuthorizationPolicy
 metadata:
   name: {{ include "common.fullname" (dict "suffix" "authz" "dot" . )}}
   namespace: {{ include "common.namespace" . }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 spec:
   selector:
     matchLabels:
index dac36d7..c66af50 100644 (file)
@@ -22,12 +22,9 @@ kind: ConfigMap
 metadata:
   name: aai-deployment-configmap
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 data:
+{{ tpl (.Files.Glob "resources/config/haproxy/resolvers.conf").AsConfig . | indent 2 }}
 {{ if .Values.global.installSidecarSecurity }}
 {{ tpl (.Files.Glob "resources/config/haproxy/haproxy-pluggable-security.cfg").AsConfig . | indent 2 }}
 {{ else }}
@@ -40,6 +37,7 @@ kind: Secret
 metadata:
   name: aai-fproxy-auth-certs
   namespace: {{ include "common.namespace" . }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 type: Opaque
 data:
 {{ tpl (.Files.Glob "resources/config/fproxy/auth/*").AsSecrets . | indent 2 }}
@@ -49,6 +47,7 @@ kind: Secret
 metadata:
   name: aai-rproxy-auth-certs
   namespace: {{ include "common.namespace" . }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 type: Opaque
 data:
 {{ tpl (.Files.Glob "resources/config/rproxy/auth/*").AsSecrets . | indent 2 }}
@@ -58,6 +57,7 @@ kind: Secret
 metadata:
   name: aai-rproxy-security-config
   namespace: {{ include "common.namespace" . }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 type: Opaque
 data:
 {{ tpl (.Files.Glob "resources/config/rproxy/security/*").AsSecrets . | indent 2 }}
index d64410c..160d8cf 100644 (file)
 
 apiVersion: apps/v1
 kind: Deployment
-metadata:
-  name: {{ include "common.fullname" . }}
-  namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    app.kubernetes.io/name: {{ include "common.name" . }}
-    {{- if .Chart.AppVersion }}
-    version: "{{ .Chart.AppVersion | replace "+" "_" }}"
-    {{- else }}
-    version: "{{ .Chart.Version | replace "+" "_" }}"
-    {{- end }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+metadata: {{- include "common.resourceMetadata" (dict "annotations" .Values.annotations "dot" .) | nindent 2 }}
 spec:
   selector:
     matchLabels:
       app: {{ include "common.name" . }}
   replicas: {{ .Values.replicaCount }}
+  revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
   strategy:
     type: {{ .Values.updateStrategy.type }}
     {{- if (eq "RollingUpdate" .Values.updateStrategy.type) }}
@@ -45,59 +33,47 @@ spec:
       maxSurge: {{ .Values.updateStrategy.maxSurge }}
     {{- end }}
   template:
-    metadata:
-      labels:
-        app: {{ include "common.name" . }}
-        release: {{ include "common.release" . }}
-        app.kubernetes.io/name: {{ include "common.name" . }}
-        {{- if .Chart.AppVersion }}
-        version: "{{ .Chart.AppVersion | replace "+" "_" }}"
-        {{- else }}
-        version: "{{ .Chart.Version | replace "+" "_" }}"
-        {{- end }}
-      name: {{ include "common.release" . }}
-      annotations:
-        checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
+    metadata: {{- include "common.templateMetadata" . | nindent 6 }}
     spec:
       terminationGracePeriodSeconds: {{ .Values.service.terminationGracePeriodSeconds }}
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
       initContainers:
-      - command:
-        - /app/ready.py
-        args:
-        - --service-name
-        - aai-resources
-        - --service-name
-        - aai-traversal
-        - --service-name
-        - aai-graphadmin
-        env:
-        - name: NAMESPACE
-          valueFrom:
-            fieldRef:
-              apiVersion: v1
-              fieldPath: metadata.namespace
-        image: {{ include "repositoryGenerator.image.readiness" . }}
+      - command: ["/bin/sh","-c"]
+        args: ['cp -R /usr/local/etc/haproxy /usr/local/etc/haproxy_rw/']
+        image: '{{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}'
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-        name: {{ include "common.name" . }}-readiness
+        name: copy-haproxy-config
         resources:
-          requests:
-            memory: {{ .Values.haproxy.initContainers.resources.memory }}
-            cpu: {{ .Values.haproxy.initContainers.resources.cpu }}
           limits:
-            memory: {{ .Values.haproxy.initContainers.resources.memory }}
-            cpu: {{ .Values.haproxy.initContainers.resources.cpu }}
+            cpu: 100m
+            memory: 200Mi
+          requests:
+            cpu: 2m
+            memory: 100Mi
+        {{ include "common.containerSecurityContext" . | indent 8 | trim }}
+        terminationMessagePath: /dev/termination-log
+        terminationMessagePolicy: File
+        volumeMounts:
+        - mountPath: /usr/local/etc/haproxy_rw
+          name: haproxy-etc
       containers:
       - name: {{ include "common.name" . }}
-        image: "{{ include "repositoryGenerator.dockerHubRepository" . }}/{{ .Values.image }}"
+        image: '{{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}'
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
         volumeMounts:
+        - mountPath: /usr/local/etc/haproxy
+          name: haproxy-etc
+        - mountPath: /usr/local/etc/haproxy/resolvers.conf
+          name: haproxy-config
+          subPath: resolvers.conf
+          readOnly: true
         - mountPath: /usr/local/etc/haproxy/haproxy.cfg
         {{ if .Values.global.installSidecarSecurity }}
           subPath: haproxy-pluggable-security.cfg
         {{ else }}
           subPath: haproxy.cfg
         {{ end }}
-          name: haproxy-cfg
+          name: haproxy-config
         ports:
         - containerPort: {{ .Values.service.internalPort }}
           name: {{ .Values.service.portName }}
@@ -112,25 +88,13 @@ spec:
           initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
           periodSeconds: {{ .Values.liveness.periodSeconds }}
         {{ end -}}
+        {{ include "common.containerSecurityContext" . | indent 8 | trim }}
+        resources: {{ include "common.resources" . | nindent 10 }}
         readinessProbe:
-          httpGet:
-            path: /aai/util/echo
-            port: {{ .Values.service.internalPort }}
-            scheme: HTTP
-            httpHeaders:
-            - name: X-FromAppId
-              value: OOM_ReadinessCheck
-      {{ if .Values.global.installSidecarSecurity }}
-            - name: Authorization
-              value: Basic YWFpQGFhaS5vbmFwLm9yZzpkZW1vMTIzNDU2IQ==
-      {{ end }}
-            - name: X-TransactionId
-              value: OOM_ReadinessCheck_TID
-            - name: Accept
-              value: application/json
           initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
           periodSeconds: {{ .Values.readiness.periodSeconds }}
-        resources: {{ include "common.resources" . | nindent 10 }}
+          tcpSocket:
+            port: {{ .Values.service.internalPort }}
       {{- if .Values.nodeSelector }}
       nodeSelector:
 {{ toYaml .Values.nodeSelector | indent 8 }}
@@ -141,7 +105,10 @@ spec:
       {{- end }}
       serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
       volumes:
-        - name: haproxy-cfg
-          configMap:
-            name: aai-deployment-configmap
+      - name: haproxy-config
+        configMap:
+          name: aai-deployment-configmap
+      - name: haproxy-etc
+        emptyDir:
+          sizeLimit: {{ .Values.volumes.haProxySizeLimit }}
       {{- include "common.imagePullSecrets" . | nindent 6 }}
index d868b95..1a592a0 100644 (file)
@@ -19,11 +19,7 @@ kind: Secret
 metadata:
   name: aai-common-aai-auth
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 type: Opaque
 data:
 {{ tpl (.Files.Glob "resources/config/auth/*").AsSecrets . | indent 2 }}
@@ -33,6 +29,7 @@ kind: Secret
 metadata:
   name: aai-common-truststore
   namespace: {{ include "common.namespace" . }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 type: Opaque
 data:
 {{ tpl (.Files.Glob "resources/config/aai/*").AsSecrets . | indent 2 }}
index ecbab26..1509311 100644 (file)
@@ -19,12 +19,7 @@ kind: Service
 metadata:
   name: {{ include "common.servicename" . }}
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    app.kubernetes.io/name: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 spec:
   ports:
   - name: {{ .Values.service.portName }}
@@ -36,8 +31,7 @@ spec:
     {{    end }}
     {{- end }}
   type: {{ if (include "common.ingressEnabled" .) }}ClusterIP{{ else }}{{ .Values.service.type }}{{ end }}
-  selector:
-    app: {{ include "common.name" . }}
+  selector: {{- include "common.matchLabels" . | nindent 4 }}
   sessionAffinity: {{ .Values.service.sessionAffinity }}
 ---
 apiVersion: v1
@@ -45,38 +39,26 @@ kind: Service
 metadata:
   name: {{ include "common.servicename" . }}-internal
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    app.kubernetes.io/name: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 spec:
   ports:
     - name: {{ .Values.service.portName }}
       port: {{ .Values.service.externalPort }}
       targetPort: {{ .Values.service.internalPort }}
   type: ClusterIP
-  selector:
-    app: {{ include "common.name" . }}
+  selector: {{- include "common.matchLabels" . | nindent 4 }}
 ---
 apiVersion: v1
 kind: Service
 metadata:
   name: {{ include "common.servicename" . }}-metrics
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}-metrics
-    app.kubernetes.io/name: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 spec:
   ports:
     - port: {{ .Values.metricsService.externalPort }}
       targetPort: {{ .Values.metricsService.internalPort }}
       name: {{ .Values.metricsService.portName }}
   type: {{ .Values.metricsService.type }}
-  selector:
-    app: {{ include "common.name" . }}
-  clusterIP: None
\ No newline at end of file
+  selector: {{- include "common.matchLabels" . | nindent 4 }}
+  clusterIP: None
index c0d9f21..dc70602 100644 (file)
@@ -1,3 +1,3 @@
 {{- if .Values.metrics.serviceMonitor.enabled }}
 {{  include "common.serviceMonitor" . }}
-{{- end }}
\ No newline at end of file
+{{- end }}
index 523cd8c..6c8157b 100644 (file)
@@ -25,16 +25,22 @@ global: # global defaults
   dockerhubRepository: docker.io
   busyboxImage: busybox
 
-  readinessImage: onap/oom/readiness:6.0.3
+  readinessImage: onap/oom/readiness:6.1.2
 
   loggingRepository: docker.elastic.co
   loggingImage: beats/filebeat:5.5.0
 
   restartPolicy: Always
 
-  msbEnabled: false
   centralizedLoggingEnabled: false
 
+  tracing:
+    enabled: false
+    collector:
+      baseUrl: http://jaeger-collector.istio-config:9411
+    sampling:
+      probability: 1.0 # percentage of requests that are sampled (between 0-1/0%-100%)
+
   cassandra:
     #This will instantiate AAI cassandra cluster, default:shared cassandra.
     localCluster: false
@@ -64,6 +70,14 @@ global: # global defaults
     username: cassandra
     password: cassandra
 
+    #Cassandra datacenter name
+    localDataCenter: dc1
+
+    # The name of Cassandra cluster's partitioner.
+    # It will be retrieved by client if not provided.
+    # See storage.cql.partitioner-name in https://docs.janusgraph.org/v0.6/configs/configuration-reference/#storagecql
+    partitionerName: org.apache.cassandra.dht.Murmur3Partitioner
+
   aai:
     serviceName: aai
   babel:
@@ -212,7 +226,7 @@ global: # global defaults
     # Active spring profiles for the resources microservice
     # aaf-auth profile will be automatically set if aaf enabled is set to true
     profiles:
-      active: production,dmaap #,aaf-auth
+      active: production,kafka #,aaf-auth
 
     # Notification event specific properties
     notification:
@@ -238,11 +252,11 @@ global: # global defaults
       version:
         # Current version of the REST API
         api:
-          default: v28
+          default: v30
         # Specifies which version the depth parameter is configurable
         depth: v11
         # List of all the supported versions of the API
-        list: v11,v12,v13,v14,v15,v16,v17,v18,v19,v20,v21,v22,v23,v24,v25,v26,v27,v28
+        list: v11,v12,v13,v14,v15,v16,v17,v18,v19,v20,v21,v22,v23,v24,v25,v26,v27,v28,v29,v30
         # Specifies from which version related link should appear
         related:
           link: v11
@@ -301,11 +315,10 @@ aai-traversal:
 
 # application image
 dockerhubRepository: registry.hub.docker.com
-image: onap/aai-haproxy:1.11.0
+image: onap/aai-haproxy:1.15.2
 pullPolicy: Always
 
 flavor: small
-flavorOverride: small
 
 # flag to enable debugging - application support required
 debugEnabled: false
@@ -314,13 +327,21 @@ debugEnabled: false
 config:
   logstashServiceName: log-ls
   logstashPort: 5044
+  # IP address of name server is needed in nginx configuration. The secure endpoint for logging with Keycloak need the ip address in the config file.
+  # You can find this ip address in the /etc/resolv.conf This file is generated by k8s. The name server ip address is in all k8s cluster the same.
+  NAME_SERVER: coredns.kube-system
+  # hold interval in seconds
+  DNS_REFRESH_INTERVAL: 5
 
 # default number of instances
 replicaCount: 1
 
+# number of ReplicaSets that should be retained for the Deployment
+revisionHistoryLimit: 1
+
 updateStrategy:
   type: RollingUpdate
-  maxUnavailable: 0
+  maxUnavailable: 33%
   maxSurge: 1
 
 nodeSelector: {}
@@ -337,8 +358,11 @@ haproxy:
     enabled: false
     customConfigs: []
   replicas:
-    aaiResources: 1
-    aaiTraversal: 1
+    aaiResources: 3
+    aaiTraversal: 3
+  # stickiness based on path.
+  # For multiple replicas, requests will not be distributed evenly
+  stickOnPath: true
 
 # probe configuration parameters
 liveness:
@@ -387,7 +411,7 @@ metricsService:
 
 metrics:
   serviceMonitor:
-    enabled: false
+    enabled: true
     targetPort: 8448
     path: /metrics
     basicAuth:
@@ -395,9 +419,9 @@ metrics:
 
     selector:
       app: '{{ include "common.name" . }}-metrics'
-      chart: '{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}'
-      release: '{{ include "common.release" . }}'
-      heritage: '{{ .Release.Service }}'
+      helm.sh/chart: '{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}'
+      app.kubernetes.io/instance: '{{ include "common.release" . }}'
+      app.kubernetes.io/managed-by: '{{ .Release.Service }}'
 
     relabelings: []
 
@@ -446,15 +470,15 @@ resources:
       cpu: "2"
       memory: "4Gi"
     requests:
-      cpu: "1"
-      memory: "1.2Gi"
+      cpu: "500m"
+      memory: "1200Mi"
   large:
     limits:
       cpu: "4"
       memory: "8Gi"
     requests:
-      cpu: "2"
-      memory: "2.4Gi"
+      cpu: "1"
+      memory: "2400Mi"
   unlimited: {}
 
 #Pods Service Account
@@ -462,3 +486,13 @@ serviceAccount:
   nameOverride: aai
   roles:
     - read
+
+securityContext:
+  user_id: 99
+  group_id: 99
+
+volumes:
+  haProxySizeLimit: 20Mi
+
+podAnnotations:
+  checksum/config: '{{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}'
@@ -1,6 +1,6 @@
 #============LICENSE_START========================================================
 # ================================================================================
-# Copyright © 2022 Deutsche Telekom
+# Copyright © 2024 Deutsche Telekom
 # ================================================================================
 # Original licence (https://github.com/codecentric/helm-charts/blob/master/LICENSE)
 # Licensed under the Apache License, Version 2.0 (the "License");
 # limitations under the License.
 # ============LICENSE_END=========================================================
 apiVersion: v2
-version: 13.0.1
-description: ONAP Realm creation and configuration
-name: keycloak-init
+version: 15.0.1
+description: ONAP Realm creation, Oauth2Proxy installation and configuration
+name: authentication
 sources:
 - https://github.com/adorsys/keycloak-config-cli
 
-# Keycloakx chart version: 1.6.0
 dependencies:
   - name: common
     version: ~13.x-0
@@ -31,5 +30,8 @@ dependencies:
     version: ~13.x-0
     repository: '@local'
   - name: onap-keycloak-config-cli
-    version: 5.10.0
+    version: 6.2.1
     repository: 'file://components/keycloak-config-cli'
+  - name: onap-oauth2-proxy
+    version: 7.8.0
+    repository: 'file://components/oauth2-proxy'
similarity index 97%
rename from kubernetes/platform/components/keycloak-init/Makefile
rename to kubernetes/authentication/Makefile
index 5970a97..f47666e 100644 (file)
@@ -18,7 +18,7 @@ OUTPUT_DIR := $(ROOT_DIR)/../../dist
 PACKAGE_DIR := $(OUTPUT_DIR)/packages
 SECRET_DIR := $(OUTPUT_DIR)/secrets
 
-EXCLUDES :=
+EXCLUDES := dist resources templates charts
 HELM_BIN := helm
 ifneq ($(SKIP_LINT),TRUE)
        HELM_LINT_CMD := $(HELM_BIN) lint
diff --git a/kubernetes/authentication/README.md b/kubernetes/authentication/README.md
new file mode 100644 (file)
index 0000000..e17e94f
--- /dev/null
@@ -0,0 +1,349 @@
+# Helm Chart for Authentication Application
+
+This component delivers:
+
+- Keycloak Realm creation and import
+- (Optionally) creation of AuthenticationPolicies for Ingress to enable
+  OAuth Authentication and RoleBased access to Ingress APIs and UIs
+
+## REALM Configuration settings
+
+- In the configuration section "realmSettings" multiple REALMs can be configured
+- Each REALM configuration has the following sections:
+  - [General REALM settings](#general-realm-settings)
+  - [CLIENT definitions](#client-definitions)
+  - (optional) [CLIENT SCOPE definitions](#client-scope-definitions)
+  - (optional) [Access control definitions](#access-control-definitions)
+  - (optional) [GROUP definitions](#group-definitions)
+  - (optional) [USER definitions](#user-definitions)
+  - (optional) [IDENTITY PROVIDER definitions](#identity-provider-and-mapper-definitions)
+  - (optional) [SMTP server definitions](#smtp-server-definitions)
+
+### General REALM settings
+
+This sections sets the realm general attributes shown in Keycloak
+
+```yaml
+realmSettings:
+  - name: <Realm ID>                - unique ID for a realm (e.g. "ONAP")
+    displayName: <Display Name>     - (optional) Keycloak Display Name (e.g. "ONAP Realm")
+    accessTokenLifespan:            - (optional) Access Tolek Lifespan (default: 1900)
+    registrationAllowed:            - (optional) Enable/disable the registration page (default: false)
+    resetPasswordAllowed:           - (optional) Show a link on login page for user to click when they have forgotten their credentials (default: true)
+    passwordPolicy:                 - (optional) Set Password policies, e.g.
+                                      "length(8) and specialChars(1) and upperCase(1) and lowerCase(1) and digits(1) and notUsername(undefined)
+                                       and notEmail(undefined) and notContainsUsername(undefined) and passwordHistory(3)"
+    sslRequired:                    - (optional) Is HTTPS required? ('None'|'External'|'All requests' (default: "external")
+    themes:                         - (optional) Keycloak Theme settings
+      login: <login theme>          - (optional) Keycloak Theme for Login UI (e.g. "base")
+      admin: <admin theme>          - (optional) Keycloak Theme for Admin UI (e.g. "base")
+      account: <account theme>      - (optional) Keycloak Theme for Account UI (e.g. "base")
+      email: <email theme>          - (optional) Keycloak Theme for Email UI (e.g. "base")
+    attributes:                     - (optional)
+      frontendUrl: "<Keycloak URL>" - (optional) External Url for Keycloak access (e.g. "https://keycloak-$PARAM_BASE_URL/")
+```
+
+### CLIENT definitions
+
+In this section each realm authentication client is defined e.g. portal-bff, oauth2-proxy, grafana
+
+- possible "attributes" settings (maybe more):
+  - id.token.as.detached.signature: "false"
+  - exclude.session.state.from.auth.response: "false"
+  - tls.client.certificate.bound.access.tokens: "false"
+  - saml.allow.ecp.flow: "false"
+  - saml.assertion.signature: "false"
+  - saml.force.post.binding: "false"
+  - saml.multivalued.roles: "false"
+  - saml.encrypt: "false"
+  - saml.server.signature: "false"
+  - saml.server.signature.keyinfo.ext: "false"
+  - saml.artifact.binding: "false"
+  - saml_force_name_id_format: "false"
+  - saml.client.signature: "false"
+  - saml.authnstatement: "false"
+  - saml.onetimeuse.condition: "false"
+  - oidc.ciba.grant.enabled: "false"
+  - frontchannel.logout.session.required: "true"
+  - backchannel.logout.session.required: "true"
+  - backchannel.logout.revoke.offline.tokens: "false"
+  - client_credentials.use_refresh_token: "false"
+  - acr.loa.map: "{}"
+  - require.pushed.authorization.requests: "false"
+  - oauth2.device.authorization.grant.enabled: "false"
+  - display.on.consent.screen: "false"
+  - token.response.type.bearer.lower-case: "false"
+  - use.refresh.tokens: "true"
+  - post.logout.redirect.uris: '<url>'
+
+```yaml
+    clients:
+      oauth2_proxy:
+        clientId: "<client ID>"                   - client ID
+        name: "<client name>"                     - (optional) client name
+        secret: <client secret>                   - (optional) client secret
+        clientAuthenticatorType: <type>           - (optional) auth type (default: client-secret)
+        protocol: <protocol>                      - (optional) auth protocol (default: openid-connect)
+        description: "<description>"              - (optional) client description
+        baseUrl: "<base path>"                    - (optional) url subpath (e.g. /application)
+        rootUrl: "<root URL>"                     - (optional) root url
+        adminUrl: "<admin URL>"                   - (optional) admin url
+        bearerOnly: "<false|true>"                - (optional) bearerOnly (default: false)
+        consentRequired: "<false|true>"           - (optional) consentRequired (default: false)
+        standardFlowEnabled: "<false|true>"       - (optional) standardFlowEnabled (default: true)
+        implicitFlowEnabled: "<false|true>"       - (optional) implicitFlowEnabled (default: false)
+        directAccessGrantsEnabled: "<false|true>" - (optional) directAccessGrantsEnabled (default: true)
+        serviceAccountsEnabled: "<false|true>"    - (optional) serviceAccountsEnabled (default: false)
+        frontchannelLogout: "<false|true>"        - (optional) frontend channel logout (default: true)
+        surrogateAuthRequired: "<false|true>"     - (optional) surrogate Auth Required (default: false)
+        authorizationServicesEnabled: "<false|true>" - (optional) enable Authorization Services (RBAC) (default: false)
+        publicClient: "<false|true>"              - (optional) public Client (default: false)
+        attributes:                               - (optional) attributes settings (see code)
+          post.logout.redirect.uris: '<url>'      - example
+        protocolMappers:                          - (optional) protocol mappers
+          - name: "Audience for Oauth2Proxy"      - examples
+            protocolMapper: "oidc-audience-mapper"
+            config:
+              included.client.audience: "oauth2-proxy-onap"
+              id.token.claim: "false"
+              access.token.claim: "true"
+              included.custom.audience: "oauth2-proxy-onap"
+          - name: "SDC-User"
+            protocolMapper: "oidc-usermodel-attribute-mapper"
+            config:
+              multivalued: "false"
+              userinfo.token.claim: "true"
+              user.attribute: "sdc_user"
+              id.token.claim: "true"
+              access.token.claim: "true"
+              claim.name: "sdc_user"
+              jsonType.label: "String"
+        additionalDefaultScopes:
+          - "onap_roles"
+        redirectUris:
+          - "https://portal-$PARAM_BASE_URL/*"
+          - "http://localhost/*"
+        webOrigins:
+          - "https://argocd-$PARAM_BASE_URL"
+        defaultClientScopes:                      - (optional) definition of default client scopes
+          - "web-origins"                         -            if used, has to contain the full scope list
+          - "profile"
+          - "acr"
+          - "email"
+          - "roles"
+          - "groups"
+        optionalClientScopes:                      - (optional) definition of optional client scopes
+          - ...                                    -            if used, has to contain the full scope list
+```
+
+#### Authorization settings within Client section (optional)
+
+Information about the Keycloak Authorization Services can be found under: <https://www.keycloak.org/docs/latest/authorization_services/index.html>
+
+To enable Authorization the setting shown above needs to be:
+  - authorizationServicesEnabled: true
+
+```yaml
+        authorizationSettings:
+          allowRemoteResourceManagement: "<false|true>"           - (optional) managed remotely by the resource server? (default: true)
+          policyEnforcementMode: "<ENFORCING|PERMISSIVE|DISABLED>"- (optional) dictates how policies are enforced (default: ENFORCING)
+          decisionStrategy: "<UNANIMOUS|AFFIRMATIVE>"             - (optional) dictates how permissions are evaluated (default: UNANIMOUS)
+          resources:                                              - resources definitions
+            - name: "<resource name>"                             - unique name for this resource
+              displayName: "<display name>"                       - (optional) user-friendly name for the resource
+              type: "<type>"                                      - Type can be used to group different resource instances with the same type
+              ownerManagedAccess: <true|false>                    - (optional) access can be managed by the resource owner? (default: false)
+              attributes: {}                                      - (optional) The attributes associated wth the resource
+              uris:                                               - Set of URIs which are protected by resource
+                - "/*"
+                - ...
+              scopes:                                             - The scopes associated with this resource
+                - name: "<scope name1>"
+                - ...
+              icon_uri: "<uri>"                                   - (optional) A URI pointing to an icon.
+            - ...
+          policies:                                               - policy definitions
+            - name: "<policy name>"                               - unique name for this policy
+              description: "<description>"                        - (optional) A description for this policy
+              type: "<role|client|...>"                           - Choose the policy type
+              logic: "<POSITIVE|NEGATIVE>"                        - dictates how the policy decision should be made
+              roles:                                              - Specifies the client roles allowed by this policy
+                - id: "<role name>"                               - points to an existing role
+                  required: <true|false>                          - decide, whether role is required
+                ...
+            - ...
+          permissions:                                            - policy definitions
+            - name: "<permission name>"                           - unique name for this permission
+              description: "<description>"                        - (optional) A description for this permission
+              type: "<scope|resource>"                            - Choose the permission type
+              decisionStrategy: "<UNANIMOUS|AFFIRMATIVE|CONSENSUS>" - dictates how the policies associated with a given permission are evaluated
+              resources:                                          - Specifies that this permission must be applied to a specific resource instance
+                - "<resource name>"                               - points to an existing resource
+                - ...
+              scopes:                                             - Specifies that this permission must be applied to one or more scopes
+                - "<scope name>"                                  - points to an existing scope
+                - ...
+              applyPolicies:                                      - Specifies all the policies that must be applied to the scopes defined by this permission
+                - "<policy-name>"                                 - points to an existing policy
+                - ...
+            - ...
+          scopes:                                                 - scope definitions
+            - name: "<scope name>"                                - unique name for this scope
+              iconUri: "<uri>"                                    - (optional) A URI pointing to an icon.
+              displayName: "<display name>"                       - (optional) user-friendly name for the resource
+            - ...
+```
+
+### CLIENT SCOPE definitions
+
+Here additional scopes besides the default scopes can be defined and set as defaul client scope
+default scopes: roles, groups, acr, profile, address, web-origin, phone, email, offline_access, role_list, microprofile-jwt
+
+```yaml
+    defaultClientScopes:
+      - "onap_roles"
+    additionalClientScopes:
+      - name: onap_roles
+        description: OpenID Connect scope for add user onap roles to the access token
+        protocolMappers:
+        - name: aud
+          protocol: openid-connect
+          protocolMapper: oidc-audience-mapper
+          consentRequired: false
+          config:
+            included.client.audience: oauth2-proxy
+            id.token.claim: 'false'
+            access.token.claim: 'true'
+        - name: client roles
+          protocol: openid-connect
+          protocolMapper: oidc-usermodel-client-role-mapper
+          consentRequired: false
+          config:
+            multivalued: 'true'
+            userinfo.token.claim: 'false'
+            id.token.claim: 'true'
+            access.token.claim: 'true'
+            claim.name: onap_roles
+            jsonType.label: String
+            usermodel.clientRoleMapping.clientId: oauth2-proxy
+```
+
+### Access control definitions
+
+In this section additional roles (assignableRoles) besides the default roles can be set.
+default roles: user, admin, offline_access, uma_authorization, default-roles-<realm>
+
+(optional) accessRoles can be defined.
+These access roles are used in the Ingress "Auhorization Policy" to restrict the access to certain services
+The access role is assigned to a realm client (e.g. oauth2_proxy)
+
+```yaml
+    accessControl:
+      assignableRoles:
+        - name: onap-operator-read
+          description: "Allows to perform GET operations for all ONAP components"
+          associatedAccessRoles: [ "dmaap-bc-api-read", ... ]
+      accessRoles:
+        "oauth2_proxy":
+        - name: dmaap-bc-api-read
+          methodsAllowed: ["GET"]
+          servicePrefix: dmaap-bc-api
+```
+
+### GROUP definitions
+
+```yaml
+    groups:                         - (optional) Group definitions
+      - name: <group name>          - Group name
+        path: /path>                - Group URL path
+        roles: [ <role>,... ]       - (optional) List of Realm roles
+```
+
+### USER definitions
+
+```yaml
+    initialUsers:                   - (optional) List of initial users
+      - username: <user name>       - Name of the User
+        firstName: <first name>     - (optional) First Name
+        lastName: <last name>       - (optional) Last Name
+        email: <email>              - (optional) Email Address
+        emailVerified : <true|false>- (optional)Email verified
+        credentials:                - (optional) credentials
+          - type: password          - (optional) initial password (<pwd>: encrypted password, <salt>: used salt)
+            secretData: "{\"value\":\"<pwd>\",\"salt\":\"<salt>\"}"
+            credentialData: "{\"hashIterations\":27500,\"algorithm\":\"pbkdf2-sha256\"}"
+        requiredActions:            - (optional) action, the user has to execute
+          - <action>                - e.g. "UPDATE_PASSWORD", "UPDATE_PROFILE",...
+        attributes:                 - (optional) additional attributes
+          sdc_user:                 - example attribute
+            - "cs0008"
+        realmRoles:                 - (optional) assigned realm roles
+          - <role name>
+        groups:                     - (optional) group membership
+          - <group name>
+```
+
+### Identity Provider and Mapper definitions
+
+```yaml
+    identityProviders:
+      - name: "gitlab"
+        displayName: "gitlab"
+        config:
+          userInfoUrl: "https://gitlab.devops.telekom.de/oauth/userinfo"
+          validateSignature: "true"
+          clientId: "ee4e0db734157e9cdad16733656ba285f2f813354aa7c590a8693e48ed156860"
+          tokenUrl: "https://gitlab.devops.telekom.de/oauth/token"
+          jwksUrl: "https://gitlab.devops.telekom.de/oauth/discovery/keys"
+          issuer: "https://gitlab.devops.telekom.de"
+          useJwksUrl: "true"
+          authorizationUrl: "https://gitlab.devops.telekom.de/oauth/authorize"
+          clientAuthMethod: "client_secret_post"
+          syncMode: "IMPORT"
+          clientSecret: "gloas-35267790bf6fb7c4b507aea11db46d80174cb8ef4192e77424803b595eef735e"
+          defaultScope: "openid read_user email"
+    identityProviderMappers:
+      - name: "argo-admins"
+        identityProviderAlias: "gitlab"
+        identityProviderMapper: "oidc-advanced-group-idp-mapper"
+        config:
+          claims: "[{\"key\":\"groups_direct\",\"value\":\"dt-rc\"}]"
+          syncMode: "FORCE"
+          group: "/ArgoCDAdmins"
+      - name: "ArgoCDRestricted"
+        identityProviderAlias: "gitlab"
+        identityProviderMapper: "oidc-advanced-group-idp-mapper"
+        config:
+          claims: "[{\"key\":\"groups_direct\",\"value\":\"\"}]"
+          syncMode: "FORCE"
+          group: "/ArgoCDRestricted"
+      - name: "lastName "
+        identityProviderAlias: "gitlab"
+        identityProviderMapper: "oidc-user-attribute-idp-mapper"
+        config:
+          claim: "nickname"
+          syncMode: "FORCE"
+          user.attribute: "lastName"
+```
+
+### SMTP Server definitions
+
+```yaml
+    smtpServer:
+      password: "<password>"
+      starttls: "true"
+      auth: "true"
+      port: "587"
+      host: "<mailserver>"
+      from: "<mail-address>"
+      fromDisplayName: "onapsupport"
+      ssl: "false"
+      user: "onapsupport"
+```
+
+## Requirements
+
+authentication needs the following ONAP projects to work:
+
+- common
+- serviceAccount
@@ -20,8 +20,8 @@ apiVersion: v2
 name: onap-keycloak-config-cli
 description: Import JSON-formatted configuration files into Keycloak - Configuration as Code for Keycloak.
 home: https://github.com/adorsys/keycloak-config-cli
-version: 5.10.0
-appVersion: 5.10.0
+version: 6.2.1
+appVersion: 6.2.1
 maintainers:
   - name: jkroepke
     email: joe@adorsys.de
@@ -50,7 +50,7 @@ spec:
           imagePullPolicy: {{ .Values.image.pullPolicy }}
           {{- with .Values.resources }}
           resources:
-          {{- toYaml . | nindent 10 }}
+          {{- toYaml . | nindent 12 }}
           {{- end }}
           env:
             {{- range $name, $value := .Values.env }}
@@ -70,10 +70,19 @@ spec:
                 secretKeyRef:
                   name: "{{ tpl .Values.existingSecret . }}"
                   key: "{{ .Values.existingSecretKey }}"
-          {{- end }}
-          {{- with .Values.securityContext }}
+            {{- end }}
+            {{- if .Values.existingSecrets }}
+            {{- range .Values.existingSecrets }}
+            - name: {{ .envVar }}
+              valueFrom:
+                secretKeyRef:
+                  name: {{ .name }}
+                  key: {{ .key }}
+            {{- end }}
+            {{- end }}
+          {{- with .Values.containerSecurityContext }}
           securityContext:
-          {{- toYaml . | nindent 10 }}
+          {{- toYaml . | nindent 12 }}
           {{- end }}
           volumeMounts:
             - name: config
@@ -81,7 +90,6 @@ spec:
             {{- with .Values.extraVolumeMounts }}
             {{- tpl . $ | nindent 12 }}
             {{- end }}
-        {{ include "common.waitForJobContainer" . | indent 8 | trim }}
       volumes:
         - name: config
           secret:
@@ -100,4 +108,4 @@ spec:
       {{- with .Values.securityContext }}
       securityContext:
       {{- toYaml . | nindent 8 }}
-  {{- end }}
+      {{- end }}
@@ -23,7 +23,7 @@ nameOverride: ""
 
 image:
   repository: adorsys/keycloak-config-cli
-  tag: "{{ .Chart.AppVersion }}-22.0.4"
+  tag: "{{ .Chart.AppVersion }}-25.0.6"
   pullPolicy: IfNotPresent
   ## Optionally specify an array of imagePullSecrets.
   ## Secrets must be manually created in the namespace.
@@ -47,10 +47,10 @@ labels: {}
 resources: {}
   # limits:
   #   cpu: "100m"
-  #   memory: "1Gi"
+  #   memory: "1024Mi"
   # requests:
   #   cpu: "100m"
-#   memory: "1Gi"
+#   memory: "1024Mi"
 
 env:
   KEYCLOAK_URL: http://keycloak:8080
@@ -75,6 +75,11 @@ podLabels: {}
 
 ## Extra Annotations to be added to pod
 podAnnotations: {}
+# New section for existing secrets
+existingSecrets:
+# - name: my-existing-secret
+#   key: my-secret-key
+#   envVar: MY_ENV_VAR
 
 config: {}
   # <realm name>:
@@ -91,7 +96,3 @@ extraVolumes: ""
 
 # Add additional volumes mounts, e. g. for custom secrets
 extraVolumeMounts: ""
-
-wait_for_job_container:
-  containers:
-    - 'keycloak-config-cli'
@@ -1,7 +1,7 @@
 name: onap-oauth2-proxy
-version: 6.10.1
+version: 7.8.0
 apiVersion: v2
-appVersion: 7.4.0
+appVersion: 7.7.1
 home: https://oauth2-proxy.github.io/oauth2-proxy/
 description: A reverse proxy that provides authentication with Google, Github or other providers
 keywords:
@@ -14,7 +14,7 @@ keywords:
   - redis
 dependencies:
   - name: redis
-    version: ~16.13.2
+    version: 20.3.0
     repository: https://charts.bitnami.com/bitnami
     alias: redis
     condition: redis.enabled
@@ -38,4 +38,11 @@ maintainers:
     email: joel.speed@hotmail.co.uk
   - name: pierluigilenoci
     email: pierluigi.lenoci@gmail.com
-kubeVersion: ">=1.9.0-0"
+kubeVersion: ">=1.16.0-0"
+annotations:
+  artifacthub.io/changes: |
+    - kind: added
+      description: allow templates in annotations
+      links:
+        - name: Github PR
+          url: https://github.com/oauth2-proxy/manifests/pull/256
diff --git a/kubernetes/authentication/components/oauth2-proxy/README.md b/kubernetes/authentication/components/oauth2-proxy/README.md
new file mode 100644 (file)
index 0000000..0dc6c13
--- /dev/null
@@ -0,0 +1,359 @@
+# oauth2-proxy
+
+[oauth2-proxy](https://github.com/oauth2-proxy/oauth2-proxy) is a reverse proxy and static file server that provides authentication using Providers (Google, GitHub, and others) to validate accounts by e-mail, domain, or group.
+
+## TL;DR;
+
+```console
+$ helm repo add oauth2-proxy https://oauth2-proxy.github.io/manifests
+$ helm install my-release oauth2-proxy/oauth2-proxy
+```
+
+## Introduction
+
+This chart bootstraps an oauth2-proxy deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
+
+## Installing the Chart
+
+To install the chart with the release name `my-release`:
+
+```console
+$ helm install my-release oauth2-proxy/oauth2-proxy
+```
+
+The command deploys oauth2-proxy on the Kubernetes cluster in the default configuration.
+The [configuration](#configuration) section lists the parameters that can be configured during installation.
+
+## Uninstalling the Chart
+
+To uninstall/delete the `my-release` deployment:
+
+```console
+$ helm uninstall my-release
+```
+
+The command removes all the Kubernetes components associated with the chart and deletes the release.
+
+## Upgrading an existing Release to a new major version
+
+A major chart version change (like v1.2.3 -> v2.0.0) indicates an incompatible breaking change needing manual actions.
+
+### To 1.0.0
+
+This version upgrades oauth2-proxy to v4.0.0. To upgrade, please see the [changelog](https://github.com/oauth2-proxy/oauth2-proxy/blob/v4.0.0/CHANGELOG.md#v400).
+
+### To 2.0.0
+
+Version 2.0.0 of this chart introduces support for Kubernetes v1.16.x by addressing the Deployment object apiVersion `apps/v1beta2` deprecation.
+See [the v1.16 API deprecations page](https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16/) for more information.
+
+Due to [this issue](https://github.com/helm/helm/issues/6583), errors may occur when performing a `helm upgrade` of this chart from versions earlier than 2.0.0.
+
+### To 3.0.0
+
+Version 3.0.0 introduces support for [EKS IAM roles for service accounts](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) by adding a managed service account to the chart.
+This is a breaking change since the service account is enabled by default.
+To disable this behaviour set `serviceAccount.enabled` to `false`
+
+### To 4.0.0
+
+Version 4.0.0 adds support for the new Ingress apiVersion **networking.k8s.io/v1**.
+Therefore, the `ingress.extraPaths` parameter must be updated to the new format.
+See the [v1.22 API deprecations guide](https://kubernetes.io/docs/reference/using-api/deprecation-guide/#ingress-v122) for more information.
+
+For the same reason `service.port` was renamed to `service.portNumber`.
+
+### To 5.0.0
+
+Version 5.0.0 introduces support for custom labels and refactor [Kubernetes recommended labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/common-labels/).
+This is a breaking change because many labels of all resources need to be updated to stay consistent.
+
+In order to upgrade, delete the Deployment before upgrading:
+
+```bash
+kubectl delete deployment my-release-oauth2-proxy
+```
+
+This will introduce a slight downtime.
+
+For users who don't want downtime, you can perform these actions:
+
+- Perform a non-cascading removal of the deployment that keeps the pods running
+- Add new labels to pods
+- Perform `helm upgrade`
+
+### To 6.0.0
+
+Version 6.0.0 bumps the version of the Redis subchart from ~10.6.0 to ~16.4.0.
+You probably need to adjust your Redis configuration.
+See [here](https://github.com/bitnami/charts/tree/master/bitnami/redis#upgrading) for detailed upgrade instructions.
+
+### To 7.0.0
+
+Version 7.0.0 introduces a new implementation to support multiple hostAliases.
+You probably need to adjust your hostAliases config.
+See [here](https://github.com/oauth2-proxy/manifests/pull/164/) for detailed information.
+
+## Configuration
+
+The following table lists the configurable parameters of the oauth2-proxy chart and their default values.
+
+| Parameter                                             | Description                                                                                                                                                                                                                                                      | Default                                                                          |
+|-------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------|
+| `affinity`                                            | node/pod affinities                                                                                                                                                                                                                                              | None                                                                             |
+| `authenticatedEmailsFile.enabled`                     | Enables authorize individual e-mail addresses                                                                                                                                                                                                                    | `false`                                                                          |
+| `authenticatedEmailsFile.persistence`                 | Defines how the e-mail addresses file will be projected, via a configmap or secret                                                                                                                                                                               | `configmap`                                                                      |
+| `authenticatedEmailsFile.template`                    | Name of the configmap or secret that is handled outside of that chart                                                                                                                                                                                            | `""`                                                                             |
+| `authenticatedEmailsFile.restrictedUserAccessKey`     | The key of the configmap or secret that holds the e-mail addresses list                                                                                                                                                                                          | `""`                                                                             |
+| `authenticatedEmailsFile.restricted_access`           | [e-mail addresses](https://oauth2-proxy.github.io/oauth2-proxy/configuration/providers/#email-authentication) list config                                                                                                                                        | `""`                                                                             |
+| `authenticatedEmailsFile.annotations`                 | configmap or secret annotations                                                                                                                                                                                                                                  | `nil`                                                                            |
+| `config.clientID`                                     | oauth client ID                                                                                                                                                                                                                                                  | `""`                                                                             |
+| `config.clientSecret`                                 | oauth client secret                                                                                                                                                                                                                                              | `""`                                                                             |
+| `config.cookieSecret`                                 | server specific cookie for the secret; create a new one with `openssl rand -base64 32 \| head -c 32 \| base64`                                                                                                                                                   | `""`                                                                             |
+| `config.existingSecret`                               | existing Kubernetes secret to use for OAuth2 credentials. See [oauth2-proxy.secrets helper](https://github.com/oauth2-proxy/manifests/blob/main/helm/oauth2-proxy/templates/_helpers.tpl#L157C13-L157C33) for the required values                                | `nil`                                                                            |
+| `config.configFile`                                   | custom [oauth2_proxy.cfg](https://github.com/oauth2-proxy/oauth2-proxy/blob/master/contrib/oauth2-proxy.cfg.example) contents for settings not overridable via environment nor command line                                                                      | `""`                                                                             |
+| `config.existingConfig`                               | existing Kubernetes configmap to use for the configuration file. See [config template](https://github.com/oauth2-proxy/manifests/blob/master/helm/oauth2-proxy/templates/configmap.yaml) for the required values                                                 | `nil`                                                                            |
+| `config.cookieName`                                   | The name of the cookie that oauth2-proxy will create.                                                                                                                                                                                                            | `""`                                                                             |
+| `autoscaling.enabled`                                 | Deploy a Horizontal Pod Autoscaler.                                                                                                                                                                                                                              | `false`                                                                          |
+| `autoscaling.minReplicas`                             | Minimum replicas for the Horizontal Pod Autoscaler.                                                                                                                                                                                                              | `1`                                                                              |
+| `autoscaling.maxReplicas`                             | Maximum replicas for the Horizontal Pod Autoscaler.                                                                                                                                                                                                              | `10`                                                                             |
+| `autoscaling.targetCPUUtilizationPercentage`          | Horizontal Pod Autoscaler setting.                                                                                                                                                                                                                               | `80`                                                                             |
+| `autoscaling.targetMemoryUtilizationPercentage`       | Horizontal Pod Autoscaler setting.                                                                                                                                                                                                                               | ``                                                                               |
+| `autoscaling.annotations`                             | Horizontal Pod Autoscaler annotations.                                                                                                                                                                                                                           | `{}`                                                                             |
+| `alphaConfig.enabled`                                 | Flag to toggle any alpha config-related logic                                                                                                                                                                                                                    | `false`                                                                          |
+| `alphaConfig.annotations`                             | Configmap annotations                                                                                                                                                                                                                                            | `{}`                                                                             |
+| `alphaConfig.serverConfigData`                        | Arbitrary configuration data to append to the server section                                                                                                                                                                                                     | `{}`                                                                             |
+| `alphaConfig.metricsConfigData`                       | Arbitrary configuration data to append to the metrics section                                                                                                                                                                                                    | `{}`                                                                             |
+| `alphaConfig.configData`                              | Arbitrary configuration data to append                                                                                                                                                                                                                           | `{}`                                                                             |
+| `alphaConfig.configFile`                              | Arbitrary configuration to append, treated as a Go template and rendered with the root context                                                                                                                                                                   | `""`                                                                             |
+| `alphaConfig.existingConfig`                          | existing Kubernetes configmap to use for the alpha configuration file. See [config template](https://github.com/oauth2-proxy/manifests/blob/master/helm/oauth2-proxy/templates/secret-alpha.yaml) for the required values                                        | `nil`                                                                            |
+| `alphaConfig.existingSecret`                          | existing Kubernetes secret to use for the alpha configuration file. See [config template](https://github.com/oauth2-proxy/manifests/blob/master/helm/oauth2-proxy/templates/secret-alpha.yaml) for the required values                                           | `nil`                                                                            |
+| `customLabels`                                        | Custom labels to add into metadata                                                                                                                                                                                                                               | `{}`                                                                             |
+| `config.google.adminEmail`                            | user impersonated by the Google service account                                                                                                                                                                                                                  | `""`                                                                             |
+| `config.google.useApplicationDefaultCredentials`      | use the application-default credentials (i.e. Workload Identity on GKE) instead of providing a service account JSON                                                                                                                                              | `false`                                                                          |
+| `config.google.targetPrincipal`                       | service account to use/impersonate                                                                                                                                                                                                                               | `""`                                                                             |
+| `config.google.serviceAccountJson`                    | Google service account JSON contents                                                                                                                                                                                                                             | `""`                                                                             |
+| `config.google.existingConfig`                        | existing Kubernetes configmap to use for the service account file. See [Google secret template](https://github.com/oauth2-proxy/manifests/blob/master/helm/oauth2-proxy/templates/google-secret.yaml) for the required values                                    | `nil`                                                                            |
+| `config.google.groups`                                | restrict logins to members of these Google groups                                                                                                                                                                                                                | `[]`                                                                             |
+| `containerPort`                                       | used to customize port on the deployment                                                                                                                                                                                                                         | `""`                                                                             |
+| `extraArgs`                                           | Extra arguments to give the binary. Either as a map with key:value pairs or as a list type, which allows the same flag to be configured multiple times. (e.g. `["--allowed-role=CLIENT_ID:CLIENT_ROLE_NAME_A", "--allowed-role=CLIENT_ID:CLIENT_ROLE_NAME_B"]`). | `{}` or `[]`                                                                     |
+| `extraContainers`                                     | List of extra containers to be added to the pod                                                                                                                                                                                                                  | `[]`                                                                             |
+| `extraEnv`                                            | key:value list of extra environment variables to give the binary                                                                                                                                                                                                 | `[]`                                                                             |
+| `extraVolumes`                                        | list of extra volumes                                                                                                                                                                                                                                            | `[]`                                                                             |
+| `extraVolumeMounts`                                   | list of extra volumeMounts                                                                                                                                                                                                                                       | `[]`                                                                             |
+| `hostAliases`                                         | hostAliases is a list of aliases to be added to /etc/hosts for network name resolution.                                                                                                                                                                          |                                                                                  |
+| `htpasswdFile.enabled`                                | enable htpasswd-file option                                                                                                                                                                                                                                      | `false`                                                                          |
+| `htpasswdFile.entries`                                | list of [encrypted user:passwords](https://oauth2-proxy.github.io/oauth2-proxy/configuration/overview#command-line-options)                                                                                                                                      | `{}`                                                                             |
+| `htpasswdFile.existingSecret`                         | existing Kubernetes secret to use for OAuth2 htpasswd file                                                                                                                                                                                                       | `""`                                                                             |
+| `httpScheme`                                          | `http` or `https`. `name` used for the port on the deployment. `httpGet` port `name` and `scheme` used for `liveness`- and `readinessProbes`. `name` and `targetPort` used for the service.                                                                      | `http`                                                                           |
+| `image.pullPolicy`                                    | Image pull policy                                                                                                                                                                                                                                                | `IfNotPresent`                                                                   |
+| `image.command`                                       | Define command to be executed by container at startup                                                                                                                                                                                                            | `[]`                                                                             |
+| `image.repository`                                    | Image repository                                                                                                                                                                                                                                                 | `quay.io/oauth2-proxy/oauth2-proxy`                                              |
+| `image.tag`                                           | Image tag                                                                                                                                                                                                                                                        | `""` (defaults to appVersion)                                                    |
+| `imagePullSecrets`                                    | Specify image pull secrets                                                                                                                                                                                                                                       | `nil` (does not add image pull secrets to deployed pods)                         |
+| `ingress.enabled`                                     | Enable Ingress                                                                                                                                                                                                                                                   | `false`                                                                          |
+| `ingress.className`                                   | name referencing IngressClass                                                                                                                                                                                                                                    | `nil`                                                                            |
+| `ingress.path`                                        | Ingress accepted path                                                                                                                                                                                                                                            | `/`                                                                              |
+| `ingress.pathType`                                    | Ingress [path type](https://kubernetes.io/docs/concepts/services-networking/ingress/#path-types)                                                                                                                                                                 | `ImplementationSpecific`                                                         |
+| `ingress.extraPaths`                                  | Ingress extra paths to prepend to every host configuration. Useful when configuring [custom actions with AWS ALB Ingress Controller](https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.8/guide/ingress/annotations/).                            | `[]`                                                                             |
+| `ingress.labels`                                      | Ingress extra labels                                                                                                                                                                                                                                             | `{}`                                                                             |
+| `ingress.annotations`                                 | Ingress annotations                                                                                                                                                                                                                                              | `nil`                                                                            |
+| `ingress.hosts`                                       | Ingress accepted hostnames                                                                                                                                                                                                                                       | `nil`                                                                            |
+| `ingress.tls`                                         | Ingress TLS configuration                                                                                                                                                                                                                                        | `nil`                                                                            |
+| `initContainers.waitForRedis.enabled`                 | If `redis.enabled` is true, use an init container to wait for the Redis master pod to be ready. If `serviceAccount.enabled` is true, create additionally a role/binding to get, list, and watch the Redis master pod                                             | `true`                                                                           |
+| `initContainers.waitForRedis.image.pullPolicy`        | kubectl image pull policy                                                                                                                                                                                                                                        | `IfNotPresent`                                                                   |
+| `initContainers.waitForRedis.image.repository`        | kubectl image repository                                                                                                                                                                                                                                         | `docker.io/bitnami/kubectl`                                                      |
+| `initContainers.waitForRedis.kubectlVersion`          | kubectl version to use for the init container                                                                                                                                                                                                                    | `printf "%s.%s" .Capabilities.KubeVersion.Major (.Capabilities.KubeVersion.Minor | replace "+" "")`
+| `initContainers.waitForRedis.securityContext.enabled` | enable Kubernetes security context on container                                                                                                                                                                                                                  | `true`                                                                           |
+| `initContainers.waitForRedis.timeout`                 | number of seconds                                                                                                                                                                                                                                                | 180                                                                              |
+| `initContainers.waitForRedis.resources`               | pod resource requests & limits                                                                                                                                                                                                                                   | `{}`                                                                             |
+| `livenessProbe.enabled`                               | enable Kubernetes livenessProbe. Disable to use oauth2-proxy with Istio mTLS. See [Istio FAQ](https://istio.io/help/faq/security/#k8s-health-checks)                                                                                                             | `true`                                                                           |
+| `livenessProbe.initialDelaySeconds`                   | number of seconds                                                                                                                                                                                                                                                | 0                                                                                |
+| `livenessProbe.timeoutSeconds`                        | number of seconds                                                                                                                                                                                                                                                | 1                                                                                |
+| `namespaceOverride`                                   | Override the deployment namespace                                                                                                                                                                                                                                | `""`                                                                             |
+| `nodeSelector`                                        | node labels for pod assignment                                                                                                                                                                                                                                   | `{}`                                                                             |
+| `deploymentAnnotations`                               | annotations to add to the deployment                                                                                                                                                                                                                             | `{}`                                                                             |
+| `podAnnotations`                                      | annotations to add to each pod                                                                                                                                                                                                                                   | `{}`                                                                             |
+| `podLabels`                                           | additional labels to add to each pod                                                                                                                                                                                                                             | `{}`                                                                             |
+| `podDisruptionBudget.enabled`                         | Enabled creation of PodDisruptionBudget (only if replicaCount > 1)                                                                                                                                                                                               | true                                                                             |
+| `podDisruptionBudget.minAvailable`                    | minAvailable parameter for PodDisruptionBudget                                                                                                                                                                                                                   | 1                                                                                |
+| `podSecurityContext`                                  | Kubernetes security context to apply to pod                                                                                                                                                                                                                      | `{}`                                                                             |
+| `priorityClassName`                                   | priorityClassName                                                                                                                                                                                                                                                | `nil`                                                                            |
+| `readinessProbe.enabled`                              | enable Kubernetes readinessProbe. Disable to use oauth2-proxy with Istio mTLS. See [Istio FAQ](https://istio.io/help/faq/security/#k8s-health-checks)                                                                                                            | `true`                                                                           |
+| `readinessProbe.initialDelaySeconds`                  | number of seconds                                                                                                                                                                                                                                                | 0                                                                                |
+| `readinessProbe.timeoutSeconds`                       | number of seconds                                                                                                                                                                                                                                                | 5                                                                                |
+| `readinessProbe.periodSeconds`                        | number of seconds                                                                                                                                                                                                                                                | 10                                                                               |
+| `readinessProbe.successThreshold`                     | number of successes                                                                                                                                                                                                                                              | 1                                                                                |
+| `replicaCount`                                        | desired number of pods                                                                                                                                                                                                                                           | `1`                                                                              |
+| `resources`                                           | pod resource requests & limits                                                                                                                                                                                                                                   | `{}`                                                                             |
+| `revisionHistoryLimit`                                | maximum number of revisions maintained                                                                                                                                                                                                                           | 10                                                                               |
+| `service.portNumber`                                  | port number for the service                                                                                                                                                                                                                                      | `80`                                                                             |
+| `service.appProtocol`                                 | application protocol on the port of the service                                                                                                                                                                                                                  | `http`                                                                           |
+| `service.externalTrafficPolicy`                       | denotes if the service desires to route external traffic to node-local or cluster-wide endpoints                                                                                                                                                                 | `Cluster`                                                                        |
+| `service.internalTrafficPolicy`                       | denotes if the service desires to route internal traffic to node-local or cluster-wide endpoints                                                                                                                                                                 | `Cluster`                                                                        |
+| `service.type`                                        | type of service                                                                                                                                                                                                                                                  | `ClusterIP`                                                                      |
+| `service.clusterIP`                                   | cluster ip address                                                                                                                                                                                                                                               | `nil`                                                                            |
+| `service.loadBalancerIP`                              | ip of load balancer                                                                                                                                                                                                                                              | `nil`                                                                            |
+| `service.loadBalancerSourceRanges`                    | allowed source ranges in load balancer                                                                                                                                                                                                                           | `nil`                                                                            |
+| `service.nodePort`                                    | external port number for the service when service.type is `NodePort`                                                                                                                                                                                             | `nil`                                                                            |
+| `serviceAccount.enabled`                              | create a service account                                                                                                                                                                                                                                         | `true`                                                                           |
+| `serviceAccount.name`                                 | the service account name                                                                                                                                                                                                                                         | ``                                                                               |
+| `serviceAccount.annotations`                          | (optional) annotations for the service account                                                                                                                                                                                                                   | `{}`                                                                             |
+| `strategy`                                            | configure deployment strategy                                                                                                                                                                                                                                    | `{}`                                                                             |
+| `tolerations`                                         | list of node taints to tolerate                                                                                                                                                                                                                                  | `[]`                                                                             |
+| `securityContext.enabled`                             | enable Kubernetes security context on container                                                                                                                                                                                                                  | `true`                                                                           |
+| `proxyVarsAsSecrets`                                  | Choose between environment values or secrets for setting up OAUTH2_PROXY variables. When set to false, remember to add the variables OAUTH2_PROXY_CLIENT_ID, OAUTH2_PROXY_CLIENT_SECRET, OAUTH2_PROXY_COOKIE_SECRET in extraEnv                                  | `true`                                                                           |
+| `sessionStorage.type`                                 | Session storage type which can be one of the following: cookie or Redis                                                                                                                                                                                          | `cookie`                                                                         |
+| `sessionStorage.redis.existingSecret`                 | Name of the Kubernetes secret containing the Redis & Redis sentinel password values (see also `sessionStorage.redis.passwordKey`)                                                                                                                                | `""`                                                                             |
+| `sessionStorage.redis.password`                       | Redis password. Applicable for all Redis configurations. Taken from Redis subchart secret if not set. `sessionStorage.redis.existingSecret` takes precedence                                                                                                     | `nil`                                                                            |
+| `sessionStorage.redis.passwordKey`                    | Key of the Kubernetes secret data containing the Redis password value                                                                                                                                                                                            | `redis-password`                                                                 |
+| `sessionStorage.redis.clientType`                     | Allows the user to select which type of client will be used for the Redis instance. Possible options are: `sentinel`, `cluster` or `standalone`                                                                                                                  | `standalone`                                                                     |
+| `sessionStorage.redis.standalone.connectionUrl`       | URL of Redis standalone server for Redis session storage (e.g., `redis://HOST[:PORT]`). Automatically generated if not set.                                                                                                                                      | `""`                                                                             |
+| `sessionStorage.redis.cluster.connectionUrls`         | List of Redis cluster connection URLs (e.g., `["redis://127.0.0.1:8000", "redis://127.0.0.1:8000"]`)                                                                                                                                                             | `[]`                                                                             |
+| `sessionStorage.redis.sentinel.existingSecret`        | Name of the Kubernetes secret containing the Redis sentinel password value (see also `sessionStorage.redis.sentinel.passwordKey`). Default: `sessionStorage.redis.existingSecret`                                                                                | `""`                                                                             |
+| `sessionStorage.redis.sentinel.password`              | Redis sentinel password. Used only for sentinel connection; any Redis node passwords need to use `sessionStorage.redis.password`                                                                                                                                 | `nil`                                                                            |
+| `sessionStorage.redis.sentinel.passwordKey`           | Key of the Kubernetes secret data containing the Redis sentinel password value                                                                                                                                                                                   | `redis-sentinel-password`                                                        |
+| `sessionStorage.redis.sentinel.masterName`            | Redis sentinel master name                                                                                                                                                                                                                                       | `nil`                                                                            |
+| `sessionStorage.redis.sentinel.connectionUrls`        | List of Redis sentinel connection URLs (e.g. `["redis://127.0.0.1:8000", "redis://127.0.0.1:8000"]`)                                                                                                                                                             | `[]`                                                                             |
+| `topologySpreadConstraints`                           | List of pod topology spread constraints                                                                                                                                                                                                                          | `[]`                                                                             |
+| `redis.enabled`                                       | Enable the Redis subchart deployment                                                                                                                                                                                                                             | `false`                                                                          |
+| `checkDeprecation`                                    | Enable deprecation checks                                                                                                                                                                                                                                        | `true`                                                                           |
+| `metrics.enabled`                                     | Enable Prometheus metrics endpoint                                                                                                                                                                                                                               | `true`                                                                           |
+| `metrics.port`                                        | Serve Prometheus metrics on this port                                                                                                                                                                                                                            | `44180`                                                                          |
+| `metrics.nodePort`                                    | External port for the metrics when service.type is `NodePort`                                                                                                                                                                                                    | `nil`                                                                            |
+| `metrics.service.appProtocol`                         | application protocol of the metrics port in the service                                                                                                                                                                                                          | `http`                                                                           |
+| `metrics.serviceMonitor.enabled`                      | Enable Prometheus Operator ServiceMonitor                                                                                                                                                                                                                        | `false`                                                                          |
+| `metrics.serviceMonitor.namespace`                    | Define the namespace where to deploy the ServiceMonitor resource                                                                                                                                                                                                 | `""`                                                                             |
+| `metrics.serviceMonitor.prometheusInstance`           | Prometheus Instance definition                                                                                                                                                                                                                                   | `default`                                                                        |
+| `metrics.serviceMonitor.interval`                     | Prometheus scrape interval                                                                                                                                                                                                                                       | `60s`                                                                            |
+| `metrics.serviceMonitor.scrapeTimeout`                | Prometheus scrape timeout                                                                                                                                                                                                                                        | `30s`                                                                            |
+| `metrics.serviceMonitor.labels`                       | Add custom labels to the ServiceMonitor resource                                                                                                                                                                                                                 | `{}`                                                                             |
+| `metrics.serviceMonitor.scheme`                       | HTTP scheme for scraping. It can be used with `tlsConfig` for example, if using Istio mTLS.                                                                                                                                                                      | `""`                                                                             |
+| `metrics.serviceMonitor.tlsConfig`                    | TLS configuration when scraping the endpoint. For example, if using Istio mTLS.                                                                                                                                                                                  | `{}`                                                                             |
+| `metrics.serviceMonitor.bearerTokenFile`              | Path to bearer token file.                                                                                                                                                                                                                                       | `""`                                                                             |
+| `metrics.serviceMonitor.annotations`                  | Used to pass annotations that are used by the Prometheus installed in your cluster                                                                                                                                                                               | `{}`                                                                             |
+| `metrics.serviceMonitor.metricRelabelings`            | Metric relabel configs to apply to samples before ingestion.                                                                                                                                                                                                     | `[]`                                                                             |
+| `metrics.serviceMonitor.relabelings`                  | Relabel configs to apply to samples before ingestion.                                                                                                                                                                                                            | `[]`                                                                             |
+| `extraObjects`                                        | Extra K8s manifests to deploy                                                                                                                                                                                                                                    | `[]`                                                                             |
+
+Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
+
+```console
+$ helm install my-release oauth2-proxy/oauth2-proxy \
+  --set=image.tag=v0.0.2,resources.limits.cpu=200m
+```
+
+Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example,
+
+```console
+$ helm install my-release oauth2-proxy/oauth2-proxy -f values.yaml
+```
+
+> **Tip**: You can use the default [values.yaml](values.yaml)
+
+## TLS Configuration
+
+See: [TLS Configuration](https://oauth2-proxy.github.io/oauth2-proxy/configuration/tls/).
+Use ```values.yaml``` like:
+
+```yaml
+...
+extraArgs:
+  tls-cert-file: /path/to/cert.pem
+  tls-key-file: /path/to/cert.key
+
+extraVolumes:
+  - name: ssl-cert
+    secret:
+      secretName: my-ssl-secret
+
+extraVolumeMounts:
+  - mountPath: /path/to/
+    name: ssl-cert
+...
+```
+
+With a secret called `my-ssl-secret`:
+
+```yaml
+...
+data:
+  cert.pem: AB..==
+  cert.key: CD..==
+```
+
+## Extra environment variable templating
+The extraEnv value supports the tpl function, which evaluates strings as templates inside the deployment template.
+This is useful for passing a template string as a value to the chart's extra environment variables and rendering external configuration environment values.
+
+```yaml
+...
+tplValue: "This is a test value for the tpl function"
+extraEnv:
+  - name: TEST_ENV_VAR_1
+    value: test_value_1
+  - name: TEST_ENV_VAR_2
+    value: '{{ .Values.tplValue }}'
+```
+
+## Custom templates configuration
+You can replace the default template files using a Kubernetes `configMap` volume. The default templates are the two files [sign_in.html](https://github.com/oauth2-proxy/oauth2-proxy/blob/master/pkg/app/pagewriter/sign_in.html) and [error.html](https://github.com/oauth2-proxy/oauth2-proxy/blob/master/pkg/app/pagewriter/error.html).
+
+```yaml
+config:
+  configFile: |
+    ...
+    custom_templates_dir = "/data/custom-templates"
+
+extraVolumes:
+  - name: custom-templates
+    configMap:
+      name: oauth2-proxy-custom-templates
+
+extraVolumeMounts:
+  - name: custom-templates
+    mountPath: "/data/custom-templates"
+    readOnly: true
+
+extraObjects:
+  - apiVersion: v1
+    kind: ConfigMap
+    metadata:
+      name: oauth2-proxy-custom-templates
+    data:
+      sign_in.html: |
+        <!DOCTYPE html>
+        <html>
+        <body>sign_in</body>
+        </html>
+      error.html: |
+        <!DOCTYPE html>
+        <html>
+        <body>
+        <h1>error</h1>
+        <p>{{.StatusCode}}</p>
+        </body>
+        </html>
+```
+
+## Multi whitelist-domain configuration
+You must use the config.configFile section for a multi-whitelist-domain configuration for one Oauth2-proxy instance.
+
+It will be overwriting the `/etc/oauth2_proxy/oauth2_proxy.cfg` [configuration file](https://oauth2-proxy.github.io/oauth2-proxy/configuration/overview#config-file).
+In this example, Google provider is used, but you can find all other provider configurations here [oauth_provider](https://oauth2-proxy.github.io/oauth2-proxy/configuration/providers/).
+
+```
+config:
+  ...
+  clientID="$YOUR_GOOGLE_CLIENT_ID"
+  clientSecret="$YOUR_GOOGLE_CLIENT_SECRET"
+  cookieSecret="$YOUR_COOKIE_SECRET"
+  configFile: |
+    ...
+    email_domains = [ "*" ]
+    upstreams = [ "file:///dev/null" ]
+    cookie_secure = "false"
+    cookie_domains = [ ".domain.com", ".example.io" ]
+    whitelist_domains = [ ".domain.com", ".example.io"]
+    provider = "google"
+```
diff --git a/kubernetes/authentication/components/oauth2-proxy/ci/horizontal-pod-autoscaling-values.yaml b/kubernetes/authentication/components/oauth2-proxy/ci/horizontal-pod-autoscaling-values.yaml
new file mode 100644 (file)
index 0000000..fd1a006
--- /dev/null
@@ -0,0 +1,5 @@
+# Enables Horizontal Pod Autoscaler and removes replica count in deployment
+autoscaling:
+  enabled: true
+  annotations:
+    test-annotations/test: "true"
diff --git a/kubernetes/authentication/components/oauth2-proxy/ci/servicemonitor-values.yaml b/kubernetes/authentication/components/oauth2-proxy/ci/servicemonitor-values.yaml
new file mode 100644 (file)
index 0000000..0c232bf
--- /dev/null
@@ -0,0 +1,18 @@
+metrics:
+  enabled: true
+  serviceMonitor:
+    enabled: true
+    annotations:
+      key: value
+    metricRelabelings:
+    - action: keep
+      regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+'
+      sourceLabels: [__name__]
+
+    relabelings:
+    - sourceLabels: [__meta_kubernetes_pod_node_name]
+      separator: ;
+      regex: ^(.*)$
+      targetLabel: nodename
+      replacement: $1
+      action: replace
diff --git a/kubernetes/authentication/components/oauth2-proxy/ci/tpl-values.yaml b/kubernetes/authentication/components/oauth2-proxy/ci/tpl-values.yaml
new file mode 100644 (file)
index 0000000..d217653
--- /dev/null
@@ -0,0 +1,62 @@
+extraEnv:
+  - name: TEST_ENV_VAR_2
+    value: '{{ $.Release.Name }}'
+ingress:
+  enabled: true
+  hosts:
+    - "{{ $.Release.Name }}.local"
+  tls:
+    - hosts:
+        - "{{ $.Release.Name }}.local"
+  annotations:
+    test-annotations/test: "{{ $.Release.Name }}"
+oauth2-proxy:
+  checkDeprecation: false
+  config:
+    clientSecret: '{{ $.Release.Name }}'
+    configFile: |
+      oidc_issuer_url = "https://{{ $.Release.Name }}/dex"
+
+pass_authorization_header: "true"
+
+extraArgs:
+  pass-authorization-header: "{{ $.Values.pass_authorization_header }}"
+
+extraVolumes:
+  - name: "{{ $.Release.Name }}-secret"
+    secret:
+      secretName: "{{ .Release.Name }}-secret"
+      items:
+        - key: secret
+          path: secret
+
+authenticatedEmailsFile:
+  annotations:
+    test-annotations/test: "{{ $.Release.Name }}"
+
+config:
+  annotations:
+    test-annotations/test: "{{ $.Release.Name }}"
+
+deploymentAnnotations:
+  test-annotations/test: "{{ $.Release.Name }}"
+
+autoscaling:
+  annotations:
+    test-annotations/test: "{{ $.Release.Name }}"
+
+alphaConfig:
+  annotations:
+    test-annotations/test: "{{ $.Release.Name }}"
+
+service:
+  annotations:
+    test-annotations/test: "{{ $.Release.Name }}"
+
+serviceAccount:
+  annotations:
+    test-annotations/test: "{{ $.Release.Name }}"
+
+serviceMonitor:
+  annotations:
+    test-annotations/test: "{{ $.Release.Name }}"
diff --git a/kubernetes/authentication/components/oauth2-proxy/scripts/check-redis.sh b/kubernetes/authentication/components/oauth2-proxy/scripts/check-redis.sh
new file mode 100755 (executable)
index 0000000..62dd9b6
--- /dev/null
@@ -0,0 +1,61 @@
+#!/bin/sh
+
+RETRY_INTERVAL=5  # Interval between retries in seconds
+elapsed=0  # Elapsed time
+
+check_redis() {
+    host=$1
+    port=$2
+    while [ $elapsed -lt $TOTAL_RETRY_TIME ]; do
+        echo "Checking Redis at $host:$port... Elapsed time: ${elapsed}s"
+        if nc -z -w1 $TIMEOUT $host $port > /dev/null 2>&1; then
+            echo "Redis is up at $host:$port!"
+            return 0
+        else
+            echo "Redis is down at $host:$port. Retrying in $RETRY_INTERVAL seconds."
+            sleep $RETRY_INTERVAL
+            elapsed=$((elapsed + RETRY_INTERVAL))
+        fi
+    done
+    echo "Failed to connect to Redis at $host:$port after $TOTAL_RETRY_TIME seconds."
+    return 1
+}
+
+# For parsing and checking connections
+parse_and_check() {
+    url=$1
+
+    # Strip either redis:// or rediss://
+    if [ $url = "rediss://*" ]; then
+        clean_url=${url#rediss://}
+        echo "Using secure Rediss connection..."
+    else
+        clean_url=${url#redis://}
+        echo "Using standard Redis connection..."
+    fi
+
+    host=$(echo $clean_url | cut -d':' -f1)
+    port=$(echo $clean_url | cut -d':' -f2)
+    check_redis $host $port
+}
+
+# Main
+if [ -n "$OAUTH2_PROXY_REDIS_CLUSTER_CONNECTION_URLS" ]; then
+    echo "Checking Redis in cluster mode..."
+    echo "$OAUTH2_PROXY_REDIS_CLUSTER_CONNECTION_URLS" | tr ',' '\n' | while read -r addr; do
+        parse_and_check $addr || exit 1
+    done
+elif [ -n "$OAUTH2_PROXY_REDIS_SENTINEL_CONNECTION_URLS" ]; then
+    echo "Checking Redis in sentinel mode..."
+    echo "$OAUTH2_PROXY_REDIS_SENTINEL_CONNECTION_URLS" | tr ',' '\n' | while read -r addr; do
+        parse_and_check $addr || exit 1
+    done
+elif [ -n "$OAUTH2_PROXY_REDIS_CONNECTION_URL" ]; then
+    echo "Checking standalone Redis..."
+    parse_and_check "$OAUTH2_PROXY_REDIS_CONNECTION_URL" || exit 1
+else
+    echo "Redis configuration not specified."
+    exit 1
+fi
+
+echo "Redis check completed."
diff --git a/kubernetes/authentication/components/oauth2-proxy/templates/NOTES.txt b/kubernetes/authentication/components/oauth2-proxy/templates/NOTES.txt
new file mode 100644 (file)
index 0000000..36ded35
--- /dev/null
@@ -0,0 +1,3 @@
+To verify that oauth2-proxy has started, run:
+
+  kubectl --namespace={{ template "oauth2-proxy.namespace" $ }} get pods -l "app={{ template "oauth2-proxy.name" . }}"
@@ -78,6 +78,17 @@ Create the name of the service account to use
 {{- end -}}
 {{- end -}}
 
+{{/*
+Allow the release namespace to be overridden for multi-namespace deployments in combined charts
+*/}}
+{{- define "oauth2-proxy.namespace" -}}
+  {{- if .Values.namespaceOverride -}}
+    {{- .Values.namespaceOverride -}}
+  {{- else -}}
+    {{- .Release.Namespace -}}
+  {{- end -}}
+{{- end -}}
+
 {{/*
 Redis subcharts fullname
 */}}
@@ -106,5 +117,45 @@ Compute the redis url if not set explicitly.
 Returns the version
 */}}
 {{- define "oauth2-proxy.version" -}}
-{{ trimPrefix "v" (lower (.Values.image.tag | default (printf "v%s" .Chart.AppVersion))) }}
+{{ .Values.image.tag | default (printf "v%s" .Chart.AppVersion) }}
+{{- end -}}
+
+{{/*
+Returns the kubectl version
+Workaround for EKS https://github.com/aws/eks-distro/issues/1128
+*/}}
+{{- define "kubectl.version" -}}
+{{- if .Values.initContainers.waitForRedis.kubectlVersion -}}
+{{ .Values.initContainers.waitForRedis.kubectlVersion }}
+{{- else -}}
+{{- printf "%s.%s" .Capabilities.KubeVersion.Major (.Capabilities.KubeVersion.Minor | replace "+" "") -}}
+{{- end -}}
+{{- end -}}
+
+{{- define "oauth2-proxy.alpha-config" -}}
+---
+server:
+  BindAddress: '0.0.0.0:4180'
+{{- if .Values.alphaConfig.serverConfigData }}
+{{- toYaml .Values.alphaConfig.serverConfigData | nindent 2 }}
+{{- end }}
+{{- if .Values.metrics.enabled }}
+metricsServer:
+  BindAddress: '0.0.0.0:44180'
+{{- if .Values.alphaConfig.metricsConfigData }}
+{{- toYaml .Values.alphaConfig.metricsConfigData | nindent 2 }}
+{{- end }}
+{{- end }}
+{{- if .Values.alphaConfig.configData }}
+{{- toYaml .Values.alphaConfig.configData | nindent 0 }}
+{{- end }}
+{{- if .Values.alphaConfig.configFile }}
+{{- tpl .Values.alphaConfig.configFile $ | nindent 0 }}
+{{- end }}
+{{- end -}}
+
+{{- define "oauth2-proxy.secrets" -}}
+cookie-secret: {{ tpl .Values.config.cookieSecret $ | b64enc | quote }}
+client-secret: {{ tpl .Values.config.clientSecret $ | b64enc | quote }}
+client-id: {{ tpl .Values.config.clientID $ | b64enc | quote }}
 {{- end -}}
@@ -6,11 +6,12 @@ metadata:
   labels:
     app: {{ template "oauth2-proxy.name" . }}
 {{- include "oauth2-proxy.labels" . | indent 4 }}
-{{- if .Values.authenticatedEmailsFile.annotations }}
+{{- with .Values.authenticatedEmailsFile.annotations }}
   annotations:
-{{ toYaml .Values.authenticatedEmailsFile.annotations | indent 4 }}
+{{ tpl ( toYaml . ) $ | indent 4 }}
 {{- end }}
   name: {{ template "oauth2-proxy.fullname" . }}-accesslist
+  namespace: {{ template "oauth2-proxy.namespace" $ }}
 data:
   {{ default "restricted_user_access" .Values.authenticatedEmailsFile.restrictedUserAccessKey }}: {{ .Values.authenticatedEmailsFile.restricted_access | quote }}
 {{- end }}
diff --git a/kubernetes/authentication/components/oauth2-proxy/templates/configmap-wait-for-redis.yaml b/kubernetes/authentication/components/oauth2-proxy/templates/configmap-wait-for-redis.yaml
new file mode 100644 (file)
index 0000000..721048d
--- /dev/null
@@ -0,0 +1,13 @@
+{{- if and .Values.redis.enabled .Values.initContainers.waitForRedis.enabled }}
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  labels:
+    app: {{ template "oauth2-proxy.name" . }}
+{{- include "oauth2-proxy.labels" . | indent 4 }}
+  name: {{ template "oauth2-proxy.fullname" . }}-wait-for-redis
+  namespace: {{ template "oauth2-proxy.namespace" $ }}
+data:
+  check-redis.sh: |
+{{ .Files.Get "scripts/check-redis.sh" | indent 4 }}
+{{- end }}
@@ -3,14 +3,15 @@
 apiVersion: v1
 kind: ConfigMap
 metadata:
-{{- if .Values.config.annotations }}
+{{- with .Values.config.annotations }}
   annotations:
-{{ toYaml .Values.config.annotations | indent 4 }}
+{{ tpl ( toYaml . ) $ | indent 4 }}
 {{- end }}
   labels:
     app: {{ template "oauth2-proxy.name" . }}
 {{- include "oauth2-proxy.labels" . | indent 4 }}
   name: {{ template "oauth2-proxy.fullname" . }}
+  namespace: {{ template "oauth2-proxy.namespace" $ }}
 data:
   oauth2_proxy.cfg: {{ tpl .Values.config.configFile $ | quote }}
 {{- end }}
@@ -4,15 +4,20 @@ metadata:
   labels:
     app: {{ template "oauth2-proxy.name" . }}
 {{- include "oauth2-proxy.labels" . | indent 4 }}
-  {{- if .Values.deploymentAnnotations }}
+  {{- with .Values.deploymentAnnotations }}
   annotations:
-{{ toYaml .Values.deploymentAnnotations | indent 8 }}
+{{ tpl ( toYaml . ) $ | indent 4 }}
   {{- end }}
   name: {{ template "oauth2-proxy.fullname" . }}
+  namespace: {{ template "oauth2-proxy.namespace" $ }}
 spec:
+  {{- if not .Values.autoscaling.enabled }}
   replicas: {{ .Values.replicaCount }}
-  {{- if .Values.revisionHistoryLimit }}
+  {{- end }}
   revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
+  {{- with .Values.strategy }}
+  strategy:
+    {{ toYaml . | nindent 4 }}
   {{- end }}
   selector:
     matchLabels:
@@ -20,16 +25,20 @@ spec:
   template:
     metadata:
       annotations:
-        checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
+        {{- if .Values.config.configFile }}
+        checksum/config: {{ tpl .Values.config.configFile $ | sha256sum }}
+        {{- end }}
         {{- if .Values.alphaConfig.enabled }}
-        checksum/alpha-config: {{ include (print $.Template.BasePath "/configmap-alpha.yaml") . | sha256sum }}
+        checksum/alpha-config: {{ include "oauth2-proxy.alpha-config" . | sha256sum }}
         {{- end }}
+        {{- if .Values.authenticatedEmailsFile.enabled }}
         checksum/config-emails: {{ include (print $.Template.BasePath "/configmap-authenticated-emails-file.yaml") . | sha256sum }}
-        checksum/secret: {{ include (print $.Template.BasePath "/secret.yaml") . | sha256sum }}
+        {{- end }}
+        checksum/secret: {{ include "oauth2-proxy.secrets" . | sha256sum }}
         checksum/google-secret: {{ include (print $.Template.BasePath "/google-secret.yaml") . | sha256sum }}
         checksum/redis-secret: {{ include (print $.Template.BasePath "/redis-secret.yaml") . | sha256sum }}
 {{- if .Values.htpasswdFile.enabled }}
-        checksum/htpasswd: {{ include (print $.Template.BasePath "/secret-htpasswd-file.yaml") . | sha256sum }}
+        checksum/htpasswd: {{ toYaml .Values.htpasswdFile.entries | sha256sum }}
 {{- end }}
     {{- if .Values.podAnnotations }}
 {{ toYaml .Values.podAnnotations | indent 8 }}
@@ -49,18 +58,60 @@ spec:
         {{- toYaml . | nindent 8 }}
       {{- end }}
       serviceAccountName: {{ template "oauth2-proxy.serviceAccountName" . }}
-      automountServiceAccountToken : {{ .Values.serviceAccount.automountServiceAccountToken }}
-      {{- if .Values.hostAlias.enabled }}
+      automountServiceAccountToken: {{ .Values.serviceAccount.automountServiceAccountToken }}
+      {{- if .Values.hostAliases }}
       hostAliases:
-        - ip: {{ .Values.hostAlias.ip }}
-          hostnames:
-          - {{ .Values.hostAlias.hostname }}
+        {{ toYaml .Values.hostAliases | nindent 8}}
+      {{- end }}
+      {{- if and .Values.redis.enabled .Values.initContainers.waitForRedis.enabled }}
+      initContainers:
+      - name: wait-for-redis
+        #image: "{{ .Values.initContainers.waitForRedis.image.repository }}:{{ .Values.initContainers.waitForRedis.image.tag }}"
+        image: "{{ include "repositoryGenerator.dockerHubRepository" . }}/{{ .Values.initContainers.waitForRedis.image.repository }}:{{ .Values.initContainers.waitForRedis.image.tag }}"
+        imagePullPolicy: {{ .Values.initContainers.waitForRedis.image.pullPolicy }}
+        command: ["/bin/sh", "-c", "/scripts/check-redis.sh"]
+        env:
+        - name: TOTAL_RETRY_TIME
+          value: "{{ .Values.initContainers.waitForRedis.timeout }}"
+        {{- if eq (default "" .Values.sessionStorage.redis.clientType) "standalone" }}
+        - name: OAUTH2_PROXY_REDIS_CONNECTION_URL
+          value: {{ include "oauth2-proxy.redis.StandaloneUrl" . }}
+        {{- else if eq (default "" .Values.sessionStorage.redis.clientType) "cluster" }}
+        - name: OAUTH2_PROXY_REDIS_USE_CLUSTER
+          value: "true"
+        - name: OAUTH2_PROXY_REDIS_CLUSTER_CONNECTION_URLS
+          value: {{ .Values.sessionStorage.redis.cluster.connectionUrls }}
+        {{- else if eq (default "" .Values.sessionStorage.redis.clientType) "sentinel" }}
+        - name: OAUTH2_PROXY_REDIS_USE_SENTINEL
+          value: "true"
+        - name: OAUTH2_PROXY_REDIS_SENTINEL_CONNECTION_URLS
+          value: {{ .Values.sessionStorage.redis.sentinel.connectionUrls }}
+        {{- end }}
+      {{- if .Values.initContainers.waitForRedis.securityContext.enabled }}
+      {{- $securityContext := unset .Values.initContainers.waitForRedis.securityContext "enabled" }}
+        securityContext:
+          {{- toYaml $securityContext | nindent 10 }}
+      {{- end }}
+        resources:
+          {{- toYaml .Values.initContainers.waitForRedis.resources | nindent 10 }}
+        volumeMounts:
+        - name: redis-script
+          mountPath: /scripts
+      {{- end }}
+      {{- if .Values.terminationGracePeriodSeconds }}
+      terminationGracePeriodSeconds: {{ .Values.terminationGracePeriodSeconds }}
       {{- end }}
       containers:
       - name: {{ .Chart.Name }}
-        image: "{{ include "repositoryGenerator.quayRepository" . }}/{{ .Values.image.repository }}:v{{ include "oauth2-proxy.version" . }}"
-        #image: "{{ .Values.image.repository }}:v{{ include "oauth2-proxy.version" . }}"
+        image: "{{ include "repositoryGenerator.quayRepository" . }}/{{ .Values.image.repository }}:{{ include "oauth2-proxy.version" . }}"
+        #image: "{{ .Values.image.repository }}:{{ include "oauth2-proxy.version" . }}"
         imagePullPolicy: {{ .Values.image.pullPolicy }}
+        {{- if .Values.image.command }}
+        command:
+          {{- range .Values.image.command }}
+          - {{ . | quote }}
+          {{- end }}
+        {{- end }}
         args:
         {{- if .Values.alphaConfig.enabled }}
           - --alpha-config=/etc/oauth2_proxy/oauth2_proxy.yml
@@ -76,7 +127,7 @@ spec:
         {{- end }}
         {{- if kindIs "map" .Values.extraArgs }}
           {{- range $key, $value := .Values.extraArgs }}
-          {{- if $value }}
+          {{- if not (kindIs "invalid" $value) }}
           - --{{ $key }}={{ tpl ($value | toString) $ }}
           {{- else }}
           - --{{ $key }}
@@ -95,7 +146,7 @@ spec:
         {{- if .Values.authenticatedEmailsFile.template }}
           - --authenticated-emails-file=/etc/oauth2-proxy/{{ .Values.authenticatedEmailsFile.template }}
         {{- else }}
-          - --authenticated-emails-file=/etc/oauth2-proxy/authenticated-emails-list
+          - --authenticated-emails-file=/etc/oauth2-proxy/{{ template "oauth2-proxy.fullname" . }}-accesslist
         {{- end }}
         {{- end }}
         {{- with .Values.config.google }}
@@ -119,6 +170,10 @@ spec:
         {{- if .Values.htpasswdFile.enabled }}
           - --htpasswd-file=/etc/oauth2_proxy/htpasswd/users.txt
         {{- end }}
+{{- if .Values.lifecycle }}
+        lifecycle:
+{{ toYaml .Values.lifecycle | indent 10 }}
+{{- end }}
         env:
         {{- if .Values.proxyVarsAsSecrets }}
         - name: OAUTH2_PROXY_CLIENT_ID
@@ -183,6 +238,10 @@ spec:
         {{- end }}
         {{- if .Values.extraEnv }}
 {{ tpl (toYaml .Values.extraEnv) . | indent 8 }}
+        {{- end }}
+        {{- if .Values.envFrom }}
+        envFrom:
+{{ tpl (toYaml .Values.envFrom) . | indent 8 }}
         {{- end }}
         ports:
         {{- if .Values.containerPort }}
@@ -284,7 +343,7 @@ spec:
 {{- if .Values.authenticatedEmailsFile.template }}
             path: {{ .Values.authenticatedEmailsFile.template }}
 {{- else }}
-            path: authenticated-emails-list
+            path: {{ template "oauth2-proxy.fullname" . }}-accesslist
 {{- end }}
 {{- if .Values.authenticatedEmailsFile.template }}
           secretName: {{ .Values.authenticatedEmailsFile.template }}
@@ -292,7 +351,12 @@ spec:
           secretName: {{ template "oauth2-proxy.fullname" . }}-accesslist
 {{- end }}
 {{- end }}
-
+{{- if and .Values.redis.enabled .Values.initContainers.waitForRedis.enabled }}
+      - name: redis-script
+        configMap:
+          name: {{ template "oauth2-proxy.fullname" . }}-wait-for-redis
+          defaultMode: 0775
+{{- end }}
 {{- if or .Values.config.existingConfig .Values.config.configFile }}
       - configMap:
           defaultMode: 420
@@ -300,13 +364,20 @@ spec:
         name: configmain
 {{- end }}
 {{- if .Values.alphaConfig.enabled }}
+{{- if .Values.alphaConfig.existingConfig }}
       - configMap:
           defaultMode: 420
-          name: {{ if .Values.alphaConfig.existingConfig }}{{ .Values.alphaConfig.existingConfig }}{{ else }}{{ template "oauth2-proxy.fullname" . }}-alpha{{ end }}
+          name: {{ .Values.alphaConfig.existingConfig }}
+        name: configalpha
+{{- else }}
+      - secret:
+          defaultMode: 420
+          secretName: {{ if .Values.alphaConfig.existingSecret }}{{ .Values.alphaConfig.existingSecret }}{{ else }}{{ template "oauth2-proxy.fullname" . }}-alpha{{ end }}
         name: configalpha
 {{- end }}
+{{- end }}
 {{- if ne (len .Values.extraVolumes) 0 }}
-{{ toYaml .Values.extraVolumes | indent 6 }}
+{{ tpl (toYaml .Values.extraVolumes) . | indent 6 }}
 {{- end }}
 {{- if and (.Values.authenticatedEmailsFile.enabled) (eq .Values.authenticatedEmailsFile.persistence "configmap") }}
       - configMap:
@@ -320,26 +391,28 @@ spec:
 {{- if .Values.authenticatedEmailsFile.template }}
             path: {{ .Values.authenticatedEmailsFile.template }}
 {{- else }}
-            path: authenticated-emails-list
+            path: {{ template "oauth2-proxy.fullname" . }}-accesslist
 {{- end }}
         name: configaccesslist
 {{- end }}
 
-      {{- if .Values.imagePullSecrets }}
+    {{- with (.Values.imagePullSecrets | default .Values.global.imagePullSecrets) }}
       imagePullSecrets:
-{{ toYaml .Values.imagePullSecrets | indent 8 }}
-      {{- end }}
-    {{- if .Values.affinity }}
+        {{- toYaml . | nindent 8 }}
+    {{- end }}
+    {{- with .Values.affinity }}
       affinity:
-{{ toYaml .Values.affinity | indent 8 }}
+        {{- toYaml . | nindent 8 }}
     {{- end }}
-    {{- if .Values.nodeSelector }}
+    {{- with .Values.nodeSelector }}
       nodeSelector:
-{{ toYaml .Values.nodeSelector | indent 8 }}
+        {{ toYaml . | nindent 8 }}
     {{- end }}
+    {{- with .Values.tolerations }}
       tolerations:
-{{ toYaml .Values.tolerations | indent 8 }}
-      {{- with .Values.topologySpreadConstraints }}
+        {{- toYaml . | nindent 8 }}
+    {{- end }}
+    {{- with .Values.topologySpreadConstraints }}
       topologySpreadConstraints:
         {{- toYaml . | nindent 8 }}
-      {{- end }}
+    {{- end }}
@@ -6,6 +6,7 @@ metadata:
     app: {{ template "oauth2-proxy.name" . }}
 {{- include "oauth2-proxy.labels" . | indent 4 }}
   name: {{ template "oauth2-proxy.fullname" . }}-google
+  namespace: {{ template "oauth2-proxy.namespace" $ }}
 type: Opaque
 data:
   service-account.json: {{ .Values.config.google.serviceAccountJson | b64enc | quote }}
diff --git a/kubernetes/authentication/components/oauth2-proxy/templates/hpa.yaml b/kubernetes/authentication/components/oauth2-proxy/templates/hpa.yaml
new file mode 100644 (file)
index 0000000..a6d7461
--- /dev/null
@@ -0,0 +1,38 @@
+{{- if .Values.autoscaling.enabled }}
+apiVersion: autoscaling/v2
+kind: HorizontalPodAutoscaler
+metadata:
+  labels:
+    app: {{ template "oauth2-proxy.name" . }}
+{{- include "oauth2-proxy.labels" . | indent 4 }}
+  {{- with .Values.autoscaling.annotations }}
+  annotations:
+{{ tpl ( toYaml . ) $ | indent 8 }}
+  {{- end }}
+  name: {{ template "oauth2-proxy.fullname" . }}
+  namespace: {{ template "oauth2-proxy.namespace" $ }}
+spec:
+  scaleTargetRef:
+    apiVersion: apps/v1
+    kind: Deployment
+    name: {{ template "oauth2-proxy.fullname" . }}
+  minReplicas: {{ .Values.autoscaling.minReplicas }}
+  maxReplicas: {{ .Values.autoscaling.maxReplicas }}
+  metrics:
+    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}
+    - type: Resource
+      resource:
+        name: memory
+        target:
+          type: Utilization
+          averageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}
+    {{- end }}
+    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}
+    - type: Resource
+      resource:
+        name: cpu
+        target:
+          type: Utilization
+          averageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}
+    {{- end }}
+{{- end }}
@@ -9,11 +9,15 @@ kind: Ingress
 metadata:
   labels:
     app: {{ template "oauth2-proxy.name" . }}
-{{- include "oauth2-proxy.labels" . | indent 4 }}
+    {{- include "oauth2-proxy.labels" . | indent 4 }}
+{{- if .Values.ingress.labels }}
+{{ toYaml .Values.ingress.labels | indent 4 }}
+{{- end }}
   name: {{ template "oauth2-proxy.fullname" . }}
+  namespace: {{ template "oauth2-proxy.namespace" $ }}
 {{- with .Values.ingress.annotations }}
   annotations:
-{{ toYaml . | indent 4 }}
+{{ tpl ( toYaml . ) $ | indent 4 }}
 {{- end }}
 spec:
   {{- if and .Values.ingress.className ( eq "true" ( include "ingress.supportsIngressClassName" . ) ) }}
@@ -6,6 +6,7 @@ metadata:
     app: {{ template "oauth2-proxy.name" . }}
 {{- include "oauth2-proxy.labels" . | indent 4 }}
   name: {{ template "oauth2-proxy.fullname" . }}
+  namespace: {{ template "oauth2-proxy.namespace" $ }}
 spec:
   selector:
     matchLabels:
@@ -10,6 +10,7 @@ metadata:
     app: {{ $name }}
     {{- $labels | indent 4 }}
   name: {{ $fullName }}-redis-access
+  namespace: {{ template "oauth2-proxy.namespace" $ }}
 type: Opaque
 data:
   {{- if and .redis.password (not .redis.existingSecret) }}
diff --git a/kubernetes/authentication/components/oauth2-proxy/templates/secret-alpha.yaml b/kubernetes/authentication/components/oauth2-proxy/templates/secret-alpha.yaml
new file mode 100644 (file)
index 0000000..ba2c02d
--- /dev/null
@@ -0,0 +1,21 @@
+{{-
+  if and
+    .Values.alphaConfig.enabled
+    (not .Values.alphaConfig.existingConfig)
+    (not .Values.alphaConfig.existingSecret)
+}}
+apiVersion: v1
+kind: Secret
+metadata:
+{{- with .Values.alphaConfig.annotations }}
+  annotations:
+{{ tpl ( toYaml . ) $ | indent 4 }}
+{{- end }}
+  labels:
+    app: {{ template "oauth2-proxy.name" . }}
+    {{- include "oauth2-proxy.labels" . | indent 4 }}
+  name: {{ template "oauth2-proxy.fullname" . }}-alpha
+  namespace: {{ template "oauth2-proxy.namespace" $ }}
+data:
+  oauth2_proxy.yml: {{ include "oauth2-proxy.alpha-config" . | b64enc | quote }}
+{{- end }}
@@ -7,11 +7,12 @@ metadata:
   labels:
     app: {{ template "oauth2-proxy.name" . }}
 {{- include "oauth2-proxy.labels" . | indent 4 }}
-{{- if .Values.authenticatedEmailsFile.annotations }}
+{{- with .Values.authenticatedEmailsFile.annotations }}
   annotations:
-{{ toYaml .Values.authenticatedEmailsFile.annotations | indent 4 }}
+{{ tpl ( toYaml . ) $ | indent 4 }}
 {{- end }}
   name: {{ template "oauth2-proxy.fullname" . }}-accesslist
+  namespace: {{ template "oauth2-proxy.namespace" $ }}
 data:
   {{ default "restricted_user_access" .Values.authenticatedEmailsFile.restrictedUserAccessKey }}: {{ .Values.authenticatedEmailsFile.restricted_access | b64enc }}
 {{- end }}
@@ -6,10 +6,11 @@ metadata:
     app: {{ template "oauth2-proxy.name" . }}
 {{- include "oauth2-proxy.labels" . | indent 4 }}
   name: {{ template "oauth2-proxy.fullname" . }}-htpasswd-file
+  namespace: {{ template "oauth2-proxy.namespace" $ }}
 type: Opaque
 stringData:
   users.txt: |-
     {{- range $entries := .Values.htpasswdFile.entries }}
     {{ $entries }}
     {{- end -}}
-{{- end }}
\ No newline at end of file
+{{- end }}
@@ -2,17 +2,16 @@
 apiVersion: v1
 kind: Secret
 metadata:
-{{- if .Values.config.annotations }}
+{{- with .Values.config.annotations }}
   annotations:
-{{ toYaml .Values.config.annotations | indent 4 }}
+{{ tpl ( toYaml . ) $ | indent 4 }}
 {{- end }}
   labels:
     app: {{ template "oauth2-proxy.name" . }}
 {{- include "oauth2-proxy.labels" . | indent 4 }}
   name: {{ template "oauth2-proxy.fullname" . }}
+  namespace: {{ template "oauth2-proxy.namespace" $ }}
 type: Opaque
 data:
-  cookie-secret: {{ tpl .Values.config.cookieSecret $ | b64enc | quote }}
-  client-secret: {{ tpl .Values.config.clientSecret $ | b64enc | quote }}
-  client-id: {{ tpl .Values.config.clientID $ | b64enc | quote }}
+{{- include "oauth2-proxy.secrets" . | nindent 2 }}
 {{- end -}}
@@ -5,9 +5,10 @@ metadata:
     app: {{ template "oauth2-proxy.name" . }}
 {{- include "oauth2-proxy.labels" . | indent 4 }}
   name: {{ template "oauth2-proxy.fullname" . }}
-{{- if .Values.service.annotations }}
+  namespace: {{ template "oauth2-proxy.namespace" $ }}
+{{- with .Values.service.annotations }}
   annotations:
-{{ toYaml .Values.service.annotations | indent 4 }}
+{{ tpl ( toYaml . ) $ | indent 4 }}
 {{- end }}
 spec:
 {{- if (or (eq .Values.service.type "ClusterIP") (empty .Values.service.type)) }}
@@ -26,6 +27,12 @@ spec:
   {{- end -}}
 {{- else }}
   type: {{ .Values.service.type }}
+{{- end }}
+{{- if .Values.service.externalTrafficPolicy }}
+  externalTrafficPolicy: {{ .Values.service.externalTrafficPolicy }}
+{{- end }}
+{{- if .Values.service.internalTrafficPolicy }}
+  internalTrafficPolicy: {{ .Values.service.internalTrafficPolicy }}
 {{- end }}
   ports:
     - port: {{ .Values.service.portNumber }}
diff --git a/kubernetes/authentication/components/oauth2-proxy/templates/serviceaccount.yaml b/kubernetes/authentication/components/oauth2-proxy/templates/serviceaccount.yaml
new file mode 100644 (file)
index 0000000..e38cd7a
--- /dev/null
@@ -0,0 +1,60 @@
+{{- if or .Values.serviceAccount.enabled -}}
+{{- $fullName := include "oauth2-proxy.fullname" .  -}}
+{{- $saName := include "oauth2-proxy.serviceAccountName" . -}}
+{{- $name := include "oauth2-proxy.name" . -}}
+{{- $namespace := include "oauth2-proxy.namespace" $ -}}
+{{- $labels := include "oauth2-proxy.labels" . -}}
+---
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+  {{- with .Values.serviceAccount.annotations }}
+  annotations:
+{{ tpl ( toYaml . ) $ | indent 4 }}
+  {{- end }}
+  labels:
+    app: {{ $name }}
+{{- $labels | indent 4 }}
+  name: {{ $saName }}
+  namespace: {{ $namespace }}
+automountServiceAccountToken: {{ .Values.serviceAccount.automountServiceAccountToken }}
+{{- if and .Values.redis.enabled .Values.initContainers.waitForRedis.enabled }}
+---
+kind: Role
+apiVersion: rbac.authorization.k8s.io/v1
+metadata:
+  name: {{ $fullName }}-watch-redis
+  namespace: {{ $namespace }}
+  labels:
+    app: {{ $name }}
+    {{- $labels | nindent 4 }}
+rules:
+- apiGroups:
+    - ""
+  resources:
+    - pods
+  resourceNames:
+    - "{{ include "oauth2-proxy.redis.fullname" . }}-master-0"
+  verbs:
+    - get
+    - list
+    - watch
+---
+kind: RoleBinding
+apiVersion: rbac.authorization.k8s.io/v1
+metadata:
+  name: {{ $saName }}-watch-redis
+  namespace: {{ $namespace }}
+  labels:
+    app: {{ $name }}
+    {{- $labels | nindent 4 }}
+subjects:
+- kind: ServiceAccount
+  name: {{ $saName }}
+  apiGroup: ""
+roleRef:
+  kind: Role
+  name: {{ $fullName }}-watch-redis
+  apiGroup: ""
+{{- end -}}
+{{- end -}}
diff --git a/kubernetes/authentication/components/oauth2-proxy/templates/servicemonitor.yaml b/kubernetes/authentication/components/oauth2-proxy/templates/servicemonitor.yaml
new file mode 100644 (file)
index 0000000..99d62fd
--- /dev/null
@@ -0,0 +1,57 @@
+{{- if and .Values.metrics.enabled .Values.metrics.serviceMonitor.enabled }}
+apiVersion: monitoring.coreos.com/v1
+kind: ServiceMonitor
+metadata:
+  {{- with .Values.metrics.serviceMonitor.annotations }}
+  annotations:
+{{ tpl ( toYaml . ) $ | indent 4 }}
+  {{- end }}
+  name: {{ template "oauth2-proxy.fullname" . }}
+{{- if .Values.metrics.serviceMonitor.namespace }}
+  namespace: {{ .Values.metrics.serviceMonitor.namespace }}
+{{- else }}
+  namespace: {{ template "oauth2-proxy.namespace" $ }}
+{{- end }}
+  labels:
+    prometheus: {{ .Values.metrics.serviceMonitor.prometheusInstance }}
+    app: {{ template "oauth2-proxy.name" . }}
+{{- include "oauth2-proxy.labels" . | indent 4 }}
+{{- if .Values.metrics.serviceMonitor.labels }}
+{{ toYaml .Values.metrics.serviceMonitor.labels | indent 4}}
+{{- end }}
+spec:
+  jobLabel: {{ template "oauth2-proxy.fullname" . }}
+  selector:
+    matchLabels:
+      {{- include "oauth2-proxy.selectorLabels" . | indent 6 }}
+  namespaceSelector:
+    matchNames:
+      - {{ template "oauth2-proxy.namespace" $ }}
+  endpoints:
+  - port: metrics
+    path: "/metrics"
+    {{- with .Values.metrics.serviceMonitor.interval }}
+    interval: {{ . }}
+    {{- end }}
+    {{- with .Values.metrics.serviceMonitor.scrapeTimeout }}
+    scrapeTimeout: {{ . }}
+    {{- end }}
+    {{- with .Values.metrics.serviceMonitor.scheme }}
+    scheme: {{ . }}
+    {{- end }}
+    {{- with .Values.metrics.serviceMonitor.bearerTokenFile }}
+    bearerTokenFile: {{ . }}
+    {{- end }}
+    {{- with .Values.metrics.serviceMonitor.tlsConfig }}
+    tlsConfig:
+      {{- toYaml .| nindent 6 }}
+    {{- end }}
+    {{- with .Values.metrics.serviceMonitor.metricRelabelings }}
+    metricRelabelings:
+      {{- toYaml . | nindent 4 }}
+    {{- end }}
+    {{- with .Values.metrics.serviceMonitor.relabelings }}
+    relabelings:
+      {{- toYaml . | nindent 4 }}
+    {{- end }}
+{{- end }}
@@ -1,5 +1,21 @@
 global:
   quayRepository: quay.io
+  dockerHubRepository: docker.io
+  # Additions for Redis ****************************
+  # If dockerHubRepository is changes the following entry needs
+  # to be changed as well
+  imageRegistry: docker.io
+  imagePullSecrets:
+    - '{{ include "common.names.namespace" . }}-docker-registry-key'
+
+  # Workaround to avoid redis restarts with ArgoCD
+  redis:
+    password: "32ugd3783rhfjdhow"
+  # *************************************************
+
+## Override the deployment namespace
+##
+namespaceOverride: ""
 
 # Force the target Kubernetes version (it uses Helm `.Capabilities` if not set).
 # This is especially useful for `helm template` as capabilities are always empty
@@ -57,8 +73,13 @@ alphaConfig:
   metricsConfigData: {}
   # Arbitrary configuration data to append
   configData: {}
-  # Use an existing config map (see configmap-alpha.yaml for required fields)
+  # Arbitrary configuration to append
+  # This is treated as a Go template and rendered with the root context
+  configFile: ""
+  # Use an existing config map (see secret-alpha.yaml for required fields)
   existingConfig: ~
+  # Use an existing secret
+  existingSecret: ~
 
 image:
   #repository: "quay.io/oauth2-proxy/oauth2-proxy"
@@ -66,6 +87,7 @@ image:
   # appVersion is used by default
   tag: ""
   pullPolicy: "IfNotPresent"
+  command: []
 
 # Optionally specify an array of imagePullSecrets.
 # Secrets must be manually created in the namespace.
@@ -81,6 +103,19 @@ image:
 extraArgs: {}
 extraEnv: []
 
+envFrom: []
+# Load environment variables from a ConfigMap(s) and/or Secret(s)
+# that already exists (created and managed by you).
+# ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#configure-all-key-value-pairs-in-a-configmap-as-container-environment-variables
+#
+# PS: Changes in these ConfigMaps or Secrets will not be automatically
+#     detected and you must manually restart the relevant Pods after changes.
+#
+#  - configMapRef:
+#      name: special-config
+#  - secretRef:
+#      name: special-config-secret
+
 # -- Custom labels to add into metadata
 customLabels: {}
 
@@ -123,6 +158,10 @@ service:
   appProtocol: http
   annotations: {}
   # foo.io/bar: "true"
+  # configure externalTrafficPolicy
+  externalTrafficPolicy: ""
+  # configure internalTrafficPolicy
+  internalTrafficPolicy: ""
 
 ## Create or use ServiceAccount
 serviceAccount:
@@ -153,6 +192,7 @@ ingress:
   #       name: ssl-redirect
   #       port:
   #         name: use-annotation
+  labels: {}
   # annotations:
   #   kubernetes.io/ingress.class: nginx
   #   kubernetes.io/tls-acme: "true"
@@ -164,11 +204,11 @@ ingress:
 
 resources: {}
   # limits:
-  #   cpu: "100m"
-  #   memory: "300Mi"
+  #   cpu: 100m
+  #   memory: 300Mi
   # requests:
-  #   cpu: "100m"
-  #   memory: "300Mi"
+  #   cpu: 100m
+  #   memory: 300Mi
 
 extraVolumes: []
   # - name: ca-bundle-cert
@@ -186,11 +226,15 @@ extraContainers: []
 
 priorityClassName: ""
 
-# Host aliases, useful when working "on premise" where (public) DNS resolver does not know about my hosts.
-hostAlias:
-  enabled: false
-  # ip: "10.xxx.xxx.xxx"
-  # hostname: "auth.example.com"
+# hostAliases is a list of aliases to be added to /etc/hosts for network name resolution
+hostAliases: []
+# - ip: "10.xxx.xxx.xxx"
+#   hostnames:
+#     - "auth.example.com"
+# - ip: 127.0.0.1
+#   hostnames:
+#     - chart-example.local
+#     - example.local
 
 # [TopologySpreadConstraints](https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/) configuration.
 # Ref: https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#scheduling
@@ -229,16 +273,24 @@ readinessProbe:
 # Configure Kubernetes security context for container
 # Ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
 securityContext:
-  enabled: false
+  enabled: true
+  allowPrivilegeEscalation: false
+  capabilities:
+    drop:
+    - ALL
+  readOnlyRootFilesystem: true
   runAsNonRoot: true
-  # allowPrivilegeEscalation: false
-  # runAsUser: 2000
+  runAsUser: 2000
+  runAsGroup: 2000
+  seccompProfile:
+    type: RuntimeDefault
 
 deploymentAnnotations: {}
 podAnnotations: {}
 podLabels: {}
 replicaCount: 1
 revisionHistoryLimit: 10
+strategy: {}
 
 ## PodDisruptionBudget settings
 ## ref: https://kubernetes.io/docs/concepts/workloads/pods/disruptions/
@@ -246,6 +298,16 @@ podDisruptionBudget:
   enabled: true
   minAvailable: 1
 
+## Horizontal Pod Autoscaling
+## ref: https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/
+autoscaling:
+  enabled: false
+  minReplicas: 1
+  maxReplicas: 10
+  targetCPUUtilizationPercentage: 80
+#  targetMemoryUtilizationPercentage: 80
+  annotations: {}
+
 # Configure Kubernetes security context for pod
 # Ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
 podSecurityContext: {}
@@ -253,12 +315,47 @@ podSecurityContext: {}
 # whether to use http or https
 httpScheme: http
 
+initContainers:
+  # if the redis sub-chart is enabled, wait for it to be ready
+  # before starting the proxy
+  # creates a role binding to get, list, watch, the redis master pod
+  # if service account is enabled
+  waitForRedis:
+    enabled: true
+    image:
+      repository: "alpine"
+      tag: "latest"
+      pullPolicy: "IfNotPresent"
+    # uses the kubernetes version of the cluster
+    # the chart is deployed on, if not set
+    kubectlVersion: ""
+    securityContext:
+      enabled: true
+      allowPrivilegeEscalation: false
+      capabilities:
+        drop:
+          - ALL
+      readOnlyRootFilesystem: true
+      runAsNonRoot: true
+      runAsUser: 65534
+      runAsGroup: 65534
+      seccompProfile:
+        type: RuntimeDefault
+    timeout: 180
+    resources: {}
+      # limits:
+      #   cpu: 100m
+      #   memory: 300Mi
+      # requests:
+      #   cpu: 100m
+      #   memory: 300Mi
+
 # Additionally authenticate against a htpasswd file. Entries must be created with "htpasswd -B" for bcrypt encryption.
 # Alternatively supply an existing secret which contains the required information.
 htpasswdFile:
   enabled: false
   existingSecret: ""
-  entries: {}
+  entries: []
   # One row for each user
   # example:
   # entries:
@@ -302,13 +399,18 @@ redis:
   # Redis specific helm chart settings, please see:
   # https://github.com/bitnami/charts/tree/master/bitnami/redis#parameters
   # redisPort: 6379
-  # cluster:
-  #   enabled: false
-  #   slaveCount: 1
+  # architecture: standalone
 
 # Enables apiVersion deprecation checks
 checkDeprecation: true
 
+# Allows graceful shutdown
+# terminationGracePeriodSeconds: 65
+# lifecycle:
+#   preStop:
+#     exec:
+#       command: [ "sh", "-c", "sleep 60" ]
+
 metrics:
   # Enable Prometheus metrics endpoint
   enabled: true
@@ -319,7 +421,7 @@ metrics:
   # Protocol set on the service for the metrics port
   service:
     appProtocol: http
-  servicemonitor:
+  serviceMonitor:
     # Enable Prometheus Operator ServiceMonitor
     enabled: false
     # Define the namespace where to deploy the ServiceMonitor resource
@@ -333,6 +435,37 @@ metrics:
     # Add custom labels to the ServiceMonitor resource
     labels: {}
 
+    ## scheme: HTTP scheme to use for scraping. Can be used with `tlsConfig` for example if using istio mTLS.
+    scheme: ""
+
+    ## tlsConfig: TLS configuration to use when scraping the endpoint. For example if using istio mTLS.
+    ## Of type: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#tlsconfig
+    tlsConfig: {}
+
+    ## bearerTokenFile: Path to bearer token file.
+    bearerTokenFile: ""
+
+    ## Used to pass annotations that are used by the Prometheus installed in your cluster to select Service Monitors to work with
+    ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#prometheusspec
+    annotations: {}
+
+    ## Metric relabel configs to apply to samples before ingestion.
+    ## [Metric Relabeling](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs)
+    metricRelabelings: []
+    # - action: keep
+    #   regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+'
+    #   sourceLabels: [__name__]
+
+    ## Relabel configs to apply to samples before ingestion.
+    ## [Relabeling](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config)
+    relabelings: []
+    # - sourceLabels: [__meta_kubernetes_pod_node_name]
+    #   separator: ;
+    #   regex: ^(.*)$
+    #   targetLabel: nodename
+    #   replacement: $1
+    #   action: replace
+
 # Extra K8s manifests to deploy
 extraObjects: []
   # - apiVersion: secrets-store.csi.x-k8s.io/v1
diff --git a/kubernetes/authentication/resources/oauth2_proxy.cfg b/kubernetes/authentication/resources/oauth2_proxy.cfg
new file mode 100644 (file)
index 0000000..60aaad4
--- /dev/null
@@ -0,0 +1,38 @@
+provider = "oidc"
+provider_display_name = "ONAPKeycloakID"
+client_id = "{{ index .Values "onap-oauth2-proxy" "config" "clientId" }}"
+client_secret = "{{ index .Values "onap-oauth2-proxy" "config" "clientSecret" }}"
+oidc_issuer_url = 'https://{{ include "ingress.config.host" (dict "dot" . "baseaddr" "keycloak-ui") }}/realms/onap'
+oidc_jwks_url = 'http://{{ include "common.namespace" . }}-authentication-keycloakx-http.{{ include "common.namespace" . }}/realms/onap/protocol/openid-connect/certs'
+profile_url = 'https://{{ include "ingress.config.host" (dict "dot" . "baseaddr" "keycloak-ui") }}/realms/onap/protocol/openid-connect/userinfo'
+validate_url = 'https://{{ include "ingress.config.host" (dict "dot" . "baseaddr" "keycloak-ui") }}/realms/onap/protocol/openid-connect/userinfo'
+redeem_url = 'http://{{ include "common.namespace" . }}-authentication-keycloakx-http.{{ include "common.namespace" . }}/realms/onap/protocol/openid-connect/token'
+scope = "openid email profile groups onap_roles"
+skip_oidc_discovery = true
+cookie_secure = false
+cookie_secret = "{{ index .Values "onap-oauth2-proxy" "config" "cookieSecret" }}"
+email_domains = [ "*" ]
+auth_logging = true
+request_logging = true
+standard_logging = true
+show_debug_on_error = true
+cookie_domains = ".{{ .Values.global.ingress.virtualhost.baseurl }}"
+cookie_samesite = "lax"
+whitelist_domains = ".{{ .Values.global.ingress.virtualhost.baseurl }}"
+login_url = 'https://{{ include "ingress.config.host" (dict "dot" . "baseaddr" "keycloak-ui") }}/realms/onap/protocol/openid-connect/auth'
+pass_access_token = true
+pass_authorization_header = true
+pass_host_header = true
+pass_user_headers = true
+http_address = "0.0.0.0:4180"
+oidc_email_claim = "email"
+oidc_groups_claim = "groups"
+insecure_oidc_skip_issuer_verification = true
+insecure_oidc_allow_unverified_email = true
+silence_ping_logging = true
+upstreams = "static://200"
+set_xauthrequest = true
+set_authorization_header = true
+skip_provider_button = true
+skip_jwt_bearer_tokens = true
+cookie_expire = "30m"
diff --git a/kubernetes/authentication/templates/_utils.tpl b/kubernetes/authentication/templates/_utils.tpl
new file mode 100644 (file)
index 0000000..958d0c7
--- /dev/null
@@ -0,0 +1,926 @@
+{{/*
+# Copyright © 2024 Tata Communication Limited (TCL), Deutsche Telekom AG
+#
+# 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.
+*/}}
+
+{{/*
+Renders a value that contains template.
+Usage:
+{{ include "auth.realm" ( dict "dot" . "realm" .Values.path.to.realm) }}
+*/}}
+{{- define "auth.realm" -}}
+{{- $dot := default . .dot -}}
+{{- $realm := (required "'realm' param, set to the specific service, is required." .realm) -}}
+realm: {{ $realm.name }}
+{{ if $realm.displayName }}displayName: {{ $realm.displayName }}{{ end }}
+accessTokenLifespan: {{ default "1900" $realm.accessTokenLifespan }}
+registrationAllowed: {{ default false $realm.registrationAllowed }}
+resetPasswordAllowed: {{ default true $realm.resetPasswordAllowed }}
+{{ if $realm.passwordPolicy }}passwordPolicy: {{ $realm.passwordPolicy }}{{ end }}
+sslRequired: {{ default "external" $realm.sslRequired }}
+enabled: true
+{{ if $realm.themes }}
+{{   if $realm.themes.login }}loginTheme: {{ $realm.themes.login }}{{ end }}
+{{   if $realm.themes.admin }}adminTheme: {{ $realm.themes.admin }}{{ end }}
+{{   if $realm.themes.account }}accountTheme: {{ $realm.themes.account }}{{ end }}
+{{   if $realm.themes.email }}emailTheme: {{ $realm.themes.email }}{{ end }}
+{{- end }}
+{{- if $realm.accessControl }}
+{{ include "auth._roles" $realm }}
+{{- end }}
+{{ include "auth._clients" (dict "dot" $dot "realm" $realm) }}
+{{ include "auth._clientScopes" $realm }}
+{{ include "auth._defaultClientScopes" $realm }}
+{{ include "auth._groups" $realm }}
+{{ include "auth._users" $realm }}
+{{ include "auth._identity" $realm }}
+{{ include "auth._identityMapper" $realm }}
+{{ include "auth._smtpServer" $realm }}
+{{ include "auth._attributes" (dict "dot" $dot "realm" $realm) }}
+{{- end -}}
+
+{{/*
+Renders the roles section in a realm.
+Usage:
+{{ include "auth._roles" ( dict "dot" .Values) }}
+*/}}
+{{- define "auth._roles" -}}
+{{- $realm := default . .dot -}}
+roles:
+  realm:
+    {{- range $index, $role := $realm.accessControl.assignableRoles }}
+    - name: "{{ $role.name }}"
+      description: "{{ $role.description }}"
+      {{- if $role.associatedAccessRoles }}
+      composite: true
+      composites:
+        client:
+          {{- range $key, $accessRole := $realm.accessControl.accessRoles }}
+          {{ $client := index $realm.clients $key -}}
+          {{ $client.clientId }}:
+            {{- range $index2, $associatedRole := $role.associatedAccessRoles }}
+            - {{ $associatedRole }}
+            {{- end }}
+          {{- end }}
+      {{- else }}
+      composite: false
+      {{- end }}
+      clientRole: false
+      containerId: "{{ $realm.name }}"
+      attributes: {}
+    {{- end }}
+    - name: "user"
+      composite: false
+      clientRole: false
+      containerId: "{{ $realm.name }}"
+      attributes: {}
+    - name: "admin"
+      composite: false
+      clientRole: false
+      containerId: "{{ $realm.name }}"
+      attributes: {}
+    - name: "offline_access"
+      description: "${role_offline-access}"
+      composite: false
+      clientRole: false
+      containerId: "{{ $realm.name }}"
+      attributes: {}
+    - name: "uma_authorization"
+      description: "${role_uma_authorization}"
+      composite: false
+      clientRole: false
+      containerId: "{{ $realm.name }}"
+      attributes: {}
+    - name: "default-roles-{{ $realm.name }}"
+      description: "${role_default-roles}"
+      composite: true
+      composites:
+        realm:
+          - "offline_access"
+          - "uma_authorization"
+        client:
+          account:
+            - "view-profile"
+            - "manage-account"
+      clientRole: false
+      containerId: "{{ $realm.name }}"
+      attributes: {}
+  {{- if $realm.accessControl.accessRoles }}
+  client:
+    {{- range $key, $accessRole := $realm.accessControl.accessRoles }}
+    {{ $client := index $realm.clients $key -}}
+    {{ $client.clientId }}:
+    {{- range $index, $role := get $realm.accessControl.accessRoles $key }}
+      - name: "{{ $role.name }}"
+        description: "Allows to perform {{ $role.methodsAllowed }} operations for {{ $role.name }} component"
+        composite: false
+        clientRole: false
+        containerId: "{{ $client.clientId }}"
+        attributes: {}
+    {{- end }}
+    {{- end }}
+  {{- end }}
+{{- end }}
+
+{{/*
+Renders the clients section in a realm.
+Usage:
+{{ include "auth._clients" ( dict "dot" . "realm" $realm ) }}
+*/}}
+{{- define "auth._clients" -}}
+{{- $dot := default . .dot -}}
+{{- $realm := (required "'realm' param, set to the specific service, is required." .realm) -}}
+clients:
+  {{- range $index, $client := $realm.clients }}
+  - clientId: "{{ $client.clientId }}"
+    {{- if $client.name }}
+    name: "{{ $client.name }}"
+    {{- end }}
+    {{- if $client.description }}
+    description: "{{ $client.description }}"
+    {{- end }}
+    {{- if $client.rootUrl }}
+    rootUrl: {{ tpl $client.rootUrl $dot }}
+    {{- end }}
+    {{- if $client.adminUrl }}
+    adminUrl: {{ tpl $client.adminUrl $dot }}
+    {{- end }}
+    {{- if $client.baseUrl }}
+    baseUrl: {{ tpl $client.baseUrl $dot }}
+    {{- end }}
+    surrogateAuthRequired: {{ default false $client.surrogateAuthRequired }}
+    authorizationServicesEnabled: {{ default false $client.authorizationServicesEnabled }}
+    enabled: true
+    alwaysDisplayInConsole: false
+    clientAuthenticatorType: {{ default "client-secret" $client.clientAuthenticatorType }}
+    {{- if $client.secret }}
+    secret: "{{ $client.secret }}"
+    {{- end }}
+    {{- if $client.redirectUris }}
+    redirectUris:
+      {{- range $index2, $url := $client.redirectUris }}
+      - {{ tpl $url $dot }}
+      {{- end }}
+    {{- else }}
+    redirectUris: []
+    {{- end }}
+    {{- if $client.webOrigins }}
+    webOrigins:
+      {{- range $index3, $web := $client.webOrigins }}
+      - {{ $web | quote }}
+      {{- end }}
+    {{- else }}
+    webOrigins: []
+    {{- end }}
+    notBefore: 0
+    bearerOnly: {{ default false $client.bearerOnly }}
+    consentRequired: {{ default false $client.consentRequired }}
+    standardFlowEnabled: {{ default true $client.standardFlowEnabled }}
+    implicitFlowEnabled: {{ default false $client.implicitFlowEnabled }}
+    directAccessGrantsEnabled: {{ default true $client.directAccessGrantsEnabled }}
+    serviceAccountsEnabled: {{ default false $client.serviceAccountsEnabled }}
+    publicClient: {{ default false $client.publicClient }}
+    frontchannelLogout: {{ default false $client.frontchannelLogout }}
+    protocol: "{{ default "openid-connect" $client.protocol }}"
+    {{- if $client.attributes }}
+    attributes:
+      {{-   range $key,$value := $client.attributes }}
+      {{ $key }}: {{ tpl $value $dot }}
+      {{-   end }}
+    {{- end }}
+    authenticationFlowBindingOverrides: {}
+    fullScopeAllowed: true
+    nodeReRegistrationTimeout: -1
+    protocolMappers:
+      {{- if $client.protocolMappers }}
+      {{- range $index2, $mapper := $client.protocolMappers }}
+      - name: {{ $mapper.name }}
+        protocol: "openid-connect"
+        protocolMapper: {{ $mapper.protocolMapper }}
+        consentRequired: false
+        config:
+          {{ toYaml $mapper.config | nindent 10 }}
+      {{- end }}
+      {{- end }}
+    {{- if $client.defaultClientScopes }}
+    defaultClientScopes:
+      {{- range $index2, $scope := $client.defaultClientScopes }}
+      - {{ $scope }}
+      {{- end }}
+    {{- end }}
+    {{- if $client.optionalClientScopes }}
+    optionalClientScopes:
+      {{- range $index2, $scope := $client.optionalClientScopes }}
+      - {{ $scope }}
+      {{- end }}
+    {{- end }}
+    {{- if $client.authorizationSettings }}
+    authorizationSettings: {{ include "auth._authorizationSettings" (dict "dot" $client.authorizationSettings ) | nindent 6 }}
+    {{- end }}
+  {{- end }}
+{{- end }}
+
+{{/*
+Renders the authorizationSettings in the client section in a realm.
+Usage:
+{{ include "auth._authorizationSettings" ( dict "dot" .Values) }}
+*/}}
+{{- define "auth._authorizationSettings" -}}
+{{- $dot := default . .dot -}}
+allowRemoteResourceManagement: "{{ default true $dot.allowRemoteResourceManagement }}"
+policyEnforcementMode: "{{ default "ENFORCING" $dot.policyEnforcementMode }}"
+decisionStrategy: "{{ default "UNANIMOUS" $dot.decisionStrategy }}"
+resources:
+  {{- range $index, $resource := $dot.resources }}
+  - name: {{ $resource.name }}
+    type: {{ (default "" $resource.type) | quote }}
+    displayName: {{ (default "" $resource.displayName) | quote }}
+    ownerManagedAccess: {{ default false $resource.ownerManagedAccess }}
+    {{- if $resource.attributes }}
+    attributes:
+      {{-   range $key,$value := $resource.attributes }}
+      {{ $key }}: {{ $value }}
+      {{-   end }}
+    {{- end }}
+    {{- if $resource.uris }}
+    uris:
+      {{- range $index2, $url := $resource.uris }}
+      - {{ $url }}
+      {{- end }}
+    {{- end }}
+    {{- if $resource.scopes }}
+    scopes:
+      {{- range $index3, $scope := $resource.scopes }}
+      - {{ $scope | toYaml }}
+      {{- end }}
+    {{- end }}
+    icon_uri: {{ (default "" $resource.icon_uri) | quote }}
+  {{- end }}
+policies:
+  {{- range $index4, $policy := $dot.policies }}
+  - name: {{ $policy.name }}
+    type: {{ (default "" $policy.type) | quote }}
+    description: {{ (default "" $policy.description) | quote }}
+    logic: {{ default "POSITIVE" $policy.logic }}
+    decisionStrategy: {{ default "UNANIMOUS" $dot.decisionStrategy }}
+    config:
+      roles: {{ include "auth._policyRoles" (dict "dot" $policy.roles) | toJson }}
+  {{- end }}
+  {{- range $index6, $permission := $dot.permissions }}
+  - name: {{ $permission.name }}
+    type: {{ (default "" $permission.type) | quote }}
+    description: {{ (default "" $permission.description) | quote }}
+    logic: {{ default "POSITIVE" $permission.logic }}
+    decisionStrategy: {{ default "UNANIMOUS" $permission.decisionStrategy }}
+    config:
+      {{- if $permission.resources }}
+      resources: {{ include "auth._permissionResources" (dict "dot" $permission.resources) | toJson }}
+      {{- end }}
+      {{- if $permission.scopes }}
+      scopes: {{ include "auth._permissionScopes" (dict "dot" $permission.scopes) | toJson }}
+      {{- end }}
+      {{- if $permission.applyPolicies }}
+      applyPolicies: {{ include "auth._permissionApplyPolicies" (dict "dot" $permission.applyPolicies) | toJson }}
+      {{- end }}
+  {{- end }}
+scopes:
+  {{- range $index, $scope := $dot.scopes }}
+  - name: {{ $scope.name }}
+    iconUri: {{ (default "" $scope.icon_uri) | quote }}
+    displayName: {{ (default "" $scope.displayName) | quote }}
+  {{- end }}
+{{- end }}
+
+{{/*
+Renders the roles in a policy.
+Usage:
+{{ include "auth._policyRoles" ( dict "dot" .Values) }}
+*/}}
+{{- define "auth._policyRoles" -}}
+{{- $dot := default . .dot -}}
+[{{- range $index,$role := $dot }}{"id":"{{ $role.id }}","required":{{ $role.required }}}{{ if ne $index (sub (len $dot) 1)}},{{ end }}{{- end }}]
+{{- end }}
+
+{{/*
+Renders the resources in a permission.
+Usage:
+{{ include "auth._permissionResources" ( dict "dot" .Values) }}
+*/}}
+{{- define "auth._permissionResources" -}}
+{{- $dot := default . .dot -}}
+[{{- range $index,$resource := $dot }}"{{ $resource }}"{{ if ne $index (sub (len $dot) 1)}},{{ end }}{{- end }}]
+{{- end }}
+
+{{/*
+Renders the scopes in a permission.
+Usage:
+{{ include "auth._permissionScopes" ( dict "dot" .Values) }}
+*/}}
+{{- define "auth._permissionScopes" -}}
+{{- $dot := default . .dot -}}
+[{{- range $index,$scope := $dot }}"{{ $scope }}"{{ if ne $index (sub (len $dot) 1)}},{{ end }}{{- end }}]
+{{- end }}
+
+{{/*
+Renders the applyPolicies in a permission.
+Usage:
+{{ include "auth._permissionApplyPolicies" ( dict "dot" .Values) }}
+*/}}
+{{- define "auth._permissionApplyPolicies" -}}
+{{- $dot := default . .dot -}}
+[{{- range $index,$policy := $dot }}"{{ $policy }}"{{ if ne $index (sub (len $dot) 1)}},{{ end }}{{- end }}]
+{{- end }}
+{{/*
+Renders the defaultDefaultClientScopes section in a realm.
+Usage:
+{{ include "auth._defaultClientScopes" ( dict "dot" .Values) }}
+*/}}
+{{- define "auth._defaultClientScopes" -}}
+{{- $dot := default . .dot -}}
+{{- if $dot.defaultClientScopes }}
+defaultDefaultClientScopes:
+  {{- range $index, $scope := $dot.defaultClientScopes }}
+  - {{ $scope }}
+  {{- end }}
+{{- end }}
+{{- end }}
+
+{{/*
+Renders the clientScopes section in a realm.
+Usage:
+{{ include "auth._clientScopes" ( dict "dot" .Values) }}
+*/}}
+{{- define "auth._clientScopes" -}}
+{{- $dot := default . .dot -}}
+clientScopes:
+{{- if $dot.additionalClientScopes }}
+{{-   range $index, $scope := $dot.additionalClientScopes }}
+- name: {{ $scope.name }}
+  description: {{ (default "" $scope.description) | quote }}
+  protocol: openid-connect
+  attributes:
+    include.in.token.scope: 'false'
+    display.on.consent.screen: 'true'
+    gui.order: ''
+    consent.screen.text: "${rolesScopeConsentText}"
+  {{- if $scope.protocolMappers }}
+  protocolMappers:
+    {{- range $index2, $mapper := $scope.protocolMappers }}
+    - name: {{ $mapper.name }}
+      protocol: "openid-connect"
+      protocolMapper: {{ $mapper.protocolMapper }}
+      consentRequired: false
+      config:
+        {{ toYaml $mapper.config | nindent 8 }}
+    {{- end }}
+  {{- end }}
+{{-   end }}
+{{- end }}
+- name: roles
+  description: OpenID Connect scope for add user roles to the access token
+  protocol: openid-connect
+  attributes:
+    include.in.token.scope: 'false'
+    display.on.consent.screen: 'true'
+    consent.screen.text: "${rolesScopeConsentText}"
+  protocolMappers:
+  - name: audience resolve
+    protocol: openid-connect
+    protocolMapper: oidc-audience-resolve-mapper
+    consentRequired: false
+    config: {}
+  - name: realm roles
+    protocol: openid-connect
+    protocolMapper: oidc-usermodel-realm-role-mapper
+    consentRequired: false
+    config:
+      user.attribute: foo
+      access.token.claim: 'true'
+      claim.name: realm_access.roles
+      jsonType.label: String
+      multivalued: 'true'
+  - name: client roles
+    protocol: openid-connect
+    protocolMapper: oidc-usermodel-client-role-mapper
+    consentRequired: false
+    config:
+      user.attribute: foo
+      access.token.claim: 'true'
+      claim.name: resource_access.${client_id}.roles
+      jsonType.label: String
+      multivalued: 'true'
+- name: groups
+  description: Membership to a group
+  protocol: openid-connect
+  attributes:
+    include.in.token.scope: 'true'
+    display.on.consent.screen: 'true'
+    gui.order: ''
+    consent.screen.text: ''
+  protocolMappers:
+  - name: groups
+    protocol: openid-connect
+    protocolMapper: oidc-group-membership-mapper
+    consentRequired: false
+    config:
+      full.path: 'false'
+      id.token.claim: 'true'
+      access.token.claim: 'true'
+      claim.name: groups
+      userinfo.token.claim: 'true'
+- name: acr
+  description: OpenID Connect scope for add acr (authentication context class reference)
+    to the token
+  protocol: openid-connect
+  attributes:
+    include.in.token.scope: 'false'
+    display.on.consent.screen: 'false'
+  protocolMappers:
+  - name: acr loa level
+    protocol: openid-connect
+    protocolMapper: oidc-acr-mapper
+    consentRequired: false
+    config:
+      id.token.claim: 'true'
+      access.token.claim: 'true'
+- name: profile
+  description: 'OpenID Connect built-in scope: profile'
+  protocol: openid-connect
+  attributes:
+    include.in.token.scope: 'true'
+    display.on.consent.screen: 'true'
+    consent.screen.text: "${profileScopeConsentText}"
+  protocolMappers:
+  - name: profile
+    protocol: openid-connect
+    protocolMapper: oidc-usermodel-attribute-mapper
+    consentRequired: false
+    config:
+      userinfo.token.claim: 'true'
+      user.attribute: profile
+      id.token.claim: 'true'
+      access.token.claim: 'true'
+      claim.name: profile
+      jsonType.label: String
+  - name: given name
+    protocol: openid-connect
+    protocolMapper: oidc-usermodel-property-mapper
+    consentRequired: false
+    config:
+      userinfo.token.claim: 'true'
+      user.attribute: firstName
+      id.token.claim: 'true'
+      access.token.claim: 'true'
+      claim.name: given_name
+      jsonType.label: String
+  - name: website
+    protocol: openid-connect
+    protocolMapper: oidc-usermodel-attribute-mapper
+    consentRequired: false
+    config:
+      userinfo.token.claim: 'true'
+      user.attribute: website
+      id.token.claim: 'true'
+      access.token.claim: 'true'
+      claim.name: website
+      jsonType.label: String
+  - name: zoneinfo
+    protocol: openid-connect
+    protocolMapper: oidc-usermodel-attribute-mapper
+    consentRequired: false
+    config:
+      userinfo.token.claim: 'true'
+      user.attribute: zoneinfo
+      id.token.claim: 'true'
+      access.token.claim: 'true'
+      claim.name: zoneinfo
+      jsonType.label: String
+  - name: locale
+    protocol: openid-connect
+    protocolMapper: oidc-usermodel-attribute-mapper
+    consentRequired: false
+    config:
+      userinfo.token.claim: 'true'
+      user.attribute: locale
+      id.token.claim: 'true'
+      access.token.claim: 'true'
+      claim.name: locale
+      jsonType.label: String
+  - name: gender
+    protocol: openid-connect
+    protocolMapper: oidc-usermodel-attribute-mapper
+    consentRequired: false
+    config:
+      userinfo.token.claim: 'true'
+      user.attribute: gender
+      id.token.claim: 'true'
+      access.token.claim: 'true'
+      claim.name: gender
+      jsonType.label: String
+  - name: family name
+    protocol: openid-connect
+    protocolMapper: oidc-usermodel-property-mapper
+    consentRequired: false
+    config:
+      userinfo.token.claim: 'true'
+      user.attribute: lastName
+      id.token.claim: 'true'
+      access.token.claim: 'true'
+      claim.name: family_name
+      jsonType.label: String
+  - name: username
+    protocol: openid-connect
+    protocolMapper: oidc-usermodel-property-mapper
+    consentRequired: false
+    config:
+      userinfo.token.claim: 'true'
+      user.attribute: username
+      id.token.claim: 'true'
+      access.token.claim: 'true'
+      claim.name: preferred_username
+      jsonType.label: String
+  - name: middle name
+    protocol: openid-connect
+    protocolMapper: oidc-usermodel-attribute-mapper
+    consentRequired: false
+    config:
+      userinfo.token.claim: 'true'
+      user.attribute: middleName
+      id.token.claim: 'true'
+      access.token.claim: 'true'
+      claim.name: middle_name
+      jsonType.label: String
+  - name: birthdate
+    protocol: openid-connect
+    protocolMapper: oidc-usermodel-attribute-mapper
+    consentRequired: false
+    config:
+      userinfo.token.claim: 'true'
+      user.attribute: birthdate
+      id.token.claim: 'true'
+      access.token.claim: 'true'
+      claim.name: birthdate
+      jsonType.label: String
+  - name: updated at
+    protocol: openid-connect
+    protocolMapper: oidc-usermodel-attribute-mapper
+    consentRequired: false
+    config:
+      userinfo.token.claim: 'true'
+      user.attribute: updatedAt
+      id.token.claim: 'true'
+      access.token.claim: 'true'
+      claim.name: updated_at
+      jsonType.label: long
+  - name: full name
+    protocol: openid-connect
+    protocolMapper: oidc-full-name-mapper
+    consentRequired: false
+    config:
+      id.token.claim: 'true'
+      access.token.claim: 'true'
+      userinfo.token.claim: 'true'
+  - name: nickname
+    protocol: openid-connect
+    protocolMapper: oidc-usermodel-attribute-mapper
+    consentRequired: false
+    config:
+      userinfo.token.claim: 'true'
+      user.attribute: nickname
+      id.token.claim: 'true'
+      access.token.claim: 'true'
+      claim.name: nickname
+      jsonType.label: String
+  - name: picture
+    protocol: openid-connect
+    protocolMapper: oidc-usermodel-attribute-mapper
+    consentRequired: false
+    config:
+      userinfo.token.claim: 'true'
+      user.attribute: picture
+      id.token.claim: 'true'
+      access.token.claim: 'true'
+      claim.name: picture
+      jsonType.label: String
+- name: address
+  description: 'OpenID Connect built-in scope: address'
+  protocol: openid-connect
+  attributes:
+    include.in.token.scope: 'true'
+    display.on.consent.screen: 'true'
+    consent.screen.text: "${addressScopeConsentText}"
+  protocolMappers:
+  - name: address
+    protocol: openid-connect
+    protocolMapper: oidc-address-mapper
+    consentRequired: false
+    config:
+      user.attribute.formatted: formatted
+      user.attribute.country: country
+      user.attribute.postal_code: postal_code
+      userinfo.token.claim: 'true'
+      user.attribute.street: street
+      id.token.claim: 'true'
+      user.attribute.region: region
+      access.token.claim: 'true'
+      user.attribute.locality: locality
+- name: web-origins
+  description: OpenID Connect scope for add allowed web origins to the access token
+  protocol: openid-connect
+  attributes:
+    include.in.token.scope: 'false'
+    display.on.consent.screen: 'false'
+    consent.screen.text: ''
+  protocolMappers:
+  - name: allowed web origins
+    protocol: openid-connect
+    protocolMapper: oidc-allowed-origins-mapper
+    consentRequired: false
+    config: {}
+- name: phone
+  description: 'OpenID Connect built-in scope: phone'
+  protocol: openid-connect
+  attributes:
+    include.in.token.scope: 'true'
+    display.on.consent.screen: 'true'
+    consent.screen.text: "${phoneScopeConsentText}"
+  protocolMappers:
+  - name: phone number verified
+    protocol: openid-connect
+    protocolMapper: oidc-usermodel-attribute-mapper
+    consentRequired: false
+    config:
+      userinfo.token.claim: 'true'
+      user.attribute: phoneNumberVerified
+      id.token.claim: 'true'
+      access.token.claim: 'true'
+      claim.name: phone_number_verified
+      jsonType.label: boolean
+  - name: phone number
+    protocol: openid-connect
+    protocolMapper: oidc-usermodel-attribute-mapper
+    consentRequired: false
+    config:
+      userinfo.token.claim: 'true'
+      user.attribute: phoneNumber
+      id.token.claim: 'true'
+      access.token.claim: 'true'
+      claim.name: phone_number
+      jsonType.label: String
+- name: offline_access
+  description: 'OpenID Connect built-in scope: offline_access'
+  protocol: openid-connect
+  attributes:
+    consent.screen.text: "${offlineAccessScopeConsentText}"
+    display.on.consent.screen: 'true'
+- name: role_list
+  description: SAML role list
+  protocol: saml
+  attributes:
+    consent.screen.text: "${samlRoleListScopeConsentText}"
+    display.on.consent.screen: 'true'
+  protocolMappers:
+  - name: role list
+    protocol: saml
+    protocolMapper: saml-role-list-mapper
+    consentRequired: false
+    config:
+      single: 'false'
+      attribute.nameformat: Basic
+      attribute.name: Role
+- name: microprofile-jwt
+  description: Microprofile - JWT built-in scope
+  protocol: openid-connect
+  attributes:
+    include.in.token.scope: 'true'
+    display.on.consent.screen: 'false'
+  protocolMappers:
+  - name: upn
+    protocol: openid-connect
+    protocolMapper: oidc-usermodel-property-mapper
+    consentRequired: false
+    config:
+      userinfo.token.claim: 'true'
+      user.attribute: username
+      id.token.claim: 'true'
+      access.token.claim: 'true'
+      claim.name: upn
+      jsonType.label: String
+  - name: groups
+    protocol: openid-connect
+    protocolMapper: oidc-usermodel-realm-role-mapper
+    consentRequired: false
+    config:
+      multivalued: 'true'
+      user.attribute: foo
+      id.token.claim: 'true'
+      access.token.claim: 'true'
+      claim.name: groups
+      jsonType.label: String
+- name: email
+  description: 'OpenID Connect built-in scope: email'
+  protocol: openid-connect
+  attributes:
+    include.in.token.scope: 'true'
+    display.on.consent.screen: 'true'
+    consent.screen.text: "${emailScopeConsentText}"
+  protocolMappers:
+  - name: email
+    protocol: openid-connect
+    protocolMapper: oidc-usermodel-property-mapper
+    consentRequired: false
+    config:
+      userinfo.token.claim: 'true'
+      user.attribute: email
+      id.token.claim: 'true'
+      access.token.claim: 'true'
+      claim.name: email
+      jsonType.label: String
+  - name: email verified
+    protocol: openid-connect
+    protocolMapper: oidc-usermodel-property-mapper
+    consentRequired: false
+    config:
+      userinfo.token.claim: 'true'
+      user.attribute: emailVerified
+      id.token.claim: 'true'
+      access.token.claim: 'true'
+      claim.name: email_verified
+      jsonType.label: boolean
+{{- end }}
+
+{{/*
+Renders the groups section in a realm.
+Usage:
+{{ include "auth._groups" ( dict "dot" .Values) }}
+*/}}
+{{- define "auth._groups" -}}
+{{- $dot := default . .dot -}}
+{{- if $dot.groups }}
+groups:
+{{-   range $index, $group := $dot.groups }}
+  - name: "{{ $group.name }}"
+    path: "{{ $group.path }}"
+    attributes: {}
+    {{- if $group.roles }}
+    realmRoles:
+      {{- range $index2, $groupRole := $group.roles }}
+      - "{{ $groupRole }}"
+      {{- end }}
+    {{- else }}
+    realmRoles: []
+    {{- end }}
+    clientRoles: {}
+    subGroups: []
+{{-   end }}
+{{- else }}
+groups: []
+{{- end }}
+{{- end }}
+
+{{/*
+Renders the users section in a realm.
+Usage:
+{{ include "auth._users" ( dict "dot" .Values) }}
+*/}}
+{{- define "auth._users" -}}
+{{- $dot := default . .dot -}}
+{{- if $dot.initialUsers }}
+users:
+  {{- range $index, $user := $dot.initialUsers }}
+  - username: "{{ $user.username }}"
+    enabled: true
+    totp: false
+    email: "{{ default "" $user.email }}"
+    emailVerified: "{{ default true $user.emailVerified }}"
+    firstName: "{{ default "" $user.firstName }}"
+    lastName: "{{ default "" $user.lastName }}"
+    {{- if $user.attributes }}
+    attributes:
+      {{ toYaml $user.attributes | nindent 6 }}
+    {{- else }}
+    attributes: {}
+    {{- end }}
+    {{- if $user.password }}
+    credentials:
+      - type: "password"
+        temporary: false
+        value: "{{ $user.password }}"
+    {{- end }}
+    {{- if $user.credentials }}
+    credentials:
+      {{ toYaml $user.credentials | nindent 6 }}
+    {{- end }}
+    disableableCredentialTypes: []
+    {{- if $user.requiredActions }}
+    requiredActions:
+      {{- range $index2, $action := $user.requiredActions }}
+      - "{{ $action }}"
+      {{- end }}
+    {{- else }}
+    requiredActions: []
+    {{- end }}
+    {{- if $user.realmRoles }}
+    realmRoles:
+      {{- range $index2, $realmRole := $user.realmRoles }}
+      - "{{ $realmRole }}"
+      {{- end }}
+    {{- else }}
+    realmRoles: [ "default-roles-{{ $dot.name }}" ]
+    {{- end }}
+    {{- if $user.clientRoles }}
+    clientRoles:
+      {{ toYaml $user.clientRoles | nindent 6 }}
+    {{- end }}
+    notBefore: 0
+    groups: {{ $user.groups | toJson  }}
+  {{- end }}
+{{- end }}
+{{- end }}
+
+{{/*
+Renders the identityProviders section in a realm.
+Usage:
+{{ include "auth._identity" ( dict "dot" .Values) }}
+*/}}
+{{- define "auth._identity" -}}
+{{- $dot := default . .dot -}}
+{{- if $dot.identityProviders }}
+identityProviders:
+{{-  range $index, $provider := $dot.identityProviders }}
+  - alias: {{ $provider.name }}
+    displayName: {{ $provider.displayName }}
+    providerId: oidc
+    enabled: true
+    updateProfileFirstLoginMode: "on"
+    trustEmail: true
+    storeToken: true
+    addReadTokenRoleOnCreate: true
+    authenticateByDefault: false
+    linkOnly: false
+    firstBrokerLoginFlowAlias: "first broker login"
+    config:
+      {{ toYaml $provider.config | nindent 6 }}
+{{-   end }}
+{{- end }}
+{{- end }}
+
+{{/*
+Renders the identityProviderMappers section in a realm.
+Usage:
+{{ include "auth._identityMapper" ( dict "dot" .Values) }}
+*/}}
+{{- define "auth._identityMapper" -}}
+{{- $dot := default . .dot -}}
+{{- if $dot.identityProviderMappers }}
+identityProviderMappers:
+{{-  range $index, $mapper := $dot.identityProviderMappers }}
+  - name: {{ $mapper.name }}
+    identityProviderAlias: {{ $mapper.identityProviderAlias }}
+    identityProviderMapper: {{ $mapper.identityProviderMapper }}
+    config:
+      {{ toYaml $mapper.config | nindent 6 }}
+{{-   end }}
+{{- end }}
+{{- end }}
+
+{{/*
+Renders the smtpServer section in a realm.
+Usage:
+{{ include "auth._smtpServer" ( dict "dot" .Values) }}
+*/}}
+{{- define "auth._smtpServer" -}}
+{{- $dot := default . .dot -}}
+{{- if $dot.smtpServer }}
+smtpServer:
+  {{ toYaml $dot.smtpServer | nindent 2 }}
+{{- end }}
+{{- end }}
+
+{{/*
+Renders the attributes section in a realm.
+Usage:
+{{ include "auth._attributes" ( dict "dot" . "realm" $realm ) }}
+*/}}
+{{- define "auth._attributes" -}}
+{{- $dot := default . .dot -}}
+{{- $realm := (required "'realm' param, set to the specific service, is required." .realm) -}}
+{{- if $realm.attributes }}
+attributes:
+{{-   if $realm.attributes.frontendUrl }}
+  frontendUrl: {{ tpl $realm.attributes.frontendUrl $dot }}
+{{-   end }}
+  acr.loa.map: "{\"ABC\":\"5\"}"
+{{- end }}
+{{- end }}
diff --git a/kubernetes/authentication/templates/authorizationpolicy.yaml b/kubernetes/authentication/templates/authorizationpolicy.yaml
new file mode 100644 (file)
index 0000000..abd4072
--- /dev/null
@@ -0,0 +1,90 @@
+{{/*
+# Copyright © 2024 Tata Communication Limited (TCL), Deutsche Telekom AG
+#
+# 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.ingressAuthentication.enabled }}
+---
+{{- $dot := . }}
+{{- range $index, $realm := .Values.realmSettings }}
+{{-   range $key, $accessRole := $realm.accessControl.accessRoles }}
+{{-     range $index, $role := get $realm.accessControl.accessRoles $key }}
+apiVersion: security.istio.io/v1
+kind: AuthorizationPolicy
+metadata:
+  name: {{ $key }}-{{ $role.name }}-jwt
+  namespace: istio-ingress
+spec:
+  action: ALLOW
+  rules:
+  - to:
+    - operation:
+        hosts:
+        - {{ include "ingress.config.host" (dict "dot" $dot "baseaddr" $role.servicePrefix) }}
+        methods:
+        {{- range $role.methodsAllowed }}
+        - {{ . }}
+        {{- end }}
+    when:
+    - key: request.auth.claims[onap_roles]
+      values:
+      - {{ $role.name }}
+  selector:
+    matchLabels:
+      istio: ingress
+---
+{{-     end }}
+{{-   end }}
+{{- end }}
+apiVersion: security.istio.io/v1
+kind: AuthorizationPolicy
+metadata:
+  name: {{ .Release.Name }}-custom-action
+  namespace: istio-ingress
+spec:
+  action: CUSTOM
+  provider:
+    name: oauth2-proxy
+  rules:
+  - to:
+    - operation:
+        notHosts:
+          {{- if .Values.ingressAuthentication.exceptions }}
+          {{- range $index, $url := .Values.ingressAuthentication.exceptions }}
+          - {{ tpl $url $dot }}
+          {{- end }}
+          {{- end }}
+  selector:
+    matchLabels:
+      istio: ingress
+---
+apiVersion: security.istio.io/v1
+kind: AuthorizationPolicy
+metadata:
+  name: {{ .Release.Name }}-allowed-exceptions
+  namespace: istio-ingress
+spec:
+  action: ALLOW
+  rules:
+  - to:
+    - operation:
+        hosts:
+          {{- if .Values.ingressAuthentication.exceptions }}
+          {{- range $index, $url := .Values.ingressAuthentication.exceptions }}
+          - {{ tpl $url $dot }}
+          {{- end }}
+          {{- end }}
+  selector:
+    matchLabels:
+      istio: ingress
+{{- end }}
diff --git a/kubernetes/authentication/templates/configmap.yaml b/kubernetes/authentication/templates/configmap.yaml
new file mode 100644 (file)
index 0000000..f373754
--- /dev/null
@@ -0,0 +1,23 @@
+{{/*
+# Copyright © 2024 Tata Communication Limited (TCL), Deutsche Telekom AG
+#
+# 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.
+*/}}
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: oauth2-onap-config
+  namespace: {{ include "common.namespace" . }}
+data:
+{{ tpl (.Files.Glob "resources/oauth2_proxy.cfg").AsConfig . | indent 2 }}
diff --git a/kubernetes/authentication/templates/requestauthentication.yaml b/kubernetes/authentication/templates/requestauthentication.yaml
new file mode 100644 (file)
index 0000000..92bea9f
--- /dev/null
@@ -0,0 +1,36 @@
+{{/*
+# Copyright © 2024 Tata Communication Limited (TCL), Deutsche Telekom AG
+#
+# 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.ingressAuthentication.enabled }}
+---
+apiVersion: security.istio.io/v1beta1
+kind: RequestAuthentication
+metadata:
+  name: {{ .Release.Name }}-request-auth
+  namespace: istio-ingress
+spec:
+  selector:
+    matchLabels:
+      istio: ingress
+  jwtRules:
+  {{- $dot := . }}
+  {{- range $index, $realm := .Values.realmSettings }}
+  - issuer: "https://{{ include "ingress.config.host" (dict "dot" $dot "baseaddr" "keycloak-ui") }}/{{ $dot.Values.keycloak.relativePath }}realms/{{ $realm.name }}"
+    jwksUri: {{ $dot.Values.keycloak.intURL }}realms/{{ $realm.name }}/protocol/openid-connect/certs
+  {{- end }}
+  - issuer: "https://{{ include "ingress.config.host" (dict "dot" $dot "baseaddr" "keycloak-ui") }}/{{ .Values.keycloak.relativePath }}realms/master"
+    jwksUri: {{ .Values.keycloak.intURL }}realms/master/protocol/openid-connect/certs
+    forwardOriginalToken: true
+{{- end }}
diff --git a/kubernetes/authentication/templates/secret.yaml b/kubernetes/authentication/templates/secret.yaml
new file mode 100644 (file)
index 0000000..812b0ab
--- /dev/null
@@ -0,0 +1,12 @@
+---
+apiVersion: v1
+kind: Secret
+metadata:
+  name: keycloak-config-cli-config-realms
+  namespace: {{ include "common.namespace" . }}
+  labels: {{- include "common.labels" . | nindent 4 }}
+data:
+{{- $dot := . }}
+{{- range $realm := .Values.realmSettings }}
+  {{ $realm.name }}: {{ include "auth.realm" (dict "dot" $dot "realm" $realm) | fromYaml | toPrettyJson | indent 2 | b64enc | quote }}
+{{- end -}}
diff --git a/kubernetes/authentication/values.yaml b/kubernetes/authentication/values.yaml
new file mode 100644 (file)
index 0000000..89e6097
--- /dev/null
@@ -0,0 +1,670 @@
+# Copyright © 2024, Deutsche Telekom
+#
+# 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.
+
+global:
+  # Global ingress configuration
+  ingress:
+    enabled: false
+    virtualhost:
+      baseurl: "simpledemo.onap.org"
+      # prefix for baseaddr
+      # can be overwritten in component by setting ingress.preaddrOverride
+      preaddr: ""
+      # postfix for baseaddr
+      # can be overwritten in component by setting ingress.postaddrOverride
+      postaddr: ""
+
+keycloak:
+  intURL: "http://keycloak-http.keycloak.svc.cluster.local/"
+  relativePath: ""
+ingressAuthentication:
+  enabled: false
+  exceptions:
+    - '{{ include "ingress.config.host" (dict "dot" . "baseaddr" "keycloak-ui") }}'
+    - '{{ include "ingress.config.host" (dict "dot" . "baseaddr" "portal-ui") }}'
+    - '{{ include "ingress.config.host" (dict "dot" . "baseaddr" "minio-console") }}'
+    - '{{ include "ingress.config.host" (dict "dot" . "baseaddr" "uui-server") }}'
+
+onap-keycloak-config-cli:
+  image:
+    # "edge" is the latest build release and need to be replaced with a new version
+    # compatible with keycloak 26.x.y
+    tag: edge
+    tag: "6.2.1-26.0.5"
+    pullSecrets:
+      - name: onap-docker-registry-key
+
+#  annotations:
+#    # This is what defines this resource as a hook. Without this line, the
+#    # job is considered part of the release.
+#    argocd.argoproj.io/hook: Sync
+#    argocd.argoproj.io/hook-delete-policy: BeforeHookCreation
+#    helm.sh/hook: post-install,pre-upgrade,pre-rollback
+#    helm.sh/hook-weight: "1"
+#    helm.sh/hook-delete-policy: before-hook-creation
+
+  #existingSecret: "keycloak-keycloakx-admin-creds"
+  env:
+    # internal KC URL plus relative path
+    KEYCLOAK_URL: "http://keycloak-http.keycloak.svc.cluster.local/"
+    KEYCLOAK_SSLVERIFY: "false"
+    KEYCLOAK_AVAILABILITYCHECK_ENABLED: "true"
+  secrets:
+    KEYCLOAK_PASSWORD: secret
+  existingConfigSecret: "keycloak-config-cli-config-realms"
+  securityContext:
+    runAsGroup: 65534
+    runAsNonRoot: true
+    runAsUser: 65534
+    seccompProfile:
+      type: RuntimeDefault
+  containerSecurityContext:
+    allowPrivilegeEscalation: false
+    capabilities:
+      drop:
+      - ALL
+      - CAP_NET_RAW
+    readOnlyRootFilesystem: true
+  resources:
+    limits:
+      cpu: "1"
+      memory: 500Mi
+    requests:
+      cpu: 100m
+      memory: 10Mi
+
+onap-oauth2-proxy:
+
+  # Addition for oauth2-proxy deployment
+  imagePullSecrets:
+    - name: '{{ include "common.namespace" . }}-docker-registry-key'
+
+  securityContext:
+    capabilities:
+      drop:
+      - ALL
+      - CAP_NET_RAW
+
+  resources:
+    limits:
+      cpu: 500m
+      memory: 500Mi
+    requests:
+      cpu: 500m
+      memory: 500Mi
+
+  initContainers:
+    waitForRedis:
+      #image:
+      #  repository: "dockerhub.devops.telekom.de/alpine"
+      #  tag: "3.20"
+      securityContext:
+        capabilities:
+          drop:
+          - ALL
+          - CAP_NET_RAW
+      resources:
+        limits:
+          cpu: 100m
+          memory: 300Mi
+        requests:
+          cpu: 100m
+          memory: 300Mi
+
+  # Oauth client configuration specifics
+  config:
+    # Create a new secret with the following command
+    # openssl rand -base64 32 | head -c 32 | base64
+    cookieSecret: "CbgXFXDJ16laaCfChtFBpKy1trNEmJZDIjaiaIMLyRA="
+    clientID: &clientID "oauth2-proxy-onap"
+    # To be set in helmfile
+    clientSecret: &clientSecret "5YSOkJz99WHv8enDZPknzJuGqVSerELp"
+    # To be set in helmfile
+    cookieName: "onap-cookie"
+    # settings see https://github.com/oauth2-proxy/oauth2-proxy/blob/master/docs/docs/configuration/overview.md
+    existingConfig: "oauth2-onap-config"
+
+  # Configure the session storage type, between cookie and redis
+  sessionStorage:
+    # Can be one of the supported session storage cookie|redis
+    type: redis
+    redis:
+      # Name of the Kubernetes secret containing the redis & redis sentinel password values (see also `sessionStorage.redis.passwordKey`)
+      existingSecret: "onap-authentication-redis"
+      # Redis password value. Applicable for all Redis configurations. Taken from redis subchart secret if not set. `sessionStorage.redis.existingSecret` takes precedence
+      password: ""
+      # Key of the Kubernetes secret data containing the redis password value
+      passwordKey: "redis-password"
+      # Can be one of standalone|cluster|sentinel
+      clientType: "sentinel"
+      standalone:
+        # URL of redis standalone server for redis session storage (e.g. `redis://HOST[:PORT]`). Automatically generated if not set
+        connectionUrl: ""
+      cluster:
+        # List of Redis cluster connection URLs (e.g. `["redis://127.0.0.1:8000", "redis://127.0.0.1:8000"]`)
+        connectionUrls: []
+      sentinel:
+        # Name of the Kubernetes secret containing the redis sentinel password value (see also `sessionStorage.redis.sentinel.passwordKey`). Default: `sessionStorage.redis.existingSecret`
+        existingSecret: ""
+        # Redis sentinel password. Used only for sentinel connection; any redis node passwords need to use `sessionStorage.redis.password`
+        password: ""
+        # Key of the Kubernetes secret data containing the redis sentinel password value
+        passwordKey: "redis-password"
+        # Redis sentinel master name
+        masterName: "mymaster"
+        # List of Redis sentinel connection URLs (e.g. `["redis://127.0.0.1:8000", "redis://127.0.0.1:8000"]`)
+        connectionUrls: "redis://onap-authentication-redis-node-0.onap-authentication-redis-headless.onap:26379,redis://onap-authentication-redis-node-1.onap-authentication-redis-headless.onap:26379,redis://onap-authentication-redis-node-2.onap-authentication-redis-headless.onap:26379"
+
+  # Enables and configure the automatic deployment of the redis subchart
+  redis:
+    # provision an instance of the redis sub-chart
+    enabled: true
+    master:
+      containerSecurityContext:
+        capabilities:
+          drop: ["ALL", "CAP_NET_RAW"]
+    replica:
+      containerSecurityContext:
+        capabilities:
+          drop: ["ALL", "CAP_NET_RAW"]
+    sentinel:
+      enabled: true
+      containerSecurityContext:
+        capabilities:
+          drop: ["ALL", "CAP_NET_RAW"]
+
+serviceAccount:
+  nameOverride: keycloak-init
+  roles:
+    - read
+
+realmSettings:
+  - name: onap
+    displayName: "ONAP Realm"
+    attributes:
+      frontendUrl: 'https://{{ include "ingress.config.host" (dict "dot" . "baseaddr" "keycloak-ui") }}/{{ .Values.keycloak.relativePath }}'
+    themes:
+      login: "base"
+      admin: "base"
+      account: "base"
+      email: "base"
+    groups:
+      - name: admins
+        path: /admins
+        roles: [ "platform-all-full" ]
+      - name: contributors
+        path: /contributors
+        roles: [ "platform-all-write" ]
+      - name: readers
+        path: /readers
+        roles: [ "platform-all-read" ]
+    initialUsers:
+      - username: "onap-admin"
+        credentials:
+          - type: password
+            secretData: "{\"value\":\"nD4K4x8HEgk6xlWIAgzZOE+EOjdbovJfEa7N3WXwIMCWCfdXpn7Riys7hZhI1NbKcc9QPI9j8LQB/JSuZVcXKA==\",\"salt\":\"T8X9A9tT2cyLvEjHFo+zuQ==\",\"additionalParameters\":{}}"
+            credentialData : "{\"hashIterations\":27500,\"algorithm\":\"pbkdf2-sha256\",\"additionalParameters\":{}}"
+        attributes:
+          sdc_user:
+            - "cs0008"
+        realmRoles:
+          - default-roles-onap
+          - portal_admin
+        groups: []
+      - username: "onap-designer"
+        credentials: []
+        attributes:
+          sdc_user:
+            - "cs0008"
+        realmRoles:
+          - default-roles-onap
+          - portal_designer
+        groups: []
+      - username: "onap-operator"
+        credentials: []
+        attributes:
+          sdc_user:
+            - "cs0008"
+        realmRoles:
+          - default-roles-onap
+          - portal_operator
+        groups: []
+      - username: "service-account-portal-bff"
+        serviceAccountClientId: "portal-bff"
+        credentials: []
+        clientRoles:
+          realm-management:
+            - manage-realm
+            - manage-users
+        groups: []
+      - username: adminek
+        password: Adminek
+        email: "onap-admin@amartus.com"
+        groups:
+          - admins
+      - username: onapadmin
+        password: ONAPAdmin
+        email: "onap-admin1@amartus.com"
+        groups:
+          - admins
+      - username: contributor
+        password: Contributor
+        email: "onap-contributor@amartus.com"
+        groups:
+          - contributors
+      - username: reader
+        password: Reader
+        email: "onap-reader@amartus.com"
+        groups:
+          - readers
+    clients:
+      oauth2_proxy:
+        clientId: *clientID
+        name: "Oauth2 Proxy"
+        secret: *clientSecret
+        protocol: openid-connect
+        protocolMappers:
+          - name: "Audience for Oauth2Proxy"
+            protocolMapper: "oidc-audience-mapper"
+            config:
+              included.client.audience: "oauth2-proxy-onap"
+              id.token.claim: "false"
+              access.token.claim: "true"
+              included.custom.audience: "oauth2-proxy-onap"
+          - name: "SDC-User"
+            protocolMapper: "oidc-usermodel-attribute-mapper"
+            config:
+              multivalued: "false"
+              userinfo.token.claim: "true"
+              user.attribute: "sdc_user"
+              id.token.claim: "true"
+              access.token.claim: "true"
+              claim.name: "sdc_user"
+              jsonType.label: "String"
+        additionalDefaultScopes:
+          - "onap_roles"
+      portal_app:
+        clientId: "portal-app"
+        redirectUris:
+          - 'https://{{ include "ingress.config.host" (dict "dot" . "baseaddr" "portal-ng-ui") }}/*'
+          - 'http://localhost/*'
+        protocol: openid-connect
+        webOrigins:
+          - "*"
+        publicClient: "true"
+        additionalAttributes:
+          post.logout.redirect.uris: 'https://{{ include "ingress.config.host" (dict "dot" . "baseaddr" "portal-ng-ui") }}/*'
+        protocolMappers:
+          - name: "User-Roles"
+            protocolMapper: "oidc-usermodel-attribute-mapper"
+            config:
+              userinfo.token.claim: "true"
+              id.token.claim: "true"
+              access.token.claim: "true"
+              claim.name: "roles"
+              multivalued: "true"
+          - name: "SDC-User"
+            protocolMapper: "oidc-usermodel-attribute-mapper"
+            config:
+              userinfo.token.claim: "true"
+              user.attribute: "sdc_user"
+              id.token.claim: "true"
+              access.token.claim: "true"
+              claim.name: "sdc_user"
+              jsonType.label: "String"
+      portal_bff:
+        clientId: "portal-bff"
+        protocol: openid-connect
+        secret : pKOuVH1bwRZoNzp5P5t4GV8CqcCJYVtr
+        protocolMappers:
+          - name: "Client Host"
+            protocolMapper: "oidc-usersessionmodel-note-mapper"
+            config:
+              user.session.note: "clientHost"
+              id.token.claim: "true"
+              access.token.claim: "true"
+              claim.name: "clientHost"
+              jsonType.label: "String"
+          - name: "Client IP Address"
+            protocolMapper: "oidc-usersessionmodel-note-mapper"
+            config:
+              user.session.note: "clientAddress"
+              id.token.claim: "true"
+              access.token.claim: "true"
+              claim.name: "clientAddress"
+              jsonType.label: "String"
+    defaultClientScopes:
+      - "onap_roles"
+    additionalClientScopes:
+      - name: onap_roles
+        description: "OpenID Connect scope for add user onap roles to the access token"
+        protocolMappers:
+        - name: aud
+          protocol: openid-connect
+          protocolMapper: oidc-audience-mapper
+          consentRequired: false
+          config:
+            included.client.audience: oauth2-proxy
+            id.token.claim: 'false'
+            access.token.claim: 'true'
+        - name: client roles
+          protocol: openid-connect
+          protocolMapper: oidc-usermodel-client-role-mapper
+          consentRequired: false
+          config:
+            multivalued: 'true'
+            userinfo.token.claim: 'false'
+            id.token.claim: 'true'
+            access.token.claim: 'true'
+            claim.name: onap_roles
+            jsonType.label: String
+            usermodel.clientRoleMapping.clientId: oauth2-proxy
+    accessControl:
+      assignableRoles:
+        - name: portal_admin
+          description: "User role for administration tasks in the portal."
+        - name: portal_designer
+          description: "User role for designer tasks in the portal."
+        - name: portal_operator
+          description: "User role for operator tasks in the portal."
+        - name: onap-operator-read
+          description: "Allows to perform GET operations for all ONAP components"
+          associatedAccessRoles: [ "dmaap-bc-api-read", "dmaap-dr-node-api-read", "dmaap-dr-prov-api-read", "dmaap-mr-api-read", "msb-consul-api-read", "msb-discovery-api-read", "msb-eag-ui-read", "msb-iag-ui-read", "nbi-api-read", "aai-api-read", "aai-babel-api-read", "aai-sparkybe-api-read", "cds-blueprintsprocessor-api-read", "cds-ui-read", "cps-core-api-read", "cps-ncmp-dmi-plugin-api-read", "cps-temporal-api-read", "reaper-dc1-read", "sdc-be-api-read", "sdc-fe-ui-read", "sdc-wfd-be-api-read", "sdc-wfd-fe-ui-read", "so-admin-cockpit-ui-read", "so-api-read", "usecase-ui-read", "uui-server-read" ]
+        - name: onap-operator-write
+          description: "Allows to perform GET, POST, PUT, PATCH operations for all ONAP components"
+          associatedAccessRoles: [ "dmaap-bc-api-write", "dmaap-dr-node-api-write", "dmaap-dr-prov-api-write", "dmaap-mr-api-write", "msb-consul-api-write", "msb-discovery-api-write", "msb-eag-ui-write", "msb-iag-ui-write", "nbi-api-write", "aai-api-write", "aai-babel-api-write", "aai-sparkybe-api-write", "cds-blueprintsprocessor-api-write", "cds-ui-write", "cps-core-api-write", "cps-ncmp-dmi-plugin-api-write", "cps-temporal-api-write", "reaper-dc1-write", "sdc-be-api-write", "sdc-fe-ui-write", "sdc-wfd-be-api-write", "sdc-wfd-fe-ui-write", "so-admin-cockpit-ui-write", "so-api-write", "usecase-ui-write",  "uui-server-write" ]
+        - name: onap-operator-full
+          description: "Allows to perform GET, POST, PUT, PATCH, DELETE operations for all ONAP components"
+          associatedAccessRoles: [ "dmaap-bc-api-full", "dmaap-dr-node-api-full", "dmaap-dr-prov-api-full", "dmaap-mr-api-full", "msb-consul-api-full", "msb-discovery-api-full", "msb-eag-ui-full", "msb-iag-ui-full", "nbi-api-full", "aai-api-full", "aai-babel-api-full", "aai-sparkybe-api-full", "cds-blueprintsprocessor-api-full", "cds-ui-full", "cps-core-api-full", "cps-ncmp-dmi-plugin-api-full", "cps-temporal-api-full", "reaper-dc1-full", "sdc-be-api-full", "sdc-fe-ui-full", "sdc-wfd-be-api-full", "sdc-wfd-fe-ui-full", "so-admin-cockpit-ui-full", "so-api-full", "usecase-ui-full", "uui-server-full" ]
+        - name: platform-operator-read
+          description: "Allows to perform GET operations for all ONAP components"
+          associatedAccessRoles: [ "grafana-read", "kibana-read" ]
+        - name: platform-operator-write
+          description: "Allows to perform GET, POST, PUT, PATCH operations for all ONAP components"
+          associatedAccessRoles: [ "grafana-write", "kibana-write" ]
+        - name: platform-operator-full
+          description: "Allows to perform GET, POST, PUT, PATCH, DELETE operations for all ONAP components"
+          associatedAccessRoles: [ "grafana-full", "kibana-full" ]
+        - name: platform-all-read
+          description: "Allows to perform GET operations for all PLATFORM components"
+          associatedAccessRoles: [ "dmaap-bc-api-read", "dmaap-dr-node-api-read", "dmaap-dr-prov-api-read", "dmaap-mr-api-read", "msb-consul-api-read", "msb-discovery-api-read", "msb-eag-ui-read", "msb-iag-ui-read", "nbi-api-read", "aai-api-read", "aai-babel-api-read", "aai-sparkybe-api-read", "cds-blueprintsprocessor-api-read", "cds-ui-read", "cps-core-api-read", "cps-ncmp-dmi-plugin-api-read", "cps-temporal-api-read", "grafana-read", "kibana-read", "reaper-dc1-read", "sdc-be-api-read", "sdc-fe-ui-read", "sdc-wfd-be-api-read", "sdc-wfd-fe-ui-read", "so-admin-cockpit-ui-read", "so-api-read", "usecase-ui-read", "uui-server-read" ]
+        - name: platform-all-write
+          description: "Allows to perform GET, POST, PUT, PATCH operations for all PLATFORM components"
+          associatedAccessRoles: [ "dmaap-bc-api-write", "dmaap-dr-node-api-write", "dmaap-dr-prov-api-write", "dmaap-mr-api-write", "msb-consul-api-write", "msb-discovery-api-write", "msb-eag-ui-write", "msb-iag-ui-write", "nbi-api-write", "aai-api-write", "aai-babel-api-write", "aai-sparkybe-api-write", "cds-blueprintsprocessor-api-write", "cds-ui-write", "cps-core-api-write", "cps-ncmp-dmi-plugin-api-write", "cps-temporal-api-write", "grafana-write", "kibana-write", "reaper-dc1-write", "sdc-be-api-write", "sdc-fe-ui-write", "sdc-wfd-be-api-write", "sdc-wfd-fe-ui-write", "so-admin-cockpit-ui-write", "so-api-write", "usecase-ui-write",  "uui-server-write" ]
+        - name: platform-all-full
+          description: "Allows to perform GET, POST, PUT, PATCH, DELETE operations for all PLATFORM components"
+          associatedAccessRoles: [ "dmaap-bc-api-full", "dmaap-dr-node-api-full", "dmaap-dr-prov-api-full", "dmaap-mr-api-full", "msb-consul-api-full", "msb-discovery-api-full", "msb-eag-ui-full", "msb-iag-ui-full", "nbi-api-full", "aai-api-full", "aai-babel-api-full", "aai-sparkybe-api-full", "cds-blueprintsprocessor-api-full", "cds-ui-full", "cps-core-api-full", "cps-ncmp-dmi-plugin-api-full", "cps-temporal-api-full", "grafana-full", "kibana-full", "reaper-dc1-full", "sdc-be-api-full", "sdc-fe-ui-full", "sdc-wfd-be-api-full", "sdc-wfd-fe-ui-full", "so-admin-cockpit-ui-full", "so-api-full", "usecase-ui-full", "uui-server-full" ]
+      accessRoles:
+        "oauth2_proxy":
+        - name: dmaap-bc-api-read
+          methodsAllowed: ["GET"]
+          servicePrefix: dmaap-bc-api
+        - name: dmaap-bc-api-write
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH"]
+          servicePrefix: dmaap-bc-api
+        - name: dmaap-bc-api-full
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH", "DELETE"]
+          servicePrefix: dmaap-bc-api
+        - name: dmaap-dr-node-api-read
+          methodsAllowed: ["GET"]
+          servicePrefix: dmaap-dr-node-api
+        - name: dmaap-dr-node-api-write
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH"]
+          servicePrefix: dmaap-dr-node-api
+        - name: dmaap-dr-node-api-full
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH", "DELETE"]
+          servicePrefix: dmaap-dr-node-api
+        - name: dmaap-dr-prov-api-read
+          methodsAllowed: ["GET"]
+          servicePrefix: dmaap-dr-prov-api
+        - name: dmaap-dr-prov-api-write
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH"]
+          servicePrefix: dmaap-dr-prov-api
+        - name: dmaap-dr-prov-api-full
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH", "DELETE"]
+          servicePrefix: dmaap-dr-prov-api
+        - name: dmaap-mr-api-read
+          methodsAllowed: ["GET"]
+          servicePrefix: dmaap-mr-api
+        - name: dmaap-mr-api-write
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH"]
+          servicePrefix: dmaap-mr-api
+        - name: dmaap-mr-api-full
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH", "DELETE"]
+          servicePrefix: dmaap-mr-api
+        - name: msb-consul-api-read
+          methodsAllowed: ["GET"]
+          servicePrefix: msb-consul-api
+        - name: msb-consul-api-write
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH"]
+          servicePrefix: msb-consul-api
+        - name: msb-consul-api-full
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH", "DELETE"]
+          servicePrefix: msb-consul-api
+        - name: msb-discovery-api-read
+          methodsAllowed: ["GET"]
+          servicePrefix: msb-discovery-api
+        - name: msb-discovery-api-write
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH"]
+          servicePrefix: msb-discovery-api
+        - name: msb-discovery-api-full
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH", "DELETE"]
+          servicePrefix: msb-discovery-api
+        - name: msb-eag-ui-read
+          methodsAllowed: ["GET"]
+          servicePrefix: msb-eag-ui
+        - name: msb-eag-ui-write
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH"]
+          servicePrefix: msb-eag-ui
+        - name: msb-eag-ui-full
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH", "DELETE"]
+          servicePrefix: msb-eag-ui
+        - name: msb-iag-ui-read
+          methodsAllowed: ["GET"]
+          servicePrefix: msb-iag-ui
+        - name: msb-iag-ui-write
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH"]
+          servicePrefix: msb-iag-ui
+        - name: msb-iag-ui-full
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH", "DELETE"]
+          servicePrefix: msb-iag-ui
+        - name: nbi-api-read
+          methodsAllowed: ["GET"]
+          servicePrefix: nbi-api
+        - name: nbi-api-write
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH"]
+          servicePrefix: nbi-api
+        - name: nbi-api-full
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH", "DELETE"]
+          servicePrefix: nbi-api
+        - name: aai-api-read
+          methodsAllowed: ["GET"]
+          servicePrefix: aai-api
+        - name: aai-api-write
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH"]
+          servicePrefix: aai-api
+        - name: aai-api-full
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH", "DELETE"]
+          servicePrefix: aai-api
+        - name: aai-babel-api-read
+          methodsAllowed: ["GET"]
+          servicePrefix: aai-babel-api
+        - name: aai-babel-api-write
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH"]
+          servicePrefix: aai-babel-api
+        - name: aai-babel-api-full
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH", "DELETE"]
+          servicePrefix: aai-babel-api
+        - name: aai-sparkybe-api-read
+          methodsAllowed: ["GET"]
+          servicePrefix: aai-sparkybe-api
+        - name: aai-sparkybe-api-write
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH"]
+          servicePrefix: aai-sparkybe-api
+        - name: aai-sparkybe-api-full
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH", "DELETE"]
+          servicePrefix: aai-sparkybe-api
+        - name: cds-blueprintsprocessor-api-read
+          methodsAllowed: ["GET"]
+          servicePrefix: cds-blueprintsprocessor-api
+        - name: cds-blueprintsprocessor-api-write
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH"]
+          servicePrefix: cds-blueprintsprocessor-api
+        - name: cds-blueprintsprocessor-api-full
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH", "DELETE"]
+          servicePrefix: cds-blueprintsprocessor-api
+        - name: cds-ui-read
+          methodsAllowed: ["GET"]
+          servicePrefix: cds-ui
+        - name: cds-ui-write
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH"]
+          servicePrefix: cds-ui
+        - name: cds-ui-full
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH", "DELETE"]
+          servicePrefix: cds-ui
+        - name: cps-core-api-read
+          methodsAllowed: ["GET"]
+          servicePrefix: cps-core-api
+        - name: cps-core-api-write
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH"]
+          servicePrefix: cps-core-api
+        - name: cps-core-api-full
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH", "DELETE"]
+          servicePrefix: cps-core-api
+        - name: cps-ncmp-dmi-plugin-api-read
+          methodsAllowed: ["GET"]
+          servicePrefix: cps-ncmp-dmi-plugin-api
+        - name: cps-ncmp-dmi-plugin-api-write
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH"]
+          servicePrefix: cps-ncmp-dmi-plugin-api
+        - name: cps-ncmp-dmi-plugin-api-full
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH", "DELETE"]
+          servicePrefix: cps-ncmp-dmi-plugin-api
+        - name: cps-temporal-api-read
+          methodsAllowed: ["GET"]
+          servicePrefix: cps-temporal-api
+        - name: cps-temporal-api-write
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH"]
+          servicePrefix: cps-temporal-api
+        - name: cps-temporal-api-full
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH", "DELETE"]
+          servicePrefix: cps-temporal-api
+        - name: grafana-read
+          methodsAllowed: ["GET"]
+          servicePrefix: grafana
+        - name: grafana-write
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH"]
+          servicePrefix: grafana
+        - name: grafana-full
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH", "DELETE"]
+          servicePrefix: grafana
+        - name: kibana-read
+          methodsAllowed: ["GET"]
+          servicePrefix: kibana
+        - name: kibana-write
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH"]
+          servicePrefix: kibana
+        - name: kibana-full
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH", "DELETE"]
+          servicePrefix: kibana
+        - name: minio-read
+          methodsAllowed: ["GET"]
+          servicePrefix: minio-console
+        - name: minio-write
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH"]
+          servicePrefix: minio-console
+        - name: minio-full
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH", "DELETE"]
+          servicePrefix: minio-console
+        - name: reaper-dc1-read
+          methodsAllowed: ["GET"]
+          servicePrefix: reaper-dc1
+        - name: reaper-dc1-write
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH"]
+          servicePrefix: reaper-dc1
+        - name: reaper-dc1-full
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH", "DELETE"]
+          servicePrefix: reaper-dc1
+        - name: sdc-be-api-read
+          methodsAllowed: ["GET"]
+          servicePrefix: sdc-be-api
+        - name: sdc-be-api-write
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH"]
+          servicePrefix: sdc-be-api
+        - name: sdc-be-api-full
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH", "DELETE"]
+          servicePrefix: sdc-be-api
+        - name: sdc-fe-ui-read
+          methodsAllowed: ["GET"]
+          servicePrefix: sdc-fe-ui
+        - name: sdc-fe-ui-write
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH"]
+          servicePrefix: sdc-fe-ui
+        - name: sdc-fe-ui-full
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH", "DELETE"]
+          servicePrefix: sdc-fe-ui
+        - name: sdc-wfd-be-api-read
+          methodsAllowed: ["GET"]
+          servicePrefix: sdc-wfd-be-api
+        - name: sdc-wfd-be-api-write
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH"]
+          servicePrefix: sdc-wfd-be-api
+        - name: sdc-wfd-be-api-full
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH", "DELETE"]
+          servicePrefix: sdc-wfd-be-api
+        - name: sdc-wfd-fe-ui-read
+          methodsAllowed: ["GET"]
+          servicePrefix: sdc-wfd-fe-ui
+        - name: sdc-wfd-fe-ui-write
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH"]
+          servicePrefix: sdc-wfd-fe-ui
+        - name: sdc-wfd-fe-ui-full
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH", "DELETE"]
+          servicePrefix: sdc-wfd-fe-ui
+        - name: so-admin-cockpit-ui-read
+          methodsAllowed: ["GET"]
+          servicePrefix: so-admin-cockpit-ui
+        - name: so-admin-cockpit-ui-write
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH"]
+          servicePrefix: so-admin-cockpit-ui
+        - name: so-admin-cockpit-ui-full
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH", "DELETE"]
+          servicePrefix: so-admin-cockpit-ui
+        - name: so-api-read
+          methodsAllowed: ["GET"]
+          servicePrefix: so-api
+        - name: so-api-write
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH"]
+          servicePrefix: so-api
+        - name: so-api-full
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH", "DELETE"]
+          servicePrefix: so-api
+        - name: usecase-ui-read
+          methodsAllowed: ["GET"]
+          servicePrefix: usecase-ui
+        - name: usecase-ui-write
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH"]
+          servicePrefix: usecase-ui
+        - name: usecase-ui-full
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH", "DELETE"]
+          servicePrefix: usecase-ui
+        - name: uui-server-read
+          methodsAllowed: ["GET"]
+          servicePrefix: uui-server
+        - name: uui-server-write
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH"]
+          servicePrefix: uui-server
+        - name: uui-server-full
+          methodsAllowed: ["GET", "POST", "PUT", "PATCH", "DELETE"]
+          servicePrefix: uui-server
index d8b6cc7..1353916 100644 (file)
 apiVersion: v2
 description: ONAP Controller Design Studio (CDS)
 name: cds
-version: 13.0.2
+version: 16.0.0
 
 dependencies:
   - name: common
     version: ~13.x-0
     repository: '@local'
   - name: mariadb-galera
-    version: ~13.x-0
+    version: ~16.x-0
     repository: '@local'
     condition: global.mariadbGalera.localCluster
   - name: cds-blueprints-processor
index e4fc011..cfe5c73 100755 (executable)
@@ -17,7 +17,7 @@
 apiVersion: v2
 description: ONAP CDS Blueprints Processor
 name: cds-blueprints-processor
-version: 13.0.0
+version: 13.0.1
 
 dependencies:
   - name: common
index b99bae7..248e5bf 100755 (executable)
@@ -44,7 +44,7 @@ blueprintsprocessor.httpPort=8080
 blueprintsprocessor.grpcPort=9111
 
 # db
-blueprintsprocessor.db.url=jdbc:mysql://{{.Values.config.cdsDB.dbServer}}:{{.Values.config.cdsDB.dbPort}}/{{.Values.config.cdsDB.dbName}}
+blueprintsprocessor.db.url=jdbc:mariadb://{{.Values.config.cdsDB.dbServer}}:{{.Values.config.cdsDB.dbPort}}/{{.Values.config.cdsDB.dbName}}
 blueprintsprocessor.db.username=${CDS_DB_USERNAME}
 blueprintsprocessor.db.password=${CDS_DB_PASSWORD}
 blueprintsprocessor.db.driverClassName=org.mariadb.jdbc.Driver
@@ -55,7 +55,7 @@ blueprintsprocessor.db.hibernateDialect=org.hibernate.dialect.MySQL5InnoDBDialec
 
 # processor-db endpoint
 blueprintsprocessor.db.processor-db.type=maria-db
-blueprintsprocessor.db.processor-db.url=jdbc:mysql://{{ .Values.config.sdncDB.dbService }}:{{ .Values.config.sdncDB.dbPort }}/{{.Values.config.sdncDB.dbName}}
+blueprintsprocessor.db.processor-db.url=jdbc:mariadb://{{ .Values.config.sdncDB.dbService }}:{{ .Values.config.sdncDB.dbPort }}/{{.Values.config.sdncDB.dbName}}
 blueprintsprocessor.db.processor-db.username=${SDNC_DB_USERNAME}
 blueprintsprocessor.db.processor-db.password=${SDNC_DB_PASSWORD}
 
@@ -197,12 +197,13 @@ blueprintprocessor.k8s.plugin.url=http://multicloud-k8s:9015/
 blueprintsprocessor.workflow.self-service-api.audit.storeEnable={{ .Values.workflow.storeEnabled }}
 
 #Tracing
-spring.zipkin.baseUrl={{ .Values.tracing.collector.baseUrl }}
+spring.sleuth.enabled={{ .Values.global.tracing.enabled }}
+spring.zipkin.baseUrl={{ .Values.global.tracing.collector.baseUrl }}
 spring.zipkin.checkTimeout=5000
 spring.zipkin.service.name={{ include "common.name" . }}
 spring.sleuth.messaging.jms.enabled=false
 spring.sleuth.trace-id128=true
-spring.sleuth.sampler.probability={{ .Values.tracing.sampling.probability }}
+spring.sleuth.sampler.probability={{ .Values.global.tracing.sampling.probability }}
 spring.sleuth.propagation.type=w3c, b3
 spring.sleuth.supports-join=false
 spring.sleuth.web.skip-pattern={{ join "," .Values.tracing.ignorePatterns }}
index b0812f2..549a44f 100755 (executable)
@@ -36,6 +36,12 @@ global:
   # This configuration specifies Service and port for SDNC OAM interface
   sdncOamService: sdnc-oam
   sdncOamPort: 8282
+  tracing:
+    enabled: false
+    collector:
+      baseUrl: http://jaeger-collector.istio-config:9411
+    sampling:
+      probability: 1.0 # percentage of requests that are sampled (between 0-1/0%-100%)
   # This concerns CDS/AAI communication through HTTP when TLS is not being needed
   # Port value should match the one in aai/values.yml : service.externalPlainPort
   aaiData:
@@ -77,7 +83,7 @@ secrets:
 # Application configuration defaults.
 #################################################################
 # application image
-image: onap/ccsdk-blueprintsprocessor:1.5.3
+image: onap/ccsdk-blueprintsprocessor:1.7.1
 pullPolicy: Always
 
 # flag to enable debugging - application support required
@@ -244,9 +250,5 @@ workflow:
   storeEnabled: false
 
 tracing:
-  collector:
-    baseUrl: http://jaeger-collector.istio-system:9411
-  sampling:
-    probability: 1.0 # percentage of requests that are sampled (between 0-1/0%-100%)
   ignorePatterns:
     - .*/execution-service/health-check
index dc5fef2..1c35474 100755 (executable)
@@ -26,6 +26,9 @@ dependencies:
   - name: repositoryGenerator
     version: ~13.x-0
     repository: '@local'
+  - name: readinessCheck
+    version: ~13.x-0
+    repository: '@local'
   - name: serviceAccount
     version: ~13.x-0
-    repository: '@local'
\ No newline at end of file
+    repository: '@local'
index 6922b24..2b24097 100644 (file)
@@ -24,29 +24,7 @@ spec:
     metadata: {{- include "common.templateMetadata" . | nindent 6 }}
     spec:
       initContainers:
-        - command:
-          - /app/ready.py
-          args:
-            - --service-name
-            - sdc-be
-            - --service-name
-            - cds-blueprints-processor-http
-          env:
-          - name: NAMESPACE
-            valueFrom:
-              fieldRef:
-                apiVersion: v1
-                fieldPath: metadata.namespace
-          image: {{ include "repositoryGenerator.image.readiness" . }}
-          imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-          name: {{ include "common.name" . }}-readiness
-          resources:
-            limits:
-              cpu: "100m"
-              memory: "500Mi"
-            requests:
-              cpu: "3m"
-              memory: "20Mi"
+      {{ include "common.readinessCheck.waitFor" . | indent 6 | trim }}
       containers:
         - name: {{ include "common.name" . }}
           image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
index 4658b57..4a00305 100644 (file)
@@ -97,7 +97,7 @@ flavor: small
 resources:
   small:
     limits:
-      cpu: "1"
+      cpu: "1500m"
       memory: "700Mi"
     requests:
       cpu: "0.5"
@@ -116,3 +116,10 @@ serviceAccount:
   nameOverride: cds-sdc-listener
   roles:
     - read
+
+readinessCheck:
+  wait_for:
+    timeout: 30
+    services:
+      - sdc-be
+      - cds-blueprints-processor-http
index ced4f1d..ac17183 100644 (file)
@@ -36,6 +36,12 @@ global:
     nameOverride: mariadb-galera
     # (optional) if localCluster=false and an external secret is used set this variable
     #userRootSecret: <secretName>
+  tracing:
+    enabled: false
+    collector:
+      baseUrl: http://jaeger-collector.istio-config:9411
+    sampling:
+      probability: 1.0 # percentage of requests that are sampled (between 0-1/0%-100%)
 
 
 #################################################################
diff --git a/kubernetes/common/cassandra/.helmignore b/kubernetes/common/cassandra/.helmignore
new file mode 100644 (file)
index 0000000..0bab41b
--- /dev/null
@@ -0,0 +1,32 @@
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*~
+# Various IDEs
+.project
+.idea/
+*.tmproj
+# Project/CI/CD related items
+.gitlab
+.gitlab-ci.yml
+.dockerignore
+# Helm build files
+.helmignore
+.cache/
+.config/
+.local/
+# OOM specific dirs
+components/
index ee3f4e5..9c86146 100644 (file)
@@ -18,7 +18,7 @@
 apiVersion: v2
 description: ONAP cassandra
 name: cassandra
-version: 13.1.0
+version: 16.0.0
 
 dependencies:
   - name: common
@@ -30,4 +30,4 @@ dependencies:
   - name: serviceAccount
     version: ~13.x-0
     repository: 'file://../serviceAccount'
-    condition: global.cassandra.enableServiceAccount
\ No newline at end of file
+    condition: global.cassandra.enableServiceAccount
index a7f2973..ec2f0b4 100644 (file)
@@ -118,5 +118,3 @@ def main(argv):
 
 if __name__ == "__main__":
     main(sys.argv[1:])
-
-
index 6db1202..263ac28 100644 (file)
@@ -250,4 +250,4 @@ spec:
             persistentVolumeClaim:
               claimName: {{ include "common.fullname" . }}-backup-data
 {{- end -}}
-{{- end -}}
\ No newline at end of file
+{{- end -}}
index 9f463ad..6b7052d 100644 (file)
@@ -16,4 +16,4 @@
 
 {{- if .Values.global.cassandra.useOperator }}
 {{ include "common.k8ssandraCluster" . }}
-{{- end }}
\ No newline at end of file
+{{- end }}
index 5510986..117100a 100644 (file)
@@ -26,4 +26,4 @@ metadata:
     heritage: {{ .Release.Service }}
 data:
 {{ tpl (.Files.Glob "resources/config/docker-entrypoint.sh").AsConfig . | indent 2 }}
-{{- end }}
\ No newline at end of file
+{{- end }}
index d18e51d..00e61d3 100644 (file)
@@ -15,4 +15,4 @@
 */}}
 {{- if not .Values.global.cassandra.useOperator }}
 {{ include "common.replicaPV" . }}
-{{- end }}
\ No newline at end of file
+{{- end }}
index 5a611a9..181e5f9 100644 (file)
@@ -18,4 +18,4 @@
 
 {{- if .Values.global.cassandra.useOperator }}
 {{ include "common.secretFast" . }}
-{{- end }}
\ No newline at end of file
+{{- end }}
index 8b2e534..6b6f585 100644 (file)
@@ -16,4 +16,4 @@
 
 {{- if not .Values.global.cassandra.useOperator }}
 {{ include "common.headlessService" . }}
-{{- end }}
\ No newline at end of file
+{{- end }}
index 0781073..57f4d3f 100644 (file)
@@ -18,4 +18,4 @@
 {{- if .Values.metrics.serviceMonitor.enabled }}
 {{  include "common.serviceMonitor" . }}
 {{- end }}
-{{- end }}
\ No newline at end of file
+{{- end }}
index ddaff5c..d76dde3 100644 (file)
@@ -199,4 +199,4 @@ spec:
           requests:
             storage: {{ .Values.persistence.size | quote }}
   {{- end }}
-{{- end }}
\ No newline at end of file
+{{- end }}
index 0ab1f09..0cd8545 100644 (file)
@@ -29,7 +29,7 @@ global: # global defaults
     enableServiceAccount: false
 
 k8ssandraOperator:
-  cassandraVersion: 4.1.3
+  cassandraVersion: 4.1.8
   persistence:
     #storageClassName: default
     size: 10Gi
@@ -39,19 +39,35 @@ k8ssandraOperator:
     superuserName: &superusername cassandra
     superuserPassword: &superuserpassword cassandra
     casOptions:
+      authenticator: PasswordAuthenticator
       authorizer: AllowAllAuthorizer
-      read_request_timeout: 10000ms
-      write_request_timeout: 10000ms
+      read_request_timeout: 15000ms
+      write_request_timeout: 15000ms
       counter_write_request_timeout: 15000ms
+      request_timeout: 15000ms
+      auto_snapshot: false
+      commitlog_segment_size: 128MiB
+      commitlog_sync_period: 15000ms
+      concurrent_reads: 16
+      concurrent_writes: 16
+      counter_cache_size: 16MiB
     jvmOptions:
       heap_initial_size: 512M
-      heap_max_size: 8192M
+      heap_max_size: 4096M
     hostNetwork: false
   datacenters:
     - name: dc1
       size: 3
+      resources:
+        requests:
+          cpu: 2
+          memory: 8Gi
+        limits:
+          cpu: 8
+          memory: 8Gi
   reaper:
     enabled: true
+    tag: 3.8.0
   stargate:
     enabled: false
     tag: v1.0.77
diff --git a/kubernetes/common/common/.helmignore b/kubernetes/common/common/.helmignore
new file mode 100644 (file)
index 0000000..569badd
--- /dev/null
@@ -0,0 +1,40 @@
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*~
+
+# Various IDEs
+.project
+.idea/
+.vscode/
+*.tmproj
+
+# Project/CI/CD related items
+.gitlab
+.gitlab-ci.yml
+.gitignore
+.dockerignore
+
+# Helm build files
+.helmignore
+.cache/
+.config/
+.local/
+
+# OOM specific dirs
+components/
index ffcda67..df6138b 100644 (file)
@@ -1,5 +1,6 @@
 # Copyright © 2017 Amdocs, Bell Canada
 # Modifications Copyright © 2021 Orange
+# Modifications Copyright © 2025 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -12,8 +13,8 @@
 # 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.
-
+---
 apiVersion: v2
 description: Common templates for inclusion in other charts
 name: common
-version: 13.2.0
+version: 13.2.19
index bf7ae49..69d0e78 100644 (file)
@@ -106,4 +106,4 @@ Return a podAffinity/podAntiAffinity definition
   {{- else if eq .type "hard" }}
     {{- include "common.affinities.pods.hard" . -}}
   {{- end -}}
-{{- end -}}
\ No newline at end of file
+{{- end -}}
index b0cf8e3..bbcdf91 100644 (file)
@@ -1,5 +1,5 @@
 {{/*
-# Copyright © 2022 Deutsche Telekom AG
+# Copyright © 2022-2024 Deutsche Telekom AG
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -29,6 +29,7 @@ spec:
       registry: {{ include "repositoryGenerator.dockerHubRepository" . }}
     containerImage:
       registry: {{ include "repositoryGenerator.dockerHubRepository" . }}
+      tag: {{ .Values.k8ssandraOperator.reaper.tag }}
     autoScheduling:
       enabled: true
     metadata:
@@ -45,6 +46,29 @@ spec:
         endpoint:
           address: 0.0.0.0
     {{- end }}
+    podSecurityContext:
+      fsGroup: 1001
+      runAsGroup: 1001
+      runAsUser: 1001
+      runAsNonRoot: true
+      seccompProfile:
+        type: RuntimeDefault
+    initContainerSecurityContext:
+      allowPrivilegeEscalation: false
+      readOnlyRootFilesystem: true
+      privileged: false
+      capabilities:
+        drop:
+        - ALL
+        - CAP_NET_RAW
+    securityContext:
+      allowPrivilegeEscalation: false
+      readOnlyRootFilesystem: true
+      privileged: false
+      capabilities:
+        drop:
+        - ALL
+        - CAP_NET_RAW
   {{- end }}
   {{ if .Values.k8ssandraOperator.stargate.enabled -}}
   stargate:
@@ -110,14 +134,61 @@ spec:
       - metadata:
           name: {{ $datacenter.name }}
         size: {{ $datacenter.size }}
+        {{ if $datacenter.resources -}}
+        resources:
+          {{ toYaml $datacenter.resources | nindent 10 }}
+        {{- end }}
       {{- end }}
-    {{ if .Values.podAnnotations -}}
+    initContainers:
+      - name: server-config-init-base
+        securityContext:
+          allowPrivilegeEscalation: false
+          readOnlyRootFilesystem: true
+          privileged: false
+          capabilities:
+            drop:
+            - ALL
+            - CAP_NET_RAW
+      - name: server-config-init
+        securityContext:
+          allowPrivilegeEscalation: false
+          readOnlyRootFilesystem: true
+          privileged: false
+          capabilities:
+            drop:
+            - ALL
+            - CAP_NET_RAW
+    containers:
+      - name: cassandra
+        securityContext:
+          allowPrivilegeEscalation: false
+          #readOnlyRootFilesystem: true
+          privileged: false
+          capabilities:
+            drop:
+            - ALL
+            - CAP_NET_RAW
+      - name: server-system-logger
+        securityContext:
+          allowPrivilegeEscalation: false
+          readOnlyRootFilesystem: true
+          privileged: false
+          capabilities:
+            drop:
+            - ALL
+            - CAP_NET_RAW
+    podSecurityContext:
+      fsGroup: 999
+      runAsGroup: 999
+      runAsUser: 999
+      runAsNonRoot: true
     metadata:
+      {{ if .Values.podAnnotations -}}
       pods:
         annotations:
           {{ toYaml .Values.podAnnotations | nindent 10 }}
+      {{- end }}
       commonLabels:
         app: {{ .Values.k8ssandraOperator.config.clusterName }}
         version: {{ .Values.k8ssandraOperator.cassandraVersion }}
-    {{- end }}
 {{ end }}
index e7b90ea..f162e9a 100644 (file)
   {{- include "common.dmaap.provisioning._volumeMounts" $dot | trim | nindent 2 }}
   resources: {{ include "common.resources" $dot | nindent 4 }}
 {{- end -}}
-{{- end -}}
\ No newline at end of file
+{{- end -}}
index ca23c75..4d762c7 100644 (file)
@@ -744,11 +744,7 @@ metadata:
   name: {{ include "common.fullname" $dot }}-ingress
   annotations:
     {{ include "ingress.config.annotations" $dot }}
-  labels:
-    app: {{ $dot.Chart.Name }}
-    chart: {{ $dot.Chart.Name }}-{{ $dot.Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" $dot }}
-    heritage: {{ $dot.Release.Service }}
+  labels: {{- include "common.labels" $dot | nindent 4 }}
 spec:
   rules:
   {{ include "ingress.config.port" $dot | trim }}
index a690acd..97e2e7f 100644 (file)
@@ -1,6 +1,7 @@
 {{/*
 # Copyright © 2019 Orange
-# Modifications Copyright (C) 2022 Bell Canada
+# Modifications Copyright © 2022 Bell Canada
+# Modifications Copyright © 2025 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -22,11 +23,15 @@ Common labels
 The function takes several arguments (inside a dictionary):
      - .dot : environment (.)
      - .labels : labels to add (dict)
+     - .suffix : name suffix
+     - .prefix : name prefix
 */}}
 {{- define "common.labels" -}}
 {{- $dot := default . .dot -}}
-app.kubernetes.io/name: {{ include "common.name" $dot }}
-app: {{ include "common.name" $dot }}
+{{- $suffix := default "" .suffix -}}
+{{- $prefix := default "" .prefix -}}
+app.kubernetes.io/name: {{ include "common.name" (dict "dot" $dot "suffix" $suffix "prefix" $prefix) }}
+app: {{ include "common.name" (dict "dot" $dot "suffix" $suffix "prefix" $prefix) }}
 {{- if $dot.Chart.AppVersion }}
 version: "{{ $dot.Chart.AppVersion | replace "+" "_" }}"
 {{- else }}
@@ -74,7 +79,12 @@ app.kubernetes.io/instance: {{ include "common.release" $dot }}
 {{- $suffix := default "" .suffix -}}
 {{- $labels := default (dict) .labels -}}
 {{- $annotations := default (dict) .annotations -}}
+{{- $includeFullname := default "true" .includeFullname -}}
+{{- if eq ($includeFullname | lower) "true" -}}
 name: {{ include "common.fullname" (dict "suffix" $suffix "dot" $dot )}}
+{{- else -}}
+name: {{ include "common.name" (dict "suffix" $suffix "dot" $dot )}}
+{{- end }}
 namespace: {{ include "common.namespace" $dot }}
 labels: {{- include "common.labels" (dict "labels" $labels "ignoreHelmChart" .ignoreHelmChart "dot" $dot ) | nindent 2 }}
 {{- if $annotations }}
@@ -99,13 +109,16 @@ matchLabels: {{- include "common.matchLabels" (dict "matchLabels" $matchLabels "
     The function takes several arguments (inside a dictionary)
      - .dot : environment (.)
      - .labels: labels to add (dict)
+     - .annotations: annotation to add (dict)
 */}}
 {{- define "common.templateMetadata" -}}
 {{- $dot := default . .dot -}}
 {{- $labels := default (dict) .labels -}}
-{{- if $dot.Values.podAnnotations }}
-annotations: {{- include "common.tplValue" (dict "value" $dot.Values.podAnnotations "context" $dot) | nindent 2 }}
+{{- $suffix := default "" .suffix -}}
+{{- $annotations := default $dot.Values.podAnnotations .annotations -}}
+{{- if $annotations}}
+annotations: {{- include "common.tplValue" (dict "value" $annotations "context" $dot) | nindent 2 }}
 {{- end }}
 labels: {{- include "common.labels" (dict "labels" $labels "ignoreHelmChart" .ignoreHelmChart "dot" $dot) | nindent 2 }}
-name: {{ include "common.name" $dot }}
+name: {{ include "common.name" (dict "suffix" $suffix "dot" $dot )}}
 {{- end -}}
index 993c482..ca5eb11 100644 (file)
@@ -1,5 +1,6 @@
 {{/*
 # Copyright © 2020 Orange
+# Modification Copyright © 2025 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -23,7 +24,7 @@
   - name: filebeat-conf
     mountPath: /usr/share/filebeat/filebeat.yml
     subPath: filebeat.yml
-  - name: logs
+  - name: sidecar-logs
     mountPath: {{ .Values.log.path }}
   - name: filebeat-data
     mountPath: /usr/share/filebeat/data
   configMap:
     name: {{ $configMapName }}
 - name: filebeat-data
-  emptyDir: {}
+  emptyDir:
+    sizeLimit: {{ $dot.Values.log.dataSizeLimit }}
+- name: sidecar-logs
+  emptyDir:
+    sizeLimit: {{ $dot.Values.log.sizeLimit }}
 {{- end -}}
 {{- end -}}
 
@@ -59,4 +64,3 @@ data:
 {{ tpl (.Files.Glob "resources/config/log/filebeat/*").AsConfig . | indent 2 }}
 {{- end }}
 {{- end -}}
-
index 3092298..f2a4a0c 100644 (file)
@@ -1,5 +1,6 @@
 {{/*
 # Copyright © 2019 Orange
+# Modifications Copyright © 2025 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -253,10 +254,34 @@ kind: MariaDB
 metadata:
   name: {{ $dbinst }}
 spec:
+  resources: {{ include "common.resources" . | nindent 4 }}
   podSecurityContext:
     runAsUser: 10001
     runAsGroup: 10001
     fsGroup: 10001
+    runAsNonRoot: true
+    seccompProfile:
+      type: RuntimeDefault
+  securityContext:
+    readOnlyRootFilesystem: true
+    privileged: false
+    allowPrivilegeEscalation: false
+    capabilities:
+      drop:
+        - ALL
+        - CAP_NET_RAW
+  volumes:
+  - name: run
+    emptyDir:
+      sizeLimit: 64Mi
+  - name: tmp
+    emptyDir:
+      sizeLimit: 64Mi
+  volumeMounts:
+  - name: run
+    mountPath: /run/mysqld
+  - name: tmp
+    mountPath: /tmp
   inheritMetadata:
     {{ if .Values.podAnnotations -}}
     annotations: {{ toYaml .Values.podAnnotations | nindent 6 }}
@@ -281,16 +306,32 @@ spec:
     sst: mariabackup
     replicaThreads: 1
     agent:
-      image: {{ include "repositoryGenerator.githubContainerRegistry" . }}/{{ .Values.mariadbOperator.galera.agentImage }}:{{ $dot.Values.mariadbOperator.galera.agentVersion }}
+      image: {{ include "repositoryGenerator.mariadbContainerRegistry" . }}/{{ .Values.mariadbOperator.galera.agentImage }}:{{ $dot.Values.mariadbOperator.galera.agentVersion }}
       imagePullPolicy: IfNotPresent
       port: 5555
       kubernetesAuth:
         enabled: true
         authDelegatorRoleName: {{ $dbinst }}-auth
       gracefulShutdownTimeout: 5s
+      securityContext:
+        readOnlyRootFilesystem: true
+        allowPrivilegeEscalation: false
+        capabilities:
+          drop:
+            - ALL
+            - CAP_NET_RAW
+        privileged: false
+        runAsNonRoot: true
+        runAsUser: 10001
+      resources:
+        limits:
+          cpu: 100m
+          memory: 128Mi
+        requests:
+          cpu: 100m
+          memory: 128Mi
     primary:
       automaticFailover: true
-      podIndex: 0
     recovery:
       enabled: true
       clusterHealthyTimeout: 30s
@@ -299,8 +340,24 @@ spec:
       podRecoveryTimeout: 3m0s
       podSyncTimeout: 3m0s
     initContainer:
-      image: {{ include "repositoryGenerator.githubContainerRegistry" . }}/{{ $dot.Values.mariadbOperator.galera.initImage }}:{{ $dot.Values.mariadbOperator.galera.initVersion }}
+      image: {{ include "repositoryGenerator.mariadbContainerRegistry" . }}/{{ $dot.Values.mariadbOperator.galera.initImage }}:{{ $dot.Values.mariadbOperator.galera.initVersion }}
       imagePullPolicy: IfNotPresent
+      securityContext:
+        allowPrivilegeEscalation: false
+        capabilities:
+          drop:
+            - ALL
+            - CAP_NET_RAW
+        privileged: false
+        runAsNonRoot: true
+        runAsUser: 10001
+      resources:
+        limits:
+          cpu: 100m
+          memory: 128Mi
+        requests:
+          cpu: 100m
+          memory: 128Mi
     config:
       reuseStorageVolume: false
       volumeClaimTemplate:
@@ -334,6 +391,31 @@ spec:
   {{- if default false $dot.Values.global.metrics.enabled }}
   metrics:
     enabled: true
+    exporter:
+      image: {{ include "repositoryGenerator.dockerHubRepository" . }}/prom/mysqld-exporter:v0.15.1
+      port: 9104
+      podSecurityContext:
+        fsGroup: 10001
+        runAsGroup: 10001
+        runAsUser: 10001
+        runAsNonRoot: true
+        seccompProfile:
+          type: RuntimeDefault
+      securityContext:
+        readOnlyRootFilesystem: true
+        privileged: false
+        allowPrivilegeEscalation: false
+        capabilities:
+          drop:
+            - ALL
+            - CAP_NET_RAW
+      resources:
+        limits:
+          cpu: 100m
+          memory: 128Mi
+        requests:
+          cpu: 100m
+          memory: 128Mi
   {{- end }}
   affinity:
     podAntiAffinity:
diff --git a/kubernetes/common/common/templates/_mongodb.tpl b/kubernetes/common/common/templates/_mongodb.tpl
new file mode 100644 (file)
index 0000000..80d8d72
--- /dev/null
@@ -0,0 +1,165 @@
+{{/*
+# Copyright © 2019 Samsung Electronics
+#
+# 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.
+*/}}
+{{/*
+  UID of mongodb root password
+*/}}
+{{- define "common.mongodb.secret.rootPassUID" -}}
+  {{- printf "db-root-password" }}
+{{- end -}}
+
+{{/*
+  Name of mongodb secret
+*/}}
+{{- define "common.mongodb.secret._secretName" -}}
+  {{- $global := .dot }}
+  {{- $chartName := tpl .chartName $global -}}
+  {{- include "common.secret.genName" (dict "global" $global "uid" (include .uidTemplate $global) "chartName" $chartName) }}
+{{- end -}}
+
+{{/*
+  Name of mongodb root password secret
+*/}}
+{{- define "common.mongodb.secret.rootPassSecretName" -}}
+  {{- include "common.mongodb.secret._secretName" (set . "uidTemplate" "common.mongodb.secret.rootPassUID") }}
+{{- end -}}
+
+{{/*
+  UID of mongodb user credentials
+*/}}
+{{- define "common.mongodb.secret.userCredentialsUID" -}}
+  {{- printf "db-user-credentials" }}
+{{- end -}}
+
+{{/*
+  Name of mongodb user credentials secret
+*/}}
+{{- define "common.mongodb.secret.userCredentialsSecretName" -}}
+  {{- include "common.mongodb.secret._secretName" (set . "uidTemplate" "common.mongodb.secret.userCredentialsUID") }}
+{{- end -}}
+
+{{/*
+  UID of mongodb primary password
+*/}}
+{{- define "common.mongodb.secret.primaryPasswordUID" -}}
+  {{- printf "primary-password" }}
+{{- end -}}
+
+{{/*
+  Name of mongodb user credentials secret
+*/}}
+{{- define "common.mongodb.secret.primaryPasswordSecretName" -}}
+  {{- include "common.mongodb.secret._secretName" (set . "uidTemplate" "common.mongodb.secret.primaryPasswordUID") }}
+{{- end -}}
+
+{{/*
+  Choose the name of the mongodb app label to use.
+*/}}
+{{- define "common.mongodbAppName" -}}
+  {{- if .Values.global.mongodb.localCluster -}}
+    {{- index .Values "mongodb" "nameOverride" -}}
+  {{- else -}}
+    {{- .Values.global.mongodb.nameOverride -}}
+  {{- end -}}
+{{- end -}}
+
+#Not edited yet
+{{/*
+  Create mongodb cluster via mongodb percona-operator
+*/}}
+{{- define "common.mongodbOpInstance" -}}
+{{- $dot := default . .dot -}}
+{{- $global := $dot.Values.global -}}
+{{- $dbinst := include "common.name" $dot -}}
+---
+
+apiVersion: psmdb.percona.com/v1
+kind: PerconaServerMongoDB
+metadata:
+  name: {{ $dbinst }}
+  labels:
+    app: {{ $dbinst }}
+    version: "5.5"
+spec:
+  metadata:
+    labels:
+      app: {{ $dbinst }}
+      version: "5.5"
+  {{- if .Values.mongodbOperator.imageMongo }}
+  image: {{ .Values.mongodbOperator.imageMongo | quote }}
+  {{- end }}
+  imagePullSecrets:
+    - name: {{ include "common.namespace" . }}-docker-registry-key
+  mongodbVersion: {{ $dot.Values.mongodbOperator.mongodbVersion }}
+  instances:
+    - name: {{ default "instance1" .Values.mongodbOperator.instanceName | quote }}
+      replicas: {{ default 2 .Values.mongodbOperator.instanceReplicas }}
+      dataVolumeClaimSpec:
+        {{- if .Values.instanceStorageClassName }}
+        storageClassName: {{ .Values.mongodbOperator.instanceStorageClassName | quote }}
+        {{- end }}
+        accessModes:
+        - "ReadWriteOnce"
+        resources:
+          requests:
+            storage: {{ default "1Gi" .Values.mongodbOperator.instanceSize | quote }}
+      {{- if or .Values.instanceMemory .Values.mongodbOperator.instanceCPU }}
+      resources:
+        limits:
+          cpu: {{ default "" .Values.mongodbOperator.instanceCPU | quote }}
+          memory: {{ default "" .Values.mongodbOperator.instanceMemory | quote }}
+      {{- end }}
+      affinity:
+        podAntiAffinity:
+          preferredDuringSchedulingIgnoredDuringExecution:
+          - weight: 1
+            podAffinityTerm:
+              topologyKey: kubernetes.io/hostname
+              labelSelector:
+                matchLabels:
+                  mongodb-operator.crunchydata.com/cluster: {{ $dbinst }}
+                  mongodb-operator.crunchydata.com/instance-set: {{ default "instance1" .Values.mongodbOperator.instanceName | quote }}
+  proxy:
+    pgBouncer:
+      metadata:
+        labels:
+          app: {{ $dbinst }}
+          version: "5.5"
+      {{- if .Values.mongodbOperator.imagePgBouncer }}
+      image: {{ .Values.mongodbOperator.imagePgBouncer | quote }}
+      {{- end }}
+      replicas: {{ default 2 .Values.mongodbOperator.bouncerReplicas }}
+      affinity:
+        podAntiAffinity:
+          preferredDuringSchedulingIgnoredDuringExecution:
+          - weight: 1
+            podAffinityTerm:
+              topologyKey: kubernetes.io/hostname
+              labelSelector:
+                matchLabels:
+                  mongodb-operator.crunchydata.com/cluster: {{ $dbinst }}
+                  mongodb-operator.crunchydata.com/role: pgbouncer
+  {{- if .Values.mongodbOperator.monitoring }}
+  monitoring:
+    pgmonitor:
+      exporter:
+        image: {{ default "" .Values.mongodbOperator.imageExporter | quote }}
+        {{- if .Values.mongodbOperator.monitoringConfig }}
+{{ toYaml .Values.monitoringConfig | indent 8 }}
+        {{- end }}
+  {{- end }}
+  users:
+    - name: mongodb
+{{- end -}}
index 793fb3e..39f50bc 100644 (file)
@@ -23,7 +23,8 @@
 {{- define "common.name" -}}
   {{- $dot := default . .dot -}}
   {{- $suffix := .suffix -}}
-  {{- default $dot.Chart.Name $dot.Values.nameOverride | trunc 63 | trimSuffix "-" -}}{{ if $suffix }}{{ print "-" $suffix }}{{ end }}
+  {{- $prefix := .prefix -}}
+  {{ if $prefix }}{{ print $prefix "-" }}{{ end }}{{- default $dot.Chart.Name $dot.Values.nameOverride | trunc 63 | trimSuffix "-" -}}{{ if $suffix }}{{ print "-" $suffix }}{{ end }}
 {{- end -}}
 
 {{/*
@@ -34,7 +35,8 @@
   {{- $dot := .dot }}
   {{- $name := .chartName }}
   {{- $suffix := default "" .suffix -}}
-  {{- printf "%s-%s-%s" (include "common.release" $dot) $name $suffix | trunc 63 | trimSuffix "-" | trimSuffix "-" -}}
+  {{- $prefix := default "" .prefix -}}
+  {{- printf "%s-%s-%s-%s" $prefix (include "common.release" $dot) $name $suffix | trunc 63 | trimSuffix "-" | trimSuffix "-" | trimPrefix "-" -}}
 {{- end -}}
 
 {{/*
   Truncated at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
   Usage:
       include "common.fullname" .
-      include "common.fullname" (dict "suffix" "mySuffix" "dot" .)
+      include "common.fullname" (dict "suffix" "mySuffix" "prefix" "myPrefix" "dot" .)
   The function takes from one to two arguments:
      - .dot : environment (.)
      - .suffix : add a suffix to the fullname
+     - .prefix : add a prefix to the fullname
 */}}
 {{- define "common.fullname" -}}
-{{- $dot := default . .dot -}}
-{{- $suffix := default "" .suffix -}}
+  {{- $dot := default . .dot -}}
+  {{- $suffix := default "" .suffix -}}
+  {{- $prefix := default "" .prefix -}}
   {{- $name := default $dot.Chart.Name $dot.Values.nameOverride -}}
   {{/* when linted, the name must be lower cased. When used from a component,
        name should be overriden in order to avoid collision so no need to do it */}}
   {{- if eq (printf "%s/templates" $name) $dot.Template.BasePath -}}
   {{- $name = lower $name -}}
   {{- end -}}
-  {{- include "common.fullnameExplicit" (dict "dot" $dot "chartName" $name "suffix" $suffix) }}
+  {{- include "common.fullnameExplicit" (dict "dot" $dot "chartName" $name "suffix" $suffix "prefix" $prefix) }}
 {{- end -}}
 
 {{/*
index 810350b..6feb91b 100644 (file)
 
 {{/*
    Generate securityContext for pod
+   required variables: user_id, group_id
+   optional variables: fsgroup_id, runAsNonRoot, seccompProfileType
+   Example in values.yaml
+   securityContext:
+     user_id: 70
+     group_id: 70
+     # fsgroup_id: 70
+     # runAsNonRoot: true
+     # seccompProfileType: "RuntimeDefault"
 */}}
 {{- define "common.podSecurityContext" -}}
 securityContext:
   runAsUser: {{ .Values.securityContext.user_id }}
   runAsGroup: {{ .Values.securityContext.group_id }}
-  fsGroup: {{ .Values.securityContext.group_id }}
+  fsGroup: {{ default .Values.securityContext.group_id .Values.securityContext.fsgroup_id }}
+  runAsNonRoot: {{ hasKey .Values.securityContext "runAsNonRoot" | ternary .Values.securityContext.runAsNonRoot true }}
+  seccompProfile:
+    type: {{ default "RuntimeDefault" .Values.securityContext.seccompProfileType }}
 {{- end }}
 
 {{/*
-   Generate securityContext for container
+   Generate securityContext for container (optional)
+   predefined variables: capabilities.drop
+   optional variables: readOnlyRootFilesystem, privileged, allowPrivilegeEscalation
+   Example in values.yaml
+   containerSecurityContext:
+     capabilities:
+       privileged: false
+       runAsUser: 1337
+       runAsGroup: 1337
+       runAsNonRoot: true
+       readOnlyRootFilesystem: true
+       allowPrivilegeEscalation: false
 */}}
 {{- define "common.containerSecurityContext" -}}
 securityContext:
+{{- if not .Values.containerSecurityContext }}
   readOnlyRootFilesystem: true
   privileged: false
   allowPrivilegeEscalation: false
+{{- else }}
+  readOnlyRootFilesystem: {{ hasKey .Values.containerSecurityContext "readOnlyRootFilesystem" | ternary .Values.containerSecurityContext.readOnlyRootFilesystem false }}
+  privileged: {{ hasKey .Values.containerSecurityContext "privileged" | ternary .Values.containerSecurityContext.privileged false }}
+  allowPrivilegeEscalation: {{ hasKey .Values.containerSecurityContext "allowPrivilegeEscalation" | ternary .Values.containerSecurityContext.allowPrivilegeEscalation false }}
+  runAsNonRoot: {{ hasKey .Values.containerSecurityContext "runAsNonRoot" | ternary .Values.containerSecurityContext.runAsNonRoot true }}
+{{-   if hasKey .Values.containerSecurityContext "runAsUser" }}
+  runAsUser: {{ .Values.containerSecurityContext.runAsUser }}
+{{-   end }}
+{{-   if hasKey .Values.containerSecurityContext "runAsGroup" }}
+  runAsGroup: {{ .Values.containerSecurityContext.runAsGroup }}
+{{-    end }}
+{{- end }}
+  capabilities:
+    drop:
+      - ALL
+      - CAP_NET_RAW
 {{- end }}
index 9d284de..9eb47d7 100644 (file)
@@ -19,7 +19,7 @@
 
   Generates a secret header with given name and desired labels.
 
-  The template takes two arguments:
+  The template takes three arguments:
     - .global: environment (.)
     - .name: name of the secret
     - .annotations: annotations which should be used
 */}}
 {{- define "common.secret._header" -}}
 {{- $global := .global }}
+
 {{- $name := .name }}
 apiVersion: v1
 kind: Secret
 metadata:
   name: {{ $name }}
   namespace: {{ include "common.namespace" $global }}
-  labels:
-    app: {{ include "common.name" $global }}
-    chart: {{ $global.Chart.Name }}-{{ $global.Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" $global }}
-    heritage: {{ $global.Release.Service }}
+  labels: {{- include "common.labels" $global | nindent 4 }}
 {{- if .annotations }}
   annotations: {{- include "common.tplValue" (dict "value" .annotations "context" $global) | nindent 4 }}
 {{- end }}
index de779f8..638db8c 100644 (file)
@@ -26,15 +26,28 @@ true
 {{-   end -}}
 {{- end -}}
 
+{{/*
+  Calculate if we require a sidecar killer.
+*/}}
+{{- define "common.requireSidecarKiller" -}}
+{{-   if (include "common.onServiceMesh" .) }}
+{{-     if eq .Values.global.serviceMesh.engine "istio" }}
+{{-       if not (default false .Values.global.serviceMesh.nativeSidecars) -}}
+true
+{{-       end -}}
+{{-     end -}}
+{{-   end -}}
+{{- end -}}
+
 {{/*
   Kills the sidecar proxy associated with a pod.
 */}}
 {{- define "common.serviceMesh.killSidecar" -}}
-{{-   if (include "common.onServiceMesh" .) }}
+{{-   if (include "common.requireSidecarKiller" .) }}
 RCODE="$?";
 echo "*** script finished with exit code $RCODE" ;
 echo "*** killing service mesh sidecar" ;
-curl -sf -X POST http://127.0.0.1:15020/quitquitquit ;
+wget --quiet --post-data '' --output-document=- http://127.0.0.1:15020/quitquitquit || exit $? ;
 echo "" ;
 echo "*** exiting with script exit code" ;
 exit "$RCODE"
@@ -47,7 +60,7 @@ exit "$RCODE"
 {{- define "common.waitForJobContainer" -}}
 {{-   $dot := default . .dot -}}
 {{-   $wait_for_job_container := default $dot.Values.wait_for_job_container .wait_for_job_container -}}
-{{- if (include "common.onServiceMesh" .) }}
+{{- if (include "common.requireSidecarKiller" .) }}
 - name: {{ include "common.name" $dot }}{{ ternary "" (printf "-%s" $wait_for_job_container.name) (empty $wait_for_job_container.name) }}-service-mesh-wait-for-job-container
   image: {{ include "repositoryGenerator.image.quitQuit" $dot }}
   imagePullPolicy: {{ $dot.Values.global.pullPolicy | default $dot.Values.pullPolicy }}
@@ -65,6 +78,23 @@ exit "$RCODE"
       fieldRef:
         apiVersion: v1
         fieldPath: metadata.namespace
+  securityContext:
+    capabilities:
+      drop:
+        - ALL
+        - CAP_NET_RAW
+    privileged: false
+    readOnlyRootFilesystem: true
+    allowPrivilegeEscalation: false
+    runAsUser: 100
+    runAsGroup: 65533
+  resources:
+    limits:
+      cpu: 100m
+      memory: 500Mi
+    requests:
+      cpu: 10m
+      memory: 10Mi
 {{- end }}
 {{- end }}
 
index 907d9c6..ccb1fbb 100644 (file)
       ## ServiceMonitor selector labels
       ## ref: https://github.com/bitnami/charts/tree/master/bitnami/prometheus-operator#prometheus-configuration
       ##
-      selector:
-        app: '{{ include "common.name" . }}'
-        chart: '{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}'
-        release: '{{ include "common.release" . }}'
-        heritage: '{{ .Release.Service }}'
+      selector: {{- include "common.matchLabels" . | nindent 4 }}
 
       ## RelabelConfigs to apply to samples before scraping
       ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#relabelconfig
@@ -182,6 +178,6 @@ spec:
     {{- if $dot.Values.metrics.serviceMonitor.selector }}
     matchLabels: {{- include "common.tplValue" ( dict "value" $dot.Values.metrics.serviceMonitor.selector "context" $dot) | nindent 6 }}
     {{- else }}
-    matchLabels: {{- include "common.labels" (dict "labels" $labels "dot" $dot) | nindent 6 }}
+    matchLabels: {{- include "common.matchLabels" (dict "labels" $labels "dot" $dot) | nindent 6 }}
     {{- end }}
 {{- end -}}
index a2e9c90..c3c4cc7 100644 (file)
@@ -56,6 +56,7 @@ kind: KafkaUser
 metadata:
   name: {{ include "common.name" . }}-ku
   labels:
+    {{- include "common.labels"  $ | nindent 4 }}
     strimzi.io/cluster: {{ include "common.release" . }}-strimzi
 spec:
   authentication:
@@ -118,6 +119,7 @@ metadata:
   name: {{ ($topic.name) | lower }}-kt
   {{- end }}
   labels:
+    {{- include "common.labels" $ | nindent 4 }}
     strimzi.io/cluster: {{ include "common.release" $ }}-strimzi
 spec:
   {{- if (hasKey $topic "partitions") }}
index 68ffb32..569badd 100644 (file)
@@ -1 +1,40 @@
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*~
+
+# Various IDEs
+.project
+.idea/
+.vscode/
+*.tmproj
+
+# Project/CI/CD related items
+.gitlab
+.gitlab-ci.yml
+.gitignore
+.dockerignore
+
+# Helm build files
+.helmignore
+.cache/
+.config/
+.local/
+
+# OOM specific dirs
 components/
index 82c8ccd..cb43539 100644 (file)
 apiVersion: v2
 description: ONAP elasticsearch
 name: elasticsearch
-version: 13.0.0
+version: 13.0.1
 
 dependencies:
   - name: common
     version: ~13.x-0
-    repository: 'file://../common'
+    repository: '@local'
+  - name: repositoryGenerator
+    version: ~13.x-0
+    repository: '@local'
   - name: master
     version: ~13.x-0
     repository: 'file://components/master'
@@ -35,6 +38,3 @@ dependencies:
     version: ~13.x-0
     repository: 'file://components/curator'
     condition: elasticsearch.curator.enabled,curator.enabled
-  - name: repositoryGenerator
-    version: ~13.x-0
-    repository: 'file://../repositoryGenerator'
index 39780f2..85bbd67 100644 (file)
 apiVersion: v2
 description: ONAP elasticsearch curator
 name: curator
-version: 13.0.0
+version: 13.0.1
 
 dependencies:
   - name: common
     version: ~13.x-0
-    repository: 'file://../../../common'
+    repository: '@local'
   - name: repositoryGenerator
     version: ~13.x-0
-    repository: 'file://../../../repositoryGenerator'
\ No newline at end of file
+    repository: '@local'
index ff63cf0..a27fbb3 100644 (file)
@@ -51,7 +51,8 @@ spec:
           {{- if .Values.priorityClassName }}
           priorityClassName: {{ .Values.priorityClassName | quote }}
           {{- end }}
-{{- include "elasticsearch.imagePullSecrets" . | indent 10 }}
+          {{- include "elasticsearch.imagePullSecrets" . | indent 10 }}
+          {{ include "common.podSecurityContext" . | indent 10 | trim }}
           {{- if .Values.extraInitContainers }}
           initContainers:
             {{- range $key, $value := .Values.extraInitContainers }}
@@ -71,13 +72,11 @@ spec:
           {{- if .Values.tolerations }}
           tolerations: {{- include "common.tplValue" (dict "value" .Values.tolerations "context" $) | nindent 12 }}
           {{- end }}
-          {{- if .Values.securityContext }}
-          securityContext: {{- toYaml .Values.securityContext | nindent 12 }}
-          {{- end }}
           containers:
             - name: {{ template "common.fullname" . }}-curator
               image: {{printf "%s/%s" (include "repositoryGenerator.repository" .)  .Values.image }}
               imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+              {{ include "common.containerSecurityContext" . | indent 14 | trim }}
               volumeMounts:
                 - name: config-volume
                   mountPath: /etc/es-curator
index 00f113b..40078be 100644 (file)
@@ -175,4 +175,6 @@ extraInitContainers: {}
 #         "storage_class": "${S3_STORAGE_CLASS}"
 #       }
 #     }
-
+securityContext:
+  user_id: 1000
+  group_id: 1000
index d49a210..82858ce 100644 (file)
 apiVersion: v2
 description: ONAP elasticsearch data
 name: data
-version: 13.0.0
+version: 13.0.1
 
 dependencies:
   - name: common
     version: ~13.x-0
-    repository: 'file://../../../common'
+    repository: '@local'
   - name: repositoryGenerator
     version: ~13.x-0
-    repository: 'file://../../../repositoryGenerator'
+    repository: '@local'
index e6c5a87..dc8562b 100644 (file)
@@ -44,17 +44,21 @@ spec:
       {{- if .Values.tolerations }}
       tolerations: {{- include "common.tplValue" (dict "value" .Values.tolerations "context" $) | nindent 8 }}
       {{- end }}
-      {{- if .Values.securityContext.enabled }}
-      securityContext:
-        fsGroup: {{ .Values.securityContext.fsGroup }}
-      {{- end }}
-      {{- if or .Values.sysctlImage.enabled (and .Values.volumePermissions.enabled .Values.persistence.enabled) }}
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
       initContainers:
         {{- if .Values.sysctlImage.enabled }}
         ## Image that performs the sysctl operation to modify Kernel settings (needed sometimes to avoid boot errors)
         - name: sysctl
           image: {{ include "repositoryGenerator.image.busybox" . }}
           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+          {{ include "common.containerSecurityContext" . | indent 10 | trim }}
+          resources:
+            limits:
+              cpu: 20m
+              memory: 50Mi
+            requests:
+              cpu: 5m
+              memory: 20Mi
           command:
             - /bin/sh
             - -c
@@ -62,37 +66,35 @@ spec:
               set -o errexit
               set -o pipefail
               set -o nounset
-              sysctl -w vm.max_map_count=262144 && sysctl -w fs.file-max=65536
-          securityContext:
-            privileged: true
+          volumeMounts:
+            - mountPath: /etc/sysctl.conf
+              name: config
+              subPath: sysctl.conf
         {{- end }}
-        {{- if and .Values.volumePermissions.enabled .Values.persistence.enabled }}
-        - name: volume-permissions
-          image: {{ include "repositoryGenerator.image.busybox" . }}
+        - name: {{ include "common.name" . }}-config-copy
+          image: {{ include "repositoryGenerator.dockerHubRepository" . }}/{{ .Values.image }}
           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+          {{ include "common.containerSecurityContext" . | indent 10 | trim }}
+          resources:
+            limits:
+              cpu: 20m
+              memory: 50Mi
+            requests:
+              cpu: 5m
+              memory: 20Mi
           command:
             - /bin/sh
             - -c
             - |
-              chown -R {{ .Values.securityContext.runAsUser }}:{{ .Values.securityContext.fsGroup }} //bitnami/elasticsearch/data
-          securityContext:
-            runAsUser: 0
-          {{- if .Values.volumePermissions.resource }}
-          resources: {{- toYaml .Values.volumePermissions.resources | nindent 12 }}
-          {{- end }}
+              cp -R /opt/bitnami/elasticsearch/config/. /opt/bitnami/elasticsearch/config_rw
           volumeMounts:
-            - name: data
-              mountPath: "/bitnami/elasticsearch/data"
-        {{- end }}
-      {{- end }}
+            - mountPath: /opt/bitnami/elasticsearch/config_rw
+              name: bitnami-config
       containers:
         - name: {{ include "common.name" . }}-data
-          image: {{ printf "%s/%s" (include "repositoryGenerator.dockerHubRepository" .)  .Values.image }}
+          image: {{ include "repositoryGenerator.dockerHubRepository" . }}/{{ .Values.image }}
           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-          {{- if .Values.securityContext.enabled }}
-          securityContext:
-            runAsUser: {{ .Values.securityContext.runAsUser }}
-          {{- end }}
+          {{ include "common.containerSecurityContext" . | indent 10 | trim }}
           env:
             - name: BITNAMI_DEBUG
               value: {{ ternary "true" "false" .Values.debug | quote }}
@@ -143,28 +145,52 @@ spec:
           resources: {{- toYaml .Values.resources | nindent 12 }}
           {{- end }}
           volumeMounts:
+            - mountPath: /tmp
+              name: tmp
+            - mountPath: /opt/bitnami/elasticsearch/logs
+              name: bitnami-logs
+            - mountPath: /opt/bitnami/elasticsearch/tmp
+              name: bitnami-tmp
+            - mountPath: /opt/bitnami/elasticsearch/config
+              name: bitnami-config
             {{- if .Values.config }}
             - mountPath: /opt/bitnami/elasticsearch/config/elasticsearch.yml
               name: "config"
               subPath: elasticsearch.yml
             {{- end }}
+            {{- if .Values.sysctlImage.enabled }}
+            - mountPath: /etc/sysctl.conf
+              name: config
+              subPath: sysctl.conf
+            {{- end }}
             - name: "data"
               mountPath: "/bitnami/elasticsearch/data"
             {{- if .Values.extraVolumeMounts }}
             {{- toYaml .Values.extraVolumeMounts | nindent 12 }}
             {{- end }}
       volumes:
-        {{- if .Values.config }}
         - name: "config"
           configMap:
             name: {{ template "common.fullname" . }}
-        {{- end }}
+        - emptyDir:
+            sizeLimit: {{ .Values.volumes.tmpSizeLimit }}
+          name: tmp
+        - emptyDir:
+            sizeLimit: {{ .Values.volumes.bitnamiLogsSizeLimit }}
+          name: bitnami-logs
+        - emptyDir:
+            sizeLimit: {{ .Values.volumes.bitnamiTmpSizeLimit }}
+          name: bitnami-tmp
+        - emptyDir:
+            sizeLimit: {{ .Values.volumes.bitnamiConfigSizeLimit }}
+          name: bitnami-config
         {{- if .Values.extraVolumes }}
         {{- toYaml .Values.extraVolumes | nindent 8 }}
         {{- end }}
 {{- if not .Values.persistence.enabled }}
         - name: "data"
-          emptyDir: {}
+          emptyDir:
+            sizeLimit: {{ .Values.volumes.dataSizeLimit }}
 {{- else }}
   volumeClaimTemplates:
     - metadata:
index 3f9992a..25dc7e7 100644 (file)
@@ -82,9 +82,8 @@ podAnnotations: {}
 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
 ##
 securityContext:
-  enabled: true
-  fsGroup: 1001
-  runAsUser: 1001
+  user_id: 1001
+  group_id: 1001
 ## Affinity for pod assignment.
 ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
 ##
@@ -170,3 +169,9 @@ serviceAccount:
   ## If not set and create is true, a name is generated using the fullname template
   ##
   # name:
+volumes:
+  logSizeLimit: 300Mi
+  tmpSizeLimit: 100Mi
+  bitnamiLogsSizeLimit: 200Mi
+  bitnamiTmpSizeLimit: 100Mi
+  bitnamiConfigSizeLimit: 50Mi
index 73d5907..30802da 100644 (file)
 apiVersion: v2
 description: ONAP elasticsearch master
 name: master
-version: 13.0.0
+version: 13.0.1
 
 dependencies:
   - name: common
     version: ~13.x-0
-    repository: 'file://../../../common'
+    repository: '@local'
   - name: repositoryGenerator
     version: ~13.x-0
-    repository: 'file://../../../repositoryGenerator'
+    repository: '@local'
index 8ee0fc5..54b427c 100644 (file)
@@ -42,17 +42,21 @@ spec:
       {{- if .Values.tolerations }}
       tolerations: {{- include "common.tplValue" (dict "value" .Values.tolerations "context" $) | nindent 8 }}
       {{- end }}
-      {{- if .Values.securityContext.enabled }}
-      securityContext:
-        fsGroup: {{ .Values.securityContext.fsGroup }}
-      {{- end }}
-      {{- if or .Values.sysctlImage.enabled (and .Values.volumePermissions.enabled .Values.persistence.enabled) }}
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
       initContainers:
         {{- if .Values.sysctlImage.enabled }}
         ## Image that performs the sysctl operation to modify Kernel settings (needed sometimes to avoid boot errors)
         - name: sysctl
           image: {{ include "repositoryGenerator.image.busybox" . }}
           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+          {{ include "common.containerSecurityContext" . | indent 10 | trim }}
+          resources:
+            limits:
+              cpu: 20m
+              memory: 50Mi
+            requests:
+              cpu: 5m
+              memory: 20Mi
           command:
             - /bin/sh
             - -c
@@ -60,37 +64,35 @@ spec:
               set -o errexit
               set -o pipefail
               set -o nounset
-              sysctl -w vm.max_map_count=262144 && sysctl -w fs.file-max=65536
-          securityContext:
-            privileged: true
+          volumeMounts:
+            - mountPath: /etc/sysctl.conf
+              name: config
+              subPath: sysctl.conf
         {{- end }}
-        {{- if and .Values.volumePermissions.enabled .Values.persistence.enabled }}
-        - name: volume-permissions
-          image: {{ include "repositoryGenerator.image.busybox" . }}
+        - name: {{ include "common.name" . }}-config-copy
+          image: {{ include "repositoryGenerator.dockerHubRepository" . }}/{{ .Values.image }}
           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+          {{ include "common.containerSecurityContext" . | indent 10 | trim }}
+          resources:
+            limits:
+              cpu: 20m
+              memory: 50Mi
+            requests:
+              cpu: 5m
+              memory: 20Mi
           command:
             - /bin/sh
             - -c
             - |
-              chown -R {{ .Values.securityContext.runAsUser }}:{{ .Values.securityContext.fsGroup }} //bitnami/elasticsearch/data
-          securityContext:
-            runAsUser: 0
-          {{- if .Values.volumePermissions.resource }}
-          resources: {{- toYaml .Values.volumePermissions.resources | nindent 12 }}
-          {{- end }}
+              cp -R /opt/bitnami/elasticsearch/config/. /opt/bitnami/elasticsearch/config_rw
           volumeMounts:
-            - name: data
-              mountPath: "/bitnami/elasticsearch/data"
-        {{- end }}
-      {{- end }}
+            - mountPath: /opt/bitnami/elasticsearch/config_rw
+              name: bitnami-config
       containers:
         - name: {{ include "common.name" . }}-master
-          image: {{ printf "%s/%s" (include "repositoryGenerator.dockerHubRepository" .)  .Values.image }}
+          image: {{ include "repositoryGenerator.dockerHubRepository" . }}/{{ .Values.image }}
           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-          {{- if .Values.securityContext.enabled }}
-          securityContext:
-            runAsUser: {{ .Values.securityContext.runAsUser }}
-          {{- end }}
+          {{ include "common.containerSecurityContext" . | indent 10 | trim }}
           env:
             - name: BITNAMI_DEBUG
               value: {{ ternary "true" "false" .Values.debug | quote }}
@@ -147,6 +149,14 @@ spec:
           resources: {{- toYaml .Values.resources | nindent 12 }}
           {{- end }}
           volumeMounts:
+            - mountPath: /tmp
+              name: tmp
+            - mountPath: /opt/bitnami/elasticsearch/logs
+              name: bitnami-logs
+            - mountPath: /opt/bitnami/elasticsearch/tmp
+              name: bitnami-tmp
+            - mountPath: /opt/bitnami/elasticsearch/config
+              name: bitnami-config
             {{- if .Values.config }}
             - mountPath: /opt/bitnami/elasticsearch/config/elasticsearch.yml
               name: config
@@ -158,17 +168,28 @@ spec:
             {{- toYaml .Values.extraVolumeMounts | nindent 12 }}
             {{- end }}
       volumes:
-        {{- if .Values.config }}
         - name: config
           configMap:
             name: {{ include "common.fullname" . }}
-        {{- end }}
+        - emptyDir:
+            sizeLimit: {{ .Values.volumes.tmpSizeLimit }}
+          name: tmp
+        - emptyDir:
+            sizeLimit: {{ .Values.volumes.bitnamiLogsSizeLimit }}
+          name: bitnami-logs
+        - emptyDir:
+            sizeLimit: {{ .Values.volumes.bitnamiTmpSizeLimit }}
+          name: bitnami-tmp
+        - emptyDir:
+            sizeLimit: {{ .Values.volumes.bitnamiConfigSizeLimit }}
+          name: bitnami-config
         {{- if .Values.extraVolumes }}
         {{- toYaml .Values.extraVolumes | nindent 8 }}
         {{- end }}
 {{- if not .Values.persistence.enabled }}
         - name: "data"
-          emptyDir: {}
+          emptyDir:
+            sizeLimit: {{ .Values.volumes.dataSizeLimit }}
 {{- else }}
   volumeClaimTemplates:
     - metadata:
index a3a219e..0837132 100644 (file)
@@ -85,9 +85,8 @@ podAnnotations: {}
 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
 ##
 securityContext:
-  enabled: true
-  fsGroup: 1001
-  runAsUser: 1001
+  user_id: 1001
+  group_id: 1001
 ## Affinity for pod assignment.
 ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
 ##
@@ -202,3 +201,10 @@ serviceAccount:
 ## Elasticsearch cluster name
 ##
 clusterName: elastic-cluster
+
+volumes:
+  logSizeLimit: 300Mi
+  tmpSizeLimit: 100Mi
+  bitnamiLogsSizeLimit: 200Mi
+  bitnamiTmpSizeLimit: 100Mi
+  bitnamiConfigSizeLimit: 50Mi
index 1de2599..34663e1 100644 (file)
@@ -69,5 +69,3 @@ We truncate at 63 chars because some Kubernetes name fields are limited to this
     {{ default "default" .Values.serviceAccount.name }}
 {{- end -}}
 {{- end -}}
-
-
index 7138e4e..d844d08 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 */}}
-{{- if .Values.config }}
 apiVersion: v1
 kind: ConfigMap
 metadata:  {{- include "common.resourceMetadata" . | nindent 2 }}
 data:
+  {{-  if .Values.config }}
   elasticsearch.yml: |- {{- toYaml .Values.config | nindent 4 }}
-{{- end }}
+  {{-  end }}
+  sysctl.conf: |- {{- toYaml .Values.sysctl_conf | nindent 4 }}
index 0bc6de2..08c9303 100644 (file)
@@ -41,17 +41,22 @@ spec:
       tolerations: {{- include "common.tplValue" (dict "value" .Values.tolerations "context" $) | nindent 8 }}
       {{- end }}
       serviceAccountName: {{ template "elasticsearch.serviceAccountName" . }}
-      {{- if .Values.securityContext.enabled }}
-      securityContext:
-        fsGroup: {{ .Values.securityContext.fsGroup }}
-      {{- end }}
-
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
       ## Image that performs the sysctl operation to modify Kernel settings (needed sometimes to avoid boot errors)
       initContainers:
-      {{- if .Values.sysctlImage.enabled }}
+       {{- if .Values.sysctlImage.enabled }}
+        ## Image that performs the sysctl operation to modify Kernel settings (needed sometimes to avoid boot errors)
         - name: sysctl
           image: {{ include "repositoryGenerator.image.busybox" . }}
           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+          {{ include "common.containerSecurityContext" . | indent 10 | trim }}
+          resources:
+            limits:
+              cpu: 20m
+              memory: 50Mi
+            requests:
+              cpu: 5m
+              memory: 20Mi
           command:
             - /bin/sh
             - -c
@@ -59,11 +64,52 @@ spec:
               set -o errexit
               set -o pipefail
               set -o nounset
-              sysctl -w vm.max_map_count=262144 && sysctl -w fs.file-max=65536
-          securityContext:
-            privileged: true
-      {{- end }}
-
+          volumeMounts:
+            - mountPath: /etc/sysctl.conf
+              name: config
+              subPath: sysctl.conf
+        {{- end }}
+        - name: {{ include "common.name" . }}-config-copy
+          image: {{ include "repositoryGenerator.dockerHubRepository" . }}/{{ .Values.image }}
+          imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+          {{ include "common.containerSecurityContext" . | indent 10 | trim }}
+          resources:
+            limits:
+              cpu: 20m
+              memory: 50Mi
+            requests:
+              cpu: 5m
+              memory: 20Mi
+          command:
+            - /bin/sh
+            - -c
+            - |
+              cp -R /opt/bitnami/elasticsearch/config/. /opt/bitnami/elasticsearch/config_rw
+          volumeMounts:
+            - mountPath: /opt/bitnami/elasticsearch/config_rw
+              name: bitnami-config
+        - name: {{ include "common.name" . }}-nginx-config-copy
+          image: {{ include "repositoryGenerator.image.nginx" . }}
+          imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.nginx.pullPolicy | quote }}
+          {{ include "common.containerSecurityContext" . | indent 10 | trim }}
+          resources:
+            limits:
+              cpu: 20m
+              memory: 50Mi
+            requests:
+              cpu: 5m
+              memory: 20Mi
+          command:
+            - /bin/sh
+            - -c
+            - |
+              cp -R /opt/bitnami/nginx/conf/. /opt/bitnami/nginx/conf_rw;
+              cp -R /opt/bitnami/nginx/logs/. /opt/bitnami/nginx/logs_rw
+          volumeMounts:
+            - mountPath: /opt/bitnami/nginx/conf_rw
+              name: nginx-config
+            - mountPath: /opt/bitnami/nginx/logs_rw
+              name: nginx-logs
       containers:
         - name: {{ include "common.name" . }}-nginx
           image: {{ include "repositoryGenerator.image.nginx" . }}
@@ -78,7 +124,14 @@ spec:
           {{- if .Values.nginx.resources }}
           resources: {{- toYaml .Values.nginx.resources | nindent 12 }}
           {{- end }}
+          {{ include "common.containerSecurityContext" . | indent 10 | trim }}
           volumeMounts:
+          - mountPath: /opt/bitnami/nginx/conf
+            name: nginx-config
+          - mountPath: /opt/bitnami/nginx/tmp
+            name: nginx-tmp
+          - mountPath: /opt/bitnami/nginx/logs
+            name: nginx-logs
           {{- if .Values.nginx.serverBlock }}
           - name: nginx-server-block
             mountPath: /opt/bitnami/nginx/conf/server_blocks
@@ -86,11 +139,8 @@ spec:
 
         - name: {{ include "common.name" . }}-elasticsearch
           image: {{ include "repositoryGenerator.dockerHubRepository" . }}/{{ .Values.image }}
-          {{- if .Values.securityContext.enabled }}
           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-          securityContext:
-            runAsUser: {{ .Values.securityContext.runAsUser }}
-          {{- end }}
+          {{ include "common.containerSecurityContext" . | indent 10 | trim }}
           env:
             - name: BITNAMI_DEBUG
               value: {{ ternary "true" "false" .Values.debug | quote }}
@@ -143,6 +193,14 @@ spec:
           resources: {{- toYaml .Values.resources | nindent 12 }}
           {{- end}}
           volumeMounts:
+            - mountPath: /tmp
+              name: tmp
+            - mountPath: /opt/bitnami/elasticsearch/logs
+              name: bitnami-logs
+            - mountPath: /opt/bitnami/elasticsearch/tmp
+              name: bitnami-tmp
+            - mountPath: /opt/bitnami/elasticsearch/config
+              name: bitnami-config
             {{- if .Values.config }}
             - mountPath: /opt/bitnami/elasticsearch/config/elasticsearch.yml
               name: config
@@ -154,13 +212,33 @@ spec:
             {{- toYaml .Values.extraVolumeMounts | nindent 12 }}
             {{- end }}
       volumes:
-        {{- if .Values.config }}
         - name: config
           configMap:
             name: {{ include "common.fullname" . }}
-        {{- end }}
+        - emptyDir:
+            sizeLimit: {{ .Values.volumes.tmpSizeLimit }}
+          name: tmp
+        - emptyDir:
+            sizeLimit: {{ .Values.volumes.bitnamiLogsSizeLimit }}
+          name: bitnami-logs
+        - emptyDir:
+            sizeLimit: {{ .Values.volumes.bitnamiTmpSizeLimit }}
+          name: bitnami-tmp
+        - emptyDir:
+            sizeLimit: {{ .Values.volumes.bitnamiConfigSizeLimit }}
+          name: bitnami-config
+        - emptyDir:
+            sizeLimit: {{ .Values.volumes.nginxLogsSizeLimit }}
+          name: nginx-logs
+        - emptyDir:
+            sizeLimit: {{ .Values.volumes.nginxTmpSizeLimit }}
+          name: nginx-tmp
+        - emptyDir:
+            sizeLimit: {{ .Values.volumes.nginxConfigSizeLimit }}
+          name: nginx-config
         - name: data
-          emptyDir: {}
+          emptyDir:
+            sizeLimit: {{ .Values.volumes.dataSizeLimit }}
         {{- if .Values.extraVolumes }}
         {{- toYaml .Values.extraVolumes | nindent 8 }}
         {{- end }}
index 7851f28..569adb0 100644 (file)
@@ -71,9 +71,9 @@ podAnnotations: {}
 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
 ##
 securityContext:
-  enabled: true
-  fsGroup: 1001
-  runAsUser: 1001
+  user_id: 1001
+  group_id: 1001
+
 ## Affinity for pod assignment.
 ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
 ##
@@ -93,12 +93,24 @@ resources:
   ## We usually recommend not to specify default resources and to leave this as a conscious
   ## choice for the user. This also increases chances charts run on environments with little
   ## resources, such as Minikube.
-  limits: {}
-  #   cpu: "100m"
-  #   memory: "100Mi"
+  limits:
+    cpu: "500m"
+    memory: 4Gi
   requests:
     cpu: "25m"
     memory: "200Mi"
+
+volumes:
+  dataSizeLimit: 200Mi
+  logSizeLimit: 300Mi
+  tmpSizeLimit: 100Mi
+  bitnamiLogsSizeLimit: 200Mi
+  bitnamiTmpSizeLimit: 100Mi
+  bitnamiConfigSizeLimit: 50Mi
+  nginxLogsSizeLimit: 200Mi
+  nginxTmpSizeLimit: 100Mi
+  nginxConfigSizeLimit: 50Mi
+
 ## Elasticsearch coordinating-only container's liveness and readiness probes
 ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
 ##
@@ -144,6 +156,13 @@ sysctlImage:
 # nginx image
 nginx:
   pullPolicy: IfNotPresent
+  resources:
+    limits:
+      cpu: "500m"
+      memory: "400Mi"
+    requests:
+      cpu: "25m"
+      memory: "50Mi"
   service:
     name: nginx
     ports:
@@ -259,6 +278,13 @@ service:
   ## Provide functionality to use RBAC
   ##
 
+#################################################################
+# system ctl configuration
+#################################################################
+sysctl_conf: |-
+  vm.max_map_count=262144
+  fs.file-max=65536
+
 #################################################################
 # subcharts configuration defaults.
 #################################################################
index 166b417..0ce9c4f 100644 (file)
@@ -17,7 +17,7 @@
 apiVersion: v2
 description: Chart for etcd init job
 name: etcd-init
-version: 13.0.0
+version: 13.0.1
 
 dependencies:
   - name: common
index 71f912e..30e37ea 100644 (file)
@@ -23,6 +23,9 @@ metadata:
     chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
     release: {{ include "common.release" . }}
     heritage: {{ .Release.Service }}
+  {{- if .Values.jobAnnotations }}
+  annotations:  {{- include "common.tplValue" (dict "value" .Values.jobAnnotations "context" $) | nindent 4 }}
+  {{- end }}
 spec:
   backoffLimit: {{ .Values.backoffLimit }}
   template:
index 33e34fd..2af39ed 100644 (file)
@@ -55,6 +55,21 @@ config:
   appRole: role
   keyPrefix: key
 
+# Annotations to control the execution and deletion of the job
+# Can be used to delete a job before an Upgrade
+#
+# jobAnnotations:
+#   # In case of an ArgoCD deployment this Hook deletes the job before syncing
+#   argocd.argoproj.io/hook: Sync
+#   argocd.argoproj.io/hook-delete-policy: BeforeHookCreation
+#
+#   # In case of an Helm/Flux deployment this Hook deletes the job
+#   # This is what defines this resource as a hook. Without this line, the
+#   # job is considered part of the release.
+#   "helm.sh/hook": "pre-upgrade,pre-rollback,post-install"
+#   "helm.sh/hook-delete-policy": "before-hook-creation"
+#   "helm.sh/hook-weight": "1"
+
 flavor: small
 resources:
   small:
index f0c1319..0bab41b 100644 (file)
 .project
 .idea/
 *.tmproj
+# Project/CI/CD related items
+.gitlab
+.gitlab-ci.yml
+.dockerignore
+# Helm build files
+.helmignore
+.cache/
+.config/
+.local/
+# OOM specific dirs
+components/
index 02fc2c0..72e1ba6 100644 (file)
@@ -1,6 +1,7 @@
 # Copyright © 2019 Intel Corporation
 # Modifications Copyright © 2021 Orange
 # Modifications Copyright © 2021 Nordix Foundation
+# Modifications Copyright © 2024 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -17,7 +18,7 @@
 apiVersion: v2
 name: etcd
 home: https://github.com/coreos/etcd
-version: 13.0.0
+version: 13.0.2
 appVersion: 2.2.5
 description: Distributed reliable key-value store for the most critical data of a
   distributed system.
@@ -28,7 +29,7 @@ sources:
 dependencies:
   - name: common
     version: ~13.x-0
-    repository: 'file://../common'
+    repository: '@local'
   - name: repositoryGenerator
     version: ~13.x-0
-    repository: 'file://../repositoryGenerator'
+    repository: '@local'
index ac5b7b9..a54850d 100644 (file)
@@ -24,11 +24,7 @@ kind: PersistentVolume
 metadata:
   name: {{ include "common.fullname" $global }}-data-{{ $i }}
   namespace: {{ include "common.namespace" $global }}
-  labels:
-    app: {{ include "common.fullname" $global }}
-    chart: "{{ $global.Chart.Name }}-{{ $global.Chart.Version | replace "+" "_" }}"
-    release: "{{ include "common.release" $global }}"
-    heritage: "{{ $global.Release.Service }}"
+  labels: {{- include "common.labels" $global | nindent 4 }}
     name: {{ include "common.fullname" $global }}
 spec:
   capacity:
index 006378f..c599393 100644 (file)
@@ -20,11 +20,7 @@ metadata:
   annotations:
     service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"
   name: {{ include "common.servicename" .  }}
-  labels:
-    heritage: "{{ .Release.Service  }}"
-    release: "{{ include "common.release" .  }}"
-    chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
-    app: {{ include "common.name" . }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 spec:
   ports:
   - name: {{ .Values.service.peerPortName }}
@@ -32,7 +28,4 @@ spec:
   - name: {{ .Values.service.clientPortName }}
     port: {{ .Values.service.clientInternalPort }}
   clusterIP: None
-  selector:
-    app.kubernetes.io/name: {{ include "common.name" . }}
-    app.kubernetes.io/instance: {{ include "common.release" . }}
-
+  selector: {{- include "common.matchLabels" . | nindent 4 }}
index 722a27d..f2e04c9 100644 (file)
@@ -1,5 +1,6 @@
 {{/*
 # Copyright © 2019 Intel Corporation Inc
+# Modifications Copyright © 2024 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -36,10 +37,12 @@ spec:
 {{ toYaml .Values.tolerations | indent 8 }}
 {{- end }}
       {{- include "common.imagePullSecrets" . | nindent 6 }}
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
       containers:
       - name: {{ include "common.name" .  }}
         image: {{ include "repositoryGenerator.googleK8sRepository" . }}/{{ .Values.image }}
         imagePullPolicy: "{{ .Values.pullPolicy }}"
+        {{ include "common.containerSecurityContext" . | indent 10 | trim }}
         ports:
         - containerPort: {{ .Values.service.peerInternalPort }}
           name: {{ .Values.service.peerPortName }}
@@ -209,11 +212,7 @@ spec:
   volumeClaimTemplates:
   - metadata:
       name: {{ include "common.fullname" . }}-data
-      labels:
-        name: {{ include "common.fullname" . }}
-        chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
-        release: "{{ include "common.release" . }}"
-        heritage: "{{ .Release.Service }}"
+      labels: {{- include "common.labels" . | nindent 8 }}
     spec:
       accessModes:
       - "{{ .Values.persistence.accessMode }}"
index e2334ea..69d533c 100644 (file)
@@ -1,4 +1,5 @@
 # Copyright © 2019 Intel Corporation, Inc
+# Modifications Copyright © 2024 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -35,6 +36,10 @@ nodeSelector: {}
 
 affinity: {}
 
+securityContext:
+  user_id: 1000
+  group_id: 1000
+
 # probe configuration parameters
 liveness:
   initialDelaySeconds: 90
diff --git a/kubernetes/common/logConfiguration/.helmignore b/kubernetes/common/logConfiguration/.helmignore
new file mode 100644 (file)
index 0000000..0bab41b
--- /dev/null
@@ -0,0 +1,32 @@
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*~
+# Various IDEs
+.project
+.idea/
+*.tmproj
+# Project/CI/CD related items
+.gitlab
+.gitlab-ci.yml
+.dockerignore
+# Helm build files
+.helmignore
+.cache/
+.config/
+.local/
+# OOM specific dirs
+components/
index a5790a4..7908bfa 100644 (file)
@@ -22,4 +22,4 @@ version: 13.0.0
 dependencies:
   - name: common
     version: ~13.x-0
-    repository: 'file://../common'
+    repository: '@local'
index f0c1319..0bab41b 100644 (file)
 .project
 .idea/
 *.tmproj
+# Project/CI/CD related items
+.gitlab
+.gitlab-ci.yml
+.dockerignore
+# Helm build files
+.helmignore
+.cache/
+.config/
+.local/
+# OOM specific dirs
+components/
index c5bb0aa..5efb36b 100644 (file)
@@ -18,7 +18,7 @@
 apiVersion: v2
 description: Chart for MariaDB Galera cluster
 name: mariadb-galera
-version: 13.2.0
+version: 16.0.0
 keywords:
   - mariadb
   - mysql
@@ -30,14 +30,14 @@ keywords:
 dependencies:
   - name: common
     version: ~13.x-0
-    repository: 'file://../common'
+    repository: '@local'
   - name: readinessCheck
     version: ~13.x-0
-    repository: 'file://../readinessCheck'
+    repository: '@local'
   - name: repositoryGenerator
     version: ~13.x-0
-    repository: 'file://../repositoryGenerator'
+    repository: '@local'
   - name: serviceAccount
     version: ~13.x-0
-    repository: 'file://../serviceAccount'
+    repository: '@local'
     condition: global.mariadbGalera.enableServiceAccount
\ No newline at end of file
index 877e6fa..ddff6cd 100644 (file)
@@ -179,8 +179,10 @@ spec:
               persistentVolumeClaim:
                 claimName: {{ include "common.fullname" . }}-backup-data
             - name: tmp-data
-              emptyDir: {}
+              emptyDir:
+                sizeLimit: {{ .Values.volumes.tmpDataSizeLimit }}
             - name: tmp
-              emptyDir: {}
+              emptyDir:
+                sizeLimit: {{ .Values.volumes.tmpSizeLimit }}
 {{- end }}
 {{- end }}
index 4c2bfcd..05aafb5 100644 (file)
@@ -47,4 +47,4 @@ spec:
 {{- end -}}
 {{- end -}}
 {{- end -}}
-{{- end -}}
\ No newline at end of file
+{{- end -}}
index 0aa0a63..152d39f 100644 (file)
@@ -39,4 +39,4 @@ data:
   my.cnf: |
 {{ .Values.mariadbConfiguration | indent 4 }}
 {{-   end }}
-{{- end }}
\ No newline at end of file
+{{- end }}
index ce09c9f..d8ada6f 100644 (file)
@@ -16,4 +16,4 @@
 
 {{- if .Values.global.mariadbGalera.useOperator }}
 {{ include "common.mariadbOpInstance" . }}
-{{- end }}
\ No newline at end of file
+{{- end }}
index d37aeb1..e628dee 100644 (file)
@@ -34,4 +34,4 @@ spec:
       targetPort: tcp-metrics
   selector: {{- include "common.matchLabels" . | nindent 4 }}
 {{-   end }}
-{{- end }}
\ No newline at end of file
+{{- end }}
index 734f03f..da83abc 100644 (file)
@@ -29,4 +29,4 @@ spec:
   selector:
     matchLabels: {{- include "common.matchLabels" . | nindent 6 }}
 {{-   end }}
-{{- end }}
\ No newline at end of file
+{{- end }}
index 129b5b2..2677552 100644 (file)
@@ -17,4 +17,4 @@
 
 {{- if not .Values.global.mariadbGalera.useOperator }}
 {{ include "common.replicaPV" . }}
-{{- end }}
\ No newline at end of file
+{{- end }}
index 527f412..77a8e38 100644 (file)
@@ -16,4 +16,4 @@
 # limitations under the License.
 */}}
 
-{{ include "common.secretFast" . }}
\ No newline at end of file
+{{ include "common.secretFast" . }}
index 4cbf7b3..1bffb24 100644 (file)
@@ -18,4 +18,4 @@
 {{-   if .Values.metrics.serviceMonitor.enabled }}
 {{  include "common.serviceMonitor" . }}
 {{-   end }}
-{{- end }}
\ No newline at end of file
+{{- end }}
index 70cc0c3..3011d93 100644 (file)
@@ -39,37 +39,24 @@ spec:
       initContainers:
         # we shouldn't need this but for unknown reason, it's fsGroup is not
         # applied
-        - name: fix-permission
+      {{- if .Values.mariadbConfiguration }}
+        - name: copy-config
           command:
             - /bin/sh
           args:
             - -c
             - |
-              chown -R {{ .Values.securityContext.user_id }}:{{ .Values.securityContext.group_id }} /data
-              chown -R {{ .Values.securityContext.user_id }}:{{ .Values.securityContext.group_id }} /bootstrap/
-              chown -R {{ .Values.securityContext.user_id }}:{{ .Values.securityContext.group_id }} /tmp/
-              {{- if .Values.mariadbConfiguration }}
               cp /config/my.cnf /actual/my.cnf
-              chown -R {{ .Values.securityContext.user_id }}:{{ .Values.securityContext.group_id }} /actual
-              {{- end }}
           image: {{ include "repositoryGenerator.image.busybox" . }}
           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-          securityContext:
-            runAsUser: 0
+          {{ include "common.containerSecurityContext" . | indent 10 | trim }}
           volumeMounts:
-            - name: previous-boot
-              mountPath: /bootstrap
-            - name: mariadb-tmp-folder
-              mountPath: /tmp
-            - name: {{ include "common.fullname" . }}
-              mountPath: /data
-            {{- if .Values.mariadbConfiguration }}
             - name: mariadb-galera-starting-config
               mountPath: /config/my.cnf
               subPath: my.cnf
             - name: mariadb-galera-actual-config
               mountPath: /actual
-            {{- end }}
+      {{- end }}
       containers:
         - name: {{ include "common.name" . }}
           image: {{ include "repositoryGenerator.dockerHubRepository" . }}/{{ .Values.image }}
@@ -169,8 +156,11 @@ spec:
             successThreshold: {{ .Values.startupProbe.successThreshold }}
             failureThreshold: {{ .Values.startupProbe.failureThreshold }}
           {{- end }}
+          {{ include "common.containerSecurityContext" . | indent 10 | trim }}
           resources: {{ include "common.resources" . | nindent 12 }}
           volumeMounts:
+            - name: tmp
+              mountPath: /tmp
             - name: previous-boot
               mountPath: /opt/bitnami/mariadb/.bootstrap
             - name: {{ include "common.fullname" . }}
@@ -218,7 +208,7 @@ spec:
             timeoutSeconds: {{ .Values.metrics.readinessProbe.timeoutSeconds }}
             successThreshold: {{ .Values.metrics.readinessProbe.successThreshold }}
             failureThreshold: {{ .Values.metrics.readinessProbe.failureThreshold }}
-          {{ include "common.containerSecurityContext" . | indent 10 | trim }}
+          securityContext: {{- toYaml .Values.metrics.securityContext | nindent 12 }}
           resources: {{- toYaml .Values.metrics.resources | nindent 12 }}
         {{- end }}
       {{- include "common.imagePullSecrets" . | nindent 6 }}
@@ -244,13 +234,19 @@ spec:
       tolerations: {{- include "common.tplValue" (dict "value" .Values.tolerations "context" .) | nindent 8 }}
       {{- end }}
       volumes:
+        - name: tmp
+          emptyDir:
+            sizeLimit: {{ .Values.volumes.tmpSizeLimit }}
         - name: previous-boot
-          emptyDir: {}
+          emptyDir:
+            sizeLimit: {{ .Values.volumes.bootSizeLimit }}
         - name: mariadb-tmp-folder
-          emptyDir: {}
+          emptyDir:
+            sizeLimit: {{ .Values.volumes.tmpMariaDBSizeLimit }}
         {{- if .Values.mariadbConfiguration  }}
         - name:  mariadb-galera-actual-config
-          emptyDir: {}
+          emptyDir:
+            sizeLimit: {{ .Values.volumes.configSizeLimit }}
         - name: mariadb-galera-starting-config
           configMap:
             name: {{ printf "%s-configuration" (include "common.fullname" .) }}
@@ -266,4 +262,4 @@ spec:
   volumeClaimTemplates:
     - {{ include "common.PVCTemplate" (dict "dot" . "suffix" "data" "persistenceInfos" .Values.persistence) | indent 6 | trim }}
 {{- end }}
-{{- end }}
\ No newline at end of file
+{{- end }}
index 3d9725c..1dfeaee 100644 (file)
@@ -20,6 +20,7 @@
 #################################################################
 global:
   nodePortPrefix: 302
+  mariadbContainerRegistry: docker-registry3.mariadb.com
   persistence:
     mountPath: /dockerdata-nfs
     backup:
@@ -56,16 +57,16 @@ secrets:
 
 mariadbOperator:
   image: mariadb
-  appVersion: 11.2.2
+  appVersion: 11.7.2
   persistence:
     #storageClassName: default
     size: 3Gi
   galera:
     enabled: true
     agentImage: mariadb-operator/mariadb-operator
-    agentVersion: v0.0.27
+    agentVersion: 0.38.1
     initImage: mariadb-operator/mariadb-operator
-    initVersion: v0.0.27
+    initVersion: 0.38.1
 
 ## String to partially override common.names.fullname template (will maintain the release name)
 ##
@@ -217,10 +218,13 @@ serviceAccount:
 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
 ##
 securityContext:
-  enabled: true
   user_id: 10001
   group_id: 10001
 
+# Old Bitnami Chart does not work without Filesystem access
+containerSecurityContext:
+  readOnlyFileSystem: false
+
 ## Database credentials for root (admin) user
 ##
 rootUser:
@@ -606,6 +610,13 @@ resources:
       memory: "3Gi"
   unlimited: {}
 
+volumes:
+  tmpDataSizeLimit: 500Mi
+  bootSizeLimit: 50Mi
+  tmpSizeLimit: 200Mi
+  configSizeLimit: 50Mi
+  tmpMariaDBSizeLimit: 100Mi
+
 ## MariaDB Galera containers' liveness and readiness probes
 ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
 ##
@@ -659,6 +670,19 @@ metrics:
   ##   - --collect.binlog_size
   ##
   extraFlags: []
+  securityContext:
+    readOnlyRootFilesystem: true
+    privileged: false
+    allowPrivilegeEscalation: false
+    capabilities:
+      drop:
+        - ALL
+        - CAP_NET_RAW
+    runAsGroup: 10001
+    runAsNonRoot: true
+    runAsUser: 10001
+    seccompProfile:
+      type: RuntimeDefault
   ## MySQL Prometheus exporter containers' resource requests and limits
   ## ref: http://kubernetes.io/docs/user-guide/compute-resources/
   ##
@@ -673,6 +697,7 @@ metrics:
     requests:
       cpu: "0.5"
       memory: "200Mi"
+
   ## MariaDB Galera metrics container's liveness and readiness probes
   ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
   ##
index dadf202..f4d0b92 100644 (file)
 *.tmproj
 
 tests
+# Project/CI/CD related items
+.gitlab
+.gitlab-ci.yml
+.dockerignore
+# Helm build files
+.helmignore
+.cache/
+.config/
+.local/
+# OOM specific dirs
+components/
index fa89a66..f1acef6 100644 (file)
@@ -1,6 +1,7 @@
 # Copyright © 2018 Amdocs, Bell Canada
 # Modifications Copyright © 2021 Orange
 # Modifications Copyright © 2021 Nordix Foundation
+# Modifications Copyright © 2024 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # 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.
-
+---
 apiVersion: v2
 description: Chart for MariaDB Galera init job
 name: mariadb-init
-version: 13.0.0
+version: 16.0.0
 
 dependencies:
   - name: common
     version: ~13.x-0
-    repository: 'file://../common'
+    repository: '@local'
   - name: repositoryGenerator
     version: ~13.x-0
-    repository: 'file://../repositoryGenerator'
+    repository: '@local'
   - name: serviceAccount
     version: ~13.x-0
     repository: '@local'
index 8f7e7ce..f55da7a 100755 (executable)
@@ -36,9 +36,9 @@ while read DB ; do
 
     echo "Creating database ${DB} and user ${USER}..."
 
-    mysql $MYSQL_OPTS -e "CREATE OR REPLACE USER '${USER}'@'%' IDENTIFIED BY '${PASS}'"
-    mysql $MYSQL_OPTS -e "CREATE DATABASE IF NOT EXISTS ${DB}"
-    mysql $MYSQL_OPTS -e "GRANT ALL PRIVILEGES ON ${DB}.* TO '${USER}'@'%'"
+    mariadb $MYSQL_OPTS -e "CREATE OR REPLACE USER '${USER}'@'%' IDENTIFIED BY '${PASS}'"
+    mariadb $MYSQL_OPTS -e "CREATE DATABASE IF NOT EXISTS ${DB}"
+    mariadb $MYSQL_OPTS -e "GRANT ALL PRIVILEGES ON ${DB}.* TO '${USER}'@'%'"
 
     echo "Created database ${DB} and user ${USER}."
 done <<EOF
index ea612a0..8d111b5 100644 (file)
@@ -1,4 +1,4 @@
-{{/*
+{{/*
 # Copyright © 2019 Orange
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
@@ -12,7 +12,7 @@
 # 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.
-*/}}
+*/ -}}
 
 {{/*
   Choose the name of the configmap to use.
index 5563fe7..fda93b5 100644 (file)
@@ -1,4 +1,4 @@
-{{/*
+{{/*
 # Copyright © 2019 Orange
 # Copyright © 2020 Samsung Electronics
 #
@@ -13,7 +13,7 @@
 # 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.
-*/}}
+*/ -}}
 
 {{/*
   Choose the name of the mariadb secret to use.
index 6708efd..5d33ae7 100644 (file)
@@ -1,4 +1,3 @@
-{{/*
 # Copyright © 2019 Orange
 # Modifications Copyright © 2018 AT&T
 #
 # 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.
-*/}}
-
+---
 apiVersion: v1
 kind: ConfigMap
 metadata:
   name: {{ include "common.fullname" . }}
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 data:
 {{ tpl (.Files.Glob "resources/config/*").AsConfig . | indent 2 }}
 ---
@@ -34,11 +28,7 @@ kind: ConfigMap
 metadata:
   name: {{ include "common.fullname" . }}-dbscript
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 data:
   db_cmd.sh: |
     {{ tpl .Values.dbScript . | indent 4 }}
index 4bb142d..bde0c77 100644 (file)
@@ -1,4 +1,3 @@
-{{/*
 # Copyright © 2019 Orange
 # Copyright © 2020 Samsung Electronics
 #
@@ -13,8 +12,7 @@
 # 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.
-*/}}
-
+---
 {{ include "mariadbInit._updateSecrets" . -}}
 
 apiVersion: batch/v1
@@ -22,11 +20,10 @@ kind: Job
 metadata:
   name: {{ include "common.fullname" . }}-config-job
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" . | nindent 4 }}
+  {{- if .Values.jobAnnotations }}
+  annotations:  {{- include "common.tplValue" (dict "value" .Values.jobAnnotations "context" $) | nindent 4 }}
+  {{- end }}
 spec:
   backoffLimit: 20
   template:
@@ -37,16 +34,16 @@ spec:
         # Istio CNI plugin, see:
         # (https://istio.io/latest/docs/setup/additional-setup/cni/#compatibility-with-application-init-containers)
         traffic.sidecar.istio.io/excludeOutboundPorts: "443"
-      labels:
-        app: {{ include "common.name" . }}
-        release: {{ include "common.release" . }}
+      labels: {{- include "common.labels" . | nindent 8 }}
       name: {{ include "common.name" . }}
     spec:
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
       initContainers: {{ include "common.readinessCheck.waitFor" . | nindent 6 }}
       containers:
       - name: {{ include "common.name" . }}
         image: {{ include "repositoryGenerator.image.mariadb" . }}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        {{ include "common.containerSecurityContext" . | indent 8 | trim }}
         command:
           - /bin/sh
           - -c
index a9d9e0b..b2876bc 100644 (file)
@@ -1,4 +1,3 @@
-{{/*
 # Copyright © 2017 Amdocs, Bell Canada, Orange
 # Copyright © 2020 Samsung Electronics
 #
@@ -13,8 +12,7 @@
 # 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.
-*/}}
-
+---
 {{ include "mariadbInit._updateSecrets" . -}}
 
 {{ include "common.secretFast" . }}
index 34914cd..681d173 100644 (file)
@@ -37,7 +37,7 @@ tests:
 
               echo "Creating database ynsaUCru6mUNwGal and user u5WZ1GMSIS1wHZF..."
 
-              mysql -h ${DB_HOST} -P ${DB_PORT} -uroot -p$MYSQL_ROOT_PASSWORD << 'EOF' || exit 1
+              mariadb -h ${DB_HOST} -P ${DB_PORT} -uroot -p$MYSQL_ROOT_PASSWORD << 'EOF' || exit 1
               CREATE OR REPLACE USER 'u5WZ1GMSIS1wHZF'@'localhost' IDENTIFIED BY '${MYSQL_PASSWORD}';
               CREATE OR REPLACE USER 'u5WZ1GMSIS1wHZF'@'%' IDENTIFIED BY '${MYSQL_PASSWORD}';
               CREATE DATABASE IF NOT EXISTS ynsaUCru6mUNwGal;
@@ -80,7 +80,7 @@ tests:
 
               echo "Creating database testDB and user testUser..."
 
-              mysql -h ${DB_HOST} -P ${DB_PORT} -uroot -p$MYSQL_ROOT_PASSWORD << 'EOF' || exit 1
+              mariadb -h ${DB_HOST} -P ${DB_PORT} -uroot -p$MYSQL_ROOT_PASSWORD << 'EOF' || exit 1
               CREATE OR REPLACE USER 'testUser'@'localhost' IDENTIFIED BY '${MYSQL_PASSWORD}';
               CREATE OR REPLACE USER 'testUser'@'%' IDENTIFIED BY '${MYSQL_PASSWORD}';
               CREATE DATABASE IF NOT EXISTS testDB;
@@ -92,7 +92,7 @@ tests:
 
               echo "Creating database dbOne and user one..."
 
-              mysql -h ${DB_HOST} -P ${DB_PORT} -uroot -p$MYSQL_ROOT_PASSWORD << 'EOF' || exit 1
+              mariadb -h ${DB_HOST} -P ${DB_PORT} -uroot -p$MYSQL_ROOT_PASSWORD << 'EOF' || exit 1
               CREATE OR REPLACE USER 'one'@'localhost' IDENTIFIED BY '${MYSQL_PASSWORD_DBONE}';
               CREATE OR REPLACE USER 'one'@'%' IDENTIFIED BY '${MYSQL_PASSWORD_DBONE}';
               CREATE DATABASE IF NOT EXISTS dbOne;
@@ -103,7 +103,7 @@ tests:
               echo "Created database dbOne and user one."
               echo "Creating database dbTwo and user two..."
 
-              mysql -h ${DB_HOST} -P ${DB_PORT} -uroot -p$MYSQL_ROOT_PASSWORD << 'EOF' || exit 1
+              mariadb -h ${DB_HOST} -P ${DB_PORT} -uroot -p$MYSQL_ROOT_PASSWORD << 'EOF' || exit 1
               CREATE OR REPLACE USER 'two'@'localhost' IDENTIFIED BY '${MYSQL_PASSWORD_DBTWO}';
               CREATE OR REPLACE USER 'two'@'%' IDENTIFIED BY '${MYSQL_PASSWORD_DBTWO}';
               CREATE DATABASE IF NOT EXISTS dbTwo;
index cff8f94..4b7e4ea 100644 (file)
@@ -36,7 +36,7 @@ tests:
           content: mariadb-galera
       - equal:
           path: spec.template.spec.initContainers[0].image
-          value: nexus3.onap.org:10001/onap/oom/readiness:6.0.3
+          value: nexus3.onap.org:10001/onap/oom/readiness:6.1.2
       - equal:
           path: spec.template.spec.initContainers[0].imagePullPolicy
           value: IfNotPresent
@@ -98,11 +98,11 @@ tests:
   - it: "should render with default value (volumes)"
     asserts:
       - contains:
-            path: spec.template.spec.volumes
-            content:
-              name: mariadb-conf
-              configMap:
-                name: RELEASE-NAME-mariadb-init
+          path: spec.template.spec.volumes
+          content:
+            name: mariadb-conf
+            configMap:
+              name: RELEASE-NAME-mariadb-init
 
   - it: "should render with nameOverride set"
     set:
@@ -136,11 +136,11 @@ tests:
                 name: RELEASE-NAME-myJob-secret
                 key: db-user-password
       - contains:
-            path: spec.template.spec.volumes
-            content:
-              name: mariadb-conf
-              configMap:
-                name: RELEASE-NAME-myJob
+          path: spec.template.spec.volumes
+          content:
+            name: mariadb-conf
+            configMap:
+              name: RELEASE-NAME-myJob
 
   - it: "should render with configmap set"
     set:
@@ -158,8 +158,8 @@ tests:
     set:
       global:
         mariadbGalera:
-            nameOverride: myMaria
-            servicePort: 545
+          nameOverride: myMaria
+          servicePort: 545
     asserts:
       - contains:
           path: spec.template.spec.initContainers[0].args
@@ -187,10 +187,10 @@ tests:
     set:
       global:
         mariadbGalera:
-            nameOverride: myMaria
-            servicePort: 545
-            userRootSecret: galera-secret
-            userRootSecretKey: root-password
+          nameOverride: myMaria
+          servicePort: 545
+          userRootSecret: galera-secret
+          userRootSecretKey: root-password
     asserts:
       - contains:
           path: spec.template.spec.initContainers[0].args
@@ -230,11 +230,11 @@ tests:
           requiredDuringSchedulingIgnoredDuringExecution:
             nodeSelectorTerms:
               - matchExpressions:
-                - key: kubernetes.io/e2e-az-name
-                  operator: In
-                  values:
-                    - e2e-az1
-                    - e2e-az2
+                  - key: kubernetes.io/e2e-az-name
+                    operator: In
+                    values:
+                      - e2e-az1
+                      - e2e-az2
     asserts:
       - equal:
           path: spec.template.spec.affinity
@@ -243,11 +243,11 @@ tests:
               requiredDuringSchedulingIgnoredDuringExecution:
                 nodeSelectorTerms:
                   - matchExpressions:
-                    - key: kubernetes.io/e2e-az-name
-                      operator: In
-                      values:
-                        - e2e-az1
-                        - e2e-az2
+                      - key: kubernetes.io/e2e-az-name
+                        operator: In
+                        values:
+                          - e2e-az1
+                          - e2e-az2
   - it: "should use large flavor"
     set:
       flavor: large
index 57dfb40..f698321 100644 (file)
@@ -11,7 +11,7 @@
 # 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.
-
+---
 #################################################################
 # Global configuration defaults.
 #################################################################
@@ -106,21 +106,40 @@ config:
   #     externalSecret: some-secret-name
   config_map: default
 
+# Annotations to control the execution and deletion of the job
+# Can be used to delete a job before an Upgrade
+#
+# jobAnnotations:
+#   # In case of an ArgoCD deployment this Hook deletes the job before syncing
+#   argocd.argoproj.io/hook: Sync
+#   argocd.argoproj.io/hook-delete-policy: BeforeHookCreation
+#
+#   # In case of an Helm/Flux deployment this Hook deletes the job
+#   # This is what defines this resource as a hook. Without this line, the
+#   # job is considered part of the release.
+#   "helm.sh/hook": "pre-upgrade,pre-rollback,post-install"
+#   "helm.sh/hook-delete-policy": "before-hook-creation"
+#   "helm.sh/hook-weight": "1"
+
+securityContext:
+  user_id: 100
+  group_id: 65533
+
 nodeSelector: {}
 
 affinity: {}
 
-#resources: {}
-  # We usually recommend not to specify default resources and to leave this as a conscious
-  # choice for the user. This also increases chances charts run on environments with little
-  # resources, such as Minikube. If you do want to specify resources, uncomment the following
-  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
-  #
-  # Example:
-  # Configure resource requests and limits
-  # ref: http://kubernetes.io/docs/user-guide/compute-resources/
-  # Minimum memory for development is 2 CPU cores and 4GB memory
-  # Minimum memory for production is 4 CPU cores and 8GB memory
+# resources: {}
+# We usually recommend not to specify default resources and to leave this as a conscious
+# choice for the user. This also increases chances charts run on environments with little
+# resources, such as Minikube. If you do want to specify resources, uncomment the following
+# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
+#
+# Example:
+# Configure resource requests and limits
+# ref: http://kubernetes.io/docs/user-guide/compute-resources/
+# Minimum memory for development is 2 CPU cores and 4GB memory
+# Minimum memory for production is 4 CPU cores and 8GB memory
 flavor: small
 resources:
   small:
@@ -139,7 +158,7 @@ resources:
       memory: "20Mi"
   unlimited: {}
 
-#Pods Service Account
+# Pods Service Account
 serviceAccount:
   nameOverride: mariadb-init
   roles:
@@ -152,4 +171,4 @@ wait_for_job_container:
 readinessCheck:
   wait_for:
     services:
-    - '{{ include "common.mariadbService" . }}'
+      - '{{ include "common.mariadbService" . }}'
diff --git a/kubernetes/common/mongodb-init/.helmignore b/kubernetes/common/mongodb-init/.helmignore
new file mode 100644 (file)
index 0000000..0bab41b
--- /dev/null
@@ -0,0 +1,32 @@
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*~
+# Various IDEs
+.project
+.idea/
+*.tmproj
+# Project/CI/CD related items
+.gitlab
+.gitlab-ci.yml
+.dockerignore
+# Helm build files
+.helmignore
+.cache/
+.config/
+.local/
+# OOM specific dirs
+components/
diff --git a/kubernetes/common/mongodb-init/Chart.yaml b/kubernetes/common/mongodb-init/Chart.yaml
new file mode 100644 (file)
index 0000000..93ffddf
--- /dev/null
@@ -0,0 +1,32 @@
+# Copyright © 2024 Deutsche Telekom
+#
+# 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.
+
+apiVersion: v2
+description: Chart for MongoDB init job
+name: mongodb-init
+version: 13.0.6
+
+dependencies:
+  - name: common
+    version: ~13.x-0
+    repository: '@local'
+  - name: repositoryGenerator
+    version: ~13.x-0
+    repository: '@local'
+  - name: readinessCheck
+    version: ~13.x-0
+    repository: '@local'
+  - name: serviceAccount
+    version: ~13.x-0
+    repository: '@local'
diff --git a/kubernetes/common/mongodb-init/README.md b/kubernetes/common/mongodb-init/README.md
new file mode 100644 (file)
index 0000000..aa6c735
--- /dev/null
@@ -0,0 +1,16 @@
+# mongodb-init
+
+## Introduction
+
+Initialization scripts for mongo database.
+
+- not part of ONAP OOM yet
+
+## Requirements
+
+mongodb-init needs the following ONAP projects to work:
+
+- common/common
+- common/repositoryGenerator
+- common/serviceAccount
+- common/readinessCheck
diff --git a/kubernetes/common/mongodb-init/resources/config/setup.sql b/kubernetes/common/mongodb-init/resources/config/setup.sql
new file mode 100644 (file)
index 0000000..452ee18
--- /dev/null
@@ -0,0 +1,11 @@
+// Database Setup
+use ${MONGO_DATABASE}
+
+// UserCreation Setup
+db.createUser(
+  {
+    user: "${MONGODB_USER}",
+    pwd: "${MONGODB_PASSWORD}",
+    roles: [ { role: "readWrite", db: "${MONGO_DATABASE}" } ]
+  }
+)
diff --git a/kubernetes/common/mongodb-init/templates/configmap.yaml b/kubernetes/common/mongodb-init/templates/configmap.yaml
new file mode 100644 (file)
index 0000000..5ae1ab4
--- /dev/null
@@ -0,0 +1,25 @@
+{{/*
+# Copyright © 2024 Deutsche Telekom
+#
+#
+# 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.
+*/}}
+
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
+  labels: {{- include "common.labels" . | nindent 4 }}
+data:
+{{ tpl (.Files.Glob "resources/config/*").AsConfig . | indent 2 }}
diff --git a/kubernetes/common/mongodb-init/templates/job.yaml b/kubernetes/common/mongodb-init/templates/job.yaml
new file mode 100644 (file)
index 0000000..2721d1f
--- /dev/null
@@ -0,0 +1,125 @@
+{{/*
+# Copyright © 2024 Deutsche Telekom
+#
+# 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.
+*/}}
+
+apiVersion: batch/v1
+kind: Job
+metadata:
+  name: {{ include "common.fullname" . }}-config-job
+  namespace: {{ include "common.namespace" . }}
+  labels: {{- include "common.labels" . | nindent 4 }}
+  {{- if .Values.jobAnnotations }}
+  annotations:  {{- include "common.tplValue" (dict "value" .Values.jobAnnotations "context" $) | nindent 4 }}
+  {{- end }}
+spec:
+  backoffLimit: 20
+  template:
+    metadata:
+      labels: {{- include "common.labels" . | nindent 8 }}
+      name: {{ include "common.name" . }}
+    spec:
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
+      initContainers: {{ include "common.readinessCheck.waitFor" . | nindent 6 }}
+      - name: {{ include "common.name" . }}-update-config
+        image: {{ include "repositoryGenerator.image.envsubst" . }}
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        {{ include "common.containerSecurityContext" . | indent 8 | trim }}
+        command:
+        - sh
+        args:
+        - -c
+        - |
+          function prepare_password {
+            echo -n $1 | sed -e "s/'/''/g"
+          }
+          export MONGODB_PASSWORD=`prepare_password $MONGODB_PASSWORD_INPUT`;
+          export MONGODB_ROOT_PASSWORD=`prepare_password $MONGODB_ROOT_PASSWORD_INPUT`;
+          export MONGODB_USER=`prepare_password $MONGODB_USER_INPUT`;
+          export MONGODB_ROOT_USER=`prepare_password $MONGODB_ROOT_USER_INPUT`;
+          {{- if include "common.onServiceMesh" . }}
+          echo "waiting 15s for istio side cars to be up"; sleep 15s;
+          {{- end }}
+          cd /config-input && for PFILE in `ls -1 .`; do envsubst <${PFILE} >/config/${PFILE}; done;
+        env:
+        - name: MONGODB_HOST
+          value: "{{ .Values.global.mongodb.service.name }}"
+        - name: MONGODB_USER_INPUT
+          #value: "{{ .Values.config.mgUserName }}"
+          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" .Values.config.mgDatabase "key" "login") | indent 10 }}
+        - name: MONGODB_PASSWORD_INPUT
+          #value: "{{ .Values.config.mgUserPassword }}"
+          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" .Values.config.mgDatabase "key" "password") | indent 10 }}
+        - name: MONGO_DATABASE
+          value: "{{ .Values.config.mgDatabase }}"
+        - name: MONGODB_ROOT_USER_INPUT
+          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" (include "common.mongodb.secret.rootPassUID" .) "key" .Values.config.mgRootUserKey) | indent 10 }}
+        - name: MONGODB_ROOT_PASSWORD_INPUT
+          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" (include "common.mongodb.secret.rootPassUID" .) "key" .Values.config.mgRootPasswordKey) | indent 10 }}
+        volumeMounts:
+        - mountPath: /config-input/setup.sql
+          name: config
+          subPath: setup.sql
+        - mountPath: /config
+          name: mgconf
+      containers:
+      - name: {{ include "common.name" . }}-setup-db
+        image: {{ include "repositoryGenerator.image.mongodbImage" . }}
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        {{ include "common.containerSecurityContext" . | indent 8 | trim }}
+        command:
+        - sh
+        args:
+        - -c
+        - |
+          function prepare_password {
+            echo -n $1 | sed -e "s/'/''/g"
+          }
+          export MONGODB_ROOT_USER=`prepare_password $MONGODB_ROOT_USER_INPUT`;
+          export MONGODB_ROOT_PASSWORD=`prepare_password $MONGODB_ROOT_PASSWORD_INPUT`;
+          mongosh "mongodb://${MONGODB_ROOT_USER}:${MONGODB_ROOT_PASSWORD}@$MONGODB_HOST" < /config/setup.sql
+        env:
+        - name: MONGODB_HOST
+          value: "{{ .Values.global.mongodb.service.name }}"
+        - name: MONGODB_ROOT_USER_INPUT
+          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" (include "common.mongodb.secret.rootPassUID" .) "key" "MONGODB_DATABASE_ADMIN_USER") | indent 10 }}
+        - name: MONGODB_ROOT_PASSWORD_INPUT
+          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" (include "common.mongodb.secret.rootPassUID" .) "key" "MONGODB_DATABASE_ADMIN_PASSWORD") | indent 10 }}
+        volumeMounts:
+        - mountPath: /config-input/setup.sql
+          name: config
+          subPath: setup.sql
+        - mountPath: /config
+          name: mgconf
+        resources: {{ include "common.resources" . | nindent 10 }}
+      {{ include "common.waitForJobContainer" . | indent 6 | trim }}
+      {{- if .Values.nodeSelector }}
+      nodeSelector:
+{{ toYaml .Values.nodeSelector | indent 10 }}
+      {{- end -}}
+      {{- if .Values.affinity }}
+      affinity:
+{{ toYaml .Values.affinity | indent 10 }}
+      {{- end }}
+      serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
+      volumes:
+      - name: config
+        configMap:
+          name: {{ include "common.fullname" . }}
+      - name: mgconf
+        emptyDir:
+          medium: Memory
+          sizeLimit: 64Mi
+      restartPolicy: Never
+      {{- include "common.imagePullSecrets" . | nindent 6 }}
diff --git a/kubernetes/common/mongodb-init/templates/secrets.yaml b/kubernetes/common/mongodb-init/templates/secrets.yaml
new file mode 100644 (file)
index 0000000..783147b
--- /dev/null
@@ -0,0 +1,16 @@
+{{/*
+# ## Copyright © 2024 Deutsche Telekom
+# #
+# # 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.
+*/}}
+{{ include "common.secretFast" . }}
diff --git a/kubernetes/common/mongodb-init/values.yaml b/kubernetes/common/mongodb-init/values.yaml
new file mode 100644 (file)
index 0000000..1ab74c6
--- /dev/null
@@ -0,0 +1,126 @@
+# Copyright © 2024 Deutsche Telekom
+#
+# 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.
+
+#################################################################
+# Global configuration defaults.
+#################################################################
+global:
+  mongodb:
+    service:
+      name: mgset
+    container:
+      name: mongodb
+
+  imagePullSecrets:
+    - '{{ include "common.namespace" . }}-docker-registry-key'
+
+#################################################################
+# Secrets metaconfig
+#################################################################
+secrets:
+  - uid: '{{ include "common.mongodb.secret.rootPassUID" . }}'
+    type: password
+    externalSecret: '{{ tpl (default "" .Values.config.mgExternalSecret) . }}'
+    password: '{{ .Values.config.mgRootPasswordKey }}'
+  - uid: '{{ .Values.config.mgDatabase }}'
+    type: basicAuth
+    externalSecret: '{{ tpl (default "" .Values.config.mgUserExternalSecret) . }}'
+    login: '{{ .Values.config.mgUserName }}'
+    password: '{{ .Values.config.mgUserPassword }}'
+
+#################################################################
+# Application configuration defaults.
+#################################################################
+
+pullPolicy: Always
+
+# application configuration
+config:
+  mgUserName: testuser
+  mgUserPassword: testuser123
+  mgDatabase: testdb
+  mgDataPath: data
+  #mgRootPasswordExternalSecret: '{{ include "common.namespace" . }}-mongodb-db-root-password'
+  mgExternalSecret: '{{ include "common.name" . }}-mongo-secrets'
+  mgRootUserKey: MONGODB_DATABASE_ADMIN_USER
+  mgRootPasswordKey: MONGODB_DATABASE_ADMIN_PASSWORD
+  mgUserExternalSecret: '{{ include "common.release" . }}-{{ include "common.name" . }}-mg-secret'
+
+nodeSelector: {}
+
+affinity: {}
+
+flavor: small
+
+#resources: {}
+# We usually recommend not to specify default resources and to leave this as a conscious
+# choice for the user. This also increases chances charts run on environments with little
+# resources, such as Minikube. If you do want to specify resources, uncomment the following
+# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
+#
+# Example:
+# Configure resource requests and limits
+# ref: http://kubernetes.io/docs/user-guide/compute-resources/
+# Minimum memory for development is 2 CPU cores and 4GB memory
+# Minimum memory for production is 4 CPU cores and 8GB memory
+resources:
+  small:
+    limits:
+      cpu: "100m"
+      memory: "0.3Gi"
+    requests:
+      cpu: "10m"
+      memory: "0.09Gi"
+  large:
+    limits:
+      cpu: "2"
+      memory: "4Gi"
+    requests:
+      cpu: "1"
+      memory: "2Gi"
+  unlimited: {}
+
+#Pods Service Account
+serviceAccount:
+  nameOverride: mongodb-init
+  roles:
+    - read
+
+securityContext:
+  user_id: 100
+  group_id: 65533
+
+readinessCheck:
+  wait_for:
+    services:
+      - '{{ .Values.global.mongodb.service.name }}'
+
+wait_for_job_container:
+  containers:
+    - '{{ include "common.name" . }}-setup-db'
+
+# Annotations to control the execution and deletion of the job
+# Can be used to delete a job before an Upgrade
+#
+# jobAnnotations:
+#   # In case of an ArgoCD deployment this Hook deletes the job before syncing
+#   argocd.argoproj.io/hook: Sync
+#   argocd.argoproj.io/hook-delete-policy: BeforeHookCreation
+#
+#   # In case of an Helm/Flux deployment this Hook deletes the job
+#   # This is what defines this resource as a hook. Without this line, the
+#   # job is considered part of the release.
+#   "helm.sh/hook": "pre-upgrade,pre-rollback,post-install"
+#   "helm.sh/hook-delete-policy": "before-hook-creation"
+#   "helm.sh/hook-weight": "1"
index fb56657..207983f 100644 (file)
@@ -21,3 +21,5 @@
 *.tmproj
 # img folder
 img/
+# Changelog
+CHANGELOG.md
diff --git a/kubernetes/common/mongodb/CHANGELOG.md b/kubernetes/common/mongodb/CHANGELOG.md
new file mode 100644 (file)
index 0000000..186011a
--- /dev/null
@@ -0,0 +1,2039 @@
+# Changelog
+
+## 16.5.7 (2025-05-13)
+
+* [bitnami/mongodb] :zap: :arrow_up: Update dependency references ([#33636](https://github.com/bitnami/charts/pull/33636))
+
+## <small>16.5.6 (2025-05-06)</small>
+
+* [bitnami/mongodb] chore: :recycle: :arrow_up: Update common and remove k8s < 1.23 references (#33405 ([59d21e7](https://github.com/bitnami/charts/commit/59d21e7d2e6fe9785f6960ceb690c72c64e75190)), closes [#33405](https://github.com/bitnami/charts/issues/33405)
+
+## <small>16.5.5 (2025-05-01)</small>
+
+* [bitnami/mongodb] Release 16.5.5 (#33286) ([c084df3](https://github.com/bitnami/charts/commit/c084df377f1cb009a149dd58fa9eb691aa3d635c)), closes [#33286](https://github.com/bitnami/charts/issues/33286)
+
+## <small>16.5.4 (2025-04-30)</small>
+
+* [bitnami/mongodb] Remove extra volumeClaimTemplates fields (#33236) ([3576e85](https://github.com/bitnami/charts/commit/3576e85131e5ee110040f9fa900249a57e35d79d)), closes [#33236](https://github.com/bitnami/charts/issues/33236)
+
+## <small>16.5.3 (2025-04-28)</small>
+
+* [bitnami/mongodb] Release 16.5.3 (#33211) ([8ec0951](https://github.com/bitnami/charts/commit/8ec095186aa934f76bd311a7d734a5eb77f98b58)), closes [#33211](https://github.com/bitnami/charts/issues/33211)
+
+## <small>16.5.2 (2025-04-25)</small>
+
+* [bitnami/mongodb] Fix authentication in mongodump job (#33143) ([3b50d1b](https://github.com/bitnami/charts/commit/3b50d1b1199d31408b26a7b2c71320087a2fd77f)), closes [#33143](https://github.com/bitnami/charts/issues/33143) [#33121](https://github.com/bitnami/charts/issues/33121) [#33140](https://github.com/bitnami/charts/issues/33140)
+
+## <small>16.5.1 (2025-04-14)</small>
+
+* [bitnami/mongodb] Release 16.5.1 (#32996) ([ab86a7f](https://github.com/bitnami/charts/commit/ab86a7fe41187495cbdb2c3bbbb6c179160cca2b)), closes [#32996](https://github.com/bitnami/charts/issues/32996)
+
+## 16.5.0 (2025-04-07)
+
+* [bitnami/mongodb] Set `usePasswordFiles=true` by default (#32800) ([f51db33](https://github.com/bitnami/charts/commit/f51db33f27df9c1242539be2c3a5dedb8a73249c)), closes [#32800](https://github.com/bitnami/charts/issues/32800)
+
+## <small>16.4.12 (2025-04-02)</small>
+
+* [bitnami/mongodb] Release 16.4.12 (#32752) ([a28adbd](https://github.com/bitnami/charts/commit/a28adbd7b634755e6320c2321e37f97be9578cca)), closes [#32752](https://github.com/bitnami/charts/issues/32752)
+
+## <small>16.4.11 (2025-03-28)</small>
+
+* [bitnami/mongodb] backup cronjob time zone variable should be camel case (#32663) ([e5b94bc](https://github.com/bitnami/charts/commit/e5b94bc5c00c2c96d3e8f0fcedf02ad2c020f2a6)), closes [#32663](https://github.com/bitnami/charts/issues/32663)
+
+## <small>16.4.10 (2025-03-25)</small>
+
+* [bitnami/mongodb] fix broken conditional (#32591) ([f98e77e](https://github.com/bitnami/charts/commit/f98e77e989c35d7fa67e3b118bf69e64121d7454)), closes [#32591](https://github.com/bitnami/charts/issues/32591)
+* Update README.md (#32588) ([3c9e14a](https://github.com/bitnami/charts/commit/3c9e14ac3fa81ac439f64a20c284244eadb9481d)), closes [#32588](https://github.com/bitnami/charts/issues/32588)
+
+## <small>16.4.9 (2025-03-24)</small>
+
+* [bitnami/mongodb] #27482 - fix replicaset config handling (#32381) ([5f50d43](https://github.com/bitnami/charts/commit/5f50d43900bd5305b9d83ceddd17354081109641)), closes [#32381](https://github.com/bitnami/charts/issues/32381)
+
+## <small>16.4.8 (2025-03-21)</small>
+
+* [bitnami/*] Add tanzuCategory annotation (#32409) ([a8fba5c](https://github.com/bitnami/charts/commit/a8fba5cb01f6f4464ca7f69c50b0fbe97d837a95)), closes [#32409](https://github.com/bitnami/charts/issues/32409)
+* [bitnami/mongodb] Release 16.4.8 (#32551) ([07d0b66](https://github.com/bitnami/charts/commit/07d0b664ed13ac2388db93f4369597948f16ee25)), closes [#32551](https://github.com/bitnami/charts/issues/32551)
+
+## <small>16.4.7 (2025-03-12)</small>
+
+* [bitnami/mongodb] Update dns-check init container condition (#32394) ([430e759](https://github.com/bitnami/charts/commit/430e7599e01ab720e67cc6f0fb5098704434ef28)), closes [#32394](https://github.com/bitnami/charts/issues/32394)
+
+## <small>16.4.6 (2025-03-10)</small>
+
+* [bitnami/mongodb] Use actual hostname instead of localhost for mongodb_exporter URI string (#32192) ([cbfec4f](https://github.com/bitnami/charts/commit/cbfec4f962119b505b5c81b6d61448506b7a6216)), closes [#32192](https://github.com/bitnami/charts/issues/32192)
+
+## <small>16.4.5 (2025-02-21)</small>
+
+* [bitnami/*] Fix typo in named template name (#31858) ([b739b69](https://github.com/bitnami/charts/commit/b739b69532e637bd33b4a44eeb422c3e749eac77)), closes [#31858](https://github.com/bitnami/charts/issues/31858)
+* [bitnami/*] Use CDN url for the Bitnami Application Icons (#31881) ([d9bb11a](https://github.com/bitnami/charts/commit/d9bb11a9076b9bfdcc70ea022c25ef50e9713657)), closes [#31881](https://github.com/bitnami/charts/issues/31881)
+* [bitnami/mongodb] Enable publishNotReadyAddresses for ClusterIP services (#31145) ([0e8c150](https://github.com/bitnami/charts/commit/0e8c150374229c71161e96afe8a6c801060871e2)), closes [#31145](https://github.com/bitnami/charts/issues/31145)
+* [bitnami/mongodb] Release 16.4.5 (#32135) ([3312b24](https://github.com/bitnami/charts/commit/3312b24b28c273ee9ffed1e37d22ca1f55ebac15)), closes [#32135](https://github.com/bitnami/charts/issues/32135)
+
+## <small>16.4.3 (2025-02-03)</small>
+
+* [bitnami/mongodb] Release 16.4.3 (#31699) ([701d9dc](https://github.com/bitnami/charts/commit/701d9dc6b719f9202b60374f8d8855ef717478ca)), closes [#31699](https://github.com/bitnami/charts/issues/31699)
+* Update copyright year (#31682) ([e9f02f5](https://github.com/bitnami/charts/commit/e9f02f5007068751f7eb2270fece811e685c99b6)), closes [#31682](https://github.com/bitnami/charts/issues/31682)
+
+## <small>16.4.2 (2025-01-20)</small>
+
+* [bitnami/mongodb] remove undefined rts key from network policy template (#31356) ([53dc708](https://github.com/bitnami/charts/commit/53dc708eaf3daa0b265b8ed956a1eccaa2f443d7)), closes [#31356](https://github.com/bitnami/charts/issues/31356)
+
+## <small>16.4.1 (2025-01-15)</small>
+
+* [bitnami/*] Fix typo in README (#31052) ([b41a51d](https://github.com/bitnami/charts/commit/b41a51d1bd04841fc108b78d3b8357a5292771c8)), closes [#31052](https://github.com/bitnami/charts/issues/31052)
+* [bitnami/mongodb] Release 16.4.1 (#31390) ([639b28e](https://github.com/bitnami/charts/commit/639b28e5326003ba369f423c9718f1a6a4b4985c)), closes [#31390](https://github.com/bitnami/charts/issues/31390)
+
+## 16.4.0 (2024-12-10)
+
+* [bitnami/*] Add Bitnami Premium to NOTES.txt (#30854) ([3dfc003](https://github.com/bitnami/charts/commit/3dfc00376df6631f0ce54b8d440d477f6caa6186)), closes [#30854](https://github.com/bitnami/charts/issues/30854)
+* [bitnami/mongodb] Detect non-standard images (#30926) ([9b7cdc2](https://github.com/bitnami/charts/commit/9b7cdc25e189dcb8256a4a11aa35bf46fa01b6c7)), closes [#30926](https://github.com/bitnami/charts/issues/30926)
+
+## <small>16.3.3 (2024-12-06)</small>
+
+* [bitnami/mongodb] Release 16.3.3 (#30822) ([83e96a2](https://github.com/bitnami/charts/commit/83e96a2cd17a29f10230af3ec16e0451fc5f4d0c)), closes [#30822](https://github.com/bitnami/charts/issues/30822)
+
+## <small>16.3.2 (2024-12-04)</small>
+
+* [bitnami/*] docs: :memo: Add "Backup & Restore" section (#30711) ([35ab536](https://github.com/bitnami/charts/commit/35ab5363741e7548f4076f04da6e62d10153c60c)), closes [#30711](https://github.com/bitnami/charts/issues/30711)
+* [bitnami/*] docs: :memo: Add "Prometheus metrics" (batch 4) (#30669) ([a4ec006](https://github.com/bitnami/charts/commit/a4ec00624589023a70a7094fcfb9f12e382bc280)), closes [#30669](https://github.com/bitnami/charts/issues/30669)
+* [bitnami/*] docs: :memo: Unify "Securing Traffic using TLS" section (#30707) ([b572333](https://github.com/bitnami/charts/commit/b57233336e4fe9af928ecb4f2a5f334011efb1bc)), closes [#30707](https://github.com/bitnami/charts/issues/30707)
+* [bitnami/mongodb] Release 16.3.2 (#30785) ([38df250](https://github.com/bitnami/charts/commit/38df25008477850e56123c286ff9daa5e28777e4)), closes [#30785](https://github.com/bitnami/charts/issues/30785)
+
+## <small>16.3.1 (2024-11-26)</small>
+
+* [bitnami/mongodb] Modify access modes to match YAML 1.2 schema (#30512) ([7cd0bfa](https://github.com/bitnami/charts/commit/7cd0bfa7a78bb1c97c5658a31ecf3b54d60a1812)), closes [#30512](https://github.com/bitnami/charts/issues/30512)
+
+## 16.3.0 (2024-11-14)
+
+* [bitnami/mongodb] feat: :sparkles: Add password update job (#30460) ([a4d8d5b](https://github.com/bitnami/charts/commit/a4d8d5b3c164f946901b91651a7bd5cc338a11c0)), closes [#30460](https://github.com/bitnami/charts/issues/30460)
+
+## <small>16.2.2 (2024-11-13)</small>
+
+* [bitnami/mongodb] allow setting the timezone for backup cronjob (#30421) ([f001424](https://github.com/bitnami/charts/commit/f001424f6aad534d5fe5a9ad09265b24b1fd6fe7)), closes [#30421](https://github.com/bitnami/charts/issues/30421)
+
+## <small>16.2.1 (2024-10-30)</small>
+
+* [bitnami/*] Remove wrong comment about imagePullPolicy (#30107) ([a51f9e4](https://github.com/bitnami/charts/commit/a51f9e4bb0fbf77199512d35de7ac8abe055d026)), closes [#30107](https://github.com/bitnami/charts/issues/30107)
+* [bitnami/mongodb] Fix render values of resources on init container (#30115) ([7722763](https://github.com/bitnami/charts/commit/77227635ce659923da314f1a3268574697ef63f9)), closes [#30115](https://github.com/bitnami/charts/issues/30115)
+
+## 16.2.0 (2024-10-28)
+
+* [bitnami/mongodb] fix: initial primary host variable for arbiter and hidden replicas (#29584) ([a1df969](https://github.com/bitnami/charts/commit/a1df96944f48ea2cde075396d235a07a6d7aa165)), closes [#29584](https://github.com/bitnami/charts/issues/29584)
+
+## <small>16.1.1 (2024-10-25)</small>
+
+* [bitnami/mongodb] Release 16.1.1 (#30084) ([24f6cde](https://github.com/bitnami/charts/commit/24f6cde58746cdc617a672d63add5bfd8b7e6b6d)), closes [#30084](https://github.com/bitnami/charts/issues/30084)
+
+## 16.1.0 (2024-10-23)
+
+* [bitnami/mongodb] Add resources for backup cronjob (#30021) ([4836089](https://github.com/bitnami/charts/commit/48360898aedcdb853fb8f967ed64bfdc72399ba8)), closes [#30021](https://github.com/bitnami/charts/issues/30021)
+* Update documentation links to techdocs.broadcom.com (#29931) ([f0d9ad7](https://github.com/bitnami/charts/commit/f0d9ad78f39f633d275fc576d32eae78ded4d0b8)), closes [#29931](https://github.com/bitnami/charts/issues/29931)
+
+## <small>16.0.3 (2024-10-10)</small>
+
+* [bitnami/mongodb] Fixed awk script to extract  in order to be more st… (#29824) ([86745de](https://github.com/bitnami/charts/commit/86745de16a329beadf4277bc602a12224a93e84a)), closes [#29824](https://github.com/bitnami/charts/issues/29824)
+
+## <small>16.0.2 (2024-10-09)</small>
+
+* [bitnami/mongodb] Release 16.0.2 (#29855) ([7fec11a](https://github.com/bitnami/charts/commit/7fec11aa57b1c66cea587219b86081fde3ac0b97)), closes [#29855](https://github.com/bitnami/charts/issues/29855)
+
+## <small>16.0.1 (2024-10-08)</small>
+
+* [bitnami/mongodb] Release 16.0.1 (#29830) ([6360c47](https://github.com/bitnami/charts/commit/6360c478136e8c0d58b7bb50e7f507308afc25f6)), closes [#29830](https://github.com/bitnami/charts/issues/29830)
+* [bitnami/mongodb] Update README (#29812) ([6f8a1bf](https://github.com/bitnami/charts/commit/6f8a1bf241a0032a3e44a2ea47f9574f6786d436)), closes [#29812](https://github.com/bitnami/charts/issues/29812)
+
+## 16.0.0 (2024-10-07)
+
+* [bitnami/mongodb] Release 16.0.0 (#29801) ([5973e5c](https://github.com/bitnami/charts/commit/5973e5c8e6aa766997000d6a49b9be7936298c30)), closes [#29801](https://github.com/bitnami/charts/issues/29801)
+
+## <small>15.6.26 (2024-09-23)</small>
+
+* [bitnami/mongodb] Fixed arbiter anti affinity rules to prevent it from running on the same node of a ([ded7e1f](https://github.com/bitnami/charts/commit/ded7e1f62ddcaba8fdeaf29a485aaf199295ccfc)), closes [#29565](https://github.com/bitnami/charts/issues/29565)
+
+## <small>15.6.25 (2024-09-19)</small>
+
+* [bitnami/mongodb] Release 15.6.25 (#29529) ([8091ced](https://github.com/bitnami/charts/commit/8091ced2fc72072724265e78a09ad490e4711c6a)), closes [#29529](https://github.com/bitnami/charts/issues/29529)
+
+## <small>15.6.24 (2024-09-14)</small>
+
+* [bitnami/mongodb] Release 15.6.24 (#29414) ([dd49bc9](https://github.com/bitnami/charts/commit/dd49bc9b8e14aef99705e0c9eba76ac01de93d5f)), closes [#29414](https://github.com/bitnami/charts/issues/29414)
+
+## <small>15.6.23 (2024-09-11)</small>
+
+* [bitnami/mongodb] Allow rendering resources values (#29346) ([2fbc081](https://github.com/bitnami/charts/commit/2fbc081c5441b904df0b142e5ae42f77f9357385)), closes [#29346](https://github.com/bitnami/charts/issues/29346)
+
+## <small>15.6.22 (2024-08-29)</small>
+
+* [bitnami/mongodb] add securityContext via helper to initContainter dns-check (#29038) ([56299fe](https://github.com/bitnami/charts/commit/56299fe14d54ac685fb55da7d23c6b91c15f8e3e)), closes [#29038](https://github.com/bitnami/charts/issues/29038)
+
+## <small>15.6.21 (2024-08-26)</small>
+
+* [bitnami/mongodb] Release 15.6.21 (#29035) ([21acb97](https://github.com/bitnami/charts/commit/21acb974bf8edca0550bccb71a1df126a277d59b)), closes [#29035](https://github.com/bitnami/charts/issues/29035)
+
+## <small>15.6.20 (2024-08-20)</small>
+
+* [bitnami/mongodb] Fix logic to add custom annotations to external-access service (#28883) ([785e59b](https://github.com/bitnami/charts/commit/785e59bccf87c5ecae2b472901e7f6e7fbf2c196)), closes [#28883](https://github.com/bitnami/charts/issues/28883)
+
+## <small>15.6.19 (2024-08-14)</small>
+
+* [bitnami/mongodb] Release 15.6.19 (#28889) ([8b3cb57](https://github.com/bitnami/charts/commit/8b3cb57c221f0f035e020cecc70b44e26cfd8040)), closes [#28889](https://github.com/bitnami/charts/issues/28889)
+
+## <small>15.6.18 (2024-08-07)</small>
+
+* [bitnami/mongodb] fix(NOTES.txt): Missing messages (#28685) ([7e31f12](https://github.com/bitnami/charts/commit/7e31f12208a7ae11060d3eaa68c09f74cbc4a6a4)), closes [#28685](https://github.com/bitnami/charts/issues/28685)
+
+## <small>15.6.17 (2024-08-06)</small>
+
+* [bitnami/mongodb] Release 15.6.17 (#28697) ([b6d6a24](https://github.com/bitnami/charts/commit/b6d6a2449195d87387cce9aec88cc6215763c569)), closes [#28697](https://github.com/bitnami/charts/issues/28697)
+
+## <small>15.6.16 (2024-07-25)</small>
+
+* [bitnami/mongodb] Release 15.6.16 (#28453) ([86d3ac8](https://github.com/bitnami/charts/commit/86d3ac8763d831263d8436ce890cd54ef62a9a17)), closes [#28453](https://github.com/bitnami/charts/issues/28453)
+
+## <small>15.6.15 (2024-07-24)</small>
+
+* [bitnami/mongodb] Release 15.6.15 (#28332) ([e107031](https://github.com/bitnami/charts/commit/e107031d3833f020d47d5fddcc24c7f43859443e)), closes [#28332](https://github.com/bitnami/charts/issues/28332)
+
+## <small>15.6.14 (2024-07-18)</small>
+
+* [bitnami/mongodb] Global StorageClass as default value (#28061) ([0661fba](https://github.com/bitnami/charts/commit/0661fbaf3436de16452d82cbf244a616c5892e64)), closes [#28061](https://github.com/bitnami/charts/issues/28061)
+
+## <small>15.6.13 (2024-07-16)</small>
+
+* [bitnami/mongodb] Fix autoDiscovery initContainer template (#27953) ([c3955b0](https://github.com/bitnami/charts/commit/c3955b0e2c0cd7fc287f3acc36990b8c0a8c09ac)), closes [#27953](https://github.com/bitnami/charts/issues/27953)
+
+## <small>15.6.12 (2024-07-01)</small>
+
+* [bitnami/*] Update README changing TAC wording (#27530) ([52dfed6](https://github.com/bitnami/charts/commit/52dfed6bac44d791efabfaf06f15daddc4fefb0c)), closes [#27530](https://github.com/bitnami/charts/issues/27530)
+* [bitnami/mongodb] Release 15.6.12 (#27590) ([97d0ec8](https://github.com/bitnami/charts/commit/97d0ec8a20365d93a4121dd7df98352eac8e69a7)), closes [#27590](https://github.com/bitnami/charts/issues/27590)
+
+## <small>15.6.11 (2024-06-25)</small>
+
+* [bitnami/mongodb] Recover logging to stdout (#27510) ([33bbddd](https://github.com/bitnami/charts/commit/33bbddd532d0debbe775a13a1b0c31e59ccd3c35)), closes [#27510](https://github.com/bitnami/charts/issues/27510)
+
+## <small>15.6.10 (2024-06-20)</small>
+
+* [bitnami/mongodb] add space back so script works again (#27183) ([e880657](https://github.com/bitnami/charts/commit/e880657e7744f7871d04c55283f34fad9d04598a)), closes [#27183](https://github.com/bitnami/charts/issues/27183)
+
+## <small>15.6.9 (2024-06-18)</small>
+
+* [bitnami/mongodb] Release 15.6.9 (#27382) ([d59a4b1](https://github.com/bitnami/charts/commit/d59a4b1346d607d82a68d59c6c162197b2305858)), closes [#27382](https://github.com/bitnami/charts/issues/27382)
+
+## <small>15.6.8 (2024-06-17)</small>
+
+* [bitnami/mongodb] Release 15.6.8 (#27317) ([71d3b7e](https://github.com/bitnami/charts/commit/71d3b7efac8585b90018d0cda9099104bb6a8ae4)), closes [#27317](https://github.com/bitnami/charts/issues/27317)
+
+## <small>15.6.7 (2024-06-17)</small>
+
+* [bitnami/mongodb] Release 15.6.7 (#27254) ([33a8fd2](https://github.com/bitnami/charts/commit/33a8fd21116b9ee49238ab13553010b859149bc1)), closes [#27254](https://github.com/bitnami/charts/issues/27254)
+
+## <small>15.6.6 (2024-06-10)</small>
+
+* [bitnami/mongodb] Add securityContext to generate-tls in replicaset (#26606) ([34ff09b](https://github.com/bitnami/charts/commit/34ff09b6e8f797163172059c194250961869e034)), closes [#26606](https://github.com/bitnami/charts/issues/26606)
+
+## <small>15.6.5 (2024-06-06)</small>
+
+* [bitnami/mongodb] Release 15.6.5 (#26988) ([1b8c210](https://github.com/bitnami/charts/commit/1b8c210aa7585a5a3731c3d8c033625c170fa1dc)), closes [#26988](https://github.com/bitnami/charts/issues/26988)
+
+## <small>15.6.4 (2024-06-06)</small>
+
+* [bitnami/mongodb] Release 15.6.4 (#26907) ([0fbcf92](https://github.com/bitnami/charts/commit/0fbcf926bb04ce00021013314b511324cd96056e)), closes [#26907](https://github.com/bitnami/charts/issues/26907)
+
+## <small>15.6.3 (2024-06-04)</small>
+
+* [bitnami/mongodb] Bump chart version (#26650) ([8a4412d](https://github.com/bitnami/charts/commit/8a4412df8904d90daefe8ac8a5345270867d329f)), closes [#26650](https://github.com/bitnami/charts/issues/26650)
+
+## <small>15.6.2 (2024-06-04)</small>
+
+* [bitnami/mongodb] Remove UTF-8 chars (#26607) ([9ab3365](https://github.com/bitnami/charts/commit/9ab33654ca45ee82d27088578308068e493c43cd)), closes [#26607](https://github.com/bitnami/charts/issues/26607)
+
+## <small>15.6.1 (2024-05-28)</small>
+
+* [bitnami/mongodb] Release 15.6.1 (#26481) ([f4dbc07](https://github.com/bitnami/charts/commit/f4dbc07bf19489d2ce4156675c1cf7e291ad0385)), closes [#26481](https://github.com/bitnami/charts/issues/26481)
+
+## 15.6.0 (2024-05-24)
+
+* [bitnami/mongodb] PDB review (#26154) ([a4ecaf9](https://github.com/bitnami/charts/commit/a4ecaf9ed62fe573de17ce95d9ec090d3b1bde88)), closes [#26154](https://github.com/bitnami/charts/issues/26154)
+
+## <small>15.5.3 (2024-05-24)</small>
+
+* [bitnami/mongodb]Add "or" condition between .Values.auth.existingSecret and .Values.auth.rootPasswor ([5f2204f](https://github.com/bitnami/charts/commit/5f2204f02bdd65fa5514dc0158797d0c3d85b635)), closes [#25944](https://github.com/bitnami/charts/issues/25944) [#25885](https://github.com/bitnami/charts/issues/25885)
+
+## <small>15.5.2 (2024-05-22)</small>
+
+* [bitnami/mongodb] Allow templating for initdbScriptsConfigMap (#26324) ([dc5fe4b](https://github.com/bitnami/charts/commit/dc5fe4b8240dc1c935280a541e0133426a4f349b)), closes [#26324](https://github.com/bitnami/charts/issues/26324)
+
+## <small>15.5.1 (2024-05-21)</small>
+
+* [bitnami/mongodb] Use different liveness/readiness probes (#26152) ([c8b04d4](https://github.com/bitnami/charts/commit/c8b04d44069a0d2a3e0d816fbaaff792558a9d4f)), closes [#26152](https://github.com/bitnami/charts/issues/26152)
+
+## 15.5.0 (2024-05-21)
+
+* [bitnami/*] ci: :construction_worker: Add tag and changelog support (#25359) ([91c707c](https://github.com/bitnami/charts/commit/91c707c9e4e574725a09505d2d313fb93f1b4c0a)), closes [#25359](https://github.com/bitnami/charts/issues/25359)
+* [bitnami/mongodb] feat: :sparkles: :lock: Add warning when original images are replaced (#26247) ([8a2137a](https://github.com/bitnami/charts/commit/8a2137a67a652dd54419f07da340a8ab81f19483)), closes [#26247](https://github.com/bitnami/charts/issues/26247)
+
+## <small>15.4.5 (2024-05-20)</small>
+
+* [bitnami/mongodb] Fix volumePermissions rendering (#26120) ([63a739e](https://github.com/bitnami/charts/commit/63a739e395d226e3cb7390da79656191c3711cf4)), closes [#26120](https://github.com/bitnami/charts/issues/26120)
+
+## <small>15.4.4 (2024-05-18)</small>
+
+* [bitnami/mongodb] Release 15.4.4 updating components versions (#26050) ([838329e](https://github.com/bitnami/charts/commit/838329ede3aa0b74f4c70b1b5c8b2663edb0d55f)), closes [#26050](https://github.com/bitnami/charts/issues/26050)
+
+## <small>15.4.3 (2024-05-14)</small>
+
+* [bitnami/mongodb] Release 15.4.3 updating components versions (#25849) ([8a4f695](https://github.com/bitnami/charts/commit/8a4f69561d3b3cc0865881e8e5361d6037b59345)), closes [#25849](https://github.com/bitnami/charts/issues/25849)
+
+## <small>15.4.2 (2024-05-14)</small>
+
+* [bitnami/mongodb] Release 15.4.2 updating components versions (#25845) ([13aef1b](https://github.com/bitnami/charts/commit/13aef1b55a85654cc2b489fd5d25f3ee99f74671)), closes [#25845](https://github.com/bitnami/charts/issues/25845)
+
+## <small>15.4.1 (2024-05-13)</small>
+
+* [bitnami/mongodb] Release 15.4.1 updating components versions (#25734) ([27fba2f](https://github.com/bitnami/charts/commit/27fba2f92b02d9dc5966784a4a6840b880e2d41a)), closes [#25734](https://github.com/bitnami/charts/issues/25734)
+
+## 15.4.0 (2024-05-13)
+
+* bitnami/mongodb: Allow labels for volumeClaimTemplates (#25571) ([7605c31](https://github.com/bitnami/charts/commit/7605c31a9ce6ef46639a5aee170e1ca33b620b15)), closes [#25571](https://github.com/bitnami/charts/issues/25571) [#25678](https://github.com/bitnami/charts/issues/25678) [#25680](https://github.com/bitnami/charts/issues/25680) [#25685](https://github.com/bitnami/charts/issues/25685) [#25688](https://github.com/bitnami/charts/issues/25688)
+
+## <small>15.3.1 (2024-05-13)</small>
+
+* [bitnami/mongodb] Release 15.3.1 updating components versions (#25707) ([5120460](https://github.com/bitnami/charts/commit/51204602b0fbf91fa10304c5213f33198b65de2e)), closes [#25707](https://github.com/bitnami/charts/issues/25707)
+
+## 15.3.0 (2024-05-10)
+
+* [bitnami/mongodb] Simplify and fix externalAccess configuration (#25397) ([90b73a8](https://github.com/bitnami/charts/commit/90b73a829a1c1d5b85fcfdee619fa8874b27999a)), closes [#25397](https://github.com/bitnami/charts/issues/25397)
+
+## 15.2.0 (2024-05-09)
+
+* [bitnami/*] Change non-root and rolling-tags doc URLs (#25628) ([b067c94](https://github.com/bitnami/charts/commit/b067c94f6bcde427863c197fd355f0b5ba12ff5b)), closes [#25628](https://github.com/bitnami/charts/issues/25628)
+* [bitnami/*] Set new header/owner (#25558) ([8d1dc11](https://github.com/bitnami/charts/commit/8d1dc11f5fb30db6fba50c43d7af59d2f79deed3)), closes [#25558](https://github.com/bitnami/charts/issues/25558)
+* [bitnami/mongodb] Network policy review (#25519) ([54c44d3](https://github.com/bitnami/charts/commit/54c44d3eb6cf08eebdb800a779dbc4fe77a1d40a)), closes [#25519](https://github.com/bitnami/charts/issues/25519)
+
+## <small>15.1.7 (2024-04-27)</small>
+
+* [bitnami/mongodb] Release 15.1.7 updating components versions (#25431) ([d7cae59](https://github.com/bitnami/charts/commit/d7cae59f58a5ba16677c05d8192ac012799e6397)), closes [#25431](https://github.com/bitnami/charts/issues/25431)
+
+## <small>15.1.6 (2024-04-26)</small>
+
+* [bitnami/mongodb] Release 15.1.6 updating components versions (#25416) ([0f0b8ed](https://github.com/bitnami/charts/commit/0f0b8ed733f3de4c0e3672ea4402cd0210e936ca)), closes [#25416](https://github.com/bitnami/charts/issues/25416)
+* [bitnami/multiple charts] Fix typo: "NetworkPolice" vs "NetworkPolicy" (#25348) ([6970c1b](https://github.com/bitnami/charts/commit/6970c1ba245873506e73d459c6eac1e4919b778f)), closes [#25348](https://github.com/bitnami/charts/issues/25348)
+* Replace VMware by Broadcom copyright text (#25306) ([a5e4bd0](https://github.com/bitnami/charts/commit/a5e4bd0e35e419203793976a78d9d0a13de92c76)), closes [#25306](https://github.com/bitnami/charts/issues/25306)
+
+## <small>15.1.5 (2024-04-23)</small>
+
+* [bitnami/mongodb] Fix validations and Autodiscovery (#25283) ([288a544](https://github.com/bitnami/charts/commit/288a544c640bd8850b6e2b40c254d246952524a9)), closes [#25283](https://github.com/bitnami/charts/issues/25283)
+
+## <small>15.1.4 (2024-04-09)</small>
+
+* [bitnami/mongodb] Release 15.1.4 updating components versions (#25082) ([e364fc1](https://github.com/bitnami/charts/commit/e364fc11fb808f0d4169b6a1ee7e665e646fde60)), closes [#25082](https://github.com/bitnami/charts/issues/25082)
+
+## <small>15.1.3 (2024-04-05)</small>
+
+* [bitnami/mongodb] Release 15.1.3 updating components versions (#24969) ([0d95685](https://github.com/bitnami/charts/commit/0d956854c40d09b7add2cfa2084c67d253879d10)), closes [#24969](https://github.com/bitnami/charts/issues/24969)
+
+## <small>15.1.2 (2024-04-04)</small>
+
+* [bitnami/mongodb] Release 15.1.2 (#24901) ([3687a3c](https://github.com/bitnami/charts/commit/3687a3ca8b3c36bb77b52ece5835e52edcb63c52)), closes [#24901](https://github.com/bitnami/charts/issues/24901)
+* Update resourcesPreset comments (#24467) ([92e3e8a](https://github.com/bitnami/charts/commit/92e3e8a507326d2a20a8f10ab3e7746a2ec5c554)), closes [#24467](https://github.com/bitnami/charts/issues/24467)
+
+## <small>15.1.1 (2024-04-01)</small>
+
+* Fix invalid secret pointer in MongoDB ServiceAccount (#24751) ([bccb4e6](https://github.com/bitnami/charts/commit/bccb4e6657f9d9fcca1f16c747f625fd4072eb8e)), closes [#24751](https://github.com/bitnami/charts/issues/24751)
+
+## 15.1.0 (2024-03-21)
+
+* [bitnami/mongodb] feat: backoffLimit should be configurable in backup cronjob (#24505) ([5b46a67](https://github.com/bitnami/charts/commit/5b46a673582c77c226aca29c4b4bb712a066ccdc)), closes [#24505](https://github.com/bitnami/charts/issues/24505) [#24326](https://github.com/bitnami/charts/issues/24326)
+
+## <small>15.0.2 (2024-03-19)</small>
+
+* [bitnami/mongodb] fix: :bug: Mount emptyDir in /bitnami/mongodb in arbiter node (#24535) ([798a885](https://github.com/bitnami/charts/commit/798a8853984a7b3fe811d20c577e6a8455c19bb4)), closes [#24535](https://github.com/bitnami/charts/issues/24535)
+
+## <small>15.0.1 (2024-03-18)</small>
+
+* [bitnami/mongodb] Release 15.0.1 updating components versions (#24523) ([1e9d09e](https://github.com/bitnami/charts/commit/1e9d09e4bf5661c5b47d89bd3517c1b7010b6945)), closes [#24523](https://github.com/bitnami/charts/issues/24523)
+
+## 15.0.0 (2024-03-18)
+
+* [bitnami/*] Reorder Chart sections (#24455) ([0cf4048](https://github.com/bitnami/charts/commit/0cf4048e8743f70a9753d460655bd030cbff6824)), closes [#24455](https://github.com/bitnami/charts/issues/24455)
+* [bitnami/mongodb] feat!: :lock: :boom: Improve security defaults (#24374) ([8057b1f](https://github.com/bitnami/charts/commit/8057b1fcb37a4d02eef71710e5a336fdd07692ce)), closes [#24374](https://github.com/bitnami/charts/issues/24374)
+
+## 14.13.0 (2024-03-06)
+
+* [bitnami/mongodb] feat: :sparkles: :lock: Add automatic adaptation for Openshift restricted-v2 SCC ( ([3025e74](https://github.com/bitnami/charts/commit/3025e74f11470105fb1a28b8b54fe23c8c3a793e)), closes [#24124](https://github.com/bitnami/charts/issues/24124)
+
+## <small>14.12.3 (2024-02-29)</small>
+
+* [bitnami/mongodb] Release 14.12.3 updating components versions (#23975) ([43306df](https://github.com/bitnami/charts/commit/43306df9f67a6c38743cac362676317aa7a8318e)), closes [#23975](https://github.com/bitnami/charts/issues/23975)
+
+## <small>14.12.2 (2024-02-27)</small>
+
+* [bitnami/mongodb] fix: :bug: Add missing empty-dir in arbiter (#23936) ([abcddbc](https://github.com/bitnami/charts/commit/abcddbcdbcac415d093ffb48eece332d172f0858)), closes [#23936](https://github.com/bitnami/charts/issues/23936)
+
+## <small>14.12.1 (2024-02-22)</small>
+
+* [bitnami/mongodb] Fix zombie processes by probes (#23390) ([1f9b662](https://github.com/bitnami/charts/commit/1f9b662ee7fbc5f795a77ed6d4cbbe121fc6711e)), closes [#23390](https://github.com/bitnami/charts/issues/23390) [bitnami/charts#13365](https://github.com/bitnami/charts/issues/13365)
+
+## 14.12.0 (2024-02-22)
+
+* [bitnami/mongodb] feat: :sparkles: :lock: Add readOnlyRootFilesystem support (#23746) ([550fbdc](https://github.com/bitnami/charts/commit/550fbdc01cd0be150d049bfebccd5ad4b8f81f7f)), closes [#23746](https://github.com/bitnami/charts/issues/23746)
+
+## <small>14.11.1 (2024-02-21)</small>
+
+* [bitnami/mongodb] Release 14.11.1 updating components versions (#23730) ([96c398f](https://github.com/bitnami/charts/commit/96c398f7cca8f220ce707e2d15349cbcc74de9af)), closes [#23730](https://github.com/bitnami/charts/issues/23730)
+
+## 14.11.0 (2024-02-20)
+
+* [bitnami/*] Bump all versions (#23602) ([b70ee2a](https://github.com/bitnami/charts/commit/b70ee2a30e4dc256bf0ac52928fb2fa7a70f049b)), closes [#23602](https://github.com/bitnami/charts/issues/23602)
+
+## <small>14.10.1 (2024-02-19)</small>
+
+* [bitnami/mongodb] Fix secret svcbind (#23560) ([fb988a5](https://github.com/bitnami/charts/commit/fb988a55d7b941d93762fb73a73fcef74b81981b)), closes [#23560](https://github.com/bitnami/charts/issues/23560)
+
+## 14.10.0 (2024-02-16)
+
+* [bitnami/mongodb] Added the possibilty to define number of replicas in standalone mode (#22366) ([c6c54b8](https://github.com/bitnami/charts/commit/c6c54b8d3703cfac0488918ac378203fd08ae7f8)), closes [#22366](https://github.com/bitnami/charts/issues/22366)
+
+## 14.9.0 (2024-02-15)
+
+* [bitnami/mongodb] feat: :sparkles: :lock: Add resource preset support (#23491) ([27a4bb0](https://github.com/bitnami/charts/commit/27a4bb00b253eefec6305fad1e934e221b28431c)), closes [#23491](https://github.com/bitnami/charts/issues/23491)
+
+## <small>14.8.3 (2024-02-05)</small>
+
+* [bitnami/mongodb] Fix metrics container port in the ingress of NetworkPolicy (#23173) ([c1268ad](https://github.com/bitnami/charts/commit/c1268ad0f067ed1e96278d3e937e5540d6fe0403)), closes [#23173](https://github.com/bitnami/charts/issues/23173)
+
+## <small>14.8.2 (2024-02-03)</small>
+
+* [bitnami/mongodb] Release 14.8.2 updating components versions (#23112) ([7d6b257](https://github.com/bitnami/charts/commit/7d6b257f695396d6fcd7db99fa23375ba86bff69)), closes [#23112](https://github.com/bitnami/charts/issues/23112)
+
+## <small>14.8.1 (2024-02-02)</small>
+
+* [bitnami/mongodb] feat: :lock: Enable networkPolicy (#22879) ([2240e19](https://github.com/bitnami/charts/commit/2240e1966119ee0ff851e57bb904aa145ce2649e)), closes [#22879](https://github.com/bitnami/charts/issues/22879)
+* backup cronjob respects global imagePullSecrets and image.pullPolicy (#23022) ([0524ec6](https://github.com/bitnami/charts/commit/0524ec61623218b29fdb8fce9fde4900dc7b9558)), closes [#23022](https://github.com/bitnami/charts/issues/23022)
+
+## 14.8.0 (2024-02-01)
+
+* [bitnami/mongodb] Add securityContext to init tls container (#22994) ([22daef5](https://github.com/bitnami/charts/commit/22daef5326fe56e12e054a767de28b38ec92a3c9)), closes [#22994](https://github.com/bitnami/charts/issues/22994)
+
+## <small>14.7.3 (2024-01-31)</small>
+
+* [bitnami/mongodb] Release 14.7.3 updating components versions (#22945) ([9f8e16c](https://github.com/bitnami/charts/commit/9f8e16cd0cc0b94b828052425cd71e17ac9ad6d8)), closes [#22945](https://github.com/bitnami/charts/issues/22945)
+
+## <small>14.7.2 (2024-01-29)</small>
+
+* [bitnami/mongodb] Fix issue with svcbind secret generation (#22521) ([c72da80](https://github.com/bitnami/charts/commit/c72da80995c79ccaeddc58ef8fa69a0b17614025)), closes [#22521](https://github.com/bitnami/charts/issues/22521)
+
+## <small>14.7.1 (2024-01-25)</small>
+
+* [bitnami/*] Move documentation sections from docs.bitnami.com back to the README (#22203) ([7564f36](https://github.com/bitnami/charts/commit/7564f36ca1e95ff30ee686652b7ab8690561a707)), closes [#22203](https://github.com/bitnami/charts/issues/22203)
+* [bitnami/mongodb] fix: :bug: Set seLinuxOptions to null for Openshift compatibility (#22628) ([19dba7c](https://github.com/bitnami/charts/commit/19dba7c5d668bfb4edd5ac7c935f2acd27139286)), closes [#22628](https://github.com/bitnami/charts/issues/22628)
+
+## 14.7.0 (2024-01-22)
+
+* [bitnami/mongodb] fix: :lock: Move service-account token auto-mount to pod declaration (#22437) ([ad9e50a](https://github.com/bitnami/charts/commit/ad9e50afba73fbcc1a94c8296a017a95c0fe0768)), closes [#22437](https://github.com/bitnami/charts/issues/22437)
+
+## <small>14.6.1 (2024-01-18)</small>
+
+* [bitnami/mongodb] Release 14.6.1 updating components versions (#22317) ([bf4cf67](https://github.com/bitnami/charts/commit/bf4cf67e757c4b0143b3feebe7b8e4d66fe12fd6)), closes [#22317](https://github.com/bitnami/charts/issues/22317)
+
+## 14.6.0 (2024-01-17)
+
+* [bitnami/mongodb] fix: :lock: Improve podSecurityContext and containerSecurityContext with essential ([29831ee](https://github.com/bitnami/charts/commit/29831ee42d431ca8d5c2ee54972e010adb9d4653)), closes [#22159](https://github.com/bitnami/charts/issues/22159)
+
+## <small>14.5.1 (2024-01-15)</small>
+
+* [bitnami/*] Fix docs.bitnami.com broken links (#21901) ([f35506d](https://github.com/bitnami/charts/commit/f35506d2dadee4f097986e7792df1f53ab215b5d)), closes [#21901](https://github.com/bitnami/charts/issues/21901)
+* [bitnami/*] Fix ref links (in comments) (#21822) ([e4fa296](https://github.com/bitnami/charts/commit/e4fa296106b225cf8c82445727c675c7c725e380)), closes [#21822](https://github.com/bitnami/charts/issues/21822)
+* [bitnami/mongodb] fix: :lock: Do not automount the service account token unless necessary (#22054) ([5dbc1a6](https://github.com/bitnami/charts/commit/5dbc1a614c1693c57c74f7326f324e46f2d29f48)), closes [#22054](https://github.com/bitnami/charts/issues/22054)
+
+## 14.5.0 (2024-01-08)
+
+* [bitnami/mongodb] Added possibility to configure persistence volume name and claim name (#21851) ([3b273bb](https://github.com/bitnami/charts/commit/3b273bb9cb3c212d315dcdafc6bd7806548d2c66)), closes [#21851](https://github.com/bitnami/charts/issues/21851)
+
+## <small>14.4.10 (2024-01-06)</small>
+
+* [bitnami/*] Update copyright: Year and company (#21815) ([6c4bf75](https://github.com/bitnami/charts/commit/6c4bf75dec58fc7c9aee9f089777b1a858c17d5b)), closes [#21815](https://github.com/bitnami/charts/issues/21815)
+* [bitnami/mongodb] Release 14.4.10 updating components versions (#21870) ([4740dd4](https://github.com/bitnami/charts/commit/4740dd40861a92958be4999dd6181af2043e2b47)), closes [#21870](https://github.com/bitnami/charts/issues/21870)
+
+## <small>14.4.9 (2023-12-29)</small>
+
+* [bitnami/mongodb] set authentication database for backup job (#21419) ([ba5527e](https://github.com/bitnami/charts/commit/ba5527e42df17a98beebf3c481c2d556b8cc5469)), closes [#21419](https://github.com/bitnami/charts/issues/21419)
+
+## <small>14.4.8 (2023-12-27)</small>
+
+* [bitnami/mongodb] Release 14.4.8 updating components versions (#21773) ([c9319ea](https://github.com/bitnami/charts/commit/c9319ea12d95cd1e889ae42185f18d90af7e261a)), closes [#21773](https://github.com/bitnami/charts/issues/21773)
+
+## <small>14.4.7 (2023-12-26)</small>
+
+* [bitnami/mongodb] fix: Use correct values in cronjob.annotations (#21717) ([3f38e0a](https://github.com/bitnami/charts/commit/3f38e0ac93506c808da87ae586201adcfdd2efd6)), closes [#21717](https://github.com/bitnami/charts/issues/21717)
+
+## <small>14.4.6 (2023-12-22)</small>
+
+* [bitnami/mongodb] Release 14.4.6 updating components versions (#21737) ([f139cef](https://github.com/bitnami/charts/commit/f139cef6e98ea45561a949829825c2c72af4f01d)), closes [#21737](https://github.com/bitnami/charts/issues/21737)
+
+## <small>14.4.5 (2023-12-21)</small>
+
+* [bitnami/mongodb] ServiceBinding to consider existing secret while upgrading (#21648) ([eb08954](https://github.com/bitnami/charts/commit/eb089544f9bf06246f091f572c54f9e037c66324)), closes [#21648](https://github.com/bitnami/charts/issues/21648)
+
+## <small>14.4.4 (2023-12-21)</small>
+
+* [bitnami/mongodb] Pod security context doesn't apply to cronjobs (#21705) ([360b322](https://github.com/bitnami/charts/commit/360b322bfb5b5cd7f9705e81e8a6540921d7ebb3)), closes [#21705](https://github.com/bitnami/charts/issues/21705)
+
+## <small>14.4.3 (2023-12-18)</small>
+
+* [bitnami/mongodb] remove securityContext.enabled from cronjob template (#21514) ([2521131](https://github.com/bitnami/charts/commit/25211319489a3dc1591205f2c7699936f45985e8)), closes [#21514](https://github.com/bitnami/charts/issues/21514)
+
+## <small>14.4.2 (2023-12-07)</small>
+
+* [bitnami/mongodb] Release 14.4.2 updating components versions (#21473) ([dd3be27](https://github.com/bitnami/charts/commit/dd3be2785b903db0e8307ed707116914589208e4)), closes [#21473](https://github.com/bitnami/charts/issues/21473)
+
+## <small>14.4.1 (2023-12-05)</small>
+
+* [bitnami/mongodb] fix: metric and reolicaset script issues with tls and mtls (#21383) ([2573f2b](https://github.com/bitnami/charts/commit/2573f2bebf49522f9f4c0fe62496e6c56c90e1f9)), closes [#21383](https://github.com/bitnami/charts/issues/21383)
+
+## 14.4.0 (2023-12-04)
+
+* [bitnami/mongodb]  feat: add node configuration (#21343) ([647cb1f](https://github.com/bitnami/charts/commit/647cb1f1fefef626755c33bcc9ad817911d3967d)), closes [#21343](https://github.com/bitnami/charts/issues/21343)
+
+## <small>14.3.2 (2023-11-27)</small>
+
+* [bitnami/mongodb] Release 14.3.2 updating components versions (#21274) ([53a45b3](https://github.com/bitnami/charts/commit/53a45b3c0a7791ae380a1cbc406da5efa9aab8a5)), closes [#21274](https://github.com/bitnami/charts/issues/21274)
+
+## <small>14.3.1 (2023-11-22)</small>
+
+* [bitnami/mongodb] Release 14.3.1 updating components versions (#21212) ([bce54b2](https://github.com/bitnami/charts/commit/bce54b2c815ac0ae094f0e1d24d40e52f675e5e3)), closes [#21212](https://github.com/bitnami/charts/issues/21212)
+
+## 14.3.0 (2023-11-20)
+
+* [bitnami/mongodb] Add Persistent Volume Claim Retention Policy to mongodb Statefulsets (#20921) ([7b77bd0](https://github.com/bitnami/charts/commit/7b77bd092be4d0b721f975d344ce9af37fc699cd)), closes [#20921](https://github.com/bitnami/charts/issues/20921)
+
+## <small>14.2.8 (2023-11-17)</small>
+
+* [bitnami/mongodb] Release 14.2.8 updating components versions (#21041) ([186d565](https://github.com/bitnami/charts/commit/186d565d001764f5a881b4d9f0078c76fea27a75)), closes [#21041](https://github.com/bitnami/charts/issues/21041)
+
+## <small>14.2.7 (2023-11-17)</small>
+
+* [bitnami/*] Remove relative links to non-README sections, add verification for that and update TL;DR ([1103633](https://github.com/bitnami/charts/commit/11036334d82df0490aa4abdb591543cab6cf7d7f)), closes [#20967](https://github.com/bitnami/charts/issues/20967)
+* [bitnami/mongodb] Release 14.2.7 updating components versions (#21023) ([4c10f47](https://github.com/bitnami/charts/commit/4c10f478bbdf6cb31ed14bc2cca3fa250c5edf60)), closes [#21023](https://github.com/bitnami/charts/issues/21023)
+
+## <small>14.2.6 (2023-11-14)</small>
+
+* [bitnami/mongodb] Release 14.2.6 updating components versions (#20937) ([6109497](https://github.com/bitnami/charts/commit/610949711d09e5afd870d73123745d82b1f75f8d)), closes [#20937](https://github.com/bitnami/charts/issues/20937)
+
+## <small>14.2.5 (2023-11-10)</small>
+
+* [bitnami/mongodb] Release 14.2.5 updating components versions (#20887) ([56e9f76](https://github.com/bitnami/charts/commit/56e9f7665b8e5c72312a3330c099d41c45b61fb9)), closes [#20887](https://github.com/bitnami/charts/issues/20887)
+
+## <small>14.2.4 (2023-11-09)</small>
+
+* [bitnami/mongodb] Release 14.2.4 updating components versions (#20877) ([89df2e0](https://github.com/bitnami/charts/commit/89df2e09e589d7a7d5546021b958328fbc2d2fb8)), closes [#20877](https://github.com/bitnami/charts/issues/20877)
+
+## <small>14.2.3 (2023-11-09)</small>
+
+* [bitnami/mongodb] Release 14.2.2 updating components versions (#20837) ([41aaf71](https://github.com/bitnami/charts/commit/41aaf71f19ea378eba1cfb7e661047f75288ffa2)), closes [#20837](https://github.com/bitnami/charts/issues/20837)
+* [bitnami/mongodb] Release 14.2.3 updating components versions (#20848) ([5b8cf9f](https://github.com/bitnami/charts/commit/5b8cf9fa6532be1d3b34d213008ecdd82ee513b1)), closes [#20848](https://github.com/bitnami/charts/issues/20848)
+
+## <small>14.2.2 (2023-11-09)</small>
+
+* [bitnami/mongodb] Replace deprecated pull secret partial (#20665) ([7c4ffe3](https://github.com/bitnami/charts/commit/7c4ffe3f1842ae00286bdf4f1eabc75300ae95ac)), closes [#20665](https://github.com/bitnami/charts/issues/20665)
+
+## <small>14.2.1 (2023-11-08)</small>
+
+* [bitnami/mongodb] Release 14.2.1 updating components versions (#20763) ([1f648ea](https://github.com/bitnami/charts/commit/1f648ea9195ca29aba79a27b117a40b199753394)), closes [#20763](https://github.com/bitnami/charts/issues/20763)
+
+## 14.2.0 (2023-11-07)
+
+* feat: Add support for enableServiceLinks on mongodb chart (#20309) ([f896794](https://github.com/bitnami/charts/commit/f8967946a0ca7c48764cbdde3ddcf8c7efb40cd4)), closes [#20309](https://github.com/bitnami/charts/issues/20309)
+
+## <small>14.1.1 (2023-11-06)</small>
+
+* [bitnami/mongodb] feat: Add network policy template into mongodb chart (#20478) ([23e23dc](https://github.com/bitnami/charts/commit/23e23dcd5ae760c740380749fa9ac5bd4fa14d28)), closes [#20478](https://github.com/bitnami/charts/issues/20478)
+
+## 14.1.0 (2023-10-31)
+
+* [bitnami/mongodb] feat: :sparkles: Add support for PSA restricted policy (#20506) ([bdfc03c](https://github.com/bitnami/charts/commit/bdfc03ceaf245e7a3730e0154e2e877bb48d0aa5)), closes [#20506](https://github.com/bitnami/charts/issues/20506)
+
+## <small>14.0.14 (2023-10-27)</small>
+
+* [bitnami/mongodb] Fixed mongodb arbiter configmap (#20452) ([ec0670a](https://github.com/bitnami/charts/commit/ec0670a29aeaa914d6ddd73df72fa9eb8b8817f6)), closes [#20452](https://github.com/bitnami/charts/issues/20452) [#20255](https://github.com/bitnami/charts/issues/20255)
+
+## <small>14.0.13 (2023-10-25)</small>
+
+* [bitnami/*] Rename VMware Application Catalog (#20361) ([3acc734](https://github.com/bitnami/charts/commit/3acc73472beb6fb56c4d99f929061001205bc57e)), closes [#20361](https://github.com/bitnami/charts/issues/20361)
+* [mongo] Add tls.mTLS.enabled flag to disable requiring client certs (#20329) ([8d26cb1](https://github.com/bitnami/charts/commit/8d26cb1c0b9c5d8e08bcd9bd53a0dc142536e00f)), closes [#20329](https://github.com/bitnami/charts/issues/20329)
+
+## <small>14.0.12 (2023-10-20)</small>
+
+* [bitnami/*] Skip image's tag in the README files of the Bitnami Charts (#19841) ([bb9a01b](https://github.com/bitnami/charts/commit/bb9a01b65911c87e48318db922cc05eb42785e42)), closes [#19841](https://github.com/bitnami/charts/issues/19841)
+* [bitnami/*] Standardize documentation (#19835) ([af5f753](https://github.com/bitnami/charts/commit/af5f7530c1bc8c5ded53a6c4f7b8f384ac1804f2)), closes [#19835](https://github.com/bitnami/charts/issues/19835)
+* [bitnami/mongodb] Release 14.0.12 updating components versions (#20342) ([fb7197e](https://github.com/bitnami/charts/commit/fb7197ea20c729734e632054e447e741ab9108aa)), closes [#20342](https://github.com/bitnami/charts/issues/20342)
+
+## <small>14.0.11 (2023-10-19)</small>
+
+* [bitnami/mongodb] whitespace preventing YAML from being parsed (#20219) ([9bc97e1](https://github.com/bitnami/charts/commit/9bc97e10e8e08e49c99534dbc68b872dede0a545)), closes [#20219](https://github.com/bitnami/charts/issues/20219)
+
+## <small>14.0.10 (2023-10-12)</small>
+
+* [bitnami/mongodb] Release 14.0.10 (#20156) ([794e3e5](https://github.com/bitnami/charts/commit/794e3e5d448726fb0a962b576e5743e781b16cc0)), closes [#20156](https://github.com/bitnami/charts/issues/20156)
+
+## <small>14.0.9 (2023-10-10)</small>
+
+* [bitnami/mongodb] Release 14.0.9 (#19960) ([fd0ac02](https://github.com/bitnami/charts/commit/fd0ac028e97d37e275101d81a8151a3c8c80ede5)), closes [#19960](https://github.com/bitnami/charts/issues/19960)
+
+## <small>14.0.8 (2023-10-09)</small>
+
+* [bitnami/mongodb] Release 14.0.8 (#19923) ([76a8524](https://github.com/bitnami/charts/commit/76a85248a29506ea2ef6c3b8a1f32997fa908726)), closes [#19923](https://github.com/bitnami/charts/issues/19923)
+
+## <small>14.0.7 (2023-10-09)</small>
+
+* [bitnami/mongodb] Release 14.0.7 (#19869) ([1c25080](https://github.com/bitnami/charts/commit/1c250803014d66946d0bea861dd717fd86422c85)), closes [#19869](https://github.com/bitnami/charts/issues/19869)
+
+## <small>14.0.6 (2023-10-09)</small>
+
+* [bitnami/*] Update Helm charts prerequisites (#19745) ([eb755dd](https://github.com/bitnami/charts/commit/eb755dd36a4dd3cf6635be8e0598f9a7f4c4a554)), closes [#19745](https://github.com/bitnami/charts/issues/19745)
+* [bitnami/mongodb] Release 14.0.6 (#19858) ([58adca7](https://github.com/bitnami/charts/commit/58adca7a1b37003260c1df7ff006f486783d3cc1)), closes [#19858](https://github.com/bitnami/charts/issues/19858)
+
+## <small>14.0.5 (2023-10-05)</small>
+
+* [bitnami/mongodb] support backups for standalone TLS-enabled instances (#19241) ([63e8c98](https://github.com/bitnami/charts/commit/63e8c9814fbc83dd767066d56ac2034ab57aeb9f)), closes [#19241](https://github.com/bitnami/charts/issues/19241)
+
+## <small>14.0.4 (2023-09-30)</small>
+
+* [bitnami/mongodb] Release 14.0.4 (#19660) ([809d65d](https://github.com/bitnami/charts/commit/809d65dba33be776aae27c62b365e01cdef42182)), closes [#19660](https://github.com/bitnami/charts/issues/19660)
+
+## <small>14.0.3 (2023-09-29)</small>
+
+* [bitnami/mongodb] Use common capabilities for PSP (#19633) ([78f103c](https://github.com/bitnami/charts/commit/78f103c4297c481b6baa14113f375455d5a5c353)), closes [#19633](https://github.com/bitnami/charts/issues/19633)
+
+## <small>14.0.2 (2023-09-27)</small>
+
+* [bitnami/mongodb] Release 14.0.2 (#19576) ([f731aa0](https://github.com/bitnami/charts/commit/f731aa05670ca21225110804261563a85efe71fd)), closes [#19576](https://github.com/bitnami/charts/issues/19576)
+
+## <small>14.0.1 (2023-09-25)</small>
+
+* [bitnami/mongodb] Release 14.0.1 (#19500) ([9c8163f](https://github.com/bitnami/charts/commit/9c8163f83703c8d841dd9f491c5fd9c7775c0cf1)), closes [#19500](https://github.com/bitnami/charts/issues/19500)
+
+## 14.0.0 (2023-09-22)
+
+* [bitnami/mongodb] Release 14.0.0 (#19470) ([2587a91](https://github.com/bitnami/charts/commit/2587a913f1f8ad325870d94673f87ecaf1781098)), closes [#19470](https://github.com/bitnami/charts/issues/19470)
+
+## <small>13.18.5 (2023-09-21)</small>
+
+* [bitnami/mongodb] Release 13.18.5 (#19460) ([5b4515c](https://github.com/bitnami/charts/commit/5b4515c834cca652da2282ad2c393ee8ed7289c5)), closes [#19460](https://github.com/bitnami/charts/issues/19460)
+* Revert "Autogenerate schema files (#19194)" (#19335) ([73d80be](https://github.com/bitnami/charts/commit/73d80be525c88fb4b8a54451a55acd506e337062)), closes [#19194](https://github.com/bitnami/charts/issues/19194) [#19335](https://github.com/bitnami/charts/issues/19335)
+
+## <small>13.18.4 (2023-09-14)</small>
+
+* [bitnami/mongodb] enable backup with auth: {enabled: false} (#19272) ([30b6b64](https://github.com/bitnami/charts/commit/30b6b6491581c52adc9535c366245c70524ee870)), closes [#19272](https://github.com/bitnami/charts/issues/19272)
+
+## <small>13.18.3 (2023-09-14)</small>
+
+* [bitnami/mongodb] Release 13.18.3 (#19271) ([de18b6a](https://github.com/bitnami/charts/commit/de18b6a340bc6657fec1c89262ff482eb30b6125)), closes [#19271](https://github.com/bitnami/charts/issues/19271)
+* Autogenerate schema files (#19194) ([a2c2090](https://github.com/bitnami/charts/commit/a2c2090b5ac97f47b745c8028c6452bf99739772)), closes [#19194](https://github.com/bitnami/charts/issues/19194)
+
+## <small>13.18.2 (2023-09-07)</small>
+
+* [bitnami/mongodb]: Use merge helper (#19082) ([d7ea4e9](https://github.com/bitnami/charts/commit/d7ea4e9f9b5e339b6f26ebe719573a1c974f0289)), closes [#19082](https://github.com/bitnami/charts/issues/19082)
+
+## <small>13.18.1 (2023-08-30)</small>
+
+* [bitnami/mongodb] Release 13.18.1 (#18952) ([7d5b2bf](https://github.com/bitnami/charts/commit/7d5b2bfa97af8f17631dda1e0a14722f23fd64c0)), closes [#18952](https://github.com/bitnami/charts/issues/18952)
+
+## 13.18.0 (2023-08-30)
+
+* [bitnami/mongodb] Add trivial backup option (#17816) ([323d4fb](https://github.com/bitnami/charts/commit/323d4fbba3b26b24678eda017b522dfe71db8451)), closes [#17816](https://github.com/bitnami/charts/issues/17816)
+
+## <small>13.17.2 (2023-08-28)</small>
+
+* [bitnami/mongodb] test: :white_check_mark: Add persistence tests (#18761) ([fc584e9](https://github.com/bitnami/charts/commit/fc584e95e850b9178f3ea93fcb2409a770e7e5cf)), closes [#18761](https://github.com/bitnami/charts/issues/18761)
+
+## <small>13.17.1 (2023-08-25)</small>
+
+* [bitnami/mongodb] Release 13.17.1 (#18863) ([85b3773](https://github.com/bitnami/charts/commit/85b3773c86a26253c7eecfbc0d924cb47b3d95f5)), closes [#18863](https://github.com/bitnami/charts/issues/18863)
+
+## 13.17.0 (2023-08-23)
+
+* [bitnami/mongodb] Support for customizing standard labels (#18350) ([3b23422](https://github.com/bitnami/charts/commit/3b2342203eb84f7e7ca1c21d2c9655747385860a)), closes [#18350](https://github.com/bitnami/charts/issues/18350)
+
+## <small>13.16.4 (2023-08-17)</small>
+
+* [bitnami/mongodb] Release 13.16.4 (#18556) ([d1c4f25](https://github.com/bitnami/charts/commit/d1c4f25b6b0d167b491174e5083a842afb8f6aaf)), closes [#18556](https://github.com/bitnami/charts/issues/18556)
+
+## <small>13.16.3 (2023-08-09)</small>
+
+* Remove duplicated hostAliases from dep/sts (#17831) ([ab48bc8](https://github.com/bitnami/charts/commit/ab48bc8af2da73acd9765651a0db4b286bf25c6b)), closes [#17831](https://github.com/bitnami/charts/issues/17831)
+
+## <small>13.16.2 (2023-07-31)</small>
+
+* [bitnami/mongodb] ServiceBinding secrets for custom users (#17463) ([8257309](https://github.com/bitnami/charts/commit/8257309d02bfbbc2c5352a9567de8a74d1a0c406)), closes [#17463](https://github.com/bitnami/charts/issues/17463)
+
+## <small>13.16.1 (2023-07-26)</small>
+
+* [bitnami/mongodb] Release 13.16.1 (#17929) ([b7bd19a](https://github.com/bitnami/charts/commit/b7bd19af6a1cd38a768f0cf3d56a070787496edd)), closes [#17929](https://github.com/bitnami/charts/issues/17929)
+
+## 13.16.0 (2023-07-18)
+
+* [bitnami/mongodb] Try to seed mongodb with pss-restricted (#17236) ([15d3dcb](https://github.com/bitnami/charts/commit/15d3dcbaa1fd342083d968ed7a0c5b5eaafd22a5)), closes [#17236](https://github.com/bitnami/charts/issues/17236)
+
+## <small>13.15.5 (2023-07-15)</small>
+
+* [bitnami/mongodb] Release 13.15.5 (#17700) ([48ead37](https://github.com/bitnami/charts/commit/48ead37cc70e965cc0fb05a38e04091db6854a35)), closes [#17700](https://github.com/bitnami/charts/issues/17700)
+
+## <small>13.15.4 (2023-07-01)</small>
+
+* [bitnami/mongodb] Release 13.15.4 (#17441) ([9f76ae9](https://github.com/bitnami/charts/commit/9f76ae9767f8a9265f48418344c3918505961470)), closes [#17441](https://github.com/bitnami/charts/issues/17441)
+* Add copyright header (#17300) ([da68be8](https://github.com/bitnami/charts/commit/da68be8e951225133c7dfb572d5101ca3d61c5ae)), closes [#17300](https://github.com/bitnami/charts/issues/17300)
+* Update charts readme (#17217) ([31b3c0a](https://github.com/bitnami/charts/commit/31b3c0afd968ff4429107e34101f7509e6a0e913)), closes [#17217](https://github.com/bitnami/charts/issues/17217)
+
+## <small>13.15.3 (2023-06-20)</small>
+
+* [bitnami/mongodb] Release 13.15.3 (#17229) ([e55ce93](https://github.com/bitnami/charts/commit/e55ce93d2e798dc9cb88983110bdc7a1c0d11208)), closes [#17229](https://github.com/bitnami/charts/issues/17229)
+
+## <small>13.15.2 (2023-06-19)</small>
+
+* [bitnami/*] Change copyright section in READMEs (#17006) ([ef986a1](https://github.com/bitnami/charts/commit/ef986a1605241102b3dcafe9fd8089e6fc1201ad)), closes [#17006](https://github.com/bitnami/charts/issues/17006)
+* [bitnami/several] Change copyright section in READMEs (#16989) ([5b6a5cf](https://github.com/bitnami/charts/commit/5b6a5cfb7625a751848a2e5cd796bd7278f406ca)), closes [#16989](https://github.com/bitnami/charts/issues/16989)
+* [MongoDB] Respecting the MONGODB_ROOT_USER environment variable (#17116) ([9561be7](https://github.com/bitnami/charts/commit/9561be73b8b8b7f92b858a07d3446c31186d292e)), closes [#17116](https://github.com/bitnami/charts/issues/17116)
+
+## <small>13.15.1 (2023-05-25)</small>
+
+* [bitnami/mongodb] Avoid hostname validation with TLS enabled (#16670) ([2a1621f](https://github.com/bitnami/charts/commit/2a1621fa460e426323667a86add0121b8785f043)), closes [#16670](https://github.com/bitnami/charts/issues/16670)
+
+## 13.15.0 (2023-05-24)
+
+* [bitnami/mongodb] Support specifying external master host to bootstra… (#16853) ([358ca64](https://github.com/bitnami/charts/commit/358ca646a20a7af6bd892802dd4caeb186cfdc46)), closes [#16853](https://github.com/bitnami/charts/issues/16853)
+
+## <small>13.14.2 (2023-05-24)</small>
+
+* Add apiVersion and kind in volumeClaimTemplates (#16877) ([5193124](https://github.com/bitnami/charts/commit/5193124c548339aed506b17496eb27c0acf7fe27)), closes [#16877](https://github.com/bitnami/charts/issues/16877)
+
+## <small>13.14.1 (2023-05-22)</small>
+
+* [bitnami/mongodb] Ensuring the .Values.auth.rootUser is used everywhere (#16849) ([99ebd2b](https://github.com/bitnami/charts/commit/99ebd2b762966c3fc2cdc0dfa8dff18f8e5b6854)), closes [#16849](https://github.com/bitnami/charts/issues/16849)
+
+## 13.14.0 (2023-05-22)
+
+* [bitnami/mongodb] Adding tls.pemChainIncluded value to support wider range of TLS certificates (#167 ([5c2b7b9](https://github.com/bitnami/charts/commit/5c2b7b9a6fbeba6859d08fb7ea7bd368e799a0b4)), closes [#16731](https://github.com/bitnami/charts/issues/16731)
+
+## <small>13.13.1 (2023-05-21)</small>
+
+* [bitnami/mongodb] Release 13.13.1 (#16812) ([a013246](https://github.com/bitnami/charts/commit/a013246952c25b6104a392ceea59c20916bb54f4)), closes [#16812](https://github.com/bitnami/charts/issues/16812)
+
+## 13.13.0 (2023-05-17)
+
+* Adding extra volume mounts to the metrics container (#16698) ([4b993f5](https://github.com/bitnami/charts/commit/4b993f5045a64732a78095ab4a4fe5ba505471b3)), closes [#16698](https://github.com/bitnami/charts/issues/16698)
+
+## <small>13.12.1 (2023-05-12)</small>
+
+* [bitnami/mongodb] Release 13.12.1 (#16624) ([9d8d279](https://github.com/bitnami/charts/commit/9d8d2798284c4fd13c993bcf896805b874f69815)), closes [#16624](https://github.com/bitnami/charts/issues/16624)
+
+## 13.12.0 (2023-05-12)
+
+* [bitnami/mongodb] Handle mongodb-exporter arguments with chart values (#16398) ([eb37a81](https://github.com/bitnami/charts/commit/eb37a81b05bf1550dd504ced8f2cbb2e9c5359ea)), closes [#16398](https://github.com/bitnami/charts/issues/16398)
+* Add wording for enterprise page (#16560) ([8f22774](https://github.com/bitnami/charts/commit/8f2277440b976d52785ba9149762ad8620a73d1f)), closes [#16560](https://github.com/bitnami/charts/issues/16560)
+
+## 13.11.0 (2023-05-09)
+
+* [bitnami/several] Adapt Chart.yaml to set desired OCI annotations (#16546) ([fc9b18f](https://github.com/bitnami/charts/commit/fc9b18f2e98805d4df629acbcde696f44f973344)), closes [#16546](https://github.com/bitnami/charts/issues/16546)
+
+## <small>13.10.3 (2023-05-09)</small>
+
+* [bitnami/mongodb] Release 13.10.3 (#16476) ([0ed1163](https://github.com/bitnami/charts/commit/0ed116385f9784b79908a3f90001fd07b4743b69)), closes [#16476](https://github.com/bitnami/charts/issues/16476)
+
+## <small>13.10.2 (2023-05-01)</small>
+
+* [bitnami/mongodb] Release 13.10.2 (#16315) ([cdb385d](https://github.com/bitnami/charts/commit/cdb385d5cd5024b4dc0747c349bfd9549b4c483c)), closes [#16315](https://github.com/bitnami/charts/issues/16315)
+
+## <small>13.10.1 (2023-04-27)</small>
+
+* [bitnami/mongodb] Use username as key in the Service Binding secret (#16251) ([c678dc6](https://github.com/bitnami/charts/commit/c678dc6eb98263312c57f12b67c487a1f364ef4d)), closes [#16251](https://github.com/bitnami/charts/issues/16251)
+
+## 13.10.0 (2023-04-20)
+
+* [bitnami/*] Make Helm charts 100% OCI (#15998) ([8841510](https://github.com/bitnami/charts/commit/884151035efcbf2e1b3206e7def85511073fb57d)), closes [#15998](https://github.com/bitnami/charts/issues/15998)
+
+## <small>13.9.4 (2023-04-01)</small>
+
+* [bitnami/mongodb] Release 13.9.4 (#15908) ([5b63b06](https://github.com/bitnami/charts/commit/5b63b064599b3fb38963adb33c3956947d8c7f54)), closes [#15908](https://github.com/bitnami/charts/issues/15908)
+
+## <small>13.9.3 (2023-03-24)</small>
+
+* [bitnami/mongodb] Change static DNS entry to clusterDomain variable (#15682) ([e19b3e7](https://github.com/bitnami/charts/commit/e19b3e7729e8bb64976678ca8eabb7c6349c19d2)), closes [#15682](https://github.com/bitnami/charts/issues/15682)
+
+## <small>13.9.2 (2023-03-20)</small>
+
+* [bitnami/mongodb] Release 13.9.2 (#15631) ([1b595d8](https://github.com/bitnami/charts/commit/1b595d8c95085fd820caa59846de9d35cc4deb85)), closes [#15631](https://github.com/bitnami/charts/issues/15631)
+
+## <small>13.9.1 (2023-03-13)</small>
+
+* [bitnami/mongodb] Release 13.9.1 (#15484) ([628590f](https://github.com/bitnami/charts/commit/628590fdb92e92b9dee42d1e60b144be021323be)), closes [#15484](https://github.com/bitnami/charts/issues/15484)
+
+## 13.9.0 (2023-03-10)
+
+* [bitnami/mongodb] Add support for service.headless.annotations (#15435) ([d511822](https://github.com/bitnami/charts/commit/d511822ab3e5486b4d995aa410d313dfb65458f5)), closes [#15435](https://github.com/bitnami/charts/issues/15435)
+
+## <small>13.8.3 (2023-03-08)</small>
+
+* [bitnami/charts] Apply linter to README files (#15357) ([0e29e60](https://github.com/bitnami/charts/commit/0e29e600d3adc8b1b46e506eccb3decfab3b4e63)), closes [#15357](https://github.com/bitnami/charts/issues/15357)
+* [bitnami/mongodb] Fix chart upgrade when auth.enable=false (#15387) ([782da45](https://github.com/bitnami/charts/commit/782da457b2c73f23441e3f05a5e06944677151bc)), closes [#15387](https://github.com/bitnami/charts/issues/15387)
+* fix(mongodb): fixing doc comment (#15090) ([cfe5b42](https://github.com/bitnami/charts/commit/cfe5b42dba8e0224c98e910e021ec807e009d2ff)), closes [#15090](https://github.com/bitnami/charts/issues/15090)
+
+## <small>13.8.2 (2023-03-01)</small>
+
+* [bitnami/mongodb] Release 13.8.2 (#15216) ([8a916c3](https://github.com/bitnami/charts/commit/8a916c3a8e2bb98d127c0534d896ec1784cd6f1e)), closes [#15216](https://github.com/bitnami/charts/issues/15216)
+
+## <small>13.8.1 (2023-02-22)</small>
+
+* [bitnami/mongodb] fix variable assignment preventing certificate generation (#15079) ([95873be](https://github.com/bitnami/charts/commit/95873becd9afd7cbb346948c12e9f32b0477002c)), closes [#15079](https://github.com/bitnami/charts/issues/15079)
+
+## 13.8.0 (2023-02-22)
+
+* [bitnami/mongodb] Added `allocateLoadBalancerNodePorts` option for LoadBalancer (#14919) ([d103602](https://github.com/bitnami/charts/commit/d103602c85d2979d031df94539b1fcbe667db211)), closes [#14919](https://github.com/bitnami/charts/issues/14919)
+
+## 13.7.0 (2023-02-21)
+
+* [bitnami/mongodb] feat: :sparkles: Add ServiceBinding-compatible secrets (#14910) ([6bc7961](https://github.com/bitnami/charts/commit/6bc7961f5027bb17a949c69c0e16bdd686a13745)), closes [#14910](https://github.com/bitnami/charts/issues/14910) [#14887](https://github.com/bitnami/charts/issues/14887)
+
+## <small>13.6.8 (2023-02-20)</small>
+
+* [bitnami/*] Fix markdown linter issues (#14874) ([a51e0e8](https://github.com/bitnami/charts/commit/a51e0e8d35495b907f3e70dd2f8e7c3bcbf4166a)), closes [#14874](https://github.com/bitnami/charts/issues/14874)
+* [bitnami/*] Fix markdown linter issues 2 (#14890) ([aa96572](https://github.com/bitnami/charts/commit/aa9657237ee8df4a46db0d7fdf8a23230dd6902a)), closes [#14890](https://github.com/bitnami/charts/issues/14890)
+* [bitnami/mongodb] Don't regenerate self-signed certs on upgrade (#14642) ([d481e84](https://github.com/bitnami/charts/commit/d481e84e895daaadc936c99465e7f19787f0054f)), closes [#14642](https://github.com/bitnami/charts/issues/14642)
+* [bitnami/mongodb] Release 13.6.8 (#15005) ([f7ea17f](https://github.com/bitnami/charts/commit/f7ea17f77274fb8592646c2f0233a6bf462e8361)), closes [#15005](https://github.com/bitnami/charts/issues/15005)
+
+## <small>13.6.7 (2023-01-31)</small>
+
+* [bitnami/*] Change copyright date (#14682) ([add4ec7](https://github.com/bitnami/charts/commit/add4ec701108ac36ed4de2dffbdf407a0d091067)), closes [#14682](https://github.com/bitnami/charts/issues/14682)
+* [bitnami/mongodb] Change endpoint for metrics liveness and readiness probes (#14573) ([68039b1](https://github.com/bitnami/charts/commit/68039b19040391c445c8b4112a9b9514a148c89b)), closes [#14573](https://github.com/bitnami/charts/issues/14573) [bitnami/charts#14466](https://github.com/bitnami/charts/issues/14466)
+
+## <small>13.6.6 (2023-01-25)</small>
+
+* [bitnami/mongodb] Increase timeout for probes (#14539) ([f64c2cc](https://github.com/bitnami/charts/commit/f64c2ccfb102046874226b909dd4ae620e08f10e)), closes [#14539](https://github.com/bitnami/charts/issues/14539)
+
+## <small>13.6.5 (2023-01-25)</small>
+
+* [bitnami/*] Unify READMEs (#14472) ([2064fb8](https://github.com/bitnami/charts/commit/2064fb8dcc78a845cdede8211af8c3cc52551161)), closes [#14472](https://github.com/bitnami/charts/issues/14472)
+* [bitnami/mongodb] Fix service.nameOverride and TLS certificate generation in standalone mode (#14424 ([aa4d948](https://github.com/bitnami/charts/commit/aa4d9484167515142b28ec1d3ede5a63a51f3f6c)), closes [#14424](https://github.com/bitnami/charts/issues/14424)
+
+## <small>13.6.4 (2023-01-19)</small>
+
+* [bitnami/*] Change licenses annotation format (#14377) ([0ab7608](https://github.com/bitnami/charts/commit/0ab760862c660fcc78cffadf8e1d8cdd70881473)), closes [#14377](https://github.com/bitnami/charts/issues/14377)
+* [bitnami/mongodb] Release 13.6.4 (#14441) ([dffa595](https://github.com/bitnami/charts/commit/dffa595836682ba9fc9ad8daec513d4903cf7d2b)), closes [#14441](https://github.com/bitnami/charts/issues/14441)
+
+## <small>13.6.3 (2023-01-14)</small>
+
+* [bitnami/*] Add license annotation and remove obsolete engine parameter (#14293) ([da2a794](https://github.com/bitnami/charts/commit/da2a7943bae95b6e9b5b4ed972c15e990b69fdb0)), closes [#14293](https://github.com/bitnami/charts/issues/14293)
+* [bitnami/mongodb] Release 13.6.3 (#14355) ([5a71013](https://github.com/bitnami/charts/commit/5a71013c500b5dd87cac5691f1a7e864569220e4)), closes [#14355](https://github.com/bitnami/charts/issues/14355)
+
+## <small>13.6.2 (2022-12-21)</small>
+
+* [bitnami/mongodb] Set dynamic port on mongodb-exporter uri (#14041) ([3c04e9a](https://github.com/bitnami/charts/commit/3c04e9a8adb5d45b76860894b5f66533e1986cff)), closes [#14041](https://github.com/bitnami/charts/issues/14041)
+
+## <small>13.6.1 (2022-12-15)</small>
+
+* [bitnami/mongodb] Release 13.6.1 (#13967) ([03ad0ec](https://github.com/bitnami/charts/commit/03ad0ec16c11ade4aa59f6d4fa01a003ea50009b)), closes [#13967](https://github.com/bitnami/charts/issues/13967)
+
+## 13.6.0 (2022-12-07)
+
+* [bitnami/mongodb] topology override option (#13694) ([c5df4d6](https://github.com/bitnami/charts/commit/c5df4d6b03fec1f6027d2586301a62ddf06c4f64)), closes [#13694](https://github.com/bitnami/charts/issues/13694)
+
+## 13.5.0 (2022-11-21)
+
+* [bitnami/mongodb] Add support for envvars in tls.extraDnsNames (#13558) ([59a316b](https://github.com/bitnami/charts/commit/59a316bce3d3bb4f9366183912dbb9dab518c376)), closes [#13558](https://github.com/bitnami/charts/issues/13558)
+
+## <small>13.4.4 (2022-11-15)</small>
+
+* [bitnami/mongodb] stop overwriting custom env variable MONGODB_ADVERTISED_PORT_NUMBER (#13276) ([ded7c3d](https://github.com/bitnami/charts/commit/ded7c3d42616915546ad25e639645f608e555e08)), closes [#13276](https://github.com/bitnami/charts/issues/13276)
+
+## <small>13.4.3 (2022-11-15)</small>
+
+* [bitnami/mongodb] Release 13.4.3 (#13518) ([fb9307b](https://github.com/bitnami/charts/commit/fb9307bb5862791737983973f3a7edf681f1042f)), closes [#13518](https://github.com/bitnami/charts/issues/13518)
+
+## <small>13.4.2 (2022-11-14)</small>
+
+* [bitnami/mongodb] Add commonLabels also to pods: replicaset, arbiter, hidden (#13501) ([6b3cca2](https://github.com/bitnami/charts/commit/6b3cca2863fed3eee51797a7e6b9165246e818b0)), closes [#13501](https://github.com/bitnami/charts/issues/13501)
+
+## <small>13.4.1 (2022-11-03)</small>
+
+* [bitnami/mongodb] Add loadBalancerClass options - fix typo (#13331) ([b3acaf0](https://github.com/bitnami/charts/commit/b3acaf02fd97acd89ede4dbc7e848046317d6e9d)), closes [#13331](https://github.com/bitnami/charts/issues/13331)
+
+## 13.4.0 (2022-11-02)
+
+* [bitnami/mongodb] Update common-scripts-cm.yaml (#13131) ([bcecde7](https://github.com/bitnami/charts/commit/bcecde74ff9740da875270dbbbc8fc1bc20f8f7f)), closes [#13131](https://github.com/bitnami/charts/issues/13131)
+
+## <small>13.3.1 (2022-10-30)</small>
+
+* [bitnami/mongodb] Release 13.3.1 (#13253) ([9f9f9ab](https://github.com/bitnami/charts/commit/9f9f9ab52aa8b0521e0808e71b5e4e32aa6041a1)), closes [#13253](https://github.com/bitnami/charts/issues/13253)
+
+## 13.3.0 (2022-10-24)
+
+* [bitnami/mongodb] Mongodb custom certs (#11239) ([c8e80b7](https://github.com/bitnami/charts/commit/c8e80b703827ec9b9a3b437e30c8aae50d0626b8)), closes [#11239](https://github.com/bitnami/charts/issues/11239)
+
+## 13.2.0 (2022-10-24)
+
+* [bitnami/*] Use new default branch name in links (#12943) ([a529e02](https://github.com/bitnami/charts/commit/a529e02597d49d944eba1eb0f190713293247176)), closes [#12943](https://github.com/bitnami/charts/issues/12943)
+* [bitnami/mongodb] Add loadBalancerClass options (#13092) ([6d9c603](https://github.com/bitnami/charts/commit/6d9c603c703c018edbaa00cb5988778087b16616)), closes [#13092](https://github.com/bitnami/charts/issues/13092)
+* Generic README instructions related to the repo (#12792) ([3cf6b10](https://github.com/bitnami/charts/commit/3cf6b10e10e60df4b3e191d6b99aa99a9f597755)), closes [#12792](https://github.com/bitnami/charts/issues/12792)
+
+## <small>13.1.7 (2022-09-30)</small>
+
+* [bitnami/mongodb] Release 13.1.7 (#12765) ([d346d01](https://github.com/bitnami/charts/commit/d346d01e92ccf7d760a4d65549345cf3ad8cbb20)), closes [#12765](https://github.com/bitnami/charts/issues/12765)
+
+## <small>13.1.6 (2022-09-29)</small>
+
+* [bitnami/mongodb] Release 13.1.6 (#12734) ([4e4907f](https://github.com/bitnami/charts/commit/4e4907f5fb6d660dd4db41e95041a662effeedde)), closes [#12734](https://github.com/bitnami/charts/issues/12734)
+
+## <small>13.1.5 (2022-09-20)</small>
+
+* [bitnami/mongodb] Use custom probes if given (#12528) ([e4eab8c](https://github.com/bitnami/charts/commit/e4eab8c2489eada73a106531283b5bfc49f88712)), closes [#12528](https://github.com/bitnami/charts/issues/12528) [#12354](https://github.com/bitnami/charts/issues/12354)
+
+## <small>13.1.4 (2022-09-18)</small>
+
+* [bitnami/mongodb] Release 13.1.4 (#12475) ([239e06b](https://github.com/bitnami/charts/commit/239e06b06315014c9342ca2c45e071bfd4f5af20)), closes [#12475](https://github.com/bitnami/charts/issues/12475)
+
+## <small>13.1.3 (2022-09-14)</small>
+
+* issue 12411 (#12415) ([5d31922](https://github.com/bitnami/charts/commit/5d3192203cd191479671db4f6568fd7d5c4bd388)), closes [#12415](https://github.com/bitnami/charts/issues/12415)
+
+## <small>13.1.2 (2022-08-26)</small>
+
+* [bitnami/mongodb] Fix probes when url connection contains 'true' (#12133) ([39df1e7](https://github.com/bitnami/charts/commit/39df1e709fea983e95c87876d8dd2af165cdfb1e)), closes [#12133](https://github.com/bitnami/charts/issues/12133)
+
+## <small>13.1.1 (2022-08-23)</small>
+
+* [bitnami/mongodb] Update Chart.lock (#12043) ([2c3548d](https://github.com/bitnami/charts/commit/2c3548d921f82da695160c09891d6f6241ac6765)), closes [#12043](https://github.com/bitnami/charts/issues/12043)
+
+## 13.1.0 (2022-08-22)
+
+* [bitnami/mongodb] Add support for image digest apart from tag (#11914) ([fa34484](https://github.com/bitnami/charts/commit/fa3448449254efa052da1f7093549a3540cfbf90)), closes [#11914](https://github.com/bitnami/charts/issues/11914)
+
+## <small>13.0.2 (2022-08-19)</small>
+
+* [bitnami/mongodb] Release 13.0.2 (#11861) ([5532749](https://github.com/bitnami/charts/commit/5532749be271089b45366052a78342735b864081)), closes [#11861](https://github.com/bitnami/charts/issues/11861)
+
+## <small>13.0.1 (2022-08-16)</small>
+
+* [bitnami/mongodb] Release 13.0.1 (#11776) ([1a6248b](https://github.com/bitnami/charts/commit/1a6248b9368b6b1dccd96d9baa1f4657a1a17b54)), closes [#11776](https://github.com/bitnami/charts/issues/11776)
+
+## 13.0.0 (2022-08-04)
+
+* [bitnami/mongodb] Release 13.0.0 (#11586) ([ac90a7b](https://github.com/bitnami/charts/commit/ac90a7b2d8f8f86091ad1293f0f09c09fccbced5)), closes [#11586](https://github.com/bitnami/charts/issues/11586)
+
+## <small>12.1.31 (2022-08-03)</small>
+
+* [bitnami/mongodb] Release 12.1.31 (#11538) ([5c35513](https://github.com/bitnami/charts/commit/5c35513abddcf4bcab9b9b071f2fc9f905f78a28)), closes [#11538](https://github.com/bitnami/charts/issues/11538)
+
+## <small>12.1.30 (2022-07-28)</small>
+
+* Change metrics endpoint for liveness and readiness probes (#11398) ([7a73c44](https://github.com/bitnami/charts/commit/7a73c441ad9560af8601c397085ff0332a89a9c2)), closes [#11398](https://github.com/bitnami/charts/issues/11398)
+
+## <small>12.1.29 (2022-07-27)</small>
+
+* [bitnami/mongodb] Release 12.1.29 (#11393) ([fb5a4ce](https://github.com/bitnami/charts/commit/fb5a4ce87625879a12d8e2f7a0d46c08060ef756)), closes [#11393](https://github.com/bitnami/charts/issues/11393)
+
+## <small>12.1.28 (2022-07-27)</small>
+
+* [bitnami/*] Update URLs to point to the new bitnami/containers monorepo (#11352) ([d665af0](https://github.com/bitnami/charts/commit/d665af0c708846192d8d5fb2f5f9ea65dd464ab0)), closes [#11352](https://github.com/bitnami/charts/issues/11352)
+* [bitnami/mongodb] Release 12.1.28 (#11362) ([f527284](https://github.com/bitnami/charts/commit/f5272840eaa0c6693978595ad44bdba95490c5db)), closes [#11362](https://github.com/bitnami/charts/issues/11362)
+
+## <small>12.1.27 (2022-07-19)</small>
+
+* [bitnami/mongodb] Release 12.1.27 (#11252) ([b451ec1](https://github.com/bitnami/charts/commit/b451ec12def686142582e3bc4e03dea003803de7)), closes [#11252](https://github.com/bitnami/charts/issues/11252)
+
+## <small>12.1.26 (2022-07-12)</small>
+
+* [bitnami/mongodb] Fix commonAnnotations when working with external access svc (#11128) ([fa8694f](https://github.com/bitnami/charts/commit/fa8694f8aff028b3c635474e5b6fd64c58b05f0f)), closes [#11128](https://github.com/bitnami/charts/issues/11128)
+
+## <small>12.1.25 (2022-07-09)</small>
+
+* [bitnami/mongodb] Release 12.1.25 (#11104) ([b8e2d20](https://github.com/bitnami/charts/commit/b8e2d2026a624413d58917ea6780571a933e8162)), closes [#11104](https://github.com/bitnami/charts/issues/11104)
+
+## <small>12.1.24 (2022-07-05)</small>
+
+* [bitnami/mongodb] Release 12.1.24 (#11034) ([8a34239](https://github.com/bitnami/charts/commit/8a34239e7a76770868ddddf7b10bf91900cd0924)), closes [#11034](https://github.com/bitnami/charts/issues/11034)
+
+## <small>12.1.23 (2022-07-04)</small>
+
+* [bitnami/mongodb] Release 12.1.23 (#11017) ([416904a](https://github.com/bitnami/charts/commit/416904a57e9e86a259c0c1e5dedfabc8cb23e306)), closes [#11017](https://github.com/bitnami/charts/issues/11017)
+
+## <small>12.1.22 (2022-06-30)</small>
+
+* [bitnami/mongodb] Release 12.1.22 (#10966) ([d707550](https://github.com/bitnami/charts/commit/d70755028cf2c85847b8524b77835172849796d9)), closes [#10966](https://github.com/bitnami/charts/issues/10966)
+
+## <small>12.1.21 (2022-06-27)</small>
+
+* [bitnami/mongodb] Readiness Probe bug fix (#10865) ([b34a09f](https://github.com/bitnami/charts/commit/b34a09f62f70457a950952e5ee08c3e92b0a4acb)), closes [#10865](https://github.com/bitnami/charts/issues/10865)
+
+## <small>12.1.20 (2022-06-15)</small>
+
+* [bitnami/mongodb] Release 12.1.20 (#10768) ([9e2d3cc](https://github.com/bitnami/charts/commit/9e2d3cc39d1f4bf5b4c930af47822eecd789f178)), closes [#10768](https://github.com/bitnami/charts/issues/10768)
+
+## <small>12.1.19 (2022-06-08)</small>
+
+* [bitnami/mongodb] Release 12.1.19 (#10660) ([093d55f](https://github.com/bitnami/charts/commit/093d55f1ec11138857ec1b3aa32f7e4d19a32c1d)), closes [#10660](https://github.com/bitnami/charts/issues/10660)
+
+## <small>12.1.18 (2022-06-08)</small>
+
+* [bitnami/*] Replace Kubeapps URL in READMEs (and kubeapps Chart.yaml) and remove BKPR references (#1 ([c6a7914](https://github.com/bitnami/charts/commit/c6a7914361e5aea6016fb45bf4d621edfd111d32)), closes [#10600](https://github.com/bitnami/charts/issues/10600)
+* [bitnami/mongodb] - Fixing mongdb certificate generation issue when external access is enabled - #10 ([99119c0](https://github.com/bitnami/charts/commit/99119c04fc7642858bd3803517b01c732758822b)), closes [#10262](https://github.com/bitnami/charts/issues/10262) [#10513](https://github.com/bitnami/charts/issues/10513) [#10262](https://github.com/bitnami/charts/issues/10262) [bitnami#10262](https://github.com/bitnami/issues/10262) [bitnami#10262](https://github.com/bitnami/issues/10262)
+
+## <small>12.1.17 (2022-06-06)</small>
+
+* [bitnami/mongodb] Fix wrongly named mongodb secret key 'mongodb-passwords' (#10546) ([56a2b5d](https://github.com/bitnami/charts/commit/56a2b5dc53143a6ead1878963dcb330251547628)), closes [#10546](https://github.com/bitnami/charts/issues/10546)
+
+## <small>12.1.16 (2022-06-01)</small>
+
+* [bitnami/several] Replace maintainers email by url (#10523) ([ff3cf61](https://github.com/bitnami/charts/commit/ff3cf617a1680509b0f3855d17c4ccff7b29a0ff)), closes [#10523](https://github.com/bitnami/charts/issues/10523)
+
+## <small>12.1.15 (2022-05-30)</small>
+
+* [bitnami/several] Replace base64 --decode with base64 -d (#10495) ([099286a](https://github.com/bitnami/charts/commit/099286ae7a87784cf809df0b64ab24f7ff0144c8)), closes [#10495](https://github.com/bitnami/charts/issues/10495)
+
+## <small>12.1.14 (2022-05-30)</small>
+
+*   [bitnami/mongodb] Replicaset environment variable typo (#10465) ([ba7ad19](https://github.com/bitnami/charts/commit/ba7ad1926045a783957e37b35416edd7626fc62f)), closes [#10465](https://github.com/bitnami/charts/issues/10465)
+
+## <small>12.1.13 (2022-05-27)</small>
+
+* [bitnami/mongodb] enabled mdb all collectors (#10445) ([c7a8543](https://github.com/bitnami/charts/commit/c7a854308cb0a53ad0b73b96bf57a963ebb9c3ca)), closes [#10445](https://github.com/bitnami/charts/issues/10445)
+
+## <small>12.1.12 (2022-05-26)</small>
+
+* [bitnami/mongodb] Release 12.1.12 updating components versions ([bb711e3](https://github.com/bitnami/charts/commit/bb711e34ca5685e4b5723bb3d85adb04e3ac2cd0))
+
+## <small>12.1.11 (2022-05-23)</small>
+
+* Fixes #10300 Signed-off-by: Jonathan Weber <mail@jonathanweber.de> (#10302) ([627b9c4](https://github.com/bitnami/charts/commit/627b9c4240f48c8cd84097d8d4fa8410c35cbbe6)), closes [#10300](https://github.com/bitnami/charts/issues/10300) [#10302](https://github.com/bitnami/charts/issues/10302)
+
+## <small>12.1.10 (2022-05-21)</small>
+
+* [bitnami/mongodb] Release 12.1.10 updating components versions ([3dd8685](https://github.com/bitnami/charts/commit/3dd8685ebb935dde27fa7746bab4fb343c52cdae))
+
+## <small>12.1.9 (2022-05-20)</small>
+
+* [bitnami/mongodb] Use deepCopy in "common.secrets.passwords.manage" call  (#10319) ([a3ccd0e](https://github.com/bitnami/charts/commit/a3ccd0eef75ed55f94904f2113d4128662ffb546)), closes [#10319](https://github.com/bitnami/charts/issues/10319)
+
+## <small>12.1.8 (2022-05-19)</small>
+
+* [bitnami/mongodb] Release 12.1.8 updating components versions ([a836a36](https://github.com/bitnami/charts/commit/a836a36a33572a41ef4e54287ad87b251c84ba8d))
+
+## <small>12.1.7 (2022-05-18)</small>
+
+* [bitnami/mongodb] remove unnecessary merge call (#10308) ([a40fee8](https://github.com/bitnami/charts/commit/a40fee8dd4059dfaedfcb0796e51127f99967008)), closes [#10308](https://github.com/bitnami/charts/issues/10308)
+
+## <small>12.1.6 (2022-05-18)</small>
+
+* [bitnami/mongodb] Release 12.1.6 updating components versions ([ea71483](https://github.com/bitnami/charts/commit/ea71483c960a8823c539f92085dfd4bded021668))
+
+## <small>12.1.5 (2022-05-13)</small>
+
+* [bitnami/mongodb] Fix incorrect SAN field for MongoDB TLS certs (#10220) ([187af92](https://github.com/bitnami/charts/commit/187af92cedd0f1e92beabb4abf624113c3077ae3)), closes [#10220](https://github.com/bitnami/charts/issues/10220)
+
+## <small>12.1.4 (2022-05-13)</small>
+
+* [bitnami/*] Remove old 'ci' files (#10171) ([5df30c4](https://github.com/bitnami/charts/commit/5df30c44dbd1812da8786579ce4a94917d46a6ad)), closes [#10171](https://github.com/bitnami/charts/issues/10171)
+* [bitnami/*] Unify k8s directives separators (#10185) ([2650214](https://github.com/bitnami/charts/commit/26502141d146ca3bdfb3bf744fcdec8ca5cece44)), closes [#10185](https://github.com/bitnami/charts/issues/10185)
+
+## <small>12.1.3 (2022-05-11)</small>
+
+* [bitnami/mongodb] Add missing namespace metadata (#10141) ([dcda6af](https://github.com/bitnami/charts/commit/dcda6af36bf65b1e8c4f48c4b9fe5e6385bbe82c)), closes [#10141](https://github.com/bitnami/charts/issues/10141)
+
+## <small>12.1.2 (2022-05-10)</small>
+
+* [bitnami/mongodb] Fix metrics containerPort when using standalone (#10084) ([cf8deb1](https://github.com/bitnami/charts/commit/cf8deb12a1cbc50bd3faaafee77c5912ab951cbd)), closes [#10084](https://github.com/bitnami/charts/issues/10084)
+
+## <small>12.1.1 (2022-05-09)</small>
+
+* [bitnami/mongodb] Remove unnecessary logic around externalAccess.service.nodePorts (#10079) ([36749d7](https://github.com/bitnami/charts/commit/36749d7f3213c77440d5c5c06146b077aca36f33)), closes [#10079](https://github.com/bitnami/charts/issues/10079)
+
+## 12.1.0 (2022-05-05)
+
+* [bitnami/mongodb] Allow custom command and args in the metrics container (#10030) ([bdefd11](https://github.com/bitnami/charts/commit/bdefd1129a288f23d6d53ba8b33fc2b72943373b)), closes [#10030](https://github.com/bitnami/charts/issues/10030)
+
+## <small>12.0.2 (2022-05-03)</small>
+
+* bitnami/mongodb adding generate-tls-certs resource block (#10011) ([2712205](https://github.com/bitnami/charts/commit/27122053639af7d3320278db47d8968df6aa68c2)), closes [#10011](https://github.com/bitnami/charts/issues/10011)
+
+## <small>12.0.1 (2022-04-29)</small>
+
+* [bitnami/mongodb] Release 12.0.1 updating components versions ([6a8c5a5](https://github.com/bitnami/charts/commit/6a8c5a54b1c2517a06a38bec790fae38b3a87f50))
+
+## 12.0.0 (2022-04-29)
+
+* [bitnami/mongodb] Standarize mongodb (#9648) ([fdd8b69](https://github.com/bitnami/charts/commit/fdd8b691290c8f039d192a2b7c6f87706e7c2390)), closes [#9648](https://github.com/bitnami/charts/issues/9648)
+
+## 11.2.0 (2022-04-26)
+
+* [bitnami/mongodb] feat: :wastebasket: Remove mongo references (#9916) ([f126710](https://github.com/bitnami/charts/commit/f1267104df0dd5900be7629c2ad6dbf90655fbc9)), closes [#9916](https://github.com/bitnami/charts/issues/9916)
+
+## <small>11.1.10 (2022-04-22)</small>
+
+* [bitnami/mongodb] Fix Prometheus Rules (#9870) ([534be04](https://github.com/bitnami/charts/commit/534be04d03e115315d55ad53a548416decadb2d1)), closes [#9870](https://github.com/bitnami/charts/issues/9870)
+* [bitnami/mongodb] Release 11.1.10 updating components versions ([8fec889](https://github.com/bitnami/charts/commit/8fec88993c56557f04859fb628da252136b8a6b2))
+
+## <small>11.1.9 (2022-04-21)</small>
+
+* [bitnami/mongodb] Release 11.1.9 updating components versions ([355616f](https://github.com/bitnami/charts/commit/355616f383a1caa8907d5ee300688c67491b2e97))
+
+## <small>11.1.8 (2022-04-20)</small>
+
+* [bitnami/mongodb] Release 11.1.8 updating components versions ([c10d34c](https://github.com/bitnami/charts/commit/c10d34c9b10aad6dd8672321e6e5cf49c3fb5356))
+
+## <small>11.1.7 (2022-04-19)</small>
+
+* [bitnami/mongodb] Release 11.1.7 updating components versions ([21a6772](https://github.com/bitnami/charts/commit/21a677271896b37d73b52abfccc68b23170dc941))
+
+## <small>11.1.6 (2022-04-18)</small>
+
+* [bitnami/mongodb] Release 11.1.6 updating components versions ([d89031b](https://github.com/bitnami/charts/commit/d89031b0b37367d0bfd186463c25b612d40a8c3a))
+
+## <small>11.1.5 (2022-04-05)</small>
+
+* [bitnami/mongodb] Release 11.1.5 updating components versions ([2c93040](https://github.com/bitnami/charts/commit/2c930401b1cb5774eb4c159491280d54fe14e9a7))
+
+## <small>11.1.4 (2022-04-02)</small>
+
+* [bitnami/mongodb] Release 11.1.4 updating components versions ([15e4f8d](https://github.com/bitnami/charts/commit/15e4f8d06c3af635ee5696027d5de430bb6836fd))
+
+## <small>11.1.3 (2022-03-28)</small>
+
+* [bitnami/mongodb] Release 11.1.3 updating components versions ([a6e8ef3](https://github.com/bitnami/charts/commit/a6e8ef3cb1923008eac9a8f9d356c2205efcdba4))
+
+## <small>11.1.2 (2022-03-27)</small>
+
+* [bitnami/mongodb] Release 11.1.2 updating components versions ([ad92c81](https://github.com/bitnami/charts/commit/ad92c81b28d36f5e99a1b1160647fc40b82e41cc))
+
+## <small>11.1.1 (2022-03-16)</small>
+
+* [bitnami/mongodb] Release 11.1.1 updating components versions ([e87c6b5](https://github.com/bitnami/charts/commit/e87c6b5cfdaa2aeaa7610be41dd0dec71a613dbd))
+
+## 11.1.0 (2022-03-11)
+
+* [bitnami/mongodb] feat: :sparkles: Check replicaset status when persistence is not detected (#9387) ([7d9d4a3](https://github.com/bitnami/charts/commit/7d9d4a38a1a7cf64cb8a7163ec67de517e4f3a93)), closes [#9387](https://github.com/bitnami/charts/issues/9387)
+
+## <small>11.0.6 (2022-03-02)</small>
+
+* [bitnami/mongodb] Release 11.0.6 updating components versions ([820c436](https://github.com/bitnami/charts/commit/820c436bc06c963e0e5e3a472c2986b226470e49))
+
+## <small>11.0.5 (2022-02-27)</small>
+
+* [bitnami/mongodb] Release 11.0.5 updating components versions ([d997058](https://github.com/bitnami/charts/commit/d997058e6f9c99826242c0ae6d19ccc1cdc2106a))
+
+## <small>11.0.4 (2022-02-21)</small>
+
+* [bitnami/mongodb] Do not hardcode PDB apiVersion (#9105) ([8123881](https://github.com/bitnami/charts/commit/81238811d4a6d09b2946dff7c0b65881449b2c4f)), closes [#9105](https://github.com/bitnami/charts/issues/9105)
+
+## <small>11.0.3 (2022-02-04)</small>
+
+* [bitnami/mongodb] fix duplicated arbiter MONGODB_EXTRA_FLAGS env var (#8892) ([23ff0af](https://github.com/bitnami/charts/commit/23ff0afe07cc5d78f824c11fc969be174879424e)), closes [#8892](https://github.com/bitnami/charts/issues/8892)
+
+## <small>11.0.2 (2022-02-01)</small>
+
+* [bitnami/mongodb] Release 11.0.2 updating components versions ([5de4fe8](https://github.com/bitnami/charts/commit/5de4fe8011b189e5a6a280e9a9a1e56dd57fc863))
+
+## <small>11.0.1 (2022-01-31)</small>
+
+* [bitnami/*] Fix non-utf8 characters (#8826) ([aebe0ed](https://github.com/bitnami/charts/commit/aebe0ed63d845e1e2b38751103810adf200b18f5)), closes [#8826](https://github.com/bitnami/charts/issues/8826)
+* [bitnami/mongodb] Fix exporter command (#8843) ([e2b5314](https://github.com/bitnami/charts/commit/e2b53140f8ecb2b0c1886c76d32f3c0a8e7bbf2f)), closes [#8843](https://github.com/bitnami/charts/issues/8843)
+
+## 11.0.0 (2022-01-27)
+
+* [bitnami/mongodb*] New major version using 0.30.X for the exporter (#8818) ([282d315](https://github.com/bitnami/charts/commit/282d315386d6f7f20a65ea3b7a46bb26cc95fa15)), closes [#8818](https://github.com/bitnami/charts/issues/8818)
+
+## <small>10.31.5 (2022-01-24)</small>
+
+* fix(): Fixed closing bracket for hidden node scripts (#8754) ([8db5126](https://github.com/bitnami/charts/commit/8db51260fb7656d3301c612b6263ee459a09ba0d)), closes [#8754](https://github.com/bitnami/charts/issues/8754)
+
+## <small>10.31.4 (2022-01-20)</small>
+
+* [bitnami/*] Readme automation (#8579) ([78d1938](https://github.com/bitnami/charts/commit/78d193831c900d178198491ffd08fa2217a64ecd)), closes [#8579](https://github.com/bitnami/charts/issues/8579)
+* [bitnami/*] Update READMEs (#8716) ([b9a9533](https://github.com/bitnami/charts/commit/b9a953337590eb2979453385874a267bacf50936)), closes [#8716](https://github.com/bitnami/charts/issues/8716)
+* [bitnami/several] Change prerequisites (#8725) ([8d740c5](https://github.com/bitnami/charts/commit/8d740c566cfdb7e2d933c40128b4e919fce953a5)), closes [#8725](https://github.com/bitnami/charts/issues/8725)
+
+## <small>10.31.3 (2022-01-11)</small>
+
+* [bitnami/mongodb] Release 10.31.3 updating components versions ([ef0367c](https://github.com/bitnami/charts/commit/ef0367cebe3f8f75acd50903983e8ab72d6ee90e))
+
+## <small>10.31.2 (2022-01-07)</small>
+
+* fix(): Fixed commonlabel issues for hidden node external service (#8590) ([dfc59a9](https://github.com/bitnami/charts/commit/dfc59a99aa0865915e0baffe0a4797063436fe81)), closes [#8590](https://github.com/bitnami/charts/issues/8590)
+
+## <small>10.31.1 (2022-01-05)</small>
+
+* [bitnami/mongodb] Fixed NodePort External Access (#8515) ([7cd5728](https://github.com/bitnami/charts/commit/7cd5728f4689dd43b389c337c60aeec6ce3619a3)), closes [#8515](https://github.com/bitnami/charts/issues/8515)
+
+## 10.31.0 (2022-01-05)
+
+* [bitnami/several] Adapt templating format (#8562) ([8cad18a](https://github.com/bitnami/charts/commit/8cad18aed9966a6f0208e5ad6cee46cb217f47ab)), closes [#8562](https://github.com/bitnami/charts/issues/8562)
+
+## <small>10.30.12 (2022-01-04)</small>
+
+* [bitnami/mongodb] Release 10.30.12 updating components versions ([9fe8ea7](https://github.com/bitnami/charts/commit/9fe8ea7dc654e07b187a3a784265cf73b0793c98))
+* [bitnami/several] Add license to the README ([05f7633](https://github.com/bitnami/charts/commit/05f763372501d596e57db713dd53ff4ff3027cc4))
+* [bitnami/several] Add license to the README ([32fb238](https://github.com/bitnami/charts/commit/32fb238e60a0affc6debd3142eaa3c3d9089ec2a))
+* [bitnami/several] Add license to the README ([b87c2f7](https://github.com/bitnami/charts/commit/b87c2f7899d48a8b02c506765e6ae82937e9ba3f))
+
+## <small>10.30.11 (2021-12-31)</small>
+
+* [bitnami/mongodb] Add metrics active wait (#8537) ([3a01fd4](https://github.com/bitnami/charts/commit/3a01fd4f89c7c62a13459d58fe77fe33cf42a101)), closes [#8537](https://github.com/bitnami/charts/issues/8537)
+
+## <small>10.30.10 (2021-12-29)</small>
+
+* [bitnami/mongodb] Release 10.30.10 updating components versions ([bd5647d](https://github.com/bitnami/charts/commit/bd5647d778e26257907ba34fa3c4250830870c52))
+
+## <small>10.30.9 (2021-12-27)</small>
+
+* [bitnami/mongodb] Release 10.30.9 updating components versions ([70d0e55](https://github.com/bitnami/charts/commit/70d0e55da7591e6a2a3f56c2982fe36c40e438b8))
+
+## <small>10.30.8 (2021-12-17)</small>
+
+* Revert "[bitnami/mongodb] Fix deprecated 'IP Address in the DNS Name field on certificate' when usin ([ed8306a](https://github.com/bitnami/charts/commit/ed8306ab169c34d99d694198aec8dc0931c43014)), closes [#8416](https://github.com/bitnami/charts/issues/8416)
+
+## <small>10.30.7 (2021-12-17)</small>
+
+* [bitnami/mongodb] Fix deprecated 'IP Address in the DNS Name field on certificate' when using tls (# ([275b91a](https://github.com/bitnami/charts/commit/275b91ad43d0058577edb9c58580ff197d5ba4b9)), closes [#8416](https://github.com/bitnami/charts/issues/8416)
+* bitnami/mongodb: enable to configure topology spread constraints (#8222) ([3bcf0b6](https://github.com/bitnami/charts/commit/3bcf0b6f9e39110dbaa34915ffa3e4d098841dc9)), closes [#8222](https://github.com/bitnami/charts/issues/8222)
+* Fixed tls.extraDnsNames example (#8352) ([e7cacec](https://github.com/bitnami/charts/commit/e7caceca2c009b27fbb534776a9a366e0bbf5a46)), closes [#8352](https://github.com/bitnami/charts/issues/8352)
+
+## <small>10.30.6 (2021-12-02)</small>
+
+* [bitnami/*] Fix parameters for schema generation (#8297) ([d7d52ac](https://github.com/bitnami/charts/commit/d7d52acdbd1b0629e4e5295652fa6f5830daf2af)), closes [#8297](https://github.com/bitnami/charts/issues/8297)
+
+## <small>10.30.5 (2021-12-02)</small>
+
+* [bitnami/mongodb] Fix default replicaSetConfigurationSettings.configuration (#8295) ([7f29d4e](https://github.com/bitnami/charts/commit/7f29d4edcb28d8feac57b9b359eab1d8d2b0fb11)), closes [#8295](https://github.com/bitnami/charts/issues/8295)
+* [bitnami/several] Regenerate README tables ([a43cca7](https://github.com/bitnami/charts/commit/a43cca73cabae95609e943f6eb2cdeefc04e866b))
+
+## <small>10.30.4 (2021-12-01)</small>
+
+* [bitnami/mongodb] Release 10.30.4 updating components versions ([76dcbd5](https://github.com/bitnami/charts/commit/76dcbd5c5801143a5f23261ce1482653860380bf))
+* [bitnami/several] Regenerate README tables ([8150149](https://github.com/bitnami/charts/commit/8150149f0bb746e86ff0029fc375d43775bdf15a))
+
+## <small>10.30.3 (2021-11-30)</small>
+
+* [bitnami/mongodb] Support tls.extraDnsNames in "replicaset" architecture (#8267) ([58900c8](https://github.com/bitnami/charts/commit/58900c8dc1f732fbbf979630f44eec9e5552647e)), closes [#8267](https://github.com/bitnami/charts/issues/8267)
+
+## <small>10.30.2 (2021-11-29)</small>
+
+* [bitnami/several] Replace HTTP by HTTPS when possible (#8259) ([eafb5bd](https://github.com/bitnami/charts/commit/eafb5bd5a2cc3aaf04fc1e8ebedd73f420d76864)), closes [#8259](https://github.com/bitnami/charts/issues/8259)
+
+## <small>10.30.1 (2021-11-26)</small>
+
+* [bitnami/mongodb] Added ability to configure run-time replica set configuration settings (#7042) ([46b1e90](https://github.com/bitnami/charts/commit/46b1e90ec9ffb7c32c4de6c323594c606bfaa923)), closes [#7042](https://github.com/bitnami/charts/issues/7042)
+
+## 10.30.0 (2021-11-26)
+
+* [bitnami/mongodb] Add medium option for non-persisted. (#8238) ([d762894](https://github.com/bitnami/charts/commit/d76289431509ec90111d54d997ba5632f71d88f3)), closes [#8238](https://github.com/bitnami/charts/issues/8238)
+
+## <small>10.29.4 (2021-11-24)</small>
+
+* [bitnami/several] Fix deadlinks in README.md (#8215) ([99e90d2](https://github.com/bitnami/charts/commit/99e90d244b3244e059a42f72dcbecd3cda2b66bb)), closes [#8215](https://github.com/bitnami/charts/issues/8215)
+* Fix tls mode value (#8219) ([47947a1](https://github.com/bitnami/charts/commit/47947a1b5a5cf9ea3318d0df42b893d7e017428e)), closes [#8219](https://github.com/bitnami/charts/issues/8219)
+
+## <small>10.29.3 (2021-11-23)</small>
+
+* Add value for tlsMode (#8214) ([48c50df](https://github.com/bitnami/charts/commit/48c50df7406a95f72c8a6929ce97b146f63f52fd)), closes [#8214](https://github.com/bitnami/charts/issues/8214)
+
+## <small>10.29.2 (2021-11-10)</small>
+
+* Fix service name in TLS init container (#8085) ([9108472](https://github.com/bitnami/charts/commit/9108472c07a0ad69db5f497711d36a018f1365cb)), closes [#8085](https://github.com/bitnami/charts/issues/8085)
+
+## <small>10.29.1 (2021-11-09)</small>
+
+* [bitnami/mongodb] Fix custom passwords (#8067) ([f2e629a](https://github.com/bitnami/charts/commit/f2e629a69add604951ae1dd3525dc3ea4a215d9d)), closes [#8067](https://github.com/bitnami/charts/issues/8067)
+* [bitnami/several] Regenerate README tables ([3cefed3](https://github.com/bitnami/charts/commit/3cefed3ef961fbd7596242b1165bcfa229a9cadb))
+
+## 10.29.0 (2021-11-02)
+
+* [bitnami/mongodb] Add support for several custom users/dbs (#7930) ([4d8106f](https://github.com/bitnami/charts/commit/4d8106fc733907796fc60e0a728c77ecc7e9f7b1)), closes [#7930](https://github.com/bitnami/charts/issues/7930)
+
+## <small>10.28.7 (2021-10-28)</small>
+
+* [bitnami/mongodb] Release 10.28.7 updating components versions ([f4d7b00](https://github.com/bitnami/charts/commit/f4d7b00f5fe902d4e435f19dec129db4089d48d0))
+
+## <small>10.28.6 (2021-10-28)</small>
+
+* [bitnami/*] Mark PodSecurityPolicy resources as deprecated (#7950) ([30e6946](https://github.com/bitnami/charts/commit/30e694657e21cea03a64ddbc6744f9bab1d1a169)), closes [#7950](https://github.com/bitnami/charts/issues/7950)
+* [bitnami/several] Regenerate README tables ([412cf6a](https://github.com/bitnami/charts/commit/412cf6a513cb0c03444a6e7811c6f27193239a10))
+
+## <small>10.28.5 (2021-10-27)</small>
+
+* [bitnami/mongodb] Release 10.28.5 updating components versions ([77be157](https://github.com/bitnami/charts/commit/77be157ac7e1218ce320068bc809086dcf0f9d0f))
+* [bitnami/several] Regenerate README tables ([3df22fe](https://github.com/bitnami/charts/commit/3df22fe5caa595c007d5da96c97209942ba1f0a0))
+
+## <small>10.28.4 (2021-10-25)</small>
+
+* [bitnami/mongodb] Release 10.28.4 updating components versions ([f7b2803](https://github.com/bitnami/charts/commit/f7b280361dd71f980b2ea1f9a7903512e63e0875))
+
+## <small>10.28.3 (2021-10-22)</small>
+
+* [bitnami/several] Add chart info to NOTES.txt (#7889) ([a6751cd](https://github.com/bitnami/charts/commit/a6751cdd33c461fabbc459fbea6f219ec64ab6b2)), closes [#7889](https://github.com/bitnami/charts/issues/7889)
+
+## <small>10.28.2 (2021-10-19)</small>
+
+* [bitnami/several] Change pullPolicy for bitnami-shell image (#7852) ([9711a33](https://github.com/bitnami/charts/commit/9711a33c6eec72ea79143c4b7574dbe6a148d6b2)), closes [#7852](https://github.com/bitnami/charts/issues/7852)
+* [bitnami/several] Regenerate README tables ([dd25873](https://github.com/bitnami/charts/commit/dd2587368d006bcca6149be74d846752a15344b9))
+
+## <small>10.28.1 (2021-10-14)</small>
+
+* [bitnami/*] Generate READMEs (#7790) ([0833a8c](https://github.com/bitnami/charts/commit/0833a8c16300d68abf6030639c3479d8fb031e25)), closes [#7790](https://github.com/bitnami/charts/issues/7790)
+* [bitnami/mongodb] Release 10.28.1 updating components versions ([ddef47a](https://github.com/bitnami/charts/commit/ddef47ab1da7b2ca64dd4d39c2031a1c844dcbd5))
+
+## 10.28.0 (2021-10-13)
+
+* [bitnami/mongodb] Call tpl function on mongo existing secret value (#7781) ([b31d5b8](https://github.com/bitnami/charts/commit/b31d5b8530c76be1d4375e0ae5cc63ad7707d81a)), closes [#7781](https://github.com/bitnami/charts/issues/7781) [#7770](https://github.com/bitnami/charts/issues/7770)
+
+## <small>10.27.3 (2021-10-12)</small>
+
+* [bitnami/mongodb] Release 10.27.3 updating components versions ([eb69d9d](https://github.com/bitnami/charts/commit/eb69d9d2cf32ad8d06d6c434a99fceee86904e42))
+
+## <small>10.27.2 (2021-10-07)</small>
+
+* Fix service name for hidden MongoDB pods (#7726) ([51a5a53](https://github.com/bitnami/charts/commit/51a5a53e9833f262be91c2616efeb31348e0d376)), closes [#7726](https://github.com/bitnami/charts/issues/7726)
+
+## <small>10.27.1 (2021-10-06)</small>
+
+* [bitnami/mongodb] fix extraDnsNames (#7717) ([c76bc81](https://github.com/bitnami/charts/commit/c76bc81c91a7b09133b3b6bfab32086f5acd57ee)), closes [#7717](https://github.com/bitnami/charts/issues/7717)
+* [bitnami/several] Regenerate README tables ([acd5b18](https://github.com/bitnami/charts/commit/acd5b18ce5bc30692bd4a318dbc4ddff297d7c9a))
+
+## 10.27.0 (2021-10-05)
+
+* bitnami/mongodb - Add extra dns names for auto tls. (#7627) ([b22f271](https://github.com/bitnami/charts/commit/b22f27118382ab13945d943e4bedcaaccd834f84)), closes [#7627](https://github.com/bitnami/charts/issues/7627)
+
+## <small>10.26.4 (2021-09-27)</small>
+
+* [bitnami/*] Generate READMEs with new generator version (#7614) ([e5ab2e6](https://github.com/bitnami/charts/commit/e5ab2e6ecdd6bce800863f154cda524ff9f6c117)), closes [#7614](https://github.com/bitnami/charts/issues/7614)
+* [bitnami/mongodb] Add commonAnnotations on arbiter (#7618) ([571ac9a](https://github.com/bitnami/charts/commit/571ac9a50c387ec013798b1067efb884952ddf0c)), closes [#7618](https://github.com/bitnami/charts/issues/7618)
+* [bitnami/several] Regenerate README tables ([fa939b3](https://github.com/bitnami/charts/commit/fa939b373a54c01c20aa28cdd4e7cfb2953ce2a4))
+
+## <small>10.26.3 (2021-09-19)</small>
+
+* [bitnami/mongodb] Release 10.26.3 updating components versions ([b4d29c0](https://github.com/bitnami/charts/commit/b4d29c021c3ba10146fbef3f8e89a3f2cc8d816f))
+* [bitnami/several] Regenerate README tables ([003a0fb](https://github.com/bitnami/charts/commit/003a0fbaedeb775c546b8d8452b7a5ab0a63af52))
+
+## <small>10.26.2 (2021-09-17)</small>
+
+* [bitnami/mongodb] Allow configuration of credentials for the metrics exporter (#7311) ([2ec31ed](https://github.com/bitnami/charts/commit/2ec31edee1fd3dcaa00b2af30d8fcafc3be070dd)), closes [#7311](https://github.com/bitnami/charts/issues/7311)
+
+## <small>10.26.1 (2021-09-16)</small>
+
+* [bitnami/mongodb] Rename configmap file to match extension (#7466) ([eeead06](https://github.com/bitnami/charts/commit/eeead06d8a76969899825863bc71943befd89c70)), closes [#7466](https://github.com/bitnami/charts/issues/7466)
+
+## 10.26.0 (2021-09-13)
+
+* [bitnami/mongodb] Configurable admin/root user name (#7229) ([d7ef3be](https://github.com/bitnami/charts/commit/d7ef3be57959c905e69602a9f21cb03ee729541b)), closes [#7229](https://github.com/bitnami/charts/issues/7229)
+
+## <small>10.25.2 (2021-09-10)</small>
+
+* [bitnami/mongodb] Use Recreate as strategy type for standalone deployments (#7443) ([9578898](https://github.com/bitnami/charts/commit/9578898cb34a42cc0567f413f443de50d265b82b)), closes [#7443](https://github.com/bitnami/charts/issues/7443)
+* [bitnami/several] Regenerate README tables ([9c82ba2](https://github.com/bitnami/charts/commit/9c82ba295d70b1cac50ab4d8d494fdbefc1ec0ac))
+
+## <small>10.25.1 (2021-09-01)</small>
+
+* [bitnami/mongodb] Release 10.25.1 updating components versions ([7118531](https://github.com/bitnami/charts/commit/7118531d2ca04cac99e052ca7a8cb390008f3072))
+
+## 10.25.0 (2021-09-01)
+
+* [bitnami/mongodb] Add runtimeClassName support (#7362) ([1b78083](https://github.com/bitnami/charts/commit/1b78083de8ff3cc1b4e3eeda426b05b99024b565)), closes [#7362](https://github.com/bitnami/charts/issues/7362)
+* [bitnami/several] Regenerate README tables ([64d5d74](https://github.com/bitnami/charts/commit/64d5d747b84299ca9f63ea8a586b13870abe31a6))
+
+## <small>10.24.1 (2021-08-31)</small>
+
+* [bitnami/mongodb] Add persistence annotations to PVC (#7355) ([931b597](https://github.com/bitnami/charts/commit/931b597c43f6cd37919569acda4432a9bdd59a71)), closes [#7355](https://github.com/bitnami/charts/issues/7355)
+
+## 10.24.0 (2021-08-31)
+
+* [bitnami/mongodb] Add relabelings / metricRelabelings to ServiceMonitor (#7352) ([28417f3](https://github.com/bitnami/charts/commit/28417f38df7e1e82ee4ff66421da2a08f64f57bd)), closes [#7352](https://github.com/bitnami/charts/issues/7352)
+* [bitnami/several] Regenerate README tables ([da2513b](https://github.com/bitnami/charts/commit/da2513bf0a33819f3b1151d387c631a9ffdb03e2))
+
+## <small>10.23.13 (2021-08-25)</small>
+
+* [bitnami/mongodb] Release 10.23.13 updating components versions ([daf22c1](https://github.com/bitnami/charts/commit/daf22c13e3be5d90af7eef89f2e4559e9c008a44))
+
+## <small>10.23.12 (2021-08-25)</small>
+
+* [bitnami/mongodb] doc: use existingSecret from Notes (#7032) ([16a4bbe](https://github.com/bitnami/charts/commit/16a4bbe92d2267e530c2598ff2f4679fa61c9d86)), closes [#7032](https://github.com/bitnami/charts/issues/7032)
+
+## <small>10.23.11 (2021-08-24)</small>
+
+* [bitnami/mongodb] Release 10.23.11 updating components versions ([593efdf](https://github.com/bitnami/charts/commit/593efdff66988f27aeee3688cbe6b0e0df786ef2))
+* [bitnami/several] Regenerate README tables ([6c107e8](https://github.com/bitnami/charts/commit/6c107e835d6caf8db2e8b17dcd48c5971637e013))
+
+## <small>10.23.10 (2021-08-11)</small>
+
+* [bitnami/mongodb] Release 10.23.10 updating components versions ([b6dea8a](https://github.com/bitnami/charts/commit/b6dea8a7e8619bcaed473196a4269c97d787676c))
+
+## <small>10.23.9 (2021-08-04)</small>
+
+* [bitnami/mongodb] Clarify externalAccess parameter (#7135) ([249ae8f](https://github.com/bitnami/charts/commit/249ae8fe07822ac519ec2383d6b7c92c1cb22de6)), closes [#7135](https://github.com/bitnami/charts/issues/7135)
+
+## <small>10.23.8 (2021-08-01)</small>
+
+* [bitnami/mongodb] Release 10.23.8 updating components versions ([658b1af](https://github.com/bitnami/charts/commit/658b1afe41574b3942fd295557a5bc4a8a3c3513))
+* [bitnami/several] Update READMEs (#7108) ([44961d9](https://github.com/bitnami/charts/commit/44961d9cdfae1b0d06808124c4b47e8adc3de146)), closes [#7108](https://github.com/bitnami/charts/issues/7108)
+
+## <small>10.23.7 (2021-07-30)</small>
+
+* [bitnami/mongodb] Release 10.23.7 updating components versions ([f07bf4e](https://github.com/bitnami/charts/commit/f07bf4e39a4984d1db530aba7da9b8fba3f5c838))
+
+## <small>10.23.6 (2021-07-27)</small>
+
+* [bitnami/several] Bump version and update READMEs (#7069) ([6340bff](https://github.com/bitnami/charts/commit/6340bff66f93c8c797bda3ca0842e4bf770059f1)), closes [#7069](https://github.com/bitnami/charts/issues/7069)
+
+## <small>10.23.5 (2021-07-27)</small>
+
+* Replace <sup> strings with &trade; in the README files (#7066) ([d298b49](https://github.com/bitnami/charts/commit/d298b4996da33c9580c2594e6dc8ad665dd0ebab)), closes [#7066](https://github.com/bitnami/charts/issues/7066)
+
+## <small>10.23.4 (2021-07-26)</small>
+
+* [bitnami/several] Fix default values and regenerate README (#7045) ([90c81ac](https://github.com/bitnami/charts/commit/90c81ac55e7b35709b04ea551bc54a40453ce630)), closes [#7045](https://github.com/bitnami/charts/issues/7045)
+
+## <small>10.23.3 (2021-07-24)</small>
+
+* [bitnami/mongodb] Release 10.23.3 updating components versions ([ddc5dbe](https://github.com/bitnami/charts/commit/ddc5dbef663287bfab50b366469ab9d12ad1fab7))
+
+## <small>10.23.2 (2021-07-21)</small>
+
+* [bitnami/mongodb] Fix a bug that prevents install chart in the `replicaset` mode (#7006) ([236ba2b](https://github.com/bitnami/charts/commit/236ba2bf5442bffbdbcaaf0cd01dd82c72793cc0)), closes [#7006](https://github.com/bitnami/charts/issues/7006)
+
+## <small>10.23.1 (2021-07-19)</small>
+
+* [bitnami/mongodb] Release 10.23.1 updating components versions ([783e9d4](https://github.com/bitnami/charts/commit/783e9d4b7f1157e71349404ea5691e959d4e3646))
+
+## 10.23.0 (2021-07-15)
+
+* bitnami/mongodb  - Fix for custom clusterDomain not joining the secondary nodes (#6938) ([b33b435](https://github.com/bitnami/charts/commit/b33b435b60c3ada7b1ef8a0988d670d66fbcb3f5)), closes [#6938](https://github.com/bitnami/charts/issues/6938)
+
+## <small>10.22.1 (2021-07-15)</small>
+
+* [bitnami/mongodb] Release 10.22.1 updating components versions ([66325fb](https://github.com/bitnami/charts/commit/66325fb87c6ef2754ac96c760b3c4a2525366d4b))
+
+## 10.22.0 (2021-07-13)
+
+* [bitnami/mongodb,mariadb-galera,redis] Add diagnostic mode (#6936) ([a907452](https://github.com/bitnami/charts/commit/a9074525f83c97df584fb7ebfe408d57cbb06b22)), closes [#6936](https://github.com/bitnami/charts/issues/6936)
+
+## <small>10.21.2 (2021-07-09)</small>
+
+* [bitnami/*] Adapt values.yaml of metrics-server, MinIO and MongoDB charts (#6895) ([86922f0](https://github.com/bitnami/charts/commit/86922f08ea0e31876b82a508cd1c9b8c8b7eba4c)), closes [#6895](https://github.com/bitnami/charts/issues/6895)
+* [bitnami/mongodb] Specify standalone replicas to be 1 (#6882) ([cd7c567](https://github.com/bitnami/charts/commit/cd7c5674189a54e638d6a225e1417f86efd1dd2d)), closes [#6882](https://github.com/bitnami/charts/issues/6882)
+
+## <small>10.21.1 (2021-07-08)</small>
+
+* [bitnami/mongodb] fixed commonLabels for external access (#6888) ([aeaaf26](https://github.com/bitnami/charts/commit/aeaaf26cb058ff83d7c9725aa6a086c0785c2866)), closes [#6888](https://github.com/bitnami/charts/issues/6888)
+
+## 10.21.0 (2021-07-05)
+
+* bitnami/mongodb commonLabels (#6815) ([ffdf1f7](https://github.com/bitnami/charts/commit/ffdf1f71c5b2a32addb2b55f388fb714067a0a70)), closes [#6815](https://github.com/bitnami/charts/issues/6815)
+
+## <small>10.20.5 (2021-06-24)</small>
+
+* [bitnami/mongodb] Release 10.20.5 updating components versions ([d5f8262](https://github.com/bitnami/charts/commit/d5f82623e6c437d90d0368336314dfe257f9d9e1))
+
+## <small>10.20.4 (2021-06-22)</small>
+
+* [bitnami/mongodb] Revert changes to secrets-ca.yaml (#6700) ([993af16](https://github.com/bitnami/charts/commit/993af163008301897ee2ebf4017c11aa2d05fa9b)), closes [#6700](https://github.com/bitnami/charts/issues/6700)
+
+## <small>10.20.3 (2021-06-21)</small>
+
+* xs identation fix to extraDeploy section when un-commenting (#6710) ([2c8b58e](https://github.com/bitnami/charts/commit/2c8b58eb6d38034e93cdda6d8cc6a69003e8611c)), closes [#6710](https://github.com/bitnami/charts/issues/6710)
+
+## <small>10.20.2 (2021-06-19)</small>
+
+* [bitnami/mongodb] Release 10.20.2 updating components versions ([9abf01a](https://github.com/bitnami/charts/commit/9abf01af0c3852a597bbfa30f89404f0751249d7))
+
+## <small>10.20.1 (2021-06-18)</small>
+
+* [bitnami/mongodb] Release 10.20.1 updating components versions ([40e10f6](https://github.com/bitnami/charts/commit/40e10f6e974c0c6dd62e136020a0121b32853c14))
+
+## 10.20.0 (2021-06-16)
+
+* [bitnami/mongodb] Standardize certificates autogeneration (#6639) ([2463099](https://github.com/bitnami/charts/commit/246309975f718f836f51a1a02f13a0e936ac720d)), closes [#6639](https://github.com/bitnami/charts/issues/6639)
+
+## 10.19.0 (2021-06-03)
+
+* [bitnami/mongodb] support https://github.com/combor/k8s-mongo-labeler-sidecar - a very … (#6435) ([8a5cc0d](https://github.com/bitnami/charts/commit/8a5cc0df3279b97bb36aa7617dfaf908f0ffdbe6))
+
+## 10.18.0 (2021-06-02)
+
+* [bitnami/mongodb] Support for custom RBAC rules (#6537) ([a1efd31](https://github.com/bitnami/charts/commit/a1efd31ab4c9da2a0fbb3966fd494119a4c2a568)), closes [#6537](https://github.com/bitnami/charts/issues/6537)
+
+## 10.17.0 (2021-06-02)
+
+* [bitnami/mongodb] Add support for 'extraDeploy' (#6536) ([cdf83aa](https://github.com/bitnami/charts/commit/cdf83aa3ee3c2907b7ee70830f4416c32de15b67)), closes [#6536](https://github.com/bitnami/charts/issues/6536)
+
+## <small>10.16.4 (2021-05-27)</small>
+
+* [bitnami/mongodb] Release 10.16.4 updating components versions ([5d1db0a](https://github.com/bitnami/charts/commit/5d1db0a73ccb9e9218c794a811532c39f4dad11f))
+
+## <small>10.16.3 (2021-05-26)</small>
+
+* [bitnami/mongodb] Release 10.16.3 updating components versions ([43ef321](https://github.com/bitnami/charts/commit/43ef32145b38696ec352ac42ac88d97c4259460c))
+
+## <small>10.16.2 (2021-05-25)</small>
+
+* [bitnami/mongodb] Release 10.16.2 updating components versions ([88bd1d8](https://github.com/bitnami/charts/commit/88bd1d8a12e8e15698621b2c6918fac8870f5b5c))
+
+## <small>10.16.1 (2021-05-24)</small>
+
+* [bitnami/mongodb] Changes how the mongodb version is checked in readiness probes (#6442) ([29c842c](https://github.com/bitnami/charts/commit/29c842cb5d48971ebdb34db7de7da3cb1e0547fc)), closes [#6442](https://github.com/bitnami/charts/issues/6442)
+
+## 10.16.0 (2021-05-20)
+
+* [bitnami/*] Update Kubectl container version (#6420) ([dad6d38](https://github.com/bitnami/charts/commit/dad6d3857f54132e32b5860cd454129bc8b781fe)), closes [#6420](https://github.com/bitnami/charts/issues/6420)
+* Update README.md ([2a8ed56](https://github.com/bitnami/charts/commit/2a8ed566b58a676e9c8cc2a77ac7f1fda7c732c1))
+
+## <small>10.15.3 (2021-05-13)</small>
+
+* [bitnami/mongodb] Improve readiness probe compatibility for some old versions of mongodb (#6342) ([656c7d9](https://github.com/bitnami/charts/commit/656c7d996670a4049155963eb3180b8d7e9c5575)), closes [#6342](https://github.com/bitnami/charts/issues/6342)
+
+## <small>10.15.2 (2021-05-07)</small>
+
+* [bitnami/mongodb]  Fixed hidden node headless service name in TLS (#6281) ([8ab1a15](https://github.com/bitnami/charts/commit/8ab1a15c831585b43345f38caefb054b1ee0e5cf)), closes [#6281](https://github.com/bitnami/charts/issues/6281)
+* [bitnami/mongodb] Release 10.15.2 updating components versions ([5db07a2](https://github.com/bitnami/charts/commit/5db07a203955d0e002cc477848d063ee1b0f1f1f))
+
+## <small>10.15.1 (2021-05-05)</small>
+
+* Update NOTES.txt (#6292) ([ee5597c](https://github.com/bitnami/charts/commit/ee5597c86b1cd3587fb50feb1dbc7518195c8cab)), closes [#6292](https://github.com/bitnami/charts/issues/6292)
+
+## 10.15.0 (2021-05-04)
+
+* [bitnami/mongodb] add commonAnnotations (#6274) ([2b3e4c6](https://github.com/bitnami/charts/commit/2b3e4c61ec8ef6ee2bcb806b471a3e31ce975793)), closes [#6274](https://github.com/bitnami/charts/issues/6274)
+
+## 10.14.0 (2021-05-04)
+
+* [bitnami/mongodb] Add dataSource (#6275) ([63a7bba](https://github.com/bitnami/charts/commit/63a7bbac9b23eb486cc01b2d0498e0e54934b334)), closes [#6275](https://github.com/bitnami/charts/issues/6275)
+
+## 10.13.0 (2021-04-30)
+
+* [bitnami/mongodb] Add parameter to enable/disable journaling in MongoDB (#6254) ([c82c05b](https://github.com/bitnami/charts/commit/c82c05bdb7d4595fe6d59ae36779e2ec085c74fb)), closes [#6254](https://github.com/bitnami/charts/issues/6254)
+
+## <small>10.12.7 (2021-04-30)</small>
+
+* Fix typos in several README files (#6252) ([fd16565](https://github.com/bitnami/charts/commit/fd1656587a007ac9b8e9d895f6b99607fb225f7c)), closes [#6252](https://github.com/bitnami/charts/issues/6252)
+
+## <small>10.12.6 (2021-04-27)</small>
+
+* [bitnami/mongodb] remove nodePort: null (#6221) ([ca19612](https://github.com/bitnami/charts/commit/ca196124283ffae1b9fcd07441a81a6491b41afe)), closes [#6221](https://github.com/bitnami/charts/issues/6221)
+
+## <small>10.12.5 (2021-04-21)</small>
+
+* [bitnami/mongodb] fixed advertised hostname for hidden nodes (#6161) ([da405a4](https://github.com/bitnami/charts/commit/da405a42b25840b3e73ce5f1df89669a8f9ad715)), closes [#6161](https://github.com/bitnami/charts/issues/6161)
+
+## <small>10.12.4 (2021-04-19)</small>
+
+* Fix duplicate env variable MONGODB_EXTRA_FLAGS for hidden nodes (#6142) ([1dad545](https://github.com/bitnami/charts/commit/1dad5454dc3a36d640975bc55b003f7027f17dbb)), closes [#6142](https://github.com/bitnami/charts/issues/6142)
+
+## <small>10.12.3 (2021-04-16)</small>
+
+* T39353 Updated links (#6128) ([9d5aa6e](https://github.com/bitnami/charts/commit/9d5aa6ef8af330126610c45e9c28fb0d312c54f1)), closes [#6128](https://github.com/bitnami/charts/issues/6128)
+
+## <small>10.12.2 (2021-04-08)</small>
+
+* [bitnami/mongodb] Add support to load environment variables from files (#6049) ([5f67837](https://github.com/bitnami/charts/commit/5f67837fd1f837109426250f2d0905ef86c28431)), closes [#6049](https://github.com/bitnami/charts/issues/6049)
+
+## <small>10.12.1 (2021-04-07)</small>
+
+* [bitnami/mongodb] Release 10.12.1 updating components versions ([3882ba8](https://github.com/bitnami/charts/commit/3882ba8ab33d5d9057014a7758c17b32258d9f6d))
+
+## 10.12.0 (2021-04-05)
+
+* [bitnami/mongodb] Add startup probe (#5998) ([d1efebd](https://github.com/bitnami/charts/commit/d1efebd19577e050aee85d59a6684f37066aee1c)), closes [#5998](https://github.com/bitnami/charts/issues/5998)
+
+## <small>10.11.2 (2021-04-01)</small>
+
+* [bitnami/mongodb] Improved README (#5961) ([db4689a](https://github.com/bitnami/charts/commit/db4689af558d2a8a8392c7a2478c3fd53e90e535)), closes [#5961](https://github.com/bitnami/charts/issues/5961)
+
+## <small>10.11.1 (2021-03-25)</small>
+
+* Bumps mongodb image version used by the chart (#5911) ([762baad](https://github.com/bitnami/charts/commit/762baad337af9fde74ad5a419060c6895665627b)), closes [#5911](https://github.com/bitnami/charts/issues/5911)
+
+## 10.11.0 (2021-03-19)
+
+* [bitnami/mongodb] Fix certs permissions to match STIG requirements (#5822) ([e6d9c1c](https://github.com/bitnami/charts/commit/e6d9c1ce7ae8755ce8250dbbcbff3013927b4bf7)), closes [#5822](https://github.com/bitnami/charts/issues/5822)
+
+## <small>10.10.3 (2021-03-19)</small>
+
+* [bitnami/mongodb] Release 10.10.3 updating components versions ([5476b23](https://github.com/bitnami/charts/commit/5476b23e9ee8b2f67538a3514d1dcca16b4d5228))
+
+## <small>10.10.2 (2021-03-14)</small>
+
+* [bitnami/mongodb] Release 10.10.2 updating components versions ([2589b9d](https://github.com/bitnami/charts/commit/2589b9d8769b67ecd870d6ada4a0837998da6623))
+
+## <small>10.10.1 (2021-03-09)</small>
+
+* [bitnami/mongodb] Fix duplicate env variable MONGODB_EXTRA_FLAGS (#5698) (#5726) ([6270554](https://github.com/bitnami/charts/commit/62705543af16e7aa5eedc829f443ab109a8ec28e)), closes [#5698](https://github.com/bitnami/charts/issues/5698) [#5726](https://github.com/bitnami/charts/issues/5726)
+
+## 10.10.0 (2021-03-08)
+
+* [bitnami/mongodb] Add support for externalAccess.service.type=ClusterIP (#5706) ([766da77](https://github.com/bitnami/charts/commit/766da779e2bb11e1e0070424a377ec3b7ba1e8f6)), closes [#5706](https://github.com/bitnami/charts/issues/5706)
+
+## <small>10.9.1 (2021-03-05)</small>
+
+* fix(): Fixed portname var reference (#5689) ([1744ab1](https://github.com/bitnami/charts/commit/1744ab1173153973b26bd1e88296e9b088cc0290)), closes [#5689](https://github.com/bitnami/charts/issues/5689)
+
+## 10.9.0 (2021-03-04)
+
+* [bitnami/mongodb] add persistence.volumeClaimTemplates.requests (#5672) ([afd7de0](https://github.com/bitnami/charts/commit/afd7de04c7c95cf40ebb2d16c8c305c4863b880e)), closes [#5672](https://github.com/bitnami/charts/issues/5672)
+
+## <small>10.8.1 (2021-03-04)</small>
+
+* [bitnami/*] Remove minideb mentions (#5677) ([870bc4d](https://github.com/bitnami/charts/commit/870bc4dba1fc3aa55dd157da6687b25e8d352206)), closes [#5677](https://github.com/bitnami/charts/issues/5677)
+
+## 10.8.0 (2021-03-04)
+
+* Added hidden node support (#5505) ([ee77ab0](https://github.com/bitnami/charts/commit/ee77ab0e08d4626fbf80c65b487656acdc278a3a)), closes [#5505](https://github.com/bitnami/charts/issues/5505)
+
+## <small>10.7.2 (2021-03-02)</small>
+
+* [bitname/mongodb] fixed comment in values.yaml (#5650) ([6282c06](https://github.com/bitnami/charts/commit/6282c06401abb5568773554aa5ad6c740591dffb)), closes [#5650](https://github.com/bitnami/charts/issues/5650)
+
+## <small>10.7.1 (2021-02-22)</small>
+
+* [bitnami/*] Use common macro to define RBAC apiVersion (#5585) ([71fb99f](https://github.com/bitnami/charts/commit/71fb99f541e971b1daafaa20ffb7d18b153b8d60)), closes [#5585](https://github.com/bitnami/charts/issues/5585)
+* Fix typo in values documentation (#5540) ([5c0ef02](https://github.com/bitnami/charts/commit/5c0ef02c344e5c5911eb4b8e420b0010bb6213f1)), closes [#5540](https://github.com/bitnami/charts/issues/5540)
+
+## 10.7.0 (2021-02-12)
+
+* [bitnami/mongodb] Add metrics.containerPort (#5480) ([532f1c2](https://github.com/bitnami/charts/commit/532f1c2a576bdc60b6aeae05a55e4780b9155041)), closes [#5480](https://github.com/bitnami/charts/issues/5480)
+
+## <small>10.6.5 (2021-02-12)</small>
+
+* [bitnami/*] Add notice regarding parameters immutability after chart installation (#4853) ([5f09573](https://github.com/bitnami/charts/commit/5f095734f92555dec7cd0e3ee961f315eac170ff)), closes [#4853](https://github.com/bitnami/charts/issues/4853)
+* [bitnami/mongodb] Release 10.6.5 updating components versions ([c45e80e](https://github.com/bitnami/charts/commit/c45e80e65b0a05deb6945e78d079ececca8abd9b))
+
+## <small>10.6.4 (2021-02-10)</small>
+
+* [bitnami/mongodb] Release 10.6.4 updating components versions ([34562aa](https://github.com/bitnami/charts/commit/34562aa790f4d8555e73ea9cedaebb12a2a11b58))
+
+## <small>10.6.3 (2021-02-09)</small>
+
+* [bitnami/mongodb] Add optional parameters to configure service names used for mongo and arbiter serv ([74f2fd8](https://github.com/bitnami/charts/commit/74f2fd8f163cb4a9aa48bae1cb2a674ce4de2ae4)), closes [#5384](https://github.com/bitnami/charts/issues/5384)
+* Add registered icon to all the MongoDB references (#5426) ([56f2088](https://github.com/bitnami/charts/commit/56f20884267e56175695b2917f7704b9510f4ba6)), closes [#5426](https://github.com/bitnami/charts/issues/5426)
+
+## <small>10.6.2 (2021-02-05)</small>
+
+* [bitnami/mongodb] Release 10.6.2 updating components versions ([03b8b53](https://github.com/bitnami/charts/commit/03b8b530e9daeafa4edfa710a0a5f1868f5790ee))
+
+## <small>10.6.1 (2021-01-29)</small>
+
+* [bitnami/mongodb] fix: remove unnecesary hook (#5324) ([03eb8fc](https://github.com/bitnami/charts/commit/03eb8fca3169d2b633588b6c27e00876639a34a0)), closes [#5324](https://github.com/bitnami/charts/issues/5324)
+
+## 10.6.0 (2021-01-28)
+
+* [bitnami/mongodb] Add hostAliases (#5271) ([18fd4ce](https://github.com/bitnami/charts/commit/18fd4ce9755da7bece29d87a2e7a39df80feb5ec)), closes [#5271](https://github.com/bitnami/charts/issues/5271)
+
+## <small>10.5.2 (2021-01-26)</small>
+
+* [bitnami/mongodb] Release 10.5.2 updating components versions ([9fb3d9d](https://github.com/bitnami/charts/commit/9fb3d9dff4db8a4d0e1e667337ec8b186e72f865))
+
+## <small>10.5.1 (2021-01-22)</small>
+
+* [bitnami/mongodb] Release 10.5.1 updating components versions ([444de39](https://github.com/bitnami/charts/commit/444de39ddc578ca85d671448c61c90fef018322c))
+
+## 10.5.0 (2021-01-20)
+
+* [bitnami/mongodb] Enable psp for mongodb (#5020) ([d109865](https://github.com/bitnami/charts/commit/d10986573a3a79f1943afcb7315b80e5c69d8543)), closes [#5020](https://github.com/bitnami/charts/issues/5020)
+
+## <small>10.4.1 (2021-01-19)</small>
+
+* [bitnami/*] Change helm version in the prerequisites (#5090) ([c5e67a3](https://github.com/bitnami/charts/commit/c5e67a388743cbee28439d2cabca27884b9daf97)), closes [#5090](https://github.com/bitnami/charts/issues/5090)
+* [bitnami/mongodb] Drop values-production.yaml support (#5119) ([ccadbf3](https://github.com/bitnami/charts/commit/ccadbf3b4ffa999b8f62c337d0a51f8cdb45c407)), closes [#5119](https://github.com/bitnami/charts/issues/5119)
+
+## 10.4.0 (2021-01-14)
+
+* [bitnami/mongodb] Add serviceAccount annotations (#4968) ([430c331](https://github.com/bitnami/charts/commit/430c331dec46433d813b7c0fba4251fd167a41e6)), closes [#4968](https://github.com/bitnami/charts/issues/4968)
+* [bitnami/mongodb] Make VolumePermission init container consistent with persistence.subPath value (#4 ([be82fa7](https://github.com/bitnami/charts/commit/be82fa732710a8b7e3c13a7ca471d1f421a32eb9)), closes [#4938](https://github.com/bitnami/charts/issues/4938)
+
+## <small>10.3.7 (2021-01-12)</small>
+
+* [bitnami/mongodb] Make readiness probe only validate usable instance (#4937) ([a9668ba](https://github.com/bitnami/charts/commit/a9668ba40837371e2723ca0d5d4123326c418b5f)), closes [#4937](https://github.com/bitnami/charts/issues/4937)
+
+## <small>10.3.6 (2021-01-10)</small>
+
+* Fix probe error messages (#4876) ([79889dc](https://github.com/bitnami/charts/commit/79889dc9fd37828317d4dc1698bcd5e428510665)), closes [#4876](https://github.com/bitnami/charts/issues/4876)
+
+## <small>10.3.5 (2021-01-07)</small>
+
+* [bitnami/mongodb] Add helpful information about some variable validity (#4902) ([b009a58](https://github.com/bitnami/charts/commit/b009a5807f08b6e8dbb3dc518647cf3e418df3e2)), closes [#4902](https://github.com/bitnami/charts/issues/4902)
+
+## <small>10.3.4 (2021-01-04)</small>
+
+* Fix metrics readinessProbe and livenessProbe in standalone deployment (#4880) ([e1b2243](https://github.com/bitnami/charts/commit/e1b22435d7e74f5cc06d66b88e862c74c1681cd2)), closes [#4880](https://github.com/bitnami/charts/issues/4880)
+
+## <small>10.3.3 (2020-12-23)</small>
+
+* Fix metrics readinessProbe and livenessProbe since --test flag is removed in mongo-exporter (#4823) ([8097014](https://github.com/bitnami/charts/commit/8097014602f3a14d778e736557f103612bfa003d)), closes [#4823](https://github.com/bitnami/charts/issues/4823)
+
+## <small>10.3.2 (2020-12-22)</small>
+
+* [bitnami/mongodb] Release 10.3.2 updating components versions ([ed25600](https://github.com/bitnami/charts/commit/ed25600c2b16f06a9287be65326412fd10afd607))
+
+## <small>10.3.1 (2020-12-15)</small>
+
+* [bitnami/mongodb] Release 10.3.1 updating components versions ([b21f43d](https://github.com/bitnami/charts/commit/b21f43ddadbdd83976a532eda7fdbc7fbfc0c339))
+* allow selector definitions for volumeClaimTemplates (#4715) ([e2b744e](https://github.com/bitnami/charts/commit/e2b744e83846e1c57b288baedb217ca3e9a3bf40)), closes [#4715](https://github.com/bitnami/charts/issues/4715)
+
+## 10.3.0 (2020-12-14)
+
+* [bitnami/*] fix typos (#4699) ([49adc63](https://github.com/bitnami/charts/commit/49adc63b672da976c55af2e077aa5648a357b77f)), closes [#4699](https://github.com/bitnami/charts/issues/4699)
+* Added support for custom CA (#4690) ([7225d59](https://github.com/bitnami/charts/commit/7225d59bc602c7e2bef0770661fcd38ab7e85842)), closes [#4690](https://github.com/bitnami/charts/issues/4690)
+
+## 10.2.0 (2020-12-11)
+
+* [bitnami/mongodb] add existingSecret for tls certificates (#4687) ([c750ddd](https://github.com/bitnami/charts/commit/c750ddd2053ce2452b0ee3770e0e9d0f038b732a)), closes [#4687](https://github.com/bitnami/charts/issues/4687)
+
+## <small>10.1.5 (2020-12-11)</small>
+
+* [bitnami/*] Update dependencies (#4694) ([2826c12](https://github.com/bitnami/charts/commit/2826c125b42505f28431301e3c1bbe5366e47a01)), closes [#4694](https://github.com/bitnami/charts/issues/4694)
+
+## <small>10.1.4 (2020-12-08)</small>
+
+* [bitnami/mongodb] Register targetPod in global context (#4642) ([5222973](https://github.com/bitnami/charts/commit/52229733f86eb0bdb262af9fac3faa44e03e7205)), closes [#4642](https://github.com/bitnami/charts/issues/4642)
+
+## <small>10.1.3 (2020-12-01)</small>
+
+* [bitnami/mongodb] ensure password is handled as string (#4488) ([44910ca](https://github.com/bitnami/charts/commit/44910ca2a803b11e32382a8a134805424797eeb4)), closes [#4488](https://github.com/bitnami/charts/issues/4488)
+
+## <small>10.1.2 (2020-11-26)</small>
+
+* [bitnami/mongodb] Bump bitnami/common subchart version (#4507) ([4a93e2a](https://github.com/bitnami/charts/commit/4a93e2a663409c908db70650cb9869a86ad92350)), closes [#4507](https://github.com/bitnami/charts/issues/4507)
+
+## <small>10.1.1 (2020-11-26)</small>
+
+* [bitnami/mongodb] Use common validations (#4498) ([aaf0545](https://github.com/bitnami/charts/commit/aaf0545acd40bfecb202f6bebdeec7ede054626a)), closes [#4498](https://github.com/bitnami/charts/issues/4498)
+
+## 10.1.0 (2020-11-26)
+
+* [bitnami/*] Affinity based on common presets (v) (#4494) ([f5abfb8](https://github.com/bitnami/charts/commit/f5abfb8e423872199518733bde449d57392eab0a)), closes [#4494](https://github.com/bitnami/charts/issues/4494)
+
+## <small>10.0.5 (2020-11-18)</small>
+
+* [bitnami/mongodb] External static LoadBalancer IPs added to the SSL certificate SANs (#4249) ([72ca4e9](https://github.com/bitnami/charts/commit/72ca4e994dea7614620d247f7200767c748b3103)), closes [#4249](https://github.com/bitnami/charts/issues/4249)
+
+## <small>10.0.4 (2020-11-17)</small>
+
+* [bitnami/mongodb] Release 10.0.4 updating components versions ([03dfb8d](https://github.com/bitnami/charts/commit/03dfb8d4de7e6ce556999936e71263486459eedd))
+
+## <small>10.0.3 (2020-11-16)</small>
+
+* [bitnami/mongodb] Metrics container will not take TLS settings when cluster is TLS enabled (#4233) ([b357fc6](https://github.com/bitnami/charts/commit/b357fc61af4ce1150d3c51205864a3273cd83beb)), closes [#4233](https://github.com/bitnami/charts/issues/4233)
+
+## <small>10.0.2 (2020-11-13)</small>
+
+* [bitnami/mongodb] Release 10.0.2 updating components versions ([8fdca59](https://github.com/bitnami/charts/commit/8fdca59e14807432228776fc24ebe035714e4fc8))
+
+## <small>10.0.1 (2020-11-13)</small>
+
+* [bitnami/mongodb] Fix prometheus rules (#4339) ([487e50e](https://github.com/bitnami/charts/commit/487e50ece8160025ec7a6e2236666b14d99b27cb)), closes [#4339](https://github.com/bitnami/charts/issues/4339)
+
+## 10.0.0 (2020-11-10)
+
+* [bitnami/mongodb] Fix README.md issue (#4164) ([111391d](https://github.com/bitnami/charts/commit/111391dcc27addfb7b97e499a2a2e0ef8e487462)), closes [#4164](https://github.com/bitnami/charts/issues/4164)
+* [bitnami/mongodb] Major version. Adapt Chart to apiVersion: v2 (#4296) ([ef81720](https://github.com/bitnami/charts/commit/ef817205d8ef56360c2b022532201002a6b8459f)), closes [#4296](https://github.com/bitnami/charts/issues/4296)
+
+## <small>9.3.1 (2020-10-30)</small>
+
+* fix: add multiline string indicator in example data (#4153) ([2f94dcc](https://github.com/bitnami/charts/commit/2f94dccd10897af38a007e1c692849fd4266093e)), closes [#4153](https://github.com/bitnami/charts/issues/4153)
+
+## 9.3.0 (2020-10-29)
+
+* [bitnami/*] Include link to Troubleshootin guide on README.md (#4136) ([c08a20e](https://github.com/bitnami/charts/commit/c08a20e3db004215383004ff023a73fcc2522e72)), closes [#4136](https://github.com/bitnami/charts/issues/4136)
+* bitnami/mongodb TLS cert generation (#3959) ([97a6b86](https://github.com/bitnami/charts/commit/97a6b8613a71d8fbf1ead89c00a28d2c73c778d5)), closes [#3959](https://github.com/bitnami/charts/issues/3959)
+
+## <small>9.2.6 (2020-10-26)</small>
+
+* [bitnami/mongodb] document `auth.existingSecret` keys (#4099) ([4bd0268](https://github.com/bitnami/charts/commit/4bd0268633bc99a4a4d6f910a8540fffc35ef297)), closes [#4099](https://github.com/bitnami/charts/issues/4099)
+
+## <small>9.2.5 (2020-10-21)</small>
+
+* [bitnami/mongodb] Release 9.2.5 updating components versions ([6585677](https://github.com/bitnami/charts/commit/6585677e51846d705925f15f58191128df0707c3))
+
+## <small>9.2.4 (2020-10-09)</small>
+
+* [bitnami/mongodb] Fix typo in external access namespace (#3965) ([9c93bc8](https://github.com/bitnami/charts/commit/9c93bc8ff4919e203009eb7bf96a8e3f2e5b07c2)), closes [#3965](https://github.com/bitnami/charts/issues/3965)
+
+## <small>9.2.3 (2020-10-08)</small>
+
+* [bitnami/mongodb] Fix mongodb external access (#3937) ([d0d5956](https://github.com/bitnami/charts/commit/d0d595691e6230e56560b00f4f1be46efa5124dd)), closes [#3937](https://github.com/bitnami/charts/issues/3937)
+
+## <small>9.2.2 (2020-09-29)</small>
+
+* [bitnami/mongodb] Add 'auth.replicaSetKey' to schema json (#3812) ([add3303](https://github.com/bitnami/charts/commit/add3303181a502450ae17eb3b46070cd45c1bd0e)), closes [#3812](https://github.com/bitnami/charts/issues/3812)
+
+## <small>9.2.1 (2020-09-21)</small>
+
+* [bitnami/mongodb] Release 9.2.1 updating components versions ([e454d4e](https://github.com/bitnami/charts/commit/e454d4edc0867833dca59c989ab5005635be5c71))
+
+## 9.2.0 (2020-09-21)
+
+* [bitnami/mongodb] Add arbitrary securityContext configuration to improve security (#3718) ([caaf351](https://github.com/bitnami/charts/commit/caaf351a2e96db080376f49cecaf4d26f1b74855)), closes [#3718](https://github.com/bitnami/charts/issues/3718)
+
+## <small>9.1.2 (2020-09-11)</small>
+
+* [bitnami/mongodb] Fix values descriptions (#3656) ([ed2271d](https://github.com/bitnami/charts/commit/ed2271d53c13d6cddde28c4e966bc19328ba952e)), closes [#3656](https://github.com/bitnami/charts/issues/3656)
+
+## <small>9.1.1 (2020-09-09)</small>
+
+* [bitnami/mongodb] Release 9.1.1 updating components versions ([5885fb1](https://github.com/bitnami/charts/commit/5885fb1012f4335d53d8e819e60d58e546358334))
+
+## 9.1.0 (2020-09-07)
+
+* [bitnami/metrics-server] Add source repo (#3577) ([1ed12f9](https://github.com/bitnami/charts/commit/1ed12f96af75322b46afdb2b3d9907c11b13f765)), closes [#3577](https://github.com/bitnami/charts/issues/3577)
+* [bitnami/mongodb] Additional URI options of the MongoDB Exporter (#3590) ([c4c8783](https://github.com/bitnami/charts/commit/c4c878369f0aced7257d33c81cf361d57011c0b9)), closes [#3590](https://github.com/bitnami/charts/issues/3590)
+
+## <small>9.0.1 (2020-08-31)</small>
+
+* [bitnami/mongodb] fix required ReplicaSetKey when auth.enabled=false (#3544) ([2e55615](https://github.com/bitnami/charts/commit/2e556153228b0bd79728adaaea72570ad76aa2a3)), closes [#3544](https://github.com/bitnami/charts/issues/3544)
+
+## 9.0.0 (2020-08-25)
+
+* [bitnami/mongodb] Add notes to upgrade to 9.0.0 (#3511) ([e24e044](https://github.com/bitnami/charts/commit/e24e044e30297722a65fcfaa44b9182f80abb145)), closes [#3511](https://github.com/bitnami/charts/issues/3511)
+* [bitnami/mongodb] Release 9.0.0 updating components versions ([99c83cf](https://github.com/bitnami/charts/commit/99c83cf16905bc0849e7f569264a450cc6425edf))
+
+## <small>8.3.2 (2020-08-21)</small>
+
+* [bitnami/mongodb] Release 8.3.2 updating components versions ([a4ef29d](https://github.com/bitnami/charts/commit/a4ef29dfb1df32b3bc5504c84acd39717d40f9b4))
+
+## <small>8.3.1 (2020-08-18)</small>
+
+* [bitnami/mongodb] Do not check passwords when auth.enabled=false (#3449) ([a3bae01](https://github.com/bitnami/charts/commit/a3bae01ad63912e3b5c4c4742928df09573b6d6c)), closes [#3449](https://github.com/bitnami/charts/issues/3449)
+
+## 8.3.0 (2020-08-13)
+
+* [bitnami/*] Use common helps for upgrade password errors (#3335) ([079f5bd](https://github.com/bitnami/charts/commit/079f5bd6ec59bb058216d6a931449b895517c789)), closes [#3335](https://github.com/bitnami/charts/issues/3335)
+* fix existingSecret on metrics pod (#3370) ([28dfe83](https://github.com/bitnami/charts/commit/28dfe8395c4bb21b9aa50d830c51946b6f6bf45e)), closes [#3370](https://github.com/bitnami/charts/issues/3370)
+
+## <small>8.2.5 (2020-08-10)</small>
+
+* [bitnami/mongodb] Not enable metrics-svc.yaml with metrics.enabled=false (#3346) ([39fc0e2](https://github.com/bitnami/charts/commit/39fc0e2e29d2bf81892374d754d8c3dfba924fb6)), closes [#3346](https://github.com/bitnami/charts/issues/3346)
+* Update Chart.yaml ([b455016](https://github.com/bitnami/charts/commit/b4550164c8572682f36ea6dfe493999840ca0a94))
+
+## <small>8.2.4 (2020-08-07)</small>
+
+* [bitnami/mongodb] Release 8.2.4 updating components versions ([dbfdbb2](https://github.com/bitnami/charts/commit/dbfdbb277b0c9171ca29b52d990d5ef720c3cc06))
+
+## <small>8.2.3 (2020-08-05)</small>
+
+* [bitnami/mongodb] Fix default values for pdb.minAvailable/maxUnavailable (#3336) ([350f665](https://github.com/bitnami/charts/commit/350f6653bfcb3fd161ec71d668e568a73d37a9fd)), closes [#3336](https://github.com/bitnami/charts/issues/3336)
+
+## <small>8.2.2 (2020-08-05)</small>
+
+* [bitnami/*] Fix TL;DR typo in READMEs (#3280) ([3d7ab40](https://github.com/bitnami/charts/commit/3d7ab406fecd64f1af25f53e7d27f03ec95b29a4)), closes [#3280](https://github.com/bitnami/charts/issues/3280)
+* [bitnami/mongodb] Release 8.2.2 updating components versions ([938cd95](https://github.com/bitnami/charts/commit/938cd95e6ae334b4580dddafff0cde68f8f16f46))
+
+## <small>8.2.1 (2020-07-23)</small>
+
+* [bitnami/mongodb] Release 8.2.1 updating components versions ([7dcc46a](https://github.com/bitnami/charts/commit/7dcc46ae23080015895721b9f860e80dbe0bfffd))
+
+## 8.2.0 (2020-07-22)
+
+* [bitnami/mongodb] Allow disabling the MongoDB Arbiter (#3165) ([ed275c5](https://github.com/bitnami/charts/commit/ed275c5f8748e233dfe85b9e1bcea2723a638cd9)), closes [#3165](https://github.com/bitnami/charts/issues/3165)
+
+## <small>8.1.5 (2020-07-21)</small>
+
+* [bitnami/mongodb] Release 8.1.5 updating components versions ([7efaf3f](https://github.com/bitnami/charts/commit/7efaf3fdf94880f64d12c1ec6ed80304ada741cf))
+
+## <small>8.1.4 (2020-07-21)</small>
+
+* [bitnami/mongodb] Fix externalaccess svc (#3172) ([d1f0b7b](https://github.com/bitnami/charts/commit/d1f0b7b22e81e3536121a6ac57b28327935fb7fc)), closes [#3172](https://github.com/bitnami/charts/issues/3172)
+
+## <small>8.1.3 (2020-07-17)</small>
+
+* [bitnami/mongodb] Release 8.1.3 updating components versions ([4e772b1](https://github.com/bitnami/charts/commit/4e772b1f966d4138c485c46811969ef62ed64fc9))
+
+## <small>8.1.2 (2020-07-16)</small>
+
+* [bitnami/mongodb] Fix metrics MongoDB when auth is disabled (#3136) ([bb8b520](https://github.com/bitnami/charts/commit/bb8b520840b54a507f127ccba601aa514f37d725)), closes [#3136](https://github.com/bitnami/charts/issues/3136)
+* Fix MongoDB configmap usage (#3117) ([15a4eaa](https://github.com/bitnami/charts/commit/15a4eaa63b321755e753962ffca32758163460f5)), closes [#3117](https://github.com/bitnami/charts/issues/3117)
+
+## <small>8.1.1 (2020-07-14)</small>
+
+* [bitnami/mongodb] Release 8.1.1 updating components versions ([da1225d](https://github.com/bitnami/charts/commit/da1225d2972ee6e0f48f4091218fd5aaa46a4156))
+
+## 8.1.0 (2020-07-14)
+
+* [bitnami/all] Add categories (#3075) ([63bde06](https://github.com/bitnami/charts/commit/63bde066b87a140fab52264d0522401ab3d63509)), closes [#3075](https://github.com/bitnami/charts/issues/3075)
+* [bitnami/mongodb] Allow custom port names (#3109) ([0336cb3](https://github.com/bitnami/charts/commit/0336cb351a61f0f6093e7ea0771466ecfd0bca4d)), closes [#3109](https://github.com/bitnami/charts/issues/3109)
+
+## <small>8.0.9 (2020-07-08)</small>
+
+* [bitnami/mongodb] Release 8.0.9 updating components versions ([8a2478c](https://github.com/bitnami/charts/commit/8a2478c62a9313df92bbde1dad88100ab08f1a29))
+
+## <small>8.0.8 (2020-07-08)</small>
+
+* [bitnami/mongodb] Fix MongoDB Advertised hostname (#3060) ([d80d489](https://github.com/bitnami/charts/commit/d80d489e21f61c65c08f8c0c1f9377eb77d752bc)), closes [#3060](https://github.com/bitnami/charts/issues/3060)
+
+## <small>8.0.7 (2020-07-07)</small>
+
+* [bitnami/mongodb] Release 8.0.7 updating components versions ([59c43e8](https://github.com/bitnami/charts/commit/59c43e8c395d7b964b9568d2d00975b2e6009b1c))
+
+## <small>8.0.6 (2020-07-07)</small>
+
+* Fix Mongodb helpers sintax (#3041) ([c471a59](https://github.com/bitnami/charts/commit/c471a59057cbc827ed35ec00a7c2a0e0498b2732)), closes [#3041](https://github.com/bitnami/charts/issues/3041)
+
+## <small>8.0.5 (2020-07-06)</small>
+
+* [bitnami/mongodb] Release 8.0.5 updating components versions ([f730ec4](https://github.com/bitnami/charts/commit/f730ec44fad638ada792fa668d0be02987414af2))
+
+## <small>8.0.4 (2020-07-06)</small>
+
+* [bitnami/mongodb] Fix target port when enabling external access (#3027) ([de07253](https://github.com/bitnami/charts/commit/de072538f86428e5a46cc1ce39d7aa7e554314e3)), closes [#3027](https://github.com/bitnami/charts/issues/3027)
+
+## <small>8.0.3 (2020-07-03)</small>
+
+* [bitnami/mongodb] Release 8.0.3 updating components versions ([25b828d](https://github.com/bitnami/charts/commit/25b828d36ba4145541a8646579174c6d132d3a60))
+
+## <small>8.0.2 (2020-07-01)</small>
+
+* [bitnami/mongodb] fix up StatefulSet metrics securityContext (#2982) ([aafdbd5](https://github.com/bitnami/charts/commit/aafdbd50759edf62b48b6e4a03093d63a2f77506)), closes [#2982](https://github.com/bitnami/charts/issues/2982)
+
+## <small>8.0.1 (2020-06-30)</small>
+
+* [bitnami/mongodb] Release 8.0.1 updating components versions ([54aa501](https://github.com/bitnami/charts/commit/54aa501b7f6633c437add6eb260f9b3f16179f5f))
+
+## 8.0.0 (2020-06-30)
+
+* [bitnami/mongodb] Refactor MongoDB exposure (#2918) ([a55ce7b](https://github.com/bitnami/charts/commit/a55ce7b2c35cdbbddf68f0933709e05ededd8af0)), closes [#2918](https://github.com/bitnami/charts/issues/2918)
+
+## <small>7.14.8 (2020-06-19)</small>
+
+* [bitnami/mongodb] Release 7.14.8 updating components versions ([fd66bb3](https://github.com/bitnami/charts/commit/fd66bb3f9160a5459c647813e5d6b9ec16e67ed6))
+* [multiple charts] Update hidden properties in the different JSON schemas (#2871) ([4cff6ba](https://github.com/bitnami/charts/commit/4cff6ba8b0013b6dc368a1e7986c393e8447e75b)), closes [#2871](https://github.com/bitnami/charts/issues/2871)
+
+## <small>7.14.7 (2020-06-16)</small>
+
+* MongoDB tolerations default value (#2850) ([abc650a](https://github.com/bitnami/charts/commit/abc650a51260ba36923769d12a00a76a8be028d7)), closes [#2850](https://github.com/bitnami/charts/issues/2850)
+
+## <small>7.14.6 (2020-06-11)</small>
+
+* [bitnami/mongodb] Release 7.14.6 updating components versions ([abdb47f](https://github.com/bitnami/charts/commit/abdb47f0cfba2b86e9379ef7e007e252d4e25eda))
+* [bitnami/several] Add instructions about how to use different branches (#2785) ([c315cb0](https://github.com/bitnami/charts/commit/c315cb078a4cef97ff53cf2066b34add3f2926ba)), closes [#2785](https://github.com/bitnami/charts/issues/2785)
+
+## <small>7.14.5 (2020-06-02)</small>
+
+* [bitnami/mongodb] Release 7.14.5 updating components versions ([d17d2b2](https://github.com/bitnami/charts/commit/d17d2b2fb1048a5241799509b878fcbb318294d6))
+
+## <small>7.14.4 (2020-06-02)</small>
+
+* [bitnami/mongodb] Rename serviceaccount.yml to serviceaccount.yaml (#2710) ([9ea3da1](https://github.com/bitnami/charts/commit/9ea3da107e1c655d26a3042f5bad2094d40bb4eb)), closes [#2710](https://github.com/bitnami/charts/issues/2710)
+
+## <small>7.14.3 (2020-05-29)</small>
+
+* [bitnami/mongodb] Release 7.14.3 updating components versions ([83e99f9](https://github.com/bitnami/charts/commit/83e99f9c7728e0377929fb0800eeffd2759aa0f7))
+
+## <small>7.14.2 (2020-05-21)</small>
+
+* [bitnami/mongodb] Release 7.14.2 updating components versions ([e17eeb4](https://github.com/bitnami/charts/commit/e17eeb4ed644deff5139ba6100d6f3761d12e2e8))
+* update bitnami/common to be compatible with helm v2.12+ (#2615) ([c7751eb](https://github.com/bitnami/charts/commit/c7751eb5764e468e1854b58a1b8491d2b13e0a4a)), closes [#2615](https://github.com/bitnami/charts/issues/2615)
+
+## <small>7.14.1 (2020-05-12)</small>
+
+* [bitnami/mongodb] Remove useless define functions (#2576) ([02a6c10](https://github.com/bitnami/charts/commit/02a6c10b689739776616371cfe2650c3b0cf84ea)), closes [#2576](https://github.com/bitnami/charts/issues/2576)
+
+## 7.14.0 (2020-05-04)
+
+* [bitnami/mongodb] add storageClass field for secondary in persistence (#2407) ([da5be26](https://github.com/bitnami/charts/commit/da5be265f7dab6159509789a72529e164453f70f)), closes [#2407](https://github.com/bitnami/charts/issues/2407)
+
+## <small>7.13.2 (2020-05-01)</small>
+
+* [bitnami/mongodb] Corrected conditional check for clusterDomain and revert defaults (#2477) ([d30368c](https://github.com/bitnami/charts/commit/d30368c2986232b71004f29b569cf23b7109e2f2)), closes [#2477](https://github.com/bitnami/charts/issues/2477) [#2340](https://github.com/bitnami/charts/issues/2340)
+
+## <small>7.13.1 (2020-05-01)</small>
+
+* [bitnami/mongodb] clusterDomain values forces to use only FQDN (#2340) ([4985844](https://github.com/bitnami/charts/commit/49858447aef3d8005073f167d6e3f84373ec8b36)), closes [#2340](https://github.com/bitnami/charts/issues/2340)
+* [bitnami/mongodb] Release 7.13.1 updating components versions ([a0b7f1f](https://github.com/bitnami/charts/commit/a0b7f1f237515a8877000d12219e201dafc0c575))
+
+## 7.13.0 (2020-04-23)
+
+* [bitnami/mongodb] add nodeSelector option for secondary statefulset (#2398) ([be173dc](https://github.com/bitnami/charts/commit/be173dc85d219332f551923e2ac6b42049fd6a9c)), closes [#2398](https://github.com/bitnami/charts/issues/2398)
+
+## <small>7.12.1 (2020-04-23)</small>
+
+* [bitnami/mongodb] Release 7.12.1 updating components versions ([6c96a04](https://github.com/bitnami/charts/commit/6c96a042473ab7cf3a50a82c41bfe9fd396132ee))
+
+## 7.12.0 (2020-04-23)
+
+* [bitnami/mongodb] allow arbiter to run on a different nodeSelector (#2370) ([01cb35c](https://github.com/bitnami/charts/commit/01cb35c8b16107a30cfe4dc281056a9dcb5381a4)), closes [#2370](https://github.com/bitnami/charts/issues/2370)
+
+## <small>7.11.1 (2020-04-22)</small>
+
+* [bitnami/mongodb] Release 7.11.1 updating components versions ([59c8ec8](https://github.com/bitnami/charts/commit/59c8ec8ab645eab89925ff012a5c4c5f4ac00656))
+
+## 7.11.0 (2020-04-22)
+
+* [bitnami/mongodb] adding local and global namespace overrides for mongodb (#2351) ([055679a](https://github.com/bitnami/charts/commit/055679aac7c213f82bb1bd25c3d73c377cfaf1dc)), closes [#2351](https://github.com/bitnami/charts/issues/2351)
+
+## <small>7.10.13 (2020-04-22)</small>
+
+* [bitnami/mongodb] Release 7.10.13 updating components versions ([dd78f46](https://github.com/bitnami/charts/commit/dd78f46cf47a784544aeab50b319762b53062938))
+
+## <small>7.10.12 (2020-04-17)</small>
+
+* [bitnami/mongodb] Release 7.10.12 updating components versions ([aa69bdd](https://github.com/bitnami/charts/commit/aa69bdd399f5a4e51239f93a165ee6f55913403f))
+
+## <small>7.10.11 (2020-04-17)</small>
+
+* [bitnami/mongodb] Release 7.10.11 updating components versions ([3bbac20](https://github.com/bitnami/charts/commit/3bbac20572444c4c42ee43d0b7c44f706535e474))
+
+## <small>7.10.10 (2020-04-06)</small>
+
+* [bitnami/mongodb] Release 7.10.10 updating components versions ([f44ec94](https://github.com/bitnami/charts/commit/f44ec9461d746b8a455f3afc0219a45b946bce27))
+
+## <small>7.10.9 (2020-04-06)</small>
+
+* [bitnami/mongodb] add ALLOW_EMPTY_PASSWORD=yes when usePassword=false (#2091) ([ff1db9d](https://github.com/bitnami/charts/commit/ff1db9d4264e63ff3afb340ddaf0a4ff89ff8a82)), closes [#2091](https://github.com/bitnami/charts/issues/2091)
+
+## <small>7.10.8 (2020-04-06)</small>
+
+* [bitnami/mongodb] Fix indentation of metrics.resources (#2224) ([26ba8a0](https://github.com/bitnami/charts/commit/26ba8a0c8bc56141c6e6dbc07eb2d3830e0f57fb)), closes [#2224](https://github.com/bitnami/charts/issues/2224)
+
+## <small>7.10.7 (2020-04-03)</small>
+
+* [bitnami/mongodb]: Fix indentation on extraVolumeMounts in deployment-standalone.yaml (#2201) ([fe54855](https://github.com/bitnami/charts/commit/fe5485523a7c6447de4d49c6fa68b8e8ab6d59d8)), closes [#2201](https://github.com/bitnami/charts/issues/2201)
+
+## <small>7.10.6 (2020-03-31)</small>
+
+* [bitnami/mongodb] fix indent error in resources (#2164) ([420efdd](https://github.com/bitnami/charts/commit/420efdd0e394c4676bc7376d8b5cac35ecba6ffd)), closes [#2164](https://github.com/bitnami/charts/issues/2164) [#2163](https://github.com/bitnami/charts/issues/2163) [#2163](https://github.com/bitnami/charts/issues/2163)
+* [bitnami/mongodb] Fix indentation error (#2149) ([0b9ea37](https://github.com/bitnami/charts/commit/0b9ea37ac2495884613269bc70401e4a6b53c6cd)), closes [#2149](https://github.com/bitnami/charts/issues/2149)
+
+## <small>7.10.5 (2020-03-27)</small>
+
+* [bitnami/mongodb] Release 7.10.5 updating components versions ([a922609](https://github.com/bitnami/charts/commit/a922609db168637c03652e255c551f1a2dd5efc2))
+
+## <small>7.10.4 (2020-03-26)</small>
+
+* [bitnami/mongodb] Release 7.10.4 updating components versions ([c5538a8](https://github.com/bitnami/charts/commit/c5538a86babea164117d278e53dbeb5bea72beea))
+
+## <small>7.10.3 (2020-03-25)</small>
+
+* [bitnami/mongodb] Fix indentation error (#2139) ([886a2c0](https://github.com/bitnami/charts/commit/886a2c0a5823846906b51c200c53a45763656e2a)), closes [#2139](https://github.com/bitnami/charts/issues/2139)
+
+## <small>7.10.2 (2020-03-25)</small>
+
+* [bitnami/mongodb] Fix minor spelling error 'enalbed' (#2129) ([be41ed7](https://github.com/bitnami/charts/commit/be41ed7ee93282a1907feabf333ba55f8e45a041)), closes [#2129](https://github.com/bitnami/charts/issues/2129)
+* [bitnami/mongodb] Release 7.10.2 updating components versions ([15b463d](https://github.com/bitnami/charts/commit/15b463d570e67fa8889342bc72a60089b5a46b18))
+
+## <small>7.10.1 (2020-03-25)</small>
+
+* [bitnami/mongodb] Release 7.10.1 updating components versions ([caba123](https://github.com/bitnami/charts/commit/caba1238592e52f58652a3c8c582b8d9c7c58780))
+
+## 7.10.0 (2020-03-24)
+
+* [bitnami/mongodb] Allow using existingClaim in the cluster primary node (#2101) ([d9fcba3](https://github.com/bitnami/charts/commit/d9fcba3a3d5ccf67d2e3281baea102ae9885f90b)), closes [#2101](https://github.com/bitnami/charts/issues/2101)
+
+## <small>7.9.1 (2020-03-23)</small>
+
+* [bitnami/mongodb] Issue 2096. Encode @ : in username / password when connect to mongo (#2099) ([39ec8d6](https://github.com/bitnami/charts/commit/39ec8d6dec88339da666abf036c78e7fdd41a3cd)), closes [#2099](https://github.com/bitnami/charts/issues/2099)
+
+## 7.9.0 (2020-03-23)
+
+* [bitnami/mongodb] Fix svc name in arbitrer (#2076) ([301bb18](https://github.com/bitnami/charts/commit/301bb18b0f8455d6f64c26aedd50ee9d7c74c221)), closes [#2076](https://github.com/bitnami/charts/issues/2076)
+* Add serviceAccount.create and serviceAccount.name to mongodb chart (#2106) ([20312fc](https://github.com/bitnami/charts/commit/20312fc012d33f354ab0fde5d0b18d56efb56ba2)), closes [#2106](https://github.com/bitnami/charts/issues/2106)
+
+## <small>7.8.10 (2020-03-11)</small>
+
+* [bitnami/mongodb] Release 7.8.10 updating components versions ([9601c81](https://github.com/bitnami/charts/commit/9601c816aa9c384291a12e71a9b2c63830e519d7))
+
+## <small>7.8.9 (2020-03-11)</small>
+
+* Move charts from upstreamed folder to bitnami (#2032) ([a0e44f7](https://github.com/bitnami/charts/commit/a0e44f7d6a10b8b5643186130ea420887cb72c7c)), closes [#2032](https://github.com/bitnami/charts/issues/2032)
index 73c8bab..62cc76c 100644 (file)
@@ -1,22 +1,23 @@
-# Copyright VMware, Inc.
+# Copyright Broadcom, Inc. All Rights Reserved.
 # SPDX-License-Identifier: APACHE-2.0
 
 annotations:
   category: Database
-  licenses: Apache-2.0
   images: |
     - name: kubectl
-      image: docker.io/bitnami/kubectl:1.29.2-debian-12-r1
+      image: docker.io/bitnami/kubectl:1.33.0-debian-12-r1
     - name: mongodb
-      image: docker.io/bitnami/mongodb:7.0.5-debian-12-r4
+      image: docker.io/bitnami/mongodb:8.0.9-debian-12-r0
     - name: mongodb-exporter
-      image: docker.io/bitnami/mongodb-exporter:0.40.0-debian-12-r11
+      image: docker.io/bitnami/mongodb-exporter:0.44.0-debian-12-r5
     - name: nginx
-      image: docker.io/bitnami/nginx:1.25.4-debian-12-r1
+      image: docker.io/bitnami/nginx:1.28.0-debian-12-r0
     - name: os-shell
-      image: docker.io/bitnami/os-shell:12-debian-12-r15
+      image: docker.io/bitnami/os-shell:12-debian-12-r43
+  licenses: Apache-2.0
+  tanzuCategory: service
 apiVersion: v2
-appVersion: 7.0.5
+appVersion: 8.0.9
 dependencies:
 - name: common
   repository: 'file://./common'
@@ -24,9 +25,11 @@ dependencies:
   tags:
   - bitnami-common
   version: 2.x.x
-description: MongoDB(R) is a relational open source NoSQL database. Easy to use, it stores data in JSON-like documents. Automated scalability and high-performance. Ideal for developing cloud native applications.
+description: MongoDB(R) is a relational open source NoSQL database. Easy to use, it
+  stores data in JSON-like documents. Automated scalability and high-performance.
+  Ideal for developing cloud native applications.
 home: https://bitnami.com
-icon: https://bitnami.com/assets/stacks/mongodb/img/mongodb-stack-220x234.png
+icon: https://dyltqmyl993wv.cloudfront.net/assets/stacks/mongodb/img/mongodb-stack-220x234.png
 keywords:
 - mongodb
 - database
@@ -35,9 +38,9 @@ keywords:
 - replicaset
 - replication
 maintainers:
-- name: VMware, Inc.
+- name: Broadcom, Inc. All Rights Reserved.
   url: https://github.com/bitnami/charts
 name: mongodb
 sources:
 - https://github.com/bitnami/charts/tree/main/bitnami/mongodb
-version: 14.12.2
+version: 16.5.7
index 065e047..0de3999 100644 (file)
@@ -1,12 +1,12 @@
 <!--- app-name: MongoDB&reg; -->
 
-# MongoDB(R) packaged by Bitnami
+# MongoDB&reg; packaged by Bitnami
 
-MongoDB(R) is a relational open source NoSQL database. Easy to use, it stores data in JSON-like documents. Automated scalability and high-performance. Ideal for developing cloud native applications.
+MongoDB&reg; is a relational open source NoSQL database. Easy to use, it stores data in JSON-like documents. Automated scalability and high-performance. Ideal for developing cloud native applications.
 
 [Overview of MongoDB&reg;](http://www.mongodb.org)
 
-Disclaimer: The respective trademarks mentioned in the offering are owned by the respective companies. We do not provide a commercial license for any of these products. This listing has an open-source license. MongoDB(R) is run and maintained by MongoDB, which is a completely separate project from Bitnami.
+Disclaimer: The respective trademarks mentioned in the offering are owned by the respective companies. We do not provide a commercial license for any of these products. This listing has an open-source license. MongoDB&reg; is run and maintained by MongoDB, which is a completely separate project from Bitnami.
 
 ## TL;DR
 
@@ -14,44 +14,12 @@ Disclaimer: The respective trademarks mentioned in the offering are owned by the
 helm install my-release oci://registry-1.docker.io/bitnamicharts/mongodb
 ```
 
-Looking to use MongoDBreg; in production? Try [VMware Tanzu Application Catalog](https://bitnami.com/enterprise), the enterprise edition of Bitnami Application Catalog.
+Looking to use MongoDBreg; in production? Try [VMware Tanzu Application Catalog](https://bitnami.com/enterprise), the commercial edition of the Bitnami catalog.
 
 ## Introduction
 
 This chart bootstraps a [MongoDB(&reg;)](https://github.com/bitnami/containers/tree/main/bitnami/mongodb) deployment on a [Kubernetes](https://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
 
-Bitnami charts can be used with [Kubeapps](https://kubeapps.dev/) for deployment and management of Helm Charts in clusters.
-
-## Prerequisites
-
-- Kubernetes 1.23+
-- Helm 3.8.0+
-- PV provisioner support in the underlying infrastructure
-
-## Installing the Chart
-
-To install the chart with the release name `my-release`:
-
-```console
-helm install my-release oci://REGISTRY_NAME/REPOSITORY_NAME/mongodb
-```
-
-> Note: You need to substitute the placeholders `REGISTRY_NAME` and `REPOSITORY_NAME` with a reference to your Helm chart registry and repository. For example, in the case of Bitnami, you need to use `REGISTRY_NAME=registry-1.docker.io` and `REPOSITORY_NAME=bitnamicharts`.
-
-The command deploys MongoDB(&reg;) on the Kubernetes cluster in the default configuration. The [Parameters](#parameters) section lists the parameters that can be configured during installation.
-
-> **Tip**: List all releases using `helm list`
-
-## Uninstalling the Chart
-
-To uninstall/delete the `my-release` deployment:
-
-```console
-helm delete my-release
-```
-
-The command removes all the Kubernetes components associated with the chart and deletes the release.
-
 ## Architecture
 
 This chart allows installing MongoDB(&reg;) using two different architecture setups: `standalone` or `replicaset`. Use the `architecture` parameter to choose the one to use:
@@ -125,625 +93,53 @@ There are no services load balancing requests between MongoDB(&reg;) nodes; inst
 
 > NOTE: Although the first replica is initially assigned the primary role, any of the secondary nodes can become the primary if it is down, or during upgrades. Do not make any assumption about what replica has the primary role. Instead, configure your MongoDB(&reg;) client with the list of MongoDB(&reg;) hostnames so it can dynamically choose the node to send requests.
 
-## Parameters
-
-### Global parameters
-
-| Name                       | Description                                                                                                            | Value |
-| -------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ----- |
-| `global.imageRegistry`     | Global Docker image registry                                                                                           | `""`  |
-| `global.imagePullSecrets`  | Global Docker registry secret names as an array                                                                        | `[]`  |
-| `global.storageClass`      | Global StorageClass for Persistent Volume(s)                                                                           | `""`  |
-| `global.namespaceOverride` | Override the namespace for resource deployed by the chart, but can itself be overridden by the local namespaceOverride | `""`  |
-
-### Common parameters
-
-| Name                      | Description                                                                                               | Value           |
-| ------------------------- | --------------------------------------------------------------------------------------------------------- | --------------- |
-| `nameOverride`            | String to partially override mongodb.fullname template (will maintain the release name)                   | `""`            |
-| `fullnameOverride`        | String to fully override mongodb.fullname template                                                        | `""`            |
-| `namespaceOverride`       | String to fully override common.names.namespace                                                           | `""`            |
-| `kubeVersion`             | Force target Kubernetes version (using Helm capabilities if not set)                                      | `""`            |
-| `clusterDomain`           | Default Kubernetes cluster domain                                                                         | `cluster.local` |
-| `extraDeploy`             | Array of extra objects to deploy with the release                                                         | `[]`            |
-| `commonLabels`            | Add labels to all the deployed resources (sub-charts are not considered). Evaluated as a template         | `{}`            |
-| `commonAnnotations`       | Common annotations to add to all Mongo resources (sub-charts are not considered). Evaluated as a template | `{}`            |
-| `topologyKey`             | Override common lib default topology key. If empty - "kubernetes.io/hostname" is used                     | `""`            |
-| `serviceBindings.enabled` | Create secret for service binding (Experimental)                                                          | `false`         |
-| `enableServiceLinks`      | Whether information about services should be injected into pod's environment variable                     | `true`          |
-| `diagnosticMode.enabled`  | Enable diagnostic mode (all probes will be disabled and the command will be overridden)                   | `false`         |
-| `diagnosticMode.command`  | Command to override all containers in the deployment                                                      | `["sleep"]`     |
-| `diagnosticMode.args`     | Args to override all containers in the deployment                                                         | `["infinity"]`  |
-
-### MongoDB(&reg;) parameters
-
-| Name                             | Description                                                                                                                                                                                                        | Value                     |
-| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------- |
-| `image.registry`                 | MongoDB(&reg;) image registry                                                                                                                                                                                      | `REGISTRY_NAME`           |
-| `image.repository`               | MongoDB(&reg;) image registry                                                                                                                                                                                      | `REPOSITORY_NAME/mongodb` |
-| `image.digest`                   | MongoDB(&reg;) image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag                                                                                                     | `""`                      |
-| `image.pullPolicy`               | MongoDB(&reg;) image pull policy                                                                                                                                                                                   | `IfNotPresent`            |
-| `image.pullSecrets`              | Specify docker-registry secret names as an array                                                                                                                                                                   | `[]`                      |
-| `image.debug`                    | Set to true if you would like to see extra information on logs                                                                                                                                                     | `false`                   |
-| `schedulerName`                  | Name of the scheduler (other than default) to dispatch pods                                                                                                                                                        | `""`                      |
-| `architecture`                   | MongoDB(&reg;) architecture (`standalone` or `replicaset`)                                                                                                                                                         | `standalone`              |
-| `useStatefulSet`                 | Set to true to use a StatefulSet instead of a Deployment (only when `architecture=standalone`)                                                                                                                     | `false`                   |
-| `auth.enabled`                   | Enable authentication                                                                                                                                                                                              | `true`                    |
-| `auth.rootUser`                  | MongoDB(&reg;) root user                                                                                                                                                                                           | `root`                    |
-| `auth.rootPassword`              | MongoDB(&reg;) root password                                                                                                                                                                                       | `""`                      |
-| `auth.usernames`                 | List of custom users to be created during the initialization                                                                                                                                                       | `[]`                      |
-| `auth.passwords`                 | List of passwords for the custom users set at `auth.usernames`                                                                                                                                                     | `[]`                      |
-| `auth.databases`                 | List of custom databases to be created during the initialization                                                                                                                                                   | `[]`                      |
-| `auth.username`                  | DEPRECATED: use `auth.usernames` instead                                                                                                                                                                           | `""`                      |
-| `auth.password`                  | DEPRECATED: use `auth.passwords` instead                                                                                                                                                                           | `""`                      |
-| `auth.database`                  | DEPRECATED: use `auth.databases` instead                                                                                                                                                                           | `""`                      |
-| `auth.replicaSetKey`             | Key used for authentication in the replicaset (only when `architecture=replicaset`)                                                                                                                                | `""`                      |
-| `auth.existingSecret`            | Existing secret with MongoDB(&reg;) credentials (keys: `mongodb-passwords`, `mongodb-root-password`, `mongodb-metrics-password`, `mongodb-replica-set-key`)                                                        | `""`                      |
-| `tls.enabled`                    | Enable MongoDB(&reg;) TLS support between nodes in the cluster as well as between mongo clients and nodes                                                                                                          | `false`                   |
-| `tls.mTLS.enabled`               | IF TLS support is enabled, require clients to provide certificates                                                                                                                                                 | `true`                    |
-| `tls.autoGenerated`              | Generate a custom CA and self-signed certificates                                                                                                                                                                  | `true`                    |
-| `tls.existingSecret`             | Existing secret with TLS certificates (keys: `mongodb-ca-cert`, `mongodb-ca-key`)                                                                                                                                  | `""`                      |
-| `tls.caCert`                     | Custom CA certificated (base64 encoded)                                                                                                                                                                            | `""`                      |
-| `tls.caKey`                      | CA certificate private key (base64 encoded)                                                                                                                                                                        | `""`                      |
-| `tls.pemChainIncluded`           | Flag to denote that the Certificate Authority (CA) certificates are bundled with the endpoint cert.                                                                                                                | `false`                   |
-| `tls.standalone.existingSecret`  | Existing secret with TLS certificates (`tls.key`, `tls.crt`, `ca.crt`) or (`tls.key`, `tls.crt`) with tls.pemChainIncluded set as enabled.                                                                         | `""`                      |
-| `tls.replicaset.existingSecrets` | Array of existing secrets with TLS certificates (`tls.key`, `tls.crt`, `ca.crt`) or (`tls.key`, `tls.crt`) with tls.pemChainIncluded set as enabled.                                                               | `[]`                      |
-| `tls.hidden.existingSecrets`     | Array of existing secrets with TLS certificates (`tls.key`, `tls.crt`, `ca.crt`) or (`tls.key`, `tls.crt`) with tls.pemChainIncluded set as enabled.                                                               | `[]`                      |
-| `tls.arbiter.existingSecret`     | Existing secret with TLS certificates (`tls.key`, `tls.crt`, `ca.crt`) or (`tls.key`, `tls.crt`) with tls.pemChainIncluded set as enabled.                                                                         | `""`                      |
-| `tls.image.registry`             | Init container TLS certs setup image registry                                                                                                                                                                      | `REGISTRY_NAME`           |
-| `tls.image.repository`           | Init container TLS certs setup image repository                                                                                                                                                                    | `REPOSITORY_NAME/nginx`   |
-| `tls.image.digest`               | Init container TLS certs setup image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag                                                                                     | `""`                      |
-| `tls.image.pullPolicy`           | Init container TLS certs setup image pull policy                                                                                                                                                                   | `IfNotPresent`            |
-| `tls.image.pullSecrets`          | Init container TLS certs specify docker-registry secret names as an array                                                                                                                                          | `[]`                      |
-| `tls.extraDnsNames`              | Add extra dns names to the CA, can solve x509 auth issue for pod clients                                                                                                                                           | `[]`                      |
-| `tls.mode`                       | Allows to set the tls mode which should be used when tls is enabled (options: `allowTLS`, `preferTLS`, `requireTLS`)                                                                                               | `requireTLS`              |
-| `tls.resourcesPreset`            | Set container resources according to one common preset (allowed values: none, nano, small, medium, large, xlarge, 2xlarge). This is ignored if tls.resources is set (tls.resources is recommended for production). | `none`                    |
-| `tls.resources`                  | Set container requests and limits for different resources like CPU or memory (essential for production workloads)                                                                                                  | `{}`                      |
-| `tls.securityContext`            | Init container generate-tls-cert Security context                                                                                                                                                                  | `{}`                      |
-| `automountServiceAccountToken`   | Mount Service Account token in pod                                                                                                                                                                                 | `false`                   |
-| `hostAliases`                    | Add deployment host aliases                                                                                                                                                                                        | `[]`                      |
-| `replicaSetName`                 | Name of the replica set (only when `architecture=replicaset`)                                                                                                                                                      | `rs0`                     |
-| `replicaSetHostnames`            | Enable DNS hostnames in the replicaset config (only when `architecture=replicaset`)                                                                                                                                | `true`                    |
-| `enableIPv6`                     | Switch to enable/disable IPv6 on MongoDB(&reg;)                                                                                                                                                                    | `false`                   |
-| `directoryPerDB`                 | Switch to enable/disable DirectoryPerDB on MongoDB(&reg;)                                                                                                                                                          | `false`                   |
-| `systemLogVerbosity`             | MongoDB(&reg;) system log verbosity level                                                                                                                                                                          | `0`                       |
-| `disableSystemLog`               | Switch to enable/disable MongoDB(&reg;) system log                                                                                                                                                                 | `false`                   |
-| `disableJavascript`              | Switch to enable/disable MongoDB(&reg;) server-side JavaScript execution                                                                                                                                           | `false`                   |
-| `enableJournal`                  | Switch to enable/disable MongoDB(&reg;) Journaling                                                                                                                                                                 | `true`                    |
-| `configuration`                  | MongoDB(&reg;) configuration file to be used for Primary and Secondary nodes                                                                                                                                       | `""`                      |
-
-### replicaSetConfigurationSettings settings applied during runtime (not via configuration file)
-
-| Name                                            | Description                                                                                         | Value   |
-| ----------------------------------------------- | --------------------------------------------------------------------------------------------------- | ------- |
-| `replicaSetConfigurationSettings.enabled`       | Enable MongoDB(&reg;) Switch to enable/disable configuring MongoDB(&reg;) run time rs.conf settings | `false` |
-| `replicaSetConfigurationSettings.configuration` | run-time rs.conf settings                                                                           | `{}`    |
-| `existingConfigmap`                             | Name of existing ConfigMap with MongoDB(&reg;) configuration for Primary and Secondary nodes        | `""`    |
-| `initdbScripts`                                 | Dictionary of initdb scripts                                                                        | `{}`    |
-| `initdbScriptsConfigMap`                        | Existing ConfigMap with custom initdb scripts                                                       | `""`    |
-| `command`                                       | Override default container command (useful when using custom images)                                | `[]`    |
-| `args`                                          | Override default container args (useful when using custom images)                                   | `[]`    |
-| `extraFlags`                                    | MongoDB(&reg;) additional command line flags                                                        | `[]`    |
-| `extraEnvVars`                                  | Extra environment variables to add to MongoDB(&reg;) pods                                           | `[]`    |
-| `extraEnvVarsCM`                                | Name of existing ConfigMap containing extra env vars                                                | `""`    |
-| `extraEnvVarsSecret`                            | Name of existing Secret containing extra env vars (in case of sensitive data)                       | `""`    |
-
-### MongoDB(&reg;) statefulset parameters
-
-| Name                                                | Description                                                                                                                                                                                                | Value            |
-| --------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- |
-| `annotations`                                       | Additional labels to be added to the MongoDB(&reg;) statefulset. Evaluated as a template                                                                                                                   | `{}`             |
-| `labels`                                            | Annotations to be added to the MongoDB(&reg;) statefulset. Evaluated as a template                                                                                                                         | `{}`             |
-| `replicaCount`                                      | Number of MongoDB(&reg;) nodes                                                                                                                                                                             | `2`              |
-| `updateStrategy.type`                               | Strategy to use to replace existing MongoDB(&reg;) pods. When architecture=standalone and useStatefulSet=false,                                                                                            | `RollingUpdate`  |
-| `podManagementPolicy`                               | Pod management policy for MongoDB(&reg;)                                                                                                                                                                   | `OrderedReady`   |
-| `podAffinityPreset`                                 | MongoDB(&reg;) Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`                                                                                                         | `""`             |
-| `podAntiAffinityPreset`                             | MongoDB(&reg;) Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`                                                                                                    | `soft`           |
-| `nodeAffinityPreset.type`                           | MongoDB(&reg;) Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard`                                                                                                   | `""`             |
-| `nodeAffinityPreset.key`                            | MongoDB(&reg;) Node label key to match Ignored if `affinity` is set.                                                                                                                                       | `""`             |
-| `nodeAffinityPreset.values`                         | MongoDB(&reg;) Node label values to match. Ignored if `affinity` is set.                                                                                                                                   | `[]`             |
-| `affinity`                                          | MongoDB(&reg;) Affinity for pod assignment                                                                                                                                                                 | `{}`             |
-| `nodeSelector`                                      | MongoDB(&reg;) Node labels for pod assignment                                                                                                                                                              | `{}`             |
-| `tolerations`                                       | MongoDB(&reg;) Tolerations for pod assignment                                                                                                                                                              | `[]`             |
-| `topologySpreadConstraints`                         | MongoDB(&reg;) Spread Constraints for Pods                                                                                                                                                                 | `[]`             |
-| `lifecycleHooks`                                    | LifecycleHook for the MongoDB(&reg;) container(s) to automate configuration before or after startup                                                                                                        | `{}`             |
-| `terminationGracePeriodSeconds`                     | MongoDB(&reg;) Termination Grace Period                                                                                                                                                                    | `""`             |
-| `podLabels`                                         | MongoDB(&reg;) pod labels                                                                                                                                                                                  | `{}`             |
-| `podAnnotations`                                    | MongoDB(&reg;) Pod annotations                                                                                                                                                                             | `{}`             |
-| `priorityClassName`                                 | Name of the existing priority class to be used by MongoDB(&reg;) pod(s)                                                                                                                                    | `""`             |
-| `runtimeClassName`                                  | Name of the runtime class to be used by MongoDB(&reg;) pod(s)                                                                                                                                              | `""`             |
-| `podSecurityContext.enabled`                        | Enable MongoDB(&reg;) pod(s)' Security Context                                                                                                                                                             | `true`           |
-| `podSecurityContext.fsGroupChangePolicy`            | Set filesystem group change policy                                                                                                                                                                         | `Always`         |
-| `podSecurityContext.supplementalGroups`             | Set filesystem extra groups                                                                                                                                                                                | `[]`             |
-| `podSecurityContext.fsGroup`                        | Group ID for the volumes of the MongoDB(&reg;) pod(s)                                                                                                                                                      | `1001`           |
-| `podSecurityContext.sysctls`                        | sysctl settings of the MongoDB(&reg;) pod(s)'                                                                                                                                                              | `[]`             |
-| `containerSecurityContext.enabled`                  | Enabled containers' Security Context                                                                                                                                                                       | `true`           |
-| `containerSecurityContext.seLinuxOptions`           | Set SELinux options in container                                                                                                                                                                           | `nil`            |
-| `containerSecurityContext.runAsUser`                | Set containers' Security Context runAsUser                                                                                                                                                                 | `1001`           |
-| `containerSecurityContext.runAsGroup`               | Set containers' Security Context runAsGroup                                                                                                                                                                | `0`              |
-| `containerSecurityContext.runAsNonRoot`             | Set container's Security Context runAsNonRoot                                                                                                                                                              | `true`           |
-| `containerSecurityContext.privileged`               | Set container's Security Context privileged                                                                                                                                                                | `false`          |
-| `containerSecurityContext.readOnlyRootFilesystem`   | Set container's Security Context readOnlyRootFilesystem                                                                                                                                                    | `false`          |
-| `containerSecurityContext.allowPrivilegeEscalation` | Set container's Security Context allowPrivilegeEscalation                                                                                                                                                  | `false`          |
-| `containerSecurityContext.capabilities.drop`        | List of capabilities to be dropped                                                                                                                                                                         | `["ALL"]`        |
-| `containerSecurityContext.seccompProfile.type`      | Set container's Security Context seccomp profile                                                                                                                                                           | `RuntimeDefault` |
-| `resourcesPreset`                                   | Set container resources according to one common preset (allowed values: none, nano, small, medium, large, xlarge, 2xlarge). This is ignored if resources is set (resources is recommended for production). | `none`           |
-| `resources`                                         | Set container requests and limits for different resources like CPU or memory (essential for production workloads)                                                                                          | `{}`             |
-| `containerPorts.mongodb`                            | MongoDB(&reg;) container port                                                                                                                                                                              | `27017`          |
-| `livenessProbe.enabled`                             | Enable livenessProbe                                                                                                                                                                                       | `true`           |
-| `livenessProbe.initialDelaySeconds`                 | Initial delay seconds for livenessProbe                                                                                                                                                                    | `30`             |
-| `livenessProbe.periodSeconds`                       | Period seconds for livenessProbe                                                                                                                                                                           | `20`             |
-| `livenessProbe.timeoutSeconds`                      | Timeout seconds for livenessProbe                                                                                                                                                                          | `10`             |
-| `livenessProbe.failureThreshold`                    | Failure threshold for livenessProbe                                                                                                                                                                        | `6`              |
-| `livenessProbe.successThreshold`                    | Success threshold for livenessProbe                                                                                                                                                                        | `1`              |
-| `readinessProbe.enabled`                            | Enable readinessProbe                                                                                                                                                                                      | `true`           |
-| `readinessProbe.initialDelaySeconds`                | Initial delay seconds for readinessProbe                                                                                                                                                                   | `5`              |
-| `readinessProbe.periodSeconds`                      | Period seconds for readinessProbe                                                                                                                                                                          | `10`             |
-| `readinessProbe.timeoutSeconds`                     | Timeout seconds for readinessProbe                                                                                                                                                                         | `5`              |
-| `readinessProbe.failureThreshold`                   | Failure threshold for readinessProbe                                                                                                                                                                       | `6`              |
-| `readinessProbe.successThreshold`                   | Success threshold for readinessProbe                                                                                                                                                                       | `1`              |
-| `startupProbe.enabled`                              | Enable startupProbe                                                                                                                                                                                        | `false`          |
-| `startupProbe.initialDelaySeconds`                  | Initial delay seconds for startupProbe                                                                                                                                                                     | `5`              |
-| `startupProbe.periodSeconds`                        | Period seconds for startupProbe                                                                                                                                                                            | `20`             |
-| `startupProbe.timeoutSeconds`                       | Timeout seconds for startupProbe                                                                                                                                                                           | `10`             |
-| `startupProbe.failureThreshold`                     | Failure threshold for startupProbe                                                                                                                                                                         | `30`             |
-| `startupProbe.successThreshold`                     | Success threshold for startupProbe                                                                                                                                                                         | `1`              |
-| `customLivenessProbe`                               | Override default liveness probe for MongoDB(&reg;) containers                                                                                                                                              | `{}`             |
-| `customReadinessProbe`                              | Override default readiness probe for MongoDB(&reg;) containers                                                                                                                                             | `{}`             |
-| `customStartupProbe`                                | Override default startup probe for MongoDB(&reg;) containers                                                                                                                                               | `{}`             |
-| `initContainers`                                    | Add additional init containers for the hidden node pod(s)                                                                                                                                                  | `[]`             |
-| `sidecars`                                          | Add additional sidecar containers for the MongoDB(&reg;) pod(s)                                                                                                                                            | `[]`             |
-| `extraVolumeMounts`                                 | Optionally specify extra list of additional volumeMounts for the MongoDB(&reg;) container(s)                                                                                                               | `[]`             |
-| `extraVolumes`                                      | Optionally specify extra list of additional volumes to the MongoDB(&reg;) statefulset                                                                                                                      | `[]`             |
-| `pdb.create`                                        | Enable/disable a Pod Disruption Budget creation for MongoDB(&reg;) pod(s)                                                                                                                                  | `false`          |
-| `pdb.minAvailable`                                  | Minimum number/percentage of MongoDB(&reg;) pods that must still be available after the eviction                                                                                                           | `1`              |
-| `pdb.maxUnavailable`                                | Maximum number/percentage of MongoDB(&reg;) pods that may be made unavailable after the eviction                                                                                                           | `""`             |
-
-### Traffic exposure parameters
-
-| Name                                                          | Description                                                                                                                                                                                                                                                          | Value                     |
-| ------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- |
-| `service.nameOverride`                                        | MongoDB(&reg;) service name                                                                                                                                                                                                                                          | `""`                      |
-| `service.type`                                                | Kubernetes Service type (only for standalone architecture)                                                                                                                                                                                                           | `ClusterIP`               |
-| `service.portName`                                            | MongoDB(&reg;) service port name (only for standalone architecture)                                                                                                                                                                                                  | `mongodb`                 |
-| `service.ports.mongodb`                                       | MongoDB(&reg;) service port.                                                                                                                                                                                                                                         | `27017`                   |
-| `service.nodePorts.mongodb`                                   | Port to bind to for NodePort and LoadBalancer service types (only for standalone architecture)                                                                                                                                                                       | `""`                      |
-| `service.clusterIP`                                           | MongoDB(&reg;) service cluster IP (only for standalone architecture)                                                                                                                                                                                                 | `""`                      |
-| `service.externalIPs`                                         | Specify the externalIP value ClusterIP service type (only for standalone architecture)                                                                                                                                                                               | `[]`                      |
-| `service.loadBalancerIP`                                      | loadBalancerIP for MongoDB(&reg;) Service (only for standalone architecture)                                                                                                                                                                                         | `""`                      |
-| `service.loadBalancerClass`                                   | loadBalancerClass for MongoDB(&reg;) Service (only for standalone architecture)                                                                                                                                                                                      | `""`                      |
-| `service.loadBalancerSourceRanges`                            | Address(es) that are allowed when service is LoadBalancer (only for standalone architecture)                                                                                                                                                                         | `[]`                      |
-| `service.allocateLoadBalancerNodePorts`                       | Wheter to allocate node ports when service type is LoadBalancer                                                                                                                                                                                                      | `true`                    |
-| `service.extraPorts`                                          | Extra ports to expose (normally used with the `sidecar` value)                                                                                                                                                                                                       | `[]`                      |
-| `service.annotations`                                         | Provide any additional annotations that may be required                                                                                                                                                                                                              | `{}`                      |
-| `service.externalTrafficPolicy`                               | service external traffic policy (only for standalone architecture)                                                                                                                                                                                                   | `Local`                   |
-| `service.sessionAffinity`                                     | Control where client requests go, to the same pod or round-robin                                                                                                                                                                                                     | `None`                    |
-| `service.sessionAffinityConfig`                               | Additional settings for the sessionAffinity                                                                                                                                                                                                                          | `{}`                      |
-| `service.headless.annotations`                                | Annotations for the headless service.                                                                                                                                                                                                                                | `{}`                      |
-| `externalAccess.enabled`                                      | Enable Kubernetes external cluster access to MongoDB(&reg;) nodes (only for replicaset architecture)                                                                                                                                                                 | `false`                   |
-| `externalAccess.autoDiscovery.enabled`                        | Enable using an init container to auto-detect external IPs by querying the K8s API                                                                                                                                                                                   | `false`                   |
-| `externalAccess.autoDiscovery.image.registry`                 | Init container auto-discovery image registry                                                                                                                                                                                                                         | `REGISTRY_NAME`           |
-| `externalAccess.autoDiscovery.image.repository`               | Init container auto-discovery image repository                                                                                                                                                                                                                       | `REPOSITORY_NAME/kubectl` |
-| `externalAccess.autoDiscovery.image.digest`                   | Init container auto-discovery image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag                                                                                                                                        | `""`                      |
-| `externalAccess.autoDiscovery.image.pullPolicy`               | Init container auto-discovery image pull policy                                                                                                                                                                                                                      | `IfNotPresent`            |
-| `externalAccess.autoDiscovery.image.pullSecrets`              | Init container auto-discovery image pull secrets                                                                                                                                                                                                                     | `[]`                      |
-| `externalAccess.autoDiscovery.resourcesPreset`                | Set container resources according to one common preset (allowed values: none, nano, small, medium, large, xlarge, 2xlarge). This is ignored if externalAccess.autoDiscovery.resources is set (externalAccess.autoDiscovery.resources is recommended for production). | `none`                    |
-| `externalAccess.autoDiscovery.resources`                      | Set container requests and limits for different resources like CPU or memory (essential for production workloads)                                                                                                                                                    | `{}`                      |
-| `externalAccess.externalMaster.enabled`                       | Use external master for bootstrapping                                                                                                                                                                                                                                | `false`                   |
-| `externalAccess.externalMaster.host`                          | External master host to bootstrap from                                                                                                                                                                                                                               | `""`                      |
-| `externalAccess.externalMaster.port`                          | Port for MongoDB(&reg;) service external master host                                                                                                                                                                                                                 | `27017`                   |
-| `externalAccess.service.type`                                 | Kubernetes Service type for external access. Allowed values: NodePort, LoadBalancer or ClusterIP                                                                                                                                                                     | `LoadBalancer`            |
-| `externalAccess.service.portName`                             | MongoDB(&reg;) port name used for external access when service type is LoadBalancer                                                                                                                                                                                  | `mongodb`                 |
-| `externalAccess.service.ports.mongodb`                        | MongoDB(&reg;) port used for external access when service type is LoadBalancer                                                                                                                                                                                       | `27017`                   |
-| `externalAccess.service.loadBalancerIPs`                      | Array of load balancer IPs for MongoDB(&reg;) nodes                                                                                                                                                                                                                  | `[]`                      |
-| `externalAccess.service.loadBalancerClass`                    | loadBalancerClass when service type is LoadBalancer                                                                                                                                                                                                                  | `""`                      |
-| `externalAccess.service.loadBalancerSourceRanges`             | Address(es) that are allowed when service is LoadBalancer                                                                                                                                                                                                            | `[]`                      |
-| `externalAccess.service.allocateLoadBalancerNodePorts`        | Wheter to allocate node ports when service type is LoadBalancer                                                                                                                                                                                                      | `true`                    |
-| `externalAccess.service.externalTrafficPolicy`                | MongoDB(&reg;) service external traffic policy                                                                                                                                                                                                                       | `Local`                   |
-| `externalAccess.service.nodePorts`                            | Array of node ports used to configure MongoDB(&reg;) advertised hostname when service type is NodePort                                                                                                                                                               | `[]`                      |
-| `externalAccess.service.domain`                               | Domain or external IP used to configure MongoDB(&reg;) advertised hostname when service type is NodePort                                                                                                                                                             | `""`                      |
-| `externalAccess.service.extraPorts`                           | Extra ports to expose (normally used with the `sidecar` value)                                                                                                                                                                                                       | `[]`                      |
-| `externalAccess.service.annotations`                          | Service annotations for external access                                                                                                                                                                                                                              | `{}`                      |
-| `externalAccess.service.sessionAffinity`                      | Control where client requests go, to the same pod or round-robin                                                                                                                                                                                                     | `None`                    |
-| `externalAccess.service.sessionAffinityConfig`                | Additional settings for the sessionAffinity                                                                                                                                                                                                                          | `{}`                      |
-| `externalAccess.hidden.enabled`                               | Enable Kubernetes external cluster access to MongoDB(&reg;) hidden nodes                                                                                                                                                                                             | `false`                   |
-| `externalAccess.hidden.service.type`                          | Kubernetes Service type for external access. Allowed values: NodePort or LoadBalancer                                                                                                                                                                                | `LoadBalancer`            |
-| `externalAccess.hidden.service.portName`                      | MongoDB(&reg;) port name used for external access when service type is LoadBalancer                                                                                                                                                                                  | `mongodb`                 |
-| `externalAccess.hidden.service.ports.mongodb`                 | MongoDB(&reg;) port used for external access when service type is LoadBalancer                                                                                                                                                                                       | `27017`                   |
-| `externalAccess.hidden.service.loadBalancerIPs`               | Array of load balancer IPs for MongoDB(&reg;) nodes                                                                                                                                                                                                                  | `[]`                      |
-| `externalAccess.hidden.service.loadBalancerClass`             | loadBalancerClass when service type is LoadBalancer                                                                                                                                                                                                                  | `""`                      |
-| `externalAccess.hidden.service.loadBalancerSourceRanges`      | Address(es) that are allowed when service is LoadBalancer                                                                                                                                                                                                            | `[]`                      |
-| `externalAccess.hidden.service.allocateLoadBalancerNodePorts` | Wheter to allocate node ports when service type is LoadBalancer                                                                                                                                                                                                      | `true`                    |
-| `externalAccess.hidden.service.externalTrafficPolicy`         | MongoDB(&reg;) service external traffic policy                                                                                                                                                                                                                       | `Local`                   |
-| `externalAccess.hidden.service.nodePorts`                     | Array of node ports used to configure MongoDB(&reg;) advertised hostname when service type is NodePort. Length must be the same as replicaCount                                                                                                                      | `[]`                      |
-| `externalAccess.hidden.service.domain`                        | Domain or external IP used to configure MongoDB(&reg;) advertised hostname when service type is NodePort                                                                                                                                                             | `""`                      |
-| `externalAccess.hidden.service.extraPorts`                    | Extra ports to expose (normally used with the `sidecar` value)                                                                                                                                                                                                       | `[]`                      |
-| `externalAccess.hidden.service.annotations`                   | Service annotations for external access                                                                                                                                                                                                                              | `{}`                      |
-| `externalAccess.hidden.service.sessionAffinity`               | Control where client requests go, to the same pod or round-robin                                                                                                                                                                                                     | `None`                    |
-| `externalAccess.hidden.service.sessionAffinityConfig`         | Additional settings for the sessionAffinity                                                                                                                                                                                                                          | `{}`                      |
-
-### Network policy parameters
-
-| Name                                               | Description                                                                                                                           | Value               |
-| -------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | ------------------- |
-| `networkPolicy.enabled`                            | Specifies whether a NetworkPolicy should be created                                                                                   | `true`              |
-| `networkPolicy.allowExternal`                      | Don't require server label for connections                                                                                            | `true`              |
-| `networkPolicy.allowExternalEgress`                | Allow the pod to access any range of port and all destinations.                                                                       | `true`              |
-| `networkPolicy.extraIngress`                       | Add extra ingress rules to the NetworkPolice                                                                                          | `[]`                |
-| `networkPolicy.extraEgress`                        | Add extra ingress rules to the NetworkPolicy                                                                                          | `[]`                |
-| `networkPolicy.ingressNSMatchLabels`               | Labels to match to allow traffic from other namespaces                                                                                | `{}`                |
-| `networkPolicy.ingressNSPodMatchLabels`            | Pod labels to match to allow traffic from other namespaces                                                                            | `{}`                |
-| `persistence.enabled`                              | Enable MongoDB(&reg;) data persistence using PVC                                                                                      | `true`              |
-| `persistence.name`                                 | Name of the PVC and mounted volume                                                                                                    | `datadir`           |
-| `persistence.medium`                               | Provide a medium for `emptyDir` volumes.                                                                                              | `""`                |
-| `persistence.existingClaim`                        | Provide an existing `PersistentVolumeClaim` (only when `architecture=standalone`)                                                     | `""`                |
-| `persistence.resourcePolicy`                       | Setting it to "keep" to avoid removing PVCs during a helm delete operation. Leaving it empty will delete PVCs after the chart deleted | `""`                |
-| `persistence.storageClass`                         | PVC Storage Class for MongoDB(&reg;) data volume                                                                                      | `""`                |
-| `persistence.accessModes`                          | PV Access Mode                                                                                                                        | `["ReadWriteOnce"]` |
-| `persistence.size`                                 | PVC Storage Request for MongoDB(&reg;) data volume                                                                                    | `8Gi`               |
-| `persistence.annotations`                          | PVC annotations                                                                                                                       | `{}`                |
-| `persistence.mountPath`                            | Path to mount the volume at                                                                                                           | `/bitnami/mongodb`  |
-| `persistence.subPath`                              | Subdirectory of the volume to mount at                                                                                                | `""`                |
-| `persistence.volumeClaimTemplates.selector`        | A label query over volumes to consider for binding (e.g. when using local volumes)                                                    | `{}`                |
-| `persistence.volumeClaimTemplates.requests`        | Custom PVC requests attributes                                                                                                        | `{}`                |
-| `persistence.volumeClaimTemplates.dataSource`      | Add dataSource to the VolumeClaimTemplate                                                                                             | `{}`                |
-| `persistentVolumeClaimRetentionPolicy.enabled`     | Enable Persistent volume retention policy for MongoDB(&reg;) Statefulset                                                              | `false`             |
-| `persistentVolumeClaimRetentionPolicy.whenScaled`  | Volume retention behavior when the replica count of the StatefulSet is reduced                                                        | `Retain`            |
-| `persistentVolumeClaimRetentionPolicy.whenDeleted` | Volume retention behavior that applies when the StatefulSet is deleted                                                                | `Retain`            |
-
-### Backup parameters
+## Prerequisites
 
-| Name                                                               | Description                                                                                                                           | Value               |
-| ------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------- | ------------------- |
-| `backup.enabled`                                                   | Enable the logical dump of the database "regularly"                                                                                   | `false`             |
-| `backup.cronjob.schedule`                                          | Set the cronjob parameter schedule                                                                                                    | `@daily`            |
-| `backup.cronjob.concurrencyPolicy`                                 | Set the cronjob parameter concurrencyPolicy                                                                                           | `Allow`             |
-| `backup.cronjob.failedJobsHistoryLimit`                            | Set the cronjob parameter failedJobsHistoryLimit                                                                                      | `1`                 |
-| `backup.cronjob.successfulJobsHistoryLimit`                        | Set the cronjob parameter successfulJobsHistoryLimit                                                                                  | `3`                 |
-| `backup.cronjob.startingDeadlineSeconds`                           | Set the cronjob parameter startingDeadlineSeconds                                                                                     | `""`                |
-| `backup.cronjob.ttlSecondsAfterFinished`                           | Set the cronjob parameter ttlSecondsAfterFinished                                                                                     | `""`                |
-| `backup.cronjob.restartPolicy`                                     | Set the cronjob parameter restartPolicy                                                                                               | `OnFailure`         |
-| `backup.cronjob.containerSecurityContext.enabled`                  | Enabled containers' Security Context                                                                                                  | `true`              |
-| `backup.cronjob.containerSecurityContext.seLinuxOptions`           | Set SELinux options in container                                                                                                      | `nil`               |
-| `backup.cronjob.containerSecurityContext.runAsUser`                | Set containers' Security Context runAsUser                                                                                            | `1001`              |
-| `backup.cronjob.containerSecurityContext.runAsGroup`               | Set containers' Security Context runAsGroup                                                                                           | `0`                 |
-| `backup.cronjob.containerSecurityContext.runAsNonRoot`             | Set container's Security Context runAsNonRoot                                                                                         | `true`              |
-| `backup.cronjob.containerSecurityContext.privileged`               | Set container's Security Context privileged                                                                                           | `false`             |
-| `backup.cronjob.containerSecurityContext.readOnlyRootFilesystem`   | Set container's Security Context readOnlyRootFilesystem                                                                               | `false`             |
-| `backup.cronjob.containerSecurityContext.allowPrivilegeEscalation` | Set container's Security Context allowPrivilegeEscalation                                                                             | `false`             |
-| `backup.cronjob.containerSecurityContext.capabilities.drop`        | List of capabilities to be dropped                                                                                                    | `["ALL"]`           |
-| `backup.cronjob.containerSecurityContext.seccompProfile.type`      | Set container's Security Context seccomp profile                                                                                      | `RuntimeDefault`    |
-| `backup.cronjob.command`                                           | Set backup container's command to run                                                                                                 | `[]`                |
-| `backup.cronjob.labels`                                            | Set the cronjob labels                                                                                                                | `{}`                |
-| `backup.cronjob.annotations`                                       | Set the cronjob annotations                                                                                                           | `{}`                |
-| `backup.cronjob.storage.existingClaim`                             | Provide an existing `PersistentVolumeClaim` (only when `architecture=standalone`)                                                     | `""`                |
-| `backup.cronjob.storage.resourcePolicy`                            | Setting it to "keep" to avoid removing PVCs during a helm delete operation. Leaving it empty will delete PVCs after the chart deleted | `""`                |
-| `backup.cronjob.storage.storageClass`                              | PVC Storage Class for the backup data volume                                                                                          | `""`                |
-| `backup.cronjob.storage.accessModes`                               | PV Access Mode                                                                                                                        | `["ReadWriteOnce"]` |
-| `backup.cronjob.storage.size`                                      | PVC Storage Request for the backup data volume                                                                                        | `8Gi`               |
-| `backup.cronjob.storage.annotations`                               | PVC annotations                                                                                                                       | `{}`                |
-| `backup.cronjob.storage.mountPath`                                 | Path to mount the volume at                                                                                                           | `/backup/mongodb`   |
-| `backup.cronjob.storage.subPath`                                   | Subdirectory of the volume to mount at                                                                                                | `""`                |
-| `backup.cronjob.storage.volumeClaimTemplates.selector`             | A label query over volumes to consider for binding (e.g. when using local volumes)                                                    | `{}`                |
+- Kubernetes 1.23+
+- Helm 3.8.0+
+- PV provisioner support in the underlying infrastructure
 
-### RBAC parameters
+## Installing the Chart
 
-| Name                                          | Description                                                                                                                                 | Value   |
-| --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
-| `serviceAccount.create`                       | Enable creation of ServiceAccount for MongoDB(&reg;) pods                                                                                   | `true`  |
-| `serviceAccount.name`                         | Name of the created serviceAccount                                                                                                          | `""`    |
-| `serviceAccount.annotations`                  | Additional Service Account annotations                                                                                                      | `{}`    |
-| `serviceAccount.automountServiceAccountToken` | Allows auto mount of ServiceAccountToken on the serviceAccount created                                                                      | `false` |
-| `rbac.create`                                 | Whether to create & use RBAC resources or not                                                                                               | `false` |
-| `rbac.rules`                                  | Custom rules to create following the role specification                                                                                     | `[]`    |
-| `podSecurityPolicy.create`                    | Whether to create a PodSecurityPolicy. WARNING: PodSecurityPolicy is deprecated in Kubernetes v1.21 or later, unavailable in v1.25 or later | `false` |
-| `podSecurityPolicy.allowPrivilegeEscalation`  | Enable privilege escalation                                                                                                                 | `false` |
-| `podSecurityPolicy.privileged`                | Allow privileged                                                                                                                            | `false` |
-| `podSecurityPolicy.spec`                      | Specify the full spec to use for Pod Security Policy                                                                                        | `{}`    |
+To install the chart with the release name `my-release`:
 
-### Volume Permissions parameters
+```console
+helm install my-release oci://REGISTRY_NAME/REPOSITORY_NAME/mongodb
+```
 
-| Name                                               | Description                                                                                                                                                                                                                                    | Value                      |
-| -------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------- |
-| `volumePermissions.enabled`                        | Enable init container that changes the owner and group of the persistent volume(s) mountpoint to `runAsUser:fsGroup`                                                                                                                           | `false`                    |
-| `volumePermissions.image.registry`                 | Init container volume-permissions image registry                                                                                                                                                                                               | `REGISTRY_NAME`            |
-| `volumePermissions.image.repository`               | Init container volume-permissions image repository                                                                                                                                                                                             | `REPOSITORY_NAME/os-shell` |
-| `volumePermissions.image.digest`                   | Init container volume-permissions image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag                                                                                                              | `""`                       |
-| `volumePermissions.image.pullPolicy`               | Init container volume-permissions image pull policy                                                                                                                                                                                            | `IfNotPresent`             |
-| `volumePermissions.image.pullSecrets`              | Specify docker-registry secret names as an array                                                                                                                                                                                               | `[]`                       |
-| `volumePermissions.resourcesPreset`                | Set container resources according to one common preset (allowed values: none, nano, small, medium, large, xlarge, 2xlarge). This is ignored if volumePermissions.resources is set (volumePermissions.resources is recommended for production). | `none`                     |
-| `volumePermissions.resources`                      | Set container requests and limits for different resources like CPU or memory (essential for production workloads)                                                                                                                              | `{}`                       |
-| `volumePermissions.securityContext.seLinuxOptions` | Set SELinux options in container                                                                                                                                                                                                               | `nil`                      |
-| `volumePermissions.securityContext.runAsUser`      | User ID for the volumePermissions container                                                                                                                                                                                                    | `0`                        |
+> Note: You need to substitute the placeholders `REGISTRY_NAME` and `REPOSITORY_NAME` with a reference to your Helm chart registry and repository. For example, in the case of Bitnami, you need to use `REGISTRY_NAME=registry-1.docker.io` and `REPOSITORY_NAME=bitnamicharts`.
 
-### Arbiter parameters
+The command deploys MongoDB(&reg;) on the Kubernetes cluster in the default configuration. The [Parameters](#parameters) section lists the parameters that can be configured during installation.
 
-| Name                                                        | Description                                                                                                                                                                                                                | Value            |
-| ----------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- |
-| `arbiter.enabled`                                           | Enable deploying the arbiter                                                                                                                                                                                               | `true`           |
-| `arbiter.automountServiceAccountToken`                      | Mount Service Account token in pod                                                                                                                                                                                         | `false`          |
-| `arbiter.hostAliases`                                       | Add deployment host aliases                                                                                                                                                                                                | `[]`             |
-| `arbiter.configuration`                                     | Arbiter configuration file to be used                                                                                                                                                                                      | `""`             |
-| `arbiter.existingConfigmap`                                 | Name of existing ConfigMap with Arbiter configuration                                                                                                                                                                      | `""`             |
-| `arbiter.command`                                           | Override default container command (useful when using custom images)                                                                                                                                                       | `[]`             |
-| `arbiter.args`                                              | Override default container args (useful when using custom images)                                                                                                                                                          | `[]`             |
-| `arbiter.extraFlags`                                        | Arbiter additional command line flags                                                                                                                                                                                      | `[]`             |
-| `arbiter.extraEnvVars`                                      | Extra environment variables to add to Arbiter pods                                                                                                                                                                         | `[]`             |
-| `arbiter.extraEnvVarsCM`                                    | Name of existing ConfigMap containing extra env vars                                                                                                                                                                       | `""`             |
-| `arbiter.extraEnvVarsSecret`                                | Name of existing Secret containing extra env vars (in case of sensitive data)                                                                                                                                              | `""`             |
-| `arbiter.annotations`                                       | Additional labels to be added to the Arbiter statefulset                                                                                                                                                                   | `{}`             |
-| `arbiter.labels`                                            | Annotations to be added to the Arbiter statefulset                                                                                                                                                                         | `{}`             |
-| `arbiter.topologySpreadConstraints`                         | MongoDB(&reg;) Spread Constraints for arbiter Pods                                                                                                                                                                         | `[]`             |
-| `arbiter.lifecycleHooks`                                    | LifecycleHook for the Arbiter container to automate configuration before or after startup                                                                                                                                  | `{}`             |
-| `arbiter.terminationGracePeriodSeconds`                     | Arbiter Termination Grace Period                                                                                                                                                                                           | `""`             |
-| `arbiter.updateStrategy.type`                               | Strategy that will be employed to update Pods in the StatefulSet                                                                                                                                                           | `RollingUpdate`  |
-| `arbiter.podManagementPolicy`                               | Pod management policy for MongoDB(&reg;)                                                                                                                                                                                   | `OrderedReady`   |
-| `arbiter.schedulerName`                                     | Name of the scheduler (other than default) to dispatch pods                                                                                                                                                                | `""`             |
-| `arbiter.podAffinityPreset`                                 | Arbiter Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`                                                                                                                                | `""`             |
-| `arbiter.podAntiAffinityPreset`                             | Arbiter Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`                                                                                                                           | `soft`           |
-| `arbiter.nodeAffinityPreset.type`                           | Arbiter Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard`                                                                                                                          | `""`             |
-| `arbiter.nodeAffinityPreset.key`                            | Arbiter Node label key to match Ignored if `affinity` is set.                                                                                                                                                              | `""`             |
-| `arbiter.nodeAffinityPreset.values`                         | Arbiter Node label values to match. Ignored if `affinity` is set.                                                                                                                                                          | `[]`             |
-| `arbiter.affinity`                                          | Arbiter Affinity for pod assignment                                                                                                                                                                                        | `{}`             |
-| `arbiter.nodeSelector`                                      | Arbiter Node labels for pod assignment                                                                                                                                                                                     | `{}`             |
-| `arbiter.tolerations`                                       | Arbiter Tolerations for pod assignment                                                                                                                                                                                     | `[]`             |
-| `arbiter.podLabels`                                         | Arbiter pod labels                                                                                                                                                                                                         | `{}`             |
-| `arbiter.podAnnotations`                                    | Arbiter Pod annotations                                                                                                                                                                                                    | `{}`             |
-| `arbiter.priorityClassName`                                 | Name of the existing priority class to be used by Arbiter pod(s)                                                                                                                                                           | `""`             |
-| `arbiter.runtimeClassName`                                  | Name of the runtime class to be used by Arbiter pod(s)                                                                                                                                                                     | `""`             |
-| `arbiter.podSecurityContext.enabled`                        | Enable Arbiter pod(s)' Security Context                                                                                                                                                                                    | `true`           |
-| `arbiter.podSecurityContext.fsGroupChangePolicy`            | Set filesystem group change policy                                                                                                                                                                                         | `Always`         |
-| `arbiter.podSecurityContext.supplementalGroups`             | Set filesystem extra groups                                                                                                                                                                                                | `[]`             |
-| `arbiter.podSecurityContext.fsGroup`                        | Group ID for the volumes of the Arbiter pod(s)                                                                                                                                                                             | `1001`           |
-| `arbiter.podSecurityContext.sysctls`                        | sysctl settings of the Arbiter pod(s)'                                                                                                                                                                                     | `[]`             |
-| `arbiter.containerSecurityContext.enabled`                  | Enabled containers' Security Context                                                                                                                                                                                       | `true`           |
-| `arbiter.containerSecurityContext.seLinuxOptions`           | Set SELinux options in container                                                                                                                                                                                           | `nil`            |
-| `arbiter.containerSecurityContext.runAsUser`                | Set containers' Security Context runAsUser                                                                                                                                                                                 | `1001`           |
-| `arbiter.containerSecurityContext.runAsGroup`               | Set containers' Security Context runAsGroup                                                                                                                                                                                | `0`              |
-| `arbiter.containerSecurityContext.runAsNonRoot`             | Set container's Security Context runAsNonRoot                                                                                                                                                                              | `true`           |
-| `arbiter.containerSecurityContext.privileged`               | Set container's Security Context privileged                                                                                                                                                                                | `false`          |
-| `arbiter.containerSecurityContext.readOnlyRootFilesystem`   | Set container's Security Context readOnlyRootFilesystem                                                                                                                                                                    | `false`          |
-| `arbiter.containerSecurityContext.allowPrivilegeEscalation` | Set container's Security Context allowPrivilegeEscalation                                                                                                                                                                  | `false`          |
-| `arbiter.containerSecurityContext.capabilities.drop`        | List of capabilities to be dropped                                                                                                                                                                                         | `["ALL"]`        |
-| `arbiter.containerSecurityContext.seccompProfile.type`      | Set container's Security Context seccomp profile                                                                                                                                                                           | `RuntimeDefault` |
-| `arbiter.resourcesPreset`                                   | Set container resources according to one common preset (allowed values: none, nano, small, medium, large, xlarge, 2xlarge). This is ignored if arbiter.resources is set (arbiter.resources is recommended for production). | `none`           |
-| `arbiter.resources`                                         | Set container requests and limits for different resources like CPU or memory (essential for production workloads)                                                                                                          | `{}`             |
-| `arbiter.containerPorts.mongodb`                            | MongoDB(&reg;) arbiter container port                                                                                                                                                                                      | `27017`          |
-| `arbiter.livenessProbe.enabled`                             | Enable livenessProbe                                                                                                                                                                                                       | `true`           |
-| `arbiter.livenessProbe.initialDelaySeconds`                 | Initial delay seconds for livenessProbe                                                                                                                                                                                    | `30`             |
-| `arbiter.livenessProbe.periodSeconds`                       | Period seconds for livenessProbe                                                                                                                                                                                           | `20`             |
-| `arbiter.livenessProbe.timeoutSeconds`                      | Timeout seconds for livenessProbe                                                                                                                                                                                          | `10`             |
-| `arbiter.livenessProbe.failureThreshold`                    | Failure threshold for livenessProbe                                                                                                                                                                                        | `6`              |
-| `arbiter.livenessProbe.successThreshold`                    | Success threshold for livenessProbe                                                                                                                                                                                        | `1`              |
-| `arbiter.readinessProbe.enabled`                            | Enable readinessProbe                                                                                                                                                                                                      | `true`           |
-| `arbiter.readinessProbe.initialDelaySeconds`                | Initial delay seconds for readinessProbe                                                                                                                                                                                   | `5`              |
-| `arbiter.readinessProbe.periodSeconds`                      | Period seconds for readinessProbe                                                                                                                                                                                          | `20`             |
-| `arbiter.readinessProbe.timeoutSeconds`                     | Timeout seconds for readinessProbe                                                                                                                                                                                         | `10`             |
-| `arbiter.readinessProbe.failureThreshold`                   | Failure threshold for readinessProbe                                                                                                                                                                                       | `6`              |
-| `arbiter.readinessProbe.successThreshold`                   | Success threshold for readinessProbe                                                                                                                                                                                       | `1`              |
-| `arbiter.startupProbe.enabled`                              | Enable startupProbe                                                                                                                                                                                                        | `false`          |
-| `arbiter.startupProbe.initialDelaySeconds`                  | Initial delay seconds for startupProbe                                                                                                                                                                                     | `5`              |
-| `arbiter.startupProbe.periodSeconds`                        | Period seconds for startupProbe                                                                                                                                                                                            | `10`             |
-| `arbiter.startupProbe.timeoutSeconds`                       | Timeout seconds for startupProbe                                                                                                                                                                                           | `5`              |
-| `arbiter.startupProbe.failureThreshold`                     | Failure threshold for startupProbe                                                                                                                                                                                         | `30`             |
-| `arbiter.startupProbe.successThreshold`                     | Success threshold for startupProbe                                                                                                                                                                                         | `1`              |
-| `arbiter.customLivenessProbe`                               | Override default liveness probe for Arbiter containers                                                                                                                                                                     | `{}`             |
-| `arbiter.customReadinessProbe`                              | Override default readiness probe for Arbiter containers                                                                                                                                                                    | `{}`             |
-| `arbiter.customStartupProbe`                                | Override default startup probe for Arbiter containers                                                                                                                                                                      | `{}`             |
-| `arbiter.initContainers`                                    | Add additional init containers for the Arbiter pod(s)                                                                                                                                                                      | `[]`             |
-| `arbiter.sidecars`                                          | Add additional sidecar containers for the Arbiter pod(s)                                                                                                                                                                   | `[]`             |
-| `arbiter.extraVolumeMounts`                                 | Optionally specify extra list of additional volumeMounts for the Arbiter container(s)                                                                                                                                      | `[]`             |
-| `arbiter.extraVolumes`                                      | Optionally specify extra list of additional volumes to the Arbiter statefulset                                                                                                                                             | `[]`             |
-| `arbiter.pdb.create`                                        | Enable/disable a Pod Disruption Budget creation for Arbiter pod(s)                                                                                                                                                         | `false`          |
-| `arbiter.pdb.minAvailable`                                  | Minimum number/percentage of Arbiter pods that should remain scheduled                                                                                                                                                     | `1`              |
-| `arbiter.pdb.maxUnavailable`                                | Maximum number/percentage of Arbiter pods that may be made unavailable                                                                                                                                                     | `""`             |
-| `arbiter.service.nameOverride`                              | The arbiter service name                                                                                                                                                                                                   | `""`             |
-| `arbiter.service.ports.mongodb`                             | MongoDB(&reg;) service port                                                                                                                                                                                                | `27017`          |
-| `arbiter.service.extraPorts`                                | Extra ports to expose (normally used with the `sidecar` value)                                                                                                                                                             | `[]`             |
-| `arbiter.service.annotations`                               | Provide any additional annotations that may be required                                                                                                                                                                    | `{}`             |
-| `arbiter.service.headless.annotations`                      | Annotations for the headless service.                                                                                                                                                                                      | `{}`             |
+> **Tip**: List all releases using `helm list`
 
-### Hidden Node parameters
+## Configuration and installation details
 
-| Name                                                       | Description                                                                                                                                                                                                              | Value               |
-| ---------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------- |
-| `hidden.enabled`                                           | Enable deploying the hidden nodes                                                                                                                                                                                        | `false`             |
-| `hidden.automountServiceAccountToken`                      | Mount Service Account token in pod                                                                                                                                                                                       | `false`             |
-| `hidden.hostAliases`                                       | Add deployment host aliases                                                                                                                                                                                              | `[]`                |
-| `hidden.configuration`                                     | Hidden node configuration file to be used                                                                                                                                                                                | `""`                |
-| `hidden.existingConfigmap`                                 | Name of existing ConfigMap with Hidden node configuration                                                                                                                                                                | `""`                |
-| `hidden.command`                                           | Override default container command (useful when using custom images)                                                                                                                                                     | `[]`                |
-| `hidden.args`                                              | Override default container args (useful when using custom images)                                                                                                                                                        | `[]`                |
-| `hidden.extraFlags`                                        | Hidden node additional command line flags                                                                                                                                                                                | `[]`                |
-| `hidden.extraEnvVars`                                      | Extra environment variables to add to Hidden node pods                                                                                                                                                                   | `[]`                |
-| `hidden.extraEnvVarsCM`                                    | Name of existing ConfigMap containing extra env vars                                                                                                                                                                     | `""`                |
-| `hidden.extraEnvVarsSecret`                                | Name of existing Secret containing extra env vars (in case of sensitive data)                                                                                                                                            | `""`                |
-| `hidden.annotations`                                       | Additional labels to be added to thehidden node statefulset                                                                                                                                                              | `{}`                |
-| `hidden.labels`                                            | Annotations to be added to the hidden node statefulset                                                                                                                                                                   | `{}`                |
-| `hidden.topologySpreadConstraints`                         | MongoDB(&reg;) Spread Constraints for hidden Pods                                                                                                                                                                        | `[]`                |
-| `hidden.lifecycleHooks`                                    | LifecycleHook for the Hidden container to automate configuration before or after startup                                                                                                                                 | `{}`                |
-| `hidden.replicaCount`                                      | Number of hidden nodes (only when `architecture=replicaset`)                                                                                                                                                             | `1`                 |
-| `hidden.terminationGracePeriodSeconds`                     | Hidden Termination Grace Period                                                                                                                                                                                          | `""`                |
-| `hidden.updateStrategy.type`                               | Strategy that will be employed to update Pods in the StatefulSet                                                                                                                                                         | `RollingUpdate`     |
-| `hidden.podManagementPolicy`                               | Pod management policy for hidden node                                                                                                                                                                                    | `OrderedReady`      |
-| `hidden.schedulerName`                                     | Name of the scheduler (other than default) to dispatch pods                                                                                                                                                              | `""`                |
-| `hidden.podAffinityPreset`                                 | Hidden node Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`                                                                                                                          | `""`                |
-| `hidden.podAntiAffinityPreset`                             | Hidden node Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`                                                                                                                     | `soft`              |
-| `hidden.nodeAffinityPreset.type`                           | Hidden Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard`                                                                                                                         | `""`                |
-| `hidden.nodeAffinityPreset.key`                            | Hidden Node label key to match Ignored if `affinity` is set.                                                                                                                                                             | `""`                |
-| `hidden.nodeAffinityPreset.values`                         | Hidden Node label values to match. Ignored if `affinity` is set.                                                                                                                                                         | `[]`                |
-| `hidden.affinity`                                          | Hidden node Affinity for pod assignment                                                                                                                                                                                  | `{}`                |
-| `hidden.nodeSelector`                                      | Hidden node Node labels for pod assignment                                                                                                                                                                               | `{}`                |
-| `hidden.tolerations`                                       | Hidden node Tolerations for pod assignment                                                                                                                                                                               | `[]`                |
-| `hidden.podLabels`                                         | Hidden node pod labels                                                                                                                                                                                                   | `{}`                |
-| `hidden.podAnnotations`                                    | Hidden node Pod annotations                                                                                                                                                                                              | `{}`                |
-| `hidden.priorityClassName`                                 | Name of the existing priority class to be used by hidden node pod(s)                                                                                                                                                     | `""`                |
-| `hidden.runtimeClassName`                                  | Name of the runtime class to be used by hidden node pod(s)                                                                                                                                                               | `""`                |
-| `hidden.podSecurityContext.enabled`                        | Enable Hidden pod(s)' Security Context                                                                                                                                                                                   | `true`              |
-| `hidden.podSecurityContext.fsGroupChangePolicy`            | Set filesystem group change policy                                                                                                                                                                                       | `Always`            |
-| `hidden.podSecurityContext.supplementalGroups`             | Set filesystem extra groups                                                                                                                                                                                              | `[]`                |
-| `hidden.podSecurityContext.fsGroup`                        | Group ID for the volumes of the Hidden pod(s)                                                                                                                                                                            | `1001`              |
-| `hidden.podSecurityContext.sysctls`                        | sysctl settings of the Hidden pod(s)'                                                                                                                                                                                    | `[]`                |
-| `hidden.containerSecurityContext.enabled`                  | Enabled containers' Security Context                                                                                                                                                                                     | `true`              |
-| `hidden.containerSecurityContext.seLinuxOptions`           | Set SELinux options in container                                                                                                                                                                                         | `nil`               |
-| `hidden.containerSecurityContext.runAsUser`                | Set containers' Security Context runAsUser                                                                                                                                                                               | `1001`              |
-| `hidden.containerSecurityContext.runAsGroup`               | Set containers' Security Context runAsGroup                                                                                                                                                                              | `0`                 |
-| `hidden.containerSecurityContext.runAsNonRoot`             | Set container's Security Context runAsNonRoot                                                                                                                                                                            | `true`              |
-| `hidden.containerSecurityContext.privileged`               | Set container's Security Context privileged                                                                                                                                                                              | `false`             |
-| `hidden.containerSecurityContext.readOnlyRootFilesystem`   | Set container's Security Context readOnlyRootFilesystem                                                                                                                                                                  | `false`             |
-| `hidden.containerSecurityContext.allowPrivilegeEscalation` | Set container's Security Context allowPrivilegeEscalation                                                                                                                                                                | `false`             |
-| `hidden.containerSecurityContext.capabilities.drop`        | List of capabilities to be dropped                                                                                                                                                                                       | `["ALL"]`           |
-| `hidden.containerSecurityContext.seccompProfile.type`      | Set container's Security Context seccomp profile                                                                                                                                                                         | `RuntimeDefault`    |
-| `hidden.resourcesPreset`                                   | Set container resources according to one common preset (allowed values: none, nano, small, medium, large, xlarge, 2xlarge). This is ignored if hidden.resources is set (hidden.resources is recommended for production). | `none`              |
-| `hidden.resources`                                         | Set container requests and limits for different resources like CPU or memory (essential for production workloads)                                                                                                        | `{}`                |
-| `hidden.containerPorts.mongodb`                            | MongoDB(&reg;) hidden container port                                                                                                                                                                                     | `27017`             |
-| `hidden.livenessProbe.enabled`                             | Enable livenessProbe                                                                                                                                                                                                     | `true`              |
-| `hidden.livenessProbe.initialDelaySeconds`                 | Initial delay seconds for livenessProbe                                                                                                                                                                                  | `30`                |
-| `hidden.livenessProbe.periodSeconds`                       | Period seconds for livenessProbe                                                                                                                                                                                         | `20`                |
-| `hidden.livenessProbe.timeoutSeconds`                      | Timeout seconds for livenessProbe                                                                                                                                                                                        | `10`                |
-| `hidden.livenessProbe.failureThreshold`                    | Failure threshold for livenessProbe                                                                                                                                                                                      | `6`                 |
-| `hidden.livenessProbe.successThreshold`                    | Success threshold for livenessProbe                                                                                                                                                                                      | `1`                 |
-| `hidden.readinessProbe.enabled`                            | Enable readinessProbe                                                                                                                                                                                                    | `true`              |
-| `hidden.readinessProbe.initialDelaySeconds`                | Initial delay seconds for readinessProbe                                                                                                                                                                                 | `5`                 |
-| `hidden.readinessProbe.periodSeconds`                      | Period seconds for readinessProbe                                                                                                                                                                                        | `20`                |
-| `hidden.readinessProbe.timeoutSeconds`                     | Timeout seconds for readinessProbe                                                                                                                                                                                       | `10`                |
-| `hidden.readinessProbe.failureThreshold`                   | Failure threshold for readinessProbe                                                                                                                                                                                     | `6`                 |
-| `hidden.readinessProbe.successThreshold`                   | Success threshold for readinessProbe                                                                                                                                                                                     | `1`                 |
-| `hidden.startupProbe.enabled`                              | Enable startupProbe                                                                                                                                                                                                      | `false`             |
-| `hidden.startupProbe.initialDelaySeconds`                  | Initial delay seconds for startupProbe                                                                                                                                                                                   | `5`                 |
-| `hidden.startupProbe.periodSeconds`                        | Period seconds for startupProbe                                                                                                                                                                                          | `10`                |
-| `hidden.startupProbe.timeoutSeconds`                       | Timeout seconds for startupProbe                                                                                                                                                                                         | `5`                 |
-| `hidden.startupProbe.failureThreshold`                     | Failure threshold for startupProbe                                                                                                                                                                                       | `30`                |
-| `hidden.startupProbe.successThreshold`                     | Success threshold for startupProbe                                                                                                                                                                                       | `1`                 |
-| `hidden.customLivenessProbe`                               | Override default liveness probe for hidden node containers                                                                                                                                                               | `{}`                |
-| `hidden.customReadinessProbe`                              | Override default readiness probe for hidden node containers                                                                                                                                                              | `{}`                |
-| `hidden.customStartupProbe`                                | Override default startup probe for MongoDB(&reg;) containers                                                                                                                                                             | `{}`                |
-| `hidden.initContainers`                                    | Add init containers to the MongoDB(&reg;) Hidden pods.                                                                                                                                                                   | `[]`                |
-| `hidden.sidecars`                                          | Add additional sidecar containers for the hidden node pod(s)                                                                                                                                                             | `[]`                |
-| `hidden.extraVolumeMounts`                                 | Optionally specify extra list of additional volumeMounts for the hidden node container(s)                                                                                                                                | `[]`                |
-| `hidden.extraVolumes`                                      | Optionally specify extra list of additional volumes to the hidden node statefulset                                                                                                                                       | `[]`                |
-| `hidden.pdb.create`                                        | Enable/disable a Pod Disruption Budget creation for hidden node pod(s)                                                                                                                                                   | `false`             |
-| `hidden.pdb.minAvailable`                                  | Minimum number/percentage of hidden node pods that should remain scheduled                                                                                                                                               | `1`                 |
-| `hidden.pdb.maxUnavailable`                                | Maximum number/percentage of hidden node pods that may be made unavailable                                                                                                                                               | `""`                |
-| `hidden.persistence.enabled`                               | Enable hidden node data persistence using PVC                                                                                                                                                                            | `true`              |
-| `hidden.persistence.medium`                                | Provide a medium for `emptyDir` volumes.                                                                                                                                                                                 | `""`                |
-| `hidden.persistence.storageClass`                          | PVC Storage Class for hidden node data volume                                                                                                                                                                            | `""`                |
-| `hidden.persistence.accessModes`                           | PV Access Mode                                                                                                                                                                                                           | `["ReadWriteOnce"]` |
-| `hidden.persistence.size`                                  | PVC Storage Request for hidden node data volume                                                                                                                                                                          | `8Gi`               |
-| `hidden.persistence.annotations`                           | PVC annotations                                                                                                                                                                                                          | `{}`                |
-| `hidden.persistence.mountPath`                             | The path the volume will be mounted at, useful when using different MongoDB(&reg;) images.                                                                                                                               | `/bitnami/mongodb`  |
-| `hidden.persistence.subPath`                               | The subdirectory of the volume to mount to, useful in dev environments                                                                                                                                                   | `""`                |
-| `hidden.persistence.volumeClaimTemplates.selector`         | A label query over volumes to consider for binding (e.g. when using local volumes)                                                                                                                                       | `{}`                |
-| `hidden.persistence.volumeClaimTemplates.requests`         | Custom PVC requests attributes                                                                                                                                                                                           | `{}`                |
-| `hidden.persistence.volumeClaimTemplates.dataSource`       | Set volumeClaimTemplate dataSource                                                                                                                                                                                       | `{}`                |
-| `hidden.service.portName`                                  | MongoDB(&reg;) service port name                                                                                                                                                                                         | `mongodb`           |
-| `hidden.service.ports.mongodb`                             | MongoDB(&reg;) service port                                                                                                                                                                                              | `27017`             |
-| `hidden.service.extraPorts`                                | Extra ports to expose (normally used with the `sidecar` value)                                                                                                                                                           | `[]`                |
-| `hidden.service.annotations`                               | Provide any additional annotations that may be required                                                                                                                                                                  | `{}`                |
-| `hidden.service.headless.annotations`                      | Annotations for the headless service.                                                                                                                                                                                    | `{}`                |
+### Resource requests and limits
 
-### Metrics parameters
+Bitnami charts allow setting resource requests and limits for all containers inside the chart deployment. These are inside the `resources` value (check parameter table). Setting requests is essential for production workloads and these should be adapted to your specific use case.
 
-| Name                                         | Description                                                                                                                                                                                                                | Value                              |
-| -------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------- |
-| `metrics.enabled`                            | Enable using a sidecar Prometheus exporter                                                                                                                                                                                 | `false`                            |
-| `metrics.image.registry`                     | MongoDB(&reg;) Prometheus exporter image registry                                                                                                                                                                          | `REGISTRY_NAME`                    |
-| `metrics.image.repository`                   | MongoDB(&reg;) Prometheus exporter image repository                                                                                                                                                                        | `REPOSITORY_NAME/mongodb-exporter` |
-| `metrics.image.digest`                       | MongoDB(&reg;) image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag                                                                                                             | `""`                               |
-| `metrics.image.pullPolicy`                   | MongoDB(&reg;) Prometheus exporter image pull policy                                                                                                                                                                       | `IfNotPresent`                     |
-| `metrics.image.pullSecrets`                  | Specify docker-registry secret names as an array                                                                                                                                                                           | `[]`                               |
-| `metrics.username`                           | String with username for the metrics exporter                                                                                                                                                                              | `""`                               |
-| `metrics.password`                           | String with password for the metrics exporter                                                                                                                                                                              | `""`                               |
-| `metrics.compatibleMode`                     | Enables old style mongodb-exporter metrics                                                                                                                                                                                 | `true`                             |
-| `metrics.collector.all`                      | Enable all collectors. Same as enabling all individual metrics                                                                                                                                                             | `false`                            |
-| `metrics.collector.diagnosticdata`           | Boolean Enable collecting metrics from getDiagnosticData                                                                                                                                                                   | `true`                             |
-| `metrics.collector.replicasetstatus`         | Boolean Enable collecting metrics from replSetGetStatus                                                                                                                                                                    | `true`                             |
-| `metrics.collector.dbstats`                  | Boolean Enable collecting metrics from dbStats                                                                                                                                                                             | `false`                            |
-| `metrics.collector.topmetrics`               | Boolean Enable collecting metrics from top admin command                                                                                                                                                                   | `false`                            |
-| `metrics.collector.indexstats`               | Boolean Enable collecting metrics from $indexStats                                                                                                                                                                         | `false`                            |
-| `metrics.collector.collstats`                | Boolean Enable collecting metrics from $collStats                                                                                                                                                                          | `false`                            |
-| `metrics.collector.collstatsColls`           | List of \<databases\>.\<collections\> to get $collStats                                                                                                                                                                    | `[]`                               |
-| `metrics.collector.indexstatsColls`          | List - List of \<databases\>.\<collections\> to get $indexStats                                                                                                                                                            | `[]`                               |
-| `metrics.collector.collstatsLimit`           | Number - Disable collstats, dbstats, topmetrics and indexstats collector if there are more than \<n\> collections. 0=No limit                                                                                              | `0`                                |
-| `metrics.extraFlags`                         | String with extra flags to the metrics exporter                                                                                                                                                                            | `""`                               |
-| `metrics.command`                            | Override default container command (useful when using custom images)                                                                                                                                                       | `[]`                               |
-| `metrics.args`                               | Override default container args (useful when using custom images)                                                                                                                                                          | `[]`                               |
-| `metrics.resourcesPreset`                    | Set container resources according to one common preset (allowed values: none, nano, small, medium, large, xlarge, 2xlarge). This is ignored if metrics.resources is set (metrics.resources is recommended for production). | `none`                             |
-| `metrics.resources`                          | Set container requests and limits for different resources like CPU or memory (essential for production workloads)                                                                                                          | `{}`                               |
-| `metrics.containerPort`                      | Port of the Prometheus metrics container                                                                                                                                                                                   | `9216`                             |
-| `metrics.service.annotations`                | Annotations for Prometheus Exporter pods. Evaluated as a template.                                                                                                                                                         | `{}`                               |
-| `metrics.service.type`                       | Type of the Prometheus metrics service                                                                                                                                                                                     | `ClusterIP`                        |
-| `metrics.service.ports.metrics`              | Port of the Prometheus metrics service                                                                                                                                                                                     | `9216`                             |
-| `metrics.service.extraPorts`                 | Extra ports to expose (normally used with the `sidecar` value)                                                                                                                                                             | `[]`                               |
-| `metrics.livenessProbe.enabled`              | Enable livenessProbe                                                                                                                                                                                                       | `true`                             |
-| `metrics.livenessProbe.initialDelaySeconds`  | Initial delay seconds for livenessProbe                                                                                                                                                                                    | `15`                               |
-| `metrics.livenessProbe.periodSeconds`        | Period seconds for livenessProbe                                                                                                                                                                                           | `5`                                |
-| `metrics.livenessProbe.timeoutSeconds`       | Timeout seconds for livenessProbe                                                                                                                                                                                          | `10`                               |
-| `metrics.livenessProbe.failureThreshold`     | Failure threshold for livenessProbe                                                                                                                                                                                        | `3`                                |
-| `metrics.livenessProbe.successThreshold`     | Success threshold for livenessProbe                                                                                                                                                                                        | `1`                                |
-| `metrics.readinessProbe.enabled`             | Enable readinessProbe                                                                                                                                                                                                      | `true`                             |
-| `metrics.readinessProbe.initialDelaySeconds` | Initial delay seconds for readinessProbe                                                                                                                                                                                   | `5`                                |
-| `metrics.readinessProbe.periodSeconds`       | Period seconds for readinessProbe                                                                                                                                                                                          | `5`                                |
-| `metrics.readinessProbe.timeoutSeconds`      | Timeout seconds for readinessProbe                                                                                                                                                                                         | `10`                               |
-| `metrics.readinessProbe.failureThreshold`    | Failure threshold for readinessProbe                                                                                                                                                                                       | `3`                                |
-| `metrics.readinessProbe.successThreshold`    | Success threshold for readinessProbe                                                                                                                                                                                       | `1`                                |
-| `metrics.startupProbe.enabled`               | Enable startupProbe                                                                                                                                                                                                        | `false`                            |
-| `metrics.startupProbe.initialDelaySeconds`   | Initial delay seconds for startupProbe                                                                                                                                                                                     | `5`                                |
-| `metrics.startupProbe.periodSeconds`         | Period seconds for startupProbe                                                                                                                                                                                            | `10`                               |
-| `metrics.startupProbe.timeoutSeconds`        | Timeout seconds for startupProbe                                                                                                                                                                                           | `5`                                |
-| `metrics.startupProbe.failureThreshold`      | Failure threshold for startupProbe                                                                                                                                                                                         | `30`                               |
-| `metrics.startupProbe.successThreshold`      | Success threshold for startupProbe                                                                                                                                                                                         | `1`                                |
-| `metrics.customLivenessProbe`                | Override default liveness probe for MongoDB(&reg;) containers                                                                                                                                                              | `{}`                               |
-| `metrics.customReadinessProbe`               | Override default readiness probe for MongoDB(&reg;) containers                                                                                                                                                             | `{}`                               |
-| `metrics.customStartupProbe`                 | Override default startup probe for MongoDB(&reg;) containers                                                                                                                                                               | `{}`                               |
-| `metrics.extraVolumeMounts`                  | Optionally specify extra list of additional volumeMounts for the metrics container(s)                                                                                                                                      | `[]`                               |
-| `metrics.serviceMonitor.enabled`             | Create ServiceMonitor Resource for scraping metrics using Prometheus Operator                                                                                                                                              | `false`                            |
-| `metrics.serviceMonitor.namespace`           | Namespace which Prometheus is running in                                                                                                                                                                                   | `""`                               |
-| `metrics.serviceMonitor.interval`            | Interval at which metrics should be scraped                                                                                                                                                                                | `30s`                              |
-| `metrics.serviceMonitor.scrapeTimeout`       | Specify the timeout after which the scrape is ended                                                                                                                                                                        | `""`                               |
-| `metrics.serviceMonitor.relabelings`         | RelabelConfigs to apply to samples before scraping.                                                                                                                                                                        | `[]`                               |
-| `metrics.serviceMonitor.metricRelabelings`   | MetricsRelabelConfigs to apply to samples before ingestion.                                                                                                                                                                | `[]`                               |
-| `metrics.serviceMonitor.labels`              | Used to pass Labels that are used by the Prometheus installed in your cluster to select Service Monitors to work with                                                                                                      | `{}`                               |
-| `metrics.serviceMonitor.selector`            | Prometheus instance selector labels                                                                                                                                                                                        | `{}`                               |
-| `metrics.serviceMonitor.honorLabels`         | Specify honorLabels parameter to add the scrape endpoint                                                                                                                                                                   | `false`                            |
-| `metrics.serviceMonitor.jobLabel`            | The name of the label on the target service to use as the job name in prometheus.                                                                                                                                          | `""`                               |
-| `metrics.prometheusRule.enabled`             | Set this to true to create prometheusRules for Prometheus operator                                                                                                                                                         | `false`                            |
-| `metrics.prometheusRule.additionalLabels`    | Additional labels that can be used so prometheusRules will be discovered by Prometheus                                                                                                                                     | `{}`                               |
-| `metrics.prometheusRule.namespace`           | Namespace where prometheusRules resource should be created                                                                                                                                                                 | `""`                               |
-| `metrics.prometheusRule.rules`               | Rules to be created, check values for an example                                                                                                                                                                           | `[]`                               |
+To make this process easier, the chart contains the `resourcesPreset` values, which automatically sets the `resources` section according to different presets. Check these presets in [the bitnami/common chart](https://github.com/bitnami/charts/blob/main/bitnami/common/templates/_resources.tpl#L15). However, in production workloads using `resourcesPreset` is discouraged as it may not fully adapt to your specific needs. Find more information on container resource management in the [official Kubernetes documentation](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/).
 
-Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
+### Prometheus metrics
 
-```console
-helm install my-release \
-    --set auth.rootPassword=secretpassword,auth.username=my-user,auth.password=my-password,auth.database=my-database \
-    oci://REGISTRY_NAME/REPOSITORY_NAME/mongodb
-```
+This chart can be integrated with Prometheus by setting `metrics.enabled` to `true`. This will deploy a sidecar container with [mongodb_exporter](https://github.com/percona/mongodb_exporter) in all pods and a `metrics` service, which can be configured under the `metrics.service` section. This `metrics` service will have the necessary annotations to be automatically scraped by Prometheus.
 
-> Note: You need to substitute the placeholders `REGISTRY_NAME` and `REPOSITORY_NAME` with a reference to your Helm chart registry and repository. For example, in the case of Bitnami, you need to use `REGISTRY_NAME=registry-1.docker.io` and `REPOSITORY_NAME=bitnamicharts`.
+#### Prometheus requirements
 
-The above command sets the MongoDB(&reg;) `root` account password to `secretpassword`. Additionally, it creates a standard database user named `my-user`, with the password `my-password`, who has access to a database named `my-database`.
+It is necessary to have a working installation of Prometheus or Prometheus Operator for the integration to work. Install the [Bitnami Prometheus helm chart](https://github.com/bitnami/charts/tree/main/bitnami/prometheus) or the [Bitnami Kube Prometheus helm chart](https://github.com/bitnami/charts/tree/main/bitnami/kube-prometheus) to easily have a working Prometheus in your cluster.
 
-> NOTE: Once this chart is deployed, it is not possible to change the application's access credentials, such as usernames or passwords, using Helm. To change these application credentials after deployment, delete any persistent volumes (PVs) used by the chart and re-deploy it, or use the application's built-in administrative tools if available.
+#### Integration with Prometheus Operator
 
-Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example,
+The chart can deploy `ServiceMonitor` objects for integration with Prometheus Operator installations. To do so, set the value `metrics.serviceMonitor.enabled=true`. Ensure that the Prometheus Operator `CustomResourceDefinitions` are installed in the cluster or it will fail with the following error:
 
-```console
-helm install my-release -f values.yaml oci://REGISTRY_NAME/REPOSITORY_NAME/mongodb
+```text
+no matches for kind "ServiceMonitor" in version "monitoring.coreos.com/v1"
 ```
 
-> Note: You need to substitute the placeholders `REGISTRY_NAME` and `REPOSITORY_NAME` with a reference to your Helm chart registry and repository. For example, in the case of Bitnami, you need to use `REGISTRY_NAME=registry-1.docker.io` and `REPOSITORY_NAME=bitnamicharts`.
-> **Tip**: You can use the default [values.yaml](https://github.com/bitnami/charts/tree/main/bitnami/mongodb/values.yaml)
-
-## Configuration and installation details
+Install the [Bitnami Kube Prometheus helm chart](https://github.com/bitnami/charts/tree/main/bitnami/kube-prometheus) for having the necessary CRDs and the Prometheus Operator.
 
-### Resource requests and limits
-
-Bitnami charts allow setting resource requests and limits for all containers inside the chart deployment. These are inside the `resources` value (check parameter table). Setting requests is essential for production workloads and these should be adapted to your specific use case.
-
-To make this process easier, the chart contains the `resourcesPreset` values, which automatically sets the `resources` section according to different presets. Check these presets in [the bitnami/common chart](https://github.com/bitnami/charts/blob/main/bitnami/common/templates/_resources.tpl#L15). However, in production workloads using `resourcePreset` is discouraged as it may not fully adapt to your specific needs. Find more information on container resource management in the [official Kubernetes documentation](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/).
-
-### [Rolling vs Immutable tags](https://docs.bitnami.com/tutorials/understand-rolling-tags-containers)
+### [Rolling vs Immutable tags](https://techdocs.broadcom.com/us/en/vmware-tanzu/application-catalog/tanzu-application-catalog/services/tac-doc/apps-tutorials-understand-rolling-tags-containers-index.html)
 
 It is strongly recommended to use immutable tags in a production environment. This ensures your deployment does not change automatically if the same tag is updated with a different image.
 
@@ -767,37 +163,63 @@ In order to access MongoDB(&reg;) nodes from outside the cluster when using a re
 
 #### Use LoadBalancer services
 
-Two alternatives are available to use *LoadBalancer* services:
+Three alternatives are available to use *LoadBalancer* services:
 
 - Use random load balancer IP addresses using an *initContainer* that waits for the IP addresses to be ready and discovers them automatically. An example deployment configuration is shown below:
 
-    ```text
-    architecture=replicaset
-    replicaCount=2
-    externalAccess.enabled=true
-    externalAccess.service.type=LoadBalancer
-    externalAccess.service.port=27017
-    externalAccess.autoDiscovery.enabled=true
-    serviceAccount.create=true
-    rbac.create=true
+    ```yaml
+    architecture: replicaset
+    replicaCount: 2
+    externalAccess:
+      enabled: true
+      service:
+        type: LoadBalancer
+      autoDiscovery:
+        enabled: true
+    serviceAccount:
+      create: true
+    automountServiceAccountToken: true
+    rbac:
+      create: true
     ```
 
     > NOTE: This option requires creating RBAC rules on clusters where RBAC policies are enabled.
 
 - Manually specify the load balancer IP addresses. An example deployment configuration is shown below, with the placeholder EXTERNAL-IP-ADDRESS-X used in place of the load balancer IP addresses:
 
-    ```text
-    architecture=replicaset
-    replicaCount=2
-    externalAccess.enabled=true
-    externalAccess.service.type=LoadBalancer
-    externalAccess.service.port=27017
-    externalAccess.service.loadBalancerIPs[0]='EXTERNAL-IP-ADDRESS-1'
-    externalAccess.service.loadBalancerIPs[1]='EXTERNAL-IP-ADDRESS-2'
+    ```yaml
+    architecture: replicaset
+    replicaCount: 2
+    externalAccess:
+      enabled: true
+      service:
+        type: LoadBalancer
+        loadBalancerIPs:
+          - 'EXTERNAL-IP-ADDRESS-1'
+          - 'EXTERNAL-IP-ADDRESS-2'
     ```
 
     > NOTE: This option requires knowing the load balancer IP addresses, so that each MongoDB&reg; node's advertised hostname is configured with it.
 
+- Specify `externalAccess.service.publicNames`. These names must be resolvable by the MongoDB&reg; containers. To ensure that, if this value is set, an initContainer is added to wait for the ip addresses associated to those names. We can combine this feature with `external-dns`, setting the required annotations to configure the load balancer names:
+
+    ```yaml
+    architecture: replicaset
+    replicaCount: 2
+    externalAccess:
+      enabled: true
+      service:
+        type: LoadBalancer
+        publicNames:
+          - 'mongodb-0.example.com'
+          - 'mongodb-1.example.com'
+        annotationsList:
+          - external-dns.alpha.kubernetes.io/hostname: mongodb-0.example.com
+          - external-dns.alpha.kubernetes.io/hostname: mongodb-1.example.com
+    ```
+
+    > NOTE: If register new DNS records for those names is not an option, the release can be upgraded setting `hostAliases` with the public IPs assigned to the external services.
+
 #### Use NodePort services
 
 Manually specify the node ports to use. An example deployment configuration is shown below, with the placeholder NODE-PORT-X used in place of the node ports:
@@ -880,15 +302,84 @@ initContainers:
 
 Learn more about [sidecar containers](https://kubernetes.io/docs/concepts/workloads/pods/) and [init containers](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/).
 
-### Persistence
+### Update credentials
 
-The [Bitnami MongoDB(&reg;)](https://github.com/bitnami/containers/tree/main/bitnami/mongodb) image stores the MongoDB(&reg;) data and configurations at the `/bitnami/mongodb` path of the container.
+Bitnami charts, with its default settings, configure credentials at first boot. Any further change in the secrets or credentials can be done using one of the following methods:
 
-The chart mounts a [Persistent Volume](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) at this location. The volume is created using dynamic volume provisioning.
+#### Manual update of the passwords and secrets
 
-If you encounter errors when working with persistent volumes, refer to our [troubleshooting guide for persistent volumes](https://docs.bitnami.com/kubernetes/faq/troubleshooting/troubleshooting-persistence-volumes/).
+- Update the user password following [the upstream documentation](https://www.mongodb.com/docs/manual/reference/method/db.changeUserPassword/)
+- Update the password secret with the new values (replace the SECRET_NAME, PASSWORDS and ROOT_PASSWORD placeholders)
 
-### Backup and restore MongoDB(R) deployments
+```shell
+kubectl create secret generic SECRET_NAME --from-literal=mongodb-passwords=PASSWORD --from-literal=mongodb-root-password=ROOT_PASSWORD --dry-run -o yaml | kubectl apply -f -
+```
+
+#### Automated update using a password update job
+
+The Bitnami MongoDB provides a password update job that will automatically change the MongoDB passwords when running helm upgrade. To enable the job set `passwordUpdateJob.enabled=true`. This job requires:
+
+- The new passwords: this is configured using either `auth.rootPassword`, `auth.passwords` and `metrics.passwords` (if applicable) or setting `auth.existingSecret`.
+- The previous root password: This value is taken automatically from already deployed secret object. If you are using `auth.existingSecret` or `helm template` instead of `helm upgrade`, then set either `passwordUpdateJob.previousPasswords.rootPassword` or  setting `passwordUpdateJob.previousPasswords.existingSecret`.
+
+In the following example we update only the root password via values.yaml in a MongoDB installation:
+
+```yaml
+auth:
+  rootPassword: "newRootPassword123"
+passwordUpdateJob:
+  enabled: true
+```
+
+In the following example we update the password via values.yaml in a MongoDB installation with replication and several usernames and databases (including metrics).
+
+```yaml
+architecture: "replicaset"
+
+auth:
+  usernames:
+    - "user1"
+    - "user2"
+  rootPassword: "newRootPassword123"
+  passwords:
+    - "newUserPassword123"
+    - "newUserPassword144"
+  databases:
+    - "userdatabase"
+    - "userdatabase2"
+
+metrics:
+  username: "metricsuser"
+  password: "newMetricsPassword"
+
+passwordUpdateJob:
+  enabled: true
+```
+
+In this example we use two existing secrets (`new-password-secret` and `previous-password-secret`) to update several users and passwords (including metrics):
+
+```yaml
+auth:
+  usernames:
+    - "user1"
+    - "user2"
+  databases:
+    - "userdatabase"
+    - "userdatabase2"
+  existingSecret: new-password-secret
+
+metrics:
+  username: "metricsuser"
+
+passwordUpdateJob:
+  enabled: true
+  previousPasswords:
+    existingSecret: previous-password-secret
+```
+
+You can add extra update commands using the `passwordUpdateJob.extraCommands` value.
+
+### Backup and restore
 
 Two different approaches are available to back up and restore Bitnami MongoDB&reg; Helm chart deployments on Kubernetes:
 
@@ -920,7 +411,7 @@ This method involves the following steps:
 - Use Velero to restore the backed-up PVs on the destination cluster.
 - Create a new deployment on the destination cluster with the same chart, deployment name, credentials and other parameters as the original. This new deployment will use the restored PVs and hence the original data.
 
-Refer to our detailed [tutorial on backing up and restoring MongoDB&reg; chart deployments on Kubernetes](https://docs.bitnami.com/tutorials/backup-restore-data-mongodb-kubernetes/), which covers both these approaches, for more information.
+Refer to our detailed [tutorial on backing up and restoring MongoDB&reg; chart deployments on Kubernetes](https://techdocs.broadcom.com/us/en/vmware-tanzu/application-catalog/tanzu-application-catalog/services/tac-doc/apps-tutorials-backup-restore-data-mongodb-kubernetes-index.html), which covers both these approaches, for more information.
 
 ### Use custom Prometheus rules
 
@@ -943,7 +434,7 @@ Custom Prometheus rules can be defined for the Prometheus Operator by using the
               summary: High request latency
 ```
 
-### Enable SSL/TLS
+### Securing traffic using TLS
 
 This chart supports enabling SSL/TLS between nodes in the cluster, as well as between MongoDB(&reg;) clients and nodes, by setting the `MONGODB_EXTRA_FLAGS` and `MONGODB_CLIENT_EXTRA_FLAGS` container environment variables, together with the correct `MONGODB_ADVERTISED_HOSTNAME`. To enable full TLS encryption, set the `tls.enabled` parameter to `true`.
 
@@ -961,6 +452,19 @@ To use your own CA, set `tls.caCert` and `tls.caKey` with appropriate base64 enc
 
 > NOTE: Currently, only RSA private keys are supported.
 
+#### Use your own certificates
+
+To use your own certificates, set `tls.standalone.existingSecret`, `tls.replicaset.existingSecrets`, `tls.hidden.existingSecrets` and/or `tls.arbiter.existingSecret` secrets according to your needs. All of them must be references to `kubernetes.io/tls` secrets and the certificates must be created using the same CA. The CA can be added directly to each secret using the `ca.crt` key:
+
+```shell
+kubectl create secret tls "mongodb-0-cert"  --cert="mongodb-0.crt" --key="mongodb-0.key"
+kubectl patch secret "mongodb-0-cert" -p="{\"data\":{\"ca.crt\": \"$(cat ca.crt | base64 -w0 )\"}}"
+```
+
+Or adding it to the "endpoint certificate" and setting the value `tls.pemChainIncluded`. If we reuse the example above, the `mongodb-0.crt` file should include CA cert and we shouldn't need to patch the secret to add the `ca.crt` set key.
+
+> NOTE: Certificates should be signed for the fully qualified domain names. If `externalAccess.service.publicNames`is set, those names should be used in the certificates set in `tls.replicaset.existingSecrets`.
+
 #### Access the cluster
 
 To access the cluster, enable the init container which generates the MongoDB(&reg;) server/client PEM key needed to access the cluster. Please be sure to include the `$my_hostname` section with your actual hostname, and the alternative hostnames section should contain the hostnames that should be allowed access to the MongoDB(&reg;) replicaset. Additionally, if external access is enabled, the load balancer IP addresses are added to the alternative names list.
@@ -977,12 +481,699 @@ This chart allows you to set your custom affinity using the `XXX.affinity` param
 
 As an alternative, you can use the preset configurations for pod affinity, pod anti-affinity, and node affinity available at the [bitnami/common](https://github.com/bitnami/charts/tree/main/bitnami/common#affinities) chart. To do so, set the `XXX.podAffinityPreset`, `XXX.podAntiAffinityPreset`, or `XXX.nodeAffinityPreset` parameters.
 
+## Persistence
+
+The [Bitnami MongoDB(&reg;)](https://github.com/bitnami/containers/tree/main/bitnami/mongodb) image stores the MongoDB(&reg;) data and configurations at the `/bitnami/mongodb` path of the container.
+
+The chart mounts a [Persistent Volume](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) at this location. The volume is created using dynamic volume provisioning.
+
+If you encounter errors when working with persistent volumes, refer to our [troubleshooting guide for persistent volumes](https://docs.bitnami.com/kubernetes/faq/troubleshooting/troubleshooting-persistence-volumes/).
+
+## Parameters
+
+### Global parameters
+
+| Name                                                  | Description                                                                                                                                                                                                                                                                                                                                                         | Value   |
+| ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
+| `global.imageRegistry`                                | Global Docker image registry                                                                                                                                                                                                                                                                                                                                        | `""`    |
+| `global.imagePullSecrets`                             | Global Docker registry secret names as an array                                                                                                                                                                                                                                                                                                                     | `[]`    |
+| `global.defaultStorageClass`                          | Global default StorageClass for Persistent Volume(s)                                                                                                                                                                                                                                                                                                                | `""`    |
+| `global.storageClass`                                 | DEPRECATED: use global.defaultStorageClass instead                                                                                                                                                                                                                                                                                                                  | `""`    |
+| `global.namespaceOverride`                            | Override the namespace for resource deployed by the chart, but can itself be overridden by the local namespaceOverride                                                                                                                                                                                                                                              | `""`    |
+| `global.security.allowInsecureImages`                 | Allows skipping image verification                                                                                                                                                                                                                                                                                                                                  | `false` |
+| `global.compatibility.openshift.adaptSecurityContext` | Adapt the securityContext sections of the deployment to make them compatible with Openshift restricted-v2 SCC: remove runAsUser, runAsGroup and fsGroup and let the platform use their allowed default IDs. Possible values: auto (apply if the detected running cluster is Openshift), force (perform the adaptation always), disabled (do not perform adaptation) | `auto`  |
+
+### Common parameters
+
+| Name                      | Description                                                                                               | Value           |
+| ------------------------- | --------------------------------------------------------------------------------------------------------- | --------------- |
+| `nameOverride`            | String to partially override mongodb.fullname template (will maintain the release name)                   | `""`            |
+| `fullnameOverride`        | String to fully override mongodb.fullname template                                                        | `""`            |
+| `namespaceOverride`       | String to fully override common.names.namespace                                                           | `""`            |
+| `kubeVersion`             | Force target Kubernetes version (using Helm capabilities if not set)                                      | `""`            |
+| `clusterDomain`           | Default Kubernetes cluster domain                                                                         | `cluster.local` |
+| `extraDeploy`             | Array of extra objects to deploy with the release                                                         | `[]`            |
+| `commonLabels`            | Add labels to all the deployed resources (sub-charts are not considered). Evaluated as a template         | `{}`            |
+| `commonAnnotations`       | Common annotations to add to all Mongo resources (sub-charts are not considered). Evaluated as a template | `{}`            |
+| `topologyKey`             | Override common lib default topology key. If empty - "kubernetes.io/hostname" is used                     | `""`            |
+| `serviceBindings.enabled` | Create secret for service binding (Experimental)                                                          | `false`         |
+| `enableServiceLinks`      | Whether information about services should be injected into pod's environment variable                     | `true`          |
+| `usePasswordFiles`        | Mount credentials as files instead of using environment variables                                         | `true`          |
+| `diagnosticMode.enabled`  | Enable diagnostic mode (all probes will be disabled and the command will be overridden)                   | `false`         |
+| `diagnosticMode.command`  | Command to override all containers in the deployment                                                      | `["sleep"]`     |
+| `diagnosticMode.args`     | Args to override all containers in the deployment                                                         | `["infinity"]`  |
+
+### MongoDB(&reg;) parameters
+
+| Name                             | Description                                                                                                                                                                                                               | Value                     |
+| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- |
+| `image.registry`                 | MongoDB(&reg;) image registry                                                                                                                                                                                             | `REGISTRY_NAME`           |
+| `image.repository`               | MongoDB(&reg;) image registry                                                                                                                                                                                             | `REPOSITORY_NAME/mongodb` |
+| `image.digest`                   | MongoDB(&reg;) image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag                                                                                                            | `""`                      |
+| `image.pullPolicy`               | MongoDB(&reg;) image pull policy                                                                                                                                                                                          | `IfNotPresent`            |
+| `image.pullSecrets`              | Specify docker-registry secret names as an array                                                                                                                                                                          | `[]`                      |
+| `image.debug`                    | Set to true if you would like to see extra information on logs                                                                                                                                                            | `false`                   |
+| `schedulerName`                  | Name of the scheduler (other than default) to dispatch pods                                                                                                                                                               | `""`                      |
+| `architecture`                   | MongoDB(&reg;) architecture (`standalone` or `replicaset`)                                                                                                                                                                | `standalone`              |
+| `useStatefulSet`                 | Set to true to use a StatefulSet instead of a Deployment (only when `architecture=standalone`)                                                                                                                            | `false`                   |
+| `auth.enabled`                   | Enable authentication                                                                                                                                                                                                     | `true`                    |
+| `auth.rootUser`                  | MongoDB(&reg;) root user                                                                                                                                                                                                  | `root`                    |
+| `auth.rootPassword`              | MongoDB(&reg;) root password                                                                                                                                                                                              | `""`                      |
+| `auth.usernames`                 | List of custom users to be created during the initialization                                                                                                                                                              | `[]`                      |
+| `auth.passwords`                 | List of passwords for the custom users set at `auth.usernames`                                                                                                                                                            | `[]`                      |
+| `auth.databases`                 | List of custom databases to be created during the initialization                                                                                                                                                          | `[]`                      |
+| `auth.username`                  | DEPRECATED: use `auth.usernames` instead                                                                                                                                                                                  | `""`                      |
+| `auth.password`                  | DEPRECATED: use `auth.passwords` instead                                                                                                                                                                                  | `""`                      |
+| `auth.database`                  | DEPRECATED: use `auth.databases` instead                                                                                                                                                                                  | `""`                      |
+| `auth.replicaSetKey`             | Key used for authentication in the replicaset (only when `architecture=replicaset`)                                                                                                                                       | `""`                      |
+| `auth.existingSecret`            | Existing secret with MongoDB(&reg;) credentials (keys: `mongodb-passwords`, `mongodb-root-password`, `mongodb-metrics-password`, `mongodb-replica-set-key`)                                                               | `""`                      |
+| `tls.enabled`                    | Enable MongoDB(&reg;) TLS support between nodes in the cluster as well as between mongo clients and nodes                                                                                                                 | `false`                   |
+| `tls.mTLS.enabled`               | IF TLS support is enabled, require clients to provide certificates                                                                                                                                                        | `true`                    |
+| `tls.autoGenerated`              | Generate a custom CA and self-signed certificates                                                                                                                                                                         | `true`                    |
+| `tls.existingSecret`             | Existing secret with TLS certificates (keys: `mongodb-ca-cert`, `mongodb-ca-key`)                                                                                                                                         | `""`                      |
+| `tls.caCert`                     | Custom CA certificated (base64 encoded)                                                                                                                                                                                   | `""`                      |
+| `tls.caKey`                      | CA certificate private key (base64 encoded)                                                                                                                                                                               | `""`                      |
+| `tls.pemChainIncluded`           | Flag to denote that the Certificate Authority (CA) certificates are bundled with the endpoint cert.                                                                                                                       | `false`                   |
+| `tls.standalone.existingSecret`  | Existing secret with TLS certificates (`tls.key`, `tls.crt`, `ca.crt`) or (`tls.key`, `tls.crt`) with tls.pemChainIncluded set as enabled.                                                                                | `""`                      |
+| `tls.replicaset.existingSecrets` | Array of existing secrets with TLS certificates (`tls.key`, `tls.crt`, `ca.crt`) or (`tls.key`, `tls.crt`) with tls.pemChainIncluded set as enabled.                                                                      | `[]`                      |
+| `tls.hidden.existingSecrets`     | Array of existing secrets with TLS certificates (`tls.key`, `tls.crt`, `ca.crt`) or (`tls.key`, `tls.crt`) with tls.pemChainIncluded set as enabled.                                                                      | `[]`                      |
+| `tls.arbiter.existingSecret`     | Existing secret with TLS certificates (`tls.key`, `tls.crt`, `ca.crt`) or (`tls.key`, `tls.crt`) with tls.pemChainIncluded set as enabled.                                                                                | `""`                      |
+| `tls.image.registry`             | Init container TLS certs setup image registry                                                                                                                                                                             | `REGISTRY_NAME`           |
+| `tls.image.repository`           | Init container TLS certs setup image repository                                                                                                                                                                           | `REPOSITORY_NAME/nginx`   |
+| `tls.image.digest`               | Init container TLS certs setup image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag                                                                                            | `""`                      |
+| `tls.image.pullPolicy`           | Init container TLS certs setup image pull policy                                                                                                                                                                          | `IfNotPresent`            |
+| `tls.image.pullSecrets`          | Init container TLS certs specify docker-registry secret names as an array                                                                                                                                                 | `[]`                      |
+| `tls.extraDnsNames`              | Add extra dns names to the CA, can solve x509 auth issue for pod clients                                                                                                                                                  | `[]`                      |
+| `tls.mode`                       | Allows to set the tls mode which should be used when tls is enabled (options: `allowTLS`, `preferTLS`, `requireTLS`)                                                                                                      | `requireTLS`              |
+| `tls.resourcesPreset`            | Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if tls.resources is set (tls.resources is recommended for production). | `nano`                    |
+| `tls.resources`                  | Set container requests and limits for different resources like CPU or memory (essential for production workloads)                                                                                                         | `{}`                      |
+| `tls.securityContext`            | Init container generate-tls-cert Security context                                                                                                                                                                         | `{}`                      |
+| `automountServiceAccountToken`   | Mount Service Account token in pod                                                                                                                                                                                        | `false`                   |
+| `hostAliases`                    | Add deployment host aliases                                                                                                                                                                                               | `[]`                      |
+| `replicaSetName`                 | Name of the replica set (only when `architecture=replicaset`)                                                                                                                                                             | `rs0`                     |
+| `replicaSetHostnames`            | Enable DNS hostnames in the replicaset config (only when `architecture=replicaset`)                                                                                                                                       | `true`                    |
+| `enableIPv6`                     | Switch to enable/disable IPv6 on MongoDB(&reg;)                                                                                                                                                                           | `false`                   |
+| `directoryPerDB`                 | Switch to enable/disable DirectoryPerDB on MongoDB(&reg;)                                                                                                                                                                 | `false`                   |
+| `systemLogVerbosity`             | MongoDB(&reg;) system log verbosity level                                                                                                                                                                                 | `0`                       |
+| `disableSystemLog`               | Switch to enable/disable MongoDB(&reg;) system log                                                                                                                                                                        | `false`                   |
+| `disableJavascript`              | Switch to enable/disable MongoDB(&reg;) server-side JavaScript execution                                                                                                                                                  | `false`                   |
+| `enableJournal`                  | Switch to enable/disable MongoDB(&reg;) Journaling                                                                                                                                                                        | `true`                    |
+| `configuration`                  | MongoDB(&reg;) configuration file to be used for Primary and Secondary nodes                                                                                                                                              | `""`                      |
+
+### replicaSetConfigurationSettings settings applied during runtime (not via configuration file)
+
+| Name                                            | Description                                                                                         | Value   |
+| ----------------------------------------------- | --------------------------------------------------------------------------------------------------- | ------- |
+| `replicaSetConfigurationSettings.enabled`       | Enable MongoDB(&reg;) Switch to enable/disable configuring MongoDB(&reg;) run time rs.conf settings | `false` |
+| `replicaSetConfigurationSettings.configuration` | run-time rs.conf settings                                                                           | `{}`    |
+| `existingConfigmap`                             | Name of existing ConfigMap with MongoDB(&reg;) configuration for Primary and Secondary nodes        | `""`    |
+| `initdbScripts`                                 | Dictionary of initdb scripts                                                                        | `{}`    |
+| `initdbScriptsConfigMap`                        | Existing ConfigMap with custom initdb scripts                                                       | `""`    |
+| `command`                                       | Override default container command (useful when using custom images)                                | `[]`    |
+| `args`                                          | Override default container args (useful when using custom images)                                   | `[]`    |
+| `extraFlags`                                    | MongoDB(&reg;) additional command line flags                                                        | `[]`    |
+| `extraEnvVars`                                  | Extra environment variables to add to MongoDB(&reg;) pods                                           | `[]`    |
+| `extraEnvVarsCM`                                | Name of existing ConfigMap containing extra env vars                                                | `""`    |
+| `extraEnvVarsSecret`                            | Name of existing Secret containing extra env vars (in case of sensitive data)                       | `""`    |
+
+### MongoDB(&reg;) statefulset parameters
+
+| Name                                                | Description                                                                                                                                                                                                       | Value            |
+| --------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- |
+| `annotations`                                       | Additional labels to be added to the MongoDB(&reg;) statefulset. Evaluated as a template                                                                                                                          | `{}`             |
+| `labels`                                            | Annotations to be added to the MongoDB(&reg;) statefulset. Evaluated as a template                                                                                                                                | `{}`             |
+| `replicaCount`                                      | Number of MongoDB(&reg;) nodes                                                                                                                                                                                    | `2`              |
+| `updateStrategy.type`                               | Strategy to use to replace existing MongoDB(&reg;) pods. When architecture=standalone and useStatefulSet=false,                                                                                                   | `RollingUpdate`  |
+| `podManagementPolicy`                               | Pod management policy for MongoDB(&reg;)                                                                                                                                                                          | `OrderedReady`   |
+| `podAffinityPreset`                                 | MongoDB(&reg;) Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`                                                                                                                | `""`             |
+| `podAntiAffinityPreset`                             | MongoDB(&reg;) Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`                                                                                                           | `soft`           |
+| `nodeAffinityPreset.type`                           | MongoDB(&reg;) Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard`                                                                                                          | `""`             |
+| `nodeAffinityPreset.key`                            | MongoDB(&reg;) Node label key to match Ignored if `affinity` is set.                                                                                                                                              | `""`             |
+| `nodeAffinityPreset.values`                         | MongoDB(&reg;) Node label values to match. Ignored if `affinity` is set.                                                                                                                                          | `[]`             |
+| `affinity`                                          | MongoDB(&reg;) Affinity for pod assignment                                                                                                                                                                        | `{}`             |
+| `nodeSelector`                                      | MongoDB(&reg;) Node labels for pod assignment                                                                                                                                                                     | `{}`             |
+| `tolerations`                                       | MongoDB(&reg;) Tolerations for pod assignment                                                                                                                                                                     | `[]`             |
+| `topologySpreadConstraints`                         | MongoDB(&reg;) Spread Constraints for Pods                                                                                                                                                                        | `[]`             |
+| `lifecycleHooks`                                    | LifecycleHook for the MongoDB(&reg;) container(s) to automate configuration before or after startup                                                                                                               | `{}`             |
+| `terminationGracePeriodSeconds`                     | MongoDB(&reg;) Termination Grace Period                                                                                                                                                                           | `""`             |
+| `podLabels`                                         | MongoDB(&reg;) pod labels                                                                                                                                                                                         | `{}`             |
+| `podAnnotations`                                    | MongoDB(&reg;) Pod annotations                                                                                                                                                                                    | `{}`             |
+| `priorityClassName`                                 | Name of the existing priority class to be used by MongoDB(&reg;) pod(s)                                                                                                                                           | `""`             |
+| `runtimeClassName`                                  | Name of the runtime class to be used by MongoDB(&reg;) pod(s)                                                                                                                                                     | `""`             |
+| `podSecurityContext.enabled`                        | Enable MongoDB(&reg;) pod(s)' Security Context                                                                                                                                                                    | `true`           |
+| `podSecurityContext.fsGroupChangePolicy`            | Set filesystem group change policy                                                                                                                                                                                | `Always`         |
+| `podSecurityContext.supplementalGroups`             | Set filesystem extra groups                                                                                                                                                                                       | `[]`             |
+| `podSecurityContext.fsGroup`                        | Group ID for the volumes of the MongoDB(&reg;) pod(s)                                                                                                                                                             | `1001`           |
+| `podSecurityContext.sysctls`                        | sysctl settings of the MongoDB(&reg;) pod(s)'                                                                                                                                                                     | `[]`             |
+| `containerSecurityContext.enabled`                  | Enabled containers' Security Context                                                                                                                                                                              | `true`           |
+| `containerSecurityContext.seLinuxOptions`           | Set SELinux options in container                                                                                                                                                                                  | `{}`             |
+| `containerSecurityContext.runAsUser`                | Set containers' Security Context runAsUser                                                                                                                                                                        | `1001`           |
+| `containerSecurityContext.runAsGroup`               | Set containers' Security Context runAsGroup                                                                                                                                                                       | `1001`           |
+| `containerSecurityContext.runAsNonRoot`             | Set container's Security Context runAsNonRoot                                                                                                                                                                     | `true`           |
+| `containerSecurityContext.privileged`               | Set container's Security Context privileged                                                                                                                                                                       | `false`          |
+| `containerSecurityContext.readOnlyRootFilesystem`   | Set container's Security Context readOnlyRootFilesystem                                                                                                                                                           | `true`           |
+| `containerSecurityContext.allowPrivilegeEscalation` | Set container's Security Context allowPrivilegeEscalation                                                                                                                                                         | `false`          |
+| `containerSecurityContext.capabilities.drop`        | List of capabilities to be dropped                                                                                                                                                                                | `["ALL"]`        |
+| `containerSecurityContext.seccompProfile.type`      | Set container's Security Context seccomp profile                                                                                                                                                                  | `RuntimeDefault` |
+| `resourcesPreset`                                   | Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if resources is set (resources is recommended for production). | `small`          |
+| `resources`                                         | Set container requests and limits for different resources like CPU or memory (essential for production workloads)                                                                                                 | `{}`             |
+| `containerPorts.mongodb`                            | MongoDB(&reg;) container port                                                                                                                                                                                     | `27017`          |
+| `livenessProbe.enabled`                             | Enable livenessProbe                                                                                                                                                                                              | `true`           |
+| `livenessProbe.initialDelaySeconds`                 | Initial delay seconds for livenessProbe                                                                                                                                                                           | `30`             |
+| `livenessProbe.periodSeconds`                       | Period seconds for livenessProbe                                                                                                                                                                                  | `20`             |
+| `livenessProbe.timeoutSeconds`                      | Timeout seconds for livenessProbe                                                                                                                                                                                 | `10`             |
+| `livenessProbe.failureThreshold`                    | Failure threshold for livenessProbe                                                                                                                                                                               | `6`              |
+| `livenessProbe.successThreshold`                    | Success threshold for livenessProbe                                                                                                                                                                               | `1`              |
+| `readinessProbe.enabled`                            | Enable readinessProbe                                                                                                                                                                                             | `true`           |
+| `readinessProbe.initialDelaySeconds`                | Initial delay seconds for readinessProbe                                                                                                                                                                          | `5`              |
+| `readinessProbe.periodSeconds`                      | Period seconds for readinessProbe                                                                                                                                                                                 | `10`             |
+| `readinessProbe.timeoutSeconds`                     | Timeout seconds for readinessProbe                                                                                                                                                                                | `5`              |
+| `readinessProbe.failureThreshold`                   | Failure threshold for readinessProbe                                                                                                                                                                              | `6`              |
+| `readinessProbe.successThreshold`                   | Success threshold for readinessProbe                                                                                                                                                                              | `1`              |
+| `startupProbe.enabled`                              | Enable startupProbe                                                                                                                                                                                               | `false`          |
+| `startupProbe.initialDelaySeconds`                  | Initial delay seconds for startupProbe                                                                                                                                                                            | `5`              |
+| `startupProbe.periodSeconds`                        | Period seconds for startupProbe                                                                                                                                                                                   | `20`             |
+| `startupProbe.timeoutSeconds`                       | Timeout seconds for startupProbe                                                                                                                                                                                  | `10`             |
+| `startupProbe.failureThreshold`                     | Failure threshold for startupProbe                                                                                                                                                                                | `30`             |
+| `startupProbe.successThreshold`                     | Success threshold for startupProbe                                                                                                                                                                                | `1`              |
+| `customLivenessProbe`                               | Override default liveness probe for MongoDB(&reg;) containers                                                                                                                                                     | `{}`             |
+| `customReadinessProbe`                              | Override default readiness probe for MongoDB(&reg;) containers                                                                                                                                                    | `{}`             |
+| `customStartupProbe`                                | Override default startup probe for MongoDB(&reg;) containers                                                                                                                                                      | `{}`             |
+| `initContainers`                                    | Add additional init containers for the hidden node pod(s)                                                                                                                                                         | `[]`             |
+| `sidecars`                                          | Add additional sidecar containers for the MongoDB(&reg;) pod(s)                                                                                                                                                   | `[]`             |
+| `extraVolumeMounts`                                 | Optionally specify extra list of additional volumeMounts for the MongoDB(&reg;) container(s)                                                                                                                      | `[]`             |
+| `extraVolumes`                                      | Optionally specify extra list of additional volumes to the MongoDB(&reg;) statefulset                                                                                                                             | `[]`             |
+| `pdb.create`                                        | Enable/disable a Pod Disruption Budget creation for MongoDB(&reg;) pod(s)                                                                                                                                         | `true`           |
+| `pdb.minAvailable`                                  | Minimum number/percentage of MongoDB(&reg;) pods that must still be available after the eviction                                                                                                                  | `""`             |
+| `pdb.maxUnavailable`                                | Maximum number/percentage of MongoDB(&reg;) pods that may be made unavailable after the eviction. Defaults to `1` if both `pdb.minAvailable` and `pdb.maxUnavailable` are empty.                                  | `""`             |
+
+### Traffic exposure parameters
+
+| Name                                                          | Description                                                                                                                                                                                                                                                                 | Value                     |
+| ------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- |
+| `service.nameOverride`                                        | MongoDB(&reg;) service name                                                                                                                                                                                                                                                 | `""`                      |
+| `service.type`                                                | Kubernetes Service type (only for standalone architecture)                                                                                                                                                                                                                  | `ClusterIP`               |
+| `service.portName`                                            | MongoDB(&reg;) service port name (only for standalone architecture)                                                                                                                                                                                                         | `mongodb`                 |
+| `service.ports.mongodb`                                       | MongoDB(&reg;) service port.                                                                                                                                                                                                                                                | `27017`                   |
+| `service.nodePorts.mongodb`                                   | Port to bind to for NodePort and LoadBalancer service types (only for standalone architecture)                                                                                                                                                                              | `""`                      |
+| `service.clusterIP`                                           | MongoDB(&reg;) service cluster IP (only for standalone architecture)                                                                                                                                                                                                        | `""`                      |
+| `service.externalIPs`                                         | Specify the externalIP value ClusterIP service type (only for standalone architecture)                                                                                                                                                                                      | `[]`                      |
+| `service.loadBalancerIP`                                      | loadBalancerIP for MongoDB(&reg;) Service (only for standalone architecture)                                                                                                                                                                                                | `""`                      |
+| `service.loadBalancerClass`                                   | loadBalancerClass for MongoDB(&reg;) Service (only for standalone architecture)                                                                                                                                                                                             | `""`                      |
+| `service.loadBalancerSourceRanges`                            | Address(es) that are allowed when service is LoadBalancer (only for standalone architecture)                                                                                                                                                                                | `[]`                      |
+| `service.allocateLoadBalancerNodePorts`                       | Wheter to allocate node ports when service type is LoadBalancer                                                                                                                                                                                                             | `true`                    |
+| `service.extraPorts`                                          | Extra ports to expose (normally used with the `sidecar` value)                                                                                                                                                                                                              | `[]`                      |
+| `service.annotations`                                         | Provide any additional annotations that may be required                                                                                                                                                                                                                     | `{}`                      |
+| `service.externalTrafficPolicy`                               | service external traffic policy (only for standalone architecture)                                                                                                                                                                                                          | `Local`                   |
+| `service.sessionAffinity`                                     | Control where client requests go, to the same pod or round-robin                                                                                                                                                                                                            | `None`                    |
+| `service.sessionAffinityConfig`                               | Additional settings for the sessionAffinity                                                                                                                                                                                                                                 | `{}`                      |
+| `service.headless.annotations`                                | Annotations for the headless service.                                                                                                                                                                                                                                       | `{}`                      |
+| `service.publishNotReadyAddresses`                            | Indicates that any agent which deals with endpoints for this Service should disregard any indications of ready/not-ready                                                                                                                                                    | `false`                   |
+| `externalAccess.enabled`                                      | Enable Kubernetes external cluster access to MongoDB(&reg;) nodes (only for replicaset architecture)                                                                                                                                                                        | `false`                   |
+| `externalAccess.autoDiscovery.enabled`                        | Enable using an init container to auto-detect external IPs by querying the K8s API                                                                                                                                                                                          | `false`                   |
+| `externalAccess.autoDiscovery.image.registry`                 | Init container auto-discovery image registry                                                                                                                                                                                                                                | `REGISTRY_NAME`           |
+| `externalAccess.autoDiscovery.image.repository`               | Init container auto-discovery image repository                                                                                                                                                                                                                              | `REPOSITORY_NAME/kubectl` |
+| `externalAccess.autoDiscovery.image.digest`                   | Init container auto-discovery image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag                                                                                                                                               | `""`                      |
+| `externalAccess.autoDiscovery.image.pullPolicy`               | Init container auto-discovery image pull policy                                                                                                                                                                                                                             | `IfNotPresent`            |
+| `externalAccess.autoDiscovery.image.pullSecrets`              | Init container auto-discovery image pull secrets                                                                                                                                                                                                                            | `[]`                      |
+| `externalAccess.autoDiscovery.resourcesPreset`                | Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if externalAccess.autoDiscovery.resources is set (externalAccess.autoDiscovery.resources is recommended for production). | `nano`                    |
+| `externalAccess.autoDiscovery.resources`                      | Set container requests and limits for different resources like CPU or memory (essential for production workloads)                                                                                                                                                           | `{}`                      |
+| `externalAccess.dnsCheck.image.registry`                      | Init container dns-check image registry                                                                                                                                                                                                                                     | `REGISTRY_NAME`           |
+| `externalAccess.dnsCheck.image.repository`                    | Init container dns-check image repository                                                                                                                                                                                                                                   | `REPOSITORY_NAME/kubectl` |
+| `externalAccess.dnsCheck.image.digest`                        | Init container dns-check image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag                                                                                                                                                    | `""`                      |
+| `externalAccess.dnsCheck.image.pullPolicy`                    | Init container dns-check image pull policy                                                                                                                                                                                                                                  | `IfNotPresent`            |
+| `externalAccess.dnsCheck.image.pullSecrets`                   | Init container dns-check image pull secrets                                                                                                                                                                                                                                 | `[]`                      |
+| `externalAccess.dnsCheck.resourcesPreset`                     | Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if externalAccess.autoDiscovery.resources is set (externalAccess.autoDiscovery.resources is recommended for production). | `nano`                    |
+| `externalAccess.dnsCheck.resources`                           | Set container requests and limits for different resources like CPU or memory (essential for production workloads)                                                                                                                                                           | `{}`                      |
+| `externalAccess.externalMaster.enabled`                       | Use external master for bootstrapping                                                                                                                                                                                                                                       | `false`                   |
+| `externalAccess.externalMaster.host`                          | External master host to bootstrap from                                                                                                                                                                                                                                      | `""`                      |
+| `externalAccess.externalMaster.port`                          | Port for MongoDB(&reg;) service external master host                                                                                                                                                                                                                        | `27017`                   |
+| `externalAccess.service.type`                                 | Kubernetes Service type for external access. Allowed values: NodePort, LoadBalancer or ClusterIP                                                                                                                                                                            | `LoadBalancer`            |
+| `externalAccess.service.portName`                             | MongoDB(&reg;) port name used for external access when service type is LoadBalancer                                                                                                                                                                                         | `mongodb`                 |
+| `externalAccess.service.ports.mongodb`                        | MongoDB(&reg;) port used for external access when service type is LoadBalancer                                                                                                                                                                                              | `27017`                   |
+| `externalAccess.service.loadBalancerIPs`                      | Array of load balancer IPs for MongoDB(&reg;) nodes                                                                                                                                                                                                                         | `[]`                      |
+| `externalAccess.service.publicNames`                          | Array of public names. The size should be equal to the number of replicas.                                                                                                                                                                                                  | `[]`                      |
+| `externalAccess.service.loadBalancerClass`                    | loadBalancerClass when service type is LoadBalancer                                                                                                                                                                                                                         | `""`                      |
+| `externalAccess.service.loadBalancerSourceRanges`             | Address(es) that are allowed when service is LoadBalancer                                                                                                                                                                                                                   | `[]`                      |
+| `externalAccess.service.allocateLoadBalancerNodePorts`        | Whether to allocate node ports when service type is LoadBalancer                                                                                                                                                                                                            | `true`                    |
+| `externalAccess.service.externalTrafficPolicy`                | MongoDB(&reg;) service external traffic policy                                                                                                                                                                                                                              | `Local`                   |
+| `externalAccess.service.nodePorts`                            | Array of node ports used to configure MongoDB(&reg;) advertised hostname when service type is NodePort                                                                                                                                                                      | `[]`                      |
+| `externalAccess.service.domain`                               | Domain or external IP used to configure MongoDB(&reg;) advertised hostname when service type is NodePort                                                                                                                                                                    | `""`                      |
+| `externalAccess.service.extraPorts`                           | Extra ports to expose (normally used with the `sidecar` value)                                                                                                                                                                                                              | `[]`                      |
+| `externalAccess.service.annotations`                          | Service annotations for external access. These annotations are common for all services created.                                                                                                                                                                             | `{}`                      |
+| `externalAccess.service.annotationsList`                      | Service annotations for eache external service. This value contains a list allowing different annotations per each external service.                                                                                                                                        | `[]`                      |
+| `externalAccess.service.sessionAffinity`                      | Control where client requests go, to the same pod or round-robin                                                                                                                                                                                                            | `None`                    |
+| `externalAccess.service.sessionAffinityConfig`                | Additional settings for the sessionAffinity                                                                                                                                                                                                                                 | `{}`                      |
+| `externalAccess.hidden.enabled`                               | Enable Kubernetes external cluster access to MongoDB(&reg;) hidden nodes                                                                                                                                                                                                    | `false`                   |
+| `externalAccess.hidden.service.type`                          | Kubernetes Service type for external access. Allowed values: NodePort or LoadBalancer                                                                                                                                                                                       | `LoadBalancer`            |
+| `externalAccess.hidden.service.portName`                      | MongoDB(&reg;) port name used for external access when service type is LoadBalancer                                                                                                                                                                                         | `mongodb`                 |
+| `externalAccess.hidden.service.ports.mongodb`                 | MongoDB(&reg;) port used for external access when service type is LoadBalancer                                                                                                                                                                                              | `27017`                   |
+| `externalAccess.hidden.service.loadBalancerIPs`               | Array of load balancer IPs for MongoDB(&reg;) nodes                                                                                                                                                                                                                         | `[]`                      |
+| `externalAccess.hidden.service.loadBalancerClass`             | loadBalancerClass when service type is LoadBalancer                                                                                                                                                                                                                         | `""`                      |
+| `externalAccess.hidden.service.loadBalancerSourceRanges`      | Address(es) that are allowed when service is LoadBalancer                                                                                                                                                                                                                   | `[]`                      |
+| `externalAccess.hidden.service.allocateLoadBalancerNodePorts` | Wheter to allocate node ports when service type is LoadBalancer                                                                                                                                                                                                             | `true`                    |
+| `externalAccess.hidden.service.externalTrafficPolicy`         | MongoDB(&reg;) service external traffic policy                                                                                                                                                                                                                              | `Local`                   |
+| `externalAccess.hidden.service.nodePorts`                     | Array of node ports used to configure MongoDB(&reg;) advertised hostname when service type is NodePort. Length must be the same as replicaCount                                                                                                                             | `[]`                      |
+| `externalAccess.hidden.service.domain`                        | Domain or external IP used to configure MongoDB(&reg;) advertised hostname when service type is NodePort                                                                                                                                                                    | `""`                      |
+| `externalAccess.hidden.service.extraPorts`                    | Extra ports to expose (normally used with the `sidecar` value)                                                                                                                                                                                                              | `[]`                      |
+| `externalAccess.hidden.service.annotations`                   | Service annotations for external access                                                                                                                                                                                                                                     | `{}`                      |
+| `externalAccess.hidden.service.sessionAffinity`               | Control where client requests go, to the same pod or round-robin                                                                                                                                                                                                            | `None`                    |
+| `externalAccess.hidden.service.sessionAffinityConfig`         | Additional settings for the sessionAffinity                                                                                                                                                                                                                                 | `{}`                      |
+
+### Password update job
+
+| Name                                                                  | Description                                                                                                                                                                                                                                           | Value            |
+| --------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- |
+| `passwordUpdateJob.enabled`                                           | Enable password update job                                                                                                                                                                                                                            | `false`          |
+| `passwordUpdateJob.backoffLimit`                                      | set backoff limit of the job                                                                                                                                                                                                                          | `10`             |
+| `passwordUpdateJob.command`                                           | Override default container command on mysql Primary container(s) (useful when using custom images)                                                                                                                                                    | `[]`             |
+| `passwordUpdateJob.args`                                              | Override default container args on mysql Primary container(s) (useful when using custom images)                                                                                                                                                       | `[]`             |
+| `passwordUpdateJob.extraCommands`                                     | Extra commands to pass to the generation job                                                                                                                                                                                                          | `""`             |
+| `passwordUpdateJob.previousPasswords.rootPassword`                    | Previous root password (set if the password secret was already changed)                                                                                                                                                                               | `""`             |
+| `passwordUpdateJob.previousPasswords.existingSecret`                  | Name of a secret containing the previous passwords (set if the password secret was already changed)                                                                                                                                                   | `""`             |
+| `passwordUpdateJob.containerSecurityContext.enabled`                  | Enabled containers' Security Context                                                                                                                                                                                                                  | `true`           |
+| `passwordUpdateJob.containerSecurityContext.seLinuxOptions`           | Set SELinux options in container                                                                                                                                                                                                                      | `{}`             |
+| `passwordUpdateJob.containerSecurityContext.runAsUser`                | Set containers' Security Context runAsUser                                                                                                                                                                                                            | `1001`           |
+| `passwordUpdateJob.containerSecurityContext.runAsGroup`               | Set containers' Security Context runAsGroup                                                                                                                                                                                                           | `1001`           |
+| `passwordUpdateJob.containerSecurityContext.runAsNonRoot`             | Set container's Security Context runAsNonRoot                                                                                                                                                                                                         | `true`           |
+| `passwordUpdateJob.containerSecurityContext.privileged`               | Set container's Security Context privileged                                                                                                                                                                                                           | `false`          |
+| `passwordUpdateJob.containerSecurityContext.readOnlyRootFilesystem`   | Set container's Security Context readOnlyRootFilesystem                                                                                                                                                                                               | `true`           |
+| `passwordUpdateJob.containerSecurityContext.allowPrivilegeEscalation` | Set container's Security Context allowPrivilegeEscalation                                                                                                                                                                                             | `false`          |
+| `passwordUpdateJob.containerSecurityContext.capabilities.drop`        | List of capabilities to be dropped                                                                                                                                                                                                                    | `["ALL"]`        |
+| `passwordUpdateJob.containerSecurityContext.seccompProfile.type`      | Set container's Security Context seccomp profile                                                                                                                                                                                                      | `RuntimeDefault` |
+| `passwordUpdateJob.podSecurityContext.enabled`                        | Enabled credential init job pods' Security Context                                                                                                                                                                                                    | `true`           |
+| `passwordUpdateJob.podSecurityContext.fsGroupChangePolicy`            | Set filesystem group change policy                                                                                                                                                                                                                    | `Always`         |
+| `passwordUpdateJob.podSecurityContext.sysctls`                        | Set kernel settings using the sysctl interface                                                                                                                                                                                                        | `[]`             |
+| `passwordUpdateJob.podSecurityContext.supplementalGroups`             | Set filesystem extra groups                                                                                                                                                                                                                           | `[]`             |
+| `passwordUpdateJob.podSecurityContext.fsGroup`                        | Set credential init job pod's Security Context fsGroup                                                                                                                                                                                                | `1001`           |
+| `passwordUpdateJob.extraEnvVars`                                      | Array containing extra env vars to configure the credential init job                                                                                                                                                                                  | `[]`             |
+| `passwordUpdateJob.extraEnvVarsCM`                                    | ConfigMap containing extra env vars to configure the credential init job                                                                                                                                                                              | `""`             |
+| `passwordUpdateJob.extraEnvVarsSecret`                                | Secret containing extra env vars to configure the credential init job (in case of sensitive data)                                                                                                                                                     | `""`             |
+| `passwordUpdateJob.extraVolumes`                                      | Optionally specify extra list of additional volumes for the credential init job                                                                                                                                                                       | `[]`             |
+| `passwordUpdateJob.extraVolumeMounts`                                 | Array of extra volume mounts to be added to the jwt Container (evaluated as template). Normally used with `extraVolumes`.                                                                                                                             | `[]`             |
+| `passwordUpdateJob.initContainers`                                    | Add additional init containers for the mysql Primary pod(s)                                                                                                                                                                                           | `[]`             |
+| `passwordUpdateJob.resourcesPreset`                                   | Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if passwordUpdateJob.resources is set (passwordUpdateJob.resources is recommended for production). | `micro`          |
+| `passwordUpdateJob.resources`                                         | Set container requests and limits for different resources like CPU or memory (essential for production workloads)                                                                                                                                     | `{}`             |
+| `passwordUpdateJob.customLivenessProbe`                               | Custom livenessProbe that overrides the default one                                                                                                                                                                                                   | `{}`             |
+| `passwordUpdateJob.customReadinessProbe`                              | Custom readinessProbe that overrides the default one                                                                                                                                                                                                  | `{}`             |
+| `passwordUpdateJob.customStartupProbe`                                | Custom startupProbe that overrides the default one                                                                                                                                                                                                    | `{}`             |
+| `passwordUpdateJob.automountServiceAccountToken`                      | Mount Service Account token in pod                                                                                                                                                                                                                    | `false`          |
+| `passwordUpdateJob.hostAliases`                                       | Add deployment host aliases                                                                                                                                                                                                                           | `[]`             |
+| `passwordUpdateJob.annotations`                                       | Add annotations to the job                                                                                                                                                                                                                            | `{}`             |
+| `passwordUpdateJob.podLabels`                                         | Additional pod labels                                                                                                                                                                                                                                 | `{}`             |
+| `passwordUpdateJob.podAnnotations`                                    | Additional pod annotations                                                                                                                                                                                                                            | `{}`             |
+
+### Network policy parameters
+
+| Name                                               | Description                                                                                                                           | Value               |
+| -------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | ------------------- |
+| `networkPolicy.enabled`                            | Specifies whether a NetworkPolicy should be created                                                                                   | `true`              |
+| `networkPolicy.allowExternal`                      | Don't require server label for connections                                                                                            | `true`              |
+| `networkPolicy.allowExternalEgress`                | Allow the pod to access any range of port and all destinations.                                                                       | `true`              |
+| `networkPolicy.addExternalClientAccess`            | Allow access from pods with client label set to "true". Ignored if `networkPolicy.allowExternal` is true.                             | `true`              |
+| `networkPolicy.extraIngress`                       | Add extra ingress rules to the NetworkPolicy                                                                                          | `[]`                |
+| `networkPolicy.extraEgress`                        | Add extra ingress rules to the NetworkPolicy                                                                                          | `[]`                |
+| `networkPolicy.ingressPodMatchLabels`              | Labels to match to allow traffic from other pods. Ignored if `networkPolicy.allowExternal` is true.                                   | `{}`                |
+| `networkPolicy.ingressNSMatchLabels`               | Labels to match to allow traffic from other namespaces. Ignored if `networkPolicy.allowExternal` is true.                             | `{}`                |
+| `networkPolicy.ingressNSPodMatchLabels`            | Pod labels to match to allow traffic from other namespaces. Ignored if `networkPolicy.allowExternal` is true.                         | `{}`                |
+| `persistence.enabled`                              | Enable MongoDB(&reg;) data persistence using PVC                                                                                      | `true`              |
+| `persistence.name`                                 | Name of the PVC and mounted volume                                                                                                    | `datadir`           |
+| `persistence.medium`                               | Provide a medium for `emptyDir` volumes.                                                                                              | `""`                |
+| `persistence.existingClaim`                        | Provide an existing `PersistentVolumeClaim` (only when `architecture=standalone`)                                                     | `""`                |
+| `persistence.resourcePolicy`                       | Setting it to "keep" to avoid removing PVCs during a helm delete operation. Leaving it empty will delete PVCs after the chart deleted | `""`                |
+| `persistence.storageClass`                         | PVC Storage Class for MongoDB(&reg;) data volume                                                                                      | `""`                |
+| `persistence.accessModes`                          | PV Access Mode                                                                                                                        | `["ReadWriteOnce"]` |
+| `persistence.size`                                 | PVC Storage Request for MongoDB(&reg;) data volume                                                                                    | `8Gi`               |
+| `persistence.annotations`                          | PVC annotations                                                                                                                       | `{}`                |
+| `persistence.labels`                               | PVC labels                                                                                                                            | `{}`                |
+| `persistence.mountPath`                            | Path to mount the volume at                                                                                                           | `/bitnami/mongodb`  |
+| `persistence.subPath`                              | Subdirectory of the volume to mount at                                                                                                | `""`                |
+| `persistence.volumeClaimTemplates.selector`        | A label query over volumes to consider for binding (e.g. when using local volumes)                                                    | `{}`                |
+| `persistence.volumeClaimTemplates.requests`        | Custom PVC requests attributes                                                                                                        | `{}`                |
+| `persistence.volumeClaimTemplates.dataSource`      | Add dataSource to the VolumeClaimTemplate                                                                                             | `{}`                |
+| `persistentVolumeClaimRetentionPolicy.enabled`     | Enable Persistent volume retention policy for MongoDB(&reg;) Statefulset                                                              | `false`             |
+| `persistentVolumeClaimRetentionPolicy.whenScaled`  | Volume retention behavior when the replica count of the StatefulSet is reduced                                                        | `Retain`            |
+| `persistentVolumeClaimRetentionPolicy.whenDeleted` | Volume retention behavior that applies when the StatefulSet is deleted                                                                | `Retain`            |
+
+### Backup parameters
+
+| Name                                                               | Description                                                                                                                                                                                                       | Value               |
+| ------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------- |
+| `backup.enabled`                                                   | Enable the logical dump of the database "regularly"                                                                                                                                                               | `false`             |
+| `backup.cronjob.schedule`                                          | Set the cronjob parameter schedule                                                                                                                                                                                | `@daily`            |
+| `backup.cronjob.timeZone`                                          | Set the cronjob parameter timeZone                                                                                                                                                                                | `""`                |
+| `backup.cronjob.concurrencyPolicy`                                 | Set the cronjob parameter concurrencyPolicy                                                                                                                                                                       | `Allow`             |
+| `backup.cronjob.failedJobsHistoryLimit`                            | Set the cronjob parameter failedJobsHistoryLimit                                                                                                                                                                  | `1`                 |
+| `backup.cronjob.successfulJobsHistoryLimit`                        | Set the cronjob parameter successfulJobsHistoryLimit                                                                                                                                                              | `3`                 |
+| `backup.cronjob.startingDeadlineSeconds`                           | Set the cronjob parameter startingDeadlineSeconds                                                                                                                                                                 | `""`                |
+| `backup.cronjob.ttlSecondsAfterFinished`                           | Set the cronjob parameter ttlSecondsAfterFinished                                                                                                                                                                 | `""`                |
+| `backup.cronjob.restartPolicy`                                     | Set the cronjob parameter restartPolicy                                                                                                                                                                           | `OnFailure`         |
+| `backup.cronjob.backoffLimit`                                      | Set the cronjob parameter backoffLimit                                                                                                                                                                            | `6`                 |
+| `backup.cronjob.containerSecurityContext.enabled`                  | Enabled containers' Security Context                                                                                                                                                                              | `true`              |
+| `backup.cronjob.containerSecurityContext.seLinuxOptions`           | Set SELinux options in container                                                                                                                                                                                  | `{}`                |
+| `backup.cronjob.containerSecurityContext.runAsUser`                | Set containers' Security Context runAsUser                                                                                                                                                                        | `1001`              |
+| `backup.cronjob.containerSecurityContext.runAsGroup`               | Set containers' Security Context runAsGroup                                                                                                                                                                       | `1001`              |
+| `backup.cronjob.containerSecurityContext.runAsNonRoot`             | Set container's Security Context runAsNonRoot                                                                                                                                                                     | `true`              |
+| `backup.cronjob.containerSecurityContext.privileged`               | Set container's Security Context privileged                                                                                                                                                                       | `false`             |
+| `backup.cronjob.containerSecurityContext.readOnlyRootFilesystem`   | Set container's Security Context readOnlyRootFilesystem                                                                                                                                                           | `true`              |
+| `backup.cronjob.containerSecurityContext.allowPrivilegeEscalation` | Set container's Security Context allowPrivilegeEscalation                                                                                                                                                         | `false`             |
+| `backup.cronjob.containerSecurityContext.capabilities.drop`        | List of capabilities to be dropped                                                                                                                                                                                | `["ALL"]`           |
+| `backup.cronjob.containerSecurityContext.seccompProfile.type`      | Set container's Security Context seccomp profile                                                                                                                                                                  | `RuntimeDefault`    |
+| `backup.cronjob.resourcesPreset`                                   | Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if resources is set (resources is recommended for production). | `none`              |
+| `backup.cronjob.resources`                                         | Set container requests and limits for different resources like CPU or memory (essential for production workloads)                                                                                                 | `{}`                |
+| `backup.cronjob.command`                                           | Set backup container's command to run                                                                                                                                                                             | `[]`                |
+| `backup.cronjob.labels`                                            | Set the cronjob labels                                                                                                                                                                                            | `{}`                |
+| `backup.cronjob.annotations`                                       | Set the cronjob annotations                                                                                                                                                                                       | `{}`                |
+| `backup.cronjob.storage.existingClaim`                             | Provide an existing `PersistentVolumeClaim` (only when `architecture=standalone`)                                                                                                                                 | `""`                |
+| `backup.cronjob.storage.resourcePolicy`                            | Setting it to "keep" to avoid removing PVCs during a helm delete operation. Leaving it empty will delete PVCs after the chart deleted                                                                             | `""`                |
+| `backup.cronjob.storage.storageClass`                              | PVC Storage Class for the backup data volume                                                                                                                                                                      | `""`                |
+| `backup.cronjob.storage.accessModes`                               | PV Access Mode                                                                                                                                                                                                    | `["ReadWriteOnce"]` |
+| `backup.cronjob.storage.size`                                      | PVC Storage Request for the backup data volume                                                                                                                                                                    | `8Gi`               |
+| `backup.cronjob.storage.annotations`                               | PVC annotations                                                                                                                                                                                                   | `{}`                |
+| `backup.cronjob.storage.mountPath`                                 | Path to mount the volume at                                                                                                                                                                                       | `/backup/mongodb`   |
+| `backup.cronjob.storage.subPath`                                   | Subdirectory of the volume to mount at                                                                                                                                                                            | `""`                |
+| `backup.cronjob.storage.volumeClaimTemplates.selector`             | A label query over volumes to consider for binding (e.g. when using local volumes)                                                                                                                                | `{}`                |
+
+### RBAC parameters
+
+| Name                                          | Description                                                                                                                                 | Value   |
+| --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
+| `serviceAccount.create`                       | Enable creation of ServiceAccount for MongoDB(&reg;) pods                                                                                   | `true`  |
+| `serviceAccount.name`                         | Name of the created serviceAccount                                                                                                          | `""`    |
+| `serviceAccount.annotations`                  | Additional Service Account annotations                                                                                                      | `{}`    |
+| `serviceAccount.automountServiceAccountToken` | Allows auto mount of ServiceAccountToken on the serviceAccount created                                                                      | `false` |
+| `rbac.create`                                 | Whether to create & use RBAC resources or not                                                                                               | `false` |
+| `rbac.rules`                                  | Custom rules to create following the role specification                                                                                     | `[]`    |
+| `podSecurityPolicy.create`                    | Whether to create a PodSecurityPolicy. WARNING: PodSecurityPolicy is deprecated in Kubernetes v1.21 or later, unavailable in v1.25 or later | `false` |
+| `podSecurityPolicy.allowPrivilegeEscalation`  | Enable privilege escalation                                                                                                                 | `false` |
+| `podSecurityPolicy.privileged`                | Allow privileged                                                                                                                            | `false` |
+| `podSecurityPolicy.spec`                      | Specify the full spec to use for Pod Security Policy                                                                                        | `{}`    |
+
+### Volume Permissions parameters
+
+| Name                                               | Description                                                                                                                                                                                                                                           | Value                      |
+| -------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------- |
+| `volumePermissions.enabled`                        | Enable init container that changes the owner and group of the persistent volume(s) mountpoint to `runAsUser:fsGroup`                                                                                                                                  | `false`                    |
+| `volumePermissions.image.registry`                 | Init container volume-permissions image registry                                                                                                                                                                                                      | `REGISTRY_NAME`            |
+| `volumePermissions.image.repository`               | Init container volume-permissions image repository                                                                                                                                                                                                    | `REPOSITORY_NAME/os-shell` |
+| `volumePermissions.image.digest`                   | Init container volume-permissions image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag                                                                                                                     | `""`                       |
+| `volumePermissions.image.pullPolicy`               | Init container volume-permissions image pull policy                                                                                                                                                                                                   | `IfNotPresent`             |
+| `volumePermissions.image.pullSecrets`              | Specify docker-registry secret names as an array                                                                                                                                                                                                      | `[]`                       |
+| `volumePermissions.resourcesPreset`                | Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if volumePermissions.resources is set (volumePermissions.resources is recommended for production). | `nano`                     |
+| `volumePermissions.resources`                      | Set container requests and limits for different resources like CPU or memory (essential for production workloads)                                                                                                                                     | `{}`                       |
+| `volumePermissions.securityContext.seLinuxOptions` | Set SELinux options in container                                                                                                                                                                                                                      | `{}`                       |
+| `volumePermissions.securityContext.runAsUser`      | User ID for the volumePermissions container                                                                                                                                                                                                           | `0`                        |
+
+### Arbiter parameters
+
+| Name                                                        | Description                                                                                                                                                                                                                       | Value            |
+| ----------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- |
+| `arbiter.enabled`                                           | Enable deploying the arbiter                                                                                                                                                                                                      | `true`           |
+| `arbiter.automountServiceAccountToken`                      | Mount Service Account token in pod                                                                                                                                                                                                | `false`          |
+| `arbiter.hostAliases`                                       | Add deployment host aliases                                                                                                                                                                                                       | `[]`             |
+| `arbiter.configuration`                                     | Arbiter configuration file to be used                                                                                                                                                                                             | `""`             |
+| `arbiter.existingConfigmap`                                 | Name of existing ConfigMap with Arbiter configuration                                                                                                                                                                             | `""`             |
+| `arbiter.command`                                           | Override default container command (useful when using custom images)                                                                                                                                                              | `[]`             |
+| `arbiter.args`                                              | Override default container args (useful when using custom images)                                                                                                                                                                 | `[]`             |
+| `arbiter.extraFlags`                                        | Arbiter additional command line flags                                                                                                                                                                                             | `[]`             |
+| `arbiter.extraEnvVars`                                      | Extra environment variables to add to Arbiter pods                                                                                                                                                                                | `[]`             |
+| `arbiter.extraEnvVarsCM`                                    | Name of existing ConfigMap containing extra env vars                                                                                                                                                                              | `""`             |
+| `arbiter.extraEnvVarsSecret`                                | Name of existing Secret containing extra env vars (in case of sensitive data)                                                                                                                                                     | `""`             |
+| `arbiter.annotations`                                       | Additional labels to be added to the Arbiter statefulset                                                                                                                                                                          | `{}`             |
+| `arbiter.labels`                                            | Annotations to be added to the Arbiter statefulset                                                                                                                                                                                | `{}`             |
+| `arbiter.topologySpreadConstraints`                         | MongoDB(&reg;) Spread Constraints for arbiter Pods                                                                                                                                                                                | `[]`             |
+| `arbiter.lifecycleHooks`                                    | LifecycleHook for the Arbiter container to automate configuration before or after startup                                                                                                                                         | `{}`             |
+| `arbiter.terminationGracePeriodSeconds`                     | Arbiter Termination Grace Period                                                                                                                                                                                                  | `""`             |
+| `arbiter.updateStrategy.type`                               | Strategy that will be employed to update Pods in the StatefulSet                                                                                                                                                                  | `RollingUpdate`  |
+| `arbiter.podManagementPolicy`                               | Pod management policy for MongoDB(&reg;)                                                                                                                                                                                          | `OrderedReady`   |
+| `arbiter.schedulerName`                                     | Name of the scheduler (other than default) to dispatch pods                                                                                                                                                                       | `""`             |
+| `arbiter.podAffinityPreset`                                 | Arbiter Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`                                                                                                                                       | `""`             |
+| `arbiter.podAntiAffinityPreset`                             | Arbiter Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`                                                                                                                                  | `soft`           |
+| `arbiter.nodeAffinityPreset.type`                           | Arbiter Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard`                                                                                                                                 | `""`             |
+| `arbiter.nodeAffinityPreset.key`                            | Arbiter Node label key to match Ignored if `affinity` is set.                                                                                                                                                                     | `""`             |
+| `arbiter.nodeAffinityPreset.values`                         | Arbiter Node label values to match. Ignored if `affinity` is set.                                                                                                                                                                 | `[]`             |
+| `arbiter.affinity`                                          | Arbiter Affinity for pod assignment                                                                                                                                                                                               | `{}`             |
+| `arbiter.nodeSelector`                                      | Arbiter Node labels for pod assignment                                                                                                                                                                                            | `{}`             |
+| `arbiter.tolerations`                                       | Arbiter Tolerations for pod assignment                                                                                                                                                                                            | `[]`             |
+| `arbiter.podLabels`                                         | Arbiter pod labels                                                                                                                                                                                                                | `{}`             |
+| `arbiter.podAnnotations`                                    | Arbiter Pod annotations                                                                                                                                                                                                           | `{}`             |
+| `arbiter.priorityClassName`                                 | Name of the existing priority class to be used by Arbiter pod(s)                                                                                                                                                                  | `""`             |
+| `arbiter.runtimeClassName`                                  | Name of the runtime class to be used by Arbiter pod(s)                                                                                                                                                                            | `""`             |
+| `arbiter.podSecurityContext.enabled`                        | Enable Arbiter pod(s)' Security Context                                                                                                                                                                                           | `true`           |
+| `arbiter.podSecurityContext.fsGroupChangePolicy`            | Set filesystem group change policy                                                                                                                                                                                                | `Always`         |
+| `arbiter.podSecurityContext.supplementalGroups`             | Set filesystem extra groups                                                                                                                                                                                                       | `[]`             |
+| `arbiter.podSecurityContext.fsGroup`                        | Group ID for the volumes of the Arbiter pod(s)                                                                                                                                                                                    | `1001`           |
+| `arbiter.podSecurityContext.sysctls`                        | sysctl settings of the Arbiter pod(s)'                                                                                                                                                                                            | `[]`             |
+| `arbiter.containerSecurityContext.enabled`                  | Enabled containers' Security Context                                                                                                                                                                                              | `true`           |
+| `arbiter.containerSecurityContext.seLinuxOptions`           | Set SELinux options in container                                                                                                                                                                                                  | `{}`             |
+| `arbiter.containerSecurityContext.runAsUser`                | Set containers' Security Context runAsUser                                                                                                                                                                                        | `1001`           |
+| `arbiter.containerSecurityContext.runAsGroup`               | Set containers' Security Context runAsGroup                                                                                                                                                                                       | `1001`           |
+| `arbiter.containerSecurityContext.runAsNonRoot`             | Set container's Security Context runAsNonRoot                                                                                                                                                                                     | `true`           |
+| `arbiter.containerSecurityContext.privileged`               | Set container's Security Context privileged                                                                                                                                                                                       | `false`          |
+| `arbiter.containerSecurityContext.readOnlyRootFilesystem`   | Set container's Security Context readOnlyRootFilesystem                                                                                                                                                                           | `true`           |
+| `arbiter.containerSecurityContext.allowPrivilegeEscalation` | Set container's Security Context allowPrivilegeEscalation                                                                                                                                                                         | `false`          |
+| `arbiter.containerSecurityContext.capabilities.drop`        | List of capabilities to be dropped                                                                                                                                                                                                | `["ALL"]`        |
+| `arbiter.containerSecurityContext.seccompProfile.type`      | Set container's Security Context seccomp profile                                                                                                                                                                                  | `RuntimeDefault` |
+| `arbiter.resourcesPreset`                                   | Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if arbiter.resources is set (arbiter.resources is recommended for production). | `small`          |
+| `arbiter.resources`                                         | Set container requests and limits for different resources like CPU or memory (essential for production workloads)                                                                                                                 | `{}`             |
+| `arbiter.containerPorts.mongodb`                            | MongoDB(&reg;) arbiter container port                                                                                                                                                                                             | `27017`          |
+| `arbiter.livenessProbe.enabled`                             | Enable livenessProbe                                                                                                                                                                                                              | `true`           |
+| `arbiter.livenessProbe.initialDelaySeconds`                 | Initial delay seconds for livenessProbe                                                                                                                                                                                           | `30`             |
+| `arbiter.livenessProbe.periodSeconds`                       | Period seconds for livenessProbe                                                                                                                                                                                                  | `20`             |
+| `arbiter.livenessProbe.timeoutSeconds`                      | Timeout seconds for livenessProbe                                                                                                                                                                                                 | `10`             |
+| `arbiter.livenessProbe.failureThreshold`                    | Failure threshold for livenessProbe                                                                                                                                                                                               | `6`              |
+| `arbiter.livenessProbe.successThreshold`                    | Success threshold for livenessProbe                                                                                                                                                                                               | `1`              |
+| `arbiter.readinessProbe.enabled`                            | Enable readinessProbe                                                                                                                                                                                                             | `true`           |
+| `arbiter.readinessProbe.initialDelaySeconds`                | Initial delay seconds for readinessProbe                                                                                                                                                                                          | `5`              |
+| `arbiter.readinessProbe.periodSeconds`                      | Period seconds for readinessProbe                                                                                                                                                                                                 | `20`             |
+| `arbiter.readinessProbe.timeoutSeconds`                     | Timeout seconds for readinessProbe                                                                                                                                                                                                | `10`             |
+| `arbiter.readinessProbe.failureThreshold`                   | Failure threshold for readinessProbe                                                                                                                                                                                              | `6`              |
+| `arbiter.readinessProbe.successThreshold`                   | Success threshold for readinessProbe                                                                                                                                                                                              | `1`              |
+| `arbiter.startupProbe.enabled`                              | Enable startupProbe                                                                                                                                                                                                               | `false`          |
+| `arbiter.startupProbe.initialDelaySeconds`                  | Initial delay seconds for startupProbe                                                                                                                                                                                            | `5`              |
+| `arbiter.startupProbe.periodSeconds`                        | Period seconds for startupProbe                                                                                                                                                                                                   | `10`             |
+| `arbiter.startupProbe.timeoutSeconds`                       | Timeout seconds for startupProbe                                                                                                                                                                                                  | `5`              |
+| `arbiter.startupProbe.failureThreshold`                     | Failure threshold for startupProbe                                                                                                                                                                                                | `30`             |
+| `arbiter.startupProbe.successThreshold`                     | Success threshold for startupProbe                                                                                                                                                                                                | `1`              |
+| `arbiter.customLivenessProbe`                               | Override default liveness probe for Arbiter containers                                                                                                                                                                            | `{}`             |
+| `arbiter.customReadinessProbe`                              | Override default readiness probe for Arbiter containers                                                                                                                                                                           | `{}`             |
+| `arbiter.customStartupProbe`                                | Override default startup probe for Arbiter containers                                                                                                                                                                             | `{}`             |
+| `arbiter.initContainers`                                    | Add additional init containers for the Arbiter pod(s)                                                                                                                                                                             | `[]`             |
+| `arbiter.sidecars`                                          | Add additional sidecar containers for the Arbiter pod(s)                                                                                                                                                                          | `[]`             |
+| `arbiter.extraVolumeMounts`                                 | Optionally specify extra list of additional volumeMounts for the Arbiter container(s)                                                                                                                                             | `[]`             |
+| `arbiter.extraVolumes`                                      | Optionally specify extra list of additional volumes to the Arbiter statefulset                                                                                                                                                    | `[]`             |
+| `arbiter.pdb.create`                                        | Enable/disable a Pod Disruption Budget creation for Arbiter pod(s)                                                                                                                                                                | `true`           |
+| `arbiter.pdb.minAvailable`                                  | Minimum number/percentage of Arbiter pods that should remain scheduled                                                                                                                                                            | `""`             |
+| `arbiter.pdb.maxUnavailable`                                | Maximum number/percentage of Arbiter pods that may be made unavailable. Defaults to `1` if both `arbiter.pdb.minAvailable` and `arbiter.pdb.maxUnavailable` are empty.                                                            | `""`             |
+| `arbiter.service.nameOverride`                              | The arbiter service name                                                                                                                                                                                                          | `""`             |
+| `arbiter.service.ports.mongodb`                             | MongoDB(&reg;) service port                                                                                                                                                                                                       | `27017`          |
+| `arbiter.service.extraPorts`                                | Extra ports to expose (normally used with the `sidecar` value)                                                                                                                                                                    | `[]`             |
+| `arbiter.service.annotations`                               | Provide any additional annotations that may be required                                                                                                                                                                           | `{}`             |
+| `arbiter.service.headless.annotations`                      | Annotations for the headless service.                                                                                                                                                                                             | `{}`             |
+
+### Hidden Node parameters
+
+| Name                                                       | Description                                                                                                                                                                                                                     | Value               |
+| ---------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------- |
+| `hidden.enabled`                                           | Enable deploying the hidden nodes                                                                                                                                                                                               | `false`             |
+| `hidden.automountServiceAccountToken`                      | Mount Service Account token in pod                                                                                                                                                                                              | `false`             |
+| `hidden.hostAliases`                                       | Add deployment host aliases                                                                                                                                                                                                     | `[]`                |
+| `hidden.configuration`                                     | Hidden node configuration file to be used                                                                                                                                                                                       | `""`                |
+| `hidden.existingConfigmap`                                 | Name of existing ConfigMap with Hidden node configuration                                                                                                                                                                       | `""`                |
+| `hidden.command`                                           | Override default container command (useful when using custom images)                                                                                                                                                            | `[]`                |
+| `hidden.args`                                              | Override default container args (useful when using custom images)                                                                                                                                                               | `[]`                |
+| `hidden.extraFlags`                                        | Hidden node additional command line flags                                                                                                                                                                                       | `[]`                |
+| `hidden.extraEnvVars`                                      | Extra environment variables to add to Hidden node pods                                                                                                                                                                          | `[]`                |
+| `hidden.extraEnvVarsCM`                                    | Name of existing ConfigMap containing extra env vars                                                                                                                                                                            | `""`                |
+| `hidden.extraEnvVarsSecret`                                | Name of existing Secret containing extra env vars (in case of sensitive data)                                                                                                                                                   | `""`                |
+| `hidden.annotations`                                       | Additional labels to be added to thehidden node statefulset                                                                                                                                                                     | `{}`                |
+| `hidden.labels`                                            | Annotations to be added to the hidden node statefulset                                                                                                                                                                          | `{}`                |
+| `hidden.topologySpreadConstraints`                         | MongoDB(&reg;) Spread Constraints for hidden Pods                                                                                                                                                                               | `[]`                |
+| `hidden.lifecycleHooks`                                    | LifecycleHook for the Hidden container to automate configuration before or after startup                                                                                                                                        | `{}`                |
+| `hidden.replicaCount`                                      | Number of hidden nodes (only when `architecture=replicaset`)                                                                                                                                                                    | `1`                 |
+| `hidden.terminationGracePeriodSeconds`                     | Hidden Termination Grace Period                                                                                                                                                                                                 | `""`                |
+| `hidden.updateStrategy.type`                               | Strategy that will be employed to update Pods in the StatefulSet                                                                                                                                                                | `RollingUpdate`     |
+| `hidden.podManagementPolicy`                               | Pod management policy for hidden node                                                                                                                                                                                           | `OrderedReady`      |
+| `hidden.schedulerName`                                     | Name of the scheduler (other than default) to dispatch pods                                                                                                                                                                     | `""`                |
+| `hidden.podAffinityPreset`                                 | Hidden node Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`                                                                                                                                 | `""`                |
+| `hidden.podAntiAffinityPreset`                             | Hidden node Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`                                                                                                                            | `soft`              |
+| `hidden.nodeAffinityPreset.type`                           | Hidden Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard`                                                                                                                                | `""`                |
+| `hidden.nodeAffinityPreset.key`                            | Hidden Node label key to match Ignored if `affinity` is set.                                                                                                                                                                    | `""`                |
+| `hidden.nodeAffinityPreset.values`                         | Hidden Node label values to match. Ignored if `affinity` is set.                                                                                                                                                                | `[]`                |
+| `hidden.affinity`                                          | Hidden node Affinity for pod assignment                                                                                                                                                                                         | `{}`                |
+| `hidden.nodeSelector`                                      | Hidden node Node labels for pod assignment                                                                                                                                                                                      | `{}`                |
+| `hidden.tolerations`                                       | Hidden node Tolerations for pod assignment                                                                                                                                                                                      | `[]`                |
+| `hidden.podLabels`                                         | Hidden node pod labels                                                                                                                                                                                                          | `{}`                |
+| `hidden.podAnnotations`                                    | Hidden node Pod annotations                                                                                                                                                                                                     | `{}`                |
+| `hidden.priorityClassName`                                 | Name of the existing priority class to be used by hidden node pod(s)                                                                                                                                                            | `""`                |
+| `hidden.runtimeClassName`                                  | Name of the runtime class to be used by hidden node pod(s)                                                                                                                                                                      | `""`                |
+| `hidden.podSecurityContext.enabled`                        | Enable Hidden pod(s)' Security Context                                                                                                                                                                                          | `true`              |
+| `hidden.podSecurityContext.fsGroupChangePolicy`            | Set filesystem group change policy                                                                                                                                                                                              | `Always`            |
+| `hidden.podSecurityContext.supplementalGroups`             | Set filesystem extra groups                                                                                                                                                                                                     | `[]`                |
+| `hidden.podSecurityContext.fsGroup`                        | Group ID for the volumes of the Hidden pod(s)                                                                                                                                                                                   | `1001`              |
+| `hidden.podSecurityContext.sysctls`                        | sysctl settings of the Hidden pod(s)'                                                                                                                                                                                           | `[]`                |
+| `hidden.containerSecurityContext.enabled`                  | Enabled containers' Security Context                                                                                                                                                                                            | `true`              |
+| `hidden.containerSecurityContext.seLinuxOptions`           | Set SELinux options in container                                                                                                                                                                                                | `{}`                |
+| `hidden.containerSecurityContext.runAsUser`                | Set containers' Security Context runAsUser                                                                                                                                                                                      | `1001`              |
+| `hidden.containerSecurityContext.runAsGroup`               | Set containers' Security Context runAsGroup                                                                                                                                                                                     | `1001`              |
+| `hidden.containerSecurityContext.runAsNonRoot`             | Set container's Security Context runAsNonRoot                                                                                                                                                                                   | `true`              |
+| `hidden.containerSecurityContext.privileged`               | Set container's Security Context privileged                                                                                                                                                                                     | `false`             |
+| `hidden.containerSecurityContext.readOnlyRootFilesystem`   | Set container's Security Context readOnlyRootFilesystem                                                                                                                                                                         | `true`              |
+| `hidden.containerSecurityContext.allowPrivilegeEscalation` | Set container's Security Context allowPrivilegeEscalation                                                                                                                                                                       | `false`             |
+| `hidden.containerSecurityContext.capabilities.drop`        | List of capabilities to be dropped                                                                                                                                                                                              | `["ALL"]`           |
+| `hidden.containerSecurityContext.seccompProfile.type`      | Set container's Security Context seccomp profile                                                                                                                                                                                | `RuntimeDefault`    |
+| `hidden.resourcesPreset`                                   | Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if hidden.resources is set (hidden.resources is recommended for production). | `micro`             |
+| `hidden.resources`                                         | Set container requests and limits for different resources like CPU or memory (essential for production workloads)                                                                                                               | `{}`                |
+| `hidden.containerPorts.mongodb`                            | MongoDB(&reg;) hidden container port                                                                                                                                                                                            | `27017`             |
+| `hidden.livenessProbe.enabled`                             | Enable livenessProbe                                                                                                                                                                                                            | `true`              |
+| `hidden.livenessProbe.initialDelaySeconds`                 | Initial delay seconds for livenessProbe                                                                                                                                                                                         | `30`                |
+| `hidden.livenessProbe.periodSeconds`                       | Period seconds for livenessProbe                                                                                                                                                                                                | `20`                |
+| `hidden.livenessProbe.timeoutSeconds`                      | Timeout seconds for livenessProbe                                                                                                                                                                                               | `10`                |
+| `hidden.livenessProbe.failureThreshold`                    | Failure threshold for livenessProbe                                                                                                                                                                                             | `6`                 |
+| `hidden.livenessProbe.successThreshold`                    | Success threshold for livenessProbe                                                                                                                                                                                             | `1`                 |
+| `hidden.readinessProbe.enabled`                            | Enable readinessProbe                                                                                                                                                                                                           | `true`              |
+| `hidden.readinessProbe.initialDelaySeconds`                | Initial delay seconds for readinessProbe                                                                                                                                                                                        | `5`                 |
+| `hidden.readinessProbe.periodSeconds`                      | Period seconds for readinessProbe                                                                                                                                                                                               | `20`                |
+| `hidden.readinessProbe.timeoutSeconds`                     | Timeout seconds for readinessProbe                                                                                                                                                                                              | `10`                |
+| `hidden.readinessProbe.failureThreshold`                   | Failure threshold for readinessProbe                                                                                                                                                                                            | `6`                 |
+| `hidden.readinessProbe.successThreshold`                   | Success threshold for readinessProbe                                                                                                                                                                                            | `1`                 |
+| `hidden.startupProbe.enabled`                              | Enable startupProbe                                                                                                                                                                                                             | `false`             |
+| `hidden.startupProbe.initialDelaySeconds`                  | Initial delay seconds for startupProbe                                                                                                                                                                                          | `5`                 |
+| `hidden.startupProbe.periodSeconds`                        | Period seconds for startupProbe                                                                                                                                                                                                 | `10`                |
+| `hidden.startupProbe.timeoutSeconds`                       | Timeout seconds for startupProbe                                                                                                                                                                                                | `5`                 |
+| `hidden.startupProbe.failureThreshold`                     | Failure threshold for startupProbe                                                                                                                                                                                              | `30`                |
+| `hidden.startupProbe.successThreshold`                     | Success threshold for startupProbe                                                                                                                                                                                              | `1`                 |
+| `hidden.customLivenessProbe`                               | Override default liveness probe for hidden node containers                                                                                                                                                                      | `{}`                |
+| `hidden.customReadinessProbe`                              | Override default readiness probe for hidden node containers                                                                                                                                                                     | `{}`                |
+| `hidden.customStartupProbe`                                | Override default startup probe for MongoDB(&reg;) containers                                                                                                                                                                    | `{}`                |
+| `hidden.initContainers`                                    | Add init containers to the MongoDB(&reg;) Hidden pods.                                                                                                                                                                          | `[]`                |
+| `hidden.sidecars`                                          | Add additional sidecar containers for the hidden node pod(s)                                                                                                                                                                    | `[]`                |
+| `hidden.extraVolumeMounts`                                 | Optionally specify extra list of additional volumeMounts for the hidden node container(s)                                                                                                                                       | `[]`                |
+| `hidden.extraVolumes`                                      | Optionally specify extra list of additional volumes to the hidden node statefulset                                                                                                                                              | `[]`                |
+| `hidden.pdb.create`                                        | Enable/disable a Pod Disruption Budget creation for hidden node pod(s)                                                                                                                                                          | `true`              |
+| `hidden.pdb.minAvailable`                                  | Minimum number/percentage of hidden node pods that should remain scheduled                                                                                                                                                      | `""`                |
+| `hidden.pdb.maxUnavailable`                                | Maximum number/percentage of hidden node pods that may be made unavailable. Defaults to `1` if both `hidden.pdb.minAvailable` and `hidden.pdb.maxUnavailable` are empty.                                                        | `""`                |
+| `hidden.persistence.enabled`                               | Enable hidden node data persistence using PVC                                                                                                                                                                                   | `true`              |
+| `hidden.persistence.medium`                                | Provide a medium for `emptyDir` volumes.                                                                                                                                                                                        | `""`                |
+| `hidden.persistence.storageClass`                          | PVC Storage Class for hidden node data volume                                                                                                                                                                                   | `""`                |
+| `hidden.persistence.accessModes`                           | PV Access Mode                                                                                                                                                                                                                  | `["ReadWriteOnce"]` |
+| `hidden.persistence.size`                                  | PVC Storage Request for hidden node data volume                                                                                                                                                                                 | `8Gi`               |
+| `hidden.persistence.annotations`                           | PVC annotations                                                                                                                                                                                                                 | `{}`                |
+| `hidden.persistence.mountPath`                             | The path the volume will be mounted at, useful when using different MongoDB(&reg;) images.                                                                                                                                      | `/bitnami/mongodb`  |
+| `hidden.persistence.subPath`                               | The subdirectory of the volume to mount to, useful in dev environments                                                                                                                                                          | `""`                |
+| `hidden.persistence.volumeClaimTemplates.selector`         | A label query over volumes to consider for binding (e.g. when using local volumes)                                                                                                                                              | `{}`                |
+| `hidden.persistence.volumeClaimTemplates.requests`         | Custom PVC requests attributes                                                                                                                                                                                                  | `{}`                |
+| `hidden.persistence.volumeClaimTemplates.dataSource`       | Set volumeClaimTemplate dataSource                                                                                                                                                                                              | `{}`                |
+| `hidden.service.nameOverride`                              | The hidden service name                                                                                                                                                                                                         | `""`                |
+| `hidden.service.portName`                                  | MongoDB(&reg;) service port name                                                                                                                                                                                                | `mongodb`           |
+| `hidden.service.ports.mongodb`                             | MongoDB(&reg;) service port                                                                                                                                                                                                     | `27017`             |
+| `hidden.service.extraPorts`                                | Extra ports to expose (normally used with the `sidecar` value)                                                                                                                                                                  | `[]`                |
+| `hidden.service.annotations`                               | Provide any additional annotations that may be required                                                                                                                                                                         | `{}`                |
+| `hidden.service.headless.annotations`                      | Annotations for the headless service.                                                                                                                                                                                           | `{}`                |
+
+### Metrics parameters
+
+| Name                                         | Description                                                                                                                                                                                                                       | Value                              |
+| -------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------- |
+| `metrics.enabled`                            | Enable using a sidecar Prometheus exporter                                                                                                                                                                                        | `false`                            |
+| `metrics.image.registry`                     | MongoDB(&reg;) Prometheus exporter image registry                                                                                                                                                                                 | `REGISTRY_NAME`                    |
+| `metrics.image.repository`                   | MongoDB(&reg;) Prometheus exporter image repository                                                                                                                                                                               | `REPOSITORY_NAME/mongodb-exporter` |
+| `metrics.image.digest`                       | MongoDB(&reg;) image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag                                                                                                                    | `""`                               |
+| `metrics.image.pullPolicy`                   | MongoDB(&reg;) Prometheus exporter image pull policy                                                                                                                                                                              | `IfNotPresent`                     |
+| `metrics.image.pullSecrets`                  | Specify docker-registry secret names as an array                                                                                                                                                                                  | `[]`                               |
+| `metrics.username`                           | String with username for the metrics exporter                                                                                                                                                                                     | `""`                               |
+| `metrics.password`                           | String with password for the metrics exporter                                                                                                                                                                                     | `""`                               |
+| `metrics.compatibleMode`                     | Enables old style mongodb-exporter metrics                                                                                                                                                                                        | `true`                             |
+| `metrics.collector.all`                      | Enable all collectors. Same as enabling all individual metrics                                                                                                                                                                    | `false`                            |
+| `metrics.collector.diagnosticdata`           | Boolean Enable collecting metrics from getDiagnosticData                                                                                                                                                                          | `true`                             |
+| `metrics.collector.replicasetstatus`         | Boolean Enable collecting metrics from replSetGetStatus                                                                                                                                                                           | `true`                             |
+| `metrics.collector.dbstats`                  | Boolean Enable collecting metrics from dbStats                                                                                                                                                                                    | `false`                            |
+| `metrics.collector.topmetrics`               | Boolean Enable collecting metrics from top admin command                                                                                                                                                                          | `false`                            |
+| `metrics.collector.indexstats`               | Boolean Enable collecting metrics from $indexStats                                                                                                                                                                                | `false`                            |
+| `metrics.collector.collstats`                | Boolean Enable collecting metrics from $collStats                                                                                                                                                                                 | `false`                            |
+| `metrics.collector.collstatsColls`           | List of \<databases\>.\<collections\> to get $collStats                                                                                                                                                                           | `[]`                               |
+| `metrics.collector.indexstatsColls`          | List - List of \<databases\>.\<collections\> to get $indexStats                                                                                                                                                                   | `[]`                               |
+| `metrics.collector.collstatsLimit`           | Number - Disable collstats, dbstats, topmetrics and indexstats collector if there are more than \<n\> collections. 0=No limit                                                                                                     | `0`                                |
+| `metrics.extraFlags`                         | String with extra flags to the metrics exporter                                                                                                                                                                                   | `""`                               |
+| `metrics.command`                            | Override default container command (useful when using custom images)                                                                                                                                                              | `[]`                               |
+| `metrics.args`                               | Override default container args (useful when using custom images)                                                                                                                                                                 | `[]`                               |
+| `metrics.resourcesPreset`                    | Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if metrics.resources is set (metrics.resources is recommended for production). | `nano`                             |
+| `metrics.resources`                          | Set container requests and limits for different resources like CPU or memory (essential for production workloads)                                                                                                                 | `{}`                               |
+| `metrics.containerPort`                      | Port of the Prometheus metrics container                                                                                                                                                                                          | `9216`                             |
+| `metrics.service.annotations`                | Annotations for Prometheus Exporter pods. Evaluated as a template.                                                                                                                                                                | `{}`                               |
+| `metrics.service.type`                       | Type of the Prometheus metrics service                                                                                                                                                                                            | `ClusterIP`                        |
+| `metrics.service.ports.metrics`              | Port of the Prometheus metrics service                                                                                                                                                                                            | `9216`                             |
+| `metrics.service.extraPorts`                 | Extra ports to expose (normally used with the `sidecar` value)                                                                                                                                                                    | `[]`                               |
+| `metrics.livenessProbe.enabled`              | Enable livenessProbe                                                                                                                                                                                                              | `true`                             |
+| `metrics.livenessProbe.initialDelaySeconds`  | Initial delay seconds for livenessProbe                                                                                                                                                                                           | `15`                               |
+| `metrics.livenessProbe.periodSeconds`        | Period seconds for livenessProbe                                                                                                                                                                                                  | `5`                                |
+| `metrics.livenessProbe.timeoutSeconds`       | Timeout seconds for livenessProbe                                                                                                                                                                                                 | `10`                               |
+| `metrics.livenessProbe.failureThreshold`     | Failure threshold for livenessProbe                                                                                                                                                                                               | `3`                                |
+| `metrics.livenessProbe.successThreshold`     | Success threshold for livenessProbe                                                                                                                                                                                               | `1`                                |
+| `metrics.readinessProbe.enabled`             | Enable readinessProbe                                                                                                                                                                                                             | `true`                             |
+| `metrics.readinessProbe.initialDelaySeconds` | Initial delay seconds for readinessProbe                                                                                                                                                                                          | `5`                                |
+| `metrics.readinessProbe.periodSeconds`       | Period seconds for readinessProbe                                                                                                                                                                                                 | `5`                                |
+| `metrics.readinessProbe.timeoutSeconds`      | Timeout seconds for readinessProbe                                                                                                                                                                                                | `10`                               |
+| `metrics.readinessProbe.failureThreshold`    | Failure threshold for readinessProbe                                                                                                                                                                                              | `3`                                |
+| `metrics.readinessProbe.successThreshold`    | Success threshold for readinessProbe                                                                                                                                                                                              | `1`                                |
+| `metrics.startupProbe.enabled`               | Enable startupProbe                                                                                                                                                                                                               | `false`                            |
+| `metrics.startupProbe.initialDelaySeconds`   | Initial delay seconds for startupProbe                                                                                                                                                                                            | `5`                                |
+| `metrics.startupProbe.periodSeconds`         | Period seconds for startupProbe                                                                                                                                                                                                   | `10`                               |
+| `metrics.startupProbe.timeoutSeconds`        | Timeout seconds for startupProbe                                                                                                                                                                                                  | `5`                                |
+| `metrics.startupProbe.failureThreshold`      | Failure threshold for startupProbe                                                                                                                                                                                                | `30`                               |
+| `metrics.startupProbe.successThreshold`      | Success threshold for startupProbe                                                                                                                                                                                                | `1`                                |
+| `metrics.customLivenessProbe`                | Override default liveness probe for MongoDB(&reg;) containers                                                                                                                                                                     | `{}`                               |
+| `metrics.customReadinessProbe`               | Override default readiness probe for MongoDB(&reg;) containers                                                                                                                                                                    | `{}`                               |
+| `metrics.customStartupProbe`                 | Override default startup probe for MongoDB(&reg;) containers                                                                                                                                                                      | `{}`                               |
+| `metrics.extraVolumeMounts`                  | Optionally specify extra list of additional volumeMounts for the metrics container(s)                                                                                                                                             | `[]`                               |
+| `metrics.serviceMonitor.enabled`             | Create ServiceMonitor Resource for scraping metrics using Prometheus Operator                                                                                                                                                     | `false`                            |
+| `metrics.serviceMonitor.namespace`           | Namespace which Prometheus is running in                                                                                                                                                                                          | `""`                               |
+| `metrics.serviceMonitor.interval`            | Interval at which metrics should be scraped                                                                                                                                                                                       | `30s`                              |
+| `metrics.serviceMonitor.scrapeTimeout`       | Specify the timeout after which the scrape is ended                                                                                                                                                                               | `""`                               |
+| `metrics.serviceMonitor.relabelings`         | RelabelConfigs to apply to samples before scraping.                                                                                                                                                                               | `[]`                               |
+| `metrics.serviceMonitor.metricRelabelings`   | MetricsRelabelConfigs to apply to samples before ingestion.                                                                                                                                                                       | `[]`                               |
+| `metrics.serviceMonitor.labels`              | Used to pass Labels that are used by the Prometheus installed in your cluster to select Service Monitors to work with                                                                                                             | `{}`                               |
+| `metrics.serviceMonitor.selector`            | Prometheus instance selector labels                                                                                                                                                                                               | `{}`                               |
+| `metrics.serviceMonitor.honorLabels`         | Specify honorLabels parameter to add the scrape endpoint                                                                                                                                                                          | `false`                            |
+| `metrics.serviceMonitor.jobLabel`            | The name of the label on the target service to use as the job name in prometheus.                                                                                                                                                 | `""`                               |
+| `metrics.prometheusRule.enabled`             | Set this to true to create prometheusRules for Prometheus operator                                                                                                                                                                | `false`                            |
+| `metrics.prometheusRule.additionalLabels`    | Additional labels that can be used so prometheusRules will be discovered by Prometheus                                                                                                                                            | `{}`                               |
+| `metrics.prometheusRule.namespace`           | Namespace where prometheusRules resource should be created                                                                                                                                                                        | `""`                               |
+| `metrics.prometheusRule.rules`               | Rules to be created, check values for an example                                                                                                                                                                                  | `[]`                               |
+
+Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
+
+```console
+helm install my-release \
+    --set auth.rootPassword=secretpassword,auth.username=my-user,auth.password=my-password,auth.database=my-database \
+    oci://REGISTRY_NAME/REPOSITORY_NAME/mongodb
+```
+
+> Note: You need to substitute the placeholders `REGISTRY_NAME` and `REPOSITORY_NAME` with a reference to your Helm chart registry and repository. For example, in the case of Bitnami, you need to use `REGISTRY_NAME=registry-1.docker.io` and `REPOSITORY_NAME=bitnamicharts`.
+
+The above command sets the MongoDB(&reg;) `root` account password to `secretpassword`. Additionally, it creates a standard database user named `my-user`, with the password `my-password`, who has access to a database named `my-database`.
+
+> NOTE: Once this chart is deployed, it is not possible to change the application's access credentials, such as usernames or passwords, using Helm. To change these application credentials after deployment, delete any persistent volumes (PVs) used by the chart and re-deploy it, or use the application's built-in administrative tools if available.
+
+Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example,
+
+```console
+helm install my-release -f values.yaml oci://REGISTRY_NAME/REPOSITORY_NAME/mongodb
+```
+
+> Note: You need to substitute the placeholders `REGISTRY_NAME` and `REPOSITORY_NAME` with a reference to your Helm chart registry and repository. For example, in the case of Bitnami, you need to use `REGISTRY_NAME=registry-1.docker.io` and `REPOSITORY_NAME=bitnamicharts`.
+> **Tip**: You can use the default [values.yaml](https://github.com/bitnami/charts/tree/main/bitnami/mongodb/values.yaml)
+
 ## Troubleshooting
 
 Find more information about how to deal with common errors related to Bitnami's Helm charts in [this troubleshooting guide](https://docs.bitnami.com/general/how-to/troubleshoot-helm-chart-issues).
 
 ## Upgrading
 
+### To 16.4.0
+
+This version introduces image verification for security purposes. To disable it, set `global.security.allowInsecureImages` to `true`. More details at [GitHub issue](https://github.com/bitnami/charts/issues/30850).
+
 If authentication is enabled, it's necessary to set the `auth.rootPassword` (also `auth.replicaSetKey` when using a replicaset architecture) when upgrading for readiness/liveness probes to work properly. When you install this chart for the first time, some notes will be displayed providing the credentials you must use under the 'Credentials' section. Please note down the password, and run the command below to upgrade your chart:
 
 ```console
@@ -992,6 +1183,21 @@ helm upgrade my-release oci://REGISTRY_NAME/REPOSITORY_NAME/mongodb --set auth.r
 > Note: You need to substitute the placeholders `REGISTRY_NAME` and `REPOSITORY_NAME` with a reference to your Helm chart registry and repository. For example, in the case of Bitnami, you need to use `REGISTRY_NAME=registry-1.docker.io` and `REPOSITORY_NAME=bitnamicharts`.
 > Note: you need to substitute the placeholders [PASSWORD] and [REPLICASETKEY] with the values obtained in the installation notes.
 
+### To 16.0.0
+
+To upgrade to MongoDB `8.0` from a `7.0` deployment, the `7.0` deployment must have `featureCompatibilityVersion` set to `7.0`. Please refer to the [official documentation](https://www.mongodb.com/docs/manual/release-notes/8.0/#upgrade-procedures).
+
+### To 15.0.0
+
+This major bump changes the following security defaults:
+
+- `runAsGroup` is changed from `0` to `1001`
+- `readOnlyRootFilesystem` is set to `true`
+- `resourcesPreset` is changed from `none` to the minimum size working in our test suites (NOTE: `resourcesPreset` is not meant for production usage, but `resources` adapted to your use case).
+- `global.compatibility.openshift.adaptSecurityContext` is changed from `disabled` to `auto`.
+
+This could potentially break any customization or init scripts used in your deployment. If this is the case, change the default values to the previous ones.
+
 ### To 12.0.0
 
 This major release renames several values in this chart and adds missing features, in order to be inline with the rest of assets in the Bitnami charts repository.
@@ -1105,7 +1311,7 @@ extraDeploy:
 
 ## License
 
-Copyright &copy; 2024 Broadcom. The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
+Copyright &copy; 2025 Broadcom. The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
@@ -1117,4 +1323,4 @@ 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.
\ No newline at end of file
+limitations under the License.
diff --git a/kubernetes/common/mongodb/common/CHANGELOG.md b/kubernetes/common/mongodb/common/CHANGELOG.md
new file mode 100644 (file)
index 0000000..8f3dfe0
--- /dev/null
@@ -0,0 +1,658 @@
+# Changelog
+
+## 2.31.1 (2025-05-07)
+
+* [bitnami/common] chore: :recycle: Remove unused helpers ([#33496](https://github.com/bitnami/charts/pull/33496))
+
+## 2.31.0 (2025-05-05)
+
+* [bitnami/common] chore: :recycle: Remove deprecated APIs (<1.23.0) (#33320) ([3826a9e](https://github.com/bitnami/charts/commit/3826a9e1488c12545f11cf8cb1a11d23daf90602)), closes [#33320](https://github.com/bitnami/charts/issues/33320)
+
+## <small>2.30.2 (2025-04-30)</small>
+
+* [bitnami/common] add namespaces to extraPodAffinityTerms for affinities (#33173) ([4e35d60](https://github.com/bitnami/charts/commit/4e35d6016945db7b9fd4eef72b177d4826d69ece)), closes [#33173](https://github.com/bitnami/charts/issues/33173)
+
+## <small>2.30.1 (2025-04-30)</small>
+
+* [bitnami/common] Allows tpl in provided passwords "common.secrets.passwords.manage" (#33196) ([1f53dd8](https://github.com/bitnami/charts/commit/1f53dd862f2aca1071f5734c3ba825e3ff4fa383)), closes [#33196](https://github.com/bitnami/charts/issues/33196)
+* [bitnami/common] Restore 'Paremeters' section of the README (#32861) ([72f3f35](https://github.com/bitnami/charts/commit/72f3f353e35da99060a1662770655a12a2253887)), closes [#32861](https://github.com/bitnami/charts/issues/32861)
+
+## 2.30.0 (2025-02-19)
+
+* [bitnami/*] Use CDN url for the Bitnami Application Icons (#31881) ([d9bb11a](https://github.com/bitnami/charts/commit/d9bb11a9076b9bfdcc70ea022c25ef50e9713657)), closes [#31881](https://github.com/bitnami/charts/issues/31881)
+* [bitnami/common] Add helper to check API versions (#31969) ([5ba89c5](https://github.com/bitnami/charts/commit/5ba89c5afc3d57e36f90364638d9beabb32499f4)), closes [#31969](https://github.com/bitnami/charts/issues/31969)
+* Update copyright year (#31682) ([e9f02f5](https://github.com/bitnami/charts/commit/e9f02f5007068751f7eb2270fece811e685c99b6)), closes [#31682](https://github.com/bitnami/charts/issues/31682)
+
+## <small>2.29.1 (2025-01-23)</small>
+
+* [bitnami/common] Removing seLinuxOptions from omission (#31279) ([e7cb168](https://github.com/bitnami/charts/commit/e7cb168ca2bccd57e28bb985e099953a4f7e3b38)), closes [#31279](https://github.com/bitnami/charts/issues/31279) [#31278](https://github.com/bitnami/charts/issues/31278)
+
+## 2.29.0 (2025-01-03)
+
+* [bitnami/common] Add "common.capabilities.job.apiVersion" template (#31164) ([2ca979a](https://github.com/bitnami/charts/commit/2ca979a6add279384d60e6b35199eaf13553cefa)), closes [#31164](https://github.com/bitnami/charts/issues/31164)
+
+## 2.28.0 (2024-12-10)
+
+* [bitnami/common] New helper to detect non-standard images (#30851) ([ae33d01](https://github.com/bitnami/charts/commit/ae33d01968e8a353a569785f9867827153c797dc)), closes [#30851](https://github.com/bitnami/charts/issues/30851)
+
+## <small>2.27.2 (2024-11-27)</small>
+
+* [bitnami/common] Fix appVersion (#30628) ([b87d39e](https://github.com/bitnami/charts/commit/b87d39e27a0889c74b20c3d2fe5ae0c4a2417bfd)), closes [#30628](https://github.com/bitnami/charts/issues/30628)
+* [bitnami/common]: bump patch version (#30639) ([623e584](https://github.com/bitnami/charts/commit/623e5846ff827b7ecbcffa2dc51e2e94b14ef8fd)), closes [#30639](https://github.com/bitnami/charts/issues/30639)
+
+## <small>2.27.1 (2024-11-26)</small>
+
+* [bitnami/common] Fix VPA apiVersion (#30625) ([8c24438](https://github.com/bitnami/charts/commit/8c24438a2f6e8ec646cad9901ed82d71d4196e3e)), closes [#30625](https://github.com/bitnami/charts/issues/30625)
+
+## 2.27.0 (2024-11-07)
+
+* [bitnami/*] Remove wrong comment about imagePullPolicy (#30107) ([a51f9e4](https://github.com/bitnami/charts/commit/a51f9e4bb0fbf77199512d35de7ac8abe055d026)), closes [#30107](https://github.com/bitnami/charts/issues/30107)
+* [bitnami/common] feat: :sparkles: Add honorProvidedValues in common.secrets.manage (#30243) ([3d76a49](https://github.com/bitnami/charts/commit/3d76a4955c11fa4d2464da2c4d2096e1e3c6fa37)), closes [#30243](https://github.com/bitnami/charts/issues/30243)
+* Update documentation links to techdocs.broadcom.com (#29931) ([f0d9ad7](https://github.com/bitnami/charts/commit/f0d9ad78f39f633d275fc576d32eae78ded4d0b8)), closes [#29931](https://github.com/bitnami/charts/issues/29931)
+
+## 2.26.0 (2024-10-14)
+
+* [bitnami/common] Drop unused custom empty password validators (#29432) ([5fb0e97](https://github.com/bitnami/charts/commit/5fb0e97d9336d40d86c3295637d4233218b8afea)), closes [#29432](https://github.com/bitnami/charts/issues/29432)
+
+## 2.25.0 (2024-10-11)
+
+* [bitnami/common] Add the ability to specify namespaces for affinity (#29479) ([005e0d6](https://github.com/bitnami/charts/commit/005e0d696004dd972915f290b7caffb2bc332400)), closes [#29479](https://github.com/bitnami/charts/issues/29479)
+
+## 2.24.0 (2024-10-03)
+
+* [bitnami/common] Add common.tplvalues.merge-overwrite helper (#29668) ([611b2a5](https://github.com/bitnami/charts/commit/611b2a59e06feaac878b3b218fd848a687216158)), closes [#29668](https://github.com/bitnami/charts/issues/29668)
+
+## 2.23.0 (2024-09-13)
+
+* [bitnami/common] Add option to remove empty seLinuxOptions from securityContext in non OpenShift env ([7e44e64](https://github.com/bitnami/charts/commit/7e44e64626f5b1fc6d56889cdfdeadc1f62c7cf1)), closes [#28945](https://github.com/bitnami/charts/issues/28945)
+
+## 2.22.0 (2024-08-08)
+
+* [bitnami/common] Fallback to chart appVersion in common.images.image (#28764) ([b4aa0a6](https://github.com/bitnami/charts/commit/b4aa0a685a21c50ca10e41e3eb2023bbd4282cf7)), closes [#28764](https://github.com/bitnami/charts/issues/28764)
+
+## 2.21.0 (2024-08-05)
+
+* [bitnami/common] Allow handling of new secrets after initial installation (#28581) ([07062ee](https://github.com/bitnami/charts/commit/07062ee01382e24b8204b27083ff3e8102110c2f)), closes [#28581](https://github.com/bitnami/charts/issues/28581)
+
+## <small>2.20.5 (2024-07-16)</small>
+
+* [bitnami/common] [bitnami/wordpress] Use global.storageClass for fallback, not override (#24863) ([2b78e13](https://github.com/bitnami/charts/commit/2b78e137ac278cdf9d54523e8d37833a4ff0cd5b)), closes [#24863](https://github.com/bitnami/charts/issues/24863)
+
+## <small>2.20.4 (2024-07-11)</small>
+
+* [bitnami/*] Update README changing TAC wording (#27530) ([52dfed6](https://github.com/bitnami/charts/commit/52dfed6bac44d791efabfaf06f15daddc4fefb0c)), closes [#27530](https://github.com/bitnami/charts/issues/27530)
+* [bitnami/common] Increase ephemeral-storage default limits (#27902) ([dc0000d](https://github.com/bitnami/charts/commit/dc0000d7b56f68991bb8d8fff473103ed9026f5f)), closes [#27902](https://github.com/bitnami/charts/issues/27902)
+
+## <small>2.20.3 (2024-06-17)</small>
+
+* [bitnami/common] chore: :wrench: Relax large and xlarge presets resource requests (#27312) ([6ca69f6](https://github.com/bitnami/charts/commit/6ca69f6769d0f65acc850fa0bcc08506de50cc41)), closes [#27312](https://github.com/bitnami/charts/issues/27312)
+
+## <small>2.20.2 (2024-06-10)</small>
+
+* [bitnami/common] remove trailing spaces from imagePullSecrets rendering (#26882) ([362d4ac](https://github.com/bitnami/charts/commit/362d4ac94dd69be1b607fc531ceac4d67d8d57ef)), closes [#26882](https://github.com/bitnami/charts/issues/26882)
+
+## <small>2.20.1 (2024-06-10)</small>
+
+* [bitnami/common] improve renderSecurityContext (#27053) ([5f0bdde](https://github.com/bitnami/charts/commit/5f0bdde77cf05afa20cb4a800090748a8d102d02)), closes [#27053](https://github.com/bitnami/charts/issues/27053)
+
+## 2.20.0 (2024-06-05)
+
+* [bitnami/*] ci: :construction_worker: Add tag and changelog support (#25359) ([91c707c](https://github.com/bitnami/charts/commit/91c707c9e4e574725a09505d2d313fb93f1b4c0a)), closes [#25359](https://github.com/bitnami/charts/issues/25359)
+* [bitnami/common] Capabilities to return latest apiVersion if kubeVersion is undefined (#26758) ([6582c32](https://github.com/bitnami/charts/commit/6582c3237b772af9cb379f7eaceddb2d64b507f0)), closes [#26758](https://github.com/bitnami/charts/issues/26758)
+* [bitnami/common] docs: :memo: Add changelog ([23349c9](https://github.com/bitnami/charts/commit/23349c99b70313f3e19ebcf9d3e0c154836b2cc0))
+
+## <small>2.19.3 (2024-05-20)</small>
+
+* [bitnami/*] Change non-root and rolling-tags doc URLs (#25628) ([b067c94](https://github.com/bitnami/charts/commit/b067c94f6bcde427863c197fd355f0b5ba12ff5b)), closes [#25628](https://github.com/bitnami/charts/issues/25628)
+* [bitnami/*] Set new header/owner (#25558) ([8d1dc11](https://github.com/bitnami/charts/commit/8d1dc11f5fb30db6fba50c43d7af59d2f79deed3)), closes [#25558](https://github.com/bitnami/charts/issues/25558)
+* [bitnami/common] feat: :sparkles: Show warning when original images are replaced (#25952) ([855045a](https://github.com/bitnami/charts/commit/855045a1a62618154c1216e8da31a4d2c14c7586)), closes [#25952](https://github.com/bitnami/charts/issues/25952)
+
+## <small>2.19.2 (2024-04-29)</small>
+
+* [bitnami/common] Simplify syntax to deal with nullable objects (#25446) ([7dcea6a](https://github.com/bitnami/charts/commit/7dcea6aeb7c45d56bd6175b457bb8a2cddf8defc)), closes [#25446](https://github.com/bitnami/charts/issues/25446)
+* Replace VMware by Broadcom copyright text (#25306) ([a5e4bd0](https://github.com/bitnami/charts/commit/a5e4bd0e35e419203793976a78d9d0a13de92c76)), closes [#25306](https://github.com/bitnami/charts/issues/25306)
+
+## <small>2.19.1 (2024-03-27)</small>
+
+* [bitnami/common] chore: :wrench: Relax preset resource requests xlarge and 2xlarge instances (#24713 ([fdd93bb](https://github.com/bitnami/charts/commit/fdd93bb2a2f73a7df3e498b5072736a54610a908)), closes [#24713](https://github.com/bitnami/charts/issues/24713)
+
+## 2.19.0 (2024-03-08)
+
+* [bitnami/common] feat: :sparkles: Remove empty seLinuxOptions in adapted Openshift rendered security ([1f2f5ef](https://github.com/bitnami/charts/commit/1f2f5ef476efba7f284df0c36c265216325ffda9)), closes [#24268](https://github.com/bitnami/charts/issues/24268)
+
+## 2.18.0 (2024-03-04)
+
+* [bitnami/common] feat: :sparkles: :lock: Add compatibility support for securityContext in Openshift  ([8fb0dd4](https://github.com/bitnami/charts/commit/8fb0dd48b6d7ec69bb59db2376365f6d76b26d97)), closes [#24040](https://github.com/bitnami/charts/issues/24040)
+
+## 2.17.0 (2024-02-20)
+
+* [bitnami/*] Bump all versions (#23602) ([b70ee2a](https://github.com/bitnami/charts/commit/b70ee2a30e4dc256bf0ac52928fb2fa7a70f049b)), closes [#23602](https://github.com/bitnami/charts/issues/23602)
+
+## <small>2.16.1 (2024-02-19)</small>
+
+* [bitnami/common] chore: :wrench: Bump ephemeral storage limits (#23564) ([18c4d88](https://github.com/bitnami/charts/commit/18c4d88f7d4ae93f36d0896fa66dbe872bba1c48)), closes [#23564](https://github.com/bitnami/charts/issues/23564)
+
+## 2.16.0 (2024-02-15)
+
+* [bitnami/common] feat: :sparkles: Add ephemeral-storage to resources preset (#23544) ([23b6856](https://github.com/bitnami/charts/commit/23b68563a0e2e721aa07864cff1b877e1d074388)), closes [#23544](https://github.com/bitnami/charts/issues/23544)
+
+## <small>2.15.3 (2024-02-14)</small>
+
+* [bitnami/common] chore: :pencil2: Fix typo in comment ([d07fb32](https://github.com/bitnami/charts/commit/d07fb324bd6455bf8607f66c642ff346443199ba))
+
+## <small>2.15.2 (2024-02-14)</small>
+
+* [bitnami/common] fix: :children_crossing: Improve resource warning message (#23425) ([7593e4f](https://github.com/bitnami/charts/commit/7593e4fc69fb8c50f7d626cc305c5adc56d23f48)), closes [#23425](https://github.com/bitnami/charts/issues/23425)
+
+## <small>2.15.1 (2024-02-13)</small>
+
+* [bitnami/common] fix: :bug: Check if section is enabled before printing resource warning ([262b6ee](https://github.com/bitnami/charts/commit/262b6ee64c57a5293333879ec423ad41c44f162c))
+
+## 2.15.0 (2024-02-13)
+
+* [bitnami/*] Fix docs.bitnami.com broken links (#21901) ([f35506d](https://github.com/bitnami/charts/commit/f35506d2dadee4f097986e7792df1f53ab215b5d)), closes [#21901](https://github.com/bitnami/charts/issues/21901)
+* [bitnami/*] Move documentation sections from docs.bitnami.com back to the README (#22203) ([7564f36](https://github.com/bitnami/charts/commit/7564f36ca1e95ff30ee686652b7ab8690561a707)), closes [#22203](https://github.com/bitnami/charts/issues/22203)
+* [bitnami/*] Update copyright: Year and company (#21815) ([6c4bf75](https://github.com/bitnami/charts/commit/6c4bf75dec58fc7c9aee9f089777b1a858c17d5b)), closes [#21815](https://github.com/bitnami/charts/issues/21815)
+* [bitnami/common] feat: :sparkles: Add support for resource presets (#23410) ([310d9f9](https://github.com/bitnami/charts/commit/310d9f9e44cb913a2e482f57107970ed5bde9a69)), closes [#23410](https://github.com/bitnami/charts/issues/23410)
+
+## <small>2.14.1 (2023-12-19)</small>
+
+* [bitnami/common] Fix typo with new line in common.secrets.passwords.manage (#21653) ([7e70463](https://github.com/bitnami/charts/commit/7e704634ef564adac330f1e0a67feb2a40a271dc)), closes [#21653](https://github.com/bitnami/charts/issues/21653)
+
+## 2.14.0 (2023-12-19)
+
+* [bitnami/common] add params skipB64enc and skipQuote to common.secrets.passwords.manage (#21595) ([2070eeb](https://github.com/bitnami/charts/commit/2070eeb30bbf48639e0177a42f65a1d13f42a180)), closes [#21595](https://github.com/bitnami/charts/issues/21595)
+
+## <small>2.13.4 (2023-12-15)</small>
+
+* [bitnami/*] Remove relative links to non-README sections, add verification for that and update TL;DR ([1103633](https://github.com/bitnami/charts/commit/11036334d82df0490aa4abdb591543cab6cf7d7f)), closes [#20967](https://github.com/bitnami/charts/issues/20967)
+* [bitnami/*] Rename VMware Application Catalog (#20361) ([3acc734](https://github.com/bitnami/charts/commit/3acc73472beb6fb56c4d99f929061001205bc57e)), closes [#20361](https://github.com/bitnami/charts/issues/20361)
+* [bitnami/common] fix failOnNew implementation in common.secrets.passwords.manage (#21342) ([76a5f24](https://github.com/bitnami/charts/commit/76a5f248fbceb3d1d948c7e60fbba74fd7eb3200)), closes [#21342](https://github.com/bitnami/charts/issues/21342)
+* [bitnami/common] Standardize documentation (#20334) ([3af2426](https://github.com/bitnami/charts/commit/3af242606877aea25c623b4185e6fcd285b7308d)), closes [#20334](https://github.com/bitnami/charts/issues/20334)
+
+## <small>2.13.3 (2023-10-17)</small>
+
+* [bitnami/*] Update Helm charts prerequisites (#19745) ([eb755dd](https://github.com/bitnami/charts/commit/eb755dd36a4dd3cf6635be8e0598f9a7f4c4a554)), closes [#19745](https://github.com/bitnami/charts/issues/19745)
+* [bitnami/common]: Address admission configuration typo  (#19840) ([9a936f1](https://github.com/bitnami/charts/commit/9a936f158646e101c2507421fdcb85b787bbaf64)), closes [#19840](https://github.com/bitnami/charts/issues/19840)
+
+## <small>2.13.2 (2023-10-05)</small>
+
+* [bitnami/common] update imagePullSecrets to handle map and list format (#19702) ([1d30563](https://github.com/bitnami/charts/commit/1d30563bf53d4c0ac898cf1070af57aa28a039f1)), closes [#19702](https://github.com/bitnami/charts/issues/19702)
+
+## <small>2.13.1 (2023-10-04)</small>
+
+* [bitnami/common] render labels correctly when they contains templates (#19680) ([3cb44e3](https://github.com/bitnami/charts/commit/3cb44e376a472ca6721866b09f6d0ab412338cbc)), closes [#19680](https://github.com/bitnami/charts/issues/19680)
+
+## 2.13.0 (2023-09-29)
+
+* [bitnami/common]: Add capabilities macros to manage Pod Security Standard objects (#19428) ([322b76d](https://github.com/bitnami/charts/commit/322b76d6450840f08d53ecfddb5e151cac5c9e88)), closes [#19428](https://github.com/bitnami/charts/issues/19428)
+
+## <small>2.12.1 (2023-09-29)</small>
+
+* [bitnami/common] allow for empty appVersion (#19467) ([8b46a33](https://github.com/bitnami/charts/commit/8b46a3366abc7d216d16ace89675f3fc42691e8f)), closes [#19467](https://github.com/bitnami/charts/issues/19467)
+
+## 2.12.0 (2023-09-22)
+
+* [bitnami/common] new macro to checksum config resources (#19261) ([73945fe](https://github.com/bitnami/charts/commit/73945fedfa2acff03fe172430fcc4b8bcf55282f)), closes [#19261](https://github.com/bitnami/charts/issues/19261)
+* Revert "Autogenerate schema files (#19194)" (#19335) ([73d80be](https://github.com/bitnami/charts/commit/73d80be525c88fb4b8a54451a55acd506e337062)), closes [#19194](https://github.com/bitnami/charts/issues/19194) [#19335](https://github.com/bitnami/charts/issues/19335)
+
+## <small>2.11.1 (2023-09-15)</small>
+
+* Common - Adding app.kubernetes.io/version to common labels (#17201) ([9c497be](https://github.com/bitnami/charts/commit/9c497be9d99a98a20cd01e5858014e097ebe0eaa)), closes [#17201](https://github.com/bitnami/charts/issues/17201)
+
+## 2.11.0 (2023-09-12)
+
+* [bitnami/common] New helper to return image version (#19223) ([db46696](https://github.com/bitnami/charts/commit/db466964c6cfb3368ab87be6bb4d16f74d5c6fd0)), closes [#19223](https://github.com/bitnami/charts/issues/19223)
+* Autogenerate schema files (#19194) ([a2c2090](https://github.com/bitnami/charts/commit/a2c2090b5ac97f47b745c8028c6452bf99739772)), closes [#19194](https://github.com/bitnami/charts/issues/19194)
+
+## <small>2.10.1 (2023-09-08)</small>
+
+* [bitnami/common]: Compatiblity with Helm 3.2.0+ (#19177) ([e4fc03d](https://github.com/bitnami/charts/commit/e4fc03d96bef6ab0318d642fb65ba508c49844f1)), closes [#19177](https://github.com/bitnami/charts/issues/19177)
+
+## 2.10.0 (2023-09-04)
+
+* [bitnami/common] new macro to merge a list of values with rendering  (#18889) ([0fb66f2](https://github.com/bitnami/charts/commit/0fb66f2c6f6828a240a0c1e6857c337bf9f4202a)), closes [#18889](https://github.com/bitnami/charts/issues/18889)
+
+## <small>2.9.2 (2023-08-31)</small>
+
+* Avoid using a tpl when there is no template (#18792) ([134924a](https://github.com/bitnami/charts/commit/134924a260fe2cd758a954f34e89ccb14012f348)), closes [#18792](https://github.com/bitnami/charts/issues/18792)
+
+## <small>2.9.1 (2023-08-29)</small>
+
+* [bitnami/common] Add extraLabelSelectors to affinities templates (#18127) ([b9ecfdb](https://github.com/bitnami/charts/commit/b9ecfdb3421a057b76e6f35f58c26e631c74e686)), closes [#18127](https://github.com/bitnami/charts/issues/18127)
+
+## 2.9.0 (2023-08-22)
+
+* [bitnami/common] Add support for customizing standard labels (#18154) ([9a20483](https://github.com/bitnami/charts/commit/9a20483cfd1daa6bfe08fd8116516a9bb5cd9754)), closes [#18154](https://github.com/bitnami/charts/issues/18154)
+
+## 2.8.0 (2023-08-07)
+
+* [bitnami/common] Delete app kubernetes version field (#18240) ([5fe3ee4](https://github.com/bitnami/charts/commit/5fe3ee44eed88e9b6843c70cbeb6378194b2276b)), closes [#18240](https://github.com/bitnami/charts/issues/18240)
+
+## 2.7.0 (2023-08-07)
+
+* Add app.kubernetes.io/version based on AppVersion (#18194) ([4f698f8](https://github.com/bitnami/charts/commit/4f698f8ac54fc68cd8dab433b7c2d8ffb77a4067)), closes [#18194](https://github.com/bitnami/charts/issues/18194)
+
+## 2.6.0 (2023-07-04)
+
+* [bitnami/common] Add scope for common.tplvalues.render (#17033) ([daf1b54](https://github.com/bitnami/charts/commit/daf1b5445a5e1c961ab78673899dd8007b4f1000)), closes [#17033](https://github.com/bitnami/charts/issues/17033)
+
+## 2.5.0 (2023-06-30)
+
+* [bitnami/*] Change copyright section in READMEs (#17006) ([ef986a1](https://github.com/bitnami/charts/commit/ef986a1605241102b3dcafe9fd8089e6fc1201ad)), closes [#17006](https://github.com/bitnami/charts/issues/17006)
+* [bitnami/common] Update common.secrets.passwords.manage and common.secrets.lookup (#17397) ([5a73cf1](https://github.com/bitnami/charts/commit/5a73cf19f92b93d88ee766669a947375135db903)), closes [#17397](https://github.com/bitnami/charts/issues/17397)
+* [bitnami/several] Change copyright section in READMEs (#16989) ([5b6a5cf](https://github.com/bitnami/charts/commit/5b6a5cfb7625a751848a2e5cd796bd7278f406ca)), closes [#16989](https://github.com/bitnami/charts/issues/16989)
+* Add copyright header (#17300) ([da68be8](https://github.com/bitnami/charts/commit/da68be8e951225133c7dfb572d5101ca3d61c5ae)), closes [#17300](https://github.com/bitnami/charts/issues/17300)
+* Update charts readme (#17217) ([31b3c0a](https://github.com/bitnami/charts/commit/31b3c0afd968ff4429107e34101f7509e6a0e913)), closes [#17217](https://github.com/bitnami/charts/issues/17217)
+
+## 2.4.0 (2023-05-18)
+
+* [bitnami/common] feat: :sparkles: Add apiVersions for DaemonSet and VPA ([a86cfaf](https://github.com/bitnami/charts/commit/a86cfaf0acb7cc26a7a91256f4b76db8f31797ef))
+
+## 2.3.0 (2023-05-12)
+
+* Add wording for enterprise page (#16560) ([8f22774](https://github.com/bitnami/charts/commit/8f2277440b976d52785ba9149762ad8620a73d1f)), closes [#16560](https://github.com/bitnami/charts/issues/16560)
+* Remove duplicate in image pull secrets (#16529) ([ddfea70](https://github.com/bitnami/charts/commit/ddfea70831875639cb298a555ad6dd5e68f059e4)), closes [#16529](https://github.com/bitnami/charts/issues/16529)
+
+## <small>2.2.6 (2023-05-09)</small>
+
+* [bitnami/several] Adapt Chart.yaml to set desired OCI annotations (#16546) ([fc9b18f](https://github.com/bitnami/charts/commit/fc9b18f2e98805d4df629acbcde696f44f973344)), closes [#16546](https://github.com/bitnami/charts/issues/16546)
+
+## <small>2.2.5 (2023-05-02)</small>
+
+* [bitnami/*] Make Helm charts 100% OCI (#15998) ([8841510](https://github.com/bitnami/charts/commit/884151035efcbf2e1b3206e7def85511073fb57d)), closes [#15998](https://github.com/bitnami/charts/issues/15998)
+* [bitnami/common] Fix typo in README.md to test chart publishing from GitHub (#16143) ([5b05ec3](https://github.com/bitnami/charts/commit/5b05ec32caa73240d38135e19501ab2658397d2e)), closes [#16143](https://github.com/bitnami/charts/issues/16143)
+
+## <small>2.2.4 (2023-03-07)</small>
+
+* [bitnami/*] Fix markdown linter issues (#14874) ([a51e0e8](https://github.com/bitnami/charts/commit/a51e0e8d35495b907f3e70dd2f8e7c3bcbf4166a)), closes [#14874](https://github.com/bitnami/charts/issues/14874)
+* [bitnami/*] Fix markdown linter issues 2 (#14890) ([aa96572](https://github.com/bitnami/charts/commit/aa9657237ee8df4a46db0d7fdf8a23230dd6902a)), closes [#14890](https://github.com/bitnami/charts/issues/14890)
+* [bitnami/common] Allow empty registry name (#15296) ([f13df7b](https://github.com/bitnami/charts/commit/f13df7b00f38e5fce67eab7a1b78afb0b064344e)), closes [#15296](https://github.com/bitnami/charts/issues/15296)
+
+## <small>2.2.3 (2023-02-03)</small>
+
+* [bitnami/*] Add license annotation and remove obsolete engine parameter (#14293) ([da2a794](https://github.com/bitnami/charts/commit/da2a7943bae95b6e9b5b4ed972c15e990b69fdb0)), closes [#14293](https://github.com/bitnami/charts/issues/14293)
+* [bitnami/*] Change copyright date (#14682) ([add4ec7](https://github.com/bitnami/charts/commit/add4ec701108ac36ed4de2dffbdf407a0d091067)), closes [#14682](https://github.com/bitnami/charts/issues/14682)
+* [bitnami/*] Change licenses annotation format (#14377) ([0ab7608](https://github.com/bitnami/charts/commit/0ab760862c660fcc78cffadf8e1d8cdd70881473)), closes [#14377](https://github.com/bitnami/charts/issues/14377)
+* [bitnami/*] Unify READMEs (#14472) ([2064fb8](https://github.com/bitnami/charts/commit/2064fb8dcc78a845cdede8211af8c3cc52551161)), closes [#14472](https://github.com/bitnami/charts/issues/14472)
+* [bitnami/common] chore: Correct common.images.image global in example (#14735) ([69ada7d](https://github.com/bitnami/charts/commit/69ada7da0c9c6b7ce718faef6920c61e3632fd02)), closes [#14735](https://github.com/bitnami/charts/issues/14735)
+
+## <small>2.2.2 (2022-12-12)</small>
+
+* [bitnami/common] resolve namespace using common.names.namespace macro (#13481) ([35b84e8](https://github.com/bitnami/charts/commit/35b84e8ba209681d4f160ca102188af61307fccf)), closes [#13481](https://github.com/bitnami/charts/issues/13481)
+
+## <small>2.2.1 (2022-11-25)</small>
+
+* [bitnami/common] fix common topology key affinity function (#13593) ([f95dec8](https://github.com/bitnami/charts/commit/f95dec803bd138b76d67a296545974c5a644d63e)), closes [#13593](https://github.com/bitnami/charts/issues/13593)
+
+## 2.2.0 (2022-11-14)
+
+* [bitnami/common] affinity topologyKey override (#13435) ([624c14e](https://github.com/bitnami/charts/commit/624c14e7121557e6a29ff0e814cb800c2f3cf619)), closes [#13435](https://github.com/bitnami/charts/issues/13435)
+* [bitnami/common] Fixed naming of common.secrets.passwords.manage function in README (#13250) ([39a8bcb](https://github.com/bitnami/charts/commit/39a8bcbb1b606cc165643ae4ddcdc15f05e91583)), closes [#13250](https://github.com/bitnami/charts/issues/13250)
+
+## <small>2.1.2 (2022-10-31)</small>
+
+* [bitnami/common] Do not explicitly specify namespace in affinity term. (#12932) ([638a48e](https://github.com/bitnami/charts/commit/638a48e4d3ec7b5d160f4b525ec40218512c464b)), closes [#12932](https://github.com/bitnami/charts/issues/12932) [#12668](https://github.com/bitnami/charts/issues/12668)
+
+## <small>2.1.1 (2022-10-27)</small>
+
+* [bitnami/common] Fix appVersion mismatch (#13189) ([42b3b3e](https://github.com/bitnami/charts/commit/42b3b3e6c68e6af8ba19f7ec42be0d71b4c21852)), closes [#13189](https://github.com/bitnami/charts/issues/13189)
+
+## 2.1.0 (2022-10-27)
+
+* [bitnami/common] Add new function 'common.secrets.lookup' (#13150) ([e848934](https://github.com/bitnami/charts/commit/e84893410321b88adbd7d2e40b891685a15ce640)), closes [#13150](https://github.com/bitnami/charts/issues/13150)
+
+## <small>2.0.4 (2022-10-24)</small>
+
+* [bitnami/*] Use new default branch name in links (#12943) ([a529e02](https://github.com/bitnami/charts/commit/a529e02597d49d944eba1eb0f190713293247176)), closes [#12943](https://github.com/bitnami/charts/issues/12943)
+* [bitnami/common] kubernetes.io/tls-acme Ingress annotation triggers IngressTLS array (#13054) ([2008857](https://github.com/bitnami/charts/commit/200885790b34afd6fd04ea45949c887a907b6b38)), closes [#13054](https://github.com/bitnami/charts/issues/13054)
+* [bitnami/common] quote secret value when lookup (#11276) ([c8e3019](https://github.com/bitnami/charts/commit/c8e301965f05996a2ae18e0fc8dbfcbe64428356)), closes [#11276](https://github.com/bitnami/charts/issues/11276)
+
+## <small>2.0.3 (2022-09-12)</small>
+
+* [bitnami/common] Revert changes in HPA context from #12282 (#12372) ([55fdc3a](https://github.com/bitnami/charts/commit/55fdc3aff3e32502abfd8f0607ac2be54e585744)), closes [#12282](https://github.com/bitnami/charts/issues/12282) [#12372](https://github.com/bitnami/charts/issues/12372)
+
+## <small>2.0.2 (2022-09-05)</small>
+
+* fix context for HPA util (#12282) ([ccd54a0](https://github.com/bitnami/charts/commit/ccd54a0d47a96903f499fbcdb52a336863020efe)), closes [#12282](https://github.com/bitnami/charts/issues/12282)
+
+## <small>2.0.1 (2022-08-23)</small>
+
+* [bitnami/common] Digest/Tag new approach backward compatible (#12029) ([f1c27dc](https://github.com/bitnami/charts/commit/f1c27dc5d9540c2ea192abf1245da67f5b4f8916)), closes [#12029](https://github.com/bitnami/charts/issues/12029)
+
+## 2.0.0 (2022-08-18)
+
+* [bitnami/common] MAJOR: Add support for image digest apart from tag (#11830) ([e3fee4e](https://github.com/bitnami/charts/commit/e3fee4e41d34a6584660c3b77b8521922603ccab)), closes [#11830](https://github.com/bitnami/charts/issues/11830)
+
+## <small>1.17.1 (2022-08-18)</small>
+
+* Revert changes from #11797 (#11829) ([22bb033](https://github.com/bitnami/charts/commit/22bb033224176c498920596c8d8b25b5f60a277d)), closes [#11797](https://github.com/bitnami/charts/issues/11797) [#11829](https://github.com/bitnami/charts/issues/11829)
+
+## 1.17.0 (2022-08-18)
+
+* [bitnami/common] Add support for image digest apart from tag (#11797) ([b069345](https://github.com/bitnami/charts/commit/b0693450f653318ac7da64575dac389d7041b69f)), closes [#11797](https://github.com/bitnami/charts/issues/11797)
+
+## <small>1.16.1 (2022-07-13)</small>
+
+* [bitnami/*] Replace Kubeapps URL in READMEs (and kubeapps Chart.yaml) and remove BKPR references (#1 ([c6a7914](https://github.com/bitnami/charts/commit/c6a7914361e5aea6016fb45bf4d621edfd111d32)), closes [#10600](https://github.com/bitnami/charts/issues/10600)
+* [bitnami/common] Affinities section does not use common.names.namespace (#11137) ([b70c24c](https://github.com/bitnami/charts/commit/b70c24c82c7a9112a4288441ad1fa8c035bb68b4)), closes [#11137](https://github.com/bitnami/charts/issues/11137)
+
+## 1.16.0 (2022-06-03)
+
+* [bitnami/common] Add mysql validation (#10565) ([75ae79a](https://github.com/bitnami/charts/commit/75ae79a434137694fd82198abe1f861d6e5a04ba)), closes [#10565](https://github.com/bitnami/charts/issues/10565)
+
+## <small>1.15.2 (2022-06-02)</small>
+
+* Update Redis trademark references ([2cada87](https://github.com/bitnami/charts/commit/2cada87ed4967d5cb578b0409a0bb1edee79029a))
+
+## <small>1.15.1 (2022-06-01)</small>
+
+* [bitnami/several] Replace maintainers email by url (#10523) ([ff3cf61](https://github.com/bitnami/charts/commit/ff3cf617a1680509b0f3855d17c4ccff7b29a0ff)), closes [#10523](https://github.com/bitnami/charts/issues/10523)
+
+## 1.15.0 (2022-06-01)
+
+* Add common function common.names.fullname.namespace (#10462) ([96f447c](https://github.com/bitnami/charts/commit/96f447cd8654b6db51d9301c841bacb3a13089b3)), closes [#10462](https://github.com/bitnami/charts/issues/10462)
+
+## <small>1.14.2 (2022-05-30)</small>
+
+* [bitnami/common] use -d flag for base64 (#10491) ([ca8d588](https://github.com/bitnami/charts/commit/ca8d5886a1bc0fb37d1bc770ad2333acdffd7996)), closes [#10491](https://github.com/bitnami/charts/issues/10491) [#10486](https://github.com/bitnami/charts/issues/10486)
+
+## <small>1.14.1 (2022-05-20)</small>
+
+* Differentiate between autoscaling v1beta1 and v1beta2 (#10331) ([16d8a4e](https://github.com/bitnami/charts/commit/16d8a4ee73705ee6db2191d84e03a2ba3ea95deb)), closes [#10331](https://github.com/bitnami/charts/issues/10331)
+
+## 1.14.0 (2022-05-13)
+
+* [bitnami/common] Add common function for HPA api version (#10174) ([4379ab5](https://github.com/bitnami/charts/commit/4379ab56bd8f4d7f7b7817bf302c683bf9087e81)), closes [#10174](https://github.com/bitnami/charts/issues/10174)
+
+## <small>1.13.1 (2022-04-19)</small>
+
+* Fix affinities identifier in README.md for common chart (#9821) ([fe95640](https://github.com/bitnami/charts/commit/fe95640ce3f5ddfb0458f440959ceda3a849a3a4)), closes [#9821](https://github.com/bitnami/charts/issues/9821)
+
+## 1.13.0 (2022-03-24)
+
+* [bitnami/common] Add apiService.apiVersion function to common.capabilities (#9562) ([bba2272](https://github.com/bitnami/charts/commit/bba227223e15937bb1f29f77425f6bd7d9238c02)), closes [#9562](https://github.com/bitnami/charts/issues/9562)
+
+## 1.12.0 (2022-03-16)
+
+* [bitnami/common] Helper to allow overriding namespace name (#9396) ([794fecb](https://github.com/bitnami/charts/commit/794fecb8cb112e8e5e9d55420451752e8bd21431)), closes [#9396](https://github.com/bitnami/charts/issues/9396)
+
+## <small>1.11.3 (2022-03-03)</small>
+
+* [bitnami/common] Improve docs for passwords.manage (#9269) ([0d06114](https://github.com/bitnami/charts/commit/0d061147a5b7c7cf2bf44d2b61603ffeb48a0b51)), closes [#9269](https://github.com/bitnami/charts/issues/9269)
+
+## <small>1.11.2 (2022-02-28)</small>
+
+* [bitnami/common] README: Fixed the desscription for `common.labels.matchLabels` (#9062) ([7f17db7](https://github.com/bitnami/charts/commit/7f17db7e9bcdd7918bde322b3b76a62c6a86e752)), closes [#9062](https://github.com/bitnami/charts/issues/9062) [bitnami/charts#9060](https://github.com/bitnami/charts/issues/9060) [bitnami/charts#9060](https://github.com/bitnami/charts/issues/9060)
+
+## <small>1.11.1 (2022-02-02)</small>
+
+* [bitnami/common] Improve "common.secrets.passwords.manage" helper (#8861) ([01477b4](https://github.com/bitnami/charts/commit/01477b42f2be362388d69da913879c52f2250ac1)), closes [#8861](https://github.com/bitnami/charts/issues/8861)
+
+## 1.11.0 (2022-02-01)
+
+* [bitnami/common] Add ingress helper to detect cert-manager annotations (#8857) ([c0c986f](https://github.com/bitnami/charts/commit/c0c986f8d5c911c09dc84d289d2993ae1779a6ca)), closes [#8857](https://github.com/bitnami/charts/issues/8857)
+
+## <small>1.10.4 (2022-01-20)</small>
+
+* [bitnami/several] Add license to the README ([05f7633](https://github.com/bitnami/charts/commit/05f763372501d596e57db713dd53ff4ff3027cc4))
+* [bitnami/several] Add license to the README ([32fb238](https://github.com/bitnami/charts/commit/32fb238e60a0affc6debd3142eaa3c3d9089ec2a))
+* [bitnami/several] Add license to the README ([b87c2f7](https://github.com/bitnami/charts/commit/b87c2f7899d48a8b02c506765e6ae82937e9ba3f))
+* [bitnami/several] Change prerequisites (#8725) ([8d740c5](https://github.com/bitnami/charts/commit/8d740c566cfdb7e2d933c40128b4e919fce953a5)), closes [#8725](https://github.com/bitnami/charts/issues/8725)
+
+## <small>1.10.3 (2021-11-29)</small>
+
+* [bitnami/common] fix: :bug: Add extra check for "\"\"" values in existing secrets (#8266) ([de27be6](https://github.com/bitnami/charts/commit/de27be6e649472608f076a04a36be3674fe3b84e)), closes [#8266](https://github.com/bitnami/charts/issues/8266)
+
+## <small>1.10.2 (2021-11-29)</small>
+
+* [bitnami/several] Replace HTTP by HTTPS when possible (#8259) ([eafb5bd](https://github.com/bitnami/charts/commit/eafb5bd5a2cc3aaf04fc1e8ebedd73f420d76864)), closes [#8259](https://github.com/bitnami/charts/issues/8259)
+
+## <small>1.10.1 (2021-10-27)</small>
+
+* [bitnami/*] Mark PodSecurityPolicy resources as deprecated (#7948) ([5cac753](https://github.com/bitnami/charts/commit/5cac7539dcb6c3baef06ed6676bfa99c16fdb5fe)), closes [#7948](https://github.com/bitnami/charts/issues/7948)
+
+## 1.10.0 (2021-09-30)
+
+* [bitnami/common] Add new capability helper for Network Policies (#7658) ([3efb1ca](https://github.com/bitnami/charts/commit/3efb1cac924409cbda3216a2300cce031c56a1f5)), closes [#7658](https://github.com/bitnami/charts/issues/7658)
+
+## <small>1.9.1 (2021-09-22)</small>
+
+* [bitnami/common] fix readme for common chart (#7577) ([3f06bdd](https://github.com/bitnami/charts/commit/3f06bdd8df1c00dbdf27230bcdf925c337826abb)), closes [#7577](https://github.com/bitnami/charts/issues/7577)
+* Fix typo in bitname/common README (#7529) ([fccffb3](https://github.com/bitnami/charts/commit/fccffb33391751a1bf84c53184cffe0dcac83fd6)), closes [#7529](https://github.com/bitnami/charts/issues/7529)
+
+## 1.9.0 (2021-09-13)
+
+* [bitnami/common] Add new dependency fullname template (#7471) ([7ca2a4b](https://github.com/bitnami/charts/commit/7ca2a4bb917ac6a276a6b30be12538f4c7c3a63d)), closes [#7471](https://github.com/bitnami/charts/issues/7471)
+
+## 1.8.0 (2021-08-04)
+
+* Add cronjob apiVersion capability (#7122) ([7b84a67](https://github.com/bitnami/charts/commit/7b84a674ae99fd8ddac3b5b3c859c816b87aaf51)), closes [#7122](https://github.com/bitnami/charts/issues/7122)
+
+## <small>1.7.1 (2021-07-27)</small>
+
+* [bitnami/*] Adapt values.yaml of common library, Tomcat, Wavefront and ZooKeeper charts (#6970) ([fb2693b](https://github.com/bitnami/charts/commit/fb2693bfe67a154b159d3998232cc613e1706c70)), closes [#6970](https://github.com/bitnami/charts/issues/6970)
+* [bitnami/several] Bump version and update READMEs (#7069) ([6340bff](https://github.com/bitnami/charts/commit/6340bff66f93c8c797bda3ca0842e4bf770059f1)), closes [#7069](https://github.com/bitnami/charts/issues/7069)
+* Replace <sup> strings with &trade; in the README files (#7066) ([d298b49](https://github.com/bitnami/charts/commit/d298b4996da33c9580c2594e6dc8ad665dd0ebab)), closes [#7066](https://github.com/bitnami/charts/issues/7066)
+
+## 1.7.0 (2021-07-02)
+
+* [bitnami/common] Add supportIngressClassname (#6828) ([0c8a455](https://github.com/bitnami/charts/commit/0c8a45546a219b4b4cd370daf0643543c92739b0)), closes [#6828](https://github.com/bitnami/charts/issues/6828)
+
+## <small>1.6.1 (2021-06-16)</small>
+
+* [bitnami/common] extend common.labels.matchLabels with .Values.extraMatchLabels (#6589) ([66edf04](https://github.com/bitnami/charts/commit/66edf04e3e244c343a845f9c684edf4c8ea04406)), closes [#6589](https://github.com/bitnami/charts/issues/6589)
+
+## 1.6.0 (2021-06-15)
+
+* bitnami/common: add version detection for policy api (#6662) ([dcacf06](https://github.com/bitnami/charts/commit/dcacf06f6f2b6d622e2226935db22d5b8efa20b3)), closes [#6662](https://github.com/bitnami/charts/issues/6662)
+
+## <small>1.5.2 (2021-05-21)</small>
+
+* [bitnami/common] Update _ingress.tpl (#6437) ([9048150](https://github.com/bitnami/charts/commit/90481508542c4da588e0d71944592e6c4e8d36e4)), closes [#6437](https://github.com/bitnami/charts/issues/6437)
+
+## <small>1.5.1 (2021-05-14)</small>
+
+* Node affinity values must be quoted. (#6348) ([f73efbe](https://github.com/bitnami/charts/commit/f73efbe074436eda6276bbf32c781fa913c6a17a)), closes [#6348](https://github.com/bitnami/charts/issues/6348)
+
+## 1.5.0 (2021-05-13)
+
+* [bitnami/common] pull secrets rendering (#6286) ([dfffe74](https://github.com/bitnami/charts/commit/dfffe74c212a28e27f537dbee54c3b5a81c7d572)), closes [#6286](https://github.com/bitnami/charts/issues/6286)
+
+## <small>1.4.3 (2021-04-26)</small>
+
+* [bitnami/common] Update Redis validation's helper (#6192) ([1e3bf03](https://github.com/bitnami/charts/commit/1e3bf03e3aad56fd4dc159744626e25ec24c5772)), closes [#6192](https://github.com/bitnami/charts/issues/6192)
+
+## <small>1.4.2 (2021-03-25)</small>
+
+* [bitnami/common] Common credential error (#5884) ([328ca86](https://github.com/bitnami/charts/commit/328ca863515f6ef9fe188c71110be7b951719d66)), closes [#5884](https://github.com/bitnami/charts/issues/5884)
+
+## <small>1.4.1 (2021-02-23)</small>
+
+* [bitnami/common] Add possibility to pull images without giving registry name (#5582) ([15ca275](https://github.com/bitnami/charts/commit/15ca27520a16b590101fa39195f55017e2935a90)), closes [#5582](https://github.com/bitnami/charts/issues/5582)
+
+## 1.4.0 (2021-02-22)
+
+* [bitnami/common] Add RBAC/CRD apiVersion support for versions 1.22+ (#5583) ([fda87aa](https://github.com/bitnami/charts/commit/fda87aabcd004f9a67549f5d22d273dd9fff6836)), closes [#5583](https://github.com/bitnami/charts/issues/5583)
+
+## <small>1.3.9 (2021-02-09)</small>
+
+* Add registered icon to all the MongoDB references (#5426) ([56f2088](https://github.com/bitnami/charts/commit/56f20884267e56175695b2917f7704b9510f4ba6)), closes [#5426](https://github.com/bitnami/charts/issues/5426)
+
+## <small>1.3.8 (2021-02-03)</small>
+
+* fix(common): quote namespace name (#5363) ([d27fb5e](https://github.com/bitnami/charts/commit/d27fb5e0b327728bb4304503376aaa4d2ab50619)), closes [#5363](https://github.com/bitnami/charts/issues/5363)
+
+## <small>1.3.7 (2021-01-20)</small>
+
+* [bitnami/*] Change helm version in the prerequisites (#5090) ([c5e67a3](https://github.com/bitnami/charts/commit/c5e67a388743cbee28439d2cabca27884b9daf97)), closes [#5090](https://github.com/bitnami/charts/issues/5090)
+* [bitnami/common] Remove helm version checker from secret helper (#5156) ([20231b1](https://github.com/bitnami/charts/commit/20231b138fae524371e6b29504acd4cbd19ce697)), closes [#5156](https://github.com/bitnami/charts/issues/5156)
+
+## <small>1.3.6 (2021-01-18)</small>
+
+* [bitnami/common] same behavior with empty string when the secret obje… (#5057) ([0bae2bb](https://github.com/bitnami/charts/commit/0bae2bbb9b42c5a8dd2b8a144ffa55ace1c8a936)), closes [#5057](https://github.com/bitnami/charts/issues/5057)
+
+## <small>1.3.5 (2021-01-17)</small>
+
+* [bitnami/common] fix wrong include reference (#5056) ([11efd59](https://github.com/bitnami/charts/commit/11efd59177419d4177e59800f04b4f26ab7243f8)), closes [#5056](https://github.com/bitnami/charts/issues/5056)
+
+## <small>1.3.4 (2021-01-15)</small>
+
+* [bitnami/common] Fix lookup function backward compatibility and README (#5018) ([14a0042](https://github.com/bitnami/charts/commit/14a0042dc90c01fd38f814e1e43559384a3baa9f)), closes [#5018](https://github.com/bitnami/charts/issues/5018)
+
+## <small>1.3.3 (2021-01-14)</small>
+
+* [bitnami/several] Add Redis trademark (#5023) ([dfa89b8](https://github.com/bitnami/charts/commit/dfa89b865989da26a3c73f397fd3c402dd56ebe8)), closes [#5023](https://github.com/bitnami/charts/issues/5023)
+
+## <small>1.3.2 (2021-01-13)</small>
+
+* [bitnami/common] Add missing else statement to ingress apiversion ([22ab07a](https://github.com/bitnami/charts/commit/22ab07ac7d39d4153cc839de2b714086e99cfc04))
+
+## <small>1.3.1 (2021-01-13)</small>
+
+* [bitnami/common] Fix cases where ingress is not at the root (#4984) ([e447d9d](https://github.com/bitnami/charts/commit/e447d9d2205fc3f2f6cd990386a691fd9204b214)), closes [#4984](https://github.com/bitnami/charts/issues/4984)
+
+## 1.3.0 (2021-01-13)
+
+* [bitnami/*] POC Lookup function implementation (#4831) ([240dc1b](https://github.com/bitnami/charts/commit/240dc1bea80a3e121fd595636496d7941bdbc5e0)), closes [#4831](https://github.com/bitnami/charts/issues/4831)
+
+## <small>1.2.3 (2020-12-31)</small>
+
+* [bitnami/common] Fix incorrect backend calculation for networking/v1beta1 ([c59b869](https://github.com/bitnami/charts/commit/c59b86919f47504bc8fd06f75a024f55e58ace77))
+
+## <small>1.2.2 (2020-12-30)</small>
+
+* [bitnami/common] Fix typo in common.capabilities.kubeVersion ([a371b73](https://github.com/bitnami/charts/commit/a371b734b854aa81a7dec16c40d061f5e9a14875))
+
+## <small>1.2.1 (2020-12-30)</small>
+
+* [bitnami/common] Fix issue with global kubeversion calculation ([0bbb339](https://github.com/bitnami/charts/commit/0bbb339d60b41ab978e759863709ebb1451d07a4))
+
+## 1.2.0 (2020-12-30)
+
+* [bitnami/common] Make ingress rules compatible with all Kubernetes versions (#4859) ([2b22a21](https://github.com/bitnami/charts/commit/2b22a217020fe3d16ef98fdcdd4a562c43f9824a)), closes [#4859](https://github.com/bitnami/charts/issues/4859)
+
+## <small>1.1.4 (2020-12-23)</small>
+
+* [bitnami/common] fix: moving kube version comparison (#4804) ([cdb6ae8](https://github.com/bitnami/charts/commit/cdb6ae8f00d114f0998c604416b79f62dc27f19d)), closes [#4804](https://github.com/bitnami/charts/issues/4804)
+
+## <small>1.1.3 (2020-12-18)</small>
+
+* [bitnami/*] fix typos (#4699) ([49adc63](https://github.com/bitnami/charts/commit/49adc63b672da976c55af2e077aa5648a357b77f)), closes [#4699](https://github.com/bitnami/charts/issues/4699)
+* [bitnami/common] Adding networking apiVersion support for versions 1.19+ (#4776) ([5ed8c54](https://github.com/bitnami/charts/commit/5ed8c54f5e0a905effc4c1ae5c4931e6669cec30)), closes [#4776](https://github.com/bitnami/charts/issues/4776)
+
+## <small>1.1.2 (2020-12-11)</small>
+
+* [bitnami/common] Fix node affinity templates (#4692) ([5b51a5c](https://github.com/bitnami/charts/commit/5b51a5c004b062282849a4abaaffd6840bb6c95f)), closes [#4692](https://github.com/bitnami/charts/issues/4692)
+
+## <small>1.1.1 (2020-11-26)</small>
+
+* fix: mongodb validation auth (#4506) ([ca3fdfb](https://github.com/bitnami/charts/commit/ca3fdfbeebeba5bd7dfa4805e1ca2411e5950b09)), closes [#4506](https://github.com/bitnami/charts/issues/4506)
+
+## 1.1.0 (2020-11-26)
+
+* [bitnami/common] Add mongodb validation template (#4497) ([14ece96](https://github.com/bitnami/charts/commit/14ece96c801a7326935b6269423d8854fed3a49e)), closes [#4497](https://github.com/bitnami/charts/issues/4497)
+
+## <small>1.0.1 (2020-11-19)</small>
+
+* [bitnami/common] existingSecret is in auth map (#4389) ([de9b217](https://github.com/bitnami/charts/commit/de9b2177465e1c56ca2aa1c4c486bd37a7104d7a)), closes [#4389](https://github.com/bitnami/charts/issues/4389)
+
+## 1.0.0 (2020-11-10)
+
+* bitnami/common Major version. Adapt Chart to apiVersion: v2 (#4258) ([09dbc45](https://github.com/bitnami/charts/commit/09dbc45d11c5e8fe65d6eb64dbf51571ad2c7464)), closes [#4258](https://github.com/bitnami/charts/issues/4258)
+
+## 0.10.0 (2020-10-27)
+
+* [bitnami/common] feat: add cassandra passwords validations (#4110) ([b4923d4](https://github.com/bitnami/charts/commit/b4923d48018dff1673a32eefcc0d62eb484b36da)), closes [#4110](https://github.com/bitnami/charts/issues/4110)
+
+## 0.9.0 (2020-10-21)
+
+* [bitnami/common] feat: add redis passwords validations (#4070) ([0daa8d5](https://github.com/bitnami/charts/commit/0daa8d580c06e18d94dbc0e88467347a34418596)), closes [#4070](https://github.com/bitnami/charts/issues/4070)
+
+## <small>0.8.2 (2020-10-14)</small>
+
+* [bitnami/common] Allow backward compatibility for existingSecret (#4006) ([aa2b3a1](https://github.com/bitnami/charts/commit/aa2b3a18610c69b2f5c76b839483db43fa3c093c)), closes [#4006](https://github.com/bitnami/charts/issues/4006)
+
+## <small>0.8.1 (2020-10-05)</small>
+
+* [bitnami/common] Fix secret name bug with defaulNameSuffix. (#3888) ([d114d44](https://github.com/bitnami/charts/commit/d114d446ef86cb6e7a72de6542905ec3b07d3684))
+
+## 0.8.0 (2020-10-02)
+
+* [bitnami/common] Add statefulset capabilities and prepare MariaDB passwords validation for new forma ([1eb4436](https://github.com/bitnami/charts/commit/1eb44366a72e39e84e33bed1a4940c1b2c6025fc)), closes [#3859](https://github.com/bitnami/charts/issues/3859)
+
+## <small>0.7.1 (2020-09-22)</small>
+
+* [bitnami/common] fix: evaluate enabled as string (#3733) ([048cdae](https://github.com/bitnami/charts/commit/048cdae5488cfcfe83ec698afaa8318aa3b1d0ca)), closes [#3733](https://github.com/bitnami/charts/issues/3733)
+
+## 0.7.0 (2020-09-22)
+
+* [bitnami/metrics-server] Add source repo (#3577) ([1ed12f9](https://github.com/bitnami/charts/commit/1ed12f96af75322b46afdb2b3d9907c11b13f765)), closes [#3577](https://github.com/bitnami/charts/issues/3577)
+* PoC for pods' affinity (#3713) ([9e6a915](https://github.com/bitnami/charts/commit/9e6a915392979f0c0148875f34cca1c27e399b59)), closes [#3713](https://github.com/bitnami/charts/issues/3713)
+
+## <small>0.6.2 (2020-09-01)</small>
+
+* [bitnami/common] fix: wrong use of append function (#3566) ([c912fd0](https://github.com/bitnami/charts/commit/c912fd0b7378bf2d5d56182e6d2fa6bbd74df46f)), closes [#3566](https://github.com/bitnami/charts/issues/3566)
+
+## <small>0.6.1 (2020-08-31)</small>
+
+* [bitnami/common] fix: mariadb checks secret fields after check enabled (#3565) ([498056a](https://github.com/bitnami/charts/commit/498056ad16a6e89aa3b7cc231da7467ab5bd3986)), closes [#3565](https://github.com/bitnami/charts/issues/3565)
+
+## 0.6.0 (2020-08-19)
+
+* [bitnami/mariadb] Require password option at secret resource (#3411) ([a8d2464](https://github.com/bitnami/charts/commit/a8d24643756470d0280fc585b01397358c1c242d)), closes [#3411](https://github.com/bitnami/charts/issues/3411)
+
+## <small>0.5.2 (2020-08-19)</small>
+
+* [bitnami/common] fix: add global parameters to postgres validation (#3460) ([1c52a2a](https://github.com/bitnami/charts/commit/1c52a2a48ea65024a753eb5b32deadd46650fb18)), closes [#3460](https://github.com/bitnami/charts/issues/3460)
+
+## <small>0.5.1 (2020-08-10)</small>
+
+* fix(common): missing $ in required values helpers (#3376) ([c972152](https://github.com/bitnami/charts/commit/c972152762c14c5ab5e3847a4870f4f4f2a31224)), closes [#3376](https://github.com/bitnami/charts/issues/3376)
+
+## 0.5.0 (2020-08-10)
+
+* [bitnami/common] add psql and mysql required password validations (#3374) ([1a4419e](https://github.com/bitnami/charts/commit/1a4419e15d985f67413beff98c9fc9b9f69108fb)), closes [#3374](https://github.com/bitnami/charts/issues/3374)
+
+## 0.4.0 (2020-08-04)
+
+* [bitnami/*] Fix TL;DR typo in READMEs (#3280) ([3d7ab40](https://github.com/bitnami/charts/commit/3d7ab406fecd64f1af25f53e7d27f03ec95b29a4)), closes [#3280](https://github.com/bitnami/charts/issues/3280)
+* [bitnami/all] Add categories (#3075) ([63bde06](https://github.com/bitnami/charts/commit/63bde066b87a140fab52264d0522401ab3d63509)), closes [#3075](https://github.com/bitnami/charts/issues/3075)
+* Add common helpers to check secrets when upgrade (#3150) ([5a5807c](https://github.com/bitnami/charts/commit/5a5807c1b1db1f2337f6aa5308d3ff73a4329e6a)), closes [#3150](https://github.com/bitnami/charts/issues/3150)
+
+## <small>0.3.1 (2020-06-05)</small>
+
+* [bitnami/several] Fix table rendering in some hubs (#2770) ([fe9fd8c](https://github.com/bitnami/charts/commit/fe9fd8c261195385aae73e165ac6c1a666fef08e)), closes [#2770](https://github.com/bitnami/charts/issues/2770)
+
+## 0.3.0 (2020-06-02)
+
+* [bitnami/common]: add template function for ingress apiVersion (#2732) ([a968a50](https://github.com/bitnami/charts/commit/a968a50916ed9fa6f823a5a3ef6e4b98d615322f)), closes [#2732](https://github.com/bitnami/charts/issues/2732)
+
+## <small>0.2.4 (2020-05-29)</small>
+
+* [bitnami/common] Bump chart version (#2707) ([ff2c37a](https://github.com/bitnami/charts/commit/ff2c37a576191f4523c7f69504aea669ab68aba8)), closes [#2707](https://github.com/bitnami/charts/issues/2707)
+* [bitnami/several] Fix trailing spaces to make helm lint work on all of them (#2705) ([bafba3f](https://github.com/bitnami/charts/commit/bafba3fc8b8949897ad2d99d437bd8fc975223e4)), closes [#2705](https://github.com/bitnami/charts/issues/2705)
+
+## <small>0.2.3 (2020-05-26)</small>
+
+* fix(common): add name attribute to imagePullSecrets helper (#2664) ([1ea21a9](https://github.com/bitnami/charts/commit/1ea21a92a8f44bd0d82d0fd4ed30108a89cf5b34)), closes [#2664](https://github.com/bitnami/charts/issues/2664)
+
+## <small>0.2.2 (2020-05-19)</small>
+
+* update bitnami/common to be compatible with helm v2.12+ (#2615) ([c7751eb](https://github.com/bitnami/charts/commit/c7751eb5764e468e1854b58a1b8491d2b13e0a4a)), closes [#2615](https://github.com/bitnami/charts/issues/2615)
+
+## <small>0.2.1 (2020-05-13)</small>
+
+* bump bitnami/common version number (#2580) ([1bd1e7b](https://github.com/bitnami/charts/commit/1bd1e7bc776614b6ae10f21e9c8b23fe15db5ff4)), closes [#2580](https://github.com/bitnami/charts/issues/2580)
+
+## 0.2.0 (2020-04-17)
+
+* [bitnami/common] add secrets and warnings helpers (#2347) ([a748ff8](https://github.com/bitnami/charts/commit/a748ff82259d6553a0d4ca56ca6d7d050de859f4)), closes [#2347](https://github.com/bitnami/charts/issues/2347)
+
+## <small>0.1.1 (2020-04-08)</small>
+
+* [bitnami/common] bitnami common add values yaml (#2267) ([a88c902](https://github.com/bitnami/charts/commit/a88c90212021771eacc562dd38c04381e2f63d6f)), closes [#2267](https://github.com/bitnami/charts/issues/2267)
+
+## 0.1.0 (2020-04-03)
+
+* [bitnami/common]: add initial functions (#2188) ([9401e13](https://github.com/bitnami/charts/commit/9401e13316992c36b0e33de75d5f249645a2924e)), closes [#2188](https://github.com/bitnami/charts/issues/2188)
index 5a844bc..fcdd1d2 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright VMware, Inc.
+# Copyright Broadcom, Inc. All Rights Reserved.
 # SPDX-License-Identifier: APACHE-2.0
 
 annotations:
@@ -6,10 +6,10 @@ annotations:
   licenses: Apache-2.0
 apiVersion: v2
 # Please make sure that version and appVersion are always the same.
-appVersion: 2.16.1
+appVersion: 2.31.1
 description: A Library Helm Chart for grouping common logic between bitnami charts. This chart is not deployable by itself.
 home: https://bitnami.com
-icon: https://bitnami.com/downloads/logos/bitnami-mark.png
+icon: https://dyltqmyl993wv.cloudfront.net/downloads/logos/bitnami-mark.png
 keywords:
   - common
   - helper
@@ -17,10 +17,10 @@ keywords:
   - function
   - bitnami
 maintainers:
-  - name: VMware, Inc.
+  - name: Broadcom, Inc. All Rights Reserved.
     url: https://github.com/bitnami/charts
 name: common
 sources:
-  - https://github.com/bitnami/charts
+  - https://github.com/bitnami/charts/tree/main/bitnami/common
 type: library
-version: 2.17.0
+version: 2.31.1
index 0d01a1e..2860536 100644 (file)
@@ -24,14 +24,12 @@ data:
   myvalue: "Hello World"
 ```
 
-Looking to use our applications in production? Try [VMware Tanzu Application Catalog](https://bitnami.com/enterprise), the enterprise edition of Bitnami Application Catalog.
+Looking to use our applications in production? Try [VMware Tanzu Application Catalog](https://bitnami.com/enterprise), the commercial edition of the Bitnami catalog.
 
 ## Introduction
 
 This chart provides a common template helpers which can be used to develop new charts using [Helm](https://helm.sh) package manager.
 
-Bitnami charts can be used with [Kubeapps](https://kubeapps.dev/) for deployment and management of Helm Charts in clusters.
-
 ## Prerequisites
 
 - Kubernetes 1.23+
@@ -39,6 +37,152 @@ Bitnami charts can be used with [Kubeapps](https://kubeapps.dev/) for deployment
 
 ## Parameters
 
+The following table lists the helpers available in the library which are scoped in different sections.
+
+### Affinities
+
+| Helper identifier               | Description                                          | Expected Input                                               |
+| ------------------------------- | ---------------------------------------------------- | ------------------------------------------------------------ |
+| `common.affinities.nodes.soft`  | Return a soft nodeAffinity definition                | `dict "key" "FOO" "values" (list "BAR" "BAZ")`               |
+| `common.affinities.nodes.hard`  | Return a hard nodeAffinity definition                | `dict "key" "FOO" "values" (list "BAR" "BAZ")`               |
+| `common.affinities.nodes`       | Return a nodeAffinity definition                     | `dict "type" "soft" "key" "FOO" "values" (list "BAR" "BAZ")` |
+| `common.affinities.topologyKey` | Return a topologyKey definition                      | `dict "topologyKey" "FOO"`                                   |
+| `common.affinities.pods.soft`   | Return a soft podAffinity/podAntiAffinity definition | `dict "component" "FOO" "context" $`                         |
+| `common.affinities.pods.hard`   | Return a hard podAffinity/podAntiAffinity definition | `dict "component" "FOO" "context" $`                         |
+| `common.affinities.pods`        | Return a podAffinity/podAntiAffinity definition      | `dict "type" "soft" "key" "FOO" "values" (list "BAR" "BAZ")` |
+
+### Capabilities
+
+| Helper identifier                                         | Description                                                                                    | Expected Input                          |
+| --------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | --------------------------------------- |
+| `common.capabilities.kubeVersion`                         | Return the target Kubernetes version (using client default if .Values.kubeVersion is not set). | `.` Chart context                       |
+| `common.capabilities.apiVersions.has`                     | Return true if the apiVersion is supported                                                     | `dict "version" "batch/v1" "context" $` |
+| `common.capabilities.job.apiVersion`                      | Return the appropriate apiVersion for job.                                                     | `.` Chart context                       |
+| `common.capabilities.cronjob.apiVersion`                  | Return the appropriate apiVersion for cronjob.                                                 | `.` Chart context                       |
+| `common.capabilities.daemonset.apiVersion`                | Return the appropriate apiVersion for daemonset.                                               | `.` Chart context                       |
+| `common.capabilities.cronjob.apiVersion`                  | Return the appropriate apiVersion for cronjob.                                                 | `.` Chart context                       |
+| `common.capabilities.deployment.apiVersion`               | Return the appropriate apiVersion for deployment.                                              | `.` Chart context                       |
+| `common.capabilities.statefulset.apiVersion`              | Return the appropriate apiVersion for statefulset.                                             | `.` Chart context                       |
+| `common.capabilities.ingress.apiVersion`                  | Return the appropriate apiVersion for ingress.                                                 | `.` Chart context                       |
+| `common.capabilities.rbac.apiVersion`                     | Return the appropriate apiVersion for RBAC resources.                                          | `.` Chart context                       |
+| `common.capabilities.crd.apiVersion`                      | Return the appropriate apiVersion for CRDs.                                                    | `.` Chart context                       |
+| `common.capabilities.policy.apiVersion`                   | Return the appropriate apiVersion for podsecuritypolicy.                                       | `.` Chart context                       |
+| `common.capabilities.networkPolicy.apiVersion`            | Return the appropriate apiVersion for networkpolicy.                                           | `.` Chart context                       |
+| `common.capabilities.apiService.apiVersion`               | Return the appropriate apiVersion for APIService.                                              | `.` Chart context                       |
+| `common.capabilities.hpa.apiVersion`                      | Return the appropriate apiVersion for Horizontal Pod Autoscaler                                | `.` Chart context                       |
+| `common.capabilities.vpa.apiVersion`                      | Return the appropriate apiVersion for Vertical Pod Autoscaler.                                 | `.` Chart context                       |
+| `common.capabilities.psp.supported`                       | Returns true if PodSecurityPolicy is supported                                                 | `.` Chart context                       |
+| `common.capabilities.supportsHelmVersion`                 | Returns true if the used Helm version is 3.3+                                                  | `.` Chart context                       |
+| `common.capabilities.admissionConfiguration.supported`    | Returns true if AdmissionConfiguration is supported                                            | `.` Chart context                       |
+| `common.capabilities.admissionConfiguration.apiVersion`   | Return the appropriate apiVersion for AdmissionConfiguration.                                  | `.` Chart context                       |
+| `common.capabilities.podSecurityConfiguration.apiVersion` | Return the appropriate apiVersion for PodSecurityConfiguration.                                | `.` Chart context                       |
+
+### Compatibility
+
+| Helper identifier                            | Description                                                                                                                                                                                                                           | Expected Input                                                   |
+| -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- |
+| `common.compatibility.isOpenshift`           | Return true if the detected platform is Openshift                                                                                                                                                                                     | `.` Chart context                                                |
+| `common.compatibility.renderSecurityContext` | Render a compatible securityContext depending on the platform. By default it is maintained as it is. In other platforms like Openshift we remove default user/group values that do not work out of the box with the restricted-v1 SCC | `dict "secContext" .Values.containerSecurityContext "context" $` |
+
+### Errors
+
+| Helper identifier                       | Description                                                                                                                                                            | Expected Input                                                                      |
+| --------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
+| `common.errors.upgrade.passwords.empty` | It will ensure required passwords are given when we are upgrading a chart. If `validationErrors` is not empty it will throw an error and will stop the upgrade action. | `dict "validationErrors" (list $validationError00 $validationError01)  "context" $` |
+| `common.errors.insecureImages`          | Throw error when original container images are replaced. The error can be bypassed by setting the `global.security.allowInsecureImages` to true.                       | `dict "images" (list .Values.path.to.the.imageRoot) "context" $`                    |
+
+### Images
+
+| Helper identifier                 | Description                                                                                                    | Expected Input                                                                                               |
+| --------------------------------- | -------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ |
+| `common.images.image`             | Return the proper and full image name                                                                          | `dict "imageRoot" .Values.path.to.the.image "global" $`, see [ImageRoot](#imageroot) for the structure.      |
+| `common.images.pullSecrets`       | Return the proper Docker Image Registry Secret Names (deprecated: use common.images.renderPullSecrets instead) | `dict "images" (list .Values.path.to.the.image1, .Values.path.to.the.image2) "global" .Values.global`        |
+| `common.images.renderPullSecrets` | Return the proper Docker Image Registry Secret Names (evaluates values as templates)                           | `dict "images" (list .Values.path.to.the.image1, .Values.path.to.the.image2) "context" $`                    |
+| `common.images.version`           | Return the proper image version                                                                                | `dict "imageRoot" .Values.path.to.the.image "chart" .Chart` , see [ImageRoot](#imageroot) for the structure. |
+
+### Ingress
+
+| Helper identifier                         | Description                                                                                                       | Expected Input                                                                                                                                                                   |
+| ----------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `common.ingress.backend`                  | Generate a proper Ingress backend entry depending on the API version                                              | `dict "serviceName" "foo" "servicePort" "bar"`, see the [Ingress deprecation notice](https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16/) for the syntax differences |
+| `common.ingress.supportsPathType`         | Prints "true" if the pathType field is supported                                                                  | `.` Chart context                                                                                                                                                                |
+| `common.ingress.supportsIngressClassname` | Prints "true" if the ingressClassname field is supported                                                          | `.` Chart context                                                                                                                                                                |
+| `common.ingress.certManagerRequest`       | Prints "true" if required cert-manager annotations for TLS signed certificates are set in the Ingress annotations | `dict "annotations" .Values.path.to.the.ingress.annotations`                                                                                                                     |
+
+### Labels
+
+| Helper identifier           | Description                                                                 | Expected Input    |
+| --------------------------- | --------------------------------------------------------------------------- | ----------------- |
+| `common.labels.standard`    | Return Kubernetes standard labels                                           | `.` Chart context |
+| `common.labels.matchLabels` | Labels to use on `deploy.spec.selector.matchLabels` and `svc.spec.selector` | `.` Chart context |
+
+### Names
+
+| Helper identifier                  | Description                                                           | Expected Input                                                                                |
+| ---------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
+| `common.names.name`                | Expand the name of the chart or use `.Values.nameOverride`            | `.` Chart context                                                                             |
+| `common.names.fullname`            | Create a default fully qualified app name.                            | `.` Chart context                                                                             |
+| `common.names.namespace`           | Allow the release namespace to be overridden                          | `.` Chart context                                                                             |
+| `common.names.fullname.namespace`  | Create a fully qualified app name adding the installation's namespace | `.` Chart context                                                                             |
+| `common.names.chart`               | Chart name plus version                                               | `.` Chart context                                                                             |
+| `common.names.dependency.fullname` | Create a default fully qualified dependency name.                     | `dict "chartName" "dependency-chart-name" "chartValues" .Values.dependency-chart "context" $` |
+
+### Resources
+
+| Helper identifier         | Description                                                                                                                                 | Expected Input       |
+| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | -------------------- |
+| `common.resources.preset` | Return a resource request/limit object based on a given preset. These presets are for basic testing and not meant to be used in production. | `dict "type" "nano"` |
+
+### Secrets
+
+| Helper identifier                 | Description                                                                            | Expected Input                                                                                                                                                                                                                                                                   |
+| --------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `common.secrets.name`             | Generate the name of the secret.                                                       | `dict "existingSecret" .Values.path.to.the.existingSecret "defaultNameSuffix" "mySuffix" "context" $` see [ExistingSecret](#existingsecret) for the structure.                                                                                                                   |
+| `common.secrets.key`              | Generate secret key.                                                                   | `dict "existingSecret" .Values.path.to.the.existingSecret "key" "keyName"` see [ExistingSecret](#existingsecret) for the structure.                                                                                                                                              |
+| `common.secrets.passwords.manage` | Generate secret password or retrieve one if already created.                           | `dict "secret" "secret-name" "key" "keyName" "providedValues" (list "path.to.password1" "path.to.password2") "length" 10 "strong" false "chartName" "chartName" "honorProvidedValues" false "context" $`, length, strong, honorProvidedValues and chartName fields are optional. |
+| `common.secrets.exists`           | Returns whether a previous generated secret already exists.                            | `dict "secret" "secret-name" "context" $`                                                                                                                                                                                                                                        |
+| `common.secrets.lookup`           | Reuses the value from an existing secret, otherwise sets its value to a default value. | `dict "secret" "secret-name" "key" "keyName" "defaultValue" .Values.myValue "context" $`                                                                                                                                                                                         |
+
+### Storage
+
+| Helper identifier      | Description                      | Expected Input                                                                                                      |
+| ---------------------- | -------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
+| `common.storage.class` | Return  the proper Storage Class | `dict "persistence" .Values.path.to.the.persistence "global" $`, see [Persistence](#persistence) for the structure. |
+
+### TplValues
+
+| Helper identifier                  | Description                                                         | Expected Input                                                                                                                                           |
+| ---------------------------------- | ------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `common.tplvalues.render`          | Renders a value that contains template                              | `dict "value" .Values.path.to.the.Value "context" $`, value is the value should rendered as template, context frequently is the chart context `$` or `.` |
+| `common.tplvalues.merge`           | Merge a list of values that contains template after rendering them. | `dict "values" (list .Values.path.to.the.Value1 .Values.path.to.the.Value2) "context" $`                                                                 |
+| `common.tplvalues.merge-overwrite` | Merge a list of values that contains template after rendering them. | `dict "values" (list .Values.path.to.the.Value1 .Values.path.to.the.Value2) "context" $`                                                                 |
+
+### Utils
+
+| Helper identifier               | Description                                                                                                                                     | Expected Input                                                         |
+| ------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
+| `common.utils.fieldToEnvVar`    | Build environment variable name given a field.                                                                                                  | `dict "field" "my-password"`                                           |
+| `common.utils.secret.getvalue`  | Print instructions to get a secret value.                                                                                                       | `dict "secret" "secret-name" "field" "secret-value-field" "context" $` |
+| `common.utils.getValueFromKey`  | Gets a value from `.Values` object given its key path                                                                                           | `dict "key" "path.to.key" "context" $`                                 |
+| `common.utils.getKeyFromList`   | Returns first `.Values` key with a defined value or first of the list if all non-defined                                                        | `dict "keys" (list "path.to.key1" "path.to.key2") "context" $`         |
+| `common.utils.checksumTemplate` | Checksum a template at "path" containing a *single* resource (ConfigMap,Secret) for use in pod annotations, excluding the metadata (see #18376) | `dict "path" "/configmap.yaml" "context" $`                            |
+
+### Validations
+
+| Helper identifier                             | Description                                                                                                        | Expected Input                                                                                                                                                                                                                                                           |
+| --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| `common.validations.values.single.empty`      | Validate a value must not be empty.                                                                                | `dict "valueKey" "path.to.value" "secret" "secret.name" "field" "my-password" "subchart" "subchart" "context" $` secret, field and subchart are optional. In case they are given, the helper will generate a how to get instruction. See [ValidateValue](#validatevalue) |
+| `common.validations.values.multiple.empty`    | Validate a multiple values must not be empty. It returns a shared error for all the values.                        | `dict "required" (list $validateValueConf00 $validateValueConf01) "context" $`. See [ValidateValue](#validatevalue)                                                                                                                                                      |
+| `common.validations.values.mariadb.passwords` | This helper will ensure required password for MariaDB are not empty. It returns a shared error for all the values. | `dict "secret" "mariadb-secret" "subchart" "true" "context" $` subchart field is optional and could be true or false it depends on where you will use mariadb chart and the helper.                                                                                      |
+
+### Warnings
+
+| Helper identifier                | Description                                                       | Expected Input                                             |
+| -------------------------------- | ----------------------------------------------------------------- | ---------------------------------------------------------- |
+| `common.warnings.rollingTag`     | Warning about using rolling tag.                                  | `ImageRoot` see [ImageRoot](#imageroot) for the structure. |
+| `common.warnings.modifiedImages` | Warning about replaced images from the original.                  | `ImageRoot` see [ImageRoot](#imageroot) for the structure. |
+| `common.warnings.resources`      | Warning about not setting the resource object in all deployments. | `dict "sections" (list "path1" "path2") context $`         |
+
 ## Special input schemas
 
 ### ImageRoot
@@ -61,7 +205,7 @@ tag:
 
 pullPolicy:
   type: string
-  description: Specify a imagePullPolicy. Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
+  description: Specify a imagePullPolicy.'
 
 pullSecrets:
   type: array
@@ -214,13 +358,13 @@ helm install test mychart --set path.to.value00="",path.to.value01=""
 
 #### Useful links
 
-- <https://docs.bitnami.com/tutorials/resolve-helm2-helm3-post-migration-issues/>
+- <https://techdocs.broadcom.com/us/en/vmware-tanzu/application-catalog/tanzu-application-catalog/services/tac-doc/apps-tutorials-resolve-helm2-helm3-post-migration-issues-index.html>
 - <https://helm.sh/docs/topics/v2_v3_migration/>
 - <https://helm.sh/blog/migrate-from-helm-v2-to-helm-v3/>
 
 ## License
 
-Copyright &copy; 2024 Broadcom. The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
+Copyright &copy; 2025 Broadcom. The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
index e85b1df..c6ccc62 100644 (file)
@@ -1,5 +1,5 @@
 {{/*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
@@ -60,13 +60,14 @@ Return a topologyKey definition
 
 {{/*
 Return a soft podAffinity/podAntiAffinity definition
-{{ include "common.affinities.pods.soft" (dict "component" "FOO" "customLabels" .Values.podLabels "extraMatchLabels" .Values.extraMatchLabels "topologyKey" "BAR" "extraPodAffinityTerms" .Values.extraPodAffinityTerms "context" $) -}}
+{{ include "common.affinities.pods.soft" (dict "component" "FOO" "customLabels" .Values.podLabels "extraMatchLabels" .Values.extraMatchLabels "topologyKey" "BAR" "extraPodAffinityTerms" .Values.extraPodAffinityTerms "extraNamespaces" (list "namespace1" "namespace2") "context" $) -}}
 */}}
 {{- define "common.affinities.pods.soft" -}}
 {{- $component := default "" .component -}}
 {{- $customLabels := default (dict) .customLabels -}}
 {{- $extraMatchLabels := default (dict) .extraMatchLabels -}}
 {{- $extraPodAffinityTerms := default (list) .extraPodAffinityTerms -}}
+{{- $extraNamespaces := default (list) .extraNamespaces -}}
 preferredDuringSchedulingIgnoredDuringExecution:
   - podAffinityTerm:
       labelSelector:
@@ -77,6 +78,13 @@ preferredDuringSchedulingIgnoredDuringExecution:
           {{- range $key, $value := $extraMatchLabels }}
           {{ $key }}: {{ $value | quote }}
           {{- end }}
+      {{- if $extraNamespaces }}
+      namespaces:
+        - {{ .context.Release.Namespace }}
+        {{- with $extraNamespaces }}
+        {{- include "common.tplvalues.render" (dict "value" . "context" $) | nindent 8 }}
+        {{- end }}
+      {{- end }}
       topologyKey: {{ include "common.affinities.topologyKey" (dict "topologyKey" .topologyKey) }}
     weight: 1
   {{- range $extraPodAffinityTerms }}
@@ -89,6 +97,13 @@ preferredDuringSchedulingIgnoredDuringExecution:
           {{- range $key, $value := .extraMatchLabels }}
           {{ $key }}: {{ $value | quote }}
           {{- end }}
+      {{- if .namespaces }}
+      namespaces:
+        - {{ $.context.Release.Namespace }}
+        {{- with .namespaces }}
+        {{- include "common.tplvalues.render" (dict "value" . "context" $) | nindent 8 }}
+        {{- end }}
+      {{- end }}
       topologyKey: {{ include "common.affinities.topologyKey" (dict "topologyKey" .topologyKey) }}
     weight: {{ .weight | default 1 -}}
   {{- end -}}
@@ -96,13 +111,14 @@ preferredDuringSchedulingIgnoredDuringExecution:
 
 {{/*
 Return a hard podAffinity/podAntiAffinity definition
-{{ include "common.affinities.pods.hard" (dict "component" "FOO" "customLabels" .Values.podLabels "extraMatchLabels" .Values.extraMatchLabels "topologyKey" "BAR" "extraPodAffinityTerms" .Values.extraPodAffinityTerms "context" $) -}}
+{{ include "common.affinities.pods.hard" (dict "component" "FOO" "customLabels" .Values.podLabels "extraMatchLabels" .Values.extraMatchLabels "topologyKey" "BAR" "extraPodAffinityTerms" .Values.extraPodAffinityTerms "extraNamespaces" (list "namespace1" "namespace2") "context" $) -}}
 */}}
 {{- define "common.affinities.pods.hard" -}}
 {{- $component := default "" .component -}}
 {{- $customLabels := default (dict) .customLabels -}}
 {{- $extraMatchLabels := default (dict) .extraMatchLabels -}}
 {{- $extraPodAffinityTerms := default (list) .extraPodAffinityTerms -}}
+{{- $extraNamespaces := default (list) .extraNamespaces -}}
 requiredDuringSchedulingIgnoredDuringExecution:
   - labelSelector:
       matchLabels: {{- (include "common.labels.matchLabels" ( dict "customLabels" $customLabels "context" .context )) | nindent 8 }}
@@ -112,6 +128,13 @@ requiredDuringSchedulingIgnoredDuringExecution:
         {{- range $key, $value := $extraMatchLabels }}
         {{ $key }}: {{ $value | quote }}
         {{- end }}
+    {{- if $extraNamespaces }}
+    namespaces:
+      - {{ .context.Release.Namespace }}
+      {{- with $extraNamespaces }}
+      {{- include "common.tplvalues.render" (dict "value" . "context" $) | nindent 6 }}
+      {{- end }}
+    {{- end }}
     topologyKey: {{ include "common.affinities.topologyKey" (dict "topologyKey" .topologyKey) }}
   {{- range $extraPodAffinityTerms }}
   - labelSelector:
@@ -122,6 +145,13 @@ requiredDuringSchedulingIgnoredDuringExecution:
         {{- range $key, $value := .extraMatchLabels }}
         {{ $key }}: {{ $value | quote }}
         {{- end }}
+    {{- if .namespaces }}
+    namespaces:
+      - {{ $.context.Release.Namespace }}
+      {{- with .namespaces }}
+      {{- include "common.tplvalues.render" (dict "value" . "context" $) | nindent 6 }}
+      {{- end }}
+    {{- end }}
     topologyKey: {{ include "common.affinities.topologyKey" (dict "topologyKey" .topologyKey) }}
   {{- end -}}
 {{- end -}}
index 115674a..6efde9d 100644 (file)
@@ -1,5 +1,5 @@
 {{/*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
@@ -9,14 +9,20 @@ SPDX-License-Identifier: APACHE-2.0
 Return the target Kubernetes version
 */}}
 {{- define "common.capabilities.kubeVersion" -}}
-{{- if .Values.global }}
-    {{- if .Values.global.kubeVersion }}
-    {{- .Values.global.kubeVersion -}}
-    {{- else }}
-    {{- default .Capabilities.KubeVersion.Version .Values.kubeVersion -}}
-    {{- end -}}
-{{- else }}
-{{- default .Capabilities.KubeVersion.Version .Values.kubeVersion -}}
+{{- default (default .Capabilities.KubeVersion.Version .Values.kubeVersion) ((.Values.global).kubeVersion) -}}
+{{- end -}}
+
+{{/*
+Return true if the apiVersion is supported
+Usage:
+{{ include "common.capabilities.apiVersions.has" (dict "version" "batch/v1" "context" $) }}
+*/}}
+{{- define "common.capabilities.apiVersions.has" -}}
+{{- $providedAPIVersions := default .context.Values.apiVersions ((.context.Values.global).apiVersions) -}}
+{{- if and (empty $providedAPIVersions) (.context.Capabilities.APIVersions.Has .version) -}}
+    {{- true -}}
+{{- else if has .version $providedAPIVersions -}}
+    {{- true -}}
 {{- end -}}
 {{- end -}}
 
@@ -24,151 +30,96 @@ Return the target Kubernetes version
 Return the appropriate apiVersion for poddisruptionbudget.
 */}}
 {{- define "common.capabilities.policy.apiVersion" -}}
-{{- if semverCompare "<1.21-0" (include "common.capabilities.kubeVersion" .) -}}
-{{- print "policy/v1beta1" -}}
-{{- else -}}
 {{- print "policy/v1" -}}
 {{- end -}}
-{{- end -}}
 
 {{/*
 Return the appropriate apiVersion for networkpolicy.
 */}}
 {{- define "common.capabilities.networkPolicy.apiVersion" -}}
-{{- if semverCompare "<1.7-0" (include "common.capabilities.kubeVersion" .) -}}
-{{- print "extensions/v1beta1" -}}
-{{- else -}}
 {{- print "networking.k8s.io/v1" -}}
 {{- end -}}
+
+{{/*
+Return the appropriate apiVersion for job.
+*/}}
+{{- define "common.capabilities.job.apiVersion" -}}
+{{- print "batch/v1" -}}
 {{- end -}}
 
 {{/*
 Return the appropriate apiVersion for cronjob.
 */}}
 {{- define "common.capabilities.cronjob.apiVersion" -}}
-{{- if semverCompare "<1.21-0" (include "common.capabilities.kubeVersion" .) -}}
-{{- print "batch/v1beta1" -}}
-{{- else -}}
 {{- print "batch/v1" -}}
 {{- end -}}
-{{- end -}}
 
 {{/*
 Return the appropriate apiVersion for daemonset.
 */}}
 {{- define "common.capabilities.daemonset.apiVersion" -}}
-{{- if semverCompare "<1.14-0" (include "common.capabilities.kubeVersion" .) -}}
-{{- print "extensions/v1beta1" -}}
-{{- else -}}
 {{- print "apps/v1" -}}
 {{- end -}}
-{{- end -}}
 
 {{/*
 Return the appropriate apiVersion for deployment.
 */}}
 {{- define "common.capabilities.deployment.apiVersion" -}}
-{{- if semverCompare "<1.14-0" (include "common.capabilities.kubeVersion" .) -}}
-{{- print "extensions/v1beta1" -}}
-{{- else -}}
 {{- print "apps/v1" -}}
 {{- end -}}
-{{- end -}}
 
 {{/*
 Return the appropriate apiVersion for statefulset.
 */}}
 {{- define "common.capabilities.statefulset.apiVersion" -}}
-{{- if semverCompare "<1.14-0" (include "common.capabilities.kubeVersion" .) -}}
-{{- print "apps/v1beta1" -}}
-{{- else -}}
 {{- print "apps/v1" -}}
 {{- end -}}
-{{- end -}}
 
 {{/*
 Return the appropriate apiVersion for ingress.
 */}}
 {{- define "common.capabilities.ingress.apiVersion" -}}
-{{- if .Values.ingress -}}
-{{- if .Values.ingress.apiVersion -}}
-{{- .Values.ingress.apiVersion -}}
-{{- else if semverCompare "<1.14-0" (include "common.capabilities.kubeVersion" .) -}}
-{{- print "extensions/v1beta1" -}}
-{{- else if semverCompare "<1.19-0" (include "common.capabilities.kubeVersion" .) -}}
-{{- print "networking.k8s.io/v1beta1" -}}
-{{- else -}}
-{{- print "networking.k8s.io/v1" -}}
-{{- end }}
-{{- else if semverCompare "<1.14-0" (include "common.capabilities.kubeVersion" .) -}}
-{{- print "extensions/v1beta1" -}}
-{{- else if semverCompare "<1.19-0" (include "common.capabilities.kubeVersion" .) -}}
-{{- print "networking.k8s.io/v1beta1" -}}
-{{- else -}}
 {{- print "networking.k8s.io/v1" -}}
 {{- end -}}
-{{- end -}}
 
 {{/*
 Return the appropriate apiVersion for RBAC resources.
 */}}
 {{- define "common.capabilities.rbac.apiVersion" -}}
-{{- if semverCompare "<1.17-0" (include "common.capabilities.kubeVersion" .) -}}
-{{- print "rbac.authorization.k8s.io/v1beta1" -}}
-{{- else -}}
 {{- print "rbac.authorization.k8s.io/v1" -}}
 {{- end -}}
-{{- end -}}
 
 {{/*
 Return the appropriate apiVersion for CRDs.
 */}}
 {{- define "common.capabilities.crd.apiVersion" -}}
-{{- if semverCompare "<1.19-0" (include "common.capabilities.kubeVersion" .) -}}
-{{- print "apiextensions.k8s.io/v1beta1" -}}
-{{- else -}}
 {{- print "apiextensions.k8s.io/v1" -}}
 {{- end -}}
-{{- end -}}
 
 {{/*
 Return the appropriate apiVersion for APIService.
 */}}
 {{- define "common.capabilities.apiService.apiVersion" -}}
-{{- if semverCompare "<1.10-0" (include "common.capabilities.kubeVersion" .) -}}
-{{- print "apiregistration.k8s.io/v1beta1" -}}
-{{- else -}}
 {{- print "apiregistration.k8s.io/v1" -}}
 {{- end -}}
-{{- end -}}
 
 {{/*
 Return the appropriate apiVersion for Horizontal Pod Autoscaler.
 */}}
 {{- define "common.capabilities.hpa.apiVersion" -}}
-{{- if semverCompare "<1.23-0" (include "common.capabilities.kubeVersion" .context) -}}
-{{- if .beta2 -}}
-{{- print "autoscaling/v2beta2" -}}
-{{- else -}}
-{{- print "autoscaling/v2beta1" -}}
-{{- end -}}
-{{- else -}}
+{{- $kubeVersion := include "common.capabilities.kubeVersion" .context -}}
 {{- print "autoscaling/v2" -}}
 {{- end -}}
-{{- end -}}
 
 {{/*
 Return the appropriate apiVersion for Vertical Pod Autoscaler.
 */}}
 {{- define "common.capabilities.vpa.apiVersion" -}}
-{{- if semverCompare "<1.23-0" (include "common.capabilities.kubeVersion" .context) -}}
-{{- if .beta2 -}}
-{{- print "autoscaling/v2beta2" -}}
+{{- $kubeVersion := include "common.capabilities.kubeVersion" .context -}}
+{{- if and (not (empty $kubeVersion)) (semverCompare "<1.25-0" $kubeVersion) -}}
+{{- print "autoscaling/v1beta2" -}}
 {{- else -}}
-{{- print "autoscaling/v2beta1" -}}
-{{- end -}}
-{{- else -}}
-{{- print "autoscaling/v2" -}}
+{{- print "autoscaling/v1" -}}
 {{- end -}}
 {{- end -}}
 
@@ -176,7 +127,8 @@ Return the appropriate apiVersion for Vertical Pod Autoscaler.
 Returns true if PodSecurityPolicy is supported
 */}}
 {{- define "common.capabilities.psp.supported" -}}
-{{- if semverCompare "<1.25-0" (include "common.capabilities.kubeVersion" .) -}}
+{{- $kubeVersion := include "common.capabilities.kubeVersion" . -}}
+{{- if or (empty $kubeVersion) (semverCompare "<1.25-0" $kubeVersion) -}}
   {{- true -}}
 {{- end -}}
 {{- end -}}
@@ -185,18 +137,16 @@ Returns true if PodSecurityPolicy is supported
 Returns true if AdmissionConfiguration is supported
 */}}
 {{- define "common.capabilities.admissionConfiguration.supported" -}}
-{{- if semverCompare ">=1.23-0" (include "common.capabilities.kubeVersion" .) -}}
+{{- $kubeVersion := include "common.capabilities.kubeVersion" . -}}
   {{- true -}}
 {{- end -}}
-{{- end -}}
 
 {{/*
 Return the appropriate apiVersion for AdmissionConfiguration.
 */}}
 {{- define "common.capabilities.admissionConfiguration.apiVersion" -}}
-{{- if semverCompare "<1.23-0" (include "common.capabilities.kubeVersion" .) -}}
-{{- print "apiserver.config.k8s.io/v1alpha1" -}}
-{{- else if semverCompare "<1.25-0" (include "common.capabilities.kubeVersion" .) -}}
+{{- $kubeVersion := include "common.capabilities.kubeVersion" . -}}
+{{- if and (not (empty $kubeVersion)) (semverCompare "<1.25-0" $kubeVersion) -}}
 {{- print "apiserver.config.k8s.io/v1beta1" -}}
 {{- else -}}
 {{- print "apiserver.config.k8s.io/v1" -}}
@@ -207,9 +157,8 @@ Return the appropriate apiVersion for AdmissionConfiguration.
 Return the appropriate apiVersion for PodSecurityConfiguration.
 */}}
 {{- define "common.capabilities.podSecurityConfiguration.apiVersion" -}}
-{{- if semverCompare "<1.23-0" (include "common.capabilities.kubeVersion" .) -}}
-{{- print "pod-security.admission.config.k8s.io/v1alpha1" -}}
-{{- else if semverCompare "<1.25-0" (include "common.capabilities.kubeVersion" .) -}}
+{{- $kubeVersion := include "common.capabilities.kubeVersion" . -}}
+{{- if and (not (empty $kubeVersion)) (semverCompare "<1.25-0" $kubeVersion) -}}
 {{- print "pod-security.admission.config.k8s.io/v1beta1" -}}
 {{- else -}}
 {{- print "pod-security.admission.config.k8s.io/v1" -}}
diff --git a/kubernetes/common/mongodb/common/templates/_compatibility.tpl b/kubernetes/common/mongodb/common/templates/_compatibility.tpl
new file mode 100644 (file)
index 0000000..87343ca
--- /dev/null
@@ -0,0 +1,46 @@
+{{/*
+Copyright Broadcom, Inc. All Rights Reserved.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+{{/* vim: set filetype=mustache: */}}
+
+{{/*
+Return true if the detected platform is Openshift
+Usage:
+{{- include "common.compatibility.isOpenshift" . -}}
+*/}}
+{{- define "common.compatibility.isOpenshift" -}}
+{{- if .Capabilities.APIVersions.Has "security.openshift.io/v1" -}}
+{{- true -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Render a compatible securityContext depending on the platform. By default it is maintained as it is. In other platforms like Openshift we remove default user/group values that do not work out of the box with the restricted-v1 SCC
+Usage:
+{{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.containerSecurityContext "context" $) -}}
+*/}}
+{{- define "common.compatibility.renderSecurityContext" -}}
+{{- $adaptedContext := .secContext -}}
+
+{{- if (((.context.Values.global).compatibility).openshift) -}}
+  {{- if or (eq .context.Values.global.compatibility.openshift.adaptSecurityContext "force") (and (eq .context.Values.global.compatibility.openshift.adaptSecurityContext "auto") (include "common.compatibility.isOpenshift" .context)) -}}
+    {{/* Remove incompatible user/group values that do not work in Openshift out of the box */}}
+    {{- $adaptedContext = omit $adaptedContext "fsGroup" "runAsUser" "runAsGroup" -}}
+    {{- if not .secContext.seLinuxOptions -}}
+    {{/* If it is an empty object, we remove it from the resulting context because it causes validation issues */}}
+    {{- $adaptedContext = omit $adaptedContext "seLinuxOptions" -}}
+    {{- end -}}
+  {{- end -}}
+{{- end -}}
+{{/* Remove empty seLinuxOptions object if global.compatibility.omitEmptySeLinuxOptions is set to true */}}
+{{- if and (((.context.Values.global).compatibility).omitEmptySeLinuxOptions) (not .secContext.seLinuxOptions) -}}
+  {{- $adaptedContext = omit $adaptedContext "seLinuxOptions" -}}
+{{- end -}}
+{{/* Remove fields that are disregarded when running the container in privileged mode */}}
+{{- if $adaptedContext.privileged -}}
+  {{- $adaptedContext = omit $adaptedContext "capabilities" -}}
+{{- end -}}
+{{- omit $adaptedContext "enabled" | toYaml -}}
+{{- end -}}
index 07ded6f..95b8b8e 100644 (file)
@@ -1,11 +1,11 @@
 {{/*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
 {{/* vim: set filetype=mustache: */}}
 {{/*
-Through error when upgrading using empty passwords values that must not be empty.
+Throw error when upgrading using empty passwords values that must not be empty.
 
 Usage:
 {{- $validationError00 := include "common.validations.values.single.empty" (dict "valueKey" "path.to.password00" "secret" "secretName" "field" "password-00") -}}
@@ -26,3 +26,60 @@ Required password params:
     {{- printf $errorString $validationErrors | fail -}}
   {{- end -}}
 {{- end -}}
+
+{{/*
+Throw error when original container images are replaced.
+The error can be bypassed by setting the "global.security.allowInsecureImages" to true. In this case,
+a warning message will be shown instead.
+
+Usage:
+{{ include "common.errors.insecureImages" (dict "images" (list .Values.path.to.the.imageRoot) "context" $) }}
+*/}}
+{{- define "common.errors.insecureImages" -}}
+{{- $relocatedImages := list -}}
+{{- $replacedImages := list -}}
+{{- $retaggedImages := list -}}
+{{- $globalRegistry := ((.context.Values.global).imageRegistry) -}}
+{{- $originalImages := .context.Chart.Annotations.images -}}
+{{- range .images -}}
+  {{- $registryName := default .registry $globalRegistry -}}
+  {{- $fullImageNameNoTag := printf "%s/%s" $registryName .repository -}}
+  {{- $fullImageName := printf "%s:%s" $fullImageNameNoTag .tag -}}
+  {{- if not (contains $fullImageNameNoTag $originalImages) -}}
+    {{- if not (contains $registryName $originalImages) -}}
+      {{- $relocatedImages = append $relocatedImages $fullImageName  -}}
+    {{- else if not (contains .repository $originalImages) -}}
+      {{- $replacedImages = append $replacedImages $fullImageName  -}}
+    {{- end -}}
+  {{- end -}}
+  {{- if not (contains (printf "%s:%s" .repository .tag) $originalImages) -}}
+    {{- $retaggedImages = append $retaggedImages $fullImageName  -}}
+  {{- end -}}
+{{- end -}}
+
+{{- if and (or (gt (len $relocatedImages) 0) (gt (len $replacedImages) 0)) (((.context.Values.global).security).allowInsecureImages) -}}
+  {{- print "\n\n⚠ SECURITY WARNING: Verifying original container images was skipped. Please note this Helm chart was designed, tested, and validated on multiple platforms using a specific set of Bitnami and Tanzu Application Catalog containers. Substituting other containers is likely to cause degraded security and performance, broken chart features, and missing environment variables.\n" -}}
+{{- else if (or (gt (len $relocatedImages) 0) (gt (len $replacedImages) 0)) -}}
+  {{- $errorString := "Original containers have been substituted for unrecognized ones. Deploying this chart with non-standard containers is likely to cause degraded security and performance, broken chart features, and missing environment variables." -}}
+  {{- $errorString = print $errorString "\n\nUnrecognized images:" -}}
+  {{- range (concat $relocatedImages $replacedImages) -}}
+    {{- $errorString = print $errorString "\n  - " . -}}
+  {{- end -}}
+  {{- if or (contains "docker.io/bitnami/" $originalImages) (contains "docker.io/bitnamiprem/" $originalImages) -}}
+    {{- $errorString = print "\n\n⚠ ERROR: " $errorString -}}
+    {{- $errorString = print $errorString "\n\nIf you are sure you want to proceed with non-standard containers, you can skip container image verification by setting the global parameter 'global.security.allowInsecureImages' to true." -}}
+    {{- $errorString = print $errorString "\nFurther information can be obtained at https://github.com/bitnami/charts/issues/30850" -}}
+    {{- print $errorString | fail -}}
+  {{- else if gt (len $replacedImages) 0 -}}
+    {{- $errorString = print "\n\n⚠ WARNING: " $errorString -}}
+    {{- print $errorString -}}
+  {{- end -}}
+{{- else if gt (len $retaggedImages) 0 -}}
+  {{- $warnString := "\n\n⚠ WARNING: Original containers have been retagged. Please note this Helm chart was tested, and validated on multiple platforms using a specific set of Tanzu Application Catalog containers. Substituting original image tags could cause unexpected behavior." -}}
+  {{- $warnString = print $warnString "\n\nRetagged images:" -}}
+  {{- range $retaggedImages -}}
+    {{- $warnString = print $warnString "\n  - " . -}}
+  {{- end -}}
+  {{- print $warnString -}}
+{{- end -}}
+{{- end -}}
index 1bcb779..6eedf75 100644 (file)
@@ -1,22 +1,24 @@
 {{/*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
 {{/* vim: set filetype=mustache: */}}
 {{/*
-Return the proper image name
-{{ include "common.images.image" ( dict "imageRoot" .Values.path.to.the.image "global" .Values.global ) }}
+Return the proper image name.
+If image tag and digest are not defined, termination fallbacks to chart appVersion.
+{{ include "common.images.image" ( dict "imageRoot" .Values.path.to.the.image "global" .Values.global "chart" .Chart ) }}
 */}}
 {{- define "common.images.image" -}}
-{{- $registryName := .imageRoot.registry -}}
+{{- $registryName := default .imageRoot.registry ((.global).imageRegistry) -}}
 {{- $repositoryName := .imageRoot.repository -}}
 {{- $separator := ":" -}}
 {{- $termination := .imageRoot.tag | toString -}}
-{{- if .global }}
-    {{- if .global.imageRegistry }}
-     {{- $registryName = .global.imageRegistry -}}
-    {{- end -}}
+
+{{- if not .imageRoot.tag }}
+  {{- if .chart }}
+    {{- $termination = .chart.AppVersion | toString -}}
+  {{- end -}}
 {{- end -}}
 {{- if .imageRoot.digest }}
     {{- $separator = "@" -}}
@@ -36,14 +38,12 @@ Return the proper Docker Image Registry Secret Names (deprecated: use common.ima
 {{- define "common.images.pullSecrets" -}}
   {{- $pullSecrets := list }}
 
-  {{- if .global }}
-    {{- range .global.imagePullSecrets -}}
-      {{- if kindIs "map" . -}}
-        {{- $pullSecrets = append $pullSecrets .name -}}
-      {{- else -}}
-        {{- $pullSecrets = append $pullSecrets . -}}
-      {{- end }}
-    {{- end -}}
+  {{- range ((.global).imagePullSecrets) -}}
+    {{- if kindIs "map" . -}}
+      {{- $pullSecrets = append $pullSecrets .name -}}
+    {{- else -}}
+      {{- $pullSecrets = append $pullSecrets . -}}
+    {{- end }}
   {{- end -}}
 
   {{- range .images -}}
@@ -56,7 +56,7 @@ Return the proper Docker Image Registry Secret Names (deprecated: use common.ima
     {{- end -}}
   {{- end -}}
 
-  {{- if (not (empty $pullSecrets)) }}
+  {{- if (not (empty $pullSecrets)) -}}
 imagePullSecrets:
     {{- range $pullSecrets | uniq }}
   - name: {{ . }}
@@ -72,13 +72,11 @@ Return the proper Docker Image Registry Secret Names evaluating values as templa
   {{- $pullSecrets := list }}
   {{- $context := .context }}
 
-  {{- if $context.Values.global }}
-    {{- range $context.Values.global.imagePullSecrets -}}
-      {{- if kindIs "map" . -}}
-        {{- $pullSecrets = append $pullSecrets (include "common.tplvalues.render" (dict "value" .name "context" $context)) -}}
-      {{- else -}}
-        {{- $pullSecrets = append $pullSecrets (include "common.tplvalues.render" (dict "value" . "context" $context)) -}}
-      {{- end -}}
+  {{- range (($context.Values.global).imagePullSecrets) -}}
+    {{- if kindIs "map" . -}}
+      {{- $pullSecrets = append $pullSecrets (include "common.tplvalues.render" (dict "value" .name "context" $context)) -}}
+    {{- else -}}
+      {{- $pullSecrets = append $pullSecrets (include "common.tplvalues.render" (dict "value" . "context" $context)) -}}
     {{- end -}}
   {{- end -}}
 
@@ -92,7 +90,7 @@ Return the proper Docker Image Registry Secret Names evaluating values as templa
     {{- end -}}
   {{- end -}}
 
-  {{- if (not (empty $pullSecrets)) }}
+  {{- if (not (empty $pullSecrets)) -}}
 imagePullSecrets:
     {{- range $pullSecrets | uniq }}
   - name: {{ . }}
@@ -114,4 +112,3 @@ Return the proper image version (ingores image revision/prerelease info & fallba
     {{- print .chart.AppVersion -}}
 {{- end -}}
 {{- end -}}
-
index efa5b85..2d0dbf1 100644 (file)
@@ -1,5 +1,5 @@
 {{/*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
@@ -17,11 +17,6 @@ Params:
   - context - Dict - Required. The context for the template evaluation.
 */}}
 {{- define "common.ingress.backend" -}}
-{{- $apiVersion := (include "common.capabilities.ingress.apiVersion" .context) -}}
-{{- if or (eq $apiVersion "extensions/v1beta1") (eq $apiVersion "networking.k8s.io/v1beta1") -}}
-serviceName: {{ .serviceName }}
-servicePort: {{ .servicePort }}
-{{- else -}}
 service:
   name: {{ .serviceName }}
   port:
@@ -31,33 +26,6 @@ service:
     number: {{ .servicePort | int }}
     {{- end }}
 {{- end -}}
-{{- end -}}
-
-{{/*
-Print "true" if the API pathType field is supported
-Usage:
-{{ include "common.ingress.supportsPathType" . }}
-*/}}
-{{- define "common.ingress.supportsPathType" -}}
-{{- if (semverCompare "<1.18-0" (include "common.capabilities.kubeVersion" .)) -}}
-{{- print "false" -}}
-{{- else -}}
-{{- print "true" -}}
-{{- end -}}
-{{- end -}}
-
-{{/*
-Returns true if the ingressClassname field is supported
-Usage:
-{{ include "common.ingress.supportsIngressClassname" . }}
-*/}}
-{{- define "common.ingress.supportsIngressClassname" -}}
-{{- if semverCompare "<1.18-0" (include "common.capabilities.kubeVersion" .) -}}
-{{- print "false" -}}
-{{- else -}}
-{{- print "true" -}}
-{{- end -}}
-{{- end -}}
 
 {{/*
 Return true if cert-manager required annotations for TLS signed
index d90a6cd..0a0cc54 100644 (file)
@@ -1,5 +1,5 @@
 {{/*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
index a222924..ba83956 100644 (file)
@@ -1,5 +1,5 @@
 {{/*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
index 5eb56ca..2aaf575 100644 (file)
@@ -1,5 +1,5 @@
 {{/*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
@@ -11,35 +11,35 @@ These presets are for basic testing and not meant to be used in production
 {{ include "common.resources.preset" (dict "type" "nano") -}}
 */}}
 {{- define "common.resources.preset" -}}
-{{/* The limits are the requests increased by 50% (except ephemeral-storage)*/}}
+{{/* The limits are the requests increased by 50% (except ephemeral-storage and xlarge/2xlarge sizes)*/}}
 {{- $presets := dict
   "nano" (dict
       "requests" (dict "cpu" "100m" "memory" "128Mi" "ephemeral-storage" "50Mi")
-      "limits" (dict "cpu" "150m" "memory" "192Mi" "ephemeral-storage" "1024Mi")
+      "limits" (dict "cpu" "150m" "memory" "192Mi" "ephemeral-storage" "2Gi")
    )
   "micro" (dict
       "requests" (dict "cpu" "250m" "memory" "256Mi" "ephemeral-storage" "50Mi")
-      "limits" (dict "cpu" "375m" "memory" "384Mi" "ephemeral-storage" "1024Mi")
+      "limits" (dict "cpu" "375m" "memory" "384Mi" "ephemeral-storage" "2Gi")
    )
   "small" (dict
       "requests" (dict "cpu" "500m" "memory" "512Mi" "ephemeral-storage" "50Mi")
-      "limits" (dict "cpu" "750m" "memory" "768Mi" "ephemeral-storage" "1024Mi")
+      "limits" (dict "cpu" "750m" "memory" "768Mi" "ephemeral-storage" "2Gi")
    )
   "medium" (dict
       "requests" (dict "cpu" "500m" "memory" "1024Mi" "ephemeral-storage" "50Mi")
-      "limits" (dict "cpu" "750m" "memory" "1536Mi" "ephemeral-storage" "1024Mi")
+      "limits" (dict "cpu" "750m" "memory" "1536Mi" "ephemeral-storage" "2Gi")
    )
   "large" (dict
       "requests" (dict "cpu" "1.0" "memory" "2048Mi" "ephemeral-storage" "50Mi")
-      "limits" (dict "cpu" "1.5" "memory" "3072Mi" "ephemeral-storage" "1024Mi")
+      "limits" (dict "cpu" "1.5" "memory" "3072Mi" "ephemeral-storage" "2Gi")
    )
   "xlarge" (dict
-      "requests" (dict "cpu" "2.0" "memory" "4096Mi" "ephemeral-storage" "50Mi")
-      "limits" (dict "cpu" "3.0" "memory" "6144Mi" "ephemeral-storage" "1024Mi")
+      "requests" (dict "cpu" "1.0" "memory" "3072Mi" "ephemeral-storage" "50Mi")
+      "limits" (dict "cpu" "3.0" "memory" "6144Mi" "ephemeral-storage" "2Gi")
    )
   "2xlarge" (dict
-      "requests" (dict "cpu" "4.0" "memory" "8192Mi" "ephemeral-storage" "50Mi")
-      "limits" (dict "cpu" "6.0" "memory" "12288Mi" "ephemeral-storage" "1024Mi")
+      "requests" (dict "cpu" "1.0" "memory" "3072Mi" "ephemeral-storage" "50Mi")
+      "limits" (dict "cpu" "6.0" "memory" "12288Mi" "ephemeral-storage" "2Gi")
    )
  }}
 {{- if hasKey $presets .type -}}
index 84dbe38..7868c00 100644 (file)
@@ -1,5 +1,5 @@
 {{/*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
@@ -67,7 +67,7 @@ Params:
 Generate secret password or retrieve one if already created.
 
 Usage:
-{{ include "common.secrets.passwords.manage" (dict "secret" "secret-name" "key" "keyName" "providedValues" (list "path.to.password1" "path.to.password2") "length" 10 "strong" false "chartName" "chartName" "context" $) }}
+{{ include "common.secrets.passwords.manage" (dict "secret" "secret-name" "key" "keyName" "providedValues" (list "path.to.password1" "path.to.password2") "length" 10 "strong" false "chartName" "chartName" "honorProvidedValues" false "context" $) }}
 
 Params:
   - secret - String - Required - Name of the 'Secret' resource where the password is stored.
@@ -80,12 +80,15 @@ Params:
   - failOnNew - Boolean - Optional - Default to true. If set to false, skip errors adding new keys to existing secrets.
   - skipB64enc - Boolean - Optional - Default to false. If set to true, no the secret will not be base64 encrypted.
   - skipQuote - Boolean - Optional - Default to false. If set to true, no quotes will be added around the secret.
+  - honorProvidedValues - Boolean - Optional - Default to false. If set to true, the values in providedValues have higher priority than an existing secret
 The order in which this function returns a secret password:
-  1. Already existing 'Secret' resource
+  1. Password provided via the values.yaml if honorProvidedValues = true
+     (If one of the keys passed to the 'providedValues' parameter to this function is a valid path to a key in the values.yaml and has a value, the value of the first key with a value will be returned)
+  2. Already existing 'Secret' resource
      (If a 'Secret' resource is found under the name provided to the 'secret' parameter to this function and that 'Secret' resource contains a key with the name passed as the 'key' parameter to this function then the value of this existing secret password will be returned)
-  2. Password provided via the values.yaml
+  3. Password provided via the values.yaml if honorProvidedValues = false
      (If one of the keys passed to the 'providedValues' parameter to this function is a valid path to a key in the values.yaml and has a value, the value of the first key with a value will be returned)
-  3. Randomly generated secret password
+  4. Randomly generated secret password
      (A new random secret password with the length specified in the 'length' parameter will be generated and returned)
 
 */}}
@@ -103,30 +106,37 @@ The order in which this function returns a secret password:
     {{- $password = index $secretData .key | b64dec }}
   {{- else if not (eq .failOnNew false) }}
     {{- printf "\nPASSWORDS ERROR: The secret \"%s\" does not contain the key \"%s\"\n" .secret .key | fail -}}
-  {{- else if $providedPasswordValue }}
-    {{- $password = $providedPasswordValue | toString }}
-  {{- end -}}
-{{- else if $providedPasswordValue }}
-  {{- $password = $providedPasswordValue | toString }}
-{{- else }}
-
-  {{- if .context.Values.enabled }}
-    {{- $subchart = $chartName }}
   {{- end -}}
+{{- end }}
 
-  {{- $requiredPassword := dict "valueKey" $providedPasswordKey "secret" .secret "field" .key "subchart" $subchart "context" $.context -}}
-  {{- $requiredPasswordError := include "common.validations.values.single.empty" $requiredPassword -}}
-  {{- $passwordValidationErrors := list $requiredPasswordError -}}
-  {{- include "common.errors.upgrade.passwords.empty" (dict "validationErrors" $passwordValidationErrors "context" $.context) -}}
+{{- if and $providedPasswordValue .honorProvidedValues }}
+  {{- $password = tpl ($providedPasswordValue | toString) .context }}
+{{- end }}
 
-  {{- if .strong }}
-    {{- $subStr := list (lower (randAlpha 1)) (randNumeric 1) (upper (randAlpha 1)) | join "_" }}
-    {{- $password = randAscii $passwordLength }}
-    {{- $password = regexReplaceAllLiteral "\\W" $password "@" | substr 5 $passwordLength }}
-    {{- $password = printf "%s%s" $subStr $password | toString | shuffle }}
+{{- if not $password }}
+  {{- if $providedPasswordValue }}
+    {{- $password = tpl ($providedPasswordValue | toString) .context }}
   {{- else }}
-    {{- $password = randAlphaNum $passwordLength }}
-  {{- end }}
+    {{- if .context.Values.enabled }}
+      {{- $subchart = $chartName }}
+    {{- end -}}
+
+    {{- if not (eq .failOnNew false) }}
+      {{- $requiredPassword := dict "valueKey" $providedPasswordKey "secret" .secret "field" .key "subchart" $subchart "context" $.context -}}
+      {{- $requiredPasswordError := include "common.validations.values.single.empty" $requiredPassword -}}
+      {{- $passwordValidationErrors := list $requiredPasswordError -}}
+      {{- include "common.errors.upgrade.passwords.empty" (dict "validationErrors" $passwordValidationErrors "context" $.context) -}}
+    {{- end }}
+
+    {{- if .strong }}
+      {{- $subStr := list (lower (randAlpha 1)) (randNumeric 1) (upper (randAlpha 1)) | join "_" }}
+      {{- $password = randAscii $passwordLength }}
+      {{- $password = regexReplaceAllLiteral "\\W" $password "@" | substr 5 $passwordLength }}
+      {{- $password = printf "%s%s" $subStr $password | toString | shuffle }}
+    {{- else }}
+      {{- $password = randAlphaNum $passwordLength }}
+    {{- end }}
+  {{- end -}}
 {{- end -}}
 {{- if not .skipB64enc }}
 {{- $password = $password | b64enc }}
index 16405a0..aa75856 100644 (file)
@@ -1,28 +1,21 @@
 {{/*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
 {{/* vim: set filetype=mustache: */}}
+
 {{/*
 Return  the proper Storage Class
 {{ include "common.storage.class" ( dict "persistence" .Values.path.to.the.persistence "global" $) }}
 */}}
 {{- define "common.storage.class" -}}
-
-{{- $storageClass := .persistence.storageClass -}}
-{{- if .global -}}
-    {{- if .global.storageClass -}}
-        {{- $storageClass = .global.storageClass -}}
-    {{- end -}}
-{{- end -}}
-
+{{- $storageClass := (.global).storageClass | default .persistence.storageClass | default (.global).defaultStorageClass | default "" -}}
 {{- if $storageClass -}}
   {{- if (eq "-" $storageClass) -}}
       {{- printf "storageClassName: \"\"" -}}
-  {{- else }}
+  {{- else -}}
       {{- printf "storageClassName: %s" $storageClass -}}
   {{- end -}}
 {{- end -}}
-
 {{- end -}}
index a8ed763..a04f4c1 100644 (file)
@@ -1,5 +1,5 @@
 {{/*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
@@ -36,3 +36,17 @@ Usage:
 {{- end -}}
 {{ $dst | toYaml }}
 {{- end -}}
+
+{{/*
+Merge a list of values that contains template after rendering them.
+Merge precedence is consistent with https://masterminds.github.io/sprig/dicts.html#mergeoverwrite-mustmergeoverwrite
+Usage:
+{{ include "common.tplvalues.merge-overwrite" ( dict "values" (list .Values.path.to.the.Value1 .Values.path.to.the.Value2) "context" $ ) }}
+*/}}
+{{- define "common.tplvalues.merge-overwrite" -}}
+{{- $dst := dict -}}
+{{- range .values -}}
+{{- $dst = include "common.tplvalues.render" (dict "value" . "context" $.context "scope" $.scope) | fromYaml | mergeOverwrite $dst -}}
+{{- end -}}
+{{ $dst | toYaml }}
+{{- end -}}
index 1deefa1..0a5a5bc 100644 (file)
@@ -1,5 +1,5 @@
 {{/*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
index 0f763cd..62c44df 100644 (file)
@@ -1,5 +1,5 @@
 {{/*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
@@ -13,10 +13,37 @@ Usage:
 
 {{- if and (contains "bitnami/" .repository) (not (.tag | toString | regexFind "-r\\d+$|sha256:")) }}
 WARNING: Rolling tag detected ({{ .repository }}:{{ .tag }}), please note that it is strongly recommended to avoid using rolling tags in a production environment.
-+info https://docs.bitnami.com/tutorials/understand-rolling-tags-containers
++info https://techdocs.broadcom.com/us/en/vmware-tanzu/application-catalog/tanzu-application-catalog/services/tac-doc/apps-tutorials-understand-rolling-tags-containers-index.html
 {{- end }}
 {{- end -}}
 
+{{/*
+Warning about replaced images from the original.
+Usage:
+{{ include "common.warnings.modifiedImages" (dict "images" (list .Values.path.to.the.imageRoot) "context" $) }}
+*/}}
+{{- define "common.warnings.modifiedImages" -}}
+{{- $affectedImages := list -}}
+{{- $printMessage := false -}}
+{{- $originalImages := .context.Chart.Annotations.images -}}
+{{- range .images -}}
+  {{- $fullImageName := printf (printf "%s/%s:%s" .registry .repository .tag) -}}
+  {{- if not (contains $fullImageName $originalImages) }}
+    {{- $affectedImages = append $affectedImages (printf "%s/%s:%s" .registry .repository .tag) -}}
+    {{- $printMessage = true -}}
+  {{- end -}}
+{{- end -}}
+{{- if $printMessage }}
+
+⚠ SECURITY WARNING: Original containers have been substituted. This Helm chart was designed, tested, and validated on multiple platforms using a specific set of Bitnami and Tanzu Application Catalog containers. Substituting other containers is likely to cause degraded security and performance, broken chart features, and missing environment variables.
+
+Substituted images detected:
+{{- range $affectedImages }}
+  - {{ . }}
+{{- end }}
+{{- end -}}
+{{- end -}}
+
 {{/*
 Warning about not setting the resource object in all deployments.
 Usage:
index eda9aad..f8fd213 100644 (file)
@@ -1,35 +1,9 @@
 {{/*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
 {{/* vim: set filetype=mustache: */}}
-{{/*
-Validate Cassandra required passwords are not empty.
-
-Usage:
-{{ include "common.validations.values.cassandra.passwords" (dict "secret" "secretName" "subchart" false "context" $) }}
-Params:
-  - secret - String - Required. Name of the secret where Cassandra values are stored, e.g: "cassandra-passwords-secret"
-  - subchart - Boolean - Optional. Whether Cassandra is used as subchart or not. Default: false
-*/}}
-{{- define "common.validations.values.cassandra.passwords" -}}
-  {{- $existingSecret := include "common.cassandra.values.existingSecret" . -}}
-  {{- $enabled := include "common.cassandra.values.enabled" . -}}
-  {{- $dbUserPrefix := include "common.cassandra.values.key.dbUser" . -}}
-  {{- $valueKeyPassword := printf "%s.password" $dbUserPrefix -}}
-
-  {{- if and (or (not $existingSecret) (eq $existingSecret "\"\"")) (eq $enabled "true") -}}
-    {{- $requiredPasswords := list -}}
-
-    {{- $requiredPassword := dict "valueKey" $valueKeyPassword "secret" .secret "field" "cassandra-password" -}}
-    {{- $requiredPasswords = append $requiredPasswords $requiredPassword -}}
-
-    {{- include "common.validations.values.multiple.empty" (dict "required" $requiredPasswords "context" .context) -}}
-
-  {{- end -}}
-{{- end -}}
-
 {{/*
 Auxiliary function to get the right value for existingSecret.
 
index bbb445b..e678a6d 100644 (file)
@@ -1,55 +1,9 @@
 {{/*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
 {{/* vim: set filetype=mustache: */}}
-{{/*
-Validate MongoDB&reg; required passwords are not empty.
-
-Usage:
-{{ include "common.validations.values.mongodb.passwords" (dict "secret" "secretName" "subchart" false "context" $) }}
-Params:
-  - secret - String - Required. Name of the secret where MongoDB&reg; values are stored, e.g: "mongodb-passwords-secret"
-  - subchart - Boolean - Optional. Whether MongoDB&reg; is used as subchart or not. Default: false
-*/}}
-{{- define "common.validations.values.mongodb.passwords" -}}
-  {{- $existingSecret := include "common.mongodb.values.auth.existingSecret" . -}}
-  {{- $enabled := include "common.mongodb.values.enabled" . -}}
-  {{- $authPrefix := include "common.mongodb.values.key.auth" . -}}
-  {{- $architecture := include "common.mongodb.values.architecture" . -}}
-  {{- $valueKeyRootPassword := printf "%s.rootPassword" $authPrefix -}}
-  {{- $valueKeyUsername := printf "%s.username" $authPrefix -}}
-  {{- $valueKeyDatabase := printf "%s.database" $authPrefix -}}
-  {{- $valueKeyPassword := printf "%s.password" $authPrefix -}}
-  {{- $valueKeyReplicaSetKey := printf "%s.replicaSetKey" $authPrefix -}}
-  {{- $valueKeyAuthEnabled := printf "%s.enabled" $authPrefix -}}
-
-  {{- $authEnabled := include "common.utils.getValueFromKey" (dict "key" $valueKeyAuthEnabled "context" .context) -}}
-
-  {{- if and (or (not $existingSecret) (eq $existingSecret "\"\"")) (eq $enabled "true") (eq $authEnabled "true") -}}
-    {{- $requiredPasswords := list -}}
-
-    {{- $requiredRootPassword := dict "valueKey" $valueKeyRootPassword "secret" .secret "field" "mongodb-root-password" -}}
-    {{- $requiredPasswords = append $requiredPasswords $requiredRootPassword -}}
-
-    {{- $valueUsername := include "common.utils.getValueFromKey" (dict "key" $valueKeyUsername "context" .context) }}
-    {{- $valueDatabase := include "common.utils.getValueFromKey" (dict "key" $valueKeyDatabase "context" .context) }}
-    {{- if and $valueUsername $valueDatabase -}}
-        {{- $requiredPassword := dict "valueKey" $valueKeyPassword "secret" .secret "field" "mongodb-password" -}}
-        {{- $requiredPasswords = append $requiredPasswords $requiredPassword -}}
-    {{- end -}}
-
-    {{- if (eq $architecture "replicaset") -}}
-        {{- $requiredReplicaSetKey := dict "valueKey" $valueKeyReplicaSetKey "secret" .secret "field" "mongodb-replica-set-key" -}}
-        {{- $requiredPasswords = append $requiredPasswords $requiredReplicaSetKey -}}
-    {{- end -}}
-
-    {{- include "common.validations.values.multiple.empty" (dict "required" $requiredPasswords "context" .context) -}}
-
-  {{- end -}}
-{{- end -}}
-
 {{/*
 Auxiliary function to get the right value for existingSecret.
 
index ca3953f..fbb65c3 100644 (file)
@@ -1,50 +1,9 @@
 {{/*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
 {{/* vim: set filetype=mustache: */}}
-{{/*
-Validate MySQL required passwords are not empty.
-
-Usage:
-{{ include "common.validations.values.mysql.passwords" (dict "secret" "secretName" "subchart" false "context" $) }}
-Params:
-  - secret - String - Required. Name of the secret where MySQL values are stored, e.g: "mysql-passwords-secret"
-  - subchart - Boolean - Optional. Whether MySQL is used as subchart or not. Default: false
-*/}}
-{{- define "common.validations.values.mysql.passwords" -}}
-  {{- $existingSecret := include "common.mysql.values.auth.existingSecret" . -}}
-  {{- $enabled := include "common.mysql.values.enabled" . -}}
-  {{- $architecture := include "common.mysql.values.architecture" . -}}
-  {{- $authPrefix := include "common.mysql.values.key.auth" . -}}
-  {{- $valueKeyRootPassword := printf "%s.rootPassword" $authPrefix -}}
-  {{- $valueKeyUsername := printf "%s.username" $authPrefix -}}
-  {{- $valueKeyPassword := printf "%s.password" $authPrefix -}}
-  {{- $valueKeyReplicationPassword := printf "%s.replicationPassword" $authPrefix -}}
-
-  {{- if and (or (not $existingSecret) (eq $existingSecret "\"\"")) (eq $enabled "true") -}}
-    {{- $requiredPasswords := list -}}
-
-    {{- $requiredRootPassword := dict "valueKey" $valueKeyRootPassword "secret" .secret "field" "mysql-root-password" -}}
-    {{- $requiredPasswords = append $requiredPasswords $requiredRootPassword -}}
-
-    {{- $valueUsername := include "common.utils.getValueFromKey" (dict "key" $valueKeyUsername "context" .context) }}
-    {{- if not (empty $valueUsername) -}}
-        {{- $requiredPassword := dict "valueKey" $valueKeyPassword "secret" .secret "field" "mysql-password" -}}
-        {{- $requiredPasswords = append $requiredPasswords $requiredPassword -}}
-    {{- end -}}
-
-    {{- if (eq $architecture "replication") -}}
-        {{- $requiredReplicationPassword := dict "valueKey" $valueKeyReplicationPassword "secret" .secret "field" "mysql-replication-password" -}}
-        {{- $requiredPasswords = append $requiredPasswords $requiredReplicationPassword -}}
-    {{- end -}}
-
-    {{- include "common.validations.values.multiple.empty" (dict "required" $requiredPasswords "context" .context) -}}
-
-  {{- end -}}
-{{- end -}}
-
 {{/*
 Auxiliary function to get the right value for existingSecret.
 
index 8c9aa57..51d4716 100644 (file)
@@ -1,38 +1,9 @@
 {{/*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
 {{/* vim: set filetype=mustache: */}}
-{{/*
-Validate PostgreSQL required passwords are not empty.
-
-Usage:
-{{ include "common.validations.values.postgresql.passwords" (dict "secret" "secretName" "subchart" false "context" $) }}
-Params:
-  - secret - String - Required. Name of the secret where postgresql values are stored, e.g: "postgresql-passwords-secret"
-  - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false
-*/}}
-{{- define "common.validations.values.postgresql.passwords" -}}
-  {{- $existingSecret := include "common.postgresql.values.existingSecret" . -}}
-  {{- $enabled := include "common.postgresql.values.enabled" . -}}
-  {{- $valueKeyPostgresqlPassword := include "common.postgresql.values.key.postgressPassword" . -}}
-  {{- $valueKeyPostgresqlReplicationEnabled := include "common.postgresql.values.key.replicationPassword" . -}}
-  {{- if and (or (not $existingSecret) (eq $existingSecret "\"\"")) (eq $enabled "true") -}}
-    {{- $requiredPasswords := list -}}
-    {{- $requiredPostgresqlPassword := dict "valueKey" $valueKeyPostgresqlPassword "secret" .secret "field" "postgresql-password" -}}
-    {{- $requiredPasswords = append $requiredPasswords $requiredPostgresqlPassword -}}
-
-    {{- $enabledReplication := include "common.postgresql.values.enabled.replication" . -}}
-    {{- if (eq $enabledReplication "true") -}}
-        {{- $requiredPostgresqlReplicationPassword := dict "valueKey" $valueKeyPostgresqlReplicationEnabled "secret" .secret "field" "postgresql-replication-password" -}}
-        {{- $requiredPasswords = append $requiredPasswords $requiredPostgresqlReplicationPassword -}}
-    {{- end -}}
-
-    {{- include "common.validations.values.multiple.empty" (dict "required" $requiredPasswords "context" .context) -}}
-  {{- end -}}
-{{- end -}}
-
 {{/*
 Auxiliary function to decide whether evaluate global values.
 
index fc0d208..9fedfef 100644 (file)
@@ -1,43 +1,10 @@
 {{/*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
 
 {{/* vim: set filetype=mustache: */}}
-{{/*
-Validate Redis&reg; required passwords are not empty.
-
-Usage:
-{{ include "common.validations.values.redis.passwords" (dict "secret" "secretName" "subchart" false "context" $) }}
-Params:
-  - secret - String - Required. Name of the secret where redis values are stored, e.g: "redis-passwords-secret"
-  - subchart - Boolean - Optional. Whether redis is used as subchart or not. Default: false
-*/}}
-{{- define "common.validations.values.redis.passwords" -}}
-  {{- $enabled := include "common.redis.values.enabled" . -}}
-  {{- $valueKeyPrefix := include "common.redis.values.keys.prefix" . -}}
-  {{- $standarizedVersion := include "common.redis.values.standarized.version" . }}
-
-  {{- $existingSecret := ternary (printf "%s%s" $valueKeyPrefix "auth.existingSecret") (printf "%s%s" $valueKeyPrefix "existingSecret") (eq $standarizedVersion "true") }}
-  {{- $existingSecretValue := include "common.utils.getValueFromKey" (dict "key" $existingSecret "context" .context) }}
-
-  {{- $valueKeyRedisPassword := ternary (printf "%s%s" $valueKeyPrefix "auth.password") (printf "%s%s" $valueKeyPrefix "password") (eq $standarizedVersion "true") }}
-  {{- $valueKeyRedisUseAuth := ternary (printf "%s%s" $valueKeyPrefix "auth.enabled") (printf "%s%s" $valueKeyPrefix "usePassword") (eq $standarizedVersion "true") }}
-
-  {{- if and (or (not $existingSecret) (eq $existingSecret "\"\"")) (eq $enabled "true") -}}
-    {{- $requiredPasswords := list -}}
-
-    {{- $useAuth := include "common.utils.getValueFromKey" (dict "key" $valueKeyRedisUseAuth "context" .context) -}}
-    {{- if eq $useAuth "true" -}}
-      {{- $requiredRedisPassword := dict "valueKey" $valueKeyRedisPassword "secret" .secret "field" "redis-password" -}}
-      {{- $requiredPasswords = append $requiredPasswords $requiredRedisPassword -}}
-    {{- end -}}
-
-    {{- include "common.validations.values.multiple.empty" (dict "required" $requiredPasswords "context" .context) -}}
-  {{- end -}}
-{{- end -}}
-
 {{/*
 Auxiliary function to get the right value for enabled redis.
 
index 36b8aba..de2cac5 100644 (file)
@@ -1,9 +1,8 @@
-# Copyright VMware, Inc.
+# Copyright Broadcom, Inc. All Rights Reserved.
 # SPDX-License-Identifier: APACHE-2.0
 
 ## bitnami/common
 ## It is required by CI/CD tools and processes.
 ## @skip exampleValue
 ##
-
 exampleValue: common-chart
index 89a693e..2c47d5f 100644 (file)
@@ -2,6 +2,8 @@ CHART NAME: {{ .Chart.Name }}
 CHART VERSION: {{ .Chart.Version }}
 APP VERSION: {{ .Chart.AppVersion }}
 
+Did you know there are enterprise versions of the Bitnami catalog? For enhanced secure software supply chain features, unlimited pulls from Docker, LTS support, or application customization, see Bitnami Premium or Tanzu Application Catalog. See https://www.arrow.com/globalecs/na/vendors/bitnami for more information.
+
 {{- if .Values.diagnosticMode.enabled }}
 The chart has been deployed in diagnostic mode. All probes have been disabled and the command has been overwritten with:
 
@@ -33,38 +35,6 @@ In order to replicate the container startup scripts execute this command:
 {{- $mongoList = append $mongoList (printf "%s-%d.%s-headless.%s.svc.%s:%d" $fullname $i $fullname $releaseNamespace $clusterDomain $portNumber) }}
 {{- end }}
 
-{{- if and (eq .Values.architecture "replicaset") .Values.externalAccess.enabled (not .Values.externalAccess.autoDiscovery.enabled) (not (eq $replicaCount $loadBalancerIPListLength )) (eq .Values.externalAccess.service.type "LoadBalancer") }}
-
-####################################################################################
-### ERROR: You enabled external access to MongoDB&reg; nodes without specifying  ###
-###   the array of load balancer IPs for MongoDB&reg; nodes.                     ###
-####################################################################################
-
-This deployment will be incomplete until you configure the array of load balancer
-IPs for MongoDB&reg; nodes. To complete your deployment follow the steps below:
-
-1. Wait for the load balancer IPs (it may take a few minutes for them to be available):
-
-    kubectl get svc --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ template "mongodb.name" . }},app.kubernetes.io/instance={{ .Release.Name }},app.kubernetes.io/component=mongodb" -w
-
-2. Obtain the load balancer IPs and upgrade your chart:
-
-    {{- range $e, $i := until $replicaCount }}
-    LOAD_BALANCER_IP_{{ add $i 1 }}="$(kubectl get svc --namespace {{ $releaseNamespace }} {{ $fullname }}-{{ $i }}-external -o jsonpath='{.status.loadBalancer.ingress[0].ip}')"
-    {{- end }}
-
-3. Upgrade you chart:
-
-    helm upgrade --namespace {{ .Release.Namespace }} {{ .Release.Name }} oci://registry-1.docker.io/bitnamicharts/{{ .Chart.Name }} \
-      --set mongodb.replicaCount={{ $replicaCount }} \
-      --set mongodb.externalAccess.enabled=true \
-      {{- range $i, $e := until $replicaCount }}
-      --set mongodb.externalAccess.service.loadBalancerIPs[{{ $i }}]=$LOAD_BALANCER_IP_{{ add $i 1 }} \
-      {{- end }}
-      --set mongodb.externalAccess.service.type=LoadBalancer
-
-{{- else }}
-
 {{- if and (or (and (eq .Values.architecture "standalone") (or (eq .Values.service.type "LoadBalancer") (eq .Values.service.type "NodePort"))) (and (eq .Values.architecture "replicaset") .Values.externalAccess.enabled)) (not .Values.auth.enabled) }}
 -------------------------------------------------------------------------------
  WARNING
@@ -72,7 +42,7 @@ IPs for MongoDB&reg; nodes. To complete your deployment follow the steps below:
     By not enabling "mongodb.auth.enabled" you have most likely exposed the
     MongoDB&reg; service externally without any authentication mechanism.
 
-    For security reasons, we strongly suggest that you enable authentiation
+    For security reasons, we strongly suggest that you enable authentication
     setting the "mongodb.auth.enabled" parameter to "true".
 
 -------------------------------------------------------------------------------
@@ -181,7 +151,6 @@ To connect to your database from outside the cluster execute the following comma
 
 {{- end }}
 {{- end }}
-{{- end }}
 
 {{- if .Values.metrics.enabled }}
 
@@ -201,3 +170,5 @@ Then, open the obtained URL in a browser.
 {{- include "common.warnings.rollingTag" .Values.tls.image }}
 {{- include "mongodb.validateValues" . }}
 {{- include "common.warnings.resources" (dict "sections" (list "arbiter" "externalAccess.autoDiscovery" "hidden" "metrics" "" "tls" "volumePermissions") "context" $) }}
+{{- include "common.warnings.modifiedImages" (dict "images" (list .Values.image .Values.tls.image .Values.externalAccess.autoDiscovery.image .Values.externalAccess.dnsCheck.image .Values.volumePermissions.image .Values.metrics.image) "context" $) }}
+{{- include "common.errors.insecureImages" (dict "images" (list .Values.image .Values.tls.image .Values.externalAccess.autoDiscovery.image .Values.externalAccess.dnsCheck.image .Values.volumePermissions.image .Values.metrics.image) "context" $) }}
index b6bbb1f..5b40e14 100644 (file)
@@ -1,5 +1,5 @@
 {{/*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
@@ -46,6 +46,17 @@ Create a default mongo arbiter service name which can be overridden.
     {{- end }}
 {{- end }}
 
+{{/*
+Create a default mongo hidden service name which can be overridden.
+*/}}
+{{- define "mongodb.hidden.service.nameOverride" -}}
+    {{- if and .Values.hidden.service .Values.hidden.service.nameOverride -}}
+        {{- print .Values.hidden.service.nameOverride -}}
+    {{- else -}}
+        {{- printf "%s-hidden-headless" (include "mongodb.fullname" .) -}}
+    {{- end }}
+{{- end }}
+
 {{/*
 Return the proper MongoDB&reg; image name
 */}}
@@ -74,6 +85,13 @@ Return the proper image name (for the init container auto-discovery image)
 {{- include "common.images.image" (dict "imageRoot" .Values.externalAccess.autoDiscovery.image "global" .Values.global) -}}
 {{- end -}}
 
+{{/*
+Return the proper image name (for the init container dns-check image)
+*/}}
+{{- define "mongodb.externalAccess.dnsCheck.image" -}}
+{{- include "common.images.image" (dict "imageRoot" .Values.externalAccess.dnsCheck.image "global" .Values.global) -}}
+{{- end -}}
+
 {{/*
 Return the proper image name (for the TLS Certs image)
 */}}
@@ -85,7 +103,7 @@ Return the proper image name (for the TLS Certs image)
 Return the proper Docker Image Registry Secret Names
 */}}
 {{- define "mongodb.imagePullSecrets" -}}
-{{- include "common.images.renderPullSecrets" (dict "images" (list .Values.image .Values.metrics.image .Values.volumePermissions.image .Values.tls.image) "context" $) -}}
+{{- include "common.images.renderPullSecrets" (dict "images" (list .Values.image .Values.metrics.image .Values.volumePermissions.image .Values.tls.image .Values.externalAccess.dnsCheck.image .Values.externalAccess.autoDiscovery.image) "context" $) -}}
 {{- end -}}
 
 {{/*
@@ -210,17 +228,181 @@ Return true if a secret object should be created for MongoDB&reg;
 {{- end -}}
 {{- end -}}
 
+{{/*
+Return true if a secret object should be created for MongoDB
+*/}}
+{{- define "mongodb.createPreviousSecret" -}}
+{{- if and .Values.passwordUpdateJob.previousPasswords.rootPassword (not .Values.passwordUpdateJob.previousPasswords.existingSecret) }}
+    {{- true -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Return the secret with previous MongoDB credentials
+*/}}
+{{- define "mongodb.update-job.previousSecretName" -}}
+    {{- if .Values.passwordUpdateJob.previousPasswords.existingSecret -}}
+        {{- /* The secret with the new password is managed externally */ -}}
+        {{- tpl .Values.passwordUpdateJob.previousPasswords.existingSecret $ -}}
+    {{- else if .Values.passwordUpdateJob.previousPasswords.rootPassword -}}
+        {{- /* The secret with the new password is managed externally */ -}}
+        {{- printf "%s-previous-secret" (include "common.names.fullname" .) | trunc 63 | trimSuffix "-" -}}
+    {{- else -}}
+        {{- /* The secret with the new password is managed by the helm chart. We use the current secret name as it has the old password */ -}}
+        {{- include "common.names.fullname" . -}}
+    {{- end -}}
+{{- end -}}
+
+{{/*
+Return the secret with new MongoDB credentials
+*/}}
+{{- define "mongodb.update-job.newSecretName" -}}
+    {{- if and (not .Values.passwordUpdateJob.previousPasswords.existingSecret) (not .Values.passwordUpdateJob.previousPasswords.rootPassword) -}}
+        {{- /* The secret with the new password is managed by the helm chart. We create a new secret as the current one has the old password */ -}}
+        {{- printf "%s-new-secret" (include "common.names.fullname" .) | trunc 63 | trimSuffix "-" -}}
+    {{- else -}}
+        {{- /* The secret with the new password is managed externally */ -}}
+        {{- include "mongodb.secretName" . -}}
+    {{- end -}}
+{{- end -}}
+
 {{/*
 Get the initialization scripts ConfigMap name.
 */}}
 {{- define "mongodb.initdbScriptsCM" -}}
 {{- if .Values.initdbScriptsConfigMap -}}
-{{- printf "%s" .Values.initdbScriptsConfigMap -}}
+{{- printf "%s" (tpl .Values.initdbScriptsConfigMap $) -}}
 {{- else -}}
 {{- printf "%s-init-scripts" (include "mongodb.fullname" .) -}}
 {{- end -}}
 {{- end -}}
 
+{{/*
+Get initial primary host to configure MongoDB cluster.
+*/}}
+{{- define "mongodb.initialPrimaryHost" -}}
+{{ ternary ( printf "%s-0.%s.$(MY_POD_NAMESPACE).svc.%s" (include "mongodb.fullname" .) (include "mongodb.service.nameOverride" .) .Values.clusterDomain ) ( first .Values.externalAccess.service.publicNames ) ( empty .Values.externalAccess.service.publicNames ) }}
+{{- end -}}
+
+{{/*
+Init container definition to change/establish volume permissions.
+*/}}
+{{- define "mongodb.initContainer.volumePermissions" }}
+- name: volume-permissions
+  image: {{ include "mongodb.volumePermissions.image" . }}
+  imagePullPolicy: {{ .Values.volumePermissions.image.pullPolicy | quote }}
+  command:
+    - /bin/bash
+  args:
+    - -ec
+    - |
+      mkdir -p {{ printf "%s/%s" .Values.persistence.mountPath (default "" .Values.persistence.subPath) }}
+      chown {{ .Values.containerSecurityContext.runAsUser }}:{{ .Values.podSecurityContext.fsGroup }} {{ printf "%s/%s" .Values.persistence.mountPath (default "" .Values.persistence.subPath) }}
+      find  {{ printf "%s/%s" .Values.persistence.mountPath (default "" .Values.persistence.subPath) }} -mindepth 1 -maxdepth 1 -not -name ".snapshot" -not -name "lost+found" | xargs -r chown -R {{ .Values.containerSecurityContext.runAsUser }}:{{ .Values.podSecurityContext.fsGroup }}
+  {{- if eq ( toString ( .Values.volumePermissions.securityContext.runAsUser )) "auto" }}
+  securityContext: {{- omit .Values.volumePermissions.securityContext "runAsUser" | toYaml | nindent 12 }}
+  {{- else }}
+  securityContext: {{- .Values.volumePermissions.securityContext | toYaml | nindent 12 }}
+  {{- end }}
+  {{- if .Values.volumePermissions.resources }}
+  resources: {{- include "common.tplvalues.render" (dict "value" .Values.volumePermissions.resources "context" $) | nindent 12 }}
+  {{- else if ne .Values.volumePermissions.resourcesPreset "none" }}
+  resources: {{- include "common.resources.preset" (dict "type" .Values.volumePermissions.resourcesPreset) | nindent 12 }}
+  {{- end }}
+  volumeMounts:
+    - name: empty-dir
+      mountPath: /tmp
+      subPath: tmp-dir
+    - name: {{ .Values.persistence.name | default "datadir" }}
+      mountPath: {{ .Values.persistence.mountPath }}
+{{- end -}}
+
+{{/*
+Init container definition to recover log dir.
+*/}}
+{{- define "mongodb.initContainer.prepareLogDir" }}
+- name: log-dir
+  image: {{ include "mongodb.image" . }}
+  imagePullPolicy: {{ .Values.image.pullPolicy | quote }}
+  command:
+    - /bin/bash
+  args:
+    - -ec
+    - |
+      ln -sf /dev/stdout "/opt/bitnami/mongodb/logs/mongodb.log"
+  {{- if .Values.containerSecurityContext.enabled }}
+  securityContext: {{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.containerSecurityContext "context" $) | nindent 12 }}
+  {{- end }}
+  {{- if .Values.resources }}
+  resources: {{- include "common.tplvalues.render" (dict "value" .Values.resources "context" $) | nindent 12 }}
+  {{- else if ne .Values.resourcesPreset "none" }}
+  resources: {{- include "common.resources.preset" (dict "type" .Values.resourcesPreset) | nindent 12 }}
+  {{- end }}
+  volumeMounts:
+    - name: empty-dir
+      mountPath: /opt/bitnami/mongodb/logs
+      subPath: app-logs-dir
+{{- end -}}
+
+{{/*
+Init container definition to get external IP addresses.
+*/}}
+{{- define "mongodb.initContainers.autoDiscovery" -}}
+- name: auto-discovery
+  image: {{ include "mongodb.externalAccess.autoDiscovery.image" . }}
+  imagePullPolicy: {{ .Values.externalAccess.autoDiscovery.image.pullPolicy | quote }}
+  # We need the service account token for contacting the k8s API
+  command:
+    - /scripts/auto-discovery.sh
+  env:
+    - name: MY_POD_NAME
+      valueFrom:
+        fieldRef:
+          fieldPath: metadata.name
+    - name: SHARED_FILE
+      value: "/shared/info.txt"
+  {{- if .Values.externalAccess.autoDiscovery.resources }}
+  resources: {{- include "common.tplvalues.render" (dict "value" .Values.externalAccess.autoDiscovery.resources "context" $) | nindent 12 }}
+  {{- else if ne .Values.externalAccess.autoDiscovery.resourcesPreset "none" }}
+  resources: {{- include "common.resources.preset" (dict "type" .Values.externalAccess.autoDiscovery.resourcesPreset) | nindent 12 }}
+  {{- end }}
+  volumeMounts:
+    - name: shared
+      mountPath: /shared
+    - name: scripts
+      mountPath: /scripts/auto-discovery.sh
+      subPath: auto-discovery.sh
+    - name: empty-dir
+      mountPath: /tmp
+      subPath: tmp-dir
+{{- end -}}
+
+{{/*
+Init container definition to wait external DNS names.
+*/}}
+{{- define "mongodb.initContainers.dnsCheck" -}}
+- name: dns-check
+  image: {{ include "mongodb.externalAccess.dnsCheck.image" . }}
+  imagePullPolicy: {{ .Values.externalAccess.dnsCheck.image.pullPolicy | quote }}
+  command:
+    - /bin/bash
+  args:
+    - -ec
+    - |
+      # MONGODB_INITIAL_PRIMARY_HOST should be resolvable
+      while ! (getent ahosts "{{ include "mongodb.initialPrimaryHost" . }}" | grep STREAM); do
+        sleep 10
+      done
+  {{- if .Values.containerSecurityContext.enabled }}
+  securityContext: {{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.containerSecurityContext "context" $) | nindent 12 }}
+  {{- end }}
+  {{- if .Values.externalAccess.dnsCheck.resources }}
+  resources: {{- toYaml .Values.externalAccess.dnsCheck.resources | nindent 12 }}
+  {{- else if ne .Values.externalAccess.dnsCheck.resourcesPreset "none" }}
+  resources: {{- include "common.resources.preset" (dict "type" .Values.externalAccess.dnsCheck.resourcesPreset) | nindent 12 }}
+  {{- end }}
+{{- end -}}
+
 {{/*
 Return true if the Arbiter should be deployed
 */}}
@@ -294,6 +476,7 @@ Compile all warnings into a single message, and call fail.
 {{- $messages := append $messages (include "mongodb.validateValues.loadBalancerIPsListLength" .) -}}
 {{- $messages := append $messages (include "mongodb.validateValues.nodePortListLength" .) -}}
 {{- $messages := append $messages (include "mongodb.validateValues.externalAccessAutoDiscoveryRBAC" .) -}}
+{{- $messages := append $messages (include "mongodb.validateValues.externalAccessAutoDiscoverySA" .) -}}
 {{- $messages := append $messages (include "mongodb.validateValues.replicaset.existingSecrets" .) -}}
 {{- $messages := append $messages (include "mongodb.validateValues.hidden.existingSecrets" .) -}}
 {{- $messages := without $messages "" -}}
@@ -364,9 +547,18 @@ Validate values of MongoDB&reg; - number of replicas must be the same than LoadB
 {{- define "mongodb.validateValues.loadBalancerIPsListLength" -}}
 {{- $replicaCount := int .Values.replicaCount }}
 {{- $loadBalancerListLength := len .Values.externalAccess.service.loadBalancerIPs }}
-{{- if and (eq .Values.architecture "replicaset") .Values.externalAccess.enabled (not .Values.externalAccess.autoDiscovery.enabled ) (eq .Values.externalAccess.service.type "LoadBalancer") (not (eq $replicaCount $loadBalancerListLength )) -}}
+{{- $publicNamesListLength := len .Values.externalAccess.service.publicNames }}
+{{- if and (eq .Values.architecture "replicaset") .Values.externalAccess.enabled (eq .Values.externalAccess.service.type "LoadBalancer") -}}
+{{- if and (not .Values.externalAccess.autoDiscovery.enabled) (eq $loadBalancerListLength 0) (eq $publicNamesListLength 0) -}}
+mongodb: .Values.externalAccess.service.loadBalancerIPs, .Values.externalAccess.service.publicNames
+    externalAccess.service.loadBalancerIPs, externalAccess.service.publicNames or externalAccess.autoDiscovery.enabled are required when externalAccess is enabled.
+{{- else if and (not .Values.externalAccess.autoDiscovery.enabled) (not (eq $replicaCount $loadBalancerListLength )) (not (eq $loadBalancerListLength 0)) -}}
 mongodb: .Values.externalAccess.service.loadBalancerIPs
-    Number of replicas and loadBalancerIPs array length must be the same.
+    Number of replicas ({{ $replicaCount }}) and loadBalancerIPs array length ({{ $loadBalancerListLength }}) must be the same.
+{{- else if and (not .Values.externalAccess.autoDiscovery.enabled) (not (eq $replicaCount $publicNamesListLength )) (not (eq $publicNamesListLength 0)) -}}
+mongodb: .Values.externalAccess.service.publicNames
+    Number of replicas ({{ $replicaCount }}) and publicNames array length ({{ $publicNamesListLength }}) must be the same.
+{{- end -}}
 {{- end -}}
 {{- end -}}
 
@@ -376,9 +568,14 @@ Validate values of MongoDB&reg; - number of replicas must be the same than NodeP
 {{- define "mongodb.validateValues.nodePortListLength" -}}
 {{- $replicaCount := int .Values.replicaCount }}
 {{- $nodePortListLength := len .Values.externalAccess.service.nodePorts }}
-{{- if and (eq .Values.architecture "replicaset") .Values.externalAccess.enabled (eq .Values.externalAccess.service.type "NodePort") (not (eq $replicaCount $nodePortListLength )) -}}
+{{- if and (eq .Values.architecture "replicaset") .Values.externalAccess.enabled (eq .Values.externalAccess.service.type "NodePort") -}}
+{{- if and (not .Values.externalAccess.autoDiscovery.enabled) (eq $nodePortListLength 0) -}}
+mongodb: .Values.externalAccess.service.nodePorts
+    externalAccess.service.nodePorts or externalAccess.autoDiscovery.enabled are required when externalAccess is enabled.
+{{- else if and (not .Values.externalAccess.autoDiscovery.enabled) (not (eq $replicaCount $nodePortListLength )) -}}
 mongodb: .Values.externalAccess.service.nodePorts
-    Number of replicas and nodePorts array length must be the same.
+    Number of replicas ({{ $replicaCount }}) and nodePorts ({{ $nodePortListLength }}) array length must be the same.
+{{- end -}}
 {{- end -}}
 {{- end -}}
 
@@ -395,6 +592,19 @@ mongodb: rbac.create
 {{- end -}}
 {{- end -}}
 
+{{/*
+Validate values of MongoDB&reg; - automountServiceAccountToken should be enabled when autoDiscovery is enabled
+*/}}
+{{- define "mongodb.validateValues.externalAccessAutoDiscoverySA" -}}
+{{- if and (eq .Values.architecture "replicaset") .Values.externalAccess.enabled .Values.externalAccess.autoDiscovery.enabled (not .Values.automountServiceAccountToken ) }}
+mongodb: automountServiceAccountToken
+    By specifying "externalAccess.enabled=true" and "externalAccess.autoDiscovery.enabled=true"
+    an initContainer will be used to autodetect the external IPs/ports by querying the
+    K8s API. Please note this initContainer requires a service account to access K8S API.
+    You can attach it to the pod by specifying "--set automountServiceAccountToken=true".
+{{- end -}}
+{{- end -}}
+
 {{/*
 Validate values of MongoDB&reg; - Number of replicaset secrets must be the same than number of replicaset nodes.
 */}}
@@ -434,24 +644,13 @@ Validate values of MongoDB&reg; exporter URI string - auth.enabled and/or tls.en
     {{- end -}}
     {{- if .Values.metrics.username -}}
         {{- $uriAuth := ternary "$(echo $MONGODB_METRICS_USERNAME | sed -r \"s/@/%40/g;s/:/%3A/g\"):$(echo $MONGODB_METRICS_PASSWORD | sed -r \"s/@/%40/g;s/:/%3A/g\")@" "" .Values.auth.enabled -}}
-        {{- printf "mongodb://%slocalhost:%d/admin?%s" $uriAuth (int .Values.containerPorts.mongodb) $tlsArgs -}}
+        {{- printf "mongodb://%s$(hostname -s):%d/admin?%s" $uriAuth (int .Values.containerPorts.mongodb) $tlsArgs -}}
     {{- else -}}
         {{- $uriAuth := ternary "$MONGODB_ROOT_USER:$(echo $MONGODB_ROOT_PASSWORD | sed -r \"s/@/%40/g;s/:/%3A/g\")@" "" .Values.auth.enabled -}}
-        {{- printf "mongodb://%slocalhost:%d/admin?%s" $uriAuth (int .Values.containerPorts.mongodb) $tlsArgs -}}
+        {{- printf "mongodb://%s$(hostname -s):%d/admin?%s" $uriAuth (int .Values.containerPorts.mongodb) $tlsArgs -}}
     {{- end -}}
 {{- end -}}
 
-{{/*
-Return the appropriate apiGroup for PodSecurityPolicy.
-*/}}
-{{- define "podSecurityPolicy.apiGroup" -}}
-{{- if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
-{{- print "policy" -}}
-{{- else -}}
-{{- print "extensions" -}}
-{{- end -}}
-{{- end -}}
-
 {{/*
 Return true if a TLS secret object should be created
 */}}
index 79fbfe5..a3b3f4c 100644 (file)
@@ -1,5 +1,5 @@
 {{- /*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
index 003bebb..088eaf4 100644 (file)
@@ -1,5 +1,5 @@
 {{- /*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
index 37b5c19..0799eea 100644 (file)
@@ -1,5 +1,5 @@
 {{- /*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
@@ -18,8 +18,8 @@ spec:
   {{- if .Values.arbiter.pdb.minAvailable }}
   minAvailable: {{ .Values.arbiter.pdb.minAvailable }}
   {{- end }}
-  {{- if .Values.arbiter.pdb.maxUnavailable }}
-  maxUnavailable: {{ .Values.arbiter.pdb.maxUnavailable }}
+  {{- if or .Values.arbiter.pdb.maxUnavailable (not .Values.arbiter.pdb.minAvailable) }}
+  maxUnavailable: {{ .Values.arbiter.pdb.maxUnavailable | default 1 }}
   {{- end }}
   {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.arbiter.podLabels .Values.commonLabels ) "context" . ) }}
   selector:
index 269863f..d89d583 100644 (file)
@@ -1,5 +1,5 @@
 {{- /*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
@@ -19,6 +19,7 @@ metadata:
 spec:
   serviceName: {{ include "mongodb.arbiter.service.nameOverride" . }}
   podManagementPolicy: {{ .Values.arbiter.podManagementPolicy }}
+  replicas: 1
   {{- if .Values.arbiter.updateStrategy }}
   updateStrategy: {{- toYaml .Values.arbiter.updateStrategy | nindent 4 }}
   {{- end }}
@@ -30,11 +31,14 @@ spec:
     metadata:
       labels: {{- include "common.labels.standard" ( dict "customLabels" $podLabels "context" $ ) | nindent 8 }}
         app.kubernetes.io/component: arbiter
-      {{- if or (include "mongodb.arbiter.createConfigmap" .) .Values.arbiter.podAnnotations }}
+      {{- if or (include "mongodb.arbiter.createConfigmap" .) .Values.arbiter.podAnnotations .Values.passwordUpdateJob.enabled }}
       annotations:
         {{- if (include "mongodb.arbiter.createConfigmap" .) }}
         checksum/configuration: {{ include (print $.Template.BasePath "/arbiter/configmap.yaml") . | sha256sum }}
         {{- end }}
+        {{- if .Values.passwordUpdateJob.enabled }}
+        charts.bitnami.com/password-last-update: {{ now | date "20060102150405" | quote }}
+        {{- end }}
         {{- if .Values.arbiter.podAnnotations }}
         {{- include "common.tplvalues.render" (dict "value" .Values.arbiter.podAnnotations "context" $) | nindent 8 }}
         {{- end }}
@@ -49,8 +53,8 @@ spec:
       affinity: {{- include "common.tplvalues.render" (dict "value" .Values.arbiter.affinity "context" $) | nindent 8 }}
       {{- else }}
       affinity:
-        podAffinity: {{- include "common.affinities.pods" (dict "type" .Values.arbiter.podAffinityPreset "component" "arbiter" "customLabels" $podLabels "topologyKey" .Values.topologyKey "context" $) | nindent 10 }}
-        podAntiAffinity: {{- include "common.affinities.pods" (dict "type" .Values.arbiter.podAntiAffinityPreset "component" "arbiter" "customLabels" $podLabels "topologyKey" .Values.topologyKey "context" $) | nindent 10 }}
+        podAffinity: {{- include "common.affinities.pods" (dict "type" .Values.arbiter.podAffinityPreset "component" "mongodb" "customLabels" $podLabels "topologyKey" .Values.topologyKey "context" $) | nindent 10 }}
+        podAntiAffinity: {{- include "common.affinities.pods" (dict "type" .Values.arbiter.podAntiAffinityPreset "component" "mongodb" "customLabels" $podLabels "topologyKey" .Values.topologyKey "context" $) | nindent 10 }}
         nodeAffinity: {{- include "common.affinities.nodes" (dict "type" .Values.arbiter.nodeAffinityPreset.type "key" .Values.arbiter.nodeAffinityPreset.key "values" .Values.arbiter.nodeAffinityPreset.values) | nindent 10 }}
       {{- end }}
       {{- if .Values.arbiter.nodeSelector }}
@@ -73,7 +77,7 @@ spec:
       runtimeClassName: {{ .Values.arbiter.runtimeClassName }}
       {{- end }}
       {{- if .Values.arbiter.podSecurityContext.enabled }}
-      securityContext: {{- omit .Values.arbiter.podSecurityContext "enabled" | toYaml | nindent 8 }}
+      securityContext: {{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.arbiter.podSecurityContext "context" $) | nindent 8 }}
       {{- end }}
       {{ if .Values.arbiter.terminationGracePeriodSeconds }}
       terminationGracePeriodSeconds: {{ .Values.arbiter.terminationGracePeriodSeconds }}
@@ -83,6 +87,9 @@ spec:
         {{- if .Values.arbiter.initContainers }}
         {{- include "common.tplvalues.render" (dict "value" .Values.arbiter.initContainers "context" $) | nindent 8 }}
         {{- end }}
+        {{- if and .Values.externalAccess.enabled .Values.externalAccess.service.publicNames }}
+        {{- include "mongodb.initContainers.dnsCheck" . | nindent 8 }}
+        {{- end }}
         {{- if and .Values.tls.enabled .Values.arbiter.enabled }}
         - name: generate-tls-certs
           image: {{ include "mongodb.tls.image" . }}
@@ -125,7 +132,7 @@ spec:
           image: {{ include "mongodb.image" . }}
           imagePullPolicy: {{ .Values.image.pullPolicy | quote }}
           {{- if .Values.arbiter.containerSecurityContext.enabled }}
-          securityContext: {{- omit .Values.arbiter.containerSecurityContext "enabled" | toYaml | nindent 12 }}
+          securityContext: {{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.arbiter.containerSecurityContext "context" $) | nindent 12 }}
           {{- end }}
           {{- if .Values.diagnosticMode.enabled }}
           command: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.command "context" $) | nindent 12 }}
@@ -151,16 +158,14 @@ spec:
               valueFrom:
                 fieldRef:
                   fieldPath: metadata.namespace
-            - name: K8S_SERVICE_NAME
-              value: "{{ include "mongodb.arbiter.service.nameOverride" . }}"
             - name: MONGODB_REPLICA_SET_MODE
               value: "arbiter"
             - name: MONGODB_INITIAL_PRIMARY_HOST
-              value: {{ printf "%s-0.%s.$(MY_POD_NAMESPACE).svc.%s" (include "mongodb.fullname" .) (include "mongodb.service.nameOverride" .) .Values.clusterDomain }}
+              value: {{ include "mongodb.initialPrimaryHost" . | quote }}
             - name: MONGODB_REPLICA_SET_NAME
               value: {{ .Values.replicaSetName | quote }}
             - name: MONGODB_ADVERTISED_HOSTNAME
-              value: "$(MY_POD_NAME).$(K8S_SERVICE_NAME).$(MY_POD_NAMESPACE).svc.{{ .Values.clusterDomain }}"
+              value: "$(MY_POD_NAME).{{ include "mongodb.arbiter.service.nameOverride" . }}.$(MY_POD_NAMESPACE).svc.{{ .Values.clusterDomain }}"
             - name: MONGODB_PORT_NUMBER
               value: {{ .Values.arbiter.containerPorts.mongodb | quote }}
             - name: MONGODB_ENABLE_IPV6
@@ -168,6 +173,12 @@ spec:
             {{- if .Values.auth.enabled }}
             - name: MONGODB_INITIAL_PRIMARY_ROOT_USER
               value: {{ .Values.auth.rootUser | quote }}
+            {{- if .Values.usePasswordFiles }}
+            - name: MONGODB_INITIAL_PRIMARY_ROOT_PASSWORD_FILE
+              value: "/opt/bitnami/mongodb/secrets/mongodb-root-password"
+            - name: MONGODB_REPLICA_SET_KEY_FILE
+              value: "/opt/bitnami/mongodb/secrets/mongodb-replica-set-key"
+            {{- else }}
             - name: MONGODB_INITIAL_PRIMARY_ROOT_PASSWORD
               valueFrom:
                 secretKeyRef:
@@ -179,6 +190,7 @@ spec:
                   name: {{ include "mongodb.secretName" . }}
                   key: mongodb-replica-set-key
             {{- end }}
+            {{- end }}
             - name: ALLOW_EMPTY_PASSWORD
               value: {{ ternary "no" "yes" .Values.auth.enabled | quote }}
             {{- $extraFlags := .Values.arbiter.extraFlags | join " " -}}
@@ -218,8 +230,10 @@ spec:
           livenessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.arbiter.customLivenessProbe "context" $) | nindent 12 }}
           {{- else if .Values.arbiter.livenessProbe.enabled }}
           livenessProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.arbiter.livenessProbe "enabled") "context" $) | nindent 12 }}
-            tcpSocket:
-              port: mongodb
+            exec:
+              command:
+                - pgrep
+                - mongod
           {{- end }}
           {{- if .Values.arbiter.customReadinessProbe }}
           readinessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.arbiter.customReadinessProbe "context" $) | nindent 12 }}
@@ -232,12 +246,13 @@ spec:
           startupProbe: {{- include "common.tplvalues.render" (dict "value" .Values.arbiter.customStartupProbe "context" $) | nindent 12 }}
           {{- else if .Values.arbiter.startupProbe.enabled }}
           startupProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.arbiter.startupProbe "enabled") "context" $) | nindent 12 }}
-            tcpSocket:
-              port: mongodb
+            exec:
+              command:
+                - /bitnami/scripts/startup-probe.sh
           {{- end }}
           {{- end }}
           {{- if .Values.arbiter.resources }}
-          resources: {{- toYaml .Values.arbiter.resources | nindent 12 }}
+          resources: {{- include "common.tplvalues.render" (dict "value" .Values.arbiter.resources "context" $) | nindent 12 }}
           {{- else if ne .Values.arbiter.resourcesPreset "none" }}
           resources: {{- include "common.resources.preset" (dict "type" .Values.arbiter.resourcesPreset) | nindent 12 }}
           {{- end }}
@@ -254,6 +269,13 @@ spec:
             - name: empty-dir
               mountPath: /opt/bitnami/mongodb/logs
               subPath: app-logs-dir
+            - name: empty-dir
+              mountPath: /bitnami/mongodb
+              subPath: app-volume-dir
+            {{- if and .Values.usePasswordFiles .Values.auth.enabled }}
+            - name: mongodb-secrets
+              mountPath: /opt/bitnami/mongodb/secrets
+            {{- end }}
             {{- if or .Values.arbiter.configuration .Values.arbiter.existingConfigmap }}
             - name: config
               mountPath: /opt/bitnami/mongodb/conf/mongodb.conf
@@ -271,12 +293,18 @@ spec:
         {{- end }}
       volumes:
         - name: empty-dir
-          emptyDir: {}
-      {{- if or .Values.arbiter.configuration .Values.arbiter.existingConfigmap .Values.arbiter.extraVolumes .Values.tls.enabled }}
+          emptyDir:
+            sizeLimit: {{ .Values.arbiter.emptyDir.sizeLimit }}
+        {{- if and .Values.usePasswordFiles .Values.auth.enabled }}
+        - name: mongodb-secrets
+          secret:
+            secretName: {{ include "mongodb.secretName" . }}
+        {{- end }}
+        {{- if or .Values.arbiter.configuration .Values.arbiter.existingConfigmap .Values.arbiter.extraVolumes .Values.tls.enabled }}
         - name: common-scripts
           configMap:
             name: {{ printf "%s-common-scripts" (include "mongodb.fullname" .) }}
-            defaultMode: 0555
+            defaultMode: 0o555
         {{- if or .Values.arbiter.configuration .Values.arbiter.existingConfigmap }}
         - name: config
           configMap:
@@ -284,7 +312,8 @@ spec:
         {{- end }}
         {{- if and .Values.tls.enabled .Values.arbiter.enabled }}
         - name: certs
-          emptyDir: {}
+          emptyDir:
+            sizeLimit: 64Mi
         {{- if (include "mongodb.autoGenerateCerts" .) }}
         - name: certs-volume
           secret:
@@ -292,10 +321,10 @@ spec:
             items:
             - key: mongodb-ca-cert
               path: mongodb-ca-cert
-              mode: 0600
+              mode: 0o600
             - key: mongodb-ca-key
               path: mongodb-ca-key
-              mode: 0600
+              mode: 0o600
         {{- else }}
         - name: mongodb-certs-0
           secret:
index 79466e9..a4bd564 100644 (file)
@@ -1,5 +1,5 @@
 {{- /*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
@@ -28,6 +28,9 @@ metadata:
   {{- end }}
 spec:
   schedule: {{ quote .Values.backup.cronjob.schedule }}
+  {{- if .Values.backup.cronjob.timeZone }}
+  timeZone: {{ .Values.backup.cronjob.timeZone | quote }}
+  {{- end }}
   concurrencyPolicy: {{ .Values.backup.cronjob.concurrencyPolicy }}
   failedJobsHistoryLimit: {{ .Values.backup.cronjob.failedJobsHistoryLimit }}
   successfulJobsHistoryLimit: {{ .Values.backup.cronjob.successfulJobsHistoryLimit }}
@@ -36,6 +39,9 @@ spec:
   {{- end }}
   jobTemplate:
     spec:
+      {{- if .Values.backup.cronjob.backoffLimit }}
+      backoffLimit: {{ .Values.backup.cronjob.backoffLimit }}
+      {{- end }}
       {{- if .Values.backup.cronjob.ttlSecondsAfterFinished }}
       ttlSecondsAfterFinished: {{ .Values.backup.cronjob.ttlSecondsAfterFinished }}
       {{- end }}
@@ -61,7 +67,7 @@ spec:
         spec:
           {{- include "mongodb.imagePullSecrets" . | nindent 10 }}
           {{- if .Values.podSecurityContext.enabled }}
-          securityContext: {{- omit .Values.podSecurityContext "enabled" | toYaml | nindent 12 }}
+          securityContext: {{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.podSecurityContext "context" $) | nindent 12 }}
           {{- end }}
           enableServiceLinks: {{ .Values.enableServiceLinks }}
           {{- if .Values.tls.enabled }}
@@ -100,11 +106,11 @@ spec:
                 {{- if .Values.externalAccess.service.loadBalancerIPs }}
                 - -i {{ join "," .Values.externalAccess.service.loadBalancerIPs }}
                 {{- end }}
-                {{- if .Values.tls.extraDnsNames }}
-                - -n {{ join "," .Values.tls.extraDnsNames }}
+                {{- if or .Values.tls.extraDnsNames .Values.externalAccess.service.publicNames }}
+                - -n {{ join "," ( concat .Values.tls.extraDnsNames .Values.externalAccess.service.publicNames ) }}
                 {{- end }}
               {{- if .Values.tls.resources }}
-              resources: {{- toYaml .Values.tls.resources | nindent 16 }}
+              resources: {{- include "common.tplvalues.render" (dict "value" .Values.tls.resources "context" $) | nindent 12 }}
               {{- else if ne .Values.tls.resourcesPreset "none" }}
               resources: {{- include "common.resources.preset" (dict "type" .Values.tls.resourcesPreset) | nindent 16 }}
               {{- end }}
@@ -114,15 +120,20 @@ spec:
             image: {{ include "mongodb.image" . }}
             imagePullPolicy: {{ .Values.image.pullPolicy | quote }}
             env:
-            {{- if .Values.auth.enabled }}
+              {{- if .Values.auth.enabled }}
               - name: MONGODB_ROOT_USER
                 value: {{ .Values.auth.rootUser | quote }}
+              {{- if .Values.usePasswordFiles }}
+              - name: MONGODB_ROOT_PASSWORD_FILE
+                value: "/opt/bitnami/mongodb/secrets/mongodb-root-password"
+              {{- else }}
               - name: MONGODB_ROOT_PASSWORD
                 valueFrom:
                   secretKeyRef:
                     name: {{ include "mongodb.secretName" . }}
                     key: mongodb-root-password
-            {{- end }}
+              {{- end }}
+              {{- end }}
               - name: MONGODB_SERVICE_NAME
                 value: {{ include "mongodb.service.nameOverride" . }}
               - name: MONGODB_PORT_NUMBER
@@ -137,14 +148,27 @@ spec:
             command: {{- include "common.tplvalues.render" (dict "value" .Values.backup.cronjob.command "context" $) | nindent 14 }}
             {{- else }}
             command:
-              - /bin/sh
+              - /bin/bash
               - -c
-              - "mongodump {{- if .Values.auth.enabled }} --username=${MONGODB_ROOT_USER} --password=${MONGODB_ROOT_PASSWORD} --authenticationDatabase=admin {{- end }} --host=${MONGODB_SERVICE_NAME} --port=${MONGODB_PORT_NUMBER} ${MONGODB_CLIENT_EXTRA_FLAGS} {{- if (eq $.Values.architecture "replicaset") }}--oplog{{- end }} --gzip --archive=${MONGODUMP_DIR}/mongodump-$(date '+%Y-%m-%d-%H-%M').gz"
+              - |
+                {{- if and .Values.auth.enabled .Values.usePasswordFiles }}
+                export MONGODB_ROOT_PASSWORD="$(< $MONGODB_ROOT_PASSWORD_FILE)"
+                {{- end }}
+                mongodump {{- if .Values.auth.enabled }} --username=${MONGODB_ROOT_USER} --password=${MONGODB_ROOT_PASSWORD} --authenticationDatabase=admin {{- end }} --host=${MONGODB_SERVICE_NAME} --port=${MONGODB_PORT_NUMBER} ${MONGODB_CLIENT_EXTRA_FLAGS} {{- if (eq $.Values.architecture "replicaset") }}--oplog{{- end }} --gzip --archive=${MONGODUMP_DIR}/mongodump-$(date '+%Y-%m-%d-%H-%M').gz
+            {{- end }}
+            {{- if .Values.backup.cronjob.resources }}
+            resources: {{- include "common.tplvalues.render" (dict "value" .Values.backup.cronjob.resources "context" $) | nindent 14 }}
+            {{- else if ne .Values.backup.cronjob.resourcesPreset "none" }}
+            resources: {{- include "common.resources.preset" (dict "type" .Values.backup.cronjob.resourcesPreset) | nindent 14 }}
             {{- end }}
             volumeMounts:
               - name: empty-dir
                 mountPath: /tmp
                 subPath: tmp-dir
+              {{- if and .Values.usePasswordFiles .Values.auth.enabled }}
+              - name: mongodb-secrets
+                mountPath: /opt/bitnami/mongodb/secrets
+              {{- end }}
               {{- if .Values.tls.enabled }}
               - name: certs
                 mountPath: /certs
@@ -166,14 +190,21 @@ spec:
           restartPolicy: {{ .Values.backup.cronjob.restartPolicy }}
           volumes:
             - name: empty-dir
-              emptyDir: {}
+              emptyDir:
+                sizeLimit: {{ .Values.backup.emptyDir.sizeLimit }}
             - name: common-scripts
               configMap:
                 name: {{ printf "%s-common-scripts" (include "mongodb.fullname" .) }}
-                defaultMode: 0550
+                defaultMode: 0o550
+            {{- if and .Values.usePasswordFiles .Values.auth.enabled }}
+            - name: mongodb-secrets
+              secret:
+                secretName: {{ include "mongodb.secretName" . }}
+            {{- end }}
             {{- if .Values.tls.enabled }}
             - name: certs
-              emptyDir: {}
+              emptyDir:
+                sizeLimit: 64Mi
             {{- if (include "mongodb.autoGenerateCerts" .) }}
             - name: certs-volume
               secret:
@@ -181,10 +212,10 @@ spec:
                 items:
                 - key: mongodb-ca-cert
                   path: mongodb-ca-cert
-                  mode: 0600
+                  mode: 0o600
                 - key: mongodb-ca-key
                   path: mongodb-ca-key
-                  mode: 0600
+                  mode: 0o600
             {{- else }}
             - name: mongodb-certs-0
               secret:
index caefc05..583ea41 100644 (file)
@@ -1,5 +1,5 @@
 {{- /*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
index bf5fead..6f65de4 100644 (file)
@@ -1,5 +1,5 @@
 {{- /*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
@@ -19,7 +19,7 @@ data:
     #!/bin/bash
     {{- if .Values.tls.enabled }}
     # Probes are using localhost/127.0.0.1 to tests if the service is up, ready or healthy. If TLS is enabled, we shouldn't validate the certificate hostname.
-    TLS_OPTIONS='--tls {{ if .Values.tls.mTLS.enabled }}--tlsCertificateKeyFile=/certs/mongodb.pem {{ end }}--tlsCAFile=/certs/mongodb-ca-cert--tlsAllowInvalidHostnames'
+    TLS_OPTIONS='--tls {{ if .Values.tls.mTLS.enabled }}--tlsCertificateKeyFile=/certs/mongodb.pem {{ end }}--tlsCAFile=/certs/mongodb-ca-cert --tlsAllowInvalidHostnames'
     {{- end }}
     exec mongosh  $TLS_OPTIONS --port $MONGODB_PORT_NUMBER --eval 'if (!(db.hello().isWritablePrimary || db.hello().secondary)) { throw new Error("Not ready") }'
   readiness-probe.sh: |
@@ -81,9 +81,6 @@ data:
     {{- else }}
     DNS.3 = $svc.$MY_POD_NAMESPACE.svc.{{ .Values.clusterDomain }}
     {{- end }}
-    DNS.4 = localhost
-    IP.0 = ${MY_POD_HOST_IP}
-    IP.1 = 127.0.0.1
     EOL
     index=2
     for ip in "${additional_ips[@]}"; do
index 7d11e08..0110445 100644 (file)
@@ -1,5 +1,5 @@
 {{- /*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
index 2d35a58..329f5c6 100644 (file)
@@ -1,5 +1,5 @@
 {{- /*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
index a830873..fb26bdd 100644 (file)
@@ -1,5 +1,5 @@
 {{- /*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
index 6cbbb40..4cfa531 100644 (file)
@@ -1,5 +1,5 @@
 {{- /*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
index 49b6845..a2af519 100644 (file)
@@ -1,5 +1,5 @@
 {{- /*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
@@ -7,7 +7,7 @@ SPDX-License-Identifier: APACHE-2.0
 apiVersion: v1
 kind: Service
 metadata:
-  name: {{ printf "%s-hidden-headless" (include "mongodb.fullname" .) }}
+  name: {{ include "mongodb.hidden.service.nameOverride" . }}
   namespace: {{ include "mongodb.namespace" . | quote }}
   labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: hidden
index 5420a93..9125067 100644 (file)
@@ -1,5 +1,5 @@
 {{- /*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
@@ -18,8 +18,8 @@ spec:
   {{- if .Values.hidden.pdb.minAvailable }}
   minAvailable: {{ .Values.hidden.pdb.minAvailable }}
   {{- end }}
-  {{- if .Values.hidden.pdb.maxUnavailable }}
-  maxUnavailable: {{ .Values.hidden.pdb.maxUnavailable }}
+  {{- if or .Values.hidden.pdb.maxUnavailable (not .Values.hidden.pdb.minAvailable) }}
+  maxUnavailable: {{ .Values.hidden.pdb.maxUnavailable | default 1 }}
   {{- end }}
   {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.hidden.podLabels .Values.commonLabels ) "context" . ) }}
   selector:
index 5b2a807..64b57f3 100644 (file)
@@ -1,5 +1,5 @@
 {{- /*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
@@ -20,7 +20,7 @@ metadata:
   annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
   {{- end }}
 spec:
-  serviceName: {{ printf "%s-hidden-headless" (include "mongodb.fullname" .) }}
+  serviceName: {{ include "mongodb.hidden.service.nameOverride" . }}
   podManagementPolicy: {{ .Values.hidden.podManagementPolicy }}
   replicas: {{ .Values.hidden.replicaCount }}
   {{- if .Values.hidden.updateStrategy }}
@@ -34,11 +34,14 @@ spec:
     metadata:
       labels: {{- include "common.labels.standard" ( dict "customLabels" $podLabels "context" $ ) | nindent 8 }}
         app.kubernetes.io/component: hidden
-      {{- if or (include "mongodb.hidden.createConfigmap" .) .Values.hidden.podAnnotations }}
+      {{- if or (include "mongodb.hidden.createConfigmap" .) .Values.hidden.podAnnotations .Values.passwordUpdateJob.enabled }}
       annotations:
         {{- if (include "mongodb.hidden.createConfigmap" .) }}
         checksum/configuration: {{ include (print $.Template.BasePath "/hidden/configmap.yaml") . | sha256sum }}
         {{- end }}
+        {{- if .Values.passwordUpdateJob.enabled }}
+        charts.bitnami.com/password-last-update: {{ now | date "20060102150405" | quote }}
+        {{- end }}
         {{- if .Values.hidden.podAnnotations }}
         {{- include "common.tplvalues.render" (dict "value" .Values.hidden.podAnnotations "context" $) | nindent 8 }}
         {{- end }}
@@ -77,46 +80,26 @@ spec:
       runtimeClassName: {{ .Values.hidden.runtimeClassName }}
       {{- end }}
       {{- if .Values.hidden.podSecurityContext.enabled }}
-      securityContext: {{- omit .Values.hidden.podSecurityContext "enabled" | toYaml | nindent 8 }}
+      securityContext: {{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.hidden.podSecurityContext "context" $) | nindent 8 }}
       {{- end }}
       {{ if .Values.hidden.terminationGracePeriodSeconds }}
       terminationGracePeriodSeconds: {{ .Values.hidden.terminationGracePeriodSeconds }}
       {{- end }}
       enableServiceLinks: {{ .Values.enableServiceLinks }}
-      {{- if or .Values.hidden.initContainers (and .Values.volumePermissions.enabled .Values.hidden.persistence.enabled) (and .Values.externalAccess.hidden.enabled .Values.externalAccess.autoDiscovery.enabled) .Values.tls.enabled }}
       initContainers:
         {{- if .Values.hidden.initContainers }}
         {{- include "common.tplvalues.render" (dict "value" .Values.hidden.initContainers "context" $) | nindent 8 }}
         {{- end }}
         {{- if and .Values.volumePermissions.enabled .Values.hidden.persistence.enabled }}
-        - name: volume-permissions
-          image: {{ include "mongodb.volumePermissions.image" . }}
-          imagePullPolicy: {{ .Values.volumePermissions.image.pullPolicy | quote }}
-          command:
-            - /bin/bash
-          args:
-            - -ec
-            - |
-              mkdir -p {{ printf "%s/%s" .Values.hidden.persistence.mountPath (default "" .Values.hidden.persistence.subPath) }}
-              chown {{ .Values.containerSecurityContext.runAsUser }}:{{ .Values.podSecurityContext.fsGroup }} {{ printf "%s/%s" .Values.hidden.persistence.mountPath (default "" .Values.hidden.persistence.subPath) }}
-              find  {{ printf "%s/%s" .Values.hidden.persistence.mountPath (default "" .Values.hidden.persistence.subPath) }} -mindepth 1 -maxdepth 1 -not -name ".snapshot" -not -name "lost+found" | xargs -r chown -R {{ .Values.containerSecurityContext.runAsUser }}:{{ .Values.podSecurityContext.fsGroup }}
-          {{- if eq ( toString ( .Values.volumePermissions.securityContext.runAsUser )) "auto" }}
-          securityContext: {{- omit .Values.volumePermissions.securityContext "runAsUser" | toYaml | nindent 12 }}
-          {{- else }}
-          securityContext: {{- .Values.volumePermissions.securityContext | toYaml | nindent 12 }}
-          {{- end }}
-          {{- if .Values.volumePermissions.resources }}
-          resources: {{- toYaml .Values.volumePermissions.resources | nindent 12 }}
-          {{- else if ne .Values.volumePermissions.resourcesPreset "none" }}
-          resources: {{- include "common.resources.preset" (dict "type" .Values.volumePermissions.resourcesPreset) | nindent 12 }}
-          {{- end }}
-          volumeMounts:
-            - name: empty-dir
-              mountPath: /tmp
-              subPath: tmp-dir
-            - name: datadir
-              mountPath: {{ .Values.hidden.persistence.mountPath }}
+        {{- include "mongodb.initContainer.volumePermissions" . | indent 8 }}
+        {{- end }}
+        {{- if and .Values.externalAccess.hidden.enabled .Values.externalAccess.autoDiscovery.enabled (eq .Values.externalAccess.hidden.service.type "LoadBalancer") }}
+        {{- include "mongodb.initContainers.autoDiscovery" . | indent 8 }}
+        {{- end }}
+        {{- if and .Values.externalAccess.enabled .Values.externalAccess.service.publicNames }}
+        {{- include "mongodb.initContainers.dnsCheck" . | indent 8 }}
         {{- end }}
+        {{- include "mongodb.initContainer.prepareLogDir" . | nindent 8 }}
         {{- if .Values.tls.enabled }}
         - name: generate-tls-certs
           image: {{ include "mongodb.tls.image" . }}
@@ -154,56 +137,25 @@ spec:
           command:
             - /bitnami/scripts/generate-certs.sh
           args:
-            - -s {{ printf "%s-hidden-headless" (include "mongodb.fullname" .) }}
+            - -s {{ include "mongodb.hidden.service.nameOverride" . }}
             {{- if .Values.externalAccess.hidden.service.loadBalancerIPs }}
             - -i {{ join "," .Values.externalAccess.hidden.service.loadBalancerIPs }}
             {{- end }}
-            {{- if .Values.tls.extraDnsNames }}
-            - -n {{ join "," .Values.tls.extraDnsNames }}
+            {{- if or .Values.tls.extraDnsNames .Values.externalAccess.service.publicNames }}
+            - -n {{ join "," ( concat  .Values.tls.extraDnsNames .Values.externalAccess.service.publicNames ) }}
             {{- end }}
           {{- if .Values.tls.resources }}
-          resources: {{- toYaml .Values.tls.resources | nindent 12 }}
+          resources: {{- include "common.tplvalues.render" (dict "value" .Values.tls.resources "context" $) | nindent 12 }}
           {{- else if ne .Values.tls.resourcesPreset "none" }}
           resources: {{- include "common.resources.preset" (dict "type" .Values.tls.resourcesPreset) | nindent 12 }}
           {{- end }}
         {{- end }}
-        {{- if and .Values.externalAccess.hidden.enabled .Values.externalAccess.autoDiscovery.enabled (eq .Values.externalAccess.hidden.service.type "LoadBalancer") }}
-        - name: auto-discovery
-          image: {{ include "mongodb.externalAccess.autoDiscovery.image" . }}
-          imagePullPolicy: {{ .Values.externalAccess.autoDiscovery.image.pullPolicy | quote }}
-          command:
-            - /scripts/auto-discovery.sh
-          # We need the service account token for contacting the k8s API
-          automountServiceAccountToken: true
-          env:
-            - name: MY_POD_NAME
-              valueFrom:
-                fieldRef:
-                  fieldPath: metadata.name
-            - name: SHARED_FILE
-              value: "/shared/info.txt"
-          {{- if .Values.externalAccess.autoDiscovery.resources }}
-          resources: {{- toYaml .Values.externalAccess.autoDiscovery.resources | nindent 12 }}
-          {{- else if ne .Values.externalAccess.autoDiscovery.resourcesPreset "none" }}
-          resources: {{- include "common.resources.preset" (dict "type" .Values.externalAccess.autoDiscovery.resourcesPreset) | nindent 12 }}
-          {{- end }}
-          volumeMounts:
-            - name: shared
-              mountPath: /shared
-            - name: scripts
-              mountPath: /scripts/auto-discovery.sh
-              subPath: auto-discovery.sh
-            - name: empty-dir
-              mountPath: /tmp
-              subPath: tmp-dir
-        {{- end }}
-      {{- end }}
       containers:
         - name: mongodb
           image: {{ include "mongodb.image" . }}
           imagePullPolicy: {{ .Values.image.pullPolicy | quote }}
           {{- if .Values.hidden.containerSecurityContext.enabled }}
-          securityContext: {{- omit .Values.hidden.containerSecurityContext "enabled" | toYaml | nindent 12 }}
+          securityContext: {{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.hidden.containerSecurityContext "context" $) | nindent 12 }}
           {{- end }}
           {{- if .Values.diagnosticMode.enabled }}
           command: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.command "context" $) | nindent 12 }}
@@ -240,19 +192,15 @@ spec:
               valueFrom:
                 fieldRef:
                   fieldPath: metadata.namespace
-            - name: K8S_SERVICE_NAME
-              value: "{{ include "mongodb.service.nameOverride" . }}"
-            - name: K8S_HIDDEN_NODE_SERVICE_NAME
-              value: "{{ include "mongodb.fullname" . }}-hidden-headless"
             - name: MONGODB_REPLICA_SET_MODE
               value: "hidden"
             - name: MONGODB_INITIAL_PRIMARY_HOST
-              value: {{ printf "%s-0.$(K8S_SERVICE_NAME).$(MY_POD_NAMESPACE).svc.%s" (include "mongodb.fullname" .) .Values.clusterDomain }}
+              value: {{ include "mongodb.initialPrimaryHost" . | quote }}
             - name: MONGODB_REPLICA_SET_NAME
               value: {{ .Values.replicaSetName | quote }}
             {{- if and .Values.replicaSetHostnames (not .Values.externalAccess.hidden.enabled) }}
             - name: MONGODB_ADVERTISED_HOSTNAME
-              value: "$(MY_POD_NAME).$(K8S_HIDDEN_NODE_SERVICE_NAME).$(MY_POD_NAMESPACE).svc.{{ .Values.clusterDomain }}"
+              value: "$(MY_POD_NAME).{{ include "mongodb.hidden.service.nameOverride" . }}.$(MY_POD_NAMESPACE).svc.{{ .Values.clusterDomain }}"
             {{- end }}
             {{- $customUsers := include "mongodb.customUsers" . -}}
             {{- $customDatabases := include "mongodb.customDatabases" . -}}
@@ -266,14 +214,25 @@ spec:
             {{- end }}
             {{- if .Values.auth.enabled }}
             {{- if and (not (empty $customUsers)) (not (empty $customDatabases)) }}
+            {{- if .Values.usePasswordFiles }}
+            - name: MONGODB_EXTRA_PASSWORDS_FILE
+              value: "/opt/bitnami/mongodb/secrets/mongodb-passwords"
+            {{- else }}
             - name: MONGODB_EXTRA_PASSWORDS
               valueFrom:
                 secretKeyRef:
                   name: {{ include "mongodb.secretName" . }}
                   key: mongodb-passwords
             {{- end }}
+            {{- end }}
             - name: MONGODB_ROOT_USER
               value: {{ .Values.auth.rootUser | quote }}
+            {{- if .Values.usePasswordFiles }}
+            - name: MONGODB_ROOT_PASSWORD_FILE
+              value: "/opt/bitnami/mongodb/secrets/mongodb-root-password"
+            - name: MONGODB_REPLICA_SET_KEY_FILE
+              value: "/opt/bitnami/mongodb/secrets/mongodb-replica-set-key"
+            {{- else }}
             - name: MONGODB_ROOT_PASSWORD
               valueFrom:
                 secretKeyRef:
@@ -285,10 +244,15 @@ spec:
                   name: {{ include "mongodb.secretName" . }}
                   key: mongodb-replica-set-key
             {{- end }}
+            {{- end }}
             {{- if and .Values.metrics.enabled (not (empty .Values.metrics.username)) }}
             - name: MONGODB_METRICS_USERNAME
               value: {{ .Values.metrics.username | quote }}
             {{- if .Values.auth.enabled }}
+            {{- if .Values.usePasswordFiles }}
+            - name: MONGODB_METRICS_PASSWORD_FILE
+              value: "/opt/bitnami/mongodb/secrets/mongodb-metrics-password"
+            {{- else }}
             - name: MONGODB_METRICS_PASSWORD
               valueFrom:
                 secretKeyRef:
@@ -296,6 +260,7 @@ spec:
                   key: mongodb-metrics-password
             {{- end }}
             {{- end }}
+            {{- end }}
             - name: ALLOW_EMPTY_PASSWORD
               value: {{ ternary "no" "yes" .Values.auth.enabled | quote }}
             - name: MONGODB_SYSTEM_LOG_VERBOSITY
@@ -359,7 +324,7 @@ spec:
           readinessProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.hidden.readinessProbe "enabled") "context" $) | nindent 12 }}
             exec:
               command:
-                - /bitnami/scripts/ping-mongodb.sh
+                - /bitnami/scripts/readiness-probe.sh
           {{- end }}
           {{- if .Values.hidden.customStartupProbe }}
           startupProbe: {{- include "common.tplvalues.render" (dict "value" .Values.hidden.customStartupProbe "context" $) | nindent 12 }}
@@ -371,7 +336,7 @@ spec:
           {{- end }}
           {{- end }}
           {{- if .Values.hidden.resources }}
-          resources: {{- toYaml .Values.hidden.resources | nindent 12 }}
+          resources: {{- include "common.tplvalues.render" (dict "value" .Values.hidden.resources "context" $) | nindent 12 }}
           {{- else if ne .Values.hidden.resourcesPreset "none" }}
           resources: {{- include "common.resources.preset" (dict "type" .Values.hidden.resourcesPreset) | nindent 12 }}
           {{- end }}
@@ -381,6 +346,10 @@ spec:
               subPath: {{ .Values.hidden.persistence.subPath }}
             - name: common-scripts
               mountPath: /bitnami/scripts
+            {{- if and .Values.usePasswordFiles .Values.auth.enabled }}
+            - name: mongodb-secrets
+              mountPath: /opt/bitnami/mongodb/secrets
+            {{- end }}
             {{- if or .Values.initdbScriptsConfigMap .Values.initdbScripts }}
             - name: custom-init-scripts
               mountPath: /docker-entrypoint-initdb.d
@@ -413,6 +382,9 @@ spec:
             - name: empty-dir
               mountPath: /opt/bitnami/mongodb/logs
               subPath: app-logs-dir
+            - name: empty-dir
+              mountPath: /.mongodb
+              subPath: mongosh-home
             {{- if .Values.hidden.extraVolumeMounts }}
             {{- include "common.tplvalues.render" (dict "value" .Values.hidden.extraVolumeMounts "context" $) | nindent 12 }}
             {{- end }}
@@ -421,7 +393,7 @@ spec:
           image: {{ template "mongodb.metrics.image" . }}
           imagePullPolicy: {{ .Values.metrics.image.pullPolicy | quote }}
           {{- if .Values.containerSecurityContext.enabled }}
-          securityContext: {{- omit .Values.containerSecurityContext "enabled" | toYaml | nindent 12 }}
+          securityContext: {{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.containerSecurityContext "context" $) | nindent 12 }}
           {{- end }}
           {{- if .Values.diagnosticMode.enabled }}
           command: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.command "context" $) | nindent 12 }}
@@ -439,6 +411,13 @@ spec:
           {{- else }}
           args:
             - |
+              {{- if and .Values.usePasswordFiles .Values.auth.enabled }}
+              {{- if .Values.metrics.username }}
+              export MONGODB_METRICS_PASSWORD="$(< $MONGODB_METRICS_PASSWORD_FILE)"
+              {{- else }}
+              export MONGODB_ROOT_PASSWORD="$(< $MONGODB_ROOT_PASSWORD_FILE)"
+              {{- end }}
+              {{- end }}
               /bin/mongodb_exporter {{ include "mongodb.exporterArgs" $ }} --mongodb.direct-connect --mongodb.global-conn-pool --mongodb.uri "{{ include "mongodb.mongodb_exporter.uri" . }}" {{ .Values.metrics.extraFlags }}
           {{- end }}
           env:
@@ -446,14 +425,23 @@ spec:
             {{- if not .Values.metrics.username }}
             - name: MONGODB_ROOT_USER
               value: {{ .Values.auth.rootUser | quote }}
+            {{- if .Values.usePasswordFiles }}
+            - name: MONGODB_ROOT_PASSWORD_FILE
+              value: "/opt/bitnami/mongodb/secrets/mongodb-root-password"
+            {{- else }}
             - name: MONGODB_ROOT_PASSWORD
               valueFrom:
                 secretKeyRef:
                   name: {{ include "mongodb.secretName" . }}
                   key: mongodb-root-password
+            {{- end }}
             {{- else }}
             - name: MONGODB_METRICS_USERNAME
               value: {{ .Values.metrics.username | quote }}
+            {{- if .Values.usePasswordFiles }}
+            - name: MONGODB_METRICS_PASSWORD_FILE
+              value: "/opt/bitnami/mongodb/secrets/mongodb-metrics-password"
+            {{- else }}
             - name: MONGODB_METRICS_PASSWORD
               valueFrom:
                 secretKeyRef:
@@ -461,10 +449,15 @@ spec:
                   key: mongodb-metrics-password
             {{- end }}
             {{- end }}
+            {{- end }}
           volumeMounts:
             - name: empty-dir
               mountPath: /tmp
               subPath: tmp-dir
+            {{- if and .Values.usePasswordFiles .Values.auth.enabled }}
+            - name: mongodb-secrets
+              mountPath: /opt/bitnami/mongodb/secrets
+            {{- end }}
             {{- if .Values.tls.enabled }}
             - name: certs
               mountPath: /certs
@@ -483,8 +476,7 @@ spec:
           livenessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.metrics.customLivenessProbe "context" $) | nindent 12 }}
           {{- else if .Values.metrics.livenessProbe.enabled }}
           livenessProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.metrics.livenessProbe "enabled") "context" $) | nindent 12 }}
-            httpGet:
-              path: /
+            tcpSocket:
               port: metrics
           {{- end }}
           {{- if .Values.metrics.customReadinessProbe }}
@@ -504,7 +496,7 @@ spec:
           {{- end }}
           {{- end }}
           {{- if .Values.metrics.resources }}
-          resources: {{- toYaml .Values.metrics.resources | nindent 12 }}
+          resources: {{- include "common.tplvalues.render" (dict "value" .Values.metrics.resources "context" $) | nindent 12 }}
           {{- else if ne .Values.metrics.resourcesPreset "none" }}
           resources: {{- include "common.resources.preset" (dict "type" .Values.metrics.resourcesPreset) | nindent 12 }}
           {{- end }}
@@ -514,11 +506,17 @@ spec:
         {{- end }}
       volumes:
         - name: empty-dir
-          emptyDir: {}
+          emptyDir:
+            sizeLimit: {{ .Values.hidden.emptyDir.sizeLimit }}
         - name: common-scripts
           configMap:
             name: {{ printf "%s-common-scripts" (include "mongodb.fullname" .) }}
-            defaultMode: 0555
+            defaultMode: 0o555
+        {{- if and .Values.usePasswordFiles .Values.auth.enabled }}
+        - name: mongodb-secrets
+          secret:
+            secretName: {{ include "mongodb.secretName" . }}
+        {{- end }}
         {{- if or .Values.initdbScriptsConfigMap .Values.initdbScripts }}
         - name: custom-init-scripts
           configMap:
@@ -531,18 +529,20 @@ spec:
         {{- end }}
         {{- if and .Values.externalAccess.hidden.enabled .Values.externalAccess.autoDiscovery.enabled (eq .Values.externalAccess.hidden.service.type "LoadBalancer") }}
         - name: shared
-          emptyDir: {}
+          emptyDir:
+            sizeLimit: 64Mi
         {{- end }}
         - name: scripts
           configMap:
             name: {{ printf "%s-scripts" (include "mongodb.fullname" .) }}
-            defaultMode: 0755
+            defaultMode: 0o755
         {{- if .Values.hidden.extraVolumes }}
         {{- include "common.tplvalues.render" (dict "value" .Values.hidden.extraVolumes "context" $) | nindent 8 }}
         {{- end }}
         {{- if .Values.tls.enabled }}
         - name: certs
-          emptyDir: {}
+          emptyDir:
+            sizeLimit: 64Mi
         {{- if (include "mongodb.autoGenerateCerts" .) }}
         - name: certs-volume
           secret:
@@ -550,10 +550,10 @@ spec:
             items:
             - key: mongodb-ca-cert
               path: mongodb-ca-cert
-              mode: 0600
+              mode: 0o600
             - key: mongodb-ca-key
               path: mongodb-ca-key
-              mode: 0600
+              mode: 0o600
         {{- else }}
         {{- range $index, $secret := .Values.tls.hidden.existingSecrets }}
         - name: mongodb-certs-{{ $index }}
@@ -568,8 +568,10 @@ spec:
           {{- if .Values.hidden.persistence.medium }}
           emptyDir:
             medium: {{ .Values.hidden.persistence.medium | quote }}
+            sizeLimit: 64Mi
           {{- else }}
-          emptyDir: {}
+          emptyDir:
+            sizeLimit: 64Mi
           {{- end }}
   {{- else }}
   volumeClaimTemplates:
@@ -578,6 +580,9 @@ spec:
         {{- if .Values.hidden.persistence.annotations }}
         annotations: {{- include "common.tplvalues.render" (dict "value" .Values.hidden.persistence.annotations "context" $) | nindent 10 }}
         {{- end }}
+        {{- if .Values.persistence.labels }}
+        labels: {{- include "common.tplvalues.render" (dict "value" .Values.persistence.labels "context" $) | nindent 10 }}
+        {{- end }}
       spec:
         accessModes:
         {{- range .Values.hidden.persistence.accessModes }}
index 7086e0b..2c1273c 100644 (file)
@@ -1,5 +1,5 @@
 {{- /*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
index f21401e..b6bd266 100644 (file)
@@ -1,5 +1,5 @@
 {{- /*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
index f6d62ca..4f64224 100644 (file)
@@ -1,5 +1,5 @@
 {{- /*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
@@ -41,8 +41,23 @@ spec:
       to:
         - podSelector:
             matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 14 }}
+    {{- if (and .Values.externalAccess.enabled .Values.externalAccess.autoDiscovery.enabled) }}
+    {{- $kubernetesEndpoints := lookup "v1" "Endpoints" (include "common.names.namespace" .) "kubernetes" }}
+    {{- range $kubernetesEndpoints.subsets }}
+    # Allow connection to API server, required by auto-discovery containers
+    - ports:
+      {{- range .ports }}
+        - port: {{ .port }}
+      {{- end }}
+      to:
+        {{- range .addresses }}
+        - ipBlock:
+            cidr: {{ printf "%s/32" .ip }}
+        {{- end }}
+    {{- end }}
+    {{- end }}
     {{- if .Values.networkPolicy.extraEgress }}
-    {{- include "common.tplvalues.render" ( dict "value" .Values.rts.networkPolicy.extraEgress "context" $ ) | nindent 4 }}
+    {{- include "common.tplvalues.render" ( dict "value" .Values.networkPolicy.extraEgress "context" $ ) | nindent 4 }}
     {{- end }}
   {{- end }}
   ingress:
@@ -53,26 +68,26 @@ spec:
       {{- end }}
       {{- if not .Values.networkPolicy.allowExternal }}
       from:
+        - podSelector:
+            matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 14 }}
+              app.kubernetes.io/component: mongodb
+        {{- if .Values.networkPolicy.addExternalClientAccess }}
         - podSelector:
             matchLabels:
               {{ template "common.names.fullname" . }}-client: "true"
+        {{- end }}
+        {{- if .Values.networkPolicy.ingressPodMatchLabels }}
         - podSelector:
-            matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 14 }}
-              app.kubernetes.io/component: mongodb
+            matchLabels: {{- include "common.tplvalues.render" (dict "value" .Values.networkPolicy.ingressPodMatchLabels "context" $ ) | nindent 14 }}
+        {{- end }}
         {{- $ingressNSMatchLabels := coalesce .Values.networkPolicy.ingressNSMatchLabels .Values.networkPolicy.namespaceSelector }}
         {{- if $ingressNSMatchLabels }}
         - namespaceSelector:
-            matchLabels:
-              {{- range $key, $value := $ingressNSMatchLabels }}
-              {{ $key | quote }}: {{ $value | quote }}
-              {{- end }}
+            matchLabels: {{- include "common.tplvalues.render" (dict "value" $ingressNSMatchLabels "context" $ ) | nindent 14 }}
           {{- $ingressNSPodMatchLabels := coalesce .Values.networkPolicy.ingressNSPodMatchLabels .Values.networkPolicy.podSelector }}
           {{- if $ingressNSPodMatchLabels }}
           podSelector:
-            matchLabels:
-              {{- range $key, $value := $ingressNSPodMatchLabels }}
-              {{ $key | quote }}: {{ $value | quote }}
-              {{- end }}
+            matchLabels: {{- include "common.tplvalues.render" (dict "value" $ingressNSPodMatchLabels "context" $ ) | nindent 14 }}
           {{- end }}
         {{- end }}
       {{- end }}
@@ -80,4 +95,4 @@ spec:
     {{- if $extraIngress }}
     {{- include "common.tplvalues.render" ( dict "value" $extraIngress "context" $ ) | nindent 4 }}
     {{- end }}
-{{- end }}
\ No newline at end of file
+{{- end }}
index 00df349..e0d0f28 100644 (file)
@@ -1,5 +1,5 @@
 {{- /*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
index 61c452b..4b93f4f 100644 (file)
@@ -1,5 +1,5 @@
 {{- /*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
index 3bc9900..400db8e 100644 (file)
@@ -1,5 +1,5 @@
 {{- /*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
@@ -19,8 +19,12 @@ metadata:
   labels: {{- include "common.labels.standard" ( dict "customLabels" $root.Values.commonLabels "context" $ ) | nindent 4 }}
     app.kubernetes.io/component: mongodb
     pod: {{ $targetPod }}
-  {{- if or $root.Values.externalAccess.service.annotations $root.Values.commonAnnotations }}
-  {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list $root.Values.externalAccess.service.annotations $root.Values.commonAnnotations ) "context" $ ) }}
+  {{- if or $root.Values.externalAccess.service.annotations $root.Values.commonAnnotations $root.Values.externalAccess.service.annotationsList }}
+  {{- $exclusiveAnnotations := dict }}
+  {{- if gt (len $root.Values.externalAccess.service.annotationsList) $i }}
+  {{- $exclusiveAnnotations = index $root.Values.externalAccess.service.annotationsList $i }}
+  {{- end }}
+  {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list $root.Values.externalAccess.service.annotations $root.Values.commonAnnotations $exclusiveAnnotations ) "context" $ ) }}
   annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
   {{- end }}
 spec:
index bf7a3d9..eb6337d 100644 (file)
@@ -1,5 +1,5 @@
 {{- /*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
index 5bbd310..a193ed2 100644 (file)
@@ -1,5 +1,5 @@
 {{- /*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
@@ -18,8 +18,8 @@ spec:
   {{- if .Values.pdb.minAvailable }}
   minAvailable: {{ .Values.pdb.minAvailable }}
   {{- end }}
-  {{- if .Values.pdb.maxUnavailable }}
-  maxUnavailable: {{ .Values.pdb.maxUnavailable }}
+  {{- if or .Values.pdb.maxUnavailable (not .Values.pdb.minAvailable) }}
+  maxUnavailable: {{ .Values.pdb.maxUnavailable | default 1 }}
   {{- end }}
   {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.podLabels .Values.commonLabels ) "context" . ) }}
   selector:
index 00b2502..3e9f066 100644 (file)
@@ -1,5 +1,5 @@
 {{- /*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
@@ -73,7 +73,7 @@ data:
     export MONGODB_ADVERTISED_HOSTNAME="$(<${SHARED_FILE})"
     {{- else }}
     ID="${MY_POD_NAME#"{{ $fullname }}-"}"
-    export MONGODB_ADVERTISED_HOSTNAME=$(echo '{{ .Values.externalAccess.service.loadBalancerIPs }}' | tr -d '[]' | cut -d ' ' -f "$(($ID + 1))")
+    export MONGODB_ADVERTISED_HOSTNAME=$(echo '{{ coalesce .Values.externalAccess.service.publicNames .Values.externalAccess.service.loadBalancerIPs }}' | tr -d '[]' | cut -d ' ' -f "$(($ID + 1))")
     {{- end }}
     {{- else if eq .Values.externalAccess.service.type "NodePort" }}
     ID="${MY_POD_NAME#"{{ $fullname }}-"}"
@@ -113,7 +113,6 @@ data:
       {{- $fullname := include "mongodb.fullname" . }}
       {{- $releaseNamespace := include "mongodb.namespace" . }}
       {{- $clusterDomain := .Values.clusterDomain }}
-      {{- $loadBalancerIPListLength := len .Values.externalAccess.service.loadBalancerIPs }}
       {{- $mongoList := list }}
       {{- range $e, $i := until $replicaCount }}
       {{- $mongoList = append $mongoList (printf "%s-%d.%s-headless.%s.svc.%s:%d" $fullname $i $fullname $releaseNamespace $clusterDomain $portNumber) }}
@@ -122,7 +121,7 @@ data:
       {{- if .Values.externalAccess.externalMaster.enabled }}
         current_primary={{ printf "%s:%d" (.Values.externalAccess.externalMaster.host) ( int .Values.externalAccess.externalMaster.port) }}
       {{- else }}
-        current_primary=$(mongosh admin --host "{{ join "," $mongoList }}" {{- if .Values.auth.enabled }} --authenticationDatabase admin -u $MONGODB_ROOT_USER -p $MONGODB_ROOT_PASSWORD{{- end }}{{- if .Values.tls.enabled}} --tls {{ if .Values.tls.mTLS.enabled }}--tlsCertificateKeyFile=/certs/mongodb.pem {{ end }}--tlsCAFile=/certs/mongodb-ca-cert{{- end }} --eval 'db.runCommand("ismaster")' | awk -F\' '/primary/ {print $2}')
+        current_primary=$(mongosh admin --host "{{ join "," $mongoList }}" {{- if .Values.auth.enabled }} --authenticationDatabase admin -u $MONGODB_ROOT_USER -p $MONGODB_ROOT_PASSWORD{{- end }}{{- if .Values.tls.enabled}} --tls {{ if .Values.tls.mTLS.enabled }}--tlsCertificateKeyFile=/certs/mongodb.pem {{ end }}--tlsCAFile=/certs/mongodb-ca-cert{{- end }} --eval 'db.runCommand("ismaster")' | awk -F\' '/primary:/ {print $2}')
       {{- end }}
       if ! is_empty_value "$current_primary"; then
         info "Detected existing primary: ${current_primary}"
@@ -159,7 +158,6 @@ data:
         export MONGODB_EXTRA_DATABASES_FILE=""
         export MONGODB_EXTRA_PASSWORDS_FILE=""
     fi
-
     exec /opt/bitnami/scripts/mongodb/entrypoint.sh /opt/bitnami/scripts/mongodb/run.sh
   setup-hidden.sh: |-
     #!/bin/bash
@@ -224,7 +222,7 @@ data:
 
     SLEEP_PERIOD=10
 
-    {{- if and .Values.auth.enabled .Values.auth.rootPassword }}
+    {{- if and .Values.auth.enabled (or .Values.auth.rootPassword .Values.auth.existingSecret)}}
     usernameAndPassword="{{- if .Values.tls.enabled}} --tls {{ if .Values.tls.mTLS.enabled }}--tlsCertificateKeyFile=/certs/mongodb.pem {{ end }}--tlsCAFile=/certs/mongodb-ca-cert{{- end }} -u ${MONGODB_ROOT_USER} -p ${MONGODB_ROOT_PASSWORD}"
     {{- else }}
     usernameAndPassword=""
@@ -256,28 +254,34 @@ data:
       # read rs.conf again and store it. settings format is '"<key>" : <value>,'
       currentRsConf=$(mongosh ${usernameAndPassword} --eval 'rs.conf()')
 
-      desiredEqualsactual=unknown
+      desiredEqualsActual=unknown
       settingsToConfigure=""
       for key in ${!desiredRsConf[@]}; do
         value=${desiredRsConf[$key]}
-        if ! $(echo "\"${currentRsConf}"\" | grep -q -e "${key}: ${value},"); then
-           if [[ $key =~ ^members\[[0-9]+\]\..+ ]]; then
-            memberIndex=$(echo $key | grep -o -E '[0-9]+')
-            nodeConfigKey=${key#*.}
-            settingsToConfigure="${settingsToConfigure}cfg.members[${memberIndex}].${nodeConfigKey} = ${value}; "
+        if [[ $key =~ ^members\[[0-9]+\]\..+ ]]; then
+          # Replica set member specific setting
+          if [[ "$(mongosh --eval "cfg=${currentRsConf}; cfg.${key}" 2>/dev/null)" != "${value}" ]]; then
+            desiredEqualsActual=false
+            logger "rs conf: ${key} needs to be updated to desired value: ${value}"
+            settingsToConfigure="${settingsToConfigure}cfg.${key} = ${value}; "
           else
-            # General rs settings
-            settingsToConfigure="${settingsToConfigure}cfg.settings.${key} = ${value}; "
+            logger "rs conf: ${key} is already at desired value: ${value}"
           fi
-           desiredEqualsactual=false
         else
-          logger "rs conf: ${key} is already at desired value: ${value}"
+          # General rs setting
+          if [[ "$(mongosh --eval "cfg=${currentRsConf}; cfg.settings.${key}" 2>/dev/null)" != "${value}" ]]; then
+            desiredEqualsActual=false
+            logger "rs conf: ${key} needs to be updated to desired value: ${value}"
+            settingsToConfigure="${settingsToConfigure}cfg.settings.${key} = ${value}; "
+          else
+            logger "rs conf: ${key} is already at desired value: ${value}"
+          fi
         fi
       done
 
-      if [[ "${desiredEqualsactual}" != "false" ]]; then
+      if [[ "${desiredEqualsActual}" != "false" ]]; then
         logger "replicaSetConfigurationSettings match the settings of the currently running rs"
-        desiredEqualsactual=true
+        desiredEqualsActual=true
         rs_conf_configured_ok=true
         logger "Current settings match desired settings (There have been ${rsConfWriteAttempts} attempts to write to mongoDB rs configuration)"
         exit
index 55158e8..592b38e 100644 (file)
@@ -1,12 +1,13 @@
 {{- /*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
 {{- if eq .Values.architecture "replicaset" }}
 {{- $replicaCount := int .Values.replicaCount }}
 {{- $loadBalancerIPListLength := len .Values.externalAccess.service.loadBalancerIPs }}
-{{- if not (and .Values.externalAccess.enabled (not .Values.externalAccess.autoDiscovery.enabled) (not (eq $replicaCount $loadBalancerIPListLength )) (eq .Values.externalAccess.service.type "LoadBalancer")) }}
+{{- $publicNamesLength := len .Values.externalAccess.service.publicNames }}
+{{- if not (and .Values.externalAccess.enabled (not .Values.externalAccess.autoDiscovery.enabled) (eq .Values.externalAccess.service.type "LoadBalancer") (not (eq $replicaCount $loadBalancerIPListLength)) (not (eq $replicaCount $publicNamesLength))) }}
 apiVersion: {{ include "common.capabilities.statefulset.apiVersion" . }}
 kind: StatefulSet
 metadata:
@@ -34,11 +35,14 @@ spec:
     metadata:
       labels: {{- include "common.labels.standard" ( dict "customLabels" $podLabels "context" $ ) | nindent 8 }}
         app.kubernetes.io/component: mongodb
-      {{- if or (include "mongodb.createConfigmap" .) .Values.podAnnotations }}
+      {{- if or (include "mongodb.createConfigmap" .) .Values.podAnnotations .Values.passwordUpdateJob.enabled }}
       annotations:
         {{- if (include "mongodb.createConfigmap" .) }}
         checksum/configuration: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
         {{- end }}
+        {{- if .Values.passwordUpdateJob.enabled }}
+        charts.bitnami.com/password-last-update: {{ now | date "20060102150405" | quote }}
+        {{- end }}
         {{- if .Values.podAnnotations }}
         {{- include "common.tplvalues.render" (dict "value" .Values.podAnnotations "context" $) | nindent 8 }}
         {{- end }}
@@ -77,46 +81,26 @@ spec:
       runtimeClassName: {{ .Values.runtimeClassName }}
       {{- end }}
       {{- if .Values.podSecurityContext.enabled }}
-      securityContext: {{- omit .Values.podSecurityContext "enabled" | toYaml | nindent 8 }}
+      securityContext: {{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.podSecurityContext "context" $) | nindent 8 }}
       {{- end }}
       {{ if .Values.terminationGracePeriodSeconds }}
       terminationGracePeriodSeconds: {{ .Values.terminationGracePeriodSeconds }}
       {{- end }}
       enableServiceLinks: {{ .Values.enableServiceLinks }}
-      {{- if or .Values.initContainers (and .Values.volumePermissions.enabled .Values.persistence.enabled) (and .Values.externalAccess.enabled .Values.externalAccess.autoDiscovery.enabled) .Values.tls.enabled }}
       initContainers:
         {{- if .Values.initContainers }}
         {{- include "common.tplvalues.render" (dict "value" .Values.initContainers "context" $) | nindent 8 }}
         {{- end }}
         {{- if and .Values.volumePermissions.enabled .Values.persistence.enabled }}
-        - name: volume-permissions
-          image: {{ include "mongodb.volumePermissions.image" . }}
-          imagePullPolicy: {{ .Values.volumePermissions.image.pullPolicy | quote }}
-          command:
-            - /bin/bash
-          args:
-            - -ec
-            - |
-              mkdir -p {{ printf "%s/%s" .Values.persistence.mountPath (default "" .Values.persistence.subPath) }}
-              chown {{ .Values.containerSecurityContext.runAsUser }}:{{ .Values.podSecurityContext.fsGroup }} {{ printf "%s/%s" .Values.persistence.mountPath (default "" .Values.persistence.subPath) }}
-              find  {{ printf "%s/%s" .Values.persistence.mountPath (default "" .Values.persistence.subPath) }} -mindepth 1 -maxdepth 1 -not -name ".snapshot" -not -name "lost+found" | xargs -r chown -R {{ .Values.containerSecurityContext.runAsUser }}:{{ .Values.podSecurityContext.fsGroup }}
-          {{- if eq ( toString ( .Values.volumePermissions.securityContext.runAsUser )) "auto" }}
-          securityContext: {{- omit .Values.volumePermissions.securityContext "runAsUser" | toYaml | nindent 12 }}
-          {{- else }}
-          securityContext: {{- .Values.volumePermissions.securityContext | toYaml | nindent 12 }}
-          {{- end }}
-          {{- if .Values.volumePermissions.resources }}
-          resources: {{- toYaml .Values.volumePermissions.resources | nindent 12 }}
-          {{- else if ne .Values.volumePermissions.resourcesPreset "none" }}
-          resources: {{- include "common.resources.preset" (dict "type" .Values.volumePermissions.resourcesPreset) | nindent 12 }}
-          {{- end }}
-          volumeMounts:
-            - name: datadir
-              mountPath: {{ .Values.persistence.mountPath }}
-            - name: empty-dir
-              mountPath: /tmp
-              subPath: tmp-dir
+        {{- include "mongodb.initContainer.volumePermissions" . | nindent 8 }}
+        {{- end }}
+        {{- if and .Values.externalAccess.enabled .Values.externalAccess.autoDiscovery.enabled (eq .Values.externalAccess.service.type "LoadBalancer") }}
+        {{- include "mongodb.initContainers.autoDiscovery" . | nindent 8 }}
+        {{- end }}
+        {{- if and .Values.externalAccess.enabled .Values.externalAccess.service.publicNames }}
+        {{- include "mongodb.initContainers.dnsCheck" . | nindent 8 }}
         {{- end }}
+        {{- include "mongodb.initContainer.prepareLogDir" . | nindent 8 }}
         {{- if .Values.tls.enabled }}
         - name: generate-tls-certs
           image: {{ include "mongodb.tls.image" . }}
@@ -158,52 +142,24 @@ spec:
             {{- if .Values.externalAccess.service.loadBalancerIPs }}
             - -i {{ join "," .Values.externalAccess.service.loadBalancerIPs }}
             {{- end }}
-            {{- if .Values.tls.extraDnsNames }}
-            - -n {{ join "," .Values.tls.extraDnsNames }}
+            {{- if or .Values.tls.extraDnsNames .Values.externalAccess.service.publicNames }}
+            - -n {{ join "," ( concat .Values.tls.extraDnsNames .Values.externalAccess.service.publicNames ) }}
             {{- end }}
           {{- if .Values.tls.resources }}
-          resources: {{- toYaml .Values.tls.resources | nindent 12 }}
+          resources: {{- include "common.tplvalues.render" (dict "value" .Values.tls.resources "context" $) | nindent 12 }}
           {{- else if ne .Values.tls.resourcesPreset "none" }}
           resources: {{- include "common.resources.preset" (dict "type" .Values.tls.resourcesPreset) | nindent 12 }}
           {{- end }}
-        {{- end }}
-        {{- if and .Values.externalAccess.enabled .Values.externalAccess.autoDiscovery.enabled (eq .Values.externalAccess.service.type "LoadBalancer") }}
-        - name: auto-discovery
-          image: {{ include "mongodb.externalAccess.autoDiscovery.image" . }}
-          imagePullPolicy: {{ .Values.externalAccess.autoDiscovery.image.pullPolicy | quote }}
-          # We need the service account token for contacting the k8s API
-          automountServiceAccountToken: true
-          command:
-            - /scripts/auto-discovery.sh
-          env:
-            - name: MY_POD_NAME
-              valueFrom:
-                fieldRef:
-                  fieldPath: metadata.name
-            - name: SHARED_FILE
-              value: "/shared/info.txt"
-          {{- if .Values.externalAccess.autoDiscovery.resources }}
-          resources: {{- toYaml .Values.externalAccess.autoDiscovery.resources | nindent 12 }}
-          {{- else if ne .Values.externalAccess.autoDiscovery.resourcesPreset "none" }}
-          resources: {{- include "common.resources.preset" (dict "type" .Values.externalAccess.autoDiscovery.resourcesPreset) | nindent 12 }}
+          {{- if .Values.tls.securityContext }}
+          securityContext: {{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.tls.securityContext "context" $) | nindent 12 }}
           {{- end }}
-          volumeMounts:
-            - name: shared
-              mountPath: /shared
-            - name: scripts
-              mountPath: /scripts/auto-discovery.sh
-              subPath: auto-discovery.sh
-            - name: empty-dir
-              mountPath: /tmp
-              subPath: tmp-dir
         {{- end }}
-      {{- end }}
       containers:
         - name: mongodb
           image: {{ include "mongodb.image" . }}
           imagePullPolicy: {{ .Values.image.pullPolicy | quote }}
           {{- if .Values.containerSecurityContext.enabled }}
-          securityContext: {{- omit .Values.containerSecurityContext "enabled" | toYaml | nindent 12 }}
+          securityContext: {{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.containerSecurityContext "context" $) | nindent 12 }}
           {{- end }}
           {{- if .Values.diagnosticMode.enabled }}
           command: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.command "context" $) | nindent 12 }}
@@ -240,15 +196,13 @@ spec:
               valueFrom:
                 fieldRef:
                   fieldPath: status.hostIP
-            - name: K8S_SERVICE_NAME
-              value: "{{ include "mongodb.service.nameOverride" . }}"
             - name: MONGODB_INITIAL_PRIMARY_HOST
-              value: {{ printf "%s-0.$(K8S_SERVICE_NAME).$(MY_POD_NAMESPACE).svc.%s" (include "mongodb.fullname" .) .Values.clusterDomain }}
+              value: {{ include "mongodb.initialPrimaryHost" . | quote }}
             - name: MONGODB_REPLICA_SET_NAME
               value: {{ .Values.replicaSetName | quote }}
             {{- if and .Values.replicaSetHostnames (not .Values.externalAccess.enabled) }}
             - name: MONGODB_ADVERTISED_HOSTNAME
-              value: "$(MY_POD_NAME).$(K8S_SERVICE_NAME).$(MY_POD_NAMESPACE).svc.{{ .Values.clusterDomain }}"
+              value: "$(MY_POD_NAME).{{ include "mongodb.service.nameOverride" . }}.$(MY_POD_NAMESPACE).svc.{{ .Values.clusterDomain }}"
             {{- end }}
             {{- $customUsers := include "mongodb.customUsers" . -}}
             {{- $customDatabases := include "mongodb.customDatabases" . -}}
@@ -262,14 +216,25 @@ spec:
             {{- end }}
             {{- if .Values.auth.enabled }}
             {{- if and (not (empty $customUsers)) (not (empty $customDatabases)) }}
+            {{- if .Values.usePasswordFiles }}
+            - name: MONGODB_EXTRA_PASSWORDS_FILE
+              value: "/opt/bitnami/mongodb/secrets/mongodb-passwords"
+            {{- else }}
             - name: MONGODB_EXTRA_PASSWORDS
               valueFrom:
                 secretKeyRef:
                   name: {{ include "mongodb.secretName" . }}
                   key: mongodb-passwords
             {{- end }}
+            {{- end }}
             - name: MONGODB_ROOT_USER
               value: {{ .Values.auth.rootUser | quote }}
+            {{- if .Values.usePasswordFiles }}
+            - name: MONGODB_ROOT_PASSWORD_FILE
+              value: "/opt/bitnami/mongodb/secrets/mongodb-root-password"
+            - name: MONGODB_REPLICA_SET_KEY_FILE
+              value: "/opt/bitnami/mongodb/secrets/mongodb-replica-set-key"
+            {{- else }}
             - name: MONGODB_ROOT_PASSWORD
               valueFrom:
                 secretKeyRef:
@@ -281,10 +246,15 @@ spec:
                   name: {{ include "mongodb.secretName" . }}
                   key: mongodb-replica-set-key
             {{- end }}
+            {{- end }}
             {{- if and .Values.metrics.enabled (not (empty .Values.metrics.username)) }}
             - name: MONGODB_METRICS_USERNAME
               value: {{ .Values.metrics.username | quote }}
             {{- if .Values.auth.enabled }}
+            {{- if .Values.usePasswordFiles }}
+            - name: MONGODB_METRICS_PASSWORD_FILE
+              value: "/opt/bitnami/mongodb/secrets/mongodb-metrics-password"
+            {{- else }}
             - name: MONGODB_METRICS_PASSWORD
               valueFrom:
                 secretKeyRef:
@@ -292,6 +262,7 @@ spec:
                   key: mongodb-metrics-password
             {{- end }}
             {{- end }}
+            {{- end }}
             - name: ALLOW_EMPTY_PASSWORD
               value: {{ ternary "no" "yes" .Values.auth.enabled | quote }}
             - name: MONGODB_SYSTEM_LOG_VERBOSITY
@@ -367,7 +338,7 @@ spec:
           {{- end }}
           {{- end }}
           {{- if .Values.resources }}
-          resources: {{- toYaml .Values.resources | nindent 12 }}
+          resources: {{- include "common.tplvalues.render" (dict "value" .Values.resources "context" $) | nindent 12 }}
           {{- else if ne .Values.resourcesPreset "none" }}
           resources: {{- include "common.resources.preset" (dict "type" .Values.resourcesPreset) | nindent 12 }}
           {{- end }}
@@ -384,7 +355,14 @@ spec:
             - name: empty-dir
               mountPath: /opt/bitnami/mongodb/logs
               subPath: app-logs-dir
-            - name: datadir
+            - name: empty-dir
+              mountPath: /.mongodb
+              subPath: mongosh-home
+            {{- if and .Values.usePasswordFiles .Values.auth.enabled }}
+            - name: mongodb-secrets
+              mountPath: /opt/bitnami/mongodb/secrets
+            {{- end }}
+            - name: {{ .Values.persistence.name | default "datadir" }}
               mountPath: {{ .Values.persistence.mountPath }}
               subPath: {{ .Values.persistence.subPath }}
             - name: common-scripts
@@ -422,7 +400,7 @@ spec:
           image: {{ template "mongodb.metrics.image" . }}
           imagePullPolicy: {{ .Values.metrics.image.pullPolicy | quote }}
           {{- if .Values.containerSecurityContext.enabled }}
-          securityContext: {{- omit .Values.containerSecurityContext "enabled" | toYaml | nindent 12 }}
+          securityContext: {{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.containerSecurityContext "context" $) | nindent 12 }}
           {{- end }}
           {{- if .Values.diagnosticMode.enabled }}
           command: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.command "context" $) | nindent 12 }}
@@ -440,6 +418,13 @@ spec:
           {{- else }}
           args:
             - |
+              {{- if and .Values.usePasswordFiles .Values.auth.enabled }}
+              {{- if .Values.metrics.username }}
+              export MONGODB_METRICS_PASSWORD="$(< $MONGODB_METRICS_PASSWORD_FILE)"
+              {{- else }}
+              export MONGODB_ROOT_PASSWORD="$(< $MONGODB_ROOT_PASSWORD_FILE)"
+              {{- end }}
+              {{- end }}
               /bin/mongodb_exporter {{ include "mongodb.exporterArgs" $ }} --mongodb.direct-connect --mongodb.global-conn-pool --web.listen-address ":{{ .Values.metrics.containerPort }}" --mongodb.uri "{{ include "mongodb.mongodb_exporter.uri" . }}" {{ .Values.metrics.extraFlags }}
           {{- end }}
           env:
@@ -447,14 +432,23 @@ spec:
             {{- if not .Values.metrics.username }}
             - name: MONGODB_ROOT_USER
               value: {{ .Values.auth.rootUser | quote }}
+            {{- if .Values.usePasswordFiles }}
+            - name: MONGODB_ROOT_PASSWORD_FILE
+              value: "/opt/bitnami/mongodb/secrets/mongodb-root-password"
+            {{- else }}
             - name: MONGODB_ROOT_PASSWORD
               valueFrom:
                 secretKeyRef:
                   name: {{ include "mongodb.secretName" . }}
                   key: mongodb-root-password
+            {{- end }}
             {{- else }}
             - name: MONGODB_METRICS_USERNAME
               value: {{ .Values.metrics.username | quote }}
+            {{- if .Values.usePasswordFiles }}
+            - name: MONGODB_METRICS_PASSWORD_FILE
+              value: "/opt/bitnami/mongodb/secrets/mongodb-metrics-password"
+            {{- else }}
             - name: MONGODB_METRICS_PASSWORD
               valueFrom:
                 secretKeyRef:
@@ -462,10 +456,15 @@ spec:
                   key: mongodb-metrics-password
             {{- end }}
             {{- end }}
+            {{- end }}
           volumeMounts:
             - name: empty-dir
               mountPath: /tmp
               subPath: tmp-dir
+            {{- if and .Values.usePasswordFiles .Values.auth.enabled }}
+            - name: mongodb-secrets
+              mountPath: /opt/bitnami/mongodb/secrets
+            {{- end }}
             {{- if .Values.tls.enabled }}
             - name: certs
               mountPath: /certs
@@ -481,8 +480,7 @@ spec:
           livenessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.metrics.customLivenessProbe "context" $) | nindent 12 }}
           {{- else if .Values.metrics.livenessProbe.enabled }}
           livenessProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.metrics.livenessProbe "enabled") "context" $) | nindent 12 }}
-            httpGet:
-              path: /
+            tcpSocket:
               port: metrics
           {{- end }}
           {{- if .Values.metrics.customReadinessProbe }}
@@ -502,7 +500,7 @@ spec:
           {{- end }}
           {{- end }}
           {{- if .Values.metrics.resources }}
-          resources: {{- toYaml .Values.metrics.resources | nindent 12 }}
+          resources: {{- include "common.tplvalues.render" (dict "value" .Values.metrics.resources "context" $) | nindent 12 }}
           {{- else if ne .Values.metrics.resourcesPreset "none" }}
           resources: {{- include "common.resources.preset" (dict "type" .Values.metrics.resourcesPreset) | nindent 12 }}
           {{- end }}
@@ -512,11 +510,17 @@ spec:
         {{- end }}
       volumes:
         - name: empty-dir
-          emptyDir: {}
+          emptyDir:
+            sizeLimit: {{ .Values.replicaSet.emptyDir.sizeLimit }}
         - name: common-scripts
           configMap:
             name: {{ printf "%s-common-scripts" (include "mongodb.fullname" .) }}
-            defaultMode: 0550
+            defaultMode: 0o550
+        {{- if and .Values.usePasswordFiles .Values.auth.enabled }}
+        - name: mongodb-secrets
+          secret:
+            secretName: {{ include "mongodb.secretName" . }}
+        {{- end }}
         {{- if or .Values.initdbScriptsConfigMap .Values.initdbScripts }}
         - name: custom-init-scripts
           configMap:
@@ -529,18 +533,20 @@ spec:
         {{- end }}
         {{- if and .Values.externalAccess.enabled .Values.externalAccess.autoDiscovery.enabled (eq .Values.externalAccess.service.type "LoadBalancer") }}
         - name: shared
-          emptyDir: {}
+          emptyDir:
+            sizeLimit: 64Mi
         {{- end }}
         - name: scripts
           configMap:
             name: {{ printf "%s-scripts" (include "mongodb.fullname" .) }}
-            defaultMode: 0755
+            defaultMode: 0o755
         {{- if .Values.extraVolumes }}
         {{- include "common.tplvalues.render" (dict "value" .Values.extraVolumes "context" $) | nindent 8 }}
         {{- end }}
         {{- if .Values.tls.enabled }}
         - name: certs
-          emptyDir: {}
+          emptyDir:
+            sizeLimit: 64Mi
         {{- if (include "mongodb.autoGenerateCerts" .) }}
         - name: certs-volume
           secret:
@@ -548,10 +554,10 @@ spec:
             items:
             - key: mongodb-ca-cert
               path: mongodb-ca-cert
-              mode: 0600
+              mode: 0o600
             - key: mongodb-ca-key
               path: mongodb-ca-key
-              mode: 0600
+              mode: 0o600
         {{- else }}
         {{- range $index, $secret := .Values.tls.replicaset.existingSecrets }}
         - name: mongodb-certs-{{ $index }}
@@ -566,8 +572,10 @@ spec:
           {{- if .Values.persistence.medium }}
           emptyDir:
             medium: {{ .Values.persistence.medium | quote }}
+            sizeLimit: 64Mi
           {{- else }}
-          emptyDir: {}
+          emptyDir:
+            sizeLimit: 64Mi
           {{- end }}
   {{- else }}
   {{- if .Values.persistentVolumeClaimRetentionPolicy.enabled }}
@@ -576,13 +584,14 @@ spec:
     whenScaled: {{ .Values.persistentVolumeClaimRetentionPolicy.whenScaled }}
   {{- end }}
   volumeClaimTemplates:
-    - apiVersion: v1
-      kind: PersistentVolumeClaim
-      metadata:
+    - metadata:
         name: datadir
         {{- if .Values.persistence.annotations }}
         annotations: {{- include "common.tplvalues.render" (dict "value" .Values.persistence.annotations "context" $) | nindent 10 }}
         {{- end }}
+        {{- if .Values.persistence.labels }}
+        labels: {{- include "common.tplvalues.render" (dict "value" .Values.persistence.labels "context" $) | nindent 10 }}
+        {{- end }}
       spec:
         accessModes:
         {{- range .Values.persistence.accessModes }}
index d955043..7ada019 100644 (file)
@@ -1,5 +1,5 @@
 {{- /*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
@@ -25,6 +25,7 @@ metadata:
   {{- end }}
 spec:
   type: ClusterIP
+  publishNotReadyAddresses: {{ $root.Values.service.publishNotReadyAddresses }}
   ports:
     - name: {{ $root.Values.service.portName | quote }}
       port: {{ $root.Values.service.ports.mongodb }}
index b37d192..651b963 100644 (file)
@@ -1,5 +1,5 @@
 {{- /*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
@@ -23,7 +23,7 @@ rules:
 {{- include "common.tplvalues.render" ( dict "value" .Values.rbac.rules "context" $ ) | nindent 2 }}
 {{- end -}}
 {{- if and (include "common.capabilities.psp.supported" .) .Values.podSecurityPolicy.create }}
-  - apiGroups: ['{{ template "podSecurityPolicy.apiGroup" . }}']
+  - apiGroups: ['policy']
     resources: ['podsecuritypolicies']
     verbs: ['use']
     resourceNames: [{{ include "mongodb.fullname" . }}]
index c6a76e6..7ff6b18 100644 (file)
@@ -1,5 +1,5 @@
 {{- /*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
index e1387ae..932b0e6 100644 (file)
@@ -1,5 +1,5 @@
 {{- /*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
index 004f2f3..c7526ef 100644 (file)
@@ -1,5 +1,5 @@
 {{- /*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
@@ -23,7 +23,7 @@ SPDX-License-Identifier: APACHE-2.0
 {{- end }}
 
 {{/* Root user section.  */}}
-{{- $rootPassword := include "common.secrets.passwords.manage" (dict "secret" (include "mongodb.secretName" .) "key" "mongodb-root-password" "providedValues" (list "auth.rootPassword" ) "context" $) | trimAll "\"" | b64dec }}
+{{- $rootPassword := include "common.secrets.passwords.manage" (dict "secret" (include "mongodb.secretName" .) "key" "mongodb-root-password" "providedValues" (list "auth.rootPassword" ) "honorProvidedValues" true "context" $) | trimAll "\"" | b64dec }}
 
 {{/* Custom user section. This chart allows creating multiple users */}}
 {{- $customUsers := include "mongodb.customUsers" . }}
@@ -46,7 +46,7 @@ SPDX-License-Identifier: APACHE-2.0
 {{- end -}}
 {{- $passwordList = (join "," $customPasswordsList) }}
 {{- end }}
-{{- $passwords = include "common.secrets.passwords.manage" (dict "secret" (include "mongodb.secretName" .) "key" "mongodb-passwords" "providedValues" (list "mongodbPasswords") "context" (set (deepCopy $) "Values" (dict "mongodbPasswords" $passwordList))) | trimAll "\"" | b64dec }}
+{{- $passwords = include "common.secrets.passwords.manage" (dict "secret" (include "mongodb.secretName" .) "key" "mongodb-passwords" "providedValues" (list "mongodbPasswords") "honorProvidedValues" true "context" (set (deepCopy $) "Values" (dict "mongodbPasswords" $passwordList))) | trimAll "\"" | b64dec }}
 {{- end }}
 
 {{- if (include "mongodb.createSecret" .) }}
@@ -67,10 +67,10 @@ data:
   mongodb-passwords: {{ print $passwords | b64enc | quote }}
   {{- end }}
   {{- if .Values.metrics.username }}
-  mongodb-metrics-password: {{ include "common.secrets.passwords.manage" (dict "secret" (include "mongodb.fullname" .) "key" "mongodb-metrics-password" "providedValues" (list "metrics.password" ) "context" $) }}
+  mongodb-metrics-password: {{ include "common.secrets.passwords.manage" (dict "secret" (include "mongodb.fullname" .) "key" "mongodb-metrics-password" "providedValues" (list "metrics.password" ) "honorProvidedValues" true "context" $) }}
   {{- end }}
   {{- if eq .Values.architecture "replicaset" }}
-  mongodb-replica-set-key: {{ include "common.secrets.passwords.manage" (dict "secret" (include "mongodb.fullname" .) "key" "mongodb-replica-set-key" "providedValues" (list "auth.replicaSetKey" ) "context" $) }}
+  mongodb-replica-set-key: {{ include "common.secrets.passwords.manage" (dict "secret" (include "mongodb.fullname" .) "key" "mongodb-replica-set-key" "providedValues" (list "auth.replicaSetKey" ) "honorProvidedValues" true "context" $) }}
   {{- end }}
 {{- end }}
 {{- if .Values.serviceBindings.enabled }}
index 6dd53ab..b54e8a0 100644 (file)
@@ -1,5 +1,5 @@
 {{- /*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
@@ -15,6 +15,6 @@ metadata:
   annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
   {{- end }}
 secrets:
-  - name: {{ template "mongodb.fullname" . }}
+  - name: {{ include "mongodb.secretName" . }}
 automountServiceAccountToken: {{ .Values.serviceAccount.automountServiceAccountToken }}
 {{- end }}
index 8273e4b..7849d46 100644 (file)
@@ -1,5 +1,5 @@
 {{- /*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
index 29dd406..3f02aeb 100644 (file)
@@ -1,5 +1,5 @@
 {{- /*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
@@ -37,11 +37,14 @@ spec:
     metadata:
       labels: {{- include "common.labels.standard" ( dict "customLabels" $podLabels "context" $ ) | nindent 8 }}
         app.kubernetes.io/component: mongodb
-      {{- if or (include "mongodb.createConfigmap" .) .Values.podAnnotations }}
+      {{- if or (include "mongodb.createConfigmap" .) .Values.podAnnotations .Values.passwordUpdateJob.enabled }}
       annotations:
         {{- if (include "mongodb.createConfigmap" .) }}
         checksum/configuration: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
         {{- end }}
+        {{- if .Values.passwordUpdateJob.enabled }}
+        charts.bitnami.com/password-last-update: {{ now | date "20060102150405" | quote }}
+        {{- end }}
         {{- if .Values.podAnnotations }}
         {{- include "common.tplvalues.render" (dict "value" .Values.podAnnotations "context" $) | nindent 8 }}
         {{- end }}
@@ -77,46 +80,20 @@ spec:
       runtimeClassName: {{ .Values.runtimeClassName }}
       {{- end }}
       {{- if .Values.podSecurityContext.enabled }}
-      securityContext: {{- omit .Values.podSecurityContext "enabled" | toYaml | nindent 8 }}
+      securityContext: {{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.podSecurityContext "context" $) | nindent 8 }}
       {{- end }}
       {{ if .Values.terminationGracePeriodSeconds }}
       terminationGracePeriodSeconds: {{ .Values.terminationGracePeriodSeconds }}
       {{- end }}
       enableServiceLinks: {{ .Values.enableServiceLinks }}
-      {{- if or .Values.initContainers (and .Values.volumePermissions.enabled .Values.persistence.enabled) .Values.tls.enabled }}
       initContainers:
         {{- if .Values.initContainers }}
         {{- include "common.tplvalues.render" (dict "value" .Values.initContainers "context" $) | nindent 8 }}
         {{- end }}
         {{- if and .Values.volumePermissions.enabled .Values.persistence.enabled }}
-        - name: volume-permissions
-          image: {{ include "mongodb.volumePermissions.image" . }}
-          imagePullPolicy: {{ .Values.volumePermissions.image.pullPolicy | quote }}
-          command:
-            - /bin/bash
-          args:
-            - -ec
-            - |
-              mkdir -p {{ printf "%s/%s" .Values.persistence.mountPath (default "" .Values.persistence.subPath) }}
-              chown {{ .Values.containerSecurityContext.runAsUser }}:{{ .Values.podSecurityContext.fsGroup }} {{ printf "%s/%s" .Values.persistence.mountPath (default "" .Values.persistence.subPath) }}
-              find  {{ printf "%s/%s" .Values.persistence.mountPath (default "" .Values.persistence.subPath) }} -mindepth 1 -maxdepth 1 -not -name ".snapshot" -not -name "lost+found" | xargs -r chown -R {{ .Values.containerSecurityContext.runAsUser }}:{{ .Values.podSecurityContext.fsGroup }}
-          {{- if eq ( toString ( .Values.volumePermissions.securityContext.runAsUser )) "auto" }}
-          securityContext: {{- omit .Values.volumePermissions.securityContext "runAsUser" | toYaml | nindent 12 }}
-          {{- else }}
-          securityContext: {{- .Values.volumePermissions.securityContext | toYaml | nindent 12 }}
-          {{- end }}
-          {{- if .Values.volumePermissions.resources }}
-          resources: {{- toYaml .Values.volumePermissions.resources | nindent 12 }}
-          {{- else if ne .Values.volumePermissions.resourcesPreset "none" }}
-          resources: {{- include "common.resources.preset" (dict "type" .Values.volumePermissions.resourcesPreset) | nindent 12 }}
-          {{- end }}
-          volumeMounts:
-            - name: empty-dir
-              mountPath: /tmp
-              subPath: tmp-dir
-            - name: {{ .Values.persistence.name | default "datadir" }}
-              mountPath: {{ .Values.persistence.mountPath }}
+        {{- include "mongodb.initContainer.volumePermissions" . | indent 8 }}
         {{- end }}
+        {{- include "mongodb.initContainer.prepareLogDir" . | nindent 8 }}
         {{- if .Values.tls.enabled }}
         - name: generate-tls-certs
           image: {{ include "mongodb.tls.image" . }}
@@ -152,25 +129,24 @@ spec:
             {{- if .Values.externalAccess.service.loadBalancerIPs }}
             - -i {{ join "," .Values.externalAccess.service.loadBalancerIPs }}
             {{- end }}
-            {{- if .Values.tls.extraDnsNames }}
-            - -n {{ join "," .Values.tls.extraDnsNames }}
+            {{- if or .Values.tls.extraDnsNames .Values.externalAccess.service.publicNames }}
+            - -n {{ join "," ( concat .Values.tls.extraDnsNames .Values.externalAccess.service.publicNames ) }}
             {{- end }}
           {{- if .Values.tls.resources }}
-          resources: {{- toYaml .Values.tls.resources | nindent 12 }}
+          resources: {{- include "common.tplvalues.render" (dict "value" .Values.tls.resources "context" $) | nindent 12 }}
           {{- else if ne .Values.tls.resourcesPreset "none" }}
           resources: {{- include "common.resources.preset" (dict "type" .Values.tls.resourcesPreset) | nindent 12 }}
           {{- end }}
           {{- if .Values.tls.securityContext }}
-          securityContext: {{- toYaml .Values.tls.securityContext | nindent 12 }}
+          securityContext: {{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.tls.securityContext "context" $) | nindent 12 }}
           {{- end }}
         {{- end }}
-      {{- end }}
       containers:
         - name: mongodb
           image: {{ include "mongodb.image" . }}
           imagePullPolicy: {{ .Values.image.pullPolicy | quote }}
           {{- if .Values.containerSecurityContext.enabled }}
-          securityContext: {{- omit .Values.containerSecurityContext "enabled" | toYaml | nindent 12 }}
+          securityContext: {{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.containerSecurityContext "context" $) | nindent 12 }}
           {{- end }}
           {{- if .Values.diagnosticMode.enabled }}
           command: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.command "context" $) | nindent 12 }}
@@ -200,24 +176,38 @@ spec:
             {{- end }}
             {{- if .Values.auth.enabled }}
             {{- if and (not (empty $customUsers)) (not (empty $customDatabases)) }}
+            {{- if .Values.usePasswordFiles }}
+            - name: MONGODB_EXTRA_PASSWORDS_FILE
+              value: "/opt/bitnami/mongodb/secrets/mongodb-passwords"
+            {{- else }}
             - name: MONGODB_EXTRA_PASSWORDS
               valueFrom:
                 secretKeyRef:
                   name: {{ include "mongodb.secretName" . }}
                   key: mongodb-passwords
             {{- end }}
+            {{- end }}
             - name: MONGODB_ROOT_USER
               value: {{ .Values.auth.rootUser | quote }}
+            {{- if .Values.usePasswordFiles }}
+            - name: MONGODB_ROOT_PASSWORD_FILE
+              value: "/opt/bitnami/mongodb/secrets/mongodb-root-password"
+            {{- else }}
             - name: MONGODB_ROOT_PASSWORD
               valueFrom:
                 secretKeyRef:
                   name: {{ include "mongodb.secretName" . }}
                   key: mongodb-root-password
             {{- end }}
+            {{- end }}
             {{- if and .Values.metrics.enabled (not (empty .Values.metrics.username)) }}
             - name: MONGODB_METRICS_USERNAME
               value: {{ .Values.metrics.username | quote }}
             {{- if .Values.auth.enabled }}
+            {{- if .Values.usePasswordFiles }}
+            - name: MONGODB_METRICS_PASSWORD_FILE
+              value: "/opt/bitnami/mongodb/secrets/mongodb-metrics-password"
+            {{- else }}
             - name: MONGODB_METRICS_PASSWORD
               valueFrom:
                 secretKeyRef:
@@ -225,6 +215,7 @@ spec:
                   key: mongodb-metrics-password
             {{- end }}
             {{- end }}
+            {{- end }}
             - name: ALLOW_EMPTY_PASSWORD
               value: {{ ternary "no" "yes" .Values.auth.enabled | quote }}
             - name: MONGODB_SYSTEM_LOG_VERBOSITY
@@ -304,7 +295,7 @@ spec:
           {{- end }}
           {{- end }}
           {{- if .Values.resources }}
-          resources: {{- toYaml .Values.resources | nindent 12 }}
+          resources: {{- include "common.tplvalues.render" (dict "value" .Values.resources "context" $) | nindent 12 }}
           {{- else if ne .Values.resourcesPreset "none" }}
           resources: {{- include "common.resources.preset" (dict "type" .Values.resourcesPreset) | nindent 12 }}
           {{- end }}
@@ -321,11 +312,18 @@ spec:
             - name: empty-dir
               mountPath: /opt/bitnami/mongodb/logs
               subPath: app-logs-dir
+            - name: empty-dir
+              mountPath: /.mongodb
+              subPath: mongosh-home
             - name: {{ .Values.persistence.name | default "datadir" }}
               mountPath: {{ .Values.persistence.mountPath }}
               subPath: {{ .Values.persistence.subPath }}
             - name: common-scripts
               mountPath: /bitnami/scripts
+            {{- if and .Values.usePasswordFiles .Values.auth.enabled }}
+            - name: mongodb-secrets
+              mountPath: /opt/bitnami/mongodb/secrets
+            {{- end }}
             {{- if or .Values.initdbScriptsConfigMap .Values.initdbScripts }}
             - name: custom-init-scripts
               mountPath: /docker-entrypoint-initdb.d
@@ -347,7 +345,7 @@ spec:
           image: {{ template "mongodb.metrics.image" . }}
           imagePullPolicy: {{ .Values.metrics.image.pullPolicy | quote }}
           {{- if .Values.containerSecurityContext.enabled }}
-          securityContext: {{- omit .Values.containerSecurityContext "enabled" | toYaml | nindent 12 }}
+          securityContext: {{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.containerSecurityContext "context" $) | nindent 12 }}
           {{- end }}
           {{- if .Values.diagnosticMode.enabled }}
           command: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.command "context" $) | nindent 12 }}
@@ -365,6 +363,13 @@ spec:
           {{- else }}
           args:
             - |
+              {{- if and .Values.usePasswordFiles .Values.auth.enabled }}
+              {{- if .Values.metrics.username }}
+              export MONGODB_METRICS_PASSWORD="$(< $MONGODB_METRICS_PASSWORD_FILE)"
+              {{- else }}
+              export MONGODB_ROOT_PASSWORD="$(< $MONGODB_ROOT_PASSWORD_FILE)"
+              {{- end }}
+              {{- end }}
               /bin/mongodb_exporter {{ include "mongodb.exporterArgs" $ }} --mongodb.direct-connect --mongodb.global-conn-pool --web.listen-address ":{{ .Values.metrics.containerPort }}" --mongodb.uri "{{ include "mongodb.mongodb_exporter.uri" . }}" {{ .Values.metrics.extraFlags }}
           {{- end }}
           env:
@@ -372,14 +377,23 @@ spec:
             {{- if not .Values.metrics.username }}
             - name: MONGODB_ROOT_USER
               value: {{ .Values.auth.rootUser | quote }}
+            {{- if .Values.usePasswordFiles }}
+            - name: MONGODB_ROOT_PASSWORD_FILE
+              value: "/opt/bitnami/mongodb/secrets/mongodb-root-password"
+            {{- else }}
             - name: MONGODB_ROOT_PASSWORD
               valueFrom:
                 secretKeyRef:
                   name: {{ include "mongodb.secretName" . }}
                   key: mongodb-root-password
+            {{- end }}
             {{- else }}
             - name: MONGODB_METRICS_USERNAME
               value: {{ .Values.metrics.username | quote }}
+            {{- if .Values.usePasswordFiles }}
+            - name: MONGODB_METRICS_PASSWORD_FILE
+              value: "/opt/bitnami/mongodb/secrets/mongodb-metrics-password"
+            {{- else }}
             - name: MONGODB_METRICS_PASSWORD
               valueFrom:
                 secretKeyRef:
@@ -387,10 +401,15 @@ spec:
                   key: mongodb-metrics-password
             {{- end }}
             {{- end }}
+            {{- end }}
           volumeMounts:
             - name: empty-dir
               mountPath: /tmp
               subPath: tmp-dir
+            {{- if and .Values.usePasswordFiles .Values.auth.enabled }}
+            - name: mongodb-secrets
+              mountPath: /opt/bitnami/mongodb/secrets
+            {{- end }}
             {{- if .Values.tls.enabled }}
             - name: certs
               mountPath: /certs
@@ -406,8 +425,7 @@ spec:
           livenessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.metrics.customLivenessProbe "context" $) | nindent 12 }}
           {{- else if .Values.metrics.livenessProbe.enabled }}
           livenessProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.metrics.livenessProbe "enabled") "context" $) | nindent 12 }}
-            httpGet:
-              path: /
+            tcpSocket:
               port: metrics
           {{- end }}
           {{- if .Values.metrics.customReadinessProbe }}
@@ -427,7 +445,7 @@ spec:
           {{- end }}
           {{- end }}
           {{- if .Values.metrics.resources }}
-          resources: {{- toYaml .Values.metrics.resources | nindent 12 }}
+          resources: {{- include "common.tplvalues.render" (dict "value" .Values.metrics.resources "context" $) | nindent 12 }}
           {{- else if ne .Values.metrics.resourcesPreset "none" }}
           resources: {{- include "common.resources.preset" (dict "type" .Values.metrics.resourcesPreset) | nindent 12 }}
           {{- end }}
@@ -437,11 +455,17 @@ spec:
         {{- end }}
       volumes:
         - name: empty-dir
-          emptyDir: {}
+          emptyDir:
+            sizeLimit: {{ .Values.standalone.emptyDir.sizeLimit }}
         - name: common-scripts
           configMap:
             name: {{ printf "%s-common-scripts" (include "mongodb.fullname" .) }}
-            defaultMode: 0550
+            defaultMode: 0o550
+        {{- if and .Values.usePasswordFiles .Values.auth.enabled }}
+        - name: mongodb-secrets
+          secret:
+            secretName: {{ include "mongodb.secretName" . }}
+        {{- end }}
         {{- if or .Values.initdbScriptsConfigMap .Values.initdbScripts }}
         - name: custom-init-scripts
           configMap:
@@ -457,7 +481,8 @@ spec:
         {{- end }}
         {{- if .Values.tls.enabled }}
         - name: certs
-          emptyDir: {}
+          emptyDir:
+            sizeLimit: 64Mi
         {{- if (include "mongodb.autoGenerateCerts" .) }}
         - name: certs-volume
           secret:
@@ -465,10 +490,10 @@ spec:
             items:
             - key: mongodb-ca-cert
               path: mongodb-ca-cert
-              mode: 0600
+              mode: 0o600
             - key: mongodb-ca-key
               path: mongodb-ca-key
-              mode: 0600
+              mode: 0o600
         {{- else }}
         - name: mongodb-certs-0
           secret:
@@ -481,8 +506,10 @@ spec:
           {{- if .Values.persistence.medium }}
           emptyDir:
             medium: {{ .Values.persistence.medium | quote }}
+            sizeLimit: 64Mi
           {{- else }}
-          emptyDir: {}
+          emptyDir:
+            sizeLimit: 64Mi
           {{- end }}
   {{- else if .Values.persistence.existingClaim }}
         - name: {{ .Values.persistence.name | default "datadir" }}
@@ -504,6 +531,9 @@ spec:
         {{- if .Values.persistence.annotations }}
         annotations: {{- include "common.tplvalues.render" (dict "value" .Values.persistence.annotations "context" $) | nindent 10 }}
         {{- end }}
+        {{- if .Values.persistence.labels }}
+        labels: {{- include "common.tplvalues.render" (dict "value" .Values.persistence.labels "context" $) | nindent 10 }}
+        {{- end }}
       spec:
         accessModes:
         {{- range .Values.persistence.accessModes }}
diff --git a/kubernetes/common/mongodb/templates/standalone/pdb.yaml b/kubernetes/common/mongodb/templates/standalone/pdb.yaml
new file mode 100644 (file)
index 0000000..d11b39a
--- /dev/null
@@ -0,0 +1,28 @@
+{{- /*
+Copyright Broadcom, Inc. All Rights Reserved.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+{{- if and (not (eq .Values.architecture "replicaset")) .Values.pdb.create }}
+apiVersion: {{ include "common.capabilities.policy.apiVersion" . }}
+kind: PodDisruptionBudget
+metadata:
+  name: {{ include "mongodb.fullname" . }}
+  namespace: {{ include "mongodb.namespace" . | quote }}
+  labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
+    app.kubernetes.io/component: mongodb
+  {{- if .Values.commonAnnotations }}
+  annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
+  {{- end }}
+spec:
+  {{- if .Values.pdb.minAvailable }}
+  minAvailable: {{ .Values.pdb.minAvailable }}
+  {{- end }}
+  {{- if or .Values.pdb.maxUnavailable (not .Values.pdb.minAvailable) }}
+  maxUnavailable: {{ .Values.pdb.maxUnavailable | default 1 }}
+  {{- end }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.podLabels .Values.commonLabels ) "context" . ) }}
+  selector:
+    matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }}
+      app.kubernetes.io/component: mongodb
+{{- end }}
index d59bad9..1609858 100644 (file)
@@ -1,5 +1,5 @@
 {{- /*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
index 5d0d03f..772c8cf 100644 (file)
@@ -1,5 +1,5 @@
 {{- /*
-Copyright VMware, Inc.
+Copyright Broadcom, Inc. All Rights Reserved.
 SPDX-License-Identifier: APACHE-2.0
 */}}
 
@@ -44,6 +44,7 @@ spec:
   {{- if (or (eq .Values.service.type "LoadBalancer") (eq .Values.service.type "NodePort")) }}
   externalTrafficPolicy: {{ .Values.service.externalTrafficPolicy | quote }}
   {{- end }}
+  publishNotReadyAddresses: {{ .Values.service.publishNotReadyAddresses }}
   ports:
     - name: {{ .Values.service.portName | quote }}
       port: {{ .Values.service.ports.mongodb }}
diff --git a/kubernetes/common/mongodb/templates/update-password/job.yaml b/kubernetes/common/mongodb/templates/update-password/job.yaml
new file mode 100644 (file)
index 0000000..587f816
--- /dev/null
@@ -0,0 +1,245 @@
+{{- /*
+Copyright Broadcom, Inc. All Rights Reserved.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+{{- if .Values.passwordUpdateJob.enabled }}
+{{- $customUsers := include "mongodb.customUsers" . }}
+{{- $customDatabases := include "mongodb.customDatabases" . }}
+apiVersion: batch/v1
+kind: Job
+metadata:
+  name: {{ printf "%s-password-update" (include "common.names.fullname" .) | trunc 63 | trimSuffix "-" }}
+  namespace: {{ include "common.names.namespace" . | quote }}
+  labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
+    app.kubernetes.io/part-of: mongodb
+    app.kubernetes.io/component: update-job
+  {{- $defaultAnnotations := dict "helm.sh/hook" "pre-upgrade" "helm.sh/hook-delete-policy" "hook-succeeded" }}
+  {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.commonAnnotations $defaultAnnotations .Values.passwordUpdateJob.annotations ) "context" . ) }}
+  annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $ ) | nindent 4 }}
+spec:
+  backoffLimit: {{ .Values.passwordUpdateJob.backoffLimit }}
+  template:
+    metadata:
+      {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.passwordUpdateJob.podLabels .Values.commonLabels ) "context" . ) }}
+      labels: {{- include "common.labels.standard" ( dict "customLabels" $podLabels "context" $ ) | nindent 8 }}
+        app.kubernetes.io/part-of: mongodb
+        app.kubernetes.io/component: update-job
+      {{- if .Values.passwordUpdateJob.podAnnotations }}
+      annotations: {{- include "common.tplvalues.render" (dict "value" .Values.passwordUpdateJob.podAnnotations "context" $) | nindent 8 }}
+      {{- end }}
+    spec:
+      {{- include "mongodb.imagePullSecrets" . | nindent 6 }}
+      restartPolicy: OnFailure
+      {{- if .Values.passwordUpdateJob.podSecurityContext.enabled }}
+      securityContext: {{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.passwordUpdateJob.podSecurityContext "context" $) | nindent 8 }}
+      {{- end }}
+      automountServiceAccountToken: {{ .Values.passwordUpdateJob.automountServiceAccountToken }}
+      {{- if .Values.passwordUpdateJob.hostAliases }}
+      hostAliases: {{- include "common.tplvalues.render" (dict "value" .Values.passwordUpdateJob.hostAliases "context" $) | nindent 8 }}
+      {{- end }}
+      initContainers:
+        {{- if .Values.passwordUpdateJob.initContainers }}
+        {{- include "common.tplvalues.render" (dict "value" .Values.passwordUpdateJob.initContainers "context" $) | nindent 8 }}
+        {{- end }}
+      containers:
+        - name: update-credentials
+          image: {{ template "mongodb.image" . }}
+          imagePullPolicy: {{ .Values.image.pullPolicy }}
+          {{- if .Values.passwordUpdateJob.command }}
+          command: {{- include "common.tplvalues.render" (dict "value" .Values.passwordUpdateJob.command "context" $) | nindent 12 }}
+          {{- else }}
+          command:
+            - /bin/bash
+            - -ec
+          {{- end }}
+          {{- if .Values.passwordUpdateJob.args }}
+          args: {{- include "common.tplvalues.render" (dict "value" .Values.passwordUpdateJob.args "context" $) | nindent 12 }}
+          {{- else }}
+          args:
+            - |
+              {{- if .Values.usePasswordFiles }}
+              # We need to load all the secret env vars to the system
+              for file in $(find /bitnami/mongodb/secrets -type f); do
+                  env_var_name="$(basename $file)"
+                  echo "Exporting $env_var_name"
+                  export $env_var_name="$(< $file)"
+              done
+              {{- end }}
+
+              . /opt/bitnami/scripts/mongodb-env.sh
+              . /opt/bitnami/scripts/libmongodb.sh
+              . /opt/bitnami/scripts/liblog.sh
+
+              protocol=mongodb
+              {{- if eq .Values.architecture "replicaset" }}
+              replicaset={{- range $i, $_ := until (int .Values.replicaCount) }}{{- if ne $i 0 }},{{- end }}{{ include "common.names.fullname" $ }}-{{ $i }}.{{ include "mongodb.service.nameOverride" $ }}:{{ $.Values.containerPorts.mongodb }}{{- end }}
+              {{- else }}
+              replicaset={{ include "common.names.fullname" . }}:{{ .Values.service.ports.mongodb }}
+              {{- end }}
+
+              info "Starting password update job"
+              if [[ -f /job-status/root-password-changed ]]; then
+                  info "Root password already updated. Skipping"
+              else
+                  info "Updating root password"
+                  mongosh "${protocol}://$MONGODB_ROOT_USER:$MONGODB_PREVIOUS_ROOT_PASSWORD@$replicaset/admin" --eval "db.changeUserPassword('$MONGODB_ROOT_USER', '$MONGODB_NEW_ROOT_PASSWORD')"
+                  touch /job-status/root-password-changed
+                  info "Root password successfully updated"
+              fi
+              {{- if and (not (empty $customUsers)) (not (empty $customDatabases)) }}
+
+              databases_extra=()
+              usernames_extra=()
+              IFS="$(mongodb_field_separator "$MONGODB_EXTRA_DATABASES")" read -r -a databases_extra <<<"$MONGODB_EXTRA_DATABASES"
+              IFS="$(mongodb_field_separator "$MONGODB_EXTRA_USERNAMES")" read -r -a usernames_extra <<<"$MONGODB_EXTRA_USERNAMES"
+              new_passwords_extra=()
+              IFS="$(mongodb_field_separator "$MONGODB_NEW_EXTRA_PASSWORDS")" read -r -a new_passwords_extra <<<"$MONGODB_NEW_EXTRA_PASSWORDS"
+
+              for ((i = 0; i < ${#usernames_extra[@]}; i++)); do
+                  if [[ -f /job-status/password-${usernames_extra[i]}-changed ]]; then
+                      info "User ${usernames_extra[i]} password already updated. Skipping"
+                  else
+                      info "Updating user ${usernames_extra[i]} password"
+                      mongosh "${protocol}://$MONGODB_ROOT_USER:$MONGODB_NEW_ROOT_PASSWORD@$replicaset/${databases_extra[i]}?authSource=admin" --eval "db.changeUserPassword('${usernames_extra[i]}', '${new_passwords_extra[i]}');"
+                      touch /job-status/password-${usernames_extra[i]}-changed
+                      info "User ${usernames_extra[i]} password successfully updated"
+                  fi
+              done
+
+              {{- end }}
+
+              {{- if .Values.metrics.username }}
+              if [[ -f /job-status/metrics-password-changed ]]; then
+                  info "Metrics password already updated. Skipping"
+              else
+                  info "Updating metrics password"
+                  mongosh "${protocol}://$MONGODB_ROOT_USER:$MONGODB_NEW_ROOT_PASSWORD@$replicaset/admin" --eval "db.changeUserPassword('$MONGODB_METRICS_USER', '$MONGODB_NEW_METRICS_PASSWORD')"
+                  touch /job-status/root-password-changed
+                  info "Metrics password successfully updated"
+              fi
+              {{- end }}
+
+              {{- if .Values.passwordUpdateJob.extraCommands }}
+              info "Running extra commmands"
+              {{- include "common.tplvalues.render" (dict "value" .Values.passwordUpdateJob.extraCommands "context" $) | nindent 14 }}
+              {{- end }}
+              info "Password update job finished successfully"
+          {{- end }}
+          env:
+            - name: BITNAMI_DEBUG
+              value: {{ ternary "true" "false" .Values.image.debug | quote }}
+            {{- if not .Values.usePasswordFiles }}
+            - name: MONGODB_PREVIOUS_ROOT_PASSWORD
+              valueFrom:
+                secretKeyRef:
+                  name: {{ template "mongodb.update-job.previousSecretName" . }}
+                  key: mongodb-root-password
+            - name: MONGODB_NEW_ROOT_PASSWORD
+              valueFrom:
+                secretKeyRef:
+                  name: {{ template "mongodb.update-job.newSecretName" . }}
+                  key: mongodb-root-password
+            {{- end }}
+            {{- if and (not (empty $customUsers)) (not (empty $customDatabases)) }}
+            - name: MONGODB_EXTRA_USERNAMES
+              value: {{ $customUsers | quote }}
+            - name: MONGODB_EXTRA_DATABASES
+              value: {{ $customDatabases | quote }}
+            {{- if not .Values.usePasswordFiles }}
+            - name: MONGODB_NEW_EXTRA_PASSWORDS
+              valueFrom:
+                secretKeyRef:
+                  name: {{ template "mongodb.update-job.newSecretName" . }}
+                  key: mongodb-passwords
+            {{- end }}
+            {{- end }}
+            {{- if .Values.metrics.username }}
+            - name: MONGODB_METRICS_USER
+              value: {{ .Values.metrics.username | quote }}
+            {{- if not .Values.usePasswordFiles }}
+            - name: MONGODB_PREVIOUS_METRICS_PASSWORD
+              valueFrom:
+                secretKeyRef:
+                  name: {{ template "mongodb.update-job.previousSecretName" . }}
+                  key: mongodb-metrics-password
+            - name: MONGODB_NEW_METRICS_PASSWORD
+              valueFrom:
+                secretKeyRef:
+                  name: {{ template "mongodb.update-job.newSecretName" . }}
+                  key: mongodb-metrics-password
+            {{- end }}
+            {{- end }}
+            {{- if .Values.passwordUpdateJob.extraEnvVars }}
+            {{- include "common.tplvalues.render" (dict "value" .Values.passwordUpdateJob.extraEnvVars "context" $) | nindent 12 }}
+            {{- end }}
+          {{- if or .Values.passwordUpdateJob.extraEnvVarsCM .Values.passwordUpdateJob.extraEnvVarsSecret }}
+          envFrom:
+            {{- if .Values.passwordUpdateJob.extraEnvVarsCM }}
+            - configMapRef:
+                name: {{ .Values.passwordUpdateJob.extraEnvVarsCM }}
+            {{- end }}
+            {{- if .Values.passwordUpdateJob.extraEnvVarsSecret }}
+            - secretRef:
+                name: {{ .Values.passwordUpdateJob.extraEnvVarsSecret }}
+            {{- end }}
+          {{- end }}
+          {{- if .Values.passwordUpdateJob.containerSecurityContext.enabled }}
+          securityContext: {{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.passwordUpdateJob.containerSecurityContext "context" $) | nindent 12 }}
+          {{- end }}
+          {{- if .Values.passwordUpdateJob.customLivenessProbe }}
+          livenessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.passwordUpdateJob.customLivenessProbe "context" $) | nindent 12 }}
+          {{- end }}
+          {{- if .Values.passwordUpdateJob.customReadinessProbe }}
+          readinessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.passwordUpdateJob.customReadinessProbe "context" $) | nindent 12 }}
+          {{- end }}
+          {{- if .Values.passwordUpdateJob.customStartupProbe }}
+          startupProbe: {{- include "common.tplvalues.render" (dict "value" .Values.passwordUpdateJob.customStartupProbe "context" $) | nindent 12 }}
+          {{- end }}
+          volumeMounts:
+            - name: empty-dir
+              mountPath: /job-status
+              subPath: job-dir
+            {{- if .Values.usePasswordFiles }}
+            - name: mongodb-previous-credentials
+              mountPath: /bitnami/mongodb/secrets/previous
+            - name: mongodb-new-credentials
+              mountPath: /bitnami/mongodb/secrets/new
+            {{- end }}
+          {{- if .Values.passwordUpdateJob.extraVolumeMounts }}
+            {{- include "common.tplvalues.render" (dict "value" .Values.passwordUpdateJob.extraVolumeMounts "context" $) | nindent 12 }}
+          {{- end }}
+          {{- if .Values.passwordUpdateJob.resources }}
+          resources: {{- toYaml .Values.passwordUpdateJob.resources | nindent 12 }}
+          {{- else if ne .Values.passwordUpdateJob.resourcesPreset "none" }}
+          resources: {{- include "common.resources.preset" (dict "type" .Values.passwordUpdateJob.resourcesPreset) | nindent 12 }}
+          {{- end }}
+      volumes:
+        - name: empty-dir
+          emptyDir: {}
+        {{- if and .Values.usePasswordFiles }}
+        - name: mongodb-previous-credentials
+          secret:
+            secretName: {{ template "mongodb.update-job.previousSecretName" . }}
+            items:
+              - key: mongodb-root-password
+                path: MONGODB_PREVIOUS_ROOT_PASSWORD
+        - name: mongodb-new-credentials
+          secret:
+            secretName: {{ template "mongodb.update-job.newSecretName" . }}
+            items:
+              - key: mongodb-root-password
+                path: MONGODB_NEW_ROOT_PASSWORD
+              {{- if and (not (empty $customUsers)) (not (empty $customDatabases)) }}
+              - key: mongodb-passwords
+                path: MONGODB_NEW_EXTRA_PASSWORDS
+              {{- end }}
+              {{- if .Values.metrics.username }}
+              - key: mongodb-metrics-password
+                path: MONGODB_NEW_METRICS_PASSWORD
+              {{- end }}
+        {{- end }}
+      {{- if .Values.passwordUpdateJob.extraVolumes }}
+      {{- include "common.tplvalues.render" (dict "value" .Values.passwordUpdateJob.extraVolumes "context" $) | nindent 8 }}
+      {{- end }}
+{{- end }}
diff --git a/kubernetes/common/mongodb/templates/update-password/new-secret.yaml b/kubernetes/common/mongodb/templates/update-password/new-secret.yaml
new file mode 100644 (file)
index 0000000..0e0386a
--- /dev/null
@@ -0,0 +1,32 @@
+{{- /*
+Copyright Broadcom, Inc. All Rights Reserved.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+{{- if and .Values.passwordUpdateJob.enabled (include "mongodb.createSecret" .) (not ( include "mongodb.createPreviousSecret" . )) (not .Values.passwordUpdateJob.previousPasswords.existingSecret) }}
+{{- $rootPassword := .Values.auth.rootPassword }}
+{{- $metricsPassword := .Values.metrics.password }}
+{{- $customUsers := include "mongodb.customUsers" . }}
+{{- $customPasswords := join "," (include "mongodb.customPasswords" .) }}
+{{- $customDatabases := include "mongodb.customDatabases" . }}
+{{- $replicationPassword := .Values.auth.replicationPassword }}
+apiVersion: v1
+kind: Secret
+metadata:
+  name: {{ printf "%s-new-secret" (include "common.names.fullname" .) | trunc 63 | trimSuffix "-" }}
+  namespace: {{ include "common.names.namespace" . | quote }}
+  labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
+    app.kubernetes.io/part-of: mongodb
+  {{- $defaultAnnotations := dict "helm.sh/hook" "pre-upgrade" "helm.sh/hook-delete-policy" "hook-succeeded" }}
+  {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.commonAnnotations $defaultAnnotations ) "context" . ) }}
+  annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $ ) | nindent 4 }}
+type: Opaque
+data:
+  mongodb-root-password: {{ required "The new root password is required!" $rootPassword | b64enc | quote }}
+  {{- if and (not (empty $customUsers)) (not (empty $customDatabases)) }}
+  mongodb-passwords: {{ required "The new custom passwords are required!" $customPasswords | b64enc | quote }}
+  {{- end }}
+  {{- if .Values.metrics.username }}
+  mongodb-metrics-password: {{ required "The new metrics password is required!" $metricsPassword | b64enc | quote }}
+  {{- end }}
+{{- end }}
diff --git a/kubernetes/common/mongodb/templates/update-password/previous-secret.yaml b/kubernetes/common/mongodb/templates/update-password/previous-secret.yaml
new file mode 100644 (file)
index 0000000..a1db9f8
--- /dev/null
@@ -0,0 +1,21 @@
+{{- /*
+Copyright Broadcom, Inc. All Rights Reserved.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+{{- if and .Values.passwordUpdateJob.enabled (eq ( include "mongodb.createPreviousSecret" . ) "true") }}
+{{- $rootPassword := .Values.passwordUpdateJob.previousPasswords.rootPassword }}
+apiVersion: v1
+kind: Secret
+metadata:
+  name: {{ printf "%s-previous-secret" (include "common.names.fullname" .) | trunc 63 | trimSuffix "-" }}
+  namespace: {{ include "common.names.namespace" . | quote }}
+  labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
+    app.kubernetes.io/part-of: mongodb
+  {{- $defaultAnnotations := dict "helm.sh/hook" "pre-upgrade" "helm.sh/hook-delete-policy" "hook-succeeded" }}
+  {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.commonAnnotations $defaultAnnotations ) "context" . ) }}
+  annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $ ) | nindent 4 }}
+type: Opaque
+data:
+  mongodb-root-password: {{ required "The previous root password is required!" $rootPassword | b64enc | quote }}
+{{- end }}
index 8d995ce..cbea26c 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright VMware, Inc.
+# Copyright Broadcom, Inc. All Rights Reserved.
 # SPDX-License-Identifier: APACHE-2.0
 
 ## @section Global parameters
@@ -9,7 +9,8 @@
 
 ## @param global.imageRegistry Global Docker image registry
 ## @param global.imagePullSecrets Global Docker registry secret names as an array
-## @param global.storageClass Global StorageClass for Persistent Volume(s)
+## @param global.defaultStorageClass Global default StorageClass for Persistent Volume(s)
+## @param global.storageClass DEPRECATED: use global.defaultStorageClass instead
 ## @param global.namespaceOverride Override the namespace for resource deployed by the chart, but can itself be overridden by the local namespaceOverride
 ##
 global:
@@ -19,8 +20,23 @@ global:
   ##   - myRegistryKeySecretName
   ##
   imagePullSecrets: []
+  defaultStorageClass: ""
   storageClass: ""
+  ## Security parameters
+  ##
+  security:
+    ## @param global.security.allowInsecureImages Allows skipping image verification
+    allowInsecureImages: false
   namespaceOverride: ""
+  ## Compatibility adaptations for Kubernetes platforms
+  ##
+  compatibility:
+    ## Compatibility adaptations for Openshift
+    ##
+    openshift:
+      ## @param global.compatibility.openshift.adaptSecurityContext Adapt the securityContext sections of the deployment to make them compatible with Openshift restricted-v2 SCC: remove runAsUser, runAsGroup and fsGroup and let the platform use their allowed default IDs. Possible values: auto (apply if the detected running cluster is Openshift), force (perform the adaptation always), disabled (do not perform adaptation)
+      ##
+      adaptSecurityContext: auto
 ## @section Common parameters
 ##
 
@@ -90,6 +106,9 @@ serviceBindings:
 ## If you experience slow pod startups or slow running of the scripts you probably want to set this to `false`.
 ##
 enableServiceLinks: true
+## @param usePasswordFiles Mount credentials as files instead of using environment variables
+##
+usePasswordFiles: true
 ## Enable diagnostic mode in the deployment
 ##
 diagnosticMode:
@@ -120,7 +139,7 @@ diagnosticMode:
 image:
   registry: docker.io
   repository: bitnami/mongodb
-  tag: 7.0.5-debian-12-r5
+  tag: 8.0.9-debian-12-r0
   digest: ""
   ## Specify a imagePullPolicy
   ## ref: https://kubernetes.io/docs/concepts/containers/images/#pre-pulled-images
@@ -246,7 +265,7 @@ tls:
   image:
     registry: docker.io
     repository: bitnami/nginx
-    tag: 1.25.4-debian-12-r1
+    tag: 1.28.0-debian-12-r0
     digest: ""
     pullPolicy: IfNotPresent
     ## Optionally specify an array of imagePullSecrets.
@@ -272,10 +291,10 @@ tls:
   ## choice for the user. This also increases chances charts run on environments with little
   ## resources, such as Minikube. If you do want to specify resources, uncomment the following
   ## lines, adjust them as necessary, and remove the curly braces after 'resources:'.
-  ## @param tls.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, small, medium, large, xlarge, 2xlarge). This is ignored if tls.resources is set (tls.resources is recommended for production).
+  ## @param tls.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if tls.resources is set (tls.resources is recommended for production).
   ## More information: https://github.com/bitnami/charts/blob/main/bitnami/common/templates/_resources.tpl#L15
   ##
-  resourcesPreset: "none"
+  resourcesPreset: "nano"
   ## @param tls.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads)
   ## Example:
   ## resources:
@@ -307,6 +326,14 @@ hostAliases: []
 ## @param replicaSetName Name of the replica set (only when `architecture=replicaset`)
 ## Ignored when mongodb.architecture=standalone
 ##
+replicaSet:
+  emptyDir:
+    sizeLimit: 1Gi
+
+standalone:
+  emptyDir:
+    sizeLimit: 1Gi
+
 replicaSetName: rs0
 ## @param replicaSetHostnames Enable DNS hostnames in the replicaset config (only when `architecture=replicaset`)
 ## Ignored when mongodb.architecture=standalone
@@ -571,15 +598,17 @@ podSecurityContext:
 ##
 containerSecurityContext:
   enabled: true
-  seLinuxOptions: null
+  seLinuxOptions: {}
   runAsUser: 1001
-  runAsGroup: 0
+  runAsGroup: 1001
   runAsNonRoot: true
   privileged: false
-  readOnlyRootFilesystem: false
+  readOnlyRootFilesystem: true
   allowPrivilegeEscalation: false
   capabilities:
-    drop: ["ALL"]
+    drop:
+      - ALL
+      - CAP_NET_RAW
   seccompProfile:
     type: "RuntimeDefault"
 ## MongoDB(&reg;) containers' resource requests and limits.
@@ -588,10 +617,10 @@ containerSecurityContext:
 ## choice for the user. This also increases chances charts run on environments with little
 ## resources, such as Minikube. If you do want to specify resources, uncomment the following
 ## lines, adjust them as necessary, and remove the curly braces after 'resources:'.
-## @param resourcesPreset Set container resources according to one common preset (allowed values: none, nano, small, medium, large, xlarge, 2xlarge). This is ignored if resources is set (resources is recommended for production).
+## @param resourcesPreset Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if resources is set (resources is recommended for production).
 ## More information: https://github.com/bitnami/charts/blob/main/bitnami/common/templates/_resources.tpl#L15
 ##
-resourcesPreset: "none"
+resourcesPreset: "small"
 ## @param resources Set container requests and limits for different resources like CPU or memory (essential for production workloads)
 ## Example:
 ## resources:
@@ -726,11 +755,11 @@ extraVolumes: []
 pdb:
   ## @param pdb.create Enable/disable a Pod Disruption Budget creation for MongoDB(&reg;) pod(s)
   ##
-  create: false
+  create: true
   ## @param pdb.minAvailable Minimum number/percentage of MongoDB(&reg;) pods that must still be available after the eviction
   ##
-  minAvailable: 1
-  ## @param pdb.maxUnavailable Maximum number/percentage of MongoDB(&reg;) pods that may be made unavailable after the eviction
+  minAvailable: ""
+  ## @param pdb.maxUnavailable Maximum number/percentage of MongoDB(&reg;) pods that may be made unavailable after the eviction. Defaults to `1` if both `pdb.minAvailable` and `pdb.maxUnavailable` are empty.
   ##
   maxUnavailable: ""
 ## @section Traffic exposure parameters
@@ -808,6 +837,10 @@ service:
     ## @param service.headless.annotations Annotations for the headless service.
     ##
     annotations: {}
+  ## @param service.publishNotReadyAddresses Indicates that any agent which deals with endpoints for this Service should disregard any indications of ready/not-ready
+  ## ref: https://kubernetes.io/docs/reference/kubernetes-api/service-resources/service-v1/
+  ##
+  publishNotReadyAddresses: false
 ## External Access to MongoDB(&reg;) nodes configuration
 ##
 externalAccess:
@@ -834,10 +867,9 @@ externalAccess:
     image:
       registry: docker.io
       repository: bitnami/kubectl
-      tag: 1.29.2-debian-12-r1
+      tag: 1.33.0-debian-12-r1
       digest: ""
       ## Specify a imagePullPolicy
-      ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
       ## ref: https://kubernetes.io/docs/concepts/containers/images/#pre-pulled-images
       ##
       pullPolicy: IfNotPresent
@@ -854,10 +886,10 @@ externalAccess:
     ## choice for the user. This also increases chances charts run on environments with little
     ## resources, such as Minikube. If you do want to specify resources, uncomment the following
     ## lines, adjust them as necessary, and remove the curly braces after 'resources:'.
-    ## @param externalAccess.autoDiscovery.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, small, medium, large, xlarge, 2xlarge). This is ignored if externalAccess.autoDiscovery.resources is set (externalAccess.autoDiscovery.resources is recommended for production).
+    ## @param externalAccess.autoDiscovery.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if externalAccess.autoDiscovery.resources is set (externalAccess.autoDiscovery.resources is recommended for production).
     ## More information: https://github.com/bitnami/charts/blob/main/bitnami/common/templates/_resources.tpl#L15
     ##
-    resourcesPreset: "none"
+    resourcesPreset: "nano"
     ## @param externalAccess.autoDiscovery.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads)
     ## Example:
     ## resources:
@@ -869,6 +901,55 @@ externalAccess:
     ##     memory: 1024Mi
     ##
     resources: {}
+  ## Init container what mission is ensure public names can be resolved.
+  ##
+  dnsCheck:
+    ## Bitnami os-shell image
+    ## ref: https://hub.docker.com/r/bitnami/os-shell/tags/
+    ## @param externalAccess.dnsCheck.image.registry [default: REGISTRY_NAME] Init container dns-check image registry
+    ## @param externalAccess.dnsCheck.image.repository [default: REPOSITORY_NAME/kubectl] Init container dns-check image repository
+    ## @skip externalAccess.dnsCheck.image.tag Init container dns-check image tag (immutable tags are recommended)
+    ## @param externalAccess.dnsCheck.image.digest Init container dns-check image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag
+    ## @param externalAccess.dnsCheck.image.pullPolicy Init container dns-check image pull policy
+    ## @param externalAccess.dnsCheck.image.pullSecrets Init container dns-check image pull secrets
+    ##
+    image:
+      registry: docker.io
+      repository: bitnami/os-shell
+      tag: 12-debian-12-r43
+      digest: ""
+      ## Specify a imagePullPolicy
+      ## ref: https://kubernetes.io/docs/concepts/containers/images/#pre-pulled-images
+      ##
+      pullPolicy: IfNotPresent
+      ## Optionally specify an array of imagePullSecrets (secrets must be manually created in the namespace)
+      ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
+      ## Example:
+      ## pullSecrets:
+      ##   - myRegistryKeySecretName
+      ##
+      pullSecrets: []
+    ## Init Container resource requests and limits
+    ## ref: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
+    ## We usually recommend not to specify default resources and to leave this as a conscious
+    ## choice for the user. This also increases chances charts run on environments with little
+    ## resources, such as Minikube. If you do want to specify resources, uncomment the following
+    ## lines, adjust them as necessary, and remove the curly braces after 'resources:'.
+    ## @param externalAccess.dnsCheck.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if externalAccess.autoDiscovery.resources is set (externalAccess.autoDiscovery.resources is recommended for production).
+    ## More information: https://github.com/bitnami/charts/blob/main/bitnami/common/templates/_resources.tpl#L15
+    ##
+    resourcesPreset: "nano"
+    ## @param externalAccess.dnsCheck.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads)
+    ## Example:
+    ## resources:
+    ##   requests:
+    ##     cpu: 2
+    ##     memory: 512Mi
+    ##   limits:
+    ##     cpu: 3
+    ##     memory: 1024Mi
+    ##
+    resources: {}
   ## Parameters to configure a set of Pods that connect to an existing MongoDB(&reg;) deployment that lies outside of Kubernetes.
   ## @param externalAccess.externalMaster.enabled Use external master for bootstrapping
   ## @param externalAccess.externalMaster.host External master host to bootstrap from
@@ -899,6 +980,9 @@ externalAccess:
     ##   - Y.Y.Y.Y
     ##
     loadBalancerIPs: []
+    ## @param externalAccess.service.publicNames Array of public names. The size should be equal to the number of replicas.
+    ##
+    publicNames: []
     ## @param externalAccess.service.loadBalancerClass loadBalancerClass when service type is LoadBalancer
     # ref: https://kubernetes.io/docs/concepts/services-networking/service/#load-balancer-class
     loadBalancerClass: ""
@@ -909,7 +993,7 @@ externalAccess:
     ## - 10.10.10.0/24
     ##
     loadBalancerSourceRanges: []
-    ## @param externalAccess.service.allocateLoadBalancerNodePorts Wheter to allocate node ports when service type is LoadBalancer
+    ## @param externalAccess.service.allocateLoadBalancerNodePorts Whether to allocate node ports when service type is LoadBalancer
     ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#load-balancer-nodeport-allocation
     ##
     allocateLoadBalancerNodePorts: true
@@ -933,9 +1017,16 @@ externalAccess:
     ## @param externalAccess.service.extraPorts Extra ports to expose (normally used with the `sidecar` value)
     ##
     extraPorts: []
-    ## @param externalAccess.service.annotations Service annotations for external access
+    ## @param externalAccess.service.annotations Service annotations for external access. These annotations are common for all services created.
     ##
     annotations: {}
+    ## @param externalAccess.service.annotationsList Service annotations for eache external service. This value contains a list allowing different annotations per each external service.
+    ## Eg:
+    ##   annotationsList:
+    ##     - external-dns.alpha.kubernetes.io/hostname: mongodb-0.example.com
+    ##     - external-dns.alpha.kubernetes.io/hostname: mongodb-1.example.com
+    ##
+    annotationsList: []
     ## @param externalAccess.service.sessionAffinity Control where client requests go, to the same pod or round-robin
     ## Values: ClientIP or None
     ## ref: https://kubernetes.io/docs/concepts/services-networking/service/
@@ -1022,6 +1113,137 @@ externalAccess:
       ##     timeoutSeconds: 300
       ##
       sessionAffinityConfig: {}
+## @section Password update job
+##
+passwordUpdateJob:
+  ## @param passwordUpdateJob.enabled Enable password update job
+  ##
+  enabled: false
+  ## @param passwordUpdateJob.backoffLimit set backoff limit of the job
+  ##
+  backoffLimit: 10
+  ## @param passwordUpdateJob.command Override default container command on mysql Primary container(s) (useful when using custom images)
+  ##
+  command: []
+  ## @param passwordUpdateJob.args Override default container args on mysql Primary container(s) (useful when using custom images)
+  ##
+  args: []
+  ## @param passwordUpdateJob.extraCommands Extra commands to pass to the generation job
+  ##
+  extraCommands: ""
+  ## @param passwordUpdateJob.previousPasswords.rootPassword Previous root password (set if the password secret was already changed)
+  ## @param passwordUpdateJob.previousPasswords.existingSecret Name of a secret containing the previous passwords (set if the password secret was already changed)
+  previousPasswords:
+    rootPassword: ""
+    existingSecret: ""
+  ## Configure Container Security Context
+  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container
+  ## @param passwordUpdateJob.containerSecurityContext.enabled Enabled containers' Security Context
+  ## @param passwordUpdateJob.containerSecurityContext.seLinuxOptions [object,nullable] Set SELinux options in container
+  ## @param passwordUpdateJob.containerSecurityContext.runAsUser Set containers' Security Context runAsUser
+  ## @param passwordUpdateJob.containerSecurityContext.runAsGroup Set containers' Security Context runAsGroup
+  ## @param passwordUpdateJob.containerSecurityContext.runAsNonRoot Set container's Security Context runAsNonRoot
+  ## @param passwordUpdateJob.containerSecurityContext.privileged Set container's Security Context privileged
+  ## @param passwordUpdateJob.containerSecurityContext.readOnlyRootFilesystem Set container's Security Context readOnlyRootFilesystem
+  ## @param passwordUpdateJob.containerSecurityContext.allowPrivilegeEscalation Set container's Security Context allowPrivilegeEscalation
+  ## @param passwordUpdateJob.containerSecurityContext.capabilities.drop List of capabilities to be dropped
+  ## @param passwordUpdateJob.containerSecurityContext.seccompProfile.type Set container's Security Context seccomp profile
+  ##
+  containerSecurityContext:
+    enabled: true
+    seLinuxOptions: {}
+    runAsUser: 1001
+    runAsGroup: 1001
+    runAsNonRoot: true
+    privileged: false
+    readOnlyRootFilesystem: true
+    allowPrivilegeEscalation: false
+    capabilities:
+      drop: ["ALL"]
+    seccompProfile:
+      type: "RuntimeDefault"
+  ## Configure Pods Security Context
+  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod
+  ## @param passwordUpdateJob.podSecurityContext.enabled Enabled credential init job pods' Security Context
+  ## @param passwordUpdateJob.podSecurityContext.fsGroupChangePolicy Set filesystem group change policy
+  ## @param passwordUpdateJob.podSecurityContext.sysctls Set kernel settings using the sysctl interface
+  ## @param passwordUpdateJob.podSecurityContext.supplementalGroups Set filesystem extra groups
+  ## @param passwordUpdateJob.podSecurityContext.fsGroup Set credential init job pod's Security Context fsGroup
+  ##
+  podSecurityContext:
+    enabled: true
+    fsGroupChangePolicy: Always
+    sysctls: []
+    supplementalGroups: []
+    fsGroup: 1001
+  ## @param passwordUpdateJob.extraEnvVars Array containing extra env vars to configure the credential init job
+  ## For example:
+  ## extraEnvVars:
+  ##  - name: GF_DEFAULT_INSTANCE_NAME
+  ##    value: my-instance
+  ##
+  extraEnvVars: []
+  ## @param passwordUpdateJob.extraEnvVarsCM ConfigMap containing extra env vars to configure the credential init job
+  ##
+  extraEnvVarsCM: ""
+  ## @param passwordUpdateJob.extraEnvVarsSecret Secret containing extra env vars to configure the credential init job (in case of sensitive data)
+  ##
+  extraEnvVarsSecret: ""
+  ## @param passwordUpdateJob.extraVolumes Optionally specify extra list of additional volumes for the credential init job
+  ##
+  extraVolumes: []
+  ## @param passwordUpdateJob.extraVolumeMounts Array of extra volume mounts to be added to the jwt Container (evaluated as template). Normally used with `extraVolumes`.
+  ##
+  extraVolumeMounts: []
+  ## @param passwordUpdateJob.initContainers Add additional init containers for the mysql Primary pod(s)
+  ##
+  initContainers: []
+  ## Container resource requests and limits
+  ## ref: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
+  ## @param passwordUpdateJob.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if passwordUpdateJob.resources is set (passwordUpdateJob.resources is recommended for production).
+  ## More information: https://github.com/bitnami/charts/blob/main/bitnami/common/templates/_resources.tpl#L15
+  ##
+  resourcesPreset: "micro"
+  ## @param passwordUpdateJob.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads)
+  ## Example:
+  ## resources:
+  ##   requests:
+  ##     cpu: 2
+  ##     memory: 512Mi
+  ##   limits:
+  ##     cpu: 3
+  ##     memory: 1024Mi
+  ##
+  resources: {}
+  ## @param passwordUpdateJob.customLivenessProbe Custom livenessProbe that overrides the default one
+  ##
+  customLivenessProbe: {}
+  ## @param passwordUpdateJob.customReadinessProbe Custom readinessProbe that overrides the default one
+  ##
+  customReadinessProbe: {}
+  ## @param passwordUpdateJob.customStartupProbe Custom startupProbe that overrides the default one
+  ##
+  customStartupProbe: {}
+  ## @param passwordUpdateJob.automountServiceAccountToken Mount Service Account token in pod
+  ##
+  automountServiceAccountToken: false
+  ## @param passwordUpdateJob.hostAliases Add deployment host aliases
+  ## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/
+  ##
+  hostAliases: []
+  ## @param passwordUpdateJob.annotations [object] Add annotations to the job
+  ##
+  annotations: {}
+  ## @param passwordUpdateJob.podLabels Additional pod labels
+  ## Ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
+  ##
+  podLabels: {}
+  ## @param passwordUpdateJob.podAnnotations Additional pod annotations
+  ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
+  ##
+  podAnnotations: {}
+
+
 ## @section Network policy parameters
 ##
 
@@ -1042,7 +1264,10 @@ networkPolicy:
   ## @param networkPolicy.allowExternalEgress Allow the pod to access any range of port and all destinations.
   ##
   allowExternalEgress: true
-  ## @param networkPolicy.extraIngress [array] Add extra ingress rules to the NetworkPolice
+  ## @param networkPolicy.addExternalClientAccess Allow access from pods with client label set to "true". Ignored if `networkPolicy.allowExternal` is true.
+  ##
+  addExternalClientAccess: true
+  ## @param networkPolicy.extraIngress [array] Add extra ingress rules to the NetworkPolicy
   ## e.g:
   ## extraIngress:
   ##   - ports:
@@ -1075,8 +1300,14 @@ networkPolicy:
   ##                   - frontend
   ##
   extraEgress: []
-  ## @param networkPolicy.ingressNSMatchLabels [object] Labels to match to allow traffic from other namespaces
-  ## @param networkPolicy.ingressNSPodMatchLabels [object] Pod labels to match to allow traffic from other namespaces
+  ## @param networkPolicy.ingressPodMatchLabels [object] Labels to match to allow traffic from other pods. Ignored if `networkPolicy.allowExternal` is true.
+  ## e.g:
+  ## ingressPodMatchLabels:
+  ##   my-client: "true"
+  #
+  ingressPodMatchLabels: {}
+  ## @param networkPolicy.ingressNSMatchLabels [object] Labels to match to allow traffic from other namespaces. Ignored if `networkPolicy.allowExternal` is true.
+  ## @param networkPolicy.ingressNSPodMatchLabels [object] Pod labels to match to allow traffic from other namespaces. Ignored if `networkPolicy.allowExternal` is true.
   ##
   ingressNSMatchLabels: {}
   ingressNSPodMatchLabels: {}
@@ -1117,6 +1348,9 @@ persistence:
   ## @param persistence.annotations PVC annotations
   ##
   annotations: {}
+  ## @param persistence.labels PVC labels
+  ##
+  labels: {}
   ## @param persistence.mountPath Path to mount the volume at
   ## MongoDB(&reg;) images.
   ##
@@ -1164,12 +1398,17 @@ backup:
   ## @param backup.enabled Enable the logical dump of the database "regularly"
   ##
   enabled: false
+  emptyDir:
+    sizeLimit: 1Gi
   ## Fine tuning cronjob's config
   ##
   cronjob:
     ## @param backup.cronjob.schedule Set the cronjob parameter schedule
     ##
     schedule: "@daily"
+    ## @param backup.cronjob.timeZone Set the cronjob parameter timeZone
+    ##
+    timeZone: ""
     ## @param backup.cronjob.concurrencyPolicy Set the cronjob parameter concurrencyPolicy
     ##
     concurrencyPolicy: Allow
@@ -1188,6 +1427,8 @@ backup:
     ## @param backup.cronjob.restartPolicy Set the cronjob parameter restartPolicy
     ##
     restartPolicy: OnFailure
+    ## @param backup.cronjob.backoffLimit Set the cronjob parameter backoffLimit
+    backoffLimit: 6
     ## backup container's Security Context
     ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container
     ## @param backup.cronjob.containerSecurityContext.enabled Enabled containers' Security Context
@@ -1203,17 +1444,40 @@ backup:
     ##
     containerSecurityContext:
       enabled: true
-      seLinuxOptions: null
+      seLinuxOptions: {}
       runAsUser: 1001
-      runAsGroup: 0
+      runAsGroup: 1001
       runAsNonRoot: true
       privileged: false
-      readOnlyRootFilesystem: false
+      readOnlyRootFilesystem: true
       allowPrivilegeEscalation: false
       capabilities:
-        drop: ["ALL"]
+        drop:
+        - ALL
+        - CAP_NET_RAW
       seccompProfile:
         type: "RuntimeDefault"
+    ## backup container's resource requests and limits.
+    ## ref: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
+    ## We usually recommend not to specify default resources and to leave this as a conscious
+    ## choice for the user. This also increases chances charts run on environments with little
+    ## resources, such as Minikube. If you do want to specify resources, uncomment the following
+    ## lines, adjust them as necessary, and remove the curly braces after 'resources:'.
+    ## @param backup.cronjob.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if resources is set (resources is recommended for production).
+    ## More information: https://github.com/bitnami/charts/blob/main/bitnami/common/templates/_resources.tpl#L15
+    ##
+    resourcesPreset: "none"
+    ## @param backup.cronjob.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads)
+    ## Example:
+    ## resources:
+    ##   requests:
+    ##     cpu: 2
+    ##     memory: 512Mi
+    ##   limits:
+    ##     cpu: 3
+    ##     memory: 1024Mi
+    ##
+    resources: {}
     ## @param backup.cronjob.command Set backup container's command to run
     ##
     command: []
@@ -1341,7 +1605,7 @@ podSecurityPolicy:
   ##    hostNetwork: false
   ##    hostPID: false
   ##    privileged: false
-  ##    readOnlyRootFilesystem: false
+  ##    readOnlyRootFilesystem: true
   ##    requiredDropCapabilities:
   ##      - ALL
   ##    runAsUser:
@@ -1382,10 +1646,9 @@ volumePermissions:
   image:
     registry: docker.io
     repository: bitnami/os-shell
-    tag: 12-debian-12-r15
+    tag: 12-debian-12-r43
     digest: ""
     ## Specify a imagePullPolicy
-    ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
     ## ref: https://kubernetes.io/docs/concepts/containers/images/#pre-pulled-images
     ##
     pullPolicy: IfNotPresent
@@ -1402,10 +1665,10 @@ volumePermissions:
   ## choice for the user. This also increases chances charts run on environments with little
   ## resources, such as Minikube. If you do want to specify resources, uncomment the following
   ## lines, adjust them as necessary, and remove the curly braces after 'resources:'.
-  ## @param volumePermissions.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, small, medium, large, xlarge, 2xlarge). This is ignored if volumePermissions.resources is set (volumePermissions.resources is recommended for production).
+  ## @param volumePermissions.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if volumePermissions.resources is set (volumePermissions.resources is recommended for production).
   ## More information: https://github.com/bitnami/charts/blob/main/bitnami/common/templates/_resources.tpl#L15
   ##
-  resourcesPreset: "none"
+  resourcesPreset: "nano"
   ## @param volumePermissions.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads)
   ## Example:
   ## resources:
@@ -1429,11 +1692,13 @@ volumePermissions:
   ## @param volumePermissions.securityContext.runAsUser User ID for the volumePermissions container
   ##
   securityContext:
-    seLinuxOptions: null
+    seLinuxOptions: {}
     runAsUser: 0
 ## @section Arbiter parameters
 ##
 arbiter:
+  emptyDir:
+    sizeLimit: 1Gi
   ## @param arbiter.enabled Enable deploying the arbiter
   ##   https://docs.mongodb.com/manual/tutorial/add-replica-set-arbiter/
   ##
@@ -1603,15 +1868,17 @@ arbiter:
   ##
   containerSecurityContext:
     enabled: true
-    seLinuxOptions: null
+    seLinuxOptions: {}
     runAsUser: 1001
-    runAsGroup: 0
+    runAsGroup: 1001
     runAsNonRoot: true
     privileged: false
-    readOnlyRootFilesystem: false
+    readOnlyRootFilesystem: true
     allowPrivilegeEscalation: false
     capabilities:
-      drop: ["ALL"]
+      drop:
+      - ALL
+      - CAP_NET_RAW
     seccompProfile:
       type: "RuntimeDefault"
   ## MongoDB(&reg;) Arbiter containers' resource requests and limits.
@@ -1741,11 +2008,11 @@ arbiter:
   pdb:
     ## @param arbiter.pdb.create Enable/disable a Pod Disruption Budget creation for Arbiter pod(s)
     ##
-    create: false
+    create: true
     ## @param arbiter.pdb.minAvailable Minimum number/percentage of Arbiter pods that should remain scheduled
     ##
-    minAvailable: 1
-    ## @param arbiter.pdb.maxUnavailable Maximum number/percentage of Arbiter pods that may be made unavailable
+    minAvailable: ""
+    ## @param arbiter.pdb.maxUnavailable Maximum number/percentage of Arbiter pods that may be made unavailable. Defaults to `1` if both `arbiter.pdb.minAvailable` and `arbiter.pdb.maxUnavailable` are empty.
     ##
     maxUnavailable: ""
   ## MongoDB(&reg;) Arbiter service parameters
@@ -1777,6 +2044,8 @@ hidden:
   ##   https://docs.mongodb.com/manual/tutorial/configure-a-hidden-replica-set-member/
   ##
   enabled: false
+  emptyDir:
+    sizeLimit: 1Gi
   ## @param hidden.automountServiceAccountToken Mount Service Account token in pod
   ##
   automountServiceAccountToken: false
@@ -1946,12 +2215,12 @@ hidden:
   ##
   containerSecurityContext:
     enabled: true
-    seLinuxOptions: null
+    seLinuxOptions: {}
     runAsUser: 1001
-    runAsGroup: 0
+    runAsGroup: 1001
     runAsNonRoot: true
     privileged: false
-    readOnlyRootFilesystem: false
+    readOnlyRootFilesystem: true
     allowPrivilegeEscalation: false
     capabilities:
       drop: ["ALL"]
@@ -1963,10 +2232,10 @@ hidden:
   ## choice for the user. This also increases chances charts run on environments with little
   ## resources, such as Minikube. If you do want to specify resources, uncomment the following
   ## lines, adjust them as necessary, and remove the curly braces after 'resources:'.
-  ## @param hidden.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, small, medium, large, xlarge, 2xlarge). This is ignored if hidden.resources is set (hidden.resources is recommended for production).
+  ## @param hidden.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if hidden.resources is set (hidden.resources is recommended for production).
   ## More information: https://github.com/bitnami/charts/blob/main/bitnami/common/templates/_resources.tpl#L15
   ##
-  resourcesPreset: "none"
+  resourcesPreset: "micro"
   ## @param hidden.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads)
   ## Example:
   ## resources:
@@ -2085,11 +2354,11 @@ hidden:
   pdb:
     ## @param hidden.pdb.create Enable/disable a Pod Disruption Budget creation for hidden node pod(s)
     ##
-    create: false
+    create: true
     ## @param hidden.pdb.minAvailable Minimum number/percentage of hidden node pods that should remain scheduled
     ##
-    minAvailable: 1
-    ## @param hidden.pdb.maxUnavailable Maximum number/percentage of hidden node pods that may be made unavailable
+    minAvailable: ""
+    ## @param hidden.pdb.maxUnavailable Maximum number/percentage of hidden node pods that may be made unavailable. Defaults to `1` if both `hidden.pdb.minAvailable` and `hidden.pdb.maxUnavailable` are empty.
     ##
     maxUnavailable: ""
   ## Enable persistence using Persistent Volume Claims
@@ -2143,6 +2412,9 @@ hidden:
       ##
       dataSource: {}
   service:
+    ## @param hidden.service.nameOverride The hidden service name
+    ##
+    nameOverride: ""
     ## @param hidden.service.portName MongoDB(&reg;) service port name
     ##
     portName: "mongodb"
@@ -2180,7 +2452,7 @@ metrics:
   image:
     registry: docker.io
     repository: bitnami/mongodb-exporter
-    tag: 0.40.0-debian-12-r11
+    tag: 0.44.0-debian-12-r5
     digest: ""
     pullPolicy: IfNotPresent
     ## Optionally specify an array of imagePullSecrets.
@@ -2239,10 +2511,10 @@ metrics:
   ## choice for the user. This also increases chances charts run on environments with little
   ## resources, such as Minikube. If you do want to specify resources, uncomment the following
   ## lines, adjust them as necessary, and remove the curly braces after 'resources:'.
-  ## @param metrics.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, small, medium, large, xlarge, 2xlarge). This is ignored if metrics.resources is set (metrics.resources is recommended for production).
+  ## @param metrics.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if metrics.resources is set (metrics.resources is recommended for production).
   ## More information: https://github.com/bitnami/charts/blob/main/bitnami/common/templates/_resources.tpl#L15
   ##
-  resourcesPreset: "none"
+  resourcesPreset: "nano"
   ## @param metrics.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads)
   ## Example:
   ## resources:
diff --git a/kubernetes/common/nginx/.helmignore b/kubernetes/common/nginx/.helmignore
new file mode 100644 (file)
index 0000000..207983f
--- /dev/null
@@ -0,0 +1,25 @@
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*~
+# Various IDEs
+.project
+.idea/
+*.tmproj
+# img folder
+img/
+# Changelog
+CHANGELOG.md
diff --git a/kubernetes/common/nginx/Chart.yaml b/kubernetes/common/nginx/Chart.yaml
new file mode 100644 (file)
index 0000000..1a352c7
--- /dev/null
@@ -0,0 +1,37 @@
+annotations:
+  category: Infrastructure
+  images: |
+    - name: git
+      image: docker.io/bitnami/git:2.48.0-debian-12-r0
+    - name: nginx
+      image: docker.io/bitnami/nginx:1.27.3-debian-12-r5
+    - name: nginx-exporter
+      image: docker.io/bitnami/nginx-exporter:1.4.1-debian-12-r0
+  licenses: Apache-2.0
+apiVersion: v2
+appVersion: 1.27.3
+dependencies:
+- name: common
+  repository: 'file://./common'
+  #repository: oci://registry-1.docker.io/bitnamicharts
+  tags:
+  - bitnami-common
+  version: 2.x.x
+description: NGINX Open Source is a web server that can be also used as a reverse
+  proxy, load balancer, and HTTP cache. Recommended for high-demanding sites due to
+  its ability to provide faster content.
+home: https://bitnami.com
+icon: https://bitnami.com/assets/stacks/nginx/img/nginx-stack-220x234.png
+keywords:
+- nginx
+- http
+- web
+- www
+- reverse proxy
+maintainers:
+- name: Broadcom, Inc. All Rights Reserved.
+  url: https://github.com/bitnami/charts
+name: nginx
+sources:
+- https://github.com/bitnami/charts/tree/main/bitnami/nginx
+version: 18.3.5
diff --git a/kubernetes/common/nginx/README.md b/kubernetes/common/nginx/README.md
new file mode 100644 (file)
index 0000000..0043b87
--- /dev/null
@@ -0,0 +1,557 @@
+<!--- app-name: NGINX Open Source -->
+
+# Bitnami package for NGINX Open Source
+
+NGINX Open Source is a web server that can be also used as a reverse proxy, load balancer, and HTTP cache. Recommended for high-demanding sites due to its ability to provide faster content.
+
+[Overview of NGINX Open Source](http://nginx.org)
+
+Trademarks: This software listing is packaged by Bitnami. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement.
+
+## TL;DR
+
+```console
+helm install my-release oci://registry-1.docker.io/bitnamicharts/nginx
+```
+
+Looking to use NGINX Open Source in production? Try [VMware Tanzu Application Catalog](https://bitnami.com/enterprise), the commercial edition of the Bitnami catalog.
+
+## Introduction
+
+Bitnami charts for Helm are carefully engineered, actively maintained and are the quickest and easiest way to deploy containers on a Kubernetes cluster that are ready to handle production workloads.
+
+This chart bootstraps a [NGINX Open Source](https://github.com/bitnami/containers/tree/main/bitnami/nginx) deployment on a [Kubernetes](https://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
+
+Bitnami charts can be used with [Kubeapps](https://kubeapps.dev/) for deployment and management of Helm Charts in clusters.
+
+## Prerequisites
+
+- Kubernetes 1.23+
+- Helm 3.8.0+
+
+## Installing the Chart
+
+To install the chart with the release name `my-release`:
+
+```console
+helm install my-release oci://REGISTRY_NAME/REPOSITORY_NAME/nginx
+```
+
+> Note: You need to substitute the placeholders `REGISTRY_NAME` and `REPOSITORY_NAME` with a reference to your Helm chart registry and repository. For example, in the case of Bitnami, you need to use `REGISTRY_NAME=registry-1.docker.io` and `REPOSITORY_NAME=bitnamicharts`.
+
+These commands deploy NGINX Open Source on the Kubernetes cluster in the default configuration.
+
+> **Tip**: List all releases using `helm list`
+
+## Configuration and installation details
+
+### Resource requests and limits
+
+Bitnami charts allow setting resource requests and limits for all containers inside the chart deployment. These are inside the `resources` value (check parameter table). Setting requests is essential for production workloads and these should be adapted to your specific use case.
+
+To make this process easier, the chart contains the `resourcesPreset` values, which automatically sets the `resources` section according to different presets. Check these presets in [the bitnami/common chart](https://github.com/bitnami/charts/blob/main/bitnami/common/templates/_resources.tpl#L15). However, in production workloads using `resourcesPreset` is discouraged as it may not fully adapt to your specific needs. Find more information on container resource management in the [official Kubernetes documentation](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/).
+
+### Prometheus metrics
+
+This chart can be integrated with Prometheus by setting `metrics.enabled` to `true`. This will deploy a sidecar container with [nginx-prometheus-exporter](https://github.com/nginxinc/nginx-prometheus-exporter) in all pods and will expose it via the Nginx service. This service will be have the necessary annotations to be automatically scraped by Prometheus.
+
+#### Prometheus requirements
+
+It is necessary to have a working installation of Prometheus or Prometheus Operator for the integration to work. Install the [Bitnami Prometheus helm chart](https://github.com/bitnami/charts/tree/main/bitnami/prometheus) or the [Bitnami Kube Prometheus helm chart](https://github.com/bitnami/charts/tree/main/bitnami/kube-prometheus) to easily have a working Prometheus in your cluster.
+
+#### Integration with Prometheus Operator
+
+The chart can deploy `ServiceMonitor` objects for integration with Prometheus Operator installations. To do so, set the value `metrics.serviceMonitor.enabled=true`. Ensure that the Prometheus Operator `CustomResourceDefinitions` are installed in the cluster or it will fail with the following error:
+
+```text
+no matches for kind "ServiceMonitor" in version "monitoring.coreos.com/v1"
+```
+
+Install the [Bitnami Kube Prometheus helm chart](https://github.com/bitnami/charts/tree/main/bitnami/kube-prometheus) for having the necessary CRDs and the Prometheus Operator.
+
+### Securing traffic using TLS
+
+Nginx can encrypt communications by setting `tls.enabled=true`. The chart allows two configuration options:
+
+- Provide your own secret using the `tls.certificatesSecret` value. Also set the correct name of the certificate files using the `tls.certFilename`, `tls.certKeyFilename` and `tls.certCAFilename` values.
+- Have the chart auto-generate the certificates using `tls.autoGenerated=true`.
+
+### [Rolling VS Immutable tags](https://techdocs.broadcom.com/us/en/vmware-tanzu/application-catalog/tanzu-application-catalog/services/tac-doc/apps-tutorials-understand-rolling-tags-containers-index.html)
+
+It is strongly recommended to use immutable tags in a production environment. This ensures your deployment does not change automatically if the same tag is updated with a different image.
+
+Bitnami will release a new chart updating its containers if a new version of the main container, significant changes, or critical vulnerabilities exist.
+
+### Use a different NGINX version
+
+To modify the application version used in this chart, specify a different version of the image using the `image.tag` parameter and/or a different repository using the `image.repository` parameter.
+
+### Backup and restore
+
+To back up and restore Helm chart deployments on Kubernetes, you need to back up the persistent volumes from the source deployment and attach them to a new deployment using [Velero](https://velero.io/), a Kubernetes backup/restore tool. Find the instructions for using Velero in [this guide](https://techdocs.broadcom.com/us/en/vmware-tanzu/application-catalog/tanzu-application-catalog/services/tac-doc/apps-tutorials-backup-restore-deployments-velero-index.html).
+
+### Deploying your custom web application
+
+The NGINX chart allows you to deploy a custom web application using one of the following methods:
+
+- Cloning from a git repository: Set `cloneStaticSiteFromGit.enabled` to `true` and set the repository and branch using the `cloneStaticSiteFromGit.repository` and `cloneStaticSiteFromGit.branch` parameters. A sidecar will also pull the latest changes in an interval set by `cloneStaticSitesFromGit.interval`.
+- Providing a ConfigMap: Set the `staticSiteConfigmap` value to mount a ConfigMap in the NGINX html folder.
+- Using an existing PVC: Set the `staticSitePVC` value to mount an PersistentVolumeClaim with the static site content.
+
+You can deploy a example web application using git deploying the chart with the following parameters:
+
+```console
+cloneStaticSiteFromGit.enabled=true
+cloneStaticSiteFromGit.repository=https://github.com/mdn/beginner-html-site-styled.git
+cloneStaticSiteFromGit.branch=master
+```
+
+### Providing a custom server block
+
+This helm chart supports using custom custom server block for NGINX to use.
+
+You can use the `serverBlock` or `streamServerBlock` value to provide a custom server block for NGINX to use. To do this, create a values files with your server block and install the chart using it:
+
+```yaml
+serverBlock: |-
+  server {
+    listen 0.0.0.0:8080;
+    location / {
+      return 200 "hello!";
+    }
+  }
+```
+
+> Warning: The above example is not compatible with enabling Prometheus metrics since it affects the `/status` endpoint.
+
+In addition, you can also set an external ConfigMap with the configuration file. This is done by setting the `existingServerBlockConfigmap` parameter. Note that this will override the previous option.
+
+### Adding extra environment variables
+
+In case you want to add extra environment variables (useful for advanced operations like custom init scripts), you can use the `extraEnvVars` property.
+
+```yaml
+extraEnvVars:
+  - name: LOG_LEVEL
+    value: error
+```
+
+Alternatively, you can use a ConfigMap or a Secret with the environment variables. To do so, use the `extraEnvVarsCM` or the `extraEnvVarsSecret` values.
+
+### Setting Pod's affinity
+
+This chart allows you to set your custom affinity using the `affinity` parameter. Find more information about Pod's affinity in the [kubernetes documentation](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity).
+
+As an alternative, you can use of the preset configurations for pod affinity, pod anti-affinity, and node affinity available at the [bitnami/common](https://github.com/bitnami/charts/tree/main/bitnami/common#affinity) chart. To do so, set the `podAffinityPreset`, `podAntiAffinityPreset`, or `nodeAffinityPreset` parameters.
+
+### Deploying extra resources
+
+There are cases where you may want to deploy extra objects, such a ConfigMap containing your app's configuration or some extra deployment with a micro service used by your app. For covering this case, the chart allows adding the full specification of other objects using the `extraDeploy` parameter.
+
+### Ingress
+
+This chart provides support for ingress resources. If you have an ingress controller installed on your cluster, such as [nginx-ingress-controller](https://github.com/bitnami/charts/tree/main/bitnami/nginx-ingress-controller) or [contour](https://github.com/bitnami/charts/tree/main/bitnami/contour) you can utilize the ingress controller to serve your application.
+
+To enable ingress integration, please set `ingress.enabled` to `true`.
+
+#### Hosts
+
+Most likely you will only want to have one hostname that maps to this NGINX installation. If that's your case, the property `ingress.hostname` will set it. However, it is possible to have more than one host. To facilitate this, the `ingress.extraHosts` object can be specified as an array. You can also use `ingress.extraTLS` to add the TLS configuration for extra hosts.
+
+For each host indicated at `ingress.extraHosts`, please indicate a `name`, `path`, and any `annotations` that you may want the ingress controller to know about.
+
+For annotations, please see [this document](https://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/nginx-configuration/annotations.md). Not all annotations are supported by all ingress controllers, but this document does a good job of indicating which annotation is supported by many popular ingress controllers.
+
+## Parameters
+
+### Global parameters
+
+| Name                                                  | Description                                                                                                                                                                                                                                                                                                                                                         | Value   |
+| ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
+| `global.imageRegistry`                                | Global Docker image registry                                                                                                                                                                                                                                                                                                                                        | `""`    |
+| `global.imagePullSecrets`                             | Global Docker registry secret names as an array                                                                                                                                                                                                                                                                                                                     | `[]`    |
+| `global.security.allowInsecureImages`                 | Allows skipping image verification                                                                                                                                                                                                                                                                                                                                  | `false` |
+| `global.compatibility.openshift.adaptSecurityContext` | Adapt the securityContext sections of the deployment to make them compatible with Openshift restricted-v2 SCC: remove runAsUser, runAsGroup and fsGroup and let the platform use their allowed default IDs. Possible values: auto (apply if the detected running cluster is Openshift), force (perform the adaptation always), disabled (do not perform adaptation) | `auto`  |
+
+### Common parameters
+
+| Name                     | Description                                                                             | Value           |
+| ------------------------ | --------------------------------------------------------------------------------------- | --------------- |
+| `nameOverride`           | String to partially override nginx.fullname template (will maintain the release name)   | `""`            |
+| `fullnameOverride`       | String to fully override nginx.fullname template                                        | `""`            |
+| `namespaceOverride`      | String to fully override common.names.namespace                                         | `""`            |
+| `kubeVersion`            | Force target Kubernetes version (using Helm capabilities if not set)                    | `""`            |
+| `clusterDomain`          | Kubernetes Cluster Domain                                                               | `cluster.local` |
+| `extraDeploy`            | Extra objects to deploy (value evaluated as a template)                                 | `[]`            |
+| `commonLabels`           | Add labels to all the deployed resources                                                | `{}`            |
+| `commonAnnotations`      | Add annotations to all the deployed resources                                           | `{}`            |
+| `diagnosticMode.enabled` | Enable diagnostic mode (all probes will be disabled and the command will be overridden) | `false`         |
+| `diagnosticMode.command` | Command to override all containers in the the deployment(s)/statefulset(s)              | `["sleep"]`     |
+| `diagnosticMode.args`    | Args to override all containers in the the deployment(s)/statefulset(s)                 | `["infinity"]`  |
+
+### NGINX parameters
+
+| Name                           | Description                                                                                           | Value                   |
+| ------------------------------ | ----------------------------------------------------------------------------------------------------- | ----------------------- |
+| `image.registry`               | NGINX image registry                                                                                  | `REGISTRY_NAME`         |
+| `image.repository`             | NGINX image repository                                                                                | `REPOSITORY_NAME/nginx` |
+| `image.digest`                 | NGINX image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag | `""`                    |
+| `image.pullPolicy`             | NGINX image pull policy                                                                               | `IfNotPresent`          |
+| `image.pullSecrets`            | Specify docker-registry secret names as an array                                                      | `[]`                    |
+| `image.debug`                  | Set to true if you would like to see extra information on logs                                        | `false`                 |
+| `automountServiceAccountToken` | Mount Service Account token in pod                                                                    | `false`                 |
+| `hostAliases`                  | Deployment pod host aliases                                                                           | `[]`                    |
+| `command`                      | Override default container command (useful when using custom images)                                  | `[]`                    |
+| `args`                         | Override default container args (useful when using custom images)                                     | `[]`                    |
+| `extraEnvVars`                 | Extra environment variables to be set on NGINX containers                                             | `[]`                    |
+| `extraEnvVarsCM`               | ConfigMap with extra environment variables                                                            | `""`                    |
+| `extraEnvVarsSecret`           | Secret with extra environment variables                                                               | `""`                    |
+
+### NGINX deployment parameters
+
+| Name                                                | Description                                                                                                                                                                                                       | Value            |
+| --------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- |
+| `replicaCount`                                      | Number of NGINX replicas to deploy                                                                                                                                                                                | `1`              |
+| `revisionHistoryLimit`                              | The number of old history to retain to allow rollback                                                                                                                                                             | `10`             |
+| `updateStrategy.type`                               | NGINX deployment strategy type                                                                                                                                                                                    | `RollingUpdate`  |
+| `updateStrategy.rollingUpdate`                      | NGINX deployment rolling update configuration parameters                                                                                                                                                          | `{}`             |
+| `podLabels`                                         | Additional labels for NGINX pods                                                                                                                                                                                  | `{}`             |
+| `podAnnotations`                                    | Annotations for NGINX pods                                                                                                                                                                                        | `{}`             |
+| `podAffinityPreset`                                 | Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`                                                                                                                               | `""`             |
+| `podAntiAffinityPreset`                             | Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`                                                                                                                          | `soft`           |
+| `nodeAffinityPreset.type`                           | Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard`                                                                                                                         | `""`             |
+| `nodeAffinityPreset.key`                            | Node label key to match Ignored if `affinity` is set.                                                                                                                                                             | `""`             |
+| `nodeAffinityPreset.values`                         | Node label values to match. Ignored if `affinity` is set.                                                                                                                                                         | `[]`             |
+| `affinity`                                          | Affinity for pod assignment                                                                                                                                                                                       | `{}`             |
+| `hostNetwork`                                       | Specify if host network should be enabled for NGINX pod                                                                                                                                                           | `false`          |
+| `hostIPC`                                           | Specify if host IPC should be enabled for NGINX pod                                                                                                                                                               | `false`          |
+| `dnsPolicy`                                         | Specifies the DNS policy for the NGINX pod                                                                                                                                                                        | `""`             |
+| `dnsConfig`                                         | Allows users more control on the DNS settings for a Pod. Required if `dnsPolicy` is set to `None`                                                                                                                 | `{}`             |
+| `nodeSelector`                                      | Node labels for pod assignment. Evaluated as a template.                                                                                                                                                          | `{}`             |
+| `tolerations`                                       | Tolerations for pod assignment. Evaluated as a template.                                                                                                                                                          | `[]`             |
+| `priorityClassName`                                 | NGINX pods' priorityClassName                                                                                                                                                                                     | `""`             |
+| `schedulerName`                                     | Name of the k8s scheduler (other than default)                                                                                                                                                                    | `""`             |
+| `terminationGracePeriodSeconds`                     | In seconds, time the given to the NGINX pod needs to terminate gracefully                                                                                                                                         | `""`             |
+| `topologySpreadConstraints`                         | Topology Spread Constraints for pod assignment                                                                                                                                                                    | `[]`             |
+| `tls.enabled`                                       | Enable TLS transport                                                                                                                                                                                              | `true`           |
+| `tls.autoGenerated`                                 | Auto-generate self-signed certificates                                                                                                                                                                            | `true`           |
+| `tls.existingSecret`                                | Name of a secret containing the certificates                                                                                                                                                                      | `""`             |
+| `tls.certFilename`                                  | Path of the certificate file when mounted as a secret                                                                                                                                                             | `tls.crt`        |
+| `tls.certKeyFilename`                               | Path of the certificate key file when mounted as a secret                                                                                                                                                         | `tls.key`        |
+| `tls.certCAFilename`                                | Path of the certificate CA file when mounted as a secret                                                                                                                                                          | `ca.crt`         |
+| `tls.cert`                                          | Content of the certificate to be added to the secret                                                                                                                                                              | `""`             |
+| `tls.key`                                           | Content of the certificate key to be added to the secret                                                                                                                                                          | `""`             |
+| `tls.ca`                                            | Content of the certificate CA to be added to the secret                                                                                                                                                           | `""`             |
+| `podSecurityContext.enabled`                        | Enabled NGINX pods' Security Context                                                                                                                                                                              | `true`           |
+| `podSecurityContext.fsGroupChangePolicy`            | Set filesystem group change policy                                                                                                                                                                                | `Always`         |
+| `podSecurityContext.supplementalGroups`             | Set filesystem extra groups                                                                                                                                                                                       | `[]`             |
+| `podSecurityContext.fsGroup`                        | Set NGINX pod's Security Context fsGroup                                                                                                                                                                          | `1001`           |
+| `podSecurityContext.sysctls`                        | sysctl settings of the NGINX pods                                                                                                                                                                                 | `[]`             |
+| `containerSecurityContext.enabled`                  | Enabled containers' Security Context                                                                                                                                                                              | `true`           |
+| `containerSecurityContext.seLinuxOptions`           | Set SELinux options in container                                                                                                                                                                                  | `{}`             |
+| `containerSecurityContext.runAsUser`                | Set containers' Security Context runAsUser                                                                                                                                                                        | `1001`           |
+| `containerSecurityContext.runAsGroup`               | Set containers' Security Context runAsGroup                                                                                                                                                                       | `1001`           |
+| `containerSecurityContext.runAsNonRoot`             | Set container's Security Context runAsNonRoot                                                                                                                                                                     | `true`           |
+| `containerSecurityContext.privileged`               | Set container's Security Context privileged                                                                                                                                                                       | `false`          |
+| `containerSecurityContext.readOnlyRootFilesystem`   | Set container's Security Context readOnlyRootFilesystem                                                                                                                                                           | `true`           |
+| `containerSecurityContext.allowPrivilegeEscalation` | Set container's Security Context allowPrivilegeEscalation                                                                                                                                                         | `false`          |
+| `containerSecurityContext.capabilities.drop`        | List of capabilities to be dropped                                                                                                                                                                                | `["ALL"]`        |
+| `containerSecurityContext.seccompProfile.type`      | Set container's Security Context seccomp profile                                                                                                                                                                  | `RuntimeDefault` |
+| `containerPorts.http`                               | Sets http port inside NGINX container                                                                                                                                                                             | `8080`           |
+| `containerPorts.https`                              | Sets https port inside NGINX container                                                                                                                                                                            | `8443`           |
+| `extraContainerPorts`                               | Array of additional container ports for the Nginx container                                                                                                                                                       | `[]`             |
+| `resourcesPreset`                                   | Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if resources is set (resources is recommended for production). | `nano`           |
+| `resources`                                         | Set container requests and limits for different resources like CPU or memory (essential for production workloads)                                                                                                 | `{}`             |
+| `lifecycleHooks`                                    | Optional lifecycleHooks for the NGINX container                                                                                                                                                                   | `{}`             |
+| `startupProbe.enabled`                              | Enable startupProbe                                                                                                                                                                                               | `false`          |
+| `startupProbe.initialDelaySeconds`                  | Initial delay seconds for startupProbe                                                                                                                                                                            | `30`             |
+| `startupProbe.periodSeconds`                        | Period seconds for startupProbe                                                                                                                                                                                   | `10`             |
+| `startupProbe.timeoutSeconds`                       | Timeout seconds for startupProbe                                                                                                                                                                                  | `5`              |
+| `startupProbe.failureThreshold`                     | Failure threshold for startupProbe                                                                                                                                                                                | `6`              |
+| `startupProbe.successThreshold`                     | Success threshold for startupProbe                                                                                                                                                                                | `1`              |
+| `livenessProbe.enabled`                             | Enable livenessProbe                                                                                                                                                                                              | `true`           |
+| `livenessProbe.initialDelaySeconds`                 | Initial delay seconds for livenessProbe                                                                                                                                                                           | `30`             |
+| `livenessProbe.periodSeconds`                       | Period seconds for livenessProbe                                                                                                                                                                                  | `10`             |
+| `livenessProbe.timeoutSeconds`                      | Timeout seconds for livenessProbe                                                                                                                                                                                 | `5`              |
+| `livenessProbe.failureThreshold`                    | Failure threshold for livenessProbe                                                                                                                                                                               | `6`              |
+| `livenessProbe.successThreshold`                    | Success threshold for livenessProbe                                                                                                                                                                               | `1`              |
+| `readinessProbe.enabled`                            | Enable readinessProbe                                                                                                                                                                                             | `true`           |
+| `readinessProbe.path`                               | Request path for livenessProbe                                                                                                                                                                                    | `/`              |
+| `readinessProbe.initialDelaySeconds`                | Initial delay seconds for readinessProbe                                                                                                                                                                          | `5`              |
+| `readinessProbe.periodSeconds`                      | Period seconds for readinessProbe                                                                                                                                                                                 | `5`              |
+| `readinessProbe.timeoutSeconds`                     | Timeout seconds for readinessProbe                                                                                                                                                                                | `3`              |
+| `readinessProbe.failureThreshold`                   | Failure threshold for readinessProbe                                                                                                                                                                              | `3`              |
+| `readinessProbe.successThreshold`                   | Success threshold for readinessProbe                                                                                                                                                                              | `1`              |
+| `customStartupProbe`                                | Custom liveness probe for the Web component                                                                                                                                                                       | `{}`             |
+| `customLivenessProbe`                               | Override default liveness probe                                                                                                                                                                                   | `{}`             |
+| `customReadinessProbe`                              | Override default readiness probe                                                                                                                                                                                  | `{}`             |
+| `autoscaling.enabled`                               | Enable autoscaling for NGINX deployment                                                                                                                                                                           | `false`          |
+| `autoscaling.minReplicas`                           | Minimum number of replicas to scale back                                                                                                                                                                          | `""`             |
+| `autoscaling.maxReplicas`                           | Maximum number of replicas to scale out                                                                                                                                                                           | `""`             |
+| `autoscaling.targetCPU`                             | Target CPU utilization percentage                                                                                                                                                                                 | `""`             |
+| `autoscaling.targetMemory`                          | Target Memory utilization percentage                                                                                                                                                                              | `""`             |
+| `extraVolumes`                                      | Array to add extra volumes                                                                                                                                                                                        | `[]`             |
+| `extraVolumeMounts`                                 | Array to add extra mount                                                                                                                                                                                          | `[]`             |
+| `serviceAccount.create`                             | Enable creation of ServiceAccount for nginx pod                                                                                                                                                                   | `true`           |
+| `serviceAccount.name`                               | The name of the ServiceAccount to use.                                                                                                                                                                            | `""`             |
+| `serviceAccount.annotations`                        | Annotations for service account. Evaluated as a template.                                                                                                                                                         | `{}`             |
+| `serviceAccount.automountServiceAccountToken`       | Auto-mount the service account token in the pod                                                                                                                                                                   | `false`          |
+| `sidecars`                                          | Sidecar parameters                                                                                                                                                                                                | `[]`             |
+| `sidecarSingleProcessNamespace`                     | Enable sharing the process namespace with sidecars                                                                                                                                                                | `false`          |
+| `initContainers`                                    | Extra init containers                                                                                                                                                                                             | `[]`             |
+| `pdb.create`                                        | Created a PodDisruptionBudget                                                                                                                                                                                     | `true`           |
+| `pdb.minAvailable`                                  | Min number of pods that must still be available after the eviction.                                                                                                                                               | `""`             |
+| `pdb.maxUnavailable`                                | Max number of pods that can be unavailable after the eviction.                                                                                                                                                    | `""`             |
+
+### Custom NGINX application parameters
+
+| Name                                             | Description                                                                                                                                                                                                                                                                     | Value                 |
+| ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------- |
+| `cloneStaticSiteFromGit.enabled`                 | Get the server static content from a Git repository                                                                                                                                                                                                                             | `false`               |
+| `cloneStaticSiteFromGit.image.registry`          | Git image registry                                                                                                                                                                                                                                                              | `REGISTRY_NAME`       |
+| `cloneStaticSiteFromGit.image.repository`        | Git image repository                                                                                                                                                                                                                                                            | `REPOSITORY_NAME/git` |
+| `cloneStaticSiteFromGit.image.digest`            | Git image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag                                                                                                                                                                             | `""`                  |
+| `cloneStaticSiteFromGit.image.pullPolicy`        | Git image pull policy                                                                                                                                                                                                                                                           | `IfNotPresent`        |
+| `cloneStaticSiteFromGit.image.pullSecrets`       | Specify docker-registry secret names as an array                                                                                                                                                                                                                                | `[]`                  |
+| `cloneStaticSiteFromGit.repository`              | Git Repository to clone static content from                                                                                                                                                                                                                                     | `""`                  |
+| `cloneStaticSiteFromGit.branch`                  | Git branch to checkout                                                                                                                                                                                                                                                          | `""`                  |
+| `cloneStaticSiteFromGit.interval`                | Interval for sidecar container pull from the Git repository                                                                                                                                                                                                                     | `60`                  |
+| `cloneStaticSiteFromGit.gitClone.command`        | Override default container command for git-clone-repository                                                                                                                                                                                                                     | `[]`                  |
+| `cloneStaticSiteFromGit.gitClone.args`           | Override default container args for git-clone-repository                                                                                                                                                                                                                        | `[]`                  |
+| `cloneStaticSiteFromGit.gitSync.command`         | Override default container command for git-repo-syncer                                                                                                                                                                                                                          | `[]`                  |
+| `cloneStaticSiteFromGit.gitSync.args`            | Override default container args for git-repo-syncer                                                                                                                                                                                                                             | `[]`                  |
+| `cloneStaticSiteFromGit.gitSync.resourcesPreset` | Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if cloneStaticSiteFromGit.gitSync.resources is set (cloneStaticSiteFromGit.gitSync.resources is recommended for production). | `nano`                |
+| `cloneStaticSiteFromGit.gitSync.resources`       | Set container requests and limits for different resources like CPU or memory (essential for production workloads)                                                                                                                                                               | `{}`                  |
+| `cloneStaticSiteFromGit.extraEnvVars`            | Additional environment variables to set for the in the containers that clone static site from git                                                                                                                                                                               | `[]`                  |
+| `cloneStaticSiteFromGit.extraEnvVarsSecret`      | Secret with extra environment variables                                                                                                                                                                                                                                         | `""`                  |
+| `cloneStaticSiteFromGit.extraVolumeMounts`       | Add extra volume mounts for the Git containers                                                                                                                                                                                                                                  | `[]`                  |
+| `serverBlock`                                    | Custom server block to be added to NGINX configuration                                                                                                                                                                                                                          | `""`                  |
+| `streamServerBlock`                              | Custom stream server block to be added to NGINX configuration                                                                                                                                                                                                                   | `""`                  |
+| `existingServerBlockConfigmap`                   | ConfigMap with custom server block to be added to NGINX configuration                                                                                                                                                                                                           | `""`                  |
+| `existingStreamServerBlockConfigmap`             | ConfigMap with custom stream server block to be added to NGINX configuration                                                                                                                                                                                                    | `""`                  |
+| `staticSiteConfigmap`                            | Name of existing ConfigMap with the server static site content                                                                                                                                                                                                                  | `""`                  |
+| `staticSitePVC`                                  | Name of existing PVC with the server static site content                                                                                                                                                                                                                        | `""`                  |
+
+### Traffic Exposure parameters
+
+| Name                                    | Description                                                                                                                      | Value                    |
+| --------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | ------------------------ |
+| `service.type`                          | Service type                                                                                                                     | `ClusterIP`           |
+| `service.ports.http`                    | Service HTTP port                                                                                                                | `80`                     |
+| `service.ports.https`                   | Service HTTPS port                                                                                                               | `443`                    |
+| `service.nodePorts`                     | Specify the nodePort(s) value(s) for the LoadBalancer and NodePort service types.                                                | `{}`                     |
+| `service.targetPort`                    | Target port reference value for the Loadbalancer service types can be specified explicitly.                                      | `{}`                     |
+| `service.clusterIP`                     | NGINX service Cluster IP                                                                                                         | `""`                     |
+| `service.loadBalancerIP`                | LoadBalancer service IP address                                                                                                  | `""`                     |
+| `service.loadBalancerSourceRanges`      | NGINX service Load Balancer sources                                                                                              | `[]`                     |
+| `service.loadBalancerClass`             | service Load Balancer class if service type is `LoadBalancer` (optional, cloud specific)                                         | `""`                     |
+| `service.extraPorts`                    | Extra ports to expose (normally used with the `sidecar` value)                                                                   | `[]`                     |
+| `service.sessionAffinity`               | Session Affinity for Kubernetes service, can be "None" or "ClientIP"                                                             | `None`                   |
+| `service.sessionAffinityConfig`         | Additional settings for the sessionAffinity                                                                                      | `{}`                     |
+| `service.annotations`                   | Service annotations                                                                                                              | `{}`                     |
+| `service.externalTrafficPolicy`         | Enable client source IP preservation                                                                                             | `Cluster`                |
+| `networkPolicy.enabled`                 | Specifies whether a NetworkPolicy should be created                                                                              | `true`                   |
+| `networkPolicy.allowExternal`           | Don't require server label for connections                                                                                       | `true`                   |
+| `networkPolicy.allowExternalEgress`     | Allow the pod to access any range of port and all destinations.                                                                  | `true`                   |
+| `networkPolicy.extraIngress`            | Add extra ingress rules to the NetworkPolicy                                                                                     | `[]`                     |
+| `networkPolicy.extraEgress`             | Add extra ingress rules to the NetworkPolicy (ignored if allowExternalEgress=true)                                               | `[]`                     |
+| `networkPolicy.ingressNSMatchLabels`    | Labels to match to allow traffic from other namespaces                                                                           | `{}`                     |
+| `networkPolicy.ingressNSPodMatchLabels` | Pod labels to match to allow traffic from other namespaces                                                                       | `{}`                     |
+| `ingress.enabled`                       | Set to true to enable ingress record generation                                                                                  | `false`                  |
+| `ingress.selfSigned`                    | Create a TLS secret for this ingress record using self-signed certificates generated by Helm                                     | `false`                  |
+| `ingress.pathType`                      | Ingress path type                                                                                                                | `ImplementationSpecific` |
+| `ingress.apiVersion`                    | Force Ingress API version (automatically detected if not set)                                                                    | `""`                     |
+| `ingress.hostname`                      | Default host for the ingress resource                                                                                            | `nginx.local`            |
+| `ingress.path`                          | The Path to Nginx. You may need to set this to '/*' in order to use this with ALB ingress controllers.                           | `/`                      |
+| `ingress.annotations`                   | Additional annotations for the Ingress resource. To enable certificate autogeneration, place here your cert-manager annotations. | `{}`                     |
+| `ingress.ingressClassName`              | Set the ingerssClassName on the ingress record for k8s 1.18+                                                                     | `""`                     |
+| `ingress.tls`                           | Create TLS Secret                                                                                                                | `false`                  |
+| `ingress.tlsWwwPrefix`                  | Adds www subdomain to default cert                                                                                               | `false`                  |
+| `ingress.extraHosts`                    | The list of additional hostnames to be covered with this ingress record.                                                         | `[]`                     |
+| `ingress.extraPaths`                    | Any additional arbitrary paths that may need to be added to the ingress under the main host.                                     | `[]`                     |
+| `ingress.extraTls`                      | The tls configuration for additional hostnames to be covered with this ingress record.                                           | `[]`                     |
+| `ingress.secrets`                       | If you're providing your own certificates, please use this to add the certificates as secrets                                    | `[]`                     |
+| `ingress.extraRules`                    | The list of additional rules to be added to this ingress record. Evaluated as a template                                         | `[]`                     |
+| `healthIngress.enabled`                 | Set to true to enable health ingress record generation                                                                           | `false`                  |
+| `healthIngress.selfSigned`              | Create a TLS secret for this ingress record using self-signed certificates generated by Helm                                     | `false`                  |
+| `healthIngress.pathType`                | Ingress path type                                                                                                                | `ImplementationSpecific` |
+| `healthIngress.hostname`                | When the health ingress is enabled, a host pointing to this will be created                                                      | `example.local`          |
+| `healthIngress.path`                    | Default path for the ingress record                                                                                              | `/`                      |
+| `healthIngress.annotations`             | Additional annotations for the Ingress resource. To enable certificate autogeneration, place here your cert-manager annotations. | `{}`                     |
+| `healthIngress.tls`                     | Enable TLS configuration for the hostname defined at `healthIngress.hostname` parameter                                          | `false`                  |
+| `healthIngress.extraHosts`              | An array with additional hostname(s) to be covered with the ingress record                                                       | `[]`                     |
+| `healthIngress.extraPaths`              | An array with additional arbitrary paths that may need to be added to the ingress under the main host                            | `[]`                     |
+| `healthIngress.extraTls`                | TLS configuration for additional hostnames to be covered                                                                         | `[]`                     |
+| `healthIngress.secrets`                 | TLS Secret configuration                                                                                                         | `[]`                     |
+| `healthIngress.ingressClassName`        | IngressClass that will be be used to implement the Ingress (Kubernetes 1.18+)                                                    | `""`                     |
+| `healthIngress.extraRules`              | The list of additional rules to be added to this ingress record. Evaluated as a template                                         | `[]`                     |
+
+### Metrics parameters
+
+| Name                                       | Description                                                                                                                                                                                                                       | Value                            |
+| ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------- |
+| `metrics.enabled`                          | Start a Prometheus exporter sidecar container                                                                                                                                                                                     | `false`                          |
+| `metrics.image.registry`                   | NGINX Prometheus exporter image registry                                                                                                                                                                                          | `REGISTRY_NAME`                  |
+| `metrics.image.repository`                 | NGINX Prometheus exporter image repository                                                                                                                                                                                        | `REPOSITORY_NAME/nginx-exporter` |
+| `metrics.image.digest`                     | NGINX Prometheus exporter image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag                                                                                                         | `""`                             |
+| `metrics.image.pullPolicy`                 | NGINX Prometheus exporter image pull policy                                                                                                                                                                                       | `IfNotPresent`                   |
+| `metrics.image.pullSecrets`                | Specify docker-registry secret names as an array                                                                                                                                                                                  | `[]`                             |
+| `metrics.port`                             | NGINX Container Status Port scraped by Prometheus Exporter                                                                                                                                                                        | `""`                             |
+| `metrics.extraArgs`                        | Extra arguments for Prometheus exporter                                                                                                                                                                                           | `[]`                             |
+| `metrics.containerPorts.metrics`           | Prometheus exporter container port                                                                                                                                                                                                | `9113`                           |
+| `metrics.podAnnotations`                   | Additional annotations for NGINX Prometheus exporter pod(s)                                                                                                                                                                       | `{}`                             |
+| `metrics.securityContext.enabled`          | Enabled NGINX Exporter containers' Security Context                                                                                                                                                                               | `false`                          |
+| `metrics.securityContext.seLinuxOptions`   | Set SELinux options in container                                                                                                                                                                                                  | `{}`                             |
+| `metrics.securityContext.runAsUser`        | Set NGINX Exporter container's Security Context runAsUser                                                                                                                                                                         | `1001`                           |
+| `metrics.service.port`                     | NGINX Prometheus exporter service port                                                                                                                                                                                            | `9113`                           |
+| `metrics.service.annotations`              | Annotations for the Prometheus exporter service                                                                                                                                                                                   | `{}`                             |
+| `metrics.resourcesPreset`                  | Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if metrics.resources is set (metrics.resources is recommended for production). | `nano`                           |
+| `metrics.resources`                        | Set container requests and limits for different resources like CPU or memory (essential for production workloads)                                                                                                                 | `{}`                             |
+| `metrics.serviceMonitor.enabled`           | Creates a Prometheus Operator ServiceMonitor (also requires `metrics.enabled` to be `true`)                                                                                                                                       | `false`                          |
+| `metrics.serviceMonitor.namespace`         | Namespace in which Prometheus is running                                                                                                                                                                                          | `""`                             |
+| `metrics.serviceMonitor.jobLabel`          | The name of the label on the target service to use as the job name in prometheus.                                                                                                                                                 | `""`                             |
+| `metrics.serviceMonitor.interval`          | Interval at which metrics should be scraped.                                                                                                                                                                                      | `""`                             |
+| `metrics.serviceMonitor.scrapeTimeout`     | Timeout after which the scrape is ended                                                                                                                                                                                           | `""`                             |
+| `metrics.serviceMonitor.selector`          | Prometheus instance selector labels                                                                                                                                                                                               | `{}`                             |
+| `metrics.serviceMonitor.labels`            | Additional labels that can be used so PodMonitor will be discovered by Prometheus                                                                                                                                                 | `{}`                             |
+| `metrics.serviceMonitor.relabelings`       | RelabelConfigs to apply to samples before scraping                                                                                                                                                                                | `[]`                             |
+| `metrics.serviceMonitor.metricRelabelings` | MetricRelabelConfigs to apply to samples before ingestion                                                                                                                                                                         | `[]`                             |
+| `metrics.serviceMonitor.honorLabels`       | honorLabels chooses the metric's labels on collisions with target labels                                                                                                                                                          | `false`                          |
+| `metrics.prometheusRule.enabled`           | if `true`, creates a Prometheus Operator PrometheusRule (also requires `metrics.enabled` to be `true` and `metrics.prometheusRule.rules`)                                                                                         | `false`                          |
+| `metrics.prometheusRule.namespace`         | Namespace for the PrometheusRule Resource (defaults to the Release Namespace)                                                                                                                                                     | `""`                             |
+| `metrics.prometheusRule.additionalLabels`  | Additional labels that can be used so PrometheusRule will be discovered by Prometheus                                                                                                                                             | `{}`                             |
+| `metrics.prometheusRule.rules`             | Prometheus Rule definitions                                                                                                                                                                                                       | `[]`                             |
+
+Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
+
+```console
+helm install my-release \
+  --set imagePullPolicy=Always \
+    oci://REGISTRY_NAME/REPOSITORY_NAME/nginx
+```
+
+> Note: You need to substitute the placeholders `REGISTRY_NAME` and `REPOSITORY_NAME` with a reference to your Helm chart registry and repository. For example, in the case of Bitnami, you need to use `REGISTRY_NAME=registry-1.docker.io` and `REPOSITORY_NAME=bitnamicharts`.
+
+The above command sets the `imagePullPolicy` to `Always`.
+
+Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example,
+
+```console
+helm install my-release -f values.yaml oci://REGISTRY_NAME/REPOSITORY_NAME/nginx
+```
+
+> Note: You need to substitute the placeholders `REGISTRY_NAME` and `REPOSITORY_NAME` with a reference to your Helm chart registry and repository. For example, in the case of Bitnami, you need to use `REGISTRY_NAME=registry-1.docker.io` and `REPOSITORY_NAME=bitnamicharts`.
+> **Tip**: You can use the default [values.yaml](https://github.com/bitnami/charts/tree/main/bitnami/nginx/values.yaml)
+
+## Troubleshooting
+
+Find more information about how to deal with common errors related to Bitnami's Helm charts in [this troubleshooting guide](https://docs.bitnami.com/general/how-to/troubleshoot-helm-chart-issues).
+
+## Upgrading
+
+### To 18.3.0
+
+This version introduces image verification for security purposes. To disable it, set `global.security.allowInsecureImages` to `true`. More details at [GitHub issue](https://github.com/bitnami/charts/issues/30850).
+
+### To 16.0.0
+
+This major bump changes the following security defaults:
+
+- `runAsGroup` is changed from `0` to `1001`
+- `readOnlyRootFilesystem` is set to `true`
+- `resourcesPreset` is changed from `none` to the minimum size working in our test suites (NOTE: `resourcesPreset` is not meant for production usage, but `resources` adapted to your use case).
+- `global.compatibility.openshift.adaptSecurityContext` is changed from `disabled` to `auto`.
+
+This could potentially break any customization or init scripts used in your deployment. If this is the case, change the default values to the previous ones.
+
+### To 11.0.0
+
+This major release renames several values in this chart and adds missing features, in order to be aligned with the rest of the assets in the Bitnami charts repository.
+
+Affected values:
+
+- `service.port` was renamed as `service.ports.http`.
+- `service.httpsPort` was deprecated. We recommend using `service.ports.https`.
+- `serviceAccount.autoMount` was renamed as `serviceAccount.automountServiceAccountToken`
+- `metrics.serviceMonitor.additionalLabels` was renamed as `metrics.serviceMonitor.labels`
+
+### To 10.0.0
+
+This major release no longer uses the bitnami/nginx-ldap-auth-daemon container as a dependency since its upstream project is not actively maintained.
+
+*2022-04-12 edit*:
+
+[Bitnami's reference implementation](https://www.nginx.com/blog/nginx-plus-authenticate-users/).
+
+On 9 April 2022, security vulnerabilities in the [NGINX LDAP reference implementation](https://github.com/nginxinc/nginx-ldap-auth) were publicly shared. **Although the deprecation of this container from the Bitnami catalog was not related to this security issue, [here](https://docs.bitnami.com/general/security/) you can find more information from the Bitnami security team.**
+
+### To 8.0.0
+
+[On November 13, 2020, Helm v2 support was formally finished](https://github.com/helm/charts#status-of-the-project), this major version is the result of the required changes applied to the Helm Chart to be able to incorporate the different features added in Helm v3 and to be consistent with the Helm project itself regarding the Helm v2 EOL.
+
+#### What changes were introduced in this major version?
+
+- Previous versions of this Helm Chart use `apiVersion: v1` (installable by both Helm 2 and 3), this Helm Chart was updated to `apiVersion: v2` (installable by Helm 3 only). [Here](https://helm.sh/docs/topics/charts/#the-apiversion-field) you can find more information about the `apiVersion` field.
+- Move dependency information from the *requirements.yaml* to the *Chart.yaml*
+- After running `helm dependency update`, a *Chart.lock* file is generated containing the same structure used in the previous *requirements.lock*
+- The different fields present in the *Chart.yaml* file has been ordered alphabetically in a homogeneous way for all the Bitnami Helm Charts
+
+#### Considerations when upgrading to this version
+
+- If you want to upgrade to this version from a previous one installed with Helm v3, you shouldn't face any issues
+- If you want to upgrade to this version using Helm v2, this scenario is not supported as this version doesn't support Helm v2 anymore
+- If you installed the previous version with Helm v2 and wants to upgrade to this version with Helm v3, please refer to the [official Helm documentation](https://helm.sh/docs/topics/v2_v3_migration/#migration-use-cases) about migrating from Helm v2 to v3
+
+#### Useful links
+
+- <https://techdocs.broadcom.com/us/en/vmware-tanzu/application-catalog/tanzu-application-catalog/services/tac-doc/apps-tutorials-resolve-helm2-helm3-post-migration-issues-index.html>
+- <https://helm.sh/docs/topics/v2_v3_migration/>
+- <https://helm.sh/blog/migrate-from-helm-v2-to-helm-v3/>
+
+### To 7.0.0
+
+- This version also introduces `bitnami/common`, a [library chart](https://helm.sh/docs/topics/library_charts/#helm) as a dependency. More documentation about this new utility could be found [here](https://github.com/bitnami/charts/tree/main/bitnami/common#bitnami-common-library-chart). Please, make sure that you have updated the chart dependencies before executing any upgrade.
+- Ingress configuration was also adapted to follow the Helm charts best practices.
+
+> Note: There is no backwards compatibility due to the above mentioned changes. It's necessary to install a new release of the chart, and migrate your existing application to the new NGINX instances.
+
+### To 5.6.0
+
+Added support for the use of LDAP.
+
+### To 5.0.0
+
+Backwards compatibility is not guaranteed unless you modify the labels used on the chart's deployments.
+Use the workaround below to upgrade from versions previous to 5.0.0. The following example assumes that the release name is nginx:
+
+```console
+kubectl delete deployment nginx --cascade=false
+helm upgrade nginx oci://REGISTRY_NAME/REPOSITORY_NAME/nginx
+```
+
+> Note: You need to substitute the placeholders `REGISTRY_NAME` and `REPOSITORY_NAME` with a reference to your Helm chart registry and repository. For example, in the case of Bitnami, you need to use `REGISTRY_NAME=registry-1.docker.io` and `REPOSITORY_NAME=bitnamicharts`.
+
+### To 1.0.0
+
+Backwards compatibility is not guaranteed unless you modify the labels used on the chart's deployments.
+Use the workaround below to upgrade from versions previous to 1.0.0. The following example assumes that the release name is nginx:
+
+```console
+kubectl patch deployment nginx --type=json -p='[{"op": "remove", "path": "/spec/selector/matchLabels/chart"}]'
+```
+
+## License
+
+Copyright &copy; 2024 Broadcom. The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
+
+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.
diff --git a/kubernetes/common/nginx/common/.helmignore b/kubernetes/common/nginx/common/.helmignore
new file mode 100644 (file)
index 0000000..d0e1084
--- /dev/null
@@ -0,0 +1,26 @@
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*~
+# Various IDEs
+.project
+.idea/
+*.tmproj
+.vscode/
+# img folder
+img/
+# Changelog
+CHANGELOG.md
diff --git a/kubernetes/common/nginx/common/CHANGELOG.md b/kubernetes/common/nginx/common/CHANGELOG.md
new file mode 100644 (file)
index 0000000..b48a8db
--- /dev/null
@@ -0,0 +1,635 @@
+# Changelog
+
+## 2.29.1 (2025-01-10)
+
+* [bitnami/common] Removing seLinuxOptions from omission ([#31279](https://github.com/bitnami/charts/pull/31279))
+
+## 2.29.0 (2025-01-03)
+
+* [bitnami/common] Add "common.capabilities.job.apiVersion" template (#31164) ([2ca979a](https://github.com/bitnami/charts/commit/2ca979a6add279384d60e6b35199eaf13553cefa)), closes [#31164](https://github.com/bitnami/charts/issues/31164)
+
+## 2.28.0 (2024-12-10)
+
+* [bitnami/common] New helper to detect non-standard images (#30851) ([ae33d01](https://github.com/bitnami/charts/commit/ae33d01968e8a353a569785f9867827153c797dc)), closes [#30851](https://github.com/bitnami/charts/issues/30851)
+
+## <small>2.27.2 (2024-11-27)</small>
+
+* [bitnami/common] Fix appVersion (#30628) ([b87d39e](https://github.com/bitnami/charts/commit/b87d39e27a0889c74b20c3d2fe5ae0c4a2417bfd)), closes [#30628](https://github.com/bitnami/charts/issues/30628)
+* [bitnami/common]: bump patch version (#30639) ([623e584](https://github.com/bitnami/charts/commit/623e5846ff827b7ecbcffa2dc51e2e94b14ef8fd)), closes [#30639](https://github.com/bitnami/charts/issues/30639)
+
+## <small>2.27.1 (2024-11-26)</small>
+
+* [bitnami/common] Fix VPA apiVersion (#30625) ([8c24438](https://github.com/bitnami/charts/commit/8c24438a2f6e8ec646cad9901ed82d71d4196e3e)), closes [#30625](https://github.com/bitnami/charts/issues/30625)
+
+## 2.27.0 (2024-11-07)
+
+* [bitnami/*] Remove wrong comment about imagePullPolicy (#30107) ([a51f9e4](https://github.com/bitnami/charts/commit/a51f9e4bb0fbf77199512d35de7ac8abe055d026)), closes [#30107](https://github.com/bitnami/charts/issues/30107)
+* [bitnami/common] feat: :sparkles: Add honorProvidedValues in common.secrets.manage (#30243) ([3d76a49](https://github.com/bitnami/charts/commit/3d76a4955c11fa4d2464da2c4d2096e1e3c6fa37)), closes [#30243](https://github.com/bitnami/charts/issues/30243)
+* Update documentation links to techdocs.broadcom.com (#29931) ([f0d9ad7](https://github.com/bitnami/charts/commit/f0d9ad78f39f633d275fc576d32eae78ded4d0b8)), closes [#29931](https://github.com/bitnami/charts/issues/29931)
+
+## 2.26.0 (2024-10-14)
+
+* [bitnami/common] Drop unused custom empty password validators (#29432) ([5fb0e97](https://github.com/bitnami/charts/commit/5fb0e97d9336d40d86c3295637d4233218b8afea)), closes [#29432](https://github.com/bitnami/charts/issues/29432)
+
+## 2.25.0 (2024-10-11)
+
+* [bitnami/common] Add the ability to specify namespaces for affinity (#29479) ([005e0d6](https://github.com/bitnami/charts/commit/005e0d696004dd972915f290b7caffb2bc332400)), closes [#29479](https://github.com/bitnami/charts/issues/29479)
+
+## 2.24.0 (2024-10-03)
+
+* [bitnami/common] Add common.tplvalues.merge-overwrite helper (#29668) ([611b2a5](https://github.com/bitnami/charts/commit/611b2a59e06feaac878b3b218fd848a687216158)), closes [#29668](https://github.com/bitnami/charts/issues/29668)
+
+## 2.23.0 (2024-09-13)
+
+* [bitnami/common] Add option to remove empty seLinuxOptions from securityContext in non OpenShift env ([7e44e64](https://github.com/bitnami/charts/commit/7e44e64626f5b1fc6d56889cdfdeadc1f62c7cf1)), closes [#28945](https://github.com/bitnami/charts/issues/28945)
+
+## 2.22.0 (2024-08-08)
+
+* [bitnami/common] Fallback to chart appVersion in common.images.image (#28764) ([b4aa0a6](https://github.com/bitnami/charts/commit/b4aa0a685a21c50ca10e41e3eb2023bbd4282cf7)), closes [#28764](https://github.com/bitnami/charts/issues/28764)
+
+## 2.21.0 (2024-08-05)
+
+* [bitnami/common] Allow handling of new secrets after initial installation (#28581) ([07062ee](https://github.com/bitnami/charts/commit/07062ee01382e24b8204b27083ff3e8102110c2f)), closes [#28581](https://github.com/bitnami/charts/issues/28581)
+
+## <small>2.20.5 (2024-07-16)</small>
+
+* [bitnami/common] [bitnami/wordpress] Use global.storageClass for fallback, not override (#24863) ([2b78e13](https://github.com/bitnami/charts/commit/2b78e137ac278cdf9d54523e8d37833a4ff0cd5b)), closes [#24863](https://github.com/bitnami/charts/issues/24863)
+
+## <small>2.20.4 (2024-07-11)</small>
+
+* [bitnami/*] Update README changing TAC wording (#27530) ([52dfed6](https://github.com/bitnami/charts/commit/52dfed6bac44d791efabfaf06f15daddc4fefb0c)), closes [#27530](https://github.com/bitnami/charts/issues/27530)
+* [bitnami/common] Increase ephemeral-storage default limits (#27902) ([dc0000d](https://github.com/bitnami/charts/commit/dc0000d7b56f68991bb8d8fff473103ed9026f5f)), closes [#27902](https://github.com/bitnami/charts/issues/27902)
+
+## <small>2.20.3 (2024-06-17)</small>
+
+* [bitnami/common] chore: :wrench: Relax large and xlarge presets resource requests (#27312) ([6ca69f6](https://github.com/bitnami/charts/commit/6ca69f6769d0f65acc850fa0bcc08506de50cc41)), closes [#27312](https://github.com/bitnami/charts/issues/27312)
+
+## <small>2.20.2 (2024-06-10)</small>
+
+* [bitnami/common] remove trailing spaces from imagePullSecrets rendering (#26882) ([362d4ac](https://github.com/bitnami/charts/commit/362d4ac94dd69be1b607fc531ceac4d67d8d57ef)), closes [#26882](https://github.com/bitnami/charts/issues/26882)
+
+## <small>2.20.1 (2024-06-10)</small>
+
+* [bitnami/common] improve renderSecurityContext (#27053) ([5f0bdde](https://github.com/bitnami/charts/commit/5f0bdde77cf05afa20cb4a800090748a8d102d02)), closes [#27053](https://github.com/bitnami/charts/issues/27053)
+
+## 2.20.0 (2024-06-05)
+
+* [bitnami/*] ci: :construction_worker: Add tag and changelog support (#25359) ([91c707c](https://github.com/bitnami/charts/commit/91c707c9e4e574725a09505d2d313fb93f1b4c0a)), closes [#25359](https://github.com/bitnami/charts/issues/25359)
+* [bitnami/common] Capabilities to return latest apiVersion if kubeVersion is undefined (#26758) ([6582c32](https://github.com/bitnami/charts/commit/6582c3237b772af9cb379f7eaceddb2d64b507f0)), closes [#26758](https://github.com/bitnami/charts/issues/26758)
+* [bitnami/common] docs: :memo: Add changelog ([23349c9](https://github.com/bitnami/charts/commit/23349c99b70313f3e19ebcf9d3e0c154836b2cc0))
+
+## <small>2.19.3 (2024-05-20)</small>
+
+* [bitnami/*] Change non-root and rolling-tags doc URLs (#25628) ([b067c94](https://github.com/bitnami/charts/commit/b067c94f6bcde427863c197fd355f0b5ba12ff5b)), closes [#25628](https://github.com/bitnami/charts/issues/25628)
+* [bitnami/*] Set new header/owner (#25558) ([8d1dc11](https://github.com/bitnami/charts/commit/8d1dc11f5fb30db6fba50c43d7af59d2f79deed3)), closes [#25558](https://github.com/bitnami/charts/issues/25558)
+* [bitnami/common] feat: :sparkles: Show warning when original images are replaced (#25952) ([855045a](https://github.com/bitnami/charts/commit/855045a1a62618154c1216e8da31a4d2c14c7586)), closes [#25952](https://github.com/bitnami/charts/issues/25952)
+
+## <small>2.19.2 (2024-04-29)</small>
+
+* [bitnami/common] Simplify syntax to deal with nullable objects (#25446) ([7dcea6a](https://github.com/bitnami/charts/commit/7dcea6aeb7c45d56bd6175b457bb8a2cddf8defc)), closes [#25446](https://github.com/bitnami/charts/issues/25446)
+* Replace VMware by Broadcom copyright text (#25306) ([a5e4bd0](https://github.com/bitnami/charts/commit/a5e4bd0e35e419203793976a78d9d0a13de92c76)), closes [#25306](https://github.com/bitnami/charts/issues/25306)
+
+## <small>2.19.1 (2024-03-27)</small>
+
+* [bitnami/common] chore: :wrench: Relax preset resource requests xlarge and 2xlarge instances (#24713 ([fdd93bb](https://github.com/bitnami/charts/commit/fdd93bb2a2f73a7df3e498b5072736a54610a908)), closes [#24713](https://github.com/bitnami/charts/issues/24713)
+
+## 2.19.0 (2024-03-08)
+
+* [bitnami/common] feat: :sparkles: Remove empty seLinuxOptions in adapted Openshift rendered security ([1f2f5ef](https://github.com/bitnami/charts/commit/1f2f5ef476efba7f284df0c36c265216325ffda9)), closes [#24268](https://github.com/bitnami/charts/issues/24268)
+
+## 2.18.0 (2024-03-04)
+
+* [bitnami/common] feat: :sparkles: :lock: Add compatibility support for securityContext in Openshift  ([8fb0dd4](https://github.com/bitnami/charts/commit/8fb0dd48b6d7ec69bb59db2376365f6d76b26d97)), closes [#24040](https://github.com/bitnami/charts/issues/24040)
+
+## 2.17.0 (2024-02-20)
+
+* [bitnami/*] Bump all versions (#23602) ([b70ee2a](https://github.com/bitnami/charts/commit/b70ee2a30e4dc256bf0ac52928fb2fa7a70f049b)), closes [#23602](https://github.com/bitnami/charts/issues/23602)
+
+## <small>2.16.1 (2024-02-19)</small>
+
+* [bitnami/common] chore: :wrench: Bump ephemeral storage limits (#23564) ([18c4d88](https://github.com/bitnami/charts/commit/18c4d88f7d4ae93f36d0896fa66dbe872bba1c48)), closes [#23564](https://github.com/bitnami/charts/issues/23564)
+
+## 2.16.0 (2024-02-15)
+
+* [bitnami/common] feat: :sparkles: Add ephemeral-storage to resources preset (#23544) ([23b6856](https://github.com/bitnami/charts/commit/23b68563a0e2e721aa07864cff1b877e1d074388)), closes [#23544](https://github.com/bitnami/charts/issues/23544)
+
+## <small>2.15.3 (2024-02-14)</small>
+
+* [bitnami/common] chore: :pencil2: Fix typo in comment ([d07fb32](https://github.com/bitnami/charts/commit/d07fb324bd6455bf8607f66c642ff346443199ba))
+
+## <small>2.15.2 (2024-02-14)</small>
+
+* [bitnami/common] fix: :children_crossing: Improve resource warning message (#23425) ([7593e4f](https://github.com/bitnami/charts/commit/7593e4fc69fb8c50f7d626cc305c5adc56d23f48)), closes [#23425](https://github.com/bitnami/charts/issues/23425)
+
+## <small>2.15.1 (2024-02-13)</small>
+
+* [bitnami/common] fix: :bug: Check if section is enabled before printing resource warning ([262b6ee](https://github.com/bitnami/charts/commit/262b6ee64c57a5293333879ec423ad41c44f162c))
+
+## 2.15.0 (2024-02-13)
+
+* [bitnami/*] Fix docs.bitnami.com broken links (#21901) ([f35506d](https://github.com/bitnami/charts/commit/f35506d2dadee4f097986e7792df1f53ab215b5d)), closes [#21901](https://github.com/bitnami/charts/issues/21901)
+* [bitnami/*] Move documentation sections from docs.bitnami.com back to the README (#22203) ([7564f36](https://github.com/bitnami/charts/commit/7564f36ca1e95ff30ee686652b7ab8690561a707)), closes [#22203](https://github.com/bitnami/charts/issues/22203)
+* [bitnami/*] Update copyright: Year and company (#21815) ([6c4bf75](https://github.com/bitnami/charts/commit/6c4bf75dec58fc7c9aee9f089777b1a858c17d5b)), closes [#21815](https://github.com/bitnami/charts/issues/21815)
+* [bitnami/common] feat: :sparkles: Add support for resource presets (#23410) ([310d9f9](https://github.com/bitnami/charts/commit/310d9f9e44cb913a2e482f57107970ed5bde9a69)), closes [#23410](https://github.com/bitnami/charts/issues/23410)
+
+## <small>2.14.1 (2023-12-19)</small>
+
+* [bitnami/common] Fix typo with new line in common.secrets.passwords.manage (#21653) ([7e70463](https://github.com/bitnami/charts/commit/7e704634ef564adac330f1e0a67feb2a40a271dc)), closes [#21653](https://github.com/bitnami/charts/issues/21653)
+
+## 2.14.0 (2023-12-19)
+
+* [bitnami/common] add params skipB64enc and skipQuote to common.secrets.passwords.manage (#21595) ([2070eeb](https://github.com/bitnami/charts/commit/2070eeb30bbf48639e0177a42f65a1d13f42a180)), closes [#21595](https://github.com/bitnami/charts/issues/21595)
+
+## <small>2.13.4 (2023-12-15)</small>
+
+* [bitnami/*] Remove relative links to non-README sections, add verification for that and update TL;DR ([1103633](https://github.com/bitnami/charts/commit/11036334d82df0490aa4abdb591543cab6cf7d7f)), closes [#20967](https://github.com/bitnami/charts/issues/20967)
+* [bitnami/*] Rename VMware Application Catalog (#20361) ([3acc734](https://github.com/bitnami/charts/commit/3acc73472beb6fb56c4d99f929061001205bc57e)), closes [#20361](https://github.com/bitnami/charts/issues/20361)
+* [bitnami/common] fix failOnNew implementation in common.secrets.passwords.manage (#21342) ([76a5f24](https://github.com/bitnami/charts/commit/76a5f248fbceb3d1d948c7e60fbba74fd7eb3200)), closes [#21342](https://github.com/bitnami/charts/issues/21342)
+* [bitnami/common] Standardize documentation (#20334) ([3af2426](https://github.com/bitnami/charts/commit/3af242606877aea25c623b4185e6fcd285b7308d)), closes [#20334](https://github.com/bitnami/charts/issues/20334)
+
+## <small>2.13.3 (2023-10-17)</small>
+
+* [bitnami/*] Update Helm charts prerequisites (#19745) ([eb755dd](https://github.com/bitnami/charts/commit/eb755dd36a4dd3cf6635be8e0598f9a7f4c4a554)), closes [#19745](https://github.com/bitnami/charts/issues/19745)
+* [bitnami/common]: Address admission configuration typo  (#19840) ([9a936f1](https://github.com/bitnami/charts/commit/9a936f158646e101c2507421fdcb85b787bbaf64)), closes [#19840](https://github.com/bitnami/charts/issues/19840)
+
+## <small>2.13.2 (2023-10-05)</small>
+
+* [bitnami/common] update imagePullSecrets to handle map and list format (#19702) ([1d30563](https://github.com/bitnami/charts/commit/1d30563bf53d4c0ac898cf1070af57aa28a039f1)), closes [#19702](https://github.com/bitnami/charts/issues/19702)
+
+## <small>2.13.1 (2023-10-04)</small>
+
+* [bitnami/common] render labels correctly when they contains templates (#19680) ([3cb44e3](https://github.com/bitnami/charts/commit/3cb44e376a472ca6721866b09f6d0ab412338cbc)), closes [#19680](https://github.com/bitnami/charts/issues/19680)
+
+## 2.13.0 (2023-09-29)
+
+* [bitnami/common]: Add capabilities macros to manage Pod Security Standard objects (#19428) ([322b76d](https://github.com/bitnami/charts/commit/322b76d6450840f08d53ecfddb5e151cac5c9e88)), closes [#19428](https://github.com/bitnami/charts/issues/19428)
+
+## <small>2.12.1 (2023-09-29)</small>
+
+* [bitnami/common] allow for empty appVersion (#19467) ([8b46a33](https://github.com/bitnami/charts/commit/8b46a3366abc7d216d16ace89675f3fc42691e8f)), closes [#19467](https://github.com/bitnami/charts/issues/19467)
+
+## 2.12.0 (2023-09-22)
+
+* [bitnami/common] new macro to checksum config resources (#19261) ([73945fe](https://github.com/bitnami/charts/commit/73945fedfa2acff03fe172430fcc4b8bcf55282f)), closes [#19261](https://github.com/bitnami/charts/issues/19261)
+* Revert "Autogenerate schema files (#19194)" (#19335) ([73d80be](https://github.com/bitnami/charts/commit/73d80be525c88fb4b8a54451a55acd506e337062)), closes [#19194](https://github.com/bitnami/charts/issues/19194) [#19335](https://github.com/bitnami/charts/issues/19335)
+
+## <small>2.11.1 (2023-09-15)</small>
+
+* Common - Adding app.kubernetes.io/version to common labels (#17201) ([9c497be](https://github.com/bitnami/charts/commit/9c497be9d99a98a20cd01e5858014e097ebe0eaa)), closes [#17201](https://github.com/bitnami/charts/issues/17201)
+
+## 2.11.0 (2023-09-12)
+
+* [bitnami/common] New helper to return image version (#19223) ([db46696](https://github.com/bitnami/charts/commit/db466964c6cfb3368ab87be6bb4d16f74d5c6fd0)), closes [#19223](https://github.com/bitnami/charts/issues/19223)
+* Autogenerate schema files (#19194) ([a2c2090](https://github.com/bitnami/charts/commit/a2c2090b5ac97f47b745c8028c6452bf99739772)), closes [#19194](https://github.com/bitnami/charts/issues/19194)
+
+## <small>2.10.1 (2023-09-08)</small>
+
+* [bitnami/common]: Compatiblity with Helm 3.2.0+ (#19177) ([e4fc03d](https://github.com/bitnami/charts/commit/e4fc03d96bef6ab0318d642fb65ba508c49844f1)), closes [#19177](https://github.com/bitnami/charts/issues/19177)
+
+## 2.10.0 (2023-09-04)
+
+* [bitnami/common] new macro to merge a list of values with rendering  (#18889) ([0fb66f2](https://github.com/bitnami/charts/commit/0fb66f2c6f6828a240a0c1e6857c337bf9f4202a)), closes [#18889](https://github.com/bitnami/charts/issues/18889)
+
+## <small>2.9.2 (2023-08-31)</small>
+
+* Avoid using a tpl when there is no template (#18792) ([134924a](https://github.com/bitnami/charts/commit/134924a260fe2cd758a954f34e89ccb14012f348)), closes [#18792](https://github.com/bitnami/charts/issues/18792)
+
+## <small>2.9.1 (2023-08-29)</small>
+
+* [bitnami/common] Add extraLabelSelectors to affinities templates (#18127) ([b9ecfdb](https://github.com/bitnami/charts/commit/b9ecfdb3421a057b76e6f35f58c26e631c74e686)), closes [#18127](https://github.com/bitnami/charts/issues/18127)
+
+## 2.9.0 (2023-08-22)
+
+* [bitnami/common] Add support for customizing standard labels (#18154) ([9a20483](https://github.com/bitnami/charts/commit/9a20483cfd1daa6bfe08fd8116516a9bb5cd9754)), closes [#18154](https://github.com/bitnami/charts/issues/18154)
+
+## 2.8.0 (2023-08-07)
+
+* [bitnami/common] Delete app kubernetes version field (#18240) ([5fe3ee4](https://github.com/bitnami/charts/commit/5fe3ee44eed88e9b6843c70cbeb6378194b2276b)), closes [#18240](https://github.com/bitnami/charts/issues/18240)
+
+## 2.7.0 (2023-08-07)
+
+* Add app.kubernetes.io/version based on AppVersion (#18194) ([4f698f8](https://github.com/bitnami/charts/commit/4f698f8ac54fc68cd8dab433b7c2d8ffb77a4067)), closes [#18194](https://github.com/bitnami/charts/issues/18194)
+
+## 2.6.0 (2023-07-04)
+
+* [bitnami/common] Add scope for common.tplvalues.render (#17033) ([daf1b54](https://github.com/bitnami/charts/commit/daf1b5445a5e1c961ab78673899dd8007b4f1000)), closes [#17033](https://github.com/bitnami/charts/issues/17033)
+
+## 2.5.0 (2023-06-30)
+
+* [bitnami/*] Change copyright section in READMEs (#17006) ([ef986a1](https://github.com/bitnami/charts/commit/ef986a1605241102b3dcafe9fd8089e6fc1201ad)), closes [#17006](https://github.com/bitnami/charts/issues/17006)
+* [bitnami/common] Update common.secrets.passwords.manage and common.secrets.lookup (#17397) ([5a73cf1](https://github.com/bitnami/charts/commit/5a73cf19f92b93d88ee766669a947375135db903)), closes [#17397](https://github.com/bitnami/charts/issues/17397)
+* [bitnami/several] Change copyright section in READMEs (#16989) ([5b6a5cf](https://github.com/bitnami/charts/commit/5b6a5cfb7625a751848a2e5cd796bd7278f406ca)), closes [#16989](https://github.com/bitnami/charts/issues/16989)
+* Add copyright header (#17300) ([da68be8](https://github.com/bitnami/charts/commit/da68be8e951225133c7dfb572d5101ca3d61c5ae)), closes [#17300](https://github.com/bitnami/charts/issues/17300)
+* Update charts readme (#17217) ([31b3c0a](https://github.com/bitnami/charts/commit/31b3c0afd968ff4429107e34101f7509e6a0e913)), closes [#17217](https://github.com/bitnami/charts/issues/17217)
+
+## 2.4.0 (2023-05-18)
+
+* [bitnami/common] feat: :sparkles: Add apiVersions for DaemonSet and VPA ([a86cfaf](https://github.com/bitnami/charts/commit/a86cfaf0acb7cc26a7a91256f4b76db8f31797ef))
+
+## 2.3.0 (2023-05-12)
+
+* Add wording for enterprise page (#16560) ([8f22774](https://github.com/bitnami/charts/commit/8f2277440b976d52785ba9149762ad8620a73d1f)), closes [#16560](https://github.com/bitnami/charts/issues/16560)
+* Remove duplicate in image pull secrets (#16529) ([ddfea70](https://github.com/bitnami/charts/commit/ddfea70831875639cb298a555ad6dd5e68f059e4)), closes [#16529](https://github.com/bitnami/charts/issues/16529)
+
+## <small>2.2.6 (2023-05-09)</small>
+
+* [bitnami/several] Adapt Chart.yaml to set desired OCI annotations (#16546) ([fc9b18f](https://github.com/bitnami/charts/commit/fc9b18f2e98805d4df629acbcde696f44f973344)), closes [#16546](https://github.com/bitnami/charts/issues/16546)
+
+## <small>2.2.5 (2023-05-02)</small>
+
+* [bitnami/*] Make Helm charts 100% OCI (#15998) ([8841510](https://github.com/bitnami/charts/commit/884151035efcbf2e1b3206e7def85511073fb57d)), closes [#15998](https://github.com/bitnami/charts/issues/15998)
+* [bitnami/common] Fix typo in README.md to test chart publishing from GitHub (#16143) ([5b05ec3](https://github.com/bitnami/charts/commit/5b05ec32caa73240d38135e19501ab2658397d2e)), closes [#16143](https://github.com/bitnami/charts/issues/16143)
+
+## <small>2.2.4 (2023-03-07)</small>
+
+* [bitnami/*] Fix markdown linter issues (#14874) ([a51e0e8](https://github.com/bitnami/charts/commit/a51e0e8d35495b907f3e70dd2f8e7c3bcbf4166a)), closes [#14874](https://github.com/bitnami/charts/issues/14874)
+* [bitnami/*] Fix markdown linter issues 2 (#14890) ([aa96572](https://github.com/bitnami/charts/commit/aa9657237ee8df4a46db0d7fdf8a23230dd6902a)), closes [#14890](https://github.com/bitnami/charts/issues/14890)
+* [bitnami/common] Allow empty registry name (#15296) ([f13df7b](https://github.com/bitnami/charts/commit/f13df7b00f38e5fce67eab7a1b78afb0b064344e)), closes [#15296](https://github.com/bitnami/charts/issues/15296)
+
+## <small>2.2.3 (2023-02-03)</small>
+
+* [bitnami/*] Add license annotation and remove obsolete engine parameter (#14293) ([da2a794](https://github.com/bitnami/charts/commit/da2a7943bae95b6e9b5b4ed972c15e990b69fdb0)), closes [#14293](https://github.com/bitnami/charts/issues/14293)
+* [bitnami/*] Change copyright date (#14682) ([add4ec7](https://github.com/bitnami/charts/commit/add4ec701108ac36ed4de2dffbdf407a0d091067)), closes [#14682](https://github.com/bitnami/charts/issues/14682)
+* [bitnami/*] Change licenses annotation format (#14377) ([0ab7608](https://github.com/bitnami/charts/commit/0ab760862c660fcc78cffadf8e1d8cdd70881473)), closes [#14377](https://github.com/bitnami/charts/issues/14377)
+* [bitnami/*] Unify READMEs (#14472) ([2064fb8](https://github.com/bitnami/charts/commit/2064fb8dcc78a845cdede8211af8c3cc52551161)), closes [#14472](https://github.com/bitnami/charts/issues/14472)
+* [bitnami/common] chore: Correct common.images.image global in example (#14735) ([69ada7d](https://github.com/bitnami/charts/commit/69ada7da0c9c6b7ce718faef6920c61e3632fd02)), closes [#14735](https://github.com/bitnami/charts/issues/14735)
+
+## <small>2.2.2 (2022-12-12)</small>
+
+* [bitnami/common] resolve namespace using common.names.namespace macro (#13481) ([35b84e8](https://github.com/bitnami/charts/commit/35b84e8ba209681d4f160ca102188af61307fccf)), closes [#13481](https://github.com/bitnami/charts/issues/13481)
+
+## <small>2.2.1 (2022-11-25)</small>
+
+* [bitnami/common] fix common topology key affinity function (#13593) ([f95dec8](https://github.com/bitnami/charts/commit/f95dec803bd138b76d67a296545974c5a644d63e)), closes [#13593](https://github.com/bitnami/charts/issues/13593)
+
+## 2.2.0 (2022-11-14)
+
+* [bitnami/common] affinity topologyKey override (#13435) ([624c14e](https://github.com/bitnami/charts/commit/624c14e7121557e6a29ff0e814cb800c2f3cf619)), closes [#13435](https://github.com/bitnami/charts/issues/13435)
+* [bitnami/common] Fixed naming of common.secrets.passwords.manage function in README (#13250) ([39a8bcb](https://github.com/bitnami/charts/commit/39a8bcbb1b606cc165643ae4ddcdc15f05e91583)), closes [#13250](https://github.com/bitnami/charts/issues/13250)
+
+## <small>2.1.2 (2022-10-31)</small>
+
+* [bitnami/common] Do not explicitly specify namespace in affinity term. (#12932) ([638a48e](https://github.com/bitnami/charts/commit/638a48e4d3ec7b5d160f4b525ec40218512c464b)), closes [#12932](https://github.com/bitnami/charts/issues/12932) [/kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podaffinityterm-v1](https://github.com//kubernetes.io/docs/reference/generated/kubernetes-api/v1.23//issues/podaffinityterm-v1) [#12668](https://github.com/bitnami/charts/issues/12668)
+
+## <small>2.1.1 (2022-10-27)</small>
+
+* [bitnami/common] Fix appVersion mismatch (#13189) ([42b3b3e](https://github.com/bitnami/charts/commit/42b3b3e6c68e6af8ba19f7ec42be0d71b4c21852)), closes [#13189](https://github.com/bitnami/charts/issues/13189)
+
+## 2.1.0 (2022-10-27)
+
+* [bitnami/common] Add new function 'common.secrets.lookup' (#13150) ([e848934](https://github.com/bitnami/charts/commit/e84893410321b88adbd7d2e40b891685a15ce640)), closes [#13150](https://github.com/bitnami/charts/issues/13150)
+
+## <small>2.0.4 (2022-10-24)</small>
+
+* [bitnami/*] Use new default branch name in links (#12943) ([a529e02](https://github.com/bitnami/charts/commit/a529e02597d49d944eba1eb0f190713293247176)), closes [#12943](https://github.com/bitnami/charts/issues/12943)
+* [bitnami/common] kubernetes.io/tls-acme Ingress annotation triggers IngressTLS array (#13054) ([2008857](https://github.com/bitnami/charts/commit/200885790b34afd6fd04ea45949c887a907b6b38)), closes [#13054](https://github.com/bitnami/charts/issues/13054)
+* [bitnami/common] quote secret value when lookup (#11276) ([c8e3019](https://github.com/bitnami/charts/commit/c8e301965f05996a2ae18e0fc8dbfcbe64428356)), closes [#11276](https://github.com/bitnami/charts/issues/11276)
+
+## <small>2.0.3 (2022-09-12)</small>
+
+* [bitnami/common] Revert changes in HPA context from #12282 (#12372) ([55fdc3a](https://github.com/bitnami/charts/commit/55fdc3aff3e32502abfd8f0607ac2be54e585744)), closes [#12282](https://github.com/bitnami/charts/issues/12282) [#12372](https://github.com/bitnami/charts/issues/12372)
+
+## <small>2.0.2 (2022-09-05)</small>
+
+* fix context for HPA util (#12282) ([ccd54a0](https://github.com/bitnami/charts/commit/ccd54a0d47a96903f499fbcdb52a336863020efe)), closes [#12282](https://github.com/bitnami/charts/issues/12282)
+
+## <small>2.0.1 (2022-08-23)</small>
+
+* [bitnami/common] Digest/Tag new approach backward compatible (#12029) ([f1c27dc](https://github.com/bitnami/charts/commit/f1c27dc5d9540c2ea192abf1245da67f5b4f8916)), closes [#12029](https://github.com/bitnami/charts/issues/12029)
+
+## 2.0.0 (2022-08-18)
+
+* [bitnami/common] MAJOR: Add support for image digest apart from tag (#11830) ([e3fee4e](https://github.com/bitnami/charts/commit/e3fee4e41d34a6584660c3b77b8521922603ccab)), closes [#11830](https://github.com/bitnami/charts/issues/11830)
+
+## <small>1.17.1 (2022-08-18)</small>
+
+* Revert changes from #11797 (#11829) ([22bb033](https://github.com/bitnami/charts/commit/22bb033224176c498920596c8d8b25b5f60a277d)), closes [#11797](https://github.com/bitnami/charts/issues/11797) [#11829](https://github.com/bitnami/charts/issues/11829)
+
+## 1.17.0 (2022-08-18)
+
+* [bitnami/common] Add support for image digest apart from tag (#11797) ([b069345](https://github.com/bitnami/charts/commit/b0693450f653318ac7da64575dac389d7041b69f)), closes [#11797](https://github.com/bitnami/charts/issues/11797)
+
+## <small>1.16.1 (2022-07-13)</small>
+
+* [bitnami/*] Replace Kubeapps URL in READMEs (and kubeapps Chart.yaml) and remove BKPR references (#1 ([c6a7914](https://github.com/bitnami/charts/commit/c6a7914361e5aea6016fb45bf4d621edfd111d32)), closes [#10600](https://github.com/bitnami/charts/issues/10600)
+* [bitnami/common] Affinities section does not use common.names.namespace (#11137) ([b70c24c](https://github.com/bitnami/charts/commit/b70c24c82c7a9112a4288441ad1fa8c035bb68b4)), closes [#11137](https://github.com/bitnami/charts/issues/11137)
+
+## 1.16.0 (2022-06-03)
+
+* [bitnami/common] Add mysql validation (#10565) ([75ae79a](https://github.com/bitnami/charts/commit/75ae79a434137694fd82198abe1f861d6e5a04ba)), closes [#10565](https://github.com/bitnami/charts/issues/10565)
+
+## <small>1.15.2 (2022-06-02)</small>
+
+* Update Redis trademark references ([2cada87](https://github.com/bitnami/charts/commit/2cada87ed4967d5cb578b0409a0bb1edee79029a))
+
+## <small>1.15.1 (2022-06-01)</small>
+
+* [bitnami/several] Replace maintainers email by url (#10523) ([ff3cf61](https://github.com/bitnami/charts/commit/ff3cf617a1680509b0f3855d17c4ccff7b29a0ff)), closes [#10523](https://github.com/bitnami/charts/issues/10523)
+
+## 1.15.0 (2022-06-01)
+
+* Add common function common.names.fullname.namespace (#10462) ([96f447c](https://github.com/bitnami/charts/commit/96f447cd8654b6db51d9301c841bacb3a13089b3)), closes [#10462](https://github.com/bitnami/charts/issues/10462)
+
+## <small>1.14.2 (2022-05-30)</small>
+
+* [bitnami/common] use -d flag for base64 (#10491) ([ca8d588](https://github.com/bitnami/charts/commit/ca8d5886a1bc0fb37d1bc770ad2333acdffd7996)), closes [#10491](https://github.com/bitnami/charts/issues/10491) [#10486](https://github.com/bitnami/charts/issues/10486)
+
+## <small>1.14.1 (2022-05-20)</small>
+
+* Differentiate between autoscaling v1beta1 and v1beta2 (#10331) ([16d8a4e](https://github.com/bitnami/charts/commit/16d8a4ee73705ee6db2191d84e03a2ba3ea95deb)), closes [#10331](https://github.com/bitnami/charts/issues/10331)
+
+## 1.14.0 (2022-05-13)
+
+* [bitnami/common] Add common function for HPA api version (#10174) ([4379ab5](https://github.com/bitnami/charts/commit/4379ab56bd8f4d7f7b7817bf302c683bf9087e81)), closes [#10174](https://github.com/bitnami/charts/issues/10174)
+
+## <small>1.13.1 (2022-04-19)</small>
+
+* Fix affinities identifier in README.md for common chart (#9821) ([fe95640](https://github.com/bitnami/charts/commit/fe95640ce3f5ddfb0458f440959ceda3a849a3a4)), closes [#9821](https://github.com/bitnami/charts/issues/9821)
+
+## 1.13.0 (2022-03-24)
+
+* [bitnami/common] Add apiService.apiVersion function to common.capabilities (#9562) ([bba2272](https://github.com/bitnami/charts/commit/bba227223e15937bb1f29f77425f6bd7d9238c02)), closes [#9562](https://github.com/bitnami/charts/issues/9562)
+
+## 1.12.0 (2022-03-16)
+
+* [bitnami/common] Helper to allow overriding namespace name (#9396) ([794fecb](https://github.com/bitnami/charts/commit/794fecb8cb112e8e5e9d55420451752e8bd21431)), closes [#9396](https://github.com/bitnami/charts/issues/9396)
+
+## <small>1.11.3 (2022-03-03)</small>
+
+* [bitnami/common] Improve docs for passwords.manage (#9269) ([0d06114](https://github.com/bitnami/charts/commit/0d061147a5b7c7cf2bf44d2b61603ffeb48a0b51)), closes [#9269](https://github.com/bitnami/charts/issues/9269)
+
+## <small>1.11.2 (2022-02-28)</small>
+
+* [bitnami/common] README: Fixed the desscription for `common.labels.matchLabels` (#9062) ([7f17db7](https://github.com/bitnami/charts/commit/7f17db7e9bcdd7918bde322b3b76a62c6a86e752)), closes [#9062](https://github.com/bitnami/charts/issues/9062) [bitnami/charts#9060](https://github.com/bitnami/charts/issues/9060) [bitnami/charts#9060](https://github.com/bitnami/charts/issues/9060)
+
+## <small>1.11.1 (2022-02-02)</small>
+
+* [bitnami/common] Improve "common.secrets.passwords.manage" helper (#8861) ([01477b4](https://github.com/bitnami/charts/commit/01477b42f2be362388d69da913879c52f2250ac1)), closes [#8861](https://github.com/bitnami/charts/issues/8861)
+
+## 1.11.0 (2022-02-01)
+
+* [bitnami/common] Add ingress helper to detect cert-manager annotations (#8857) ([c0c986f](https://github.com/bitnami/charts/commit/c0c986f8d5c911c09dc84d289d2993ae1779a6ca)), closes [#8857](https://github.com/bitnami/charts/issues/8857)
+
+## <small>1.10.4 (2022-01-20)</small>
+
+* [bitnami/several] Add license to the README ([05f7633](https://github.com/bitnami/charts/commit/05f763372501d596e57db713dd53ff4ff3027cc4))
+* [bitnami/several] Add license to the README ([32fb238](https://github.com/bitnami/charts/commit/32fb238e60a0affc6debd3142eaa3c3d9089ec2a))
+* [bitnami/several] Add license to the README ([b87c2f7](https://github.com/bitnami/charts/commit/b87c2f7899d48a8b02c506765e6ae82937e9ba3f))
+* [bitnami/several] Change prerequisites (#8725) ([8d740c5](https://github.com/bitnami/charts/commit/8d740c566cfdb7e2d933c40128b4e919fce953a5)), closes [#8725](https://github.com/bitnami/charts/issues/8725)
+
+## <small>1.10.3 (2021-11-29)</small>
+
+* [bitnami/common] fix: :bug: Add extra check for "\"\"" values in existing secrets (#8266) ([de27be6](https://github.com/bitnami/charts/commit/de27be6e649472608f076a04a36be3674fe3b84e)), closes [#8266](https://github.com/bitnami/charts/issues/8266)
+
+## <small>1.10.2 (2021-11-29)</small>
+
+* [bitnami/several] Replace HTTP by HTTPS when possible (#8259) ([eafb5bd](https://github.com/bitnami/charts/commit/eafb5bd5a2cc3aaf04fc1e8ebedd73f420d76864)), closes [#8259](https://github.com/bitnami/charts/issues/8259)
+
+## <small>1.10.1 (2021-10-27)</small>
+
+* [bitnami/*] Mark PodSecurityPolicy resources as deprecated (#7948) ([5cac753](https://github.com/bitnami/charts/commit/5cac7539dcb6c3baef06ed6676bfa99c16fdb5fe)), closes [#7948](https://github.com/bitnami/charts/issues/7948)
+
+## 1.10.0 (2021-09-30)
+
+* [bitnami/common] Add new capability helper for Network Policies (#7658) ([3efb1ca](https://github.com/bitnami/charts/commit/3efb1cac924409cbda3216a2300cce031c56a1f5)), closes [#7658](https://github.com/bitnami/charts/issues/7658)
+
+## <small>1.9.1 (2021-09-22)</small>
+
+* [bitnami/common] fix readme for common chart (#7577) ([3f06bdd](https://github.com/bitnami/charts/commit/3f06bdd8df1c00dbdf27230bcdf925c337826abb)), closes [#7577](https://github.com/bitnami/charts/issues/7577)
+* Fix typo in bitname/common README (#7529) ([fccffb3](https://github.com/bitnami/charts/commit/fccffb33391751a1bf84c53184cffe0dcac83fd6)), closes [#7529](https://github.com/bitnami/charts/issues/7529)
+
+## 1.9.0 (2021-09-13)
+
+* [bitnami/common] Add new dependency fullname template (#7471) ([7ca2a4b](https://github.com/bitnami/charts/commit/7ca2a4bb917ac6a276a6b30be12538f4c7c3a63d)), closes [#7471](https://github.com/bitnami/charts/issues/7471)
+
+## 1.8.0 (2021-08-04)
+
+* Add cronjob apiVersion capability (#7122) ([7b84a67](https://github.com/bitnami/charts/commit/7b84a674ae99fd8ddac3b5b3c859c816b87aaf51)), closes [#7122](https://github.com/bitnami/charts/issues/7122)
+
+## <small>1.7.1 (2021-07-27)</small>
+
+* [bitnami/*] Adapt values.yaml of common library, Tomcat, Wavefront and ZooKeeper charts (#6970) ([fb2693b](https://github.com/bitnami/charts/commit/fb2693bfe67a154b159d3998232cc613e1706c70)), closes [#6970](https://github.com/bitnami/charts/issues/6970)
+* [bitnami/several] Bump version and update READMEs (#7069) ([6340bff](https://github.com/bitnami/charts/commit/6340bff66f93c8c797bda3ca0842e4bf770059f1)), closes [#7069](https://github.com/bitnami/charts/issues/7069)
+* Replace <sup> strings with &trade; in the README files (#7066) ([d298b49](https://github.com/bitnami/charts/commit/d298b4996da33c9580c2594e6dc8ad665dd0ebab)), closes [#7066](https://github.com/bitnami/charts/issues/7066)
+
+## 1.7.0 (2021-07-02)
+
+* [bitnami/common] Add supportIngressClassname (#6828) ([0c8a455](https://github.com/bitnami/charts/commit/0c8a45546a219b4b4cd370daf0643543c92739b0)), closes [#6828](https://github.com/bitnami/charts/issues/6828)
+
+## <small>1.6.1 (2021-06-16)</small>
+
+* [bitnami/common] extend common.labels.matchLabels with .Values.extraMatchLabels (#6589) ([66edf04](https://github.com/bitnami/charts/commit/66edf04e3e244c343a845f9c684edf4c8ea04406)), closes [#6589](https://github.com/bitnami/charts/issues/6589)
+
+## 1.6.0 (2021-06-15)
+
+* bitnami/common: add version detection for policy api (#6662) ([dcacf06](https://github.com/bitnami/charts/commit/dcacf06f6f2b6d622e2226935db22d5b8efa20b3)), closes [#6662](https://github.com/bitnami/charts/issues/6662)
+
+## <small>1.5.2 (2021-05-21)</small>
+
+* [bitnami/common] Update _ingress.tpl (#6437) ([9048150](https://github.com/bitnami/charts/commit/90481508542c4da588e0d71944592e6c4e8d36e4)), closes [#6437](https://github.com/bitnami/charts/issues/6437)
+
+## <small>1.5.1 (2021-05-14)</small>
+
+* Node affinity values must be quoted. (#6348) ([f73efbe](https://github.com/bitnami/charts/commit/f73efbe074436eda6276bbf32c781fa913c6a17a)), closes [#6348](https://github.com/bitnami/charts/issues/6348)
+
+## 1.5.0 (2021-05-13)
+
+* [bitnami/common] pull secrets rendering (#6286) ([dfffe74](https://github.com/bitnami/charts/commit/dfffe74c212a28e27f537dbee54c3b5a81c7d572)), closes [#6286](https://github.com/bitnami/charts/issues/6286)
+
+## <small>1.4.3 (2021-04-26)</small>
+
+* [bitnami/common] Update Redis validation's helper (#6192) ([1e3bf03](https://github.com/bitnami/charts/commit/1e3bf03e3aad56fd4dc159744626e25ec24c5772)), closes [#6192](https://github.com/bitnami/charts/issues/6192)
+
+## <small>1.4.2 (2021-03-25)</small>
+
+* [bitnami/common] Common credential error (#5884) ([328ca86](https://github.com/bitnami/charts/commit/328ca863515f6ef9fe188c71110be7b951719d66)), closes [#5884](https://github.com/bitnami/charts/issues/5884)
+
+## <small>1.4.1 (2021-02-23)</small>
+
+* [bitnami/common] Add possibility to pull images without giving registry name (#5582) ([15ca275](https://github.com/bitnami/charts/commit/15ca27520a16b590101fa39195f55017e2935a90)), closes [#5582](https://github.com/bitnami/charts/issues/5582)
+
+## 1.4.0 (2021-02-22)
+
+* [bitnami/common] Add RBAC/CRD apiVersion support for versions 1.22+ (#5583) ([fda87aa](https://github.com/bitnami/charts/commit/fda87aabcd004f9a67549f5d22d273dd9fff6836)), closes [#5583](https://github.com/bitnami/charts/issues/5583)
+
+## <small>1.3.9 (2021-02-09)</small>
+
+* Add registered icon to all the MongoDB references (#5426) ([56f2088](https://github.com/bitnami/charts/commit/56f20884267e56175695b2917f7704b9510f4ba6)), closes [#5426](https://github.com/bitnami/charts/issues/5426)
+
+## <small>1.3.8 (2021-02-03)</small>
+
+* fix(common): quote namespace name (#5363) ([d27fb5e](https://github.com/bitnami/charts/commit/d27fb5e0b327728bb4304503376aaa4d2ab50619)), closes [#5363](https://github.com/bitnami/charts/issues/5363)
+
+## <small>1.3.7 (2021-01-20)</small>
+
+* [bitnami/*] Change helm version in the prerequisites (#5090) ([c5e67a3](https://github.com/bitnami/charts/commit/c5e67a388743cbee28439d2cabca27884b9daf97)), closes [#5090](https://github.com/bitnami/charts/issues/5090)
+* [bitnami/common] Remove helm version checker from secret helper (#5156) ([20231b1](https://github.com/bitnami/charts/commit/20231b138fae524371e6b29504acd4cbd19ce697)), closes [#5156](https://github.com/bitnami/charts/issues/5156)
+
+## <small>1.3.6 (2021-01-18)</small>
+
+* [bitnami/common] same behavior with empty string when the secret obje… (#5057) ([0bae2bb](https://github.com/bitnami/charts/commit/0bae2bbb9b42c5a8dd2b8a144ffa55ace1c8a936)), closes [#5057](https://github.com/bitnami/charts/issues/5057)
+
+## <small>1.3.5 (2021-01-17)</small>
+
+* [bitnami/common] fix wrong include reference (#5056) ([11efd59](https://github.com/bitnami/charts/commit/11efd59177419d4177e59800f04b4f26ab7243f8)), closes [#5056](https://github.com/bitnami/charts/issues/5056)
+
+## <small>1.3.4 (2021-01-15)</small>
+
+* [bitnami/common] Fix lookup function backward compatibility and README (#5018) ([14a0042](https://github.com/bitnami/charts/commit/14a0042dc90c01fd38f814e1e43559384a3baa9f)), closes [#5018](https://github.com/bitnami/charts/issues/5018)
+
+## <small>1.3.3 (2021-01-14)</small>
+
+* [bitnami/several] Add Redis trademark (#5023) ([dfa89b8](https://github.com/bitnami/charts/commit/dfa89b865989da26a3c73f397fd3c402dd56ebe8)), closes [#5023](https://github.com/bitnami/charts/issues/5023)
+
+## <small>1.3.2 (2021-01-13)</small>
+
+* [bitnami/common] Add missing else statement to ingress apiversion ([22ab07a](https://github.com/bitnami/charts/commit/22ab07ac7d39d4153cc839de2b714086e99cfc04))
+
+## <small>1.3.1 (2021-01-13)</small>
+
+* [bitnami/common] Fix cases where ingress is not at the root (#4984) ([e447d9d](https://github.com/bitnami/charts/commit/e447d9d2205fc3f2f6cd990386a691fd9204b214)), closes [#4984](https://github.com/bitnami/charts/issues/4984)
+
+## 1.3.0 (2021-01-13)
+
+* [bitnami/*] POC Lookup function implementation (#4831) ([240dc1b](https://github.com/bitnami/charts/commit/240dc1bea80a3e121fd595636496d7941bdbc5e0)), closes [#4831](https://github.com/bitnami/charts/issues/4831)
+
+## <small>1.2.3 (2020-12-31)</small>
+
+* [bitnami/common] Fix incorrect backend calculation for networking/v1beta1 ([c59b869](https://github.com/bitnami/charts/commit/c59b86919f47504bc8fd06f75a024f55e58ace77))
+
+## <small>1.2.2 (2020-12-30)</small>
+
+* [bitnami/common] Fix typo in common.capabilities.kubeVersion ([a371b73](https://github.com/bitnami/charts/commit/a371b734b854aa81a7dec16c40d061f5e9a14875))
+
+## <small>1.2.1 (2020-12-30)</small>
+
+* [bitnami/common] Fix issue with global kubeversion calculation ([0bbb339](https://github.com/bitnami/charts/commit/0bbb339d60b41ab978e759863709ebb1451d07a4))
+
+## 1.2.0 (2020-12-30)
+
+* [bitnami/common] Make ingress rules compatible with all Kubernetes versions (#4859) ([2b22a21](https://github.com/bitnami/charts/commit/2b22a217020fe3d16ef98fdcdd4a562c43f9824a)), closes [#4859](https://github.com/bitnami/charts/issues/4859)
+
+## <small>1.1.4 (2020-12-23)</small>
+
+* [bitnami/common] fix: moving kube version comparison (#4804) ([cdb6ae8](https://github.com/bitnami/charts/commit/cdb6ae8f00d114f0998c604416b79f62dc27f19d)), closes [#4804](https://github.com/bitnami/charts/issues/4804)
+
+## <small>1.1.3 (2020-12-18)</small>
+
+* [bitnami/*] fix typos (#4699) ([49adc63](https://github.com/bitnami/charts/commit/49adc63b672da976c55af2e077aa5648a357b77f)), closes [#4699](https://github.com/bitnami/charts/issues/4699)
+* [bitnami/common] Adding networking apiVersion support for versions 1.19+ (#4776) ([5ed8c54](https://github.com/bitnami/charts/commit/5ed8c54f5e0a905effc4c1ae5c4931e6669cec30)), closes [#4776](https://github.com/bitnami/charts/issues/4776)
+
+## <small>1.1.2 (2020-12-11)</small>
+
+* [bitnami/common] Fix node affinity templates (#4692) ([5b51a5c](https://github.com/bitnami/charts/commit/5b51a5c004b062282849a4abaaffd6840bb6c95f)), closes [#4692](https://github.com/bitnami/charts/issues/4692)
+
+## <small>1.1.1 (2020-11-26)</small>
+
+* fix: mongodb validation auth (#4506) ([ca3fdfb](https://github.com/bitnami/charts/commit/ca3fdfbeebeba5bd7dfa4805e1ca2411e5950b09)), closes [#4506](https://github.com/bitnami/charts/issues/4506)
+
+## 1.1.0 (2020-11-26)
+
+* [bitnami/common] Add mongodb validation template (#4497) ([14ece96](https://github.com/bitnami/charts/commit/14ece96c801a7326935b6269423d8854fed3a49e)), closes [#4497](https://github.com/bitnami/charts/issues/4497)
+
+## <small>1.0.1 (2020-11-19)</small>
+
+* [bitnami/common] existingSecret is in auth map (#4389) ([de9b217](https://github.com/bitnami/charts/commit/de9b2177465e1c56ca2aa1c4c486bd37a7104d7a)), closes [#4389](https://github.com/bitnami/charts/issues/4389)
+
+## 1.0.0 (2020-11-10)
+
+* bitnami/common Major version. Adapt Chart to apiVersion: v2 (#4258) ([09dbc45](https://github.com/bitnami/charts/commit/09dbc45d11c5e8fe65d6eb64dbf51571ad2c7464)), closes [#4258](https://github.com/bitnami/charts/issues/4258)
+
+## 0.10.0 (2020-10-27)
+
+* [bitnami/common] feat: add cassandra passwords validations (#4110) ([b4923d4](https://github.com/bitnami/charts/commit/b4923d48018dff1673a32eefcc0d62eb484b36da)), closes [#4110](https://github.com/bitnami/charts/issues/4110)
+
+## 0.9.0 (2020-10-21)
+
+* [bitnami/common] feat: add redis passwords validations (#4070) ([0daa8d5](https://github.com/bitnami/charts/commit/0daa8d580c06e18d94dbc0e88467347a34418596)), closes [#4070](https://github.com/bitnami/charts/issues/4070)
+
+## <small>0.8.2 (2020-10-14)</small>
+
+* [bitnami/common] Allow backward compatibility for existingSecret (#4006) ([aa2b3a1](https://github.com/bitnami/charts/commit/aa2b3a18610c69b2f5c76b839483db43fa3c093c)), closes [#4006](https://github.com/bitnami/charts/issues/4006)
+
+## <small>0.8.1 (2020-10-05)</small>
+
+* [bitnami/common] Fix secret name bug with defaulNameSuffix. (#3888) ([d114d44](https://github.com/bitnami/charts/commit/d114d446ef86cb6e7a72de6542905ec3b07d3684))
+
+## 0.8.0 (2020-10-02)
+
+* [bitnami/common] Add statefulset capabilities and prepare MariaDB passwords validation for new forma ([1eb4436](https://github.com/bitnami/charts/commit/1eb44366a72e39e84e33bed1a4940c1b2c6025fc)), closes [#3859](https://github.com/bitnami/charts/issues/3859)
+
+## <small>0.7.1 (2020-09-22)</small>
+
+* [bitnami/common] fix: evaluate enabled as string (#3733) ([048cdae](https://github.com/bitnami/charts/commit/048cdae5488cfcfe83ec698afaa8318aa3b1d0ca)), closes [#3733](https://github.com/bitnami/charts/issues/3733)
+
+## 0.7.0 (2020-09-22)
+
+* [bitnami/metrics-server] Add source repo (#3577) ([1ed12f9](https://github.com/bitnami/charts/commit/1ed12f96af75322b46afdb2b3d9907c11b13f765)), closes [#3577](https://github.com/bitnami/charts/issues/3577)
+* PoC for pods' affinity (#3713) ([9e6a915](https://github.com/bitnami/charts/commit/9e6a915392979f0c0148875f34cca1c27e399b59)), closes [#3713](https://github.com/bitnami/charts/issues/3713)
+
+## <small>0.6.2 (2020-09-01)</small>
+
+* [bitnami/common] fix: wrong use of append function (#3566) ([c912fd0](https://github.com/bitnami/charts/commit/c912fd0b7378bf2d5d56182e6d2fa6bbd74df46f)), closes [#3566](https://github.com/bitnami/charts/issues/3566)
+
+## <small>0.6.1 (2020-08-31)</small>
+
+* [bitnami/common] fix: mariadb checks secret fields after check enabled (#3565) ([498056a](https://github.com/bitnami/charts/commit/498056ad16a6e89aa3b7cc231da7467ab5bd3986)), closes [#3565](https://github.com/bitnami/charts/issues/3565)
+
+## 0.6.0 (2020-08-19)
+
+* [bitnami/mariadb] Require password option at secret resource (#3411) ([a8d2464](https://github.com/bitnami/charts/commit/a8d24643756470d0280fc585b01397358c1c242d)), closes [#3411](https://github.com/bitnami/charts/issues/3411)
+
+## <small>0.5.2 (2020-08-19)</small>
+
+* [bitnami/common] fix: add global parameters to postgres validation (#3460) ([1c52a2a](https://github.com/bitnami/charts/commit/1c52a2a48ea65024a753eb5b32deadd46650fb18)), closes [#3460](https://github.com/bitnami/charts/issues/3460)
+
+## <small>0.5.1 (2020-08-10)</small>
+
+* fix(common): missing $ in required values helpers (#3376) ([c972152](https://github.com/bitnami/charts/commit/c972152762c14c5ab5e3847a4870f4f4f2a31224)), closes [#3376](https://github.com/bitnami/charts/issues/3376)
+
+## 0.5.0 (2020-08-10)
+
+* [bitnami/common] add psql and mysql required password validations (#3374) ([1a4419e](https://github.com/bitnami/charts/commit/1a4419e15d985f67413beff98c9fc9b9f69108fb)), closes [#3374](https://github.com/bitnami/charts/issues/3374)
+
+## 0.4.0 (2020-08-04)
+
+* [bitnami/*] Fix TL;DR typo in READMEs (#3280) ([3d7ab40](https://github.com/bitnami/charts/commit/3d7ab406fecd64f1af25f53e7d27f03ec95b29a4)), closes [#3280](https://github.com/bitnami/charts/issues/3280)
+* [bitnami/all] Add categories (#3075) ([63bde06](https://github.com/bitnami/charts/commit/63bde066b87a140fab52264d0522401ab3d63509)), closes [#3075](https://github.com/bitnami/charts/issues/3075)
+* Add common helpers to check secrets when upgrade (#3150) ([5a5807c](https://github.com/bitnami/charts/commit/5a5807c1b1db1f2337f6aa5308d3ff73a4329e6a)), closes [#3150](https://github.com/bitnami/charts/issues/3150)
+
+## <small>0.3.1 (2020-06-05)</small>
+
+* [bitnami/several] Fix table rendering in some hubs (#2770) ([fe9fd8c](https://github.com/bitnami/charts/commit/fe9fd8c261195385aae73e165ac6c1a666fef08e)), closes [#2770](https://github.com/bitnami/charts/issues/2770)
+
+## 0.3.0 (2020-06-02)
+
+* [bitnami/common]: add template function for ingress apiVersion (#2732) ([a968a50](https://github.com/bitnami/charts/commit/a968a50916ed9fa6f823a5a3ef6e4b98d615322f)), closes [#2732](https://github.com/bitnami/charts/issues/2732)
+
+## <small>0.2.4 (2020-05-29)</small>
+
+* [bitnami/common] Bump chart version (#2707) ([ff2c37a](https://github.com/bitnami/charts/commit/ff2c37a576191f4523c7f69504aea669ab68aba8)), closes [#2707](https://github.com/bitnami/charts/issues/2707)
+* [bitnami/several] Fix trailing spaces to make helm lint work on all of them (#2705) ([bafba3f](https://github.com/bitnami/charts/commit/bafba3fc8b8949897ad2d99d437bd8fc975223e4)), closes [#2705](https://github.com/bitnami/charts/issues/2705)
+
+## <small>0.2.3 (2020-05-26)</small>
+
+* fix(common): add name attribute to imagePullSecrets helper (#2664) ([1ea21a9](https://github.com/bitnami/charts/commit/1ea21a92a8f44bd0d82d0fd4ed30108a89cf5b34)), closes [#2664](https://github.com/bitnami/charts/issues/2664)
+
+## <small>0.2.2 (2020-05-19)</small>
+
+* update bitnami/common to be compatible with helm v2.12+ (#2615) ([c7751eb](https://github.com/bitnami/charts/commit/c7751eb5764e468e1854b58a1b8491d2b13e0a4a)), closes [#2615](https://github.com/bitnami/charts/issues/2615)
+
+## <small>0.2.1 (2020-05-13)</small>
+
+* bump bitnami/common version number (#2580) ([1bd1e7b](https://github.com/bitnami/charts/commit/1bd1e7bc776614b6ae10f21e9c8b23fe15db5ff4)), closes [#2580](https://github.com/bitnami/charts/issues/2580)
+
+## 0.2.0 (2020-04-17)
+
+* [bitnami/common] add secrets and warnings helpers (#2347) ([a748ff8](https://github.com/bitnami/charts/commit/a748ff82259d6553a0d4ca56ca6d7d050de859f4)), closes [#2347](https://github.com/bitnami/charts/issues/2347)
+
+## <small>0.1.1 (2020-04-08)</small>
+
+* [bitnami/common] bitnami common add values yaml (#2267) ([a88c902](https://github.com/bitnami/charts/commit/a88c90212021771eacc562dd38c04381e2f63d6f)), closes [#2267](https://github.com/bitnami/charts/issues/2267)
+
+## 0.1.0 (2020-04-03)
+
+* [bitnami/common]: add initial functions (#2188) ([9401e13](https://github.com/bitnami/charts/commit/9401e13316992c36b0e33de75d5f249645a2924e)), closes [#2188](https://github.com/bitnami/charts/issues/2188)
diff --git a/kubernetes/common/nginx/common/Chart.yaml b/kubernetes/common/nginx/common/Chart.yaml
new file mode 100644 (file)
index 0000000..d1b6dfc
--- /dev/null
@@ -0,0 +1,26 @@
+# Copyright Broadcom, Inc. All Rights Reserved.
+# SPDX-License-Identifier: APACHE-2.0
+
+annotations:
+  category: Infrastructure
+  licenses: Apache-2.0
+apiVersion: v2
+# Please make sure that version and appVersion are always the same.
+appVersion: 2.29.1
+description: A Library Helm Chart for grouping common logic between bitnami charts. This chart is not deployable by itself.
+home: https://bitnami.com
+icon: https://bitnami.com/downloads/logos/bitnami-mark.png
+keywords:
+  - common
+  - helper
+  - template
+  - function
+  - bitnami
+maintainers:
+  - name: Broadcom, Inc. All Rights Reserved.
+    url: https://github.com/bitnami/charts
+name: common
+sources:
+  - https://github.com/bitnami/charts/tree/main/bitnami/common
+type: library
+version: 2.29.1
diff --git a/kubernetes/common/nginx/common/README.md b/kubernetes/common/nginx/common/README.md
new file mode 100644 (file)
index 0000000..0e5f649
--- /dev/null
@@ -0,0 +1,235 @@
+# Bitnami Common Library Chart
+
+A [Helm Library Chart](https://helm.sh/docs/topics/library_charts/#helm) for grouping common logic between Bitnami charts.
+
+## TL;DR
+
+```yaml
+dependencies:
+  - name: common
+    version: 2.x.x
+    repository: oci://registry-1.docker.io/bitnamicharts
+```
+
+```console
+helm dependency update
+```
+
+```yaml
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ include "common.names.fullname" . }}
+data:
+  myvalue: "Hello World"
+```
+
+Looking to use our applications in production? Try [VMware Tanzu Application Catalog](https://bitnami.com/enterprise), the commercial edition of the Bitnami catalog.
+
+## Introduction
+
+This chart provides a common template helpers which can be used to develop new charts using [Helm](https://helm.sh) package manager.
+
+Bitnami charts can be used with [Kubeapps](https://kubeapps.dev/) for deployment and management of Helm Charts in clusters.
+
+## Prerequisites
+
+- Kubernetes 1.23+
+- Helm 3.8.0+
+
+## Parameters
+
+## Special input schemas
+
+### ImageRoot
+
+```yaml
+registry:
+  type: string
+  description: Docker registry where the image is located
+  example: docker.io
+
+repository:
+  type: string
+  description: Repository and image name
+  example: bitnami/nginx
+
+tag:
+  type: string
+  description: image tag
+  example: 1.16.1-debian-10-r63
+
+pullPolicy:
+  type: string
+  description: Specify a imagePullPolicy.'
+
+pullSecrets:
+  type: array
+  items:
+    type: string
+  description: Optionally specify an array of imagePullSecrets (evaluated as templates).
+
+debug:
+  type: boolean
+  description: Set to true if you would like to see extra information on logs
+  example: false
+
+## An instance would be:
+# registry: docker.io
+# repository: bitnami/nginx
+# tag: 1.16.1-debian-10-r63
+# pullPolicy: IfNotPresent
+# debug: false
+```
+
+### Persistence
+
+```yaml
+enabled:
+  type: boolean
+  description: Whether enable persistence.
+  example: true
+
+storageClass:
+  type: string
+  description: Ghost data Persistent Volume Storage Class, If set to "-", storageClassName: "" which disables dynamic provisioning.
+  example: "-"
+
+accessMode:
+  type: string
+  description: Access mode for the Persistent Volume Storage.
+  example: ReadWriteOnce
+
+size:
+  type: string
+  description: Size the Persistent Volume Storage.
+  example: 8Gi
+
+path:
+  type: string
+  description: Path to be persisted.
+  example: /bitnami
+
+## An instance would be:
+# enabled: true
+# storageClass: "-"
+# accessMode: ReadWriteOnce
+# size: 8Gi
+# path: /bitnami
+```
+
+### ExistingSecret
+
+```yaml
+name:
+  type: string
+  description: Name of the existing secret.
+  example: mySecret
+keyMapping:
+  description: Mapping between the expected key name and the name of the key in the existing secret.
+  type: object
+
+## An instance would be:
+# name: mySecret
+# keyMapping:
+#   password: myPasswordKey
+```
+
+#### Example of use
+
+When we store sensitive data for a deployment in a secret, some times we want to give to users the possibility of using theirs existing secrets.
+
+```yaml
+# templates/secret.yaml
+---
+apiVersion: v1
+kind: Secret
+metadata:
+  name: {{ include "common.names.fullname" . }}
+  labels:
+    app: {{ include "common.names.fullname" . }}
+type: Opaque
+data:
+  password: {{ .Values.password | b64enc | quote }}
+
+# templates/dpl.yaml
+---
+...
+      env:
+        - name: PASSWORD
+          valueFrom:
+            secretKeyRef:
+              name: {{ include "common.secrets.name" (dict "existingSecret" .Values.existingSecret "context" $) }}
+              key: {{ include "common.secrets.key" (dict "existingSecret" .Values.existingSecret "key" "password") }}
+...
+
+# values.yaml
+---
+name: mySecret
+keyMapping:
+  password: myPasswordKey
+```
+
+### ValidateValue
+
+#### NOTES.txt
+
+```console
+{{- $validateValueConf00 := (dict "valueKey" "path.to.value00" "secret" "secretName" "field" "password-00") -}}
+{{- $validateValueConf01 := (dict "valueKey" "path.to.value01" "secret" "secretName" "field" "password-01") -}}
+
+{{ include "common.validations.values.multiple.empty" (dict "required" (list $validateValueConf00 $validateValueConf01) "context" $) }}
+```
+
+If we force those values to be empty we will see some alerts
+
+```console
+helm install test mychart --set path.to.value00="",path.to.value01=""
+    'path.to.value00' must not be empty, please add '--set path.to.value00=$PASSWORD_00' to the command. To get the current value:
+
+        export PASSWORD_00=$(kubectl get secret --namespace default secretName -o jsonpath="{.data.password-00}" | base64 -d)
+
+    'path.to.value01' must not be empty, please add '--set path.to.value01=$PASSWORD_01' to the command. To get the current value:
+
+        export PASSWORD_01=$(kubectl get secret --namespace default secretName -o jsonpath="{.data.password-01}" | base64 -d)
+```
+
+## Upgrading
+
+### To 1.0.0
+
+[On November 13, 2020, Helm v2 support was formally finished](https://github.com/helm/charts#status-of-the-project), this major version is the result of the required changes applied to the Helm Chart to be able to incorporate the different features added in Helm v3 and to be consistent with the Helm project itself regarding the Helm v2 EOL.
+
+#### What changes were introduced in this major version?
+
+- Previous versions of this Helm Chart use `apiVersion: v1` (installable by both Helm 2 and 3), this Helm Chart was updated to `apiVersion: v2` (installable by Helm 3 only). [Here](https://helm.sh/docs/topics/charts/#the-apiversion-field) you can find more information about the `apiVersion` field.
+- Use `type: library`. [Here](https://v3.helm.sh/docs/faq/#library-chart-support) you can find more information.
+- The different fields present in the *Chart.yaml* file has been ordered alphabetically in a homogeneous way for all the Bitnami Helm Charts
+
+#### Considerations when upgrading to this version
+
+- If you want to upgrade to this version from a previous one installed with Helm v3, you shouldn't face any issues
+- If you want to upgrade to this version using Helm v2, this scenario is not supported as this version doesn't support Helm v2 anymore
+- If you installed the previous version with Helm v2 and wants to upgrade to this version with Helm v3, please refer to the [official Helm documentation](https://helm.sh/docs/topics/v2_v3_migration/#migration-use-cases) about migrating from Helm v2 to v3
+
+#### Useful links
+
+- <https://techdocs.broadcom.com/us/en/vmware-tanzu/application-catalog/tanzu-application-catalog/services/tac-doc/apps-tutorials-resolve-helm2-helm3-post-migration-issues-index.html>
+- <https://helm.sh/docs/topics/v2_v3_migration/>
+- <https://helm.sh/blog/migrate-from-helm-v2-to-helm-v3/>
+
+## License
+
+Copyright &copy; 2025 Broadcom. The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
+
+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.
diff --git a/kubernetes/common/nginx/common/templates/_affinities.tpl b/kubernetes/common/nginx/common/templates/_affinities.tpl
new file mode 100644 (file)
index 0000000..d387dbe
--- /dev/null
@@ -0,0 +1,155 @@
+{{/*
+Copyright Broadcom, Inc. All Rights Reserved.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+{{/* vim: set filetype=mustache: */}}
+
+{{/*
+Return a soft nodeAffinity definition
+{{ include "common.affinities.nodes.soft" (dict "key" "FOO" "values" (list "BAR" "BAZ")) -}}
+*/}}
+{{- define "common.affinities.nodes.soft" -}}
+preferredDuringSchedulingIgnoredDuringExecution:
+  - preference:
+      matchExpressions:
+        - key: {{ .key }}
+          operator: In
+          values:
+            {{- range .values }}
+            - {{ . | quote }}
+            {{- end }}
+    weight: 1
+{{- end -}}
+
+{{/*
+Return a hard nodeAffinity definition
+{{ include "common.affinities.nodes.hard" (dict "key" "FOO" "values" (list "BAR" "BAZ")) -}}
+*/}}
+{{- define "common.affinities.nodes.hard" -}}
+requiredDuringSchedulingIgnoredDuringExecution:
+  nodeSelectorTerms:
+    - matchExpressions:
+        - key: {{ .key }}
+          operator: In
+          values:
+            {{- range .values }}
+            - {{ . | quote }}
+            {{- end }}
+{{- end -}}
+
+{{/*
+Return a nodeAffinity definition
+{{ include "common.affinities.nodes" (dict "type" "soft" "key" "FOO" "values" (list "BAR" "BAZ")) -}}
+*/}}
+{{- define "common.affinities.nodes" -}}
+  {{- if eq .type "soft" }}
+    {{- include "common.affinities.nodes.soft" . -}}
+  {{- else if eq .type "hard" }}
+    {{- include "common.affinities.nodes.hard" . -}}
+  {{- end -}}
+{{- end -}}
+
+{{/*
+Return a topologyKey definition
+{{ include "common.affinities.topologyKey" (dict "topologyKey" "BAR") -}}
+*/}}
+{{- define "common.affinities.topologyKey" -}}
+{{ .topologyKey | default "kubernetes.io/hostname" -}}
+{{- end -}}
+
+{{/*
+Return a soft podAffinity/podAntiAffinity definition
+{{ include "common.affinities.pods.soft" (dict "component" "FOO" "customLabels" .Values.podLabels "extraMatchLabels" .Values.extraMatchLabels "topologyKey" "BAR" "extraPodAffinityTerms" .Values.extraPodAffinityTerms "extraNamespaces" (list "namespace1" "namespace2") "context" $) -}}
+*/}}
+{{- define "common.affinities.pods.soft" -}}
+{{- $component := default "" .component -}}
+{{- $customLabels := default (dict) .customLabels -}}
+{{- $extraMatchLabels := default (dict) .extraMatchLabels -}}
+{{- $extraPodAffinityTerms := default (list) .extraPodAffinityTerms -}}
+{{- $extraNamespaces := default (list) .extraNamespaces -}}
+preferredDuringSchedulingIgnoredDuringExecution:
+  - podAffinityTerm:
+      labelSelector:
+        matchLabels: {{- (include "common.labels.matchLabels" ( dict "customLabels" $customLabels "context" .context )) | nindent 10 }}
+          {{- if not (empty $component) }}
+          {{ printf "app.kubernetes.io/component: %s" $component }}
+          {{- end }}
+          {{- range $key, $value := $extraMatchLabels }}
+          {{ $key }}: {{ $value | quote }}
+          {{- end }}
+      {{- if $extraNamespaces }}
+      namespaces:
+        - {{ .context.Release.Namespace }}
+        {{- with $extraNamespaces }}
+        {{ include "common.tplvalues.render" (dict "value" . "context" $) | nindent 8 }}
+        {{- end }}
+      {{- end }}
+      topologyKey: {{ include "common.affinities.topologyKey" (dict "topologyKey" .topologyKey) }}
+    weight: 1
+  {{- range $extraPodAffinityTerms }}
+  - podAffinityTerm:
+      labelSelector:
+        matchLabels: {{- (include "common.labels.matchLabels" ( dict "customLabels" $customLabels "context" $.context )) | nindent 10 }}
+          {{- if not (empty $component) }}
+          {{ printf "app.kubernetes.io/component: %s" $component }}
+          {{- end }}
+          {{- range $key, $value := .extraMatchLabels }}
+          {{ $key }}: {{ $value | quote }}
+          {{- end }}
+      topologyKey: {{ include "common.affinities.topologyKey" (dict "topologyKey" .topologyKey) }}
+    weight: {{ .weight | default 1 -}}
+  {{- end -}}
+{{- end -}}
+
+{{/*
+Return a hard podAffinity/podAntiAffinity definition
+{{ include "common.affinities.pods.hard" (dict "component" "FOO" "customLabels" .Values.podLabels "extraMatchLabels" .Values.extraMatchLabels "topologyKey" "BAR" "extraPodAffinityTerms" .Values.extraPodAffinityTerms "extraNamespaces" (list "namespace1" "namespace2") "context" $) -}}
+*/}}
+{{- define "common.affinities.pods.hard" -}}
+{{- $component := default "" .component -}}
+{{- $customLabels := default (dict) .customLabels -}}
+{{- $extraMatchLabels := default (dict) .extraMatchLabels -}}
+{{- $extraPodAffinityTerms := default (list) .extraPodAffinityTerms -}}
+{{- $extraNamespaces := default (list) .extraNamespaces -}}
+requiredDuringSchedulingIgnoredDuringExecution:
+  - labelSelector:
+      matchLabels: {{- (include "common.labels.matchLabels" ( dict "customLabels" $customLabels "context" .context )) | nindent 8 }}
+        {{- if not (empty $component) }}
+        {{ printf "app.kubernetes.io/component: %s" $component }}
+        {{- end }}
+        {{- range $key, $value := $extraMatchLabels }}
+        {{ $key }}: {{ $value | quote }}
+        {{- end }}
+      {{- if $extraNamespaces }}
+      namespaces:
+        - {{ .context.Release.Namespace }}
+        {{- with $extraNamespaces }}
+        {{ include "common.tplvalues.render" (dict "value" . "context" $) | nindent 8 }}
+        {{- end }}
+      {{- end }}
+    topologyKey: {{ include "common.affinities.topologyKey" (dict "topologyKey" .topologyKey) }}
+  {{- range $extraPodAffinityTerms }}
+  - labelSelector:
+      matchLabels: {{- (include "common.labels.matchLabels" ( dict "customLabels" $customLabels "context" $.context )) | nindent 8 }}
+        {{- if not (empty $component) }}
+        {{ printf "app.kubernetes.io/component: %s" $component }}
+        {{- end }}
+        {{- range $key, $value := .extraMatchLabels }}
+        {{ $key }}: {{ $value | quote }}
+        {{- end }}
+    topologyKey: {{ include "common.affinities.topologyKey" (dict "topologyKey" .topologyKey) }}
+  {{- end -}}
+{{- end -}}
+
+{{/*
+Return a podAffinity/podAntiAffinity definition
+{{ include "common.affinities.pods" (dict "type" "soft" "key" "FOO" "values" (list "BAR" "BAZ")) -}}
+*/}}
+{{- define "common.affinities.pods" -}}
+  {{- if eq .type "soft" }}
+    {{- include "common.affinities.pods.soft" . -}}
+  {{- else if eq .type "hard" }}
+    {{- include "common.affinities.pods.hard" . -}}
+  {{- end -}}
+{{- end -}}
diff --git a/kubernetes/common/nginx/common/templates/_capabilities.tpl b/kubernetes/common/nginx/common/templates/_capabilities.tpl
new file mode 100644 (file)
index 0000000..7738f73
--- /dev/null
@@ -0,0 +1,239 @@
+{{/*
+Copyright Broadcom, Inc. All Rights Reserved.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+{{/* vim: set filetype=mustache: */}}
+
+{{/*
+Return the target Kubernetes version
+*/}}
+{{- define "common.capabilities.kubeVersion" -}}
+{{- default (default .Capabilities.KubeVersion.Version .Values.kubeVersion) ((.Values.global).kubeVersion) -}}
+{{- end -}}
+
+{{/*
+Return the appropriate apiVersion for poddisruptionbudget.
+*/}}
+{{- define "common.capabilities.policy.apiVersion" -}}
+{{- $kubeVersion := include "common.capabilities.kubeVersion" . -}}
+{{- if and (not (empty $kubeVersion)) (semverCompare "<1.21-0" $kubeVersion) -}}
+{{- print "policy/v1beta1" -}}
+{{- else -}}
+{{- print "policy/v1" -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Return the appropriate apiVersion for networkpolicy.
+*/}}
+{{- define "common.capabilities.networkPolicy.apiVersion" -}}
+{{- $kubeVersion := include "common.capabilities.kubeVersion" . -}}
+{{- if and (not (empty $kubeVersion)) (semverCompare "<1.7-0" $kubeVersion) -}}
+{{- print "extensions/v1beta1" -}}
+{{- else -}}
+{{- print "networking.k8s.io/v1" -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Return the appropriate apiVersion for job.
+*/}}
+{{- define "common.capabilities.job.apiVersion" -}}
+{{- $kubeVersion := include "common.capabilities.kubeVersion" . -}}
+{{- if and (not (empty $kubeVersion)) (semverCompare "<1.21-0" $kubeVersion) -}}
+{{- print "batch/v1beta1" -}}
+{{- else -}}
+{{- print "batch/v1" -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Return the appropriate apiVersion for cronjob.
+*/}}
+{{- define "common.capabilities.cronjob.apiVersion" -}}
+{{- $kubeVersion := include "common.capabilities.kubeVersion" . -}}
+{{- if and (not (empty $kubeVersion)) (semverCompare "<1.21-0" $kubeVersion) -}}
+{{- print "batch/v1beta1" -}}
+{{- else -}}
+{{- print "batch/v1" -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Return the appropriate apiVersion for daemonset.
+*/}}
+{{- define "common.capabilities.daemonset.apiVersion" -}}
+{{- $kubeVersion := include "common.capabilities.kubeVersion" . -}}
+{{- if and (not (empty $kubeVersion)) (semverCompare "<1.14-0" $kubeVersion) -}}
+{{- print "extensions/v1beta1" -}}
+{{- else -}}
+{{- print "apps/v1" -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Return the appropriate apiVersion for deployment.
+*/}}
+{{- define "common.capabilities.deployment.apiVersion" -}}
+{{- $kubeVersion := include "common.capabilities.kubeVersion" . -}}
+{{- if and (not (empty $kubeVersion)) (semverCompare "<1.14-0" $kubeVersion) -}}
+{{- print "extensions/v1beta1" -}}
+{{- else -}}
+{{- print "apps/v1" -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Return the appropriate apiVersion for statefulset.
+*/}}
+{{- define "common.capabilities.statefulset.apiVersion" -}}
+{{- $kubeVersion := include "common.capabilities.kubeVersion" . -}}
+{{- if and (not (empty $kubeVersion)) (semverCompare "<1.14-0" $kubeVersion) -}}
+{{- print "apps/v1beta1" -}}
+{{- else -}}
+{{- print "apps/v1" -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Return the appropriate apiVersion for ingress.
+*/}}
+{{- define "common.capabilities.ingress.apiVersion" -}}
+{{- $kubeVersion := include "common.capabilities.kubeVersion" . -}}
+{{- if (.Values.ingress).apiVersion -}}
+{{- .Values.ingress.apiVersion -}}
+{{- else if and (not (empty $kubeVersion)) (semverCompare "<1.14-0" $kubeVersion) -}}
+{{- print "extensions/v1beta1" -}}
+{{- else if and (not (empty $kubeVersion)) (semverCompare "<1.19-0" $kubeVersion) -}}
+{{- print "networking.k8s.io/v1beta1" -}}
+{{- else -}}
+{{- print "networking.k8s.io/v1" -}}
+{{- end }}
+{{- end -}}
+
+{{/*
+Return the appropriate apiVersion for RBAC resources.
+*/}}
+{{- define "common.capabilities.rbac.apiVersion" -}}
+{{- $kubeVersion := include "common.capabilities.kubeVersion" . -}}
+{{- if and (not (empty $kubeVersion)) (semverCompare "<1.17-0" $kubeVersion) -}}
+{{- print "rbac.authorization.k8s.io/v1beta1" -}}
+{{- else -}}
+{{- print "rbac.authorization.k8s.io/v1" -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Return the appropriate apiVersion for CRDs.
+*/}}
+{{- define "common.capabilities.crd.apiVersion" -}}
+{{- $kubeVersion := include "common.capabilities.kubeVersion" . -}}
+{{- if and (not (empty $kubeVersion)) (semverCompare "<1.19-0" $kubeVersion) -}}
+{{- print "apiextensions.k8s.io/v1beta1" -}}
+{{- else -}}
+{{- print "apiextensions.k8s.io/v1" -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Return the appropriate apiVersion for APIService.
+*/}}
+{{- define "common.capabilities.apiService.apiVersion" -}}
+{{- $kubeVersion := include "common.capabilities.kubeVersion" . -}}
+{{- if and (not (empty $kubeVersion)) (semverCompare "<1.10-0" $kubeVersion) -}}
+{{- print "apiregistration.k8s.io/v1beta1" -}}
+{{- else -}}
+{{- print "apiregistration.k8s.io/v1" -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Return the appropriate apiVersion for Horizontal Pod Autoscaler.
+*/}}
+{{- define "common.capabilities.hpa.apiVersion" -}}
+{{- $kubeVersion := include "common.capabilities.kubeVersion" .context -}}
+{{- if and (not (empty $kubeVersion)) (semverCompare "<1.23-0" $kubeVersion) -}}
+{{- if .beta2 -}}
+{{- print "autoscaling/v2beta2" -}}
+{{- else -}}
+{{- print "autoscaling/v2beta1" -}}
+{{- end -}}
+{{- else -}}
+{{- print "autoscaling/v2" -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Return the appropriate apiVersion for Vertical Pod Autoscaler.
+*/}}
+{{- define "common.capabilities.vpa.apiVersion" -}}
+{{- $kubeVersion := include "common.capabilities.kubeVersion" .context -}}
+{{- if and (not (empty $kubeVersion)) (semverCompare "<1.11-0" $kubeVersion) -}}
+{{- print "autoscaling/v1beta1" -}}
+{{- else if and (not (empty $kubeVersion)) (semverCompare "<1.25-0" $kubeVersion) -}}
+{{- print "autoscaling/v1beta2" -}}
+{{- else -}}
+{{- print "autoscaling/v1" -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Returns true if PodSecurityPolicy is supported
+*/}}
+{{- define "common.capabilities.psp.supported" -}}
+{{- $kubeVersion := include "common.capabilities.kubeVersion" . -}}
+{{- if or (empty $kubeVersion) (semverCompare "<1.25-0" $kubeVersion) -}}
+  {{- true -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Returns true if AdmissionConfiguration is supported
+*/}}
+{{- define "common.capabilities.admissionConfiguration.supported" -}}
+{{- $kubeVersion := include "common.capabilities.kubeVersion" . -}}
+{{- if or (empty $kubeVersion) (not (semverCompare "<1.23-0" $kubeVersion)) -}}
+  {{- true -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Return the appropriate apiVersion for AdmissionConfiguration.
+*/}}
+{{- define "common.capabilities.admissionConfiguration.apiVersion" -}}
+{{- $kubeVersion := include "common.capabilities.kubeVersion" . -}}
+{{- if and (not (empty $kubeVersion)) (semverCompare "<1.23-0" $kubeVersion) -}}
+{{- print "apiserver.config.k8s.io/v1alpha1" -}}
+{{- else if and (not (empty $kubeVersion)) (semverCompare "<1.25-0" $kubeVersion) -}}
+{{- print "apiserver.config.k8s.io/v1beta1" -}}
+{{- else -}}
+{{- print "apiserver.config.k8s.io/v1" -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Return the appropriate apiVersion for PodSecurityConfiguration.
+*/}}
+{{- define "common.capabilities.podSecurityConfiguration.apiVersion" -}}
+{{- $kubeVersion := include "common.capabilities.kubeVersion" . -}}
+{{- if and (not (empty $kubeVersion)) (semverCompare "<1.23-0" $kubeVersion) -}}
+{{- print "pod-security.admission.config.k8s.io/v1alpha1" -}}
+{{- else if and (not (empty $kubeVersion)) (semverCompare "<1.25-0" $kubeVersion) -}}
+{{- print "pod-security.admission.config.k8s.io/v1beta1" -}}
+{{- else -}}
+{{- print "pod-security.admission.config.k8s.io/v1" -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Returns true if the used Helm version is 3.3+.
+A way to check the used Helm version was not introduced until version 3.3.0 with .Capabilities.HelmVersion, which contains an additional "{}}"  structure.
+This check is introduced as a regexMatch instead of {{ if .Capabilities.HelmVersion }} because checking for the key HelmVersion in <3.3 results in a "interface not found" error.
+**To be removed when the catalog's minimun Helm version is 3.3**
+*/}}
+{{- define "common.capabilities.supportsHelmVersion" -}}
+{{- if regexMatch "{(v[0-9])*[^}]*}}$" (.Capabilities | toString ) }}
+  {{- true -}}
+{{- end -}}
+{{- end -}}
diff --git a/kubernetes/common/nginx/common/templates/_compatibility.tpl b/kubernetes/common/nginx/common/templates/_compatibility.tpl
new file mode 100644 (file)
index 0000000..87343ca
--- /dev/null
@@ -0,0 +1,46 @@
+{{/*
+Copyright Broadcom, Inc. All Rights Reserved.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+{{/* vim: set filetype=mustache: */}}
+
+{{/*
+Return true if the detected platform is Openshift
+Usage:
+{{- include "common.compatibility.isOpenshift" . -}}
+*/}}
+{{- define "common.compatibility.isOpenshift" -}}
+{{- if .Capabilities.APIVersions.Has "security.openshift.io/v1" -}}
+{{- true -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Render a compatible securityContext depending on the platform. By default it is maintained as it is. In other platforms like Openshift we remove default user/group values that do not work out of the box with the restricted-v1 SCC
+Usage:
+{{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.containerSecurityContext "context" $) -}}
+*/}}
+{{- define "common.compatibility.renderSecurityContext" -}}
+{{- $adaptedContext := .secContext -}}
+
+{{- if (((.context.Values.global).compatibility).openshift) -}}
+  {{- if or (eq .context.Values.global.compatibility.openshift.adaptSecurityContext "force") (and (eq .context.Values.global.compatibility.openshift.adaptSecurityContext "auto") (include "common.compatibility.isOpenshift" .context)) -}}
+    {{/* Remove incompatible user/group values that do not work in Openshift out of the box */}}
+    {{- $adaptedContext = omit $adaptedContext "fsGroup" "runAsUser" "runAsGroup" -}}
+    {{- if not .secContext.seLinuxOptions -}}
+    {{/* If it is an empty object, we remove it from the resulting context because it causes validation issues */}}
+    {{- $adaptedContext = omit $adaptedContext "seLinuxOptions" -}}
+    {{- end -}}
+  {{- end -}}
+{{- end -}}
+{{/* Remove empty seLinuxOptions object if global.compatibility.omitEmptySeLinuxOptions is set to true */}}
+{{- if and (((.context.Values.global).compatibility).omitEmptySeLinuxOptions) (not .secContext.seLinuxOptions) -}}
+  {{- $adaptedContext = omit $adaptedContext "seLinuxOptions" -}}
+{{- end -}}
+{{/* Remove fields that are disregarded when running the container in privileged mode */}}
+{{- if $adaptedContext.privileged -}}
+  {{- $adaptedContext = omit $adaptedContext "capabilities" -}}
+{{- end -}}
+{{- omit $adaptedContext "enabled" | toYaml -}}
+{{- end -}}
diff --git a/kubernetes/common/nginx/common/templates/_errors.tpl b/kubernetes/common/nginx/common/templates/_errors.tpl
new file mode 100644 (file)
index 0000000..93f3ffc
--- /dev/null
@@ -0,0 +1,85 @@
+{{/*
+Copyright Broadcom, Inc. All Rights Reserved.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+{{/* vim: set filetype=mustache: */}}
+{{/*
+Throw error when upgrading using empty passwords values that must not be empty.
+
+Usage:
+{{- $validationError00 := include "common.validations.values.single.empty" (dict "valueKey" "path.to.password00" "secret" "secretName" "field" "password-00") -}}
+{{- $validationError01 := include "common.validations.values.single.empty" (dict "valueKey" "path.to.password01" "secret" "secretName" "field" "password-01") -}}
+{{ include "common.errors.upgrade.passwords.empty" (dict "validationErrors" (list $validationError00 $validationError01) "context" $) }}
+
+Required password params:
+  - validationErrors - String - Required. List of validation strings to be return, if it is empty it won't throw error.
+  - context - Context - Required. Parent context.
+*/}}
+{{- define "common.errors.upgrade.passwords.empty" -}}
+  {{- $validationErrors := join "" .validationErrors -}}
+  {{- if and $validationErrors .context.Release.IsUpgrade -}}
+    {{- $errorString := "\nPASSWORDS ERROR: You must provide your current passwords when upgrading the release." -}}
+    {{- $errorString = print $errorString "\n                 Note that even after reinstallation, old credentials may be needed as they may be kept in persistent volume claims." -}}
+    {{- $errorString = print $errorString "\n                 Further information can be obtained at https://docs.bitnami.com/general/how-to/troubleshoot-helm-chart-issues/#credential-errors-while-upgrading-chart-releases" -}}
+    {{- $errorString = print $errorString "\n%s" -}}
+    {{- printf $errorString $validationErrors | fail -}}
+  {{- end -}}
+{{- end -}}
+
+{{/*
+Throw error when original container images are replaced.
+The error can be bypassed by setting the "global.security.allowInsecureImages" to true. In this case,
+a warning message will be shown instead.
+
+Usage:
+{{ include "common.errors.insecureImages" (dict "images" (list .Values.path.to.the.imageRoot) "context" $) }}
+*/}}
+{{- define "common.errors.insecureImages" -}}
+{{- $relocatedImages := list -}}
+{{- $replacedImages := list -}}
+{{- $retaggedImages := list -}}
+{{- $globalRegistry := ((.context.Values.global).imageRegistry) -}}
+{{- $originalImages := .context.Chart.Annotations.images -}}
+{{- range .images -}}
+  {{- $registryName := default .registry $globalRegistry -}}
+  {{- $fullImageNameNoTag := printf "%s/%s" $registryName .repository -}}
+  {{- $fullImageName := printf "%s:%s" $fullImageNameNoTag .tag -}}
+  {{- if not (contains $fullImageNameNoTag $originalImages) -}}
+    {{- if not (contains $registryName $originalImages) -}}
+      {{- $relocatedImages = append $relocatedImages $fullImageName  -}}
+    {{- else if not (contains .repository $originalImages) -}}
+      {{- $replacedImages = append $replacedImages $fullImageName  -}}
+    {{- end -}}
+  {{- end -}}
+  {{- if not (contains (printf "%s:%s" .repository .tag) $originalImages) -}}
+    {{- $retaggedImages = append $retaggedImages $fullImageName  -}}
+  {{- end -}}
+{{- end -}}
+
+{{- if and (or (gt (len $relocatedImages) 0) (gt (len $replacedImages) 0)) (((.context.Values.global).security).allowInsecureImages) -}}
+  {{- print "\n\n⚠ SECURITY WARNING: Verifying original container images was skipped. Please note this Helm chart was designed, tested, and validated on multiple platforms using a specific set of Bitnami and Tanzu Application Catalog containers. Substituting other containers is likely to cause degraded security and performance, broken chart features, and missing environment variables.\n" -}}
+{{- else if (or (gt (len $relocatedImages) 0) (gt (len $replacedImages) 0)) -}}
+  {{- $errorString := "Original containers have been substituted for unrecognized ones. Deploying this chart with non-standard containers is likely to cause degraded security and performance, broken chart features, and missing environment variables." -}}
+  {{- $errorString = print $errorString "\n\nUnrecognized images:" -}}
+  {{- range (concat $relocatedImages $replacedImages) -}}
+    {{- $errorString = print $errorString "\n  - " . -}}
+  {{- end -}}
+  {{- if or (contains "docker.io/bitnami/" $originalImages) (contains "docker.io/bitnamiprem/" $originalImages) -}}
+    {{- $errorString = print "\n\n⚠ ERROR: " $errorString -}}
+    {{- $errorString = print $errorString "\n\nIf you are sure you want to proceed with non-standard containers, you can skip container image verification by setting the global parameter 'global.security.allowInsecureImages' to true." -}}
+    {{- $errorString = print $errorString "\nFurther information can be obtained at https://github.com/bitnami/charts/issues/30850" -}}
+    {{- print $errorString | fail -}}
+  {{- else if gt (len $replacedImages) 0 -}}
+    {{- $errorString = print "\n\n⚠ WARNING: " $errorString -}}
+    {{- print $errorString -}}
+  {{- end -}}
+{{- else if gt (len $retaggedImages) 0 -}}
+  {{- $warnString := "\n\n⚠ WARNING: Original containers have been retagged. Please note this Helm chart was tested, and validated on multiple platforms using a specific set of Tanzu Application Catalog containers. Substituting original image tags could cause unexpected behavior." -}}
+  {{- $warnString = print $warnString "\n\nRetagged images:" -}}
+  {{- range $retaggedImages -}}
+    {{- $warnString = print $warnString "\n  - " . -}}
+  {{- end -}}
+  {{- print $warnString -}}
+{{- end -}}
+{{- end -}}
\ No newline at end of file
diff --git a/kubernetes/common/nginx/common/templates/_images.tpl b/kubernetes/common/nginx/common/templates/_images.tpl
new file mode 100644 (file)
index 0000000..76bb7ce
--- /dev/null
@@ -0,0 +1,115 @@
+{{/*
+Copyright Broadcom, Inc. All Rights Reserved.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+{{/* vim: set filetype=mustache: */}}
+{{/*
+Return the proper image name.
+If image tag and digest are not defined, termination fallbacks to chart appVersion.
+{{ include "common.images.image" ( dict "imageRoot" .Values.path.to.the.image "global" .Values.global "chart" .Chart ) }}
+*/}}
+{{- define "common.images.image" -}}
+{{- $registryName := default .imageRoot.registry ((.global).imageRegistry) -}}
+{{- $repositoryName := .imageRoot.repository -}}
+{{- $separator := ":" -}}
+{{- $termination := .imageRoot.tag | toString -}}
+
+{{- if not .imageRoot.tag }}
+  {{- if .chart }}
+    {{- $termination = .chart.AppVersion | toString -}}
+  {{- end -}}
+{{- end -}}
+{{- if .imageRoot.digest }}
+    {{- $separator = "@" -}}
+    {{- $termination = .imageRoot.digest | toString -}}
+{{- end -}}
+{{- if $registryName }}
+    {{- printf "%s/%s%s%s" $registryName $repositoryName $separator $termination -}}
+{{- else -}}
+    {{- printf "%s%s%s"  $repositoryName $separator $termination -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Return the proper Docker Image Registry Secret Names (deprecated: use common.images.renderPullSecrets instead)
+{{ include "common.images.pullSecrets" ( dict "images" (list .Values.path.to.the.image1, .Values.path.to.the.image2) "global" .Values.global) }}
+*/}}
+{{- define "common.images.pullSecrets" -}}
+  {{- $pullSecrets := list }}
+
+  {{- range ((.global).imagePullSecrets) -}}
+    {{- if kindIs "map" . -}}
+      {{- $pullSecrets = append $pullSecrets .name -}}
+    {{- else -}}
+      {{- $pullSecrets = append $pullSecrets . -}}
+    {{- end }}
+  {{- end -}}
+
+  {{- range .images -}}
+    {{- range .pullSecrets -}}
+      {{- if kindIs "map" . -}}
+        {{- $pullSecrets = append $pullSecrets .name -}}
+      {{- else -}}
+        {{- $pullSecrets = append $pullSecrets . -}}
+      {{- end -}}
+    {{- end -}}
+  {{- end -}}
+
+  {{- if (not (empty $pullSecrets)) -}}
+imagePullSecrets:
+    {{- range $pullSecrets | uniq }}
+  - name: {{ . }}
+    {{- end }}
+  {{- end }}
+{{- end -}}
+
+{{/*
+Return the proper Docker Image Registry Secret Names evaluating values as templates
+{{ include "common.images.renderPullSecrets" ( dict "images" (list .Values.path.to.the.image1, .Values.path.to.the.image2) "context" $) }}
+*/}}
+{{- define "common.images.renderPullSecrets" -}}
+  {{- $pullSecrets := list }}
+  {{- $context := .context }}
+
+  {{- range (($context.Values.global).imagePullSecrets) -}}
+    {{- if kindIs "map" . -}}
+      {{- $pullSecrets = append $pullSecrets (include "common.tplvalues.render" (dict "value" .name "context" $context)) -}}
+    {{- else -}}
+      {{- $pullSecrets = append $pullSecrets (include "common.tplvalues.render" (dict "value" . "context" $context)) -}}
+    {{- end -}}
+  {{- end -}}
+
+  {{- range .images -}}
+    {{- range .pullSecrets -}}
+      {{- if kindIs "map" . -}}
+        {{- $pullSecrets = append $pullSecrets (include "common.tplvalues.render" (dict "value" .name "context" $context)) -}}
+      {{- else -}}
+        {{- $pullSecrets = append $pullSecrets (include "common.tplvalues.render" (dict "value" . "context" $context)) -}}
+      {{- end -}}
+    {{- end -}}
+  {{- end -}}
+
+  {{- if (not (empty $pullSecrets)) -}}
+imagePullSecrets:
+    {{- range $pullSecrets | uniq }}
+  - name: {{ . }}
+    {{- end }}
+  {{- end }}
+{{- end -}}
+
+{{/*
+Return the proper image version (ingores image revision/prerelease info & fallbacks to chart appVersion)
+{{ include "common.images.version" ( dict "imageRoot" .Values.path.to.the.image "chart" .Chart ) }}
+*/}}
+{{- define "common.images.version" -}}
+{{- $imageTag := .imageRoot.tag | toString -}}
+{{/* regexp from https://github.com/Masterminds/semver/blob/23f51de38a0866c5ef0bfc42b3f735c73107b700/version.go#L41-L44 */}}
+{{- if regexMatch `^([0-9]+)(\.[0-9]+)?(\.[0-9]+)?(-([0-9A-Za-z\-]+(\.[0-9A-Za-z\-]+)*))?(\+([0-9A-Za-z\-]+(\.[0-9A-Za-z\-]+)*))?$` $imageTag -}}
+    {{- $version := semver $imageTag -}}
+    {{- printf "%d.%d.%d" $version.Major $version.Minor $version.Patch -}}
+{{- else -}}
+    {{- print .chart.AppVersion -}}
+{{- end -}}
+{{- end -}}
+
diff --git a/kubernetes/common/nginx/common/templates/_ingress.tpl b/kubernetes/common/nginx/common/templates/_ingress.tpl
new file mode 100644 (file)
index 0000000..7d2b879
--- /dev/null
@@ -0,0 +1,73 @@
+{{/*
+Copyright Broadcom, Inc. All Rights Reserved.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+{{/* vim: set filetype=mustache: */}}
+
+{{/*
+Generate backend entry that is compatible with all Kubernetes API versions.
+
+Usage:
+{{ include "common.ingress.backend" (dict "serviceName" "backendName" "servicePort" "backendPort" "context" $) }}
+
+Params:
+  - serviceName - String. Name of an existing service backend
+  - servicePort - String/Int. Port name (or number) of the service. It will be translated to different yaml depending if it is a string or an integer.
+  - context - Dict - Required. The context for the template evaluation.
+*/}}
+{{- define "common.ingress.backend" -}}
+{{- $apiVersion := (include "common.capabilities.ingress.apiVersion" .context) -}}
+{{- if or (eq $apiVersion "extensions/v1beta1") (eq $apiVersion "networking.k8s.io/v1beta1") -}}
+serviceName: {{ .serviceName }}
+servicePort: {{ .servicePort }}
+{{- else -}}
+service:
+  name: {{ .serviceName }}
+  port:
+    {{- if typeIs "string" .servicePort }}
+    name: {{ .servicePort }}
+    {{- else if or (typeIs "int" .servicePort) (typeIs "float64" .servicePort) }}
+    number: {{ .servicePort | int }}
+    {{- end }}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Print "true" if the API pathType field is supported
+Usage:
+{{ include "common.ingress.supportsPathType" . }}
+*/}}
+{{- define "common.ingress.supportsPathType" -}}
+{{- if (semverCompare "<1.18-0" (include "common.capabilities.kubeVersion" .)) -}}
+{{- print "false" -}}
+{{- else -}}
+{{- print "true" -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Returns true if the ingressClassname field is supported
+Usage:
+{{ include "common.ingress.supportsIngressClassname" . }}
+*/}}
+{{- define "common.ingress.supportsIngressClassname" -}}
+{{- if semverCompare "<1.18-0" (include "common.capabilities.kubeVersion" .) -}}
+{{- print "false" -}}
+{{- else -}}
+{{- print "true" -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Return true if cert-manager required annotations for TLS signed
+certificates are set in the Ingress annotations
+Ref: https://cert-manager.io/docs/usage/ingress/#supported-annotations
+Usage:
+{{ include "common.ingress.certManagerRequest" ( dict "annotations" .Values.path.to.the.ingress.annotations ) }}
+*/}}
+{{- define "common.ingress.certManagerRequest" -}}
+{{ if or (hasKey .annotations "cert-manager.io/cluster-issuer") (hasKey .annotations "cert-manager.io/issuer") (hasKey .annotations "kubernetes.io/tls-acme") }}
+    {{- true -}}
+{{- end -}}
+{{- end -}}
diff --git a/kubernetes/common/nginx/common/templates/_labels.tpl b/kubernetes/common/nginx/common/templates/_labels.tpl
new file mode 100644 (file)
index 0000000..0a0cc54
--- /dev/null
@@ -0,0 +1,46 @@
+{{/*
+Copyright Broadcom, Inc. All Rights Reserved.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+{{/* vim: set filetype=mustache: */}}
+
+{{/*
+Kubernetes standard labels
+{{ include "common.labels.standard" (dict "customLabels" .Values.commonLabels "context" $) -}}
+*/}}
+{{- define "common.labels.standard" -}}
+{{- if and (hasKey . "customLabels") (hasKey . "context") -}}
+{{- $default := dict "app.kubernetes.io/name" (include "common.names.name" .context) "helm.sh/chart" (include "common.names.chart" .context) "app.kubernetes.io/instance" .context.Release.Name "app.kubernetes.io/managed-by" .context.Release.Service -}}
+{{- with .context.Chart.AppVersion -}}
+{{- $_ := set $default "app.kubernetes.io/version" . -}}
+{{- end -}}
+{{ template "common.tplvalues.merge" (dict "values" (list .customLabels $default) "context" .context) }}
+{{- else -}}
+app.kubernetes.io/name: {{ include "common.names.name" . }}
+helm.sh/chart: {{ include "common.names.chart" . }}
+app.kubernetes.io/instance: {{ .Release.Name }}
+app.kubernetes.io/managed-by: {{ .Release.Service }}
+{{- with .Chart.AppVersion }}
+app.kubernetes.io/version: {{ . | quote }}
+{{- end -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Labels used on immutable fields such as deploy.spec.selector.matchLabels or svc.spec.selector
+{{ include "common.labels.matchLabels" (dict "customLabels" .Values.podLabels "context" $) -}}
+
+We don't want to loop over custom labels appending them to the selector
+since it's very likely that it will break deployments, services, etc.
+However, it's important to overwrite the standard labels if the user
+overwrote them on metadata.labels fields.
+*/}}
+{{- define "common.labels.matchLabels" -}}
+{{- if and (hasKey . "customLabels") (hasKey . "context") -}}
+{{ merge (pick (include "common.tplvalues.render" (dict "value" .customLabels "context" .context) | fromYaml) "app.kubernetes.io/name" "app.kubernetes.io/instance") (dict "app.kubernetes.io/name" (include "common.names.name" .context) "app.kubernetes.io/instance" .context.Release.Name ) | toYaml }}
+{{- else -}}
+app.kubernetes.io/name: {{ include "common.names.name" . }}
+app.kubernetes.io/instance: {{ .Release.Name }}
+{{- end -}}
+{{- end -}}
diff --git a/kubernetes/common/nginx/common/templates/_names.tpl b/kubernetes/common/nginx/common/templates/_names.tpl
new file mode 100644 (file)
index 0000000..ba83956
--- /dev/null
@@ -0,0 +1,71 @@
+{{/*
+Copyright Broadcom, Inc. All Rights Reserved.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+{{/* vim: set filetype=mustache: */}}
+{{/*
+Expand the name of the chart.
+*/}}
+{{- define "common.names.name" -}}
+{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+{{/*
+Create chart name and version as used by the chart label.
+*/}}
+{{- define "common.names.chart" -}}
+{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+{{/*
+Create a default fully qualified app name.
+We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
+If release name contains chart name it will be used as a full name.
+*/}}
+{{- define "common.names.fullname" -}}
+{{- if .Values.fullnameOverride -}}
+{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- $name := default .Chart.Name .Values.nameOverride -}}
+{{- if contains $name .Release.Name -}}
+{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Create a default fully qualified dependency name.
+We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
+If release name contains chart name it will be used as a full name.
+Usage:
+{{ include "common.names.dependency.fullname" (dict "chartName" "dependency-chart-name" "chartValues" .Values.dependency-chart "context" $) }}
+*/}}
+{{- define "common.names.dependency.fullname" -}}
+{{- if .chartValues.fullnameOverride -}}
+{{- .chartValues.fullnameOverride | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- $name := default .chartName .chartValues.nameOverride -}}
+{{- if contains $name .context.Release.Name -}}
+{{- .context.Release.Name | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- printf "%s-%s" .context.Release.Name $name | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Allow the release namespace to be overridden for multi-namespace deployments in combined charts.
+*/}}
+{{- define "common.names.namespace" -}}
+{{- default .Release.Namespace .Values.namespaceOverride | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+{{/*
+Create a fully qualified app name adding the installation's namespace.
+*/}}
+{{- define "common.names.fullname.namespace" -}}
+{{- printf "%s-%s" (include "common.names.fullname" .) (include "common.names.namespace" .) | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
diff --git a/kubernetes/common/nginx/common/templates/_resources.tpl b/kubernetes/common/nginx/common/templates/_resources.tpl
new file mode 100644 (file)
index 0000000..2aaf575
--- /dev/null
@@ -0,0 +1,50 @@
+{{/*
+Copyright Broadcom, Inc. All Rights Reserved.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+{{/* vim: set filetype=mustache: */}}
+
+{{/*
+Return a resource request/limit object based on a given preset.
+These presets are for basic testing and not meant to be used in production
+{{ include "common.resources.preset" (dict "type" "nano") -}}
+*/}}
+{{- define "common.resources.preset" -}}
+{{/* The limits are the requests increased by 50% (except ephemeral-storage and xlarge/2xlarge sizes)*/}}
+{{- $presets := dict
+  "nano" (dict
+      "requests" (dict "cpu" "100m" "memory" "128Mi" "ephemeral-storage" "50Mi")
+      "limits" (dict "cpu" "150m" "memory" "192Mi" "ephemeral-storage" "2Gi")
+   )
+  "micro" (dict
+      "requests" (dict "cpu" "250m" "memory" "256Mi" "ephemeral-storage" "50Mi")
+      "limits" (dict "cpu" "375m" "memory" "384Mi" "ephemeral-storage" "2Gi")
+   )
+  "small" (dict
+      "requests" (dict "cpu" "500m" "memory" "512Mi" "ephemeral-storage" "50Mi")
+      "limits" (dict "cpu" "750m" "memory" "768Mi" "ephemeral-storage" "2Gi")
+   )
+  "medium" (dict
+      "requests" (dict "cpu" "500m" "memory" "1024Mi" "ephemeral-storage" "50Mi")
+      "limits" (dict "cpu" "750m" "memory" "1536Mi" "ephemeral-storage" "2Gi")
+   )
+  "large" (dict
+      "requests" (dict "cpu" "1.0" "memory" "2048Mi" "ephemeral-storage" "50Mi")
+      "limits" (dict "cpu" "1.5" "memory" "3072Mi" "ephemeral-storage" "2Gi")
+   )
+  "xlarge" (dict
+      "requests" (dict "cpu" "1.0" "memory" "3072Mi" "ephemeral-storage" "50Mi")
+      "limits" (dict "cpu" "3.0" "memory" "6144Mi" "ephemeral-storage" "2Gi")
+   )
+  "2xlarge" (dict
+      "requests" (dict "cpu" "1.0" "memory" "3072Mi" "ephemeral-storage" "50Mi")
+      "limits" (dict "cpu" "6.0" "memory" "12288Mi" "ephemeral-storage" "2Gi")
+   )
+ }}
+{{- if hasKey $presets .type -}}
+{{- index $presets .type | toYaml -}}
+{{- else -}}
+{{- printf "ERROR: Preset key '%s' invalid. Allowed values are %s" .type (join "," (keys $presets)) | fail -}}
+{{- end -}}
+{{- end -}}
diff --git a/kubernetes/common/nginx/common/templates/_secrets.tpl b/kubernetes/common/nginx/common/templates/_secrets.tpl
new file mode 100644 (file)
index 0000000..bfef469
--- /dev/null
@@ -0,0 +1,192 @@
+{{/*
+Copyright Broadcom, Inc. All Rights Reserved.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+{{/* vim: set filetype=mustache: */}}
+{{/*
+Generate secret name.
+
+Usage:
+{{ include "common.secrets.name" (dict "existingSecret" .Values.path.to.the.existingSecret "defaultNameSuffix" "mySuffix" "context" $) }}
+
+Params:
+  - existingSecret - ExistingSecret/String - Optional. The path to the existing secrets in the values.yaml given by the user
+    to be used instead of the default one. Allows for it to be of type String (just the secret name) for backwards compatibility.
+    +info: https://github.com/bitnami/charts/tree/main/bitnami/common#existingsecret
+  - defaultNameSuffix - String - Optional. It is used only if we have several secrets in the same deployment.
+  - context - Dict - Required. The context for the template evaluation.
+*/}}
+{{- define "common.secrets.name" -}}
+{{- $name := (include "common.names.fullname" .context) -}}
+
+{{- if .defaultNameSuffix -}}
+{{- $name = printf "%s-%s" $name .defaultNameSuffix | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+{{- with .existingSecret -}}
+{{- if not (typeIs "string" .) -}}
+{{- with .name -}}
+{{- $name = . -}}
+{{- end -}}
+{{- else -}}
+{{- $name = . -}}
+{{- end -}}
+{{- end -}}
+
+{{- printf "%s" $name -}}
+{{- end -}}
+
+{{/*
+Generate secret key.
+
+Usage:
+{{ include "common.secrets.key" (dict "existingSecret" .Values.path.to.the.existingSecret "key" "keyName") }}
+
+Params:
+  - existingSecret - ExistingSecret/String - Optional. The path to the existing secrets in the values.yaml given by the user
+    to be used instead of the default one. Allows for it to be of type String (just the secret name) for backwards compatibility.
+    +info: https://github.com/bitnami/charts/tree/main/bitnami/common#existingsecret
+  - key - String - Required. Name of the key in the secret.
+*/}}
+{{- define "common.secrets.key" -}}
+{{- $key := .key -}}
+
+{{- if .existingSecret -}}
+  {{- if not (typeIs "string" .existingSecret) -}}
+    {{- if .existingSecret.keyMapping -}}
+      {{- $key = index .existingSecret.keyMapping $.key -}}
+    {{- end -}}
+  {{- end }}
+{{- end -}}
+
+{{- printf "%s" $key -}}
+{{- end -}}
+
+{{/*
+Generate secret password or retrieve one if already created.
+
+Usage:
+{{ include "common.secrets.passwords.manage" (dict "secret" "secret-name" "key" "keyName" "providedValues" (list "path.to.password1" "path.to.password2") "length" 10 "strong" false "chartName" "chartName" "honorProvidedValues" false "context" $) }}
+
+Params:
+  - secret - String - Required - Name of the 'Secret' resource where the password is stored.
+  - key - String - Required - Name of the key in the secret.
+  - providedValues - List<String> - Required - The path to the validating value in the values.yaml, e.g: "mysql.password". Will pick first parameter with a defined value.
+  - length - int - Optional - Length of the generated random password.
+  - strong - Boolean - Optional - Whether to add symbols to the generated random password.
+  - chartName - String - Optional - Name of the chart used when said chart is deployed as a subchart.
+  - context - Context - Required - Parent context.
+  - failOnNew - Boolean - Optional - Default to true. If set to false, skip errors adding new keys to existing secrets.
+  - skipB64enc - Boolean - Optional - Default to false. If set to true, no the secret will not be base64 encrypted.
+  - skipQuote - Boolean - Optional - Default to false. If set to true, no quotes will be added around the secret.
+  - honorProvidedValues - Boolean - Optional - Default to false. If set to true, the values in providedValues have higher priority than an existing secret
+The order in which this function returns a secret password:
+  1. Password provided via the values.yaml if honorProvidedValues = true
+     (If one of the keys passed to the 'providedValues' parameter to this function is a valid path to a key in the values.yaml and has a value, the value of the first key with a value will be returned)
+  2. Already existing 'Secret' resource
+     (If a 'Secret' resource is found under the name provided to the 'secret' parameter to this function and that 'Secret' resource contains a key with the name passed as the 'key' parameter to this function then the value of this existing secret password will be returned)
+  3. Password provided via the values.yaml if honorProvidedValues = false
+     (If one of the keys passed to the 'providedValues' parameter to this function is a valid path to a key in the values.yaml and has a value, the value of the first key with a value will be returned)
+  4. Randomly generated secret password
+     (A new random secret password with the length specified in the 'length' parameter will be generated and returned)
+
+*/}}
+{{- define "common.secrets.passwords.manage" -}}
+
+{{- $password := "" }}
+{{- $subchart := "" }}
+{{- $chartName := default "" .chartName }}
+{{- $passwordLength := default 10 .length }}
+{{- $providedPasswordKey := include "common.utils.getKeyFromList" (dict "keys" .providedValues "context" $.context) }}
+{{- $providedPasswordValue := include "common.utils.getValueFromKey" (dict "key" $providedPasswordKey "context" $.context) }}
+{{- $secretData := (lookup "v1" "Secret" (include "common.names.namespace" .context) .secret).data }}
+{{- if $secretData }}
+  {{- if hasKey $secretData .key }}
+    {{- $password = index $secretData .key | b64dec }}
+  {{- else if not (eq .failOnNew false) }}
+    {{- printf "\nPASSWORDS ERROR: The secret \"%s\" does not contain the key \"%s\"\n" .secret .key | fail -}}
+  {{- end -}}
+{{- end }}
+
+{{- if and $providedPasswordValue .honorProvidedValues }}
+  {{- $password = $providedPasswordValue | toString }}
+{{- end }}
+
+{{- if not $password }}
+  {{- if $providedPasswordValue }}
+    {{- $password = $providedPasswordValue | toString }}
+  {{- else }}
+    {{- if .context.Values.enabled }}
+      {{- $subchart = $chartName }}
+    {{- end -}}
+
+    {{- if not (eq .failOnNew false) }}
+      {{- $requiredPassword := dict "valueKey" $providedPasswordKey "secret" .secret "field" .key "subchart" $subchart "context" $.context -}}
+      {{- $requiredPasswordError := include "common.validations.values.single.empty" $requiredPassword -}}
+      {{- $passwordValidationErrors := list $requiredPasswordError -}}
+      {{- include "common.errors.upgrade.passwords.empty" (dict "validationErrors" $passwordValidationErrors "context" $.context) -}}
+    {{- end }}
+
+    {{- if .strong }}
+      {{- $subStr := list (lower (randAlpha 1)) (randNumeric 1) (upper (randAlpha 1)) | join "_" }}
+      {{- $password = randAscii $passwordLength }}
+      {{- $password = regexReplaceAllLiteral "\\W" $password "@" | substr 5 $passwordLength }}
+      {{- $password = printf "%s%s" $subStr $password | toString | shuffle }}
+    {{- else }}
+      {{- $password = randAlphaNum $passwordLength }}
+    {{- end }}
+  {{- end -}}
+{{- end -}}
+{{- if not .skipB64enc }}
+{{- $password = $password | b64enc }}
+{{- end -}}
+{{- if .skipQuote -}}
+{{- printf "%s" $password -}}
+{{- else -}}
+{{- printf "%s" $password | quote -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Reuses the value from an existing secret, otherwise sets its value to a default value.
+
+Usage:
+{{ include "common.secrets.lookup" (dict "secret" "secret-name" "key" "keyName" "defaultValue" .Values.myValue "context" $) }}
+
+Params:
+  - secret - String - Required - Name of the 'Secret' resource where the password is stored.
+  - key - String - Required - Name of the key in the secret.
+  - defaultValue - String - Required - The path to the validating value in the values.yaml, e.g: "mysql.password". Will pick first parameter with a defined value.
+  - context - Context - Required - Parent context.
+
+*/}}
+{{- define "common.secrets.lookup" -}}
+{{- $value := "" -}}
+{{- $secretData := (lookup "v1" "Secret" (include "common.names.namespace" .context) .secret).data -}}
+{{- if and $secretData (hasKey $secretData .key) -}}
+  {{- $value = index $secretData .key -}}
+{{- else if .defaultValue -}}
+  {{- $value = .defaultValue | toString | b64enc -}}
+{{- end -}}
+{{- if $value -}}
+{{- printf "%s" $value -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Returns whether a previous generated secret already exists
+
+Usage:
+{{ include "common.secrets.exists" (dict "secret" "secret-name" "context" $) }}
+
+Params:
+  - secret - String - Required - Name of the 'Secret' resource where the password is stored.
+  - context - Context - Required - Parent context.
+*/}}
+{{- define "common.secrets.exists" -}}
+{{- $secret := (lookup "v1" "Secret" (include "common.names.namespace" .context) .secret) }}
+{{- if $secret }}
+  {{- true -}}
+{{- end -}}
+{{- end -}}
diff --git a/kubernetes/common/nginx/common/templates/_storage.tpl b/kubernetes/common/nginx/common/templates/_storage.tpl
new file mode 100644 (file)
index 0000000..aa75856
--- /dev/null
@@ -0,0 +1,21 @@
+{{/*
+Copyright Broadcom, Inc. All Rights Reserved.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+{{/* vim: set filetype=mustache: */}}
+
+{{/*
+Return  the proper Storage Class
+{{ include "common.storage.class" ( dict "persistence" .Values.path.to.the.persistence "global" $) }}
+*/}}
+{{- define "common.storage.class" -}}
+{{- $storageClass := (.global).storageClass | default .persistence.storageClass | default (.global).defaultStorageClass | default "" -}}
+{{- if $storageClass -}}
+  {{- if (eq "-" $storageClass) -}}
+      {{- printf "storageClassName: \"\"" -}}
+  {{- else -}}
+      {{- printf "storageClassName: %s" $storageClass -}}
+  {{- end -}}
+{{- end -}}
+{{- end -}}
diff --git a/kubernetes/common/nginx/common/templates/_tplvalues.tpl b/kubernetes/common/nginx/common/templates/_tplvalues.tpl
new file mode 100644 (file)
index 0000000..a04f4c1
--- /dev/null
@@ -0,0 +1,52 @@
+{{/*
+Copyright Broadcom, Inc. All Rights Reserved.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+{{/* vim: set filetype=mustache: */}}
+{{/*
+Renders a value that contains template perhaps with scope if the scope is present.
+Usage:
+{{ include "common.tplvalues.render" ( dict "value" .Values.path.to.the.Value "context" $ ) }}
+{{ include "common.tplvalues.render" ( dict "value" .Values.path.to.the.Value "context" $ "scope" $app ) }}
+*/}}
+{{- define "common.tplvalues.render" -}}
+{{- $value := typeIs "string" .value | ternary .value (.value | toYaml) }}
+{{- if contains "{{" (toJson .value) }}
+  {{- if .scope }}
+      {{- tpl (cat "{{- with $.RelativeScope -}}" $value "{{- end }}") (merge (dict "RelativeScope" .scope) .context) }}
+  {{- else }}
+    {{- tpl $value .context }}
+  {{- end }}
+{{- else }}
+    {{- $value }}
+{{- end }}
+{{- end -}}
+
+{{/*
+Merge a list of values that contains template after rendering them.
+Merge precedence is consistent with http://masterminds.github.io/sprig/dicts.html#merge-mustmerge
+Usage:
+{{ include "common.tplvalues.merge" ( dict "values" (list .Values.path.to.the.Value1 .Values.path.to.the.Value2) "context" $ ) }}
+*/}}
+{{- define "common.tplvalues.merge" -}}
+{{- $dst := dict -}}
+{{- range .values -}}
+{{- $dst = include "common.tplvalues.render" (dict "value" . "context" $.context "scope" $.scope) | fromYaml | merge $dst -}}
+{{- end -}}
+{{ $dst | toYaml }}
+{{- end -}}
+
+{{/*
+Merge a list of values that contains template after rendering them.
+Merge precedence is consistent with https://masterminds.github.io/sprig/dicts.html#mergeoverwrite-mustmergeoverwrite
+Usage:
+{{ include "common.tplvalues.merge-overwrite" ( dict "values" (list .Values.path.to.the.Value1 .Values.path.to.the.Value2) "context" $ ) }}
+*/}}
+{{- define "common.tplvalues.merge-overwrite" -}}
+{{- $dst := dict -}}
+{{- range .values -}}
+{{- $dst = include "common.tplvalues.render" (dict "value" . "context" $.context "scope" $.scope) | fromYaml | mergeOverwrite $dst -}}
+{{- end -}}
+{{ $dst | toYaml }}
+{{- end -}}
diff --git a/kubernetes/common/nginx/common/templates/_utils.tpl b/kubernetes/common/nginx/common/templates/_utils.tpl
new file mode 100644 (file)
index 0000000..0a5a5bc
--- /dev/null
@@ -0,0 +1,77 @@
+{{/*
+Copyright Broadcom, Inc. All Rights Reserved.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+{{/* vim: set filetype=mustache: */}}
+{{/*
+Print instructions to get a secret value.
+Usage:
+{{ include "common.utils.secret.getvalue" (dict "secret" "secret-name" "field" "secret-value-field" "context" $) }}
+*/}}
+{{- define "common.utils.secret.getvalue" -}}
+{{- $varname := include "common.utils.fieldToEnvVar" . -}}
+export {{ $varname }}=$(kubectl get secret --namespace {{ include "common.names.namespace" .context | quote }} {{ .secret }} -o jsonpath="{.data.{{ .field }}}" | base64 -d)
+{{- end -}}
+
+{{/*
+Build env var name given a field
+Usage:
+{{ include "common.utils.fieldToEnvVar" dict "field" "my-password" }}
+*/}}
+{{- define "common.utils.fieldToEnvVar" -}}
+  {{- $fieldNameSplit := splitList "-" .field -}}
+  {{- $upperCaseFieldNameSplit := list -}}
+
+  {{- range $fieldNameSplit -}}
+    {{- $upperCaseFieldNameSplit = append $upperCaseFieldNameSplit ( upper . ) -}}
+  {{- end -}}
+
+  {{ join "_" $upperCaseFieldNameSplit }}
+{{- end -}}
+
+{{/*
+Gets a value from .Values given
+Usage:
+{{ include "common.utils.getValueFromKey" (dict "key" "path.to.key" "context" $) }}
+*/}}
+{{- define "common.utils.getValueFromKey" -}}
+{{- $splitKey := splitList "." .key -}}
+{{- $value := "" -}}
+{{- $latestObj := $.context.Values -}}
+{{- range $splitKey -}}
+  {{- if not $latestObj -}}
+    {{- printf "please review the entire path of '%s' exists in values" $.key | fail -}}
+  {{- end -}}
+  {{- $value = ( index $latestObj . ) -}}
+  {{- $latestObj = $value -}}
+{{- end -}}
+{{- printf "%v" (default "" $value) -}}
+{{- end -}}
+
+{{/*
+Returns first .Values key with a defined value or first of the list if all non-defined
+Usage:
+{{ include "common.utils.getKeyFromList" (dict "keys" (list "path.to.key1" "path.to.key2") "context" $) }}
+*/}}
+{{- define "common.utils.getKeyFromList" -}}
+{{- $key := first .keys -}}
+{{- $reverseKeys := reverse .keys }}
+{{- range $reverseKeys }}
+  {{- $value := include "common.utils.getValueFromKey" (dict "key" . "context" $.context ) }}
+  {{- if $value -}}
+    {{- $key = . }}
+  {{- end -}}
+{{- end -}}
+{{- printf "%s" $key -}}
+{{- end -}}
+
+{{/*
+Checksum a template at "path" containing a *single* resource (ConfigMap,Secret) for use in pod annotations, excluding the metadata (see #18376).
+Usage:
+{{ include "common.utils.checksumTemplate" (dict "path" "/configmap.yaml" "context" $) }}
+*/}}
+{{- define "common.utils.checksumTemplate" -}}
+{{- $obj := include (print .context.Template.BasePath .path) .context | fromYaml -}}
+{{ omit $obj "apiVersion" "kind" "metadata" | toYaml | sha256sum }}
+{{- end -}}
diff --git a/kubernetes/common/nginx/common/templates/_warnings.tpl b/kubernetes/common/nginx/common/templates/_warnings.tpl
new file mode 100644 (file)
index 0000000..62c44df
--- /dev/null
@@ -0,0 +1,109 @@
+{{/*
+Copyright Broadcom, Inc. All Rights Reserved.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+{{/* vim: set filetype=mustache: */}}
+{{/*
+Warning about using rolling tag.
+Usage:
+{{ include "common.warnings.rollingTag" .Values.path.to.the.imageRoot }}
+*/}}
+{{- define "common.warnings.rollingTag" -}}
+
+{{- if and (contains "bitnami/" .repository) (not (.tag | toString | regexFind "-r\\d+$|sha256:")) }}
+WARNING: Rolling tag detected ({{ .repository }}:{{ .tag }}), please note that it is strongly recommended to avoid using rolling tags in a production environment.
++info https://techdocs.broadcom.com/us/en/vmware-tanzu/application-catalog/tanzu-application-catalog/services/tac-doc/apps-tutorials-understand-rolling-tags-containers-index.html
+{{- end }}
+{{- end -}}
+
+{{/*
+Warning about replaced images from the original.
+Usage:
+{{ include "common.warnings.modifiedImages" (dict "images" (list .Values.path.to.the.imageRoot) "context" $) }}
+*/}}
+{{- define "common.warnings.modifiedImages" -}}
+{{- $affectedImages := list -}}
+{{- $printMessage := false -}}
+{{- $originalImages := .context.Chart.Annotations.images -}}
+{{- range .images -}}
+  {{- $fullImageName := printf (printf "%s/%s:%s" .registry .repository .tag) -}}
+  {{- if not (contains $fullImageName $originalImages) }}
+    {{- $affectedImages = append $affectedImages (printf "%s/%s:%s" .registry .repository .tag) -}}
+    {{- $printMessage = true -}}
+  {{- end -}}
+{{- end -}}
+{{- if $printMessage }}
+
+⚠ SECURITY WARNING: Original containers have been substituted. This Helm chart was designed, tested, and validated on multiple platforms using a specific set of Bitnami and Tanzu Application Catalog containers. Substituting other containers is likely to cause degraded security and performance, broken chart features, and missing environment variables.
+
+Substituted images detected:
+{{- range $affectedImages }}
+  - {{ . }}
+{{- end }}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Warning about not setting the resource object in all deployments.
+Usage:
+{{ include "common.warnings.resources" (dict "sections" (list "path1" "path2") context $) }}
+Example:
+{{- include "common.warnings.resources" (dict "sections" (list "csiProvider.provider" "server" "volumePermissions" "") "context" $) }}
+The list in the example assumes that the following values exist:
+  - csiProvider.provider.resources
+  - server.resources
+  - volumePermissions.resources
+  - resources
+*/}}
+{{- define "common.warnings.resources" -}}
+{{- $values := .context.Values -}}
+{{- $printMessage := false -}}
+{{ $affectedSections := list -}}
+{{- range .sections -}}
+  {{- if eq . "" -}}
+    {{/* Case where the resources section is at the root (one main deployment in the chart) */}}
+    {{- if not (index $values "resources") -}}
+    {{- $affectedSections = append $affectedSections "resources" -}}
+    {{- $printMessage = true -}}
+    {{- end -}}
+  {{- else -}}
+    {{/* Case where the are multiple resources sections (more than one main deployment in the chart) */}}
+    {{- $keys := split "." . -}}
+    {{/* We iterate through the different levels until arriving to the resource section. Example: a.b.c.resources */}}
+    {{- $section := $values -}}
+    {{- range $keys -}}
+      {{- $section = index $section . -}}
+    {{- end -}}
+    {{- if not (index $section "resources") -}}
+      {{/* If the section has enabled=false or replicaCount=0, do not include it */}}
+      {{- if and (hasKey $section "enabled") -}}
+        {{- if index $section "enabled" -}}
+          {{/* enabled=true */}}
+          {{- $affectedSections = append $affectedSections (printf "%s.resources" .) -}}
+          {{- $printMessage = true -}}
+        {{- end -}}
+      {{- else if and (hasKey $section "replicaCount")  -}}
+        {{/* We need a casting to int because number 0 is not treated as an int by default */}}
+        {{- if (gt (index $section "replicaCount" | int) 0) -}}
+          {{/* replicaCount > 0 */}}
+          {{- $affectedSections = append $affectedSections (printf "%s.resources" .) -}}
+          {{- $printMessage = true -}}
+        {{- end -}}
+      {{- else -}}
+        {{/* Default case, add it to the affected sections */}}
+        {{- $affectedSections = append $affectedSections (printf "%s.resources" .) -}}
+        {{- $printMessage = true -}}
+      {{- end -}}
+    {{- end -}}
+  {{- end -}}
+{{- end -}}
+{{- if $printMessage }}
+
+WARNING: There are "resources" sections in the chart not set. Using "resourcesPreset" is not recommended for production. For production installations, please set the following values according to your workload needs:
+{{- range $affectedSections }}
+  - {{ . }}
+{{- end }}
++info https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
+{{- end -}}
+{{- end -}}
diff --git a/kubernetes/common/nginx/common/templates/validations/_cassandra.tpl b/kubernetes/common/nginx/common/templates/validations/_cassandra.tpl
new file mode 100644 (file)
index 0000000..f8fd213
--- /dev/null
@@ -0,0 +1,51 @@
+{{/*
+Copyright Broadcom, Inc. All Rights Reserved.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+{{/* vim: set filetype=mustache: */}}
+{{/*
+Auxiliary function to get the right value for existingSecret.
+
+Usage:
+{{ include "common.cassandra.values.existingSecret" (dict "context" $) }}
+Params:
+  - subchart - Boolean - Optional. Whether Cassandra is used as subchart or not. Default: false
+*/}}
+{{- define "common.cassandra.values.existingSecret" -}}
+  {{- if .subchart -}}
+    {{- .context.Values.cassandra.dbUser.existingSecret | quote -}}
+  {{- else -}}
+    {{- .context.Values.dbUser.existingSecret | quote -}}
+  {{- end -}}
+{{- end -}}
+
+{{/*
+Auxiliary function to get the right value for enabled cassandra.
+
+Usage:
+{{ include "common.cassandra.values.enabled" (dict "context" $) }}
+*/}}
+{{- define "common.cassandra.values.enabled" -}}
+  {{- if .subchart -}}
+    {{- printf "%v" .context.Values.cassandra.enabled -}}
+  {{- else -}}
+    {{- printf "%v" (not .context.Values.enabled) -}}
+  {{- end -}}
+{{- end -}}
+
+{{/*
+Auxiliary function to get the right value for the key dbUser
+
+Usage:
+{{ include "common.cassandra.values.key.dbUser" (dict "subchart" "true" "context" $) }}
+Params:
+  - subchart - Boolean - Optional. Whether Cassandra is used as subchart or not. Default: false
+*/}}
+{{- define "common.cassandra.values.key.dbUser" -}}
+  {{- if .subchart -}}
+    cassandra.dbUser
+  {{- else -}}
+    dbUser
+  {{- end -}}
+{{- end -}}
diff --git a/kubernetes/common/nginx/common/templates/validations/_mariadb.tpl b/kubernetes/common/nginx/common/templates/validations/_mariadb.tpl
new file mode 100644 (file)
index 0000000..6ea8c0f
--- /dev/null
@@ -0,0 +1,108 @@
+{{/*
+Copyright Broadcom, Inc. All Rights Reserved.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+{{/* vim: set filetype=mustache: */}}
+{{/*
+Validate MariaDB required passwords are not empty.
+
+Usage:
+{{ include "common.validations.values.mariadb.passwords" (dict "secret" "secretName" "subchart" false "context" $) }}
+Params:
+  - secret - String - Required. Name of the secret where MariaDB values are stored, e.g: "mysql-passwords-secret"
+  - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false
+*/}}
+{{- define "common.validations.values.mariadb.passwords" -}}
+  {{- $existingSecret := include "common.mariadb.values.auth.existingSecret" . -}}
+  {{- $enabled := include "common.mariadb.values.enabled" . -}}
+  {{- $architecture := include "common.mariadb.values.architecture" . -}}
+  {{- $authPrefix := include "common.mariadb.values.key.auth" . -}}
+  {{- $valueKeyRootPassword := printf "%s.rootPassword" $authPrefix -}}
+  {{- $valueKeyUsername := printf "%s.username" $authPrefix -}}
+  {{- $valueKeyPassword := printf "%s.password" $authPrefix -}}
+  {{- $valueKeyReplicationPassword := printf "%s.replicationPassword" $authPrefix -}}
+
+  {{- if and (or (not $existingSecret) (eq $existingSecret "\"\"")) (eq $enabled "true") -}}
+    {{- $requiredPasswords := list -}}
+
+    {{- $requiredRootPassword := dict "valueKey" $valueKeyRootPassword "secret" .secret "field" "mariadb-root-password" -}}
+    {{- $requiredPasswords = append $requiredPasswords $requiredRootPassword -}}
+
+    {{- $valueUsername := include "common.utils.getValueFromKey" (dict "key" $valueKeyUsername "context" .context) }}
+    {{- if not (empty $valueUsername) -}}
+        {{- $requiredPassword := dict "valueKey" $valueKeyPassword "secret" .secret "field" "mariadb-password" -}}
+        {{- $requiredPasswords = append $requiredPasswords $requiredPassword -}}
+    {{- end -}}
+
+    {{- if (eq $architecture "replication") -}}
+        {{- $requiredReplicationPassword := dict "valueKey" $valueKeyReplicationPassword "secret" .secret "field" "mariadb-replication-password" -}}
+        {{- $requiredPasswords = append $requiredPasswords $requiredReplicationPassword -}}
+    {{- end -}}
+
+    {{- include "common.validations.values.multiple.empty" (dict "required" $requiredPasswords "context" .context) -}}
+
+  {{- end -}}
+{{- end -}}
+
+{{/*
+Auxiliary function to get the right value for existingSecret.
+
+Usage:
+{{ include "common.mariadb.values.auth.existingSecret" (dict "context" $) }}
+Params:
+  - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false
+*/}}
+{{- define "common.mariadb.values.auth.existingSecret" -}}
+  {{- if .subchart -}}
+    {{- .context.Values.mariadb.auth.existingSecret | quote -}}
+  {{- else -}}
+    {{- .context.Values.auth.existingSecret | quote -}}
+  {{- end -}}
+{{- end -}}
+
+{{/*
+Auxiliary function to get the right value for enabled mariadb.
+
+Usage:
+{{ include "common.mariadb.values.enabled" (dict "context" $) }}
+*/}}
+{{- define "common.mariadb.values.enabled" -}}
+  {{- if .subchart -}}
+    {{- printf "%v" .context.Values.mariadb.enabled -}}
+  {{- else -}}
+    {{- printf "%v" (not .context.Values.enabled) -}}
+  {{- end -}}
+{{- end -}}
+
+{{/*
+Auxiliary function to get the right value for architecture
+
+Usage:
+{{ include "common.mariadb.values.architecture" (dict "subchart" "true" "context" $) }}
+Params:
+  - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false
+*/}}
+{{- define "common.mariadb.values.architecture" -}}
+  {{- if .subchart -}}
+    {{- .context.Values.mariadb.architecture -}}
+  {{- else -}}
+    {{- .context.Values.architecture -}}
+  {{- end -}}
+{{- end -}}
+
+{{/*
+Auxiliary function to get the right value for the key auth
+
+Usage:
+{{ include "common.mariadb.values.key.auth" (dict "subchart" "true" "context" $) }}
+Params:
+  - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false
+*/}}
+{{- define "common.mariadb.values.key.auth" -}}
+  {{- if .subchart -}}
+    mariadb.auth
+  {{- else -}}
+    auth
+  {{- end -}}
+{{- end -}}
diff --git a/kubernetes/common/nginx/common/templates/validations/_mongodb.tpl b/kubernetes/common/nginx/common/templates/validations/_mongodb.tpl
new file mode 100644 (file)
index 0000000..e678a6d
--- /dev/null
@@ -0,0 +1,67 @@
+{{/*
+Copyright Broadcom, Inc. All Rights Reserved.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+{{/* vim: set filetype=mustache: */}}
+{{/*
+Auxiliary function to get the right value for existingSecret.
+
+Usage:
+{{ include "common.mongodb.values.auth.existingSecret" (dict "context" $) }}
+Params:
+  - subchart - Boolean - Optional. Whether MongoDb is used as subchart or not. Default: false
+*/}}
+{{- define "common.mongodb.values.auth.existingSecret" -}}
+  {{- if .subchart -}}
+    {{- .context.Values.mongodb.auth.existingSecret | quote -}}
+  {{- else -}}
+    {{- .context.Values.auth.existingSecret | quote -}}
+  {{- end -}}
+{{- end -}}
+
+{{/*
+Auxiliary function to get the right value for enabled mongodb.
+
+Usage:
+{{ include "common.mongodb.values.enabled" (dict "context" $) }}
+*/}}
+{{- define "common.mongodb.values.enabled" -}}
+  {{- if .subchart -}}
+    {{- printf "%v" .context.Values.mongodb.enabled -}}
+  {{- else -}}
+    {{- printf "%v" (not .context.Values.enabled) -}}
+  {{- end -}}
+{{- end -}}
+
+{{/*
+Auxiliary function to get the right value for the key auth
+
+Usage:
+{{ include "common.mongodb.values.key.auth" (dict "subchart" "true" "context" $) }}
+Params:
+  - subchart - Boolean - Optional. Whether MongoDB&reg; is used as subchart or not. Default: false
+*/}}
+{{- define "common.mongodb.values.key.auth" -}}
+  {{- if .subchart -}}
+    mongodb.auth
+  {{- else -}}
+    auth
+  {{- end -}}
+{{- end -}}
+
+{{/*
+Auxiliary function to get the right value for architecture
+
+Usage:
+{{ include "common.mongodb.values.architecture" (dict "subchart" "true" "context" $) }}
+Params:
+  - subchart - Boolean - Optional. Whether MongoDB&reg; is used as subchart or not. Default: false
+*/}}
+{{- define "common.mongodb.values.architecture" -}}
+  {{- if .subchart -}}
+    {{- .context.Values.mongodb.architecture -}}
+  {{- else -}}
+    {{- .context.Values.architecture -}}
+  {{- end -}}
+{{- end -}}
diff --git a/kubernetes/common/nginx/common/templates/validations/_mysql.tpl b/kubernetes/common/nginx/common/templates/validations/_mysql.tpl
new file mode 100644 (file)
index 0000000..fbb65c3
--- /dev/null
@@ -0,0 +1,67 @@
+{{/*
+Copyright Broadcom, Inc. All Rights Reserved.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+{{/* vim: set filetype=mustache: */}}
+{{/*
+Auxiliary function to get the right value for existingSecret.
+
+Usage:
+{{ include "common.mysql.values.auth.existingSecret" (dict "context" $) }}
+Params:
+  - subchart - Boolean - Optional. Whether MySQL is used as subchart or not. Default: false
+*/}}
+{{- define "common.mysql.values.auth.existingSecret" -}}
+  {{- if .subchart -}}
+    {{- .context.Values.mysql.auth.existingSecret | quote -}}
+  {{- else -}}
+    {{- .context.Values.auth.existingSecret | quote -}}
+  {{- end -}}
+{{- end -}}
+
+{{/*
+Auxiliary function to get the right value for enabled mysql.
+
+Usage:
+{{ include "common.mysql.values.enabled" (dict "context" $) }}
+*/}}
+{{- define "common.mysql.values.enabled" -}}
+  {{- if .subchart -}}
+    {{- printf "%v" .context.Values.mysql.enabled -}}
+  {{- else -}}
+    {{- printf "%v" (not .context.Values.enabled) -}}
+  {{- end -}}
+{{- end -}}
+
+{{/*
+Auxiliary function to get the right value for architecture
+
+Usage:
+{{ include "common.mysql.values.architecture" (dict "subchart" "true" "context" $) }}
+Params:
+  - subchart - Boolean - Optional. Whether MySQL is used as subchart or not. Default: false
+*/}}
+{{- define "common.mysql.values.architecture" -}}
+  {{- if .subchart -}}
+    {{- .context.Values.mysql.architecture -}}
+  {{- else -}}
+    {{- .context.Values.architecture -}}
+  {{- end -}}
+{{- end -}}
+
+{{/*
+Auxiliary function to get the right value for the key auth
+
+Usage:
+{{ include "common.mysql.values.key.auth" (dict "subchart" "true" "context" $) }}
+Params:
+  - subchart - Boolean - Optional. Whether MySQL is used as subchart or not. Default: false
+*/}}
+{{- define "common.mysql.values.key.auth" -}}
+  {{- if .subchart -}}
+    mysql.auth
+  {{- else -}}
+    auth
+  {{- end -}}
+{{- end -}}
diff --git a/kubernetes/common/nginx/common/templates/validations/_postgresql.tpl b/kubernetes/common/nginx/common/templates/validations/_postgresql.tpl
new file mode 100644 (file)
index 0000000..51d4716
--- /dev/null
@@ -0,0 +1,105 @@
+{{/*
+Copyright Broadcom, Inc. All Rights Reserved.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+{{/* vim: set filetype=mustache: */}}
+{{/*
+Auxiliary function to decide whether evaluate global values.
+
+Usage:
+{{ include "common.postgresql.values.use.global" (dict "key" "key-of-global" "context" $) }}
+Params:
+  - key - String - Required. Field to be evaluated within global, e.g: "existingSecret"
+*/}}
+{{- define "common.postgresql.values.use.global" -}}
+  {{- if .context.Values.global -}}
+    {{- if .context.Values.global.postgresql -}}
+      {{- index .context.Values.global.postgresql .key | quote -}}
+    {{- end -}}
+  {{- end -}}
+{{- end -}}
+
+{{/*
+Auxiliary function to get the right value for existingSecret.
+
+Usage:
+{{ include "common.postgresql.values.existingSecret" (dict "context" $) }}
+*/}}
+{{- define "common.postgresql.values.existingSecret" -}}
+  {{- $globalValue := include "common.postgresql.values.use.global" (dict "key" "existingSecret" "context" .context) -}}
+
+  {{- if .subchart -}}
+    {{- default (.context.Values.postgresql.existingSecret | quote) $globalValue -}}
+  {{- else -}}
+    {{- default (.context.Values.existingSecret | quote) $globalValue -}}
+  {{- end -}}
+{{- end -}}
+
+{{/*
+Auxiliary function to get the right value for enabled postgresql.
+
+Usage:
+{{ include "common.postgresql.values.enabled" (dict "context" $) }}
+*/}}
+{{- define "common.postgresql.values.enabled" -}}
+  {{- if .subchart -}}
+    {{- printf "%v" .context.Values.postgresql.enabled -}}
+  {{- else -}}
+    {{- printf "%v" (not .context.Values.enabled) -}}
+  {{- end -}}
+{{- end -}}
+
+{{/*
+Auxiliary function to get the right value for the key postgressPassword.
+
+Usage:
+{{ include "common.postgresql.values.key.postgressPassword" (dict "subchart" "true" "context" $) }}
+Params:
+  - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false
+*/}}
+{{- define "common.postgresql.values.key.postgressPassword" -}}
+  {{- $globalValue := include "common.postgresql.values.use.global" (dict "key" "postgresqlUsername" "context" .context) -}}
+
+  {{- if not $globalValue -}}
+    {{- if .subchart -}}
+      postgresql.postgresqlPassword
+    {{- else -}}
+      postgresqlPassword
+    {{- end -}}
+  {{- else -}}
+    global.postgresql.postgresqlPassword
+  {{- end -}}
+{{- end -}}
+
+{{/*
+Auxiliary function to get the right value for enabled.replication.
+
+Usage:
+{{ include "common.postgresql.values.enabled.replication" (dict "subchart" "true" "context" $) }}
+Params:
+  - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false
+*/}}
+{{- define "common.postgresql.values.enabled.replication" -}}
+  {{- if .subchart -}}
+    {{- printf "%v" .context.Values.postgresql.replication.enabled -}}
+  {{- else -}}
+    {{- printf "%v" .context.Values.replication.enabled -}}
+  {{- end -}}
+{{- end -}}
+
+{{/*
+Auxiliary function to get the right value for the key replication.password.
+
+Usage:
+{{ include "common.postgresql.values.key.replicationPassword" (dict "subchart" "true" "context" $) }}
+Params:
+  - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false
+*/}}
+{{- define "common.postgresql.values.key.replicationPassword" -}}
+  {{- if .subchart -}}
+    postgresql.replication.password
+  {{- else -}}
+    replication.password
+  {{- end -}}
+{{- end -}}
diff --git a/kubernetes/common/nginx/common/templates/validations/_redis.tpl b/kubernetes/common/nginx/common/templates/validations/_redis.tpl
new file mode 100644 (file)
index 0000000..9fedfef
--- /dev/null
@@ -0,0 +1,48 @@
+{{/*
+Copyright Broadcom, Inc. All Rights Reserved.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+
+{{/* vim: set filetype=mustache: */}}
+{{/*
+Auxiliary function to get the right value for enabled redis.
+
+Usage:
+{{ include "common.redis.values.enabled" (dict "context" $) }}
+*/}}
+{{- define "common.redis.values.enabled" -}}
+  {{- if .subchart -}}
+    {{- printf "%v" .context.Values.redis.enabled -}}
+  {{- else -}}
+    {{- printf "%v" (not .context.Values.enabled) -}}
+  {{- end -}}
+{{- end -}}
+
+{{/*
+Auxiliary function to get the right prefix path for the values
+
+Usage:
+{{ include "common.redis.values.key.prefix" (dict "subchart" "true" "context" $) }}
+Params:
+  - subchart - Boolean - Optional. Whether redis is used as subchart or not. Default: false
+*/}}
+{{- define "common.redis.values.keys.prefix" -}}
+  {{- if .subchart -}}redis.{{- else -}}{{- end -}}
+{{- end -}}
+
+{{/*
+Checks whether the redis chart's includes the standarizations (version >= 14)
+
+Usage:
+{{ include "common.redis.values.standarized.version" (dict "context" $) }}
+*/}}
+{{- define "common.redis.values.standarized.version" -}}
+
+  {{- $standarizedAuth := printf "%s%s" (include "common.redis.values.keys.prefix" .) "auth" -}}
+  {{- $standarizedAuthValues := include "common.utils.getValueFromKey" (dict "key" $standarizedAuth "context" .context) }}
+
+  {{- if $standarizedAuthValues -}}
+    {{- true -}}
+  {{- end -}}
+{{- end -}}
diff --git a/kubernetes/common/nginx/common/templates/validations/_validations.tpl b/kubernetes/common/nginx/common/templates/validations/_validations.tpl
new file mode 100644 (file)
index 0000000..7cdee61
--- /dev/null
@@ -0,0 +1,51 @@
+{{/*
+Copyright Broadcom, Inc. All Rights Reserved.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+{{/* vim: set filetype=mustache: */}}
+{{/*
+Validate values must not be empty.
+
+Usage:
+{{- $validateValueConf00 := (dict "valueKey" "path.to.value" "secret" "secretName" "field" "password-00") -}}
+{{- $validateValueConf01 := (dict "valueKey" "path.to.value" "secret" "secretName" "field" "password-01") -}}
+{{ include "common.validations.values.empty" (dict "required" (list $validateValueConf00 $validateValueConf01) "context" $) }}
+
+Validate value params:
+  - valueKey - String - Required. The path to the validating value in the values.yaml, e.g: "mysql.password"
+  - secret - String - Optional. Name of the secret where the validating value is generated/stored, e.g: "mysql-passwords-secret"
+  - field - String - Optional. Name of the field in the secret data, e.g: "mysql-password"
+*/}}
+{{- define "common.validations.values.multiple.empty" -}}
+  {{- range .required -}}
+    {{- include "common.validations.values.single.empty" (dict "valueKey" .valueKey "secret" .secret "field" .field "context" $.context) -}}
+  {{- end -}}
+{{- end -}}
+
+{{/*
+Validate a value must not be empty.
+
+Usage:
+{{ include "common.validations.value.empty" (dict "valueKey" "mariadb.password" "secret" "secretName" "field" "my-password" "subchart" "subchart" "context" $) }}
+
+Validate value params:
+  - valueKey - String - Required. The path to the validating value in the values.yaml, e.g: "mysql.password"
+  - secret - String - Optional. Name of the secret where the validating value is generated/stored, e.g: "mysql-passwords-secret"
+  - field - String - Optional. Name of the field in the secret data, e.g: "mysql-password"
+  - subchart - String - Optional - Name of the subchart that the validated password is part of.
+*/}}
+{{- define "common.validations.values.single.empty" -}}
+  {{- $value := include "common.utils.getValueFromKey" (dict "key" .valueKey "context" .context) }}
+  {{- $subchart := ternary "" (printf "%s." .subchart) (empty .subchart) }}
+
+  {{- if not $value -}}
+    {{- $varname := "my-value" -}}
+    {{- $getCurrentValue := "" -}}
+    {{- if and .secret .field -}}
+      {{- $varname = include "common.utils.fieldToEnvVar" . -}}
+      {{- $getCurrentValue = printf " To get the current value:\n\n        %s\n" (include "common.utils.secret.getvalue" .) -}}
+    {{- end -}}
+    {{- printf "\n    '%s' must not be empty, please add '--set %s%s=$%s' to the command.%s" .valueKey $subchart .valueKey $varname $getCurrentValue -}}
+  {{- end -}}
+{{- end -}}
diff --git a/kubernetes/common/nginx/common/values.yaml b/kubernetes/common/nginx/common/values.yaml
new file mode 100644 (file)
index 0000000..de2cac5
--- /dev/null
@@ -0,0 +1,8 @@
+# Copyright Broadcom, Inc. All Rights Reserved.
+# SPDX-License-Identifier: APACHE-2.0
+
+## bitnami/common
+## It is required by CI/CD tools and processes.
+## @skip exampleValue
+##
+exampleValue: common-chart
diff --git a/kubernetes/common/nginx/templates/NOTES.txt b/kubernetes/common/nginx/templates/NOTES.txt
new file mode 100644 (file)
index 0000000..f8c92f6
--- /dev/null
@@ -0,0 +1,77 @@
+CHART NAME: {{ .Chart.Name }}
+CHART VERSION: {{ .Chart.Version }}
+APP VERSION: {{ .Chart.AppVersion }}
+
+Did you know there are enterprise versions of the Bitnami catalog? For enhanced secure software supply chain features, unlimited pulls from Docker, LTS support, or application customization, see Bitnami Premium or Tanzu Application Catalog. See https://www.arrow.com/globalecs/na/vendors/bitnami for more information.
+
+** Please be patient while the chart is being deployed **
+
+{{- if .Values.diagnosticMode.enabled }}
+The chart has been deployed in diagnostic mode. All probes have been disabled and the command has been overwritten with:
+
+  command: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.command "context" $) | nindent 4 }}
+  args: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.args "context" $) | nindent 4 }}
+
+Get the list of pods by executing:
+
+  kubectl get pods --namespace {{ template "common.names.namespace" . }} -l app.kubernetes.io/instance={{ .Release.Name }}
+
+Access the pod you want to debug by executing
+
+  kubectl exec --namespace {{ template "common.names.namespace" . }} -ti <NAME OF THE POD> -- bash
+
+In order to replicate the container startup scripts execute this command:
+
+    /opt/bitnami/scripts/nginx/entrypoint.sh /opt/bitnami/scripts/nginx/run.sh
+
+{{- else }}
+NGINX can be accessed through the following DNS name from within your cluster:
+
+    {{ include "common.names.fullname" . }}.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }} (port {{ .Values.service.ports.http }})
+
+To access NGINX from outside the cluster, follow the steps below:
+
+{{- if .Values.ingress.enabled }}
+
+1. Get the NGINX URL and associate its hostname to your cluster external IP:
+
+   export CLUSTER_IP=$(minikube ip) # On Minikube. Use: `kubectl cluster-info` on others K8s clusters
+   echo "NGINX URL: http{{ if .Values.ingress.tls }}s{{ end }}://{{ .Values.ingress.hostname }}"
+   echo "$CLUSTER_IP  {{ .Values.ingress.hostname }}" | sudo tee -a /etc/hosts
+
+{{- else }}
+
+1. Get the NGINX URL by running these commands:
+
+{{- if contains "LoadBalancer" .Values.service.type }}
+
+  NOTE: It may take a few minutes for the LoadBalancer IP to be available.
+        Watch the status with: 'kubectl get svc --namespace {{ .Release.Namespace }} -w {{ include "common.names.fullname" . }}'
+
+    export SERVICE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].port}" services {{ include "common.names.fullname" . }})
+    export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "common.names.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
+    echo "http://${SERVICE_IP}:${SERVICE_PORT}"
+
+{{- else if contains "ClusterIP"  .Values.service.type }}
+
+    export SERVICE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].port}" services {{ include "common.names.fullname" . }})
+    kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ include "common.names.fullname" . }} ${SERVICE_PORT}:${SERVICE_PORT} &
+    echo "http://127.0.0.1:${SERVICE_PORT}"
+
+{{- else if contains "NodePort" .Values.service.type }}
+
+    export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "common.names.fullname" . }})
+    export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
+    echo "http://${NODE_IP}:${NODE_PORT}"
+
+{{- end }}
+{{- end }}
+
+{{- include "common.warnings.rollingTag" .Values.image }}
+{{- include "common.warnings.rollingTag" .Values.cloneStaticSiteFromGit.image }}
+{{- include "common.warnings.rollingTag" .Values.metrics.image }}
+{{- include "nginx.validateValues" . }}
+{{- end }}
+{{- include "common.warnings.resources" (dict "sections" (list "cloneStaticSiteFromGit.gitSync" "metrics" "") "context" $) }}
+{{- include "common.warnings.modifiedImages" (dict "images" (list .Values.image .Values.cloneStaticSiteFromGit.image .Values.metrics.image) "context" $) }}
+{{- include "common.errors.insecureImages" (dict "images" (list .Values.image .Values.cloneStaticSiteFromGit.image .Values.metrics.image) "context" $) }}
diff --git a/kubernetes/common/nginx/templates/_helpers.tpl b/kubernetes/common/nginx/templates/_helpers.tpl
new file mode 100644 (file)
index 0000000..4900d9c
--- /dev/null
@@ -0,0 +1,123 @@
+{{/*
+Copyright Broadcom, Inc. All Rights Reserved.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+{{/* vim: set filetype=mustache: */}}
+{{/*
+Return the proper NGINX image name
+*/}}
+{{- define "nginx.image" -}}
+{{ include "common.images.image" (dict "imageRoot" .Values.image "global" .Values.global) }}
+{{- end -}}
+
+{{/*
+Return the proper GIT image name
+*/}}
+{{- define "nginx.cloneStaticSiteFromGit.image" -}}
+{{ include "common.images.image" (dict "imageRoot" .Values.cloneStaticSiteFromGit.image "global" .Values.global) }}
+{{- end -}}
+
+{{/*
+Return the proper Prometheus metrics image name
+*/}}
+{{- define "nginx.metrics.image" -}}
+{{ include "common.images.image" (dict "imageRoot" .Values.metrics.image "global" .Values.global) }}
+{{- end -}}
+
+{{/*
+Return the proper Docker Image Registry Secret Names
+*/}}
+{{- define "nginx.imagePullSecrets" -}}
+{{ include "common.images.renderPullSecrets" (dict "images" (list .Values.image .Values.cloneStaticSiteFromGit.image .Values.metrics.image) "context" $) }}
+{{- end -}}
+
+{{/*
+Return true if a static site should be mounted in the NGINX container
+*/}}
+{{- define "nginx.useStaticSite" -}}
+{{- if or .Values.cloneStaticSiteFromGit.enabled .Values.staticSiteConfigmap .Values.staticSitePVC }}
+    {- true -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Return the volume to use to mount the static site in the NGINX container
+*/}}
+{{- define "nginx.staticSiteVolume" -}}
+{{- if .Values.cloneStaticSiteFromGit.enabled }}
+emptyDir: {}
+{{- else if .Values.staticSiteConfigmap }}
+configMap:
+  name: {{ printf "%s" (tpl .Values.staticSiteConfigmap $) -}}
+{{- else if .Values.staticSitePVC }}
+persistentVolumeClaim:
+  claimName: {{ printf "%s" (tpl .Values.staticSitePVC $) -}}
+{{- end }}
+{{- end -}}
+
+{{/*
+Return the custom NGINX server block configmap.
+*/}}
+{{- define "nginx.serverBlockConfigmapName" -}}
+{{- if .Values.existingServerBlockConfigmap -}}
+    {{- printf "%s" (tpl .Values.existingServerBlockConfigmap $) -}}
+{{- else -}}
+    {{- printf "%s-server-block" (include "common.names.fullname" .) -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Return the custom NGINX stream server block configmap.
+*/}}
+{{- define "nginx.streamServerBlockConfigmapName" -}}
+{{- if .Values.existingStreamServerBlockConfigmap -}}
+    {{- printf "%s" (tpl .Values.existingStreamServerBlockConfigmap $) -}}
+{{- else -}}
+    {{- printf "%s-stream-server-block" (include "common.names.fullname" .) -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Compile all warnings into a single message, and call fail.
+*/}}
+{{- define "nginx.validateValues" -}}
+{{- $messages := list -}}
+{{- $messages := append $messages (include "nginx.validateValues.cloneStaticSiteFromGit" .) -}}
+{{- $messages := append $messages (include "nginx.validateValues.extraVolumes" .) -}}
+{{- $messages := without $messages "" -}}
+{{- $message := join "\n" $messages -}}
+
+{{- if $message -}}
+{{-   printf "\nVALUES VALIDATION:\n%s" $message | fail -}}
+{{- end -}}
+{{- end -}}
+
+{{/* Validate values of NGINX - Clone StaticSite from Git configuration */}}
+{{- define "nginx.validateValues.cloneStaticSiteFromGit" -}}
+{{- if and .Values.cloneStaticSiteFromGit.enabled (or (not .Values.cloneStaticSiteFromGit.repository) (not .Values.cloneStaticSiteFromGit.branch)) -}}
+nginx: cloneStaticSiteFromGit
+    When enabling cloing a static site from a Git repository, both the Git repository and the Git branch must be provided.
+    Please provide them by setting the `cloneStaticSiteFromGit.repository` and `cloneStaticSiteFromGit.branch` parameters.
+{{- end -}}
+{{- end -}}
+
+{{/* Validate values of NGINX - Incorrect extra volume settings */}}
+{{- define "nginx.validateValues.extraVolumes" -}}
+{{- if and (.Values.extraVolumes) (not (or .Values.extraVolumeMounts .Values.cloneStaticSiteFromGit.extraVolumeMounts)) -}}
+nginx: missing-extra-volume-mounts
+    You specified extra volumes but not mount points for them. Please set
+    the extraVolumeMounts value
+{{- end -}}
+{{- end -}}
+
+{{/*
+ Create the name of the service account to use
+ */}}
+{{- define "nginx.serviceAccountName" -}}
+{{- if .Values.serviceAccount.create -}}
+    {{ default (include "common.names.fullname" .) .Values.serviceAccount.name }}
+{{- else -}}
+    {{ default "default" .Values.serviceAccount.name }}
+{{- end -}}
+{{- end -}}
diff --git a/kubernetes/common/nginx/templates/deployment.yaml b/kubernetes/common/nginx/templates/deployment.yaml
new file mode 100644 (file)
index 0000000..0d8b990
--- /dev/null
@@ -0,0 +1,417 @@
+{{- /*
+Copyright Broadcom, Inc. All Rights Reserved.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+apiVersion: {{ include "common.capabilities.deployment.apiVersion" . }}
+kind: Deployment
+metadata:
+  name: {{ include "common.names.fullname" . }}
+  namespace: {{ include "common.names.namespace" . | quote }}
+  labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
+  {{- if .Values.commonAnnotations }}
+  annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
+  {{- end }}
+spec:
+  {{- if not .Values.autoscaling.enabled }}
+  replicas: {{ .Values.replicaCount }}
+  {{- end }}
+  revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
+  {{- if .Values.updateStrategy }}
+  strategy: {{- toYaml .Values.updateStrategy | nindent 4 }}
+  {{- end }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.podLabels .Values.commonLabels ) "context" . ) }}
+  selector:
+    matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }}
+  template:
+    metadata:
+      labels: {{- include "common.labels.standard" ( dict "customLabels" $podLabels "context" $ ) | nindent 8 }}
+      annotations:
+        {{- if .Values.podAnnotations }}
+        {{- include "common.tplvalues.render" ( dict "value" .Values.podAnnotations "context" $) | nindent 8 }}
+        {{- end }}
+        {{- if and .Values.metrics.enabled .Values.metrics.podAnnotations }}
+        {{- include "common.tplvalues.render" ( dict "value" .Values.metrics.podAnnotations "context" $) | nindent 8 }}
+        {{- end }}
+        {{- if and .Values.serverBlock (not .Values.existingServerBlockConfigmap) }}
+        checksum/server-block-configuration: {{ include (print $.Template.BasePath "/server-block-configmap.yaml") . | sha256sum }}
+        {{- end }}
+        {{- if and .Values.streamServerBlock (not .Values.existingServerBlockConfigmap) }}
+        checksum/stream-server-block-configuration: {{ include (print $.Template.BasePath "/stream-server-block-configmap.yaml") . | sha256sum }}
+        {{- end }}
+    spec:
+      {{- include "nginx.imagePullSecrets" . | nindent 6 }}
+      shareProcessNamespace: {{ .Values.sidecarSingleProcessNamespace }}
+      serviceAccountName: {{ template "nginx.serviceAccountName" . }}
+      automountServiceAccountToken: {{ .Values.automountServiceAccountToken }}
+      {{- if .Values.hostAliases }}
+      hostAliases: {{- include "common.tplvalues.render" (dict "value" .Values.hostAliases "context" $) | nindent 8 }}
+      {{- end }}
+      {{- if .Values.affinity }}
+      affinity: {{- include "common.tplvalues.render" (dict "value" .Values.affinity "context" $) | nindent 8 }}
+      {{- else }}
+      affinity:
+        podAffinity: {{- include "common.affinities.pods" (dict "type" .Values.podAffinityPreset "customLabels" $podLabels "context" $) | nindent 10 }}
+        podAntiAffinity: {{- include "common.affinities.pods" (dict "type" .Values.podAntiAffinityPreset "customLabels" $podLabels "context" $) | nindent 10 }}
+        nodeAffinity: {{- include "common.affinities.nodes" (dict "type" .Values.nodeAffinityPreset.type "key" .Values.nodeAffinityPreset.key "values" .Values.nodeAffinityPreset.values) | nindent 10 }}
+      {{- end }}
+      hostNetwork: {{ .Values.hostNetwork }}
+      {{- if .Values.dnsPolicy  }}
+      dnsPolicy: {{ .Values.dnsPolicy }}
+      {{- end }}
+      {{- if .Values.dnsConfig }}
+      dnsConfig: {{- include "common.tplvalues.render" (dict "value" .Values.dnsConfig "context" $) | nindent 8 }}
+      {{- end }}
+      hostIPC: {{ .Values.hostIPC }}
+      {{- if .Values.priorityClassName }}
+      priorityClassName: {{ .Values.priorityClassName | quote }}
+      {{- end }}
+      {{- if .Values.nodeSelector }}
+      nodeSelector: {{- include "common.tplvalues.render" (dict "value" .Values.nodeSelector "context" $) | nindent 8 }}
+      {{- end }}
+      {{- if .Values.tolerations }}
+      tolerations: {{- include "common.tplvalues.render" (dict "value" .Values.tolerations "context" $) | nindent 8 }}
+      {{- end }}
+      {{- if .Values.schedulerName }}
+      schedulerName: {{ .Values.schedulerName | quote }}
+      {{- end }}
+      {{- if .Values.topologySpreadConstraints }}
+      topologySpreadConstraints: {{- include "common.tplvalues.render" (dict "value" .Values.topologySpreadConstraints "context" .) | nindent 8 }}
+      {{- end }}
+      {{- if .Values.podSecurityContext.enabled }}
+      securityContext: {{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.podSecurityContext "context" $) | nindent 8 }}
+      {{- end }}
+      {{- if .Values.terminationGracePeriodSeconds }}
+      terminationGracePeriodSeconds: {{ .Values.terminationGracePeriodSeconds }}
+      {{- end }}
+      {{- if or .Values.containerSecurityContext.readOnlyRootFilesystem .Values.cloneStaticSiteFromGit.enabled .Values.initContainers }}
+      initContainers:
+      {{- if .Values.containerSecurityContext.readOnlyRootFilesystem }}
+        - name: preserve-logs-symlinks
+          image: {{ include "nginx.image" . }}
+          imagePullPolicy: {{ .Values.image.pullPolicy | quote }}
+          {{- if .Values.containerSecurityContext.enabled }}
+          securityContext: {{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.containerSecurityContext "context" $) | nindent 12 }}
+          {{- end }}
+          {{- if .Values.resources }}
+          resources: {{- toYaml .Values.resources | nindent 12 }}
+          {{- else if ne .Values.resourcesPreset "none" }}
+          resources: {{- include "common.resources.preset" (dict "type" .Values.resourcesPreset) | nindent 12 }}
+          {{- end }}
+          command:
+            - /bin/bash
+          args:
+            - -ec
+            - |
+              #!/bin/bash
+              . /opt/bitnami/scripts/libfs.sh
+              # We copy the logs folder because it has symlinks to stdout and stderr
+              if ! is_dir_empty /opt/bitnami/nginx/logs; then
+                cp -r /opt/bitnami/nginx/logs /emptydir/app-logs-dir
+              fi
+          volumeMounts:
+            - name: empty-dir
+              mountPath: /emptydir
+      {{- end }}
+      {{- if or .Values.cloneStaticSiteFromGit.enabled .Values.initContainers }}
+      {{- if .Values.cloneStaticSiteFromGit.enabled }}
+        - name: git-clone-repository
+          image: {{ include "nginx.cloneStaticSiteFromGit.image" . }}
+          imagePullPolicy: {{ .Values.cloneStaticSiteFromGit.image.pullPolicy | quote }}
+          {{- if .Values.containerSecurityContext.enabled }}
+          securityContext: {{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.containerSecurityContext "context" $) | nindent 12 }}
+          {{- end }}
+          {{- if .Values.cloneStaticSiteFromGit.gitClone.command }}
+          command: {{- include "common.tplvalues.render" (dict "value" .Values.cloneStaticSiteFromGit.gitClone.command "context" $) | nindent 12 }}
+          {{- else }}
+          command:
+            - /bin/bash
+            - -ec
+            - |
+              [[ -f "/opt/bitnami/scripts/git/entrypoint.sh" ]] && source "/opt/bitnami/scripts/git/entrypoint.sh"
+              git clone {{ .Values.cloneStaticSiteFromGit.repository }} --branch {{ .Values.cloneStaticSiteFromGit.branch }} /tmp/app
+              [[ "$?" -eq 0 ]] && shopt -s dotglob && rm -rf /app/* && mv /tmp/app/* /app/
+          {{- end }}
+          {{- if .Values.cloneStaticSiteFromGit.gitClone.args }}
+          args: {{- include "common.tplvalues.render" (dict "value" .Values.cloneStaticSiteFromGit.gitClone.args "context" $) | nindent 12 }}
+          {{- end }}
+          volumeMounts:
+            - name: empty-dir
+              mountPath: /tmp
+              subPath: tmp-dir
+            - name: empty-dir
+              mountPath: /etc/ssh
+              subPath: etc-ssh-dir
+            - name: empty-dir
+              mountPath: /.ssh
+              subPath: ssh-dir
+            - name: staticsite
+              mountPath: /app
+            {{- if .Values.cloneStaticSiteFromGit.extraVolumeMounts }}
+            {{- include "common.tplvalues.render" (dict "value" .Values.cloneStaticSiteFromGit.extraVolumeMounts "context" $) | nindent 12 }}
+            {{- end }}
+          {{- if .Values.cloneStaticSiteFromGit.extraEnvVars }}
+          env: {{- include "common.tplvalues.render" (dict "value" .Values.cloneStaticSiteFromGit.extraEnvVars "context" $) | nindent 12 }}
+          {{- end }}
+          {{- if .Values.cloneStaticSiteFromGit.extraEnvVarsSecret }}
+          envFrom:
+            - secretRef:
+                name: {{ include "common.tplvalues.render" (dict "value" .Values.cloneStaticSiteFromGit.extraEnvVarsSecret "context" $) }}
+          {{- end }}
+        {{- end }}
+        {{- if .Values.initContainers }}
+        {{- include "common.tplvalues.render" (dict "value" .Values.initContainers "context" $) | nindent 8 }}
+        {{- end }}
+      {{- end }}
+      {{- end }}
+      containers:
+        {{- if .Values.cloneStaticSiteFromGit.enabled }}
+        - name: git-repo-syncer
+          image: {{ include "nginx.cloneStaticSiteFromGit.image" . }}
+          imagePullPolicy: {{ .Values.cloneStaticSiteFromGit.image.pullPolicy | quote }}
+          {{- if .Values.containerSecurityContext.enabled }}
+          securityContext: {{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.containerSecurityContext "context" $) | nindent 12 }}
+          {{- end }}
+          {{- if .Values.cloneStaticSiteFromGit.gitSync.command }}
+          command: {{- include "common.tplvalues.render" (dict "value" .Values.cloneStaticSiteFromGit.gitSync.command "context" $) | nindent 12 }}
+          {{- else }}
+          command:
+            - /bin/bash
+            - -ec
+            - |
+              [[ -f "/opt/bitnami/scripts/git/entrypoint.sh" ]] && source "/opt/bitnami/scripts/git/entrypoint.sh"
+              while true; do
+                  cd /app && git -c safe.directory=/app pull origin {{ .Values.cloneStaticSiteFromGit.branch }}
+                  sleep {{ .Values.cloneStaticSiteFromGit.interval }}
+              done
+          {{- end }}
+          {{- if .Values.cloneStaticSiteFromGit.gitSync.args }}
+          args: {{- include "common.tplvalues.render" (dict "value" .Values.cloneStaticSiteFromGit.gitSync.args "context" $) | nindent 12 }}
+          {{- end }}
+          {{- if .Values.cloneStaticSiteFromGit.gitSync.resources }}
+          resources: {{- toYaml .Values.cloneStaticSiteFromGit.gitSync.resources | nindent 12 }}
+          {{- else if ne .Values.cloneStaticSiteFromGit.gitSync.resourcesPreset "none" }}
+          resources: {{- include "common.resources.preset" (dict "type" .Values.cloneStaticSiteFromGit.gitSync.resourcesPreset) | nindent 12 }}
+          {{- end }}
+          volumeMounts:
+            - name: empty-dir
+              mountPath: /tmp
+              subPath: tmp-dir
+            - name: empty-dir
+              mountPath: /etc/ssh
+              subPath: etc-ssh-dir
+            - name: empty-dir
+              mountPath: /.ssh
+              subPath: ssh-dir
+            - name: staticsite
+              mountPath: /app
+            {{- if .Values.cloneStaticSiteFromGit.extraVolumeMounts }}
+            {{- include "common.tplvalues.render" (dict "value" .Values.cloneStaticSiteFromGit.extraVolumeMounts "context" $) | nindent 12 }}
+            {{- end }}
+          {{- if .Values.cloneStaticSiteFromGit.extraEnvVars }}
+          env: {{- include "common.tplvalues.render" (dict "value" .Values.cloneStaticSiteFromGit.extraEnvVars "context" $) | nindent 12 }}
+          {{- end }}
+          {{- if .Values.cloneStaticSiteFromGit.extraEnvVarsSecret }}
+          envFrom:
+            - secretRef:
+                name: {{ include "common.tplvalues.render" (dict "value" .Values.cloneStaticSiteFromGit.extraEnvVarsSecret "context" $) }}
+          {{- end }}
+        {{- end }}
+        - name: nginx
+          image: {{ include "nginx.image" . }}
+          imagePullPolicy: {{ .Values.image.pullPolicy | quote }}
+          {{- if .Values.containerSecurityContext.enabled }}
+          securityContext: {{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.containerSecurityContext "context" $) | nindent 12 }}
+          {{- end }}
+          {{- if .Values.diagnosticMode.enabled }}
+          command: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.command "context" $) | nindent 12 }}
+          {{- else if .Values.command }}
+          command: {{- include "common.tplvalues.render" (dict "value" .Values.command "context" $) | nindent 12 }}
+          {{- end }}
+          {{- if .Values.diagnosticMode.enabled }}
+          args: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.args "context" $) | nindent 12 }}
+          {{- else if .Values.args }}
+          args: {{- include "common.tplvalues.render" (dict "value" .Values.args "context" $) | nindent 12 }}
+          {{- end }}
+          {{- if .Values.lifecycleHooks }}
+          lifecycle: {{- include "common.tplvalues.render" (dict "value" .Values.lifecycleHooks "context" $) | nindent 12 }}
+          {{- end }}
+          env:
+            - name: BITNAMI_DEBUG
+              value: {{ ternary "true" "false" .Values.image.debug | quote }}
+            {{- if .Values.containerPorts.http }}
+            - name: NGINX_HTTP_PORT_NUMBER
+              value: {{ .Values.containerPorts.http | quote }}
+            {{- end }}
+            {{- if .Values.containerPorts.https }}
+            - name: NGINX_HTTPS_PORT_NUMBER
+              value: {{ .Values.containerPorts.https | quote }}
+            {{- end }}
+            {{- if or .Values.streamServerBlock .Values.existingStreamServerBlockConfigmap }}
+            - name: NGINX_ENABLE_STREAM
+              value: "true"
+            {{- end }}
+            {{- if .Values.extraEnvVars }}
+            {{- include "common.tplvalues.render" (dict "value" .Values.extraEnvVars "context" $) | nindent 12 }}
+            {{- end }}
+          envFrom:
+            {{- if .Values.extraEnvVarsCM }}
+            - configMapRef:
+                name: {{ include "common.tplvalues.render" (dict "value" .Values.extraEnvVarsCM "context" $) }}
+            {{- end }}
+            {{- if .Values.extraEnvVarsSecret }}
+            - secretRef:
+                name: {{ include "common.tplvalues.render" (dict "value" .Values.extraEnvVarsSecret "context" $) }}
+            {{- end }}
+          ports:
+            {{- if .Values.containerPorts.http }}
+            - name: http
+              containerPort: {{ .Values.containerPorts.http }}
+            {{- end }}
+            {{- if .Values.containerPorts.https }}
+            - name: https
+              containerPort: {{ .Values.containerPorts.https }}
+            {{- end }}
+            {{- if .Values.extraContainerPorts }}
+            {{- include "common.tplvalues.render" (dict "value" .Values.extraContainerPorts "context" $) | nindent 12 }}
+            {{- end }}
+          {{- if not .Values.diagnosticMode.enabled }}
+          {{- if .Values.customLivenessProbe }}
+          livenessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.customLivenessProbe "context" $) | nindent 12 }}
+          {{- else if .Values.livenessProbe.enabled }}
+          livenessProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.livenessProbe "enabled") "context" $) | nindent 12 }}
+            tcpSocket:
+              port: {{ ternary "https" "http" (and (empty .Values.containerPorts.http) (not (empty .Values.containerPorts.https))) }}
+          {{- end }}
+          {{- if .Values.customReadinessProbe }}
+          readinessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.customReadinessProbe "context" $) | nindent 12 }}
+          {{- else if .Values.readinessProbe.enabled }}
+          readinessProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.readinessProbe "enabled" "path") "context" $) | nindent 12 }}
+            httpGet:
+              path: {{ .Values.readinessProbe.path }}
+              port: {{ ternary "https" "http" (and (empty .Values.containerPorts.http) (not (empty .Values.containerPorts.https))) }}
+          {{- end }}
+          {{- if .Values.customStartupProbe }}
+          startupProbe: {{- include "common.tplvalues.render" (dict "value" .Values.customStartupProbe "context" $) | nindent 12 }}
+          {{- else if .Values.startupProbe.enabled }}
+          startupProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.startupProbe "enabled") "context" $) | nindent 12 }}
+            tcpSocket:
+              port: {{ ternary "https" "http" (and (empty .Values.containerPorts.http) (not (empty .Values.containerPorts.https))) }}
+          {{- end }}
+          {{- end }}
+          {{- if .Values.resources }}
+          resources: {{- toYaml .Values.resources | nindent 12 }}
+          {{- else if ne .Values.resourcesPreset "none" }}
+          resources: {{- include "common.resources.preset" (dict "type" .Values.resourcesPreset) | nindent 12 }}
+          {{- end }}
+          volumeMounts:
+            - name: empty-dir
+              mountPath: /tmp
+              subPath: tmp-dir
+            - name: empty-dir
+              mountPath: /opt/bitnami/nginx/conf
+              subPath: app-conf-dir
+            - name: empty-dir
+              mountPath: /opt/bitnami/nginx/logs
+              subPath: app-logs-dir
+            - name: empty-dir
+              mountPath: /opt/bitnami/nginx/tmp
+              subPath: app-tmp-dir
+            {{- if or .Values.serverBlock .Values.existingServerBlockConfigmap }}
+            - name: nginx-server-block
+              mountPath: /opt/bitnami/nginx/conf/server_blocks
+            {{- end }}
+            {{- if or .Values.streamServerBlock .Values.existingStreamServerBlockConfigmap }}
+            - name: nginx-stream-server-block
+              mountPath: /opt/bitnami/nginx/conf/stream_server_blocks
+            {{- end }}
+            {{- if (include "nginx.useStaticSite" .) }}
+            - name: staticsite
+              mountPath: /app
+            {{- end }}
+            {{- if .Values.tls.enabled }}
+            - name: certificate
+              mountPath: /certs
+            {{- else }}
+            - name: empty-dir
+              mountPath: /certs
+              subPath: app-tls-dir
+            {{- end }}
+            {{- if .Values.extraVolumeMounts }}
+            {{- include "common.tplvalues.render" ( dict "value" .Values.extraVolumeMounts "context" $) | nindent 12 }}
+            {{- end }}
+        {{- if .Values.metrics.enabled }}
+        - name: metrics
+          image: {{ include "nginx.metrics.image" . }}
+          imagePullPolicy: {{ .Values.metrics.image.pullPolicy | quote }}
+          {{- if .Values.metrics.securityContext.enabled }}
+          securityContext: {{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.metrics.securityContext "context" $) | nindent 12 }}
+          {{- end }}
+          command:
+            - exporter
+          args:
+            - --nginx.scrape-uri
+            - {{ printf "http://127.0.0.1:%d/status" (int (default .Values.containerPorts.http .Values.metrics.port)) | quote }}
+            - --web.listen-address
+            - {{ printf ":%d" (int .Values.metrics.containerPorts.metrics) | quote }}
+            {{- if .Values.metrics.extraArgs }}
+            {{- include "common.tplvalues.render" ( dict "value" .Values.metrics.extraArgs "context" $ ) | nindent 12 }}
+            {{- end }}
+          ports:
+            - name: metrics
+              containerPort: {{ .Values.metrics.containerPorts.metrics }}
+          livenessProbe:
+            httpGet:
+              path: /metrics
+              port: metrics
+            initialDelaySeconds: 15
+            timeoutSeconds: 5
+          readinessProbe:
+            httpGet:
+              path: /metrics
+              port: metrics
+            initialDelaySeconds: 5
+            timeoutSeconds: 1
+          {{- if .Values.metrics.resources }}
+          resources: {{- toYaml .Values.metrics.resources | nindent 12 }}
+          {{- else if ne .Values.metrics.resourcesPreset "none" }}
+          resources: {{- include "common.resources.preset" (dict "type" .Values.metrics.resourcesPreset) | nindent 12 }}
+          {{- end }}
+        {{- end }}
+        {{- if .Values.sidecars }}
+        {{- include "common.tplvalues.render" ( dict "value" .Values.sidecars "context" $) | nindent 8 }}
+        {{- end }}
+      volumes:
+        - name: empty-dir
+          emptyDir: {}
+        {{- if .Values.tls.enabled }}
+        - name: certificate
+          secret:
+            {{- if .Values.tls.existingSecret }}
+            secretName: {{ .Values.tls.existingSecret }}
+            {{- else }}
+            secretName: {{ printf "%s-tls" (include "common.names.fullname" .) }}
+            items:
+              - key: tls.crt
+                path: server.crt
+              - key: tls.key
+                path: server.key
+            {{- end }}
+        {{- end }}
+        {{- if or .Values.serverBlock .Values.existingServerBlockConfigmap }}
+        - name: nginx-server-block
+          configMap:
+            name: {{ include "nginx.serverBlockConfigmapName" . }}
+        {{- end }}
+        {{- if or .Values.streamServerBlock .Values.existingStreamServerBlockConfigmap }}
+        - name: nginx-stream-server-block
+          configMap:
+            name: {{ include "nginx.streamServerBlockConfigmapName" . }}
+        {{- end }}
+        {{- if (include "nginx.useStaticSite" .) }}
+        - name: staticsite
+          {{- include "nginx.staticSiteVolume" . | nindent 10 }}
+        {{- end }}
+        {{- if .Values.extraVolumes }}
+        {{- include "common.tplvalues.render" ( dict "value" .Values.extraVolumes "context" $) | nindent 8 }}
+        {{- end }}
diff --git a/kubernetes/common/nginx/templates/extra-list.yaml b/kubernetes/common/nginx/templates/extra-list.yaml
new file mode 100644 (file)
index 0000000..329f5c6
--- /dev/null
@@ -0,0 +1,9 @@
+{{- /*
+Copyright Broadcom, Inc. All Rights Reserved.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+{{- range .Values.extraDeploy }}
+---
+{{ include "common.tplvalues.render" (dict "value" . "context" $) }}
+{{- end }}
diff --git a/kubernetes/common/nginx/templates/health-ingress.yaml b/kubernetes/common/nginx/templates/health-ingress.yaml
new file mode 100644 (file)
index 0000000..5df37e0
--- /dev/null
@@ -0,0 +1,59 @@
+{{- /*
+Copyright Broadcom, Inc. All Rights Reserved.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+{{- if .Values.healthIngress.enabled }}
+apiVersion: {{ include "common.capabilities.ingress.apiVersion" . }}
+kind: Ingress
+metadata:
+  name: {{ include "common.names.fullname" . }}-health
+  namespace: {{ include "common.names.namespace" . | quote }}
+  labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
+  {{- if or .Values.healthIngress.annotations .Values.commonAnnotations }}
+  {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.healthIngress.annotations .Values.commonAnnotations ) "context" . ) }}
+  annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
+  {{- end }}
+spec:
+  {{- if and .Values.healthIngress.ingressClassName (eq "true" (include "common.ingress.supportsIngressClassname" .)) }}
+  ingressClassName: {{ .Values.healthIngress.ingressClassName | quote }}
+  {{- end }}
+  rules:
+    {{- if .Values.healthIngress.hostname }}
+    - host: {{ .Values.healthIngress.hostname }}
+      http:
+        paths:
+          {{- if .Values.healthIngress.extraPaths }}
+          {{- toYaml .Values.healthIngress.extraPaths | nindent 10 }}
+          {{- end }}
+          - path: {{ .Values.healthIngress.path }}
+            {{- if eq "true" (include "common.ingress.supportsPathType" .) }}
+            pathType: {{ .Values.healthIngress.pathType }}
+            {{- end }}
+            backend: {{- include "common.ingress.backend" (dict "serviceName" (include "common.names.fullname" .) "servicePort" (ternary "http" "https" (not .Values.containerPorts.https)) "context" $)  | nindent 14 }}
+    {{- end }}
+    {{- range .Values.healthIngress.extraHosts }}
+    - host: {{ .name | quote }}
+      http:
+        paths:
+          - path: {{ default "/" .path }}
+            {{- if eq "true" (include "common.ingress.supportsPathType" $) }}
+            pathType: {{ default "ImplementationSpecific" .pathType }}
+            {{- end }}
+            backend: {{- include "common.ingress.backend" (dict "serviceName" (include "common.names.fullname" $) "servicePort" (ternary "http" "https" (not $.Values.containerPorts.https)) "context" $) | nindent 14 }}
+    {{- end }}
+    {{- if .Values.healthIngress.extraRules }}
+    {{- include "common.tplvalues.render" (dict "value" .Values.healthIngress.extraRules "context" $) | nindent 4 }}
+    {{- end }}
+  {{- if or (and .Values.healthIngress.tls (or (include "common.ingress.certManagerRequest" ( dict "annotations" .Values.healthIngress.annotations )) .Values.healthIngress.selfSigned (not (empty .Values.healthIngress.secrets)))) .Values.healthIngress.extraTls }}
+  tls:
+    {{- if and .Values.healthIngress.tls (or (include "common.ingress.certManagerRequest" ( dict "annotations" .Values.healthIngress.annotations )) .Values.healthIngress.selfSigned (not (empty .Values.healthIngress.secrets))) }}
+    - hosts:
+        - {{ .Values.healthIngress.hostname | quote }}
+      secretName: {{ printf "%s-health-tls" .Values.healthIngress.hostname }}
+    {{- end }}
+    {{- if .Values.healthIngress.extraTls }}
+    {{- include "common.tplvalues.render" (dict "value" .Values.healthIngress.extraTls "context" $) | nindent 4 }}
+    {{- end }}
+  {{- end }}
+{{- end }}
diff --git a/kubernetes/common/nginx/templates/hpa.yaml b/kubernetes/common/nginx/templates/hpa.yaml
new file mode 100644 (file)
index 0000000..44b5395
--- /dev/null
@@ -0,0 +1,48 @@
+{{- /*
+Copyright Broadcom, Inc. All Rights Reserved.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+{{- if .Values.autoscaling.enabled }}
+apiVersion: {{ include "common.capabilities.hpa.apiVersion" ( dict "context" $ ) }}
+kind: HorizontalPodAutoscaler
+metadata:
+  name: {{ template "common.names.fullname" . }}
+  namespace: {{ include "common.names.namespace" . | quote }}
+  labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
+  {{- if .Values.commonAnnotations }}
+  annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
+  {{- end }}
+spec:
+  scaleTargetRef:
+    apiVersion: {{ include "common.capabilities.deployment.apiVersion" . }}
+    kind: Deployment
+    name: {{ template "common.names.fullname" . }}
+  minReplicas: {{ .Values.autoscaling.minReplicas }}
+  maxReplicas: {{ .Values.autoscaling.maxReplicas }}
+  metrics:
+    {{- if .Values.autoscaling.targetMemory }}
+    - type: Resource
+      resource:
+        name: memory
+        {{- if semverCompare "<1.23-0" (include "common.capabilities.kubeVersion" .) }}
+        targetAverageUtilization: {{ .Values.autoscaling.targetMemory }}
+        {{- else }}
+        target:
+          type: Utilization
+          averageUtilization: {{ .Values.autoscaling.targetMemory }}
+        {{- end }}
+    {{- end }}
+    {{- if .Values.autoscaling.targetCPU }}
+    - type: Resource
+      resource:
+        name: cpu
+        {{- if semverCompare "<1.23-0" (include "common.capabilities.kubeVersion" .) }}
+        targetAverageUtilization: {{ .Values.autoscaling.targetCPU }}
+        {{- else }}
+        target:
+          type: Utilization
+          averageUtilization: {{ .Values.autoscaling.targetCPU }}
+        {{- end }}
+    {{- end }}
+{{- end }}
diff --git a/kubernetes/common/nginx/templates/ingress-tls-secret.yaml b/kubernetes/common/nginx/templates/ingress-tls-secret.yaml
new file mode 100644 (file)
index 0000000..d294376
--- /dev/null
@@ -0,0 +1,83 @@
+{{- /*
+Copyright Broadcom, Inc. All Rights Reserved.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+{{- if .Values.ingress.enabled }}
+{{- if .Values.ingress.secrets }}
+{{- range .Values.ingress.secrets }}
+apiVersion: v1
+kind: Secret
+metadata:
+  name: {{ .name }}
+  namespace: {{ include "common.names.namespace" $ | quote }}
+  labels: {{- include "common.labels.standard" ( dict "customLabels" $.Values.commonLabels "context" $ ) | nindent 4 }}
+  {{- if $.Values.commonAnnotations }}
+  annotations: {{- include "common.tplvalues.render" ( dict "value" $.Values.commonAnnotations "context" $ ) | nindent 4 }}
+  {{- end }}
+type: kubernetes.io/tls
+data:
+  tls.crt: {{ .certificate | b64enc }}
+  tls.key: {{ .key | b64enc }}
+---
+{{- end }}
+{{- else if and .Values.ingress.tls .Values.ingress.selfSigned }}
+{{- $secretName := printf "%s-tls" .Values.ingress.hostname }}
+{{- $ca := genCA "nginx-ca" 365 }}
+{{- $cert := genSignedCert .Values.ingress.hostname nil (list .Values.ingress.hostname) 365 $ca }}
+apiVersion: v1
+kind: Secret
+metadata:
+  name: {{ $secretName }}
+  namespace: {{ include "common.names.namespace" . | quote }}
+  labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
+  {{- if .Values.commonAnnotations }}
+  annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
+  {{- end }}
+type: kubernetes.io/tls
+data:
+  tls.crt: {{ include "common.secrets.lookup" (dict "secret" $secretName "key" "tls.crt" "defaultValue" $cert.Cert "context" $) }}
+  tls.key: {{ include "common.secrets.lookup" (dict "secret" $secretName "key" "tls.key" "defaultValue" $cert.Key "context" $) }}
+  ca.crt: {{ include "common.secrets.lookup" (dict "secret" $secretName "key" "ca.crt" "defaultValue" $ca.Cert "context" $) }}
+---
+{{- end }}
+{{- end }}
+{{- if .Values.healthIngress.enabled }}
+{{- if .Values.healthIngress.secrets }}
+{{- range .Values.healthIngress.secrets }}
+apiVersion: v1
+kind: Secret
+metadata:
+  name: {{ .name }}
+  namespace: {{ include "common.names.namespace" $ | quote }}
+  labels: {{- include "common.labels.standard" ( dict "customLabels" $.Values.commonLabels "context" $ ) | nindent 4 }}
+  {{- if $.Values.commonAnnotations }}
+  annotations: {{- include "common.tplvalues.render" ( dict "value" $.Values.commonAnnotations "context" $ ) | nindent 4 }}
+  {{- end }}
+type: kubernetes.io/tls
+data:
+  tls.crt: {{ .certificate | b64enc }}
+  tls.key: {{ .key | b64enc }}
+---
+{{- end }}
+{{- else if and .Values.healthIngress.tls .Values.healthIngress.selfSigned }}
+{{- $secretName := printf "%s-tls" .Values.healthIngress.hostname }}
+{{- $ca := genCA "nginx-health-ca" 365 }}
+{{- $cert := genSignedCert .Values.healthIngress.hostname nil (list .Values.healthIngress.hostname) 365 $ca }}
+apiVersion: v1
+kind: Secret
+metadata:
+  name: {{ $secretName }}
+  namespace: {{ include "common.names.namespace" . | quote }}
+  labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
+  {{- if .Values.commonAnnotations }}
+  annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
+  {{- end }}
+type: kubernetes.io/tls
+data:
+  tls.crt: {{ include "common.secrets.lookup" (dict "secret" $secretName "key" "tls.crt" "defaultValue" $cert.Cert "context" $) }}
+  tls.key: {{ include "common.secrets.lookup" (dict "secret" $secretName "key" "tls.key" "defaultValue" $cert.Key "context" $) }}
+  ca.crt: {{ include "common.secrets.lookup" (dict "secret" $secretName "key" "ca.crt" "defaultValue" $ca.Cert "context" $) }}
+---
+{{- end }}
+{{- end }}
diff --git a/kubernetes/common/nginx/templates/ingress.yaml b/kubernetes/common/nginx/templates/ingress.yaml
new file mode 100644 (file)
index 0000000..b49f86b
--- /dev/null
@@ -0,0 +1,73 @@
+{{- /*
+Copyright Broadcom, Inc. All Rights Reserved.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+{{- if .Values.ingress.enabled }}
+apiVersion: {{ include "common.capabilities.ingress.apiVersion" . }}
+kind: Ingress
+metadata:
+  name: {{ include "common.names.fullname" . }}
+  namespace: {{ include "common.names.namespace" . | quote }}
+  labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
+  {{- if or .Values.ingress.annotations .Values.commonAnnotations }}
+  {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.ingress.annotations .Values.commonAnnotations ) "context" . ) }}
+  annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
+  {{- end }}
+spec:
+  {{- if and .Values.ingress.ingressClassName (eq "true" (include "common.ingress.supportsIngressClassname" .)) }}
+  ingressClassName: {{ .Values.ingress.ingressClassName | quote }}
+  {{- end }}
+  rules:
+    {{- if .Values.ingress.hostname }}
+    - host: {{ .Values.ingress.hostname | quote }}
+      http:
+        paths:
+          {{- if .Values.ingress.extraPaths }}
+          {{- toYaml .Values.ingress.extraPaths | nindent 10 }}
+          {{- end }}
+          - path: {{ .Values.ingress.path }}
+            {{- if eq "true" (include "common.ingress.supportsPathType" .) }}
+            pathType: {{ .Values.ingress.pathType }}
+            {{- end }}
+            backend: {{- include "common.ingress.backend" (dict "serviceName" (include "common.names.fullname" .) "servicePort" "http" "context" $)  | nindent 14 }}
+    {{- else if .Values.ingress.path }}
+    - http:
+        paths:
+          {{- if .Values.ingress.extraPaths }}
+          {{- toYaml .Values.ingress.extraPaths | nindent 10 }}
+          {{- end }}
+          - path: {{ .Values.ingress.path }}
+            {{- if eq "true" (include "common.ingress.supportsPathType" .) }}
+            pathType: {{ .Values.ingress.pathType }}
+            {{- end }}
+            backend: {{- include "common.ingress.backend" (dict "serviceName" (include "common.names.fullname" .) "servicePort" "http" "context" $)  | nindent 14 }}
+    {{- end }}
+    {{- range .Values.ingress.extraHosts }}
+    - host: {{ .name | quote }}
+      http:
+        paths:
+          - path: {{ default "/" .path }}
+            {{- if eq "true" (include "common.ingress.supportsPathType" $) }}
+            pathType: {{ default "ImplementationSpecific" .pathType }}
+            {{- end }}
+            backend: {{- include "common.ingress.backend" (dict "serviceName" (include "common.names.fullname" $) "servicePort" "http" "context" $) | nindent 14 }}
+    {{- end }}
+    {{- if .Values.ingress.extraRules }}
+    {{- include "common.tplvalues.render" (dict "value" .Values.ingress.extraRules "context" $) | nindent 4 }}
+    {{- end }}
+  {{- if or (and .Values.ingress.tls (or (include "common.ingress.certManagerRequest" ( dict "annotations" .Values.ingress.annotations )) .Values.ingress.selfSigned (not (empty .Values.ingress.secrets)))) .Values.ingress.extraTls }}
+  tls:
+    {{- if and .Values.ingress.tls (or (include "common.ingress.certManagerRequest" ( dict "annotations" .Values.ingress.annotations )) .Values.ingress.selfSigned (not (empty .Values.ingress.secrets))) }}
+    - hosts:
+        - {{ .Values.ingress.hostname | quote }}
+        {{- if and (or (.Values.ingress.tlsWwwPrefix) (eq (index .Values.ingress.annotations "nginx.ingress.kubernetes.io/from-to-www-redirect") "true" )) (not (contains "www." .Values.ingress.hostname))  }}
+        - {{ printf "www.%s" (tpl .Values.ingress.hostname $) | quote }}
+        {{- end }}
+      secretName: {{ printf "%s-tls" .Values.ingress.hostname }}
+    {{- end }}
+    {{- if .Values.ingress.extraTls }}
+    {{- include "common.tplvalues.render" (dict "value" .Values.ingress.extraTls "context" $) | nindent 4 }}
+    {{- end }}
+  {{- end }}
+{{- end }}
diff --git a/kubernetes/common/nginx/templates/networkpolicy.yaml b/kubernetes/common/nginx/templates/networkpolicy.yaml
new file mode 100644 (file)
index 0000000..327e1fa
--- /dev/null
@@ -0,0 +1,71 @@
+{{- /*
+Copyright Broadcom, Inc. All Rights Reserved.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+{{- if .Values.networkPolicy.enabled }}
+kind: NetworkPolicy
+apiVersion: {{ include "common.capabilities.networkPolicy.apiVersion" . }}
+metadata:
+  name: {{ template "common.names.fullname" . }}
+  namespace: {{ include "common.names.namespace" . | quote }}
+  labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
+  {{- if .Values.commonAnnotations }}
+  annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
+  {{- end }}
+spec:
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.podLabels .Values.commonLabels ) "context" . ) }}
+  podSelector:
+    matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }}
+  policyTypes:
+    - Ingress
+    - Egress
+  egress:
+    {{- if .Values.networkPolicy.allowExternalEgress }}
+    - {}
+    {{- else }}
+    - ports:
+        # Allow dns resolution
+        - port: 53
+          protocol: UDP
+        - port: 53
+          protocol: TCP
+    {{- if .Values.networkPolicy.extraEgress }}
+    {{- include "common.tplvalues.render" ( dict "value" .Values.networkPolicy.extraEgress "context" $ ) | nindent 4 }}
+    {{- end }}
+    {{- end }}
+  ingress:
+    - ports:
+        - port: {{ .Values.containerPorts.http }}
+        {{- if .Values.containerPorts.https }}
+        - port: {{ .Values.containerPorts.https }}
+        {{- end }}
+        {{- if .Values.metrics.enabled }}
+        - port: {{ .Values.metrics.containerPorts.metrics }}
+        {{- end }}
+      {{- if not .Values.networkPolicy.allowExternal }}
+      from:
+        - podSelector:
+            matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 14 }}
+        - podSelector:
+            matchLabels:
+              {{ template "common.names.fullname" . }}-client: "true"
+        {{- if .Values.networkPolicy.ingressNSMatchLabels }}
+        - namespaceSelector:
+            matchLabels:
+              {{- range $key, $value := .Values.networkPolicy.ingressNSMatchLabels }}
+              {{ $key | quote }}: {{ $value | quote }}
+              {{- end }}
+          {{- if .Values.networkPolicy.ingressNSPodMatchLabels }}
+          podSelector:
+            matchLabels:
+              {{- range $key, $value := .Values.networkPolicy.ingressNSPodMatchLabels }}
+              {{ $key | quote }}: {{ $value | quote }}
+              {{- end }}
+          {{- end }}
+        {{- end }}
+      {{- end }}
+    {{- if .Values.networkPolicy.extraIngress }}
+    {{- include "common.tplvalues.render" ( dict "value" .Values.networkPolicy.extraIngress "context" $ ) | nindent 4 }}
+    {{- end }}
+{{- end }}
diff --git a/kubernetes/common/nginx/templates/pdb.yaml b/kubernetes/common/nginx/templates/pdb.yaml
new file mode 100644 (file)
index 0000000..821b4f9
--- /dev/null
@@ -0,0 +1,26 @@
+{{- /*
+Copyright Broadcom, Inc. All Rights Reserved.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+{{- if .Values.pdb.create }}
+apiVersion: {{ include "common.capabilities.policy.apiVersion" . }}
+kind: PodDisruptionBudget
+metadata:
+  name: {{ include "common.names.fullname" . }}
+  namespace: {{ include "common.names.namespace" . | quote }}
+  labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
+  {{- if .Values.commonAnnotations }}
+  annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
+  {{- end }}
+spec:
+  {{- if .Values.pdb.minAvailable }}
+  minAvailable: {{ .Values.pdb.minAvailable }}
+  {{- end }}
+  {{- if or .Values.pdb.maxUnavailable (not .Values.pdb.minAvailable)}}
+  maxUnavailable: {{ .Values.pdb.maxUnavailable | default 1 }}
+  {{- end }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.podLabels .Values.commonLabels ) "context" . ) }}
+  selector:
+    matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }}
+{{- end }}
diff --git a/kubernetes/common/nginx/templates/prometheusrules.yaml b/kubernetes/common/nginx/templates/prometheusrules.yaml
new file mode 100644 (file)
index 0000000..d2d728f
--- /dev/null
@@ -0,0 +1,24 @@
+{{- /*
+Copyright Broadcom, Inc. All Rights Reserved.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+{{- if and .Values.metrics.enabled .Values.metrics.prometheusRule.enabled }}
+apiVersion: monitoring.coreos.com/v1
+kind: PrometheusRule
+metadata:
+  name: {{ include "common.names.fullname" . }}
+  namespace: {{ default (include "common.names.namespace" .) .Values.metrics.prometheusRule.namespace | quote }}
+  labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
+    app.kubernetes.io/component: metrics
+    {{- if .Values.metrics.prometheusRule.additionalLabels }}
+    {{- include "common.tplvalues.render" ( dict "value" .Values.metrics.prometheusRule.additionalLabels "context" $ ) | nindent 4 }}
+    {{- end }}
+  {{- if .Values.commonAnnotations }}
+  annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
+  {{- end }}
+spec:
+  groups:
+    - name: {{ include "common.names.fullname" . }}
+      rules: {{- include "common.tplvalues.render" ( dict "value" .Values.metrics.prometheusRule.rules "context" $ ) | nindent 6 }}
+{{- end }}
diff --git a/kubernetes/common/nginx/templates/server-block-configmap.yaml b/kubernetes/common/nginx/templates/server-block-configmap.yaml
new file mode 100644 (file)
index 0000000..940c50e
--- /dev/null
@@ -0,0 +1,19 @@
+{{- /*
+Copyright Broadcom, Inc. All Rights Reserved.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+{{- if and .Values.serverBlock (not .Values.existingServerBlockConfigmap) }}
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ template "common.names.fullname" . }}-server-block
+  namespace: {{ include "common.names.namespace" . | quote }}
+  labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
+  {{- if .Values.commonAnnotations }}
+  annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
+  {{- end }}
+data:
+  server-block.conf: |-
+    {{- include "common.tplvalues.render" ( dict "value" .Values.serverBlock "context" $ ) | nindent 4 }}
+{{- end }}
diff --git a/kubernetes/common/nginx/templates/serviceaccount.yaml b/kubernetes/common/nginx/templates/serviceaccount.yaml
new file mode 100644 (file)
index 0000000..20fb492
--- /dev/null
@@ -0,0 +1,18 @@
+{{- /*
+Copyright Broadcom, Inc. All Rights Reserved.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+{{- if .Values.serviceAccount.create -}}
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+  name: {{ include "nginx.serviceAccountName" . }}
+  namespace: {{ include "common.names.namespace" . | quote }}
+  labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
+  {{- if or .Values.serviceAccount.annotations .Values.commonAnnotations }}
+  {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.serviceAccount.annotations .Values.commonAnnotations ) "context" . ) }}
+  annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
+  {{- end }}
+automountServiceAccountToken: {{ .Values.serviceAccount.automountServiceAccountToken }}
+{{- end -}}
diff --git a/kubernetes/common/nginx/templates/servicemonitor.yaml b/kubernetes/common/nginx/templates/servicemonitor.yaml
new file mode 100644 (file)
index 0000000..d597e06
--- /dev/null
@@ -0,0 +1,45 @@
+{{- /*
+Copyright Broadcom, Inc. All Rights Reserved.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+{{- if and .Values.metrics.enabled .Values.metrics.serviceMonitor.enabled }}
+apiVersion: monitoring.coreos.com/v1
+kind: ServiceMonitor
+metadata:
+  name: {{ template "common.names.fullname" . }}
+  namespace: {{ default (include "common.names.namespace" .) .Values.metrics.serviceMonitor.namespace | quote }}
+  {{- $labels := include "common.tplvalues.merge" ( dict "values" ( list .Values.metrics.serviceMonitor.labels .Values.commonLabels ) "context" . ) }}
+  labels: {{- include "common.labels.standard" ( dict "customLabels" $labels "context" $ ) | nindent 4 }}
+  {{- if .Values.commonAnnotations }}
+  annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
+  {{- end }}
+spec:
+  jobLabel: {{ .Values.metrics.serviceMonitor.jobLabel | quote }}
+  selector:
+    matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 6 }}
+      {{- if .Values.metrics.serviceMonitor.selector }}
+      {{- include "common.tplvalues.render" (dict "value" .Values.metrics.serviceMonitor.selector "context" $) | nindent 6 }}
+      {{- end }}
+  endpoints:
+    - port: metrics
+      path: /metrics
+      {{- if .Values.metrics.serviceMonitor.interval }}
+      interval: {{ .Values.metrics.serviceMonitor.interval }}
+      {{- end }}
+      {{- if .Values.metrics.serviceMonitor.scrapeTimeout }}
+      scrapeTimeout: {{ .Values.metrics.serviceMonitor.scrapeTimeout }}
+      {{- end }}
+      {{- if .Values.metrics.serviceMonitor.honorLabels }}
+      honorLabels: {{ .Values.metrics.serviceMonitor.honorLabels }}
+      {{- end }}
+      {{- if .Values.metrics.serviceMonitor.relabelings }}
+      relabelings: {{- include "common.tplvalues.render" ( dict "value" .Values.metrics.serviceMonitor.relabelings "context" $) | nindent 8 }}
+      {{- end }}
+      {{- if .Values.metrics.serviceMonitor.metricRelabelings }}
+      metricRelabelings: {{- include "common.tplvalues.render" ( dict "value" .Values.metrics.serviceMonitor.metricRelabelings "context" $) | nindent 8 }}
+      {{- end }}
+  namespaceSelector:
+    matchNames:
+      - {{ .Release.Namespace }}
+{{- end }}
diff --git a/kubernetes/common/nginx/templates/stream-server-block-configmap.yaml b/kubernetes/common/nginx/templates/stream-server-block-configmap.yaml
new file mode 100644 (file)
index 0000000..11b39d4
--- /dev/null
@@ -0,0 +1,19 @@
+{{- /*
+Copyright Broadcom, Inc. All Rights Reserved.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+{{- if and .Values.streamServerBlock (not .Values.existingStreamServerBlockConfigmap) }}
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ template "common.names.fullname" . }}-stream-server-block
+  namespace: {{ include "common.names.namespace" . | quote }}
+  labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
+  {{- if .Values.commonAnnotations }}
+  annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
+  {{- end }}
+data:
+  stream-server-block.conf: |-
+    {{- include "common.tplvalues.render" ( dict "value" .Values.streamServerBlock "context" $ ) | nindent 4 }}
+{{- end }}
diff --git a/kubernetes/common/nginx/templates/svc.yaml b/kubernetes/common/nginx/templates/svc.yaml
new file mode 100644 (file)
index 0000000..e86926f
--- /dev/null
@@ -0,0 +1,69 @@
+{{- /*
+Copyright Broadcom, Inc. All Rights Reserved.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: {{ template "common.names.fullname" . }}
+  namespace: {{ include "common.names.namespace" . | quote }}
+  labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
+  annotations:
+    {{- if or .Values.service.annotations .Values.commonAnnotations }}
+    {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.service.annotations .Values.commonAnnotations ) "context" . ) }}
+    {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }}
+    {{- end }}
+    {{- if and .Values.metrics.enabled .Values.metrics.service.annotations }}
+    {{- include "common.tplvalues.render" ( dict "value" .Values.metrics.service.annotations "context" $) | nindent 4 }}
+    {{- end }}
+spec:
+  type: {{ .Values.service.type }}
+  {{- if and .Values.service.clusterIP (eq .Values.service.type "ClusterIP") }}
+  clusterIP: {{ .Values.service.clusterIP }}
+  {{- end }}
+  {{- if .Values.service.sessionAffinity }}
+  sessionAffinity: {{ .Values.service.sessionAffinity }}
+  {{- end }}
+  {{- if .Values.service.sessionAffinityConfig }}
+  sessionAffinityConfig: {{- include "common.tplvalues.render" (dict "value" .Values.service.sessionAffinityConfig "context" $) | nindent 4 }}
+  {{- end }}
+  {{- if or (eq .Values.service.type "LoadBalancer") (eq .Values.service.type "NodePort") }}
+  externalTrafficPolicy: {{ .Values.service.externalTrafficPolicy | quote }}
+  {{- end }}
+  {{- if and (eq .Values.service.type "LoadBalancer") (not (empty .Values.service.loadBalancerSourceRanges)) }}
+  loadBalancerSourceRanges: {{- toYaml .Values.service.loadBalancerSourceRanges | nindent 4 }}
+  {{- end }}
+  {{- if and (eq .Values.service.type "LoadBalancer") (not (empty .Values.service.loadBalancerIP)) }}
+  loadBalancerIP: {{ .Values.service.loadBalancerIP }}
+  {{- end }}
+  {{- if and (eq .Values.service.type "LoadBalancer") .Values.service.loadBalancerClass }}
+  loadBalancerClass: {{ .Values.service.loadBalancerClass }}
+  {{- end }}
+  ports:
+    {{- if .Values.containerPorts.http }}
+    - name: http
+      port: {{ .Values.service.ports.http }}
+      targetPort: {{ .Values.service.targetPort.http }}
+      {{- if and (or (eq .Values.service.type "NodePort") (eq .Values.service.type "LoadBalancer")) (not (empty .Values.service.nodePorts.http)) }}
+      nodePort: {{ .Values.service.nodePorts.http }}
+      {{- end }}
+    {{- end }}
+    {{- if .Values.containerPorts.https }}
+    - name: https
+      port: {{ .Values.service.ports.https }}
+      targetPort: {{ .Values.service.targetPort.https }}
+      {{- if and (or (eq .Values.service.type "NodePort") (eq .Values.service.type "LoadBalancer")) (not (empty .Values.service.nodePorts.https)) }}
+      nodePort: {{ .Values.service.nodePorts.https }}
+      {{- end }}
+    {{- end }}
+    {{- if .Values.metrics.enabled }}
+    - name: metrics
+      port: {{ .Values.metrics.service.port }}
+      targetPort: metrics
+    {{- end }}
+    {{- if .Values.service.extraPorts }}
+    {{- include "common.tplvalues.render" (dict "value" .Values.service.extraPorts "context" $) | nindent 4 }}
+    {{- end }}
+  {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.podLabels .Values.commonLabels ) "context" . ) }}
+  selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }}
diff --git a/kubernetes/common/nginx/templates/tls-secret.yaml b/kubernetes/common/nginx/templates/tls-secret.yaml
new file mode 100644 (file)
index 0000000..4a265f5
--- /dev/null
@@ -0,0 +1,35 @@
+{{- /*
+Copyright Broadcom, Inc. All Rights Reserved.
+SPDX-License-Identifier: APACHE-2.0
+*/}}
+
+{{- if and .Values.tls.enabled (not .Values.tls.existingSecret) }}
+{{- $ca := genCA "nginx-ca" 365 }}
+apiVersion: v1
+kind: Secret
+metadata:
+  name: {{ printf "%s-tls" (include "common.names.fullname" .) }}
+  namespace: {{ include "common.names.namespace" . | quote }}
+  labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
+  {{- if .Values.commonAnnotations }}
+  annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
+  {{- end }}
+type: kubernetes.io/tls
+data:
+  {{- if .Values.tls.autoGenerated }}
+  {{- $cert := genSignedCert (include "common.names.fullname" .) nil (list (include "common.names.fullname" .) (printf "%s.%s" (include "common.names.fullname" .) (include "common.names.namespace" .)) (printf "%s.%s.svc" (include "common.names.fullname" .) (include "common.names.namespace" .)) (printf "%s.%s.svc.%s" (include "common.names.fullname" .) (include "common.names.namespace" .) .Values.clusterDomain)) 365 $ca }}
+  {{ .Values.tls.certFilename }}: {{ include "common.secrets.lookup" (dict "secret" (printf "%s-tls" (include "common.names.fullname" .)) "key" .Values.tls.certFilename "defaultValue" $cert.Cert "context" $) }}
+  {{ .Values.tls.certKeyFilename }}: {{ include "common.secrets.lookup" (dict "secret" (printf "%s-tls" (include "common.names.fullname" .)) "key" .Values.tls.certKeyFilename "defaultValue" $cert.Key "context" $) }}
+  {{ .Values.tls.certCAFilename }}: {{ include "common.secrets.lookup" (dict "secret" (printf "%s-tls" (include "common.names.fullname" .)) "key" .Values.tls.certCAFilename "defaultValue" $ca.Cert "context" $) }}
+  {{- else }}
+  {{- if .Values.tls.cert }}
+  {{ .Values.tls.certFilename }}: {{ .Values.tls.cert | b64enc }}
+  {{- end }}
+  {{- if .Values.tls.key }}
+  {{ .Values.tls.certKeyFilename }}: {{ .Values.tls.key | b64enc }}
+  {{- end }}
+  {{- if .Values.tls.ca }}
+  {{ .Values.tls.certCAFilename }}: {{ .Values.tls.ca | b64enc }}
+  {{- end }}
+  {{- end }}
+{{- end }}
diff --git a/kubernetes/common/nginx/values.schema.json b/kubernetes/common/nginx/values.schema.json
new file mode 100644 (file)
index 0000000..ccb7bcd
--- /dev/null
@@ -0,0 +1,125 @@
+{
+  "$schema": "http://json-schema.org/schema#",
+  "type": "object",
+  "properties": {
+    "ingress": {
+      "type": "object",
+      "form": true,
+      "title": "Ingress details",
+      "properties": {
+        "enabled": {
+          "type": "boolean",
+          "form": true,
+          "title": "Use a custom hostname",
+          "description": "Enable the ingress resource that allows you to access the NGINX installation."
+        },
+        "hostname": {
+          "type": "string",
+          "form": true,
+          "title": "Hostname",
+          "hidden": {
+            "value": false,
+            "path": "ingress/enabled"
+          }
+        }
+      }
+    },
+    "service": {
+      "type": "object",
+      "form": true,
+      "title": "Service Configuration",
+      "properties": {
+        "type": {
+          "type": "string",
+          "form": true,
+          "title": "Service Type",
+          "description": "Allowed values: \"ClusterIP\", \"NodePort\" and \"LoadBalancer\""
+        }
+      }
+    },
+    "replicaCount": {
+      "type": "integer",
+      "form": true,
+      "title": "Number of replicas",
+      "description": "Number of replicas to deploy"
+    },
+    "serverBlock": {
+      "type": "string",
+      "form": true,
+      "title": "Custom server block",
+      "description": "Custom server block to be added to NGINX configuration"
+    },
+    "streamServerBlock": {
+      "type": "string",
+      "form": true,
+      "title": "Custom stream server block",
+      "description": "Custom stream server block to be added to NGINX configuration"
+    },
+    "containerSecurityContext": {
+      "type": "object",
+      "form": true,
+      "title": "NGINX containers' Security Context",
+      "properties": {
+        "enabled": {
+          "type": "boolean",
+          "form": true,
+          "title": "Enable Security Context",
+          "description": "Whether to enable NGINX containers' Security Context"
+        },
+        "runAsUser": {
+          "type": "integer",
+          "form": true,
+          "title": "ID of the user",
+          "description": "The UID of the user NGINX containers will run as"
+        }
+      }
+    },
+    "podSecurityContext": {
+      "type": "object",
+      "form": true,
+      "title": "NGINX pods' Security Context",
+      "properties": {
+        "enabled": {
+          "type": "boolean",
+          "form": true,
+          "title": "Enable Security Context",
+          "description": "Whether to enable NGINX pods' Security Context"
+        },
+        "fsGroup": {
+          "type": "integer",
+          "form": true,
+          "title": "ID of the group",
+          "description": "The GID of the group NGINX pods will run as"
+        }
+      }
+    },
+    "metrics": {
+      "type": "object",
+      "form": true,
+      "title": "Prometheus metrics details",
+      "properties": {
+        "enabled": {
+          "type": "boolean",
+          "title": "Create Prometheus metrics exporter",
+          "description": "Create a side-car container to expose Prometheus metrics",
+          "form": true
+        },
+        "serviceMonitor": {
+          "type": "object",
+          "properties": {
+            "enabled": {
+              "type": "boolean",
+              "title": "Create Prometheus Operator ServiceMonitor",
+              "description": "Create a ServiceMonitor to track metrics using Prometheus Operator",
+              "form": true,
+              "hidden": {
+                "value": false,
+                "path": "metrics/enabled"
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/kubernetes/common/nginx/values.yaml b/kubernetes/common/nginx/values.yaml
new file mode 100644 (file)
index 0000000..49e4e4c
--- /dev/null
@@ -0,0 +1,1094 @@
+# Copyright Broadcom, Inc. All Rights Reserved.
+# SPDX-License-Identifier: APACHE-2.0
+
+## @section Global parameters
+## Global Docker image parameters
+## Please, note that this will override the image parameters, including dependencies, configured to use the global value
+## Current available global Docker image parameters: imageRegistry, imagePullSecrets and storageClass
+
+## @param global.imageRegistry Global Docker image registry
+## @param global.imagePullSecrets Global Docker registry secret names as an array
+##
+global:
+  imageRegistry: ""
+  ## E.g.
+  ## imagePullSecrets:
+  ##   - myRegistryKeySecretName
+  ##
+  imagePullSecrets: []
+  ## Security parameters
+  ##
+  security:
+    ## @param global.security.allowInsecureImages Allows skipping image verification
+    ##
+    allowInsecureImages: false
+  ## Compatibility adaptations for Kubernetes platforms
+  ##
+  compatibility:
+    ## Compatibility adaptations for Openshift
+    ##
+    openshift:
+      ## @param global.compatibility.openshift.adaptSecurityContext Adapt the securityContext sections of the deployment to make them compatible with Openshift restricted-v2 SCC: remove runAsUser, runAsGroup and fsGroup and let the platform use their allowed default IDs. Possible values: auto (apply if the detected running cluster is Openshift), force (perform the adaptation always), disabled (do not perform adaptation)
+      ##
+      adaptSecurityContext: auto
+## @section Common parameters
+
+## @param nameOverride String to partially override nginx.fullname template (will maintain the release name)
+##
+nameOverride: ""
+## @param fullnameOverride String to fully override nginx.fullname template
+##
+fullnameOverride: ""
+## @param namespaceOverride String to fully override common.names.namespace
+##
+namespaceOverride: ""
+## @param kubeVersion Force target Kubernetes version (using Helm capabilities if not set)
+##
+kubeVersion: ""
+## @param clusterDomain Kubernetes Cluster Domain
+##
+clusterDomain: cluster.local
+## @param extraDeploy Extra objects to deploy (value evaluated as a template)
+##
+extraDeploy: []
+## @param commonLabels Add labels to all the deployed resources
+##
+commonLabels: {}
+## @param commonAnnotations Add annotations to all the deployed resources
+##
+commonAnnotations: {}
+## Enable diagnostic mode in the deployment(s)/statefulset(s)
+##
+diagnosticMode:
+  ## @param diagnosticMode.enabled Enable diagnostic mode (all probes will be disabled and the command will be overridden)
+  ##
+  enabled: false
+  ## @param diagnosticMode.command Command to override all containers in the the deployment(s)/statefulset(s)
+  ##
+  command:
+    - sleep
+  ## @param diagnosticMode.args Args to override all containers in the the deployment(s)/statefulset(s)
+  ##
+  args:
+    - infinity
+## @section NGINX parameters
+
+## Bitnami NGINX image version
+## ref: https://hub.docker.com/r/bitnami/nginx/tags/
+## @param image.registry [default: REGISTRY_NAME] NGINX image registry
+## @param image.repository [default: REPOSITORY_NAME/nginx] NGINX image repository
+## @skip image.tag NGINX image tag (immutable tags are recommended)
+## @param image.digest NGINX image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag
+## @param image.pullPolicy NGINX image pull policy
+## @param image.pullSecrets Specify docker-registry secret names as an array
+## @param image.debug Set to true if you would like to see extra information on logs
+##
+image:
+  registry: docker.io
+  repository: bitnami/nginx
+  tag: 1.27.3-debian-12-r5
+  digest: ""
+  ## Specify a imagePullPolicy
+  ## ref: https://kubernetes.io/docs/concepts/containers/images/#pre-pulled-images
+  ##
+  pullPolicy: IfNotPresent
+  ## Optionally specify an array of imagePullSecrets.
+  ## Secrets must be manually created in the namespace.
+  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
+  ## E.g.:
+  ## pullSecrets:
+  ##   - myRegistryKeySecretName
+  ##
+  pullSecrets: []
+  ## Set to true if you would like to see extra information on logs
+  ##
+  debug: false
+## @param automountServiceAccountToken Mount Service Account token in pod
+##
+automountServiceAccountToken: false
+## @param hostAliases Deployment pod host aliases
+## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/
+##
+hostAliases: []
+## Command and args for running the container (set to default if not set). Use array form
+## @param command Override default container command (useful when using custom images)
+## @param args Override default container args (useful when using custom images)
+##
+command: []
+args: []
+## @param extraEnvVars Extra environment variables to be set on NGINX containers
+## E.g:
+## extraEnvVars:
+##   - name: FOO
+##     value: BAR
+##
+extraEnvVars: []
+## @param extraEnvVarsCM ConfigMap with extra environment variables
+##
+extraEnvVarsCM: ""
+## @param extraEnvVarsSecret Secret with extra environment variables
+##
+extraEnvVarsSecret: ""
+## @section NGINX deployment parameters
+
+## @param replicaCount Number of NGINX replicas to deploy
+##
+replicaCount: 1
+## @param revisionHistoryLimit The number of old history to retain to allow rollback
+##
+revisionHistoryLimit: 1
+## @param updateStrategy.type NGINX deployment strategy type
+## @param updateStrategy.rollingUpdate NGINX deployment rolling update configuration parameters
+## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy
+##
+updateStrategy:
+  type: RollingUpdate
+  rollingUpdate: {}
+## @param podLabels Additional labels for NGINX pods
+## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
+##
+podLabels: {}
+## @param podAnnotations Annotations for NGINX pods
+## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
+##
+podAnnotations: {}
+## @param podAffinityPreset Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`
+## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
+##
+podAffinityPreset: ""
+## @param podAntiAffinityPreset Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`
+## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
+##
+podAntiAffinityPreset: soft
+## Node affinity preset
+## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity
+##
+nodeAffinityPreset:
+  ## @param nodeAffinityPreset.type Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard`
+  ##
+  type: ""
+  ## @param nodeAffinityPreset.key Node label key to match Ignored if `affinity` is set.
+  ## E.g.
+  ## key: "kubernetes.io/e2e-az-name"
+  ##
+  key: ""
+  ## @param nodeAffinityPreset.values Node label values to match. Ignored if `affinity` is set.
+  ## E.g.
+  ## values:
+  ##   - e2e-az1
+  ##   - e2e-az2
+  ##
+  values: []
+## @param affinity Affinity for pod assignment
+## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
+## Note: podAffinityPreset, podAntiAffinityPreset, and  nodeAffinityPreset will be ignored when it's set
+##
+affinity: {}
+## @param hostNetwork Specify if host network should be enabled for NGINX pod
+##
+hostNetwork: false
+## @param hostIPC Specify if host IPC should be enabled for NGINX pod
+##
+hostIPC: false
+## DNS-Pod services
+## Ref: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/
+## @param dnsPolicy Specifies the DNS policy for the NGINX pod
+## DNS policies can be set on a per-Pod basis. Currently Kubernetes supports the following Pod-specific DNS policies.
+## Available options: Default, ClusterFirst, ClusterFirstWithHostNet, None
+## Ref: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-s-dns-policy
+dnsPolicy: ""
+## @param dnsConfig  Allows users more control on the DNS settings for a Pod. Required if `dnsPolicy` is set to `None`
+## The dnsConfig field is optional and it can work with any dnsPolicy settings.
+## Ref: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-dns-config
+## E.g.
+## dnsConfig:
+##   nameservers:
+##     - 192.0.2.1 # this is an example
+##   searches:
+##     - ns1.svc.cluster-domain.example
+##     - my.dns.search.suffix
+##   options:
+##     - name: ndots
+##       value: "2"
+##     - name: edns0
+dnsConfig: {}
+## @param nodeSelector Node labels for pod assignment. Evaluated as a template.
+## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
+##
+nodeSelector: {}
+## @param tolerations Tolerations for pod assignment. Evaluated as a template.
+## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
+##
+tolerations: []
+## @param priorityClassName NGINX pods' priorityClassName
+##
+priorityClassName: ""
+## @param schedulerName Name of the k8s scheduler (other than default)
+## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/
+##
+schedulerName: ""
+## @param terminationGracePeriodSeconds In seconds, time the given to the NGINX pod needs to terminate gracefully
+## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod/#termination-of-pods
+##
+terminationGracePeriodSeconds: ""
+## @param topologySpreadConstraints Topology Spread Constraints for pod assignment
+## https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
+## The value is evaluated as a template
+##
+topologySpreadConstraints: []
+## TLS settings
+##
+tls:
+  ## @param tls.enabled Enable TLS transport
+  ##
+  enabled: false
+  ## @param tls.autoGenerated Auto-generate self-signed certificates
+  ##
+  autoGenerated: true
+  ## @param tls.existingSecret Name of a secret containing the certificates
+  ##
+  existingSecret: ""
+  ## @param tls.certFilename Path of the certificate file when mounted as a secret
+  ##
+  certFilename: tls.crt
+  ## @param tls.certKeyFilename Path of the certificate key file when mounted as a secret
+  ##
+  certKeyFilename: tls.key
+  ## @param tls.certCAFilename Path of the certificate CA file when mounted as a secret
+  ##
+  certCAFilename: ca.crt
+  ## @param tls.cert Content of the certificate to be added to the secret
+  ##
+  cert: ""
+  ## @param tls.key Content of the certificate key to be added to the secret
+  ##
+  key: ""
+  ## @param tls.ca Content of the certificate CA to be added to the secret
+  ##
+  ca: ""
+## NGINX pods' Security Context.
+## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod
+## @param podSecurityContext.enabled Enabled NGINX pods' Security Context
+## @param podSecurityContext.fsGroupChangePolicy Set filesystem group change policy
+## @param podSecurityContext.supplementalGroups Set filesystem extra groups
+## @param podSecurityContext.fsGroup Set NGINX pod's Security Context fsGroup
+## @param podSecurityContext.sysctls sysctl settings of the NGINX pods
+##
+podSecurityContext:
+  enabled: true
+  fsGroupChangePolicy: Always
+  supplementalGroups: []
+  fsGroup: 1001
+  ## sysctl settings
+  ## Example:
+  ## sysctls:
+  ## - name: net.core.somaxconn
+  ##   value: "10000"
+  ##
+  sysctls: []
+## NGINX containers' Security Context.
+## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container
+## @param containerSecurityContext.enabled Enabled containers' Security Context
+## @param containerSecurityContext.seLinuxOptions [object,nullable] Set SELinux options in container
+## @param containerSecurityContext.runAsUser Set containers' Security Context runAsUser
+## @param containerSecurityContext.runAsGroup Set containers' Security Context runAsGroup
+## @param containerSecurityContext.runAsNonRoot Set container's Security Context runAsNonRoot
+## @param containerSecurityContext.privileged Set container's Security Context privileged
+## @param containerSecurityContext.readOnlyRootFilesystem Set container's Security Context readOnlyRootFilesystem
+## @param containerSecurityContext.allowPrivilegeEscalation Set container's Security Context allowPrivilegeEscalation
+## @param containerSecurityContext.capabilities.drop List of capabilities to be dropped
+## @param containerSecurityContext.seccompProfile.type Set container's Security Context seccomp profile
+##
+containerSecurityContext:
+  enabled: true
+  seLinuxOptions: {}
+  runAsUser: 1001
+  runAsGroup: 1001
+  runAsNonRoot: true
+  privileged: false
+  readOnlyRootFilesystem: true
+  allowPrivilegeEscalation: false
+  capabilities:
+    drop: ["ALL"]
+  seccompProfile:
+    type: "RuntimeDefault"
+## Configures the ports NGINX listens on
+## @param containerPorts.http Sets http port inside NGINX container
+## @param containerPorts.https Sets https port inside NGINX container
+##
+containerPorts:
+  http: 8080
+  https: 8443
+## @param extraContainerPorts Array of additional container ports for the Nginx container
+## e.g:
+## extraContainerPorts:
+##   - name: grpc
+##     containerPort: 4317
+##
+extraContainerPorts: []
+## NGINX containers' resource requests and limits
+## ref: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
+## We usually recommend not to specify default resources and to leave this as a conscious
+## choice for the user. This also increases chances charts run on environments with little
+## resources, such as Minikube. If you do want to specify resources, uncomment the following
+## lines, adjust them as necessary, and remove the curly braces after 'resources:'.
+## @param resourcesPreset Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if resources is set (resources is recommended for production).
+## More information: https://github.com/bitnami/charts/blob/main/bitnami/common/templates/_resources.tpl#L15
+##
+resourcesPreset: "nano"
+## @param resources Set container requests and limits for different resources like CPU or memory (essential for production workloads)
+## Example:
+## resources:
+##   requests:
+##     cpu: 2
+##     memory: 512Mi
+##   limits:
+##     cpu: 3
+##     memory: 1024Mi
+##
+resources: {}
+## NGINX containers' lifecycleHooks
+## ref: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/
+## ref: https://kubernetes.io/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/
+## If you do want to specify lifecycleHooks, uncomment the following
+## lines, adjust them as necessary, and remove the curly braces on 'lifecycle:{}'.
+## @param lifecycleHooks Optional lifecycleHooks for the NGINX container
+lifecycleHooks: {}
+## Example:
+## postStart:
+##   exec:
+##     command: ["/bin/sh", "-c", "echo Hello from the postStart handler > /usr/share/message"]
+## Example:
+## preStop:
+##   exec:
+##     command: ["/bin/sleep", "20"]
+##     command: ["/bin/sh","-c","nginx -s quit; while killall -0 nginx; do sleep 1; done"]
+
+## NGINX containers' startup probe.
+## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
+## @param startupProbe.enabled Enable startupProbe
+## @param startupProbe.initialDelaySeconds Initial delay seconds for startupProbe
+## @param startupProbe.periodSeconds Period seconds for startupProbe
+## @param startupProbe.timeoutSeconds Timeout seconds for startupProbe
+## @param startupProbe.failureThreshold Failure threshold for startupProbe
+## @param startupProbe.successThreshold Success threshold for startupProbe
+##
+startupProbe:
+  enabled: false
+  initialDelaySeconds: 30
+  timeoutSeconds: 5
+  periodSeconds: 10
+  failureThreshold: 6
+  successThreshold: 1
+## NGINX containers' liveness probe.
+## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
+## @param livenessProbe.enabled Enable livenessProbe
+## @param livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe
+## @param livenessProbe.periodSeconds Period seconds for livenessProbe
+## @param livenessProbe.timeoutSeconds Timeout seconds for livenessProbe
+## @param livenessProbe.failureThreshold Failure threshold for livenessProbe
+## @param livenessProbe.successThreshold Success threshold for livenessProbe
+##
+livenessProbe:
+  enabled: true
+  initialDelaySeconds: 30
+  timeoutSeconds: 5
+  periodSeconds: 10
+  failureThreshold: 6
+  successThreshold: 1
+## NGINX containers' readiness probe.
+## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
+## @param readinessProbe.enabled Enable readinessProbe
+## @param readinessProbe.path Request path for livenessProbe
+## @param readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe
+## @param readinessProbe.periodSeconds Period seconds for readinessProbe
+## @param readinessProbe.timeoutSeconds Timeout seconds for readinessProbe
+## @param readinessProbe.failureThreshold Failure threshold for readinessProbe
+## @param readinessProbe.successThreshold Success threshold for readinessProbe
+##
+readinessProbe:
+  enabled: true
+  path: /
+  initialDelaySeconds: 5
+  timeoutSeconds: 3
+  periodSeconds: 5
+  failureThreshold: 3
+  successThreshold: 1
+## @param customStartupProbe Custom liveness probe for the Web component
+##
+customStartupProbe: {}
+## @param customLivenessProbe Override default liveness probe
+##
+customLivenessProbe: {}
+## @param customReadinessProbe Override default readiness probe
+##
+customReadinessProbe: {}
+## Autoscaling parameters
+## @param autoscaling.enabled Enable autoscaling for NGINX deployment
+## @param autoscaling.minReplicas Minimum number of replicas to scale back
+## @param autoscaling.maxReplicas Maximum number of replicas to scale out
+## @param autoscaling.targetCPU Target CPU utilization percentage
+## @param autoscaling.targetMemory Target Memory utilization percentage
+##
+autoscaling:
+  enabled: false
+  minReplicas: ""
+  maxReplicas: ""
+  targetCPU: ""
+  targetMemory: ""
+## @param extraVolumes Array to add extra volumes
+##
+extraVolumes: []
+## @param extraVolumeMounts Array to add extra mount
+##
+extraVolumeMounts: []
+## Pods Service Account
+## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
+##
+serviceAccount:
+  ## @param serviceAccount.create Enable creation of ServiceAccount for nginx pod
+  ##
+  create: true
+  ## @param serviceAccount.name The name of the ServiceAccount to use.
+  ## If not set and create is true, a name is generated using the `common.names.fullname` template
+  name: ""
+  ## @param serviceAccount.annotations Annotations for service account. Evaluated as a template.
+  ## Only used if `create` is `true`.
+  ##
+  annotations: {}
+  ## @param serviceAccount.automountServiceAccountToken Auto-mount the service account token in the pod
+  ##
+  automountServiceAccountToken: false
+## @param sidecars Sidecar parameters
+## e.g:
+## sidecars:
+##   - name: your-image-name
+##     image: your-image
+##     imagePullPolicy: Always
+##     ports:
+##       - name: portname
+##         containerPort: 1234
+##
+sidecars: []
+## @param sidecarSingleProcessNamespace Enable sharing the process namespace with sidecars
+## This will switch pod.spec.shareProcessNamespace parameter
+##
+sidecarSingleProcessNamespace: false
+## @param initContainers Extra init containers
+##
+initContainers: []
+## Pod Disruption Budget configuration
+## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
+##
+pdb:
+  ## @param pdb.create Created a PodDisruptionBudget
+  ##
+  create: true
+  ## @param pdb.minAvailable Min number of pods that must still be available after the eviction.
+  ## You can specify an integer or a percentage by setting the value to a string representation of a percentage (eg. "50%"). It will be disabled if set to 0
+  ##
+  minAvailable: ""
+  ## @param pdb.maxUnavailable Max number of pods that can be unavailable after the eviction.
+  ## You can specify an integer or a percentage by setting the value to a string representation of a percentage (eg. "50%"). It will be disabled if set to 0. Defaults to `1` if both `pdb.minAvailable` and `pdb.maxUnavailable` are empty.
+  ##
+  maxUnavailable: ""
+## @section Custom NGINX application parameters
+
+## Get the server static content from a git repository
+## NOTE: This will override staticSiteConfigmap and staticSitePVC
+##
+cloneStaticSiteFromGit:
+  ## @param cloneStaticSiteFromGit.enabled Get the server static content from a Git repository
+  ##
+  enabled: false
+  ## Bitnami Git image version
+  ## ref: https://hub.docker.com/r/bitnami/git/tags/
+  ## @param cloneStaticSiteFromGit.image.registry [default: REGISTRY_NAME] Git image registry
+  ## @param cloneStaticSiteFromGit.image.repository [default: REPOSITORY_NAME/git] Git image repository
+  ## @skip cloneStaticSiteFromGit.image.tag Git image tag (immutable tags are recommended)
+  ## @param cloneStaticSiteFromGit.image.digest Git image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag
+  ## @param cloneStaticSiteFromGit.image.pullPolicy Git image pull policy
+  ## @param cloneStaticSiteFromGit.image.pullSecrets Specify docker-registry secret names as an array
+  ##
+  image:
+    registry: docker.io
+    repository: bitnami/git
+    tag: 2.48.0-debian-12-r0
+    digest: ""
+    ## Specify a imagePullPolicy
+    ## ref: https://kubernetes.io/docs/concepts/containers/images/#pre-pulled-images
+    ##
+    pullPolicy: IfNotPresent
+    ## Optionally specify an array of imagePullSecrets.
+    ## Secrets must be manually created in the namespace.
+    ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
+    ## e.g:
+    ## pullSecrets:
+    ##   - myRegistryKeySecretName
+    ##
+    pullSecrets: []
+  ## @param cloneStaticSiteFromGit.repository Git Repository to clone static content from
+  ##
+  repository: ""
+  ## @param cloneStaticSiteFromGit.branch Git branch to checkout
+  ##
+  branch: ""
+  ## @param cloneStaticSiteFromGit.interval Interval for sidecar container pull from the Git repository
+  ##
+  interval: 60
+  ## Additional configuration for git-clone-repository initContainer
+  ##
+  gitClone:
+    ## @param cloneStaticSiteFromGit.gitClone.command Override default container command for git-clone-repository
+    ##
+    command: []
+    ## @param cloneStaticSiteFromGit.gitClone.args Override default container args for git-clone-repository
+    ##
+    args: []
+  ## Additional configuration for the git-repo-syncer container
+  ##
+  gitSync:
+    ## @param cloneStaticSiteFromGit.gitSync.command Override default container command for git-repo-syncer
+    ##
+    command: []
+    ## @param cloneStaticSiteFromGit.gitSync.args Override default container args for git-repo-syncer
+    ##
+    args: []
+    ## git-repo-syncer resource requests and limits
+    ## ref: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
+    ## @param cloneStaticSiteFromGit.gitSync.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if cloneStaticSiteFromGit.gitSync.resources is set (cloneStaticSiteFromGit.gitSync.resources is recommended for production).
+    ## More information: https://github.com/bitnami/charts/blob/main/bitnami/common/templates/_resources.tpl#L15
+    ##
+    resourcesPreset: "nano"
+    ## @param cloneStaticSiteFromGit.gitSync.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads)
+    ## Example:
+    ## resources:
+    ##   requests:
+    ##     cpu: 2
+    ##     memory: 512Mi
+    ##   limits:
+    ##     cpu: 3
+    ##     memory: 1024Mi
+    ##
+    resources: {}
+  ## @param cloneStaticSiteFromGit.extraEnvVars Additional environment variables to set for the in the containers that clone static site from git
+  ## E.g:
+  ## extraEnvVars:
+  ##   - name: FOO
+  ##     value: BAR
+  ##
+  extraEnvVars: []
+  ## @param cloneStaticSiteFromGit.extraEnvVarsSecret Secret with extra environment variables
+  ##
+  extraEnvVarsSecret: ""
+  ## @param cloneStaticSiteFromGit.extraVolumeMounts Add extra volume mounts for the Git containers
+  ## Useful to mount keys to connect through ssh. (normally used with extraVolumes)
+  ## E.g:
+  ## extraVolumeMounts:
+  ##   - name: ssh-dir
+  ##     mountPath: /root/.ssh/
+  ##
+  extraVolumeMounts: []
+## @param serverBlock Custom server block to be added to NGINX configuration
+## PHP-FPM example server block:
+## serverBlock: |-
+##   server {
+##     listen 0.0.0.0:8080;
+##     root /app;
+##     location / {
+##       index index.html index.php;
+##     }
+##     location ~ \.php$ {
+##       fastcgi_pass phpfpm-server:9000;
+##       fastcgi_index index.php;
+##       include fastcgi.conf;
+##     }
+##   }
+##
+serverBlock: ""
+## @param streamServerBlock Custom stream server block to be added to NGINX configuration
+## streamServerBlock: |-
+##   server {
+##     listen 0.0.0.0:8080 udp;
+##     proxy_pass localhost:9000;
+##   }
+##
+streamServerBlock: ""
+## @param existingServerBlockConfigmap ConfigMap with custom server block to be added to NGINX configuration
+## NOTE: This will override serverBlock
+##
+existingServerBlockConfigmap: ""
+## @param existingStreamServerBlockConfigmap ConfigMap with custom stream server block to be added to NGINX configuration
+## NOTE: This will override streamServerBlock
+##
+existingStreamServerBlockConfigmap: ""
+## @param staticSiteConfigmap Name of existing ConfigMap with the server static site content
+##
+staticSiteConfigmap: ""
+## @param staticSitePVC Name of existing PVC with the server static site content
+## NOTE: This will override staticSiteConfigmap
+##
+staticSitePVC: ""
+## @section Traffic Exposure parameters
+
+## NGINX Service properties
+##
+service:
+  ## @param service.type Service type
+  ##
+  type: ClusterIP
+  ## @param service.ports.http Service HTTP port
+  ## @param service.ports.https Service HTTPS port
+  ##
+  ports:
+    http: 80
+    https: 443
+  ##
+  ## @param service.nodePorts [object] Specify the nodePort(s) value(s) for the LoadBalancer and NodePort service types.
+  ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
+  ##
+  nodePorts:
+    http: ""
+    https: ""
+  ## @param service.targetPort [object] Target port reference value for the Loadbalancer service types can be specified explicitly.
+  ## Listeners for the Loadbalancer can be custom mapped to the http or https service.
+  ## Example: Mapping the https listener to targetPort http [http: https]
+  ##
+  targetPort:
+    http: http
+    https: https
+  ## @param service.clusterIP NGINX service Cluster IP
+  ## e.g.:
+  ## clusterIP: None
+  ##
+  clusterIP: ""
+  ## @param service.loadBalancerIP LoadBalancer service IP address
+  ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer
+  ##
+  loadBalancerIP: ""
+  ## @param service.loadBalancerSourceRanges NGINX service Load Balancer sources
+  ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service
+  ## e.g:
+  ## loadBalancerSourceRanges:
+  ##   - 10.10.10.0/24
+  ##
+  loadBalancerSourceRanges: []
+  ## @param service.loadBalancerClass service Load Balancer class if service type is `LoadBalancer` (optional, cloud specific)
+  ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-loadbalancer
+  ##
+  loadBalancerClass: ""
+  ## @param service.extraPorts Extra ports to expose (normally used with the `sidecar` value)
+  ##
+  extraPorts: []
+  ## @param service.sessionAffinity Session Affinity for Kubernetes service, can be "None" or "ClientIP"
+  ## If "ClientIP", consecutive client requests will be directed to the same Pod
+  ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
+  ##
+  sessionAffinity: None
+  ## @param service.sessionAffinityConfig Additional settings for the sessionAffinity
+  ## sessionAffinityConfig:
+  ##   clientIP:
+  ##     timeoutSeconds: 300
+  ##
+  sessionAffinityConfig: {}
+  ## @param service.annotations Service annotations
+  ## This can be used to set the LoadBalancer service type to internal only.
+  ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer
+  ##
+  annotations: {}
+  ## @param service.externalTrafficPolicy Enable client source IP preservation
+  ## ref https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip
+  ##
+  externalTrafficPolicy: Cluster
+## Network Policies
+## Ref: https://kubernetes.io/docs/concepts/services-networking/network-policies/
+##
+networkPolicy:
+  ## @param networkPolicy.enabled Specifies whether a NetworkPolicy should be created
+  ##
+  enabled: true
+  ## @param networkPolicy.allowExternal Don't require server label for connections
+  ## The Policy model to apply. When set to false, only pods with the correct
+  ## server label will have network access to the ports server is listening
+  ## on. When true, server will accept connections from any source
+  ## (with the correct destination port).
+  ##
+  allowExternal: true
+  ## @param networkPolicy.allowExternalEgress Allow the pod to access any range of port and all destinations.
+  ##
+  allowExternalEgress: true
+  ## @param networkPolicy.extraIngress [array] Add extra ingress rules to the NetworkPolicy
+  ## e.g:
+  ## extraIngress:
+  ##   - ports:
+  ##       - port: 1234
+  ##     from:
+  ##       - podSelector:
+  ##           - matchLabels:
+  ##               - role: frontend
+  ##       - podSelector:
+  ##           - matchExpressions:
+  ##               - key: role
+  ##                 operator: In
+  ##                 values:
+  ##                   - frontend
+  extraIngress: []
+  ## @param networkPolicy.extraEgress [array] Add extra ingress rules to the NetworkPolicy (ignored if allowExternalEgress=true)
+  ## e.g:
+  ## extraEgress:
+  ##   - ports:
+  ##       - port: 1234
+  ##     to:
+  ##       - podSelector:
+  ##           - matchLabels:
+  ##               - role: frontend
+  ##       - podSelector:
+  ##           - matchExpressions:
+  ##               - key: role
+  ##                 operator: In
+  ##                 values:
+  ##                   - frontend
+  ##
+  extraEgress: []
+  ## @param networkPolicy.ingressNSMatchLabels [object] Labels to match to allow traffic from other namespaces
+  ## @param networkPolicy.ingressNSPodMatchLabels [object] Pod labels to match to allow traffic from other namespaces
+  ##
+  ingressNSMatchLabels: {}
+  ingressNSPodMatchLabels: {}
+## Configure the ingress resource that allows you to access the
+## Nginx installation. Set up the URL
+## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/
+##
+ingress:
+  ## @param ingress.enabled Set to true to enable ingress record generation
+  ##
+  enabled: false
+  ## @param ingress.selfSigned Create a TLS secret for this ingress record using self-signed certificates generated by Helm
+  ##
+  selfSigned: false
+  ## @param ingress.pathType Ingress path type
+  ##
+  pathType: ImplementationSpecific
+  ## @param ingress.apiVersion Force Ingress API version (automatically detected if not set)
+  ##
+  apiVersion: ""
+  ## @param ingress.hostname Default host for the ingress resource
+  ##
+  hostname: nginx.local
+  ## @param ingress.path The Path to Nginx. You may need to set this to '/*' in order to use this with ALB ingress controllers.
+  ##
+  path: /
+  ## @param ingress.annotations Additional annotations for the Ingress resource. To enable certificate autogeneration, place here your cert-manager annotations.
+  ## For a full list of possible ingress annotations, please see
+  ## ref: https://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/nginx-configuration/annotations.md
+  ## Use this parameter to set the required annotations for cert-manager, see
+  ## ref: https://cert-manager.io/docs/usage/ingress/#supported-annotations
+  ##
+  ## e.g:
+  ## annotations:
+  ##   kubernetes.io/ingress.class: nginx
+  ##   cert-manager.io/cluster-issuer: cluster-issuer-name
+  ##
+  annotations: {}
+  ## @param ingress.ingressClassName Set the ingerssClassName on the ingress record for k8s 1.18+
+  ## This is supported in Kubernetes 1.18+ and required if you have more than one IngressClass marked as the default for your cluster .
+  ## ref: https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/
+  ##
+  ingressClassName: ""
+  ## @param ingress.tls Create TLS Secret
+  ## TLS certificates will be retrieved from a TLS secret with name: {{- printf "%s-tls" .Values.ingress.hostname }}
+  ## You can use the ingress.secrets parameter to create this TLS secret or relay on cert-manager to create it
+  ##
+  tls: false
+  ## @param ingress.tlsWwwPrefix Adds www subdomain to default cert
+  ## Creates tls host with ingress.hostname: {{ print "www.%s" .Values.ingress.hostname }}
+  ## Is enabled if "nginx.ingress.kubernetes.io/from-to-www-redirect" is "true"
+  tlsWwwPrefix: false
+  ## @param ingress.extraHosts The list of additional hostnames to be covered with this ingress record.
+  ## Most likely the hostname above will be enough, but in the event more hosts are needed, this is an array
+  ## extraHosts:
+  ## - name: nginx.local
+  ##   path: /
+  ##
+  extraHosts: []
+  ## @param ingress.extraPaths Any additional arbitrary paths that may need to be added to the ingress under the main host.
+  ## For example: The ALB ingress controller requires a special rule for handling SSL redirection.
+  ## extraPaths:
+  ## - path: /*
+  ##   backend:
+  ##     serviceName: ssl-redirect
+  ##     servicePort: use-annotation
+  ##
+  extraPaths: []
+  ## @param ingress.extraTls The tls configuration for additional hostnames to be covered with this ingress record.
+  ## see: https://kubernetes.io/docs/concepts/services-networking/ingress/#tls
+  ## extraTls:
+  ## - hosts:
+  ##     - nginx.local
+  ##   secretName: nginx.local-tls
+  ##
+  extraTls: []
+  ## @param ingress.secrets If you're providing your own certificates, please use this to add the certificates as secrets
+  ## key and certificate should start with -----BEGIN CERTIFICATE----- or
+  ## -----BEGIN RSA PRIVATE KEY-----
+  ##
+  ## name should line up with a tlsSecret set further up
+  ## If you're using cert-manager, this is unneeded, as it will create the secret for you if it is not set
+  ##
+  ## It is also possible to create and manage the certificates outside of this helm chart
+  ## Please see README.md for more information
+  ## e.g:
+  ## - name: nginx.local-tls
+  ##   key:
+  ##   certificate:
+  ##
+  secrets: []
+  ## @param ingress.extraRules The list of additional rules to be added to this ingress record. Evaluated as a template
+  ## Useful when looking for additional customization, such as using different backend
+  ##
+  extraRules: []
+## Health Ingress parameters
+##
+healthIngress:
+  ## @param healthIngress.enabled Set to true to enable health ingress record generation
+  ##
+  enabled: false
+  ## @param healthIngress.selfSigned Create a TLS secret for this ingress record using self-signed certificates generated by Helm
+  ##
+  selfSigned: false
+  ## @param healthIngress.pathType Ingress path type
+  ##
+  pathType: ImplementationSpecific
+  ## @param healthIngress.hostname When the health ingress is enabled, a host pointing to this will be created
+  ##
+  hostname: example.local
+  ## @param healthIngress.path Default path for the ingress record
+  ## NOTE: You may need to set this to '/*' in order to use this with ALB ingress controllers
+  ##
+  path: /
+  ## @param healthIngress.annotations Additional annotations for the Ingress resource. To enable certificate autogeneration, place here your cert-manager annotations.
+  ## For a full list of possible ingress annotations, please see
+  ## ref: https://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/nginx-configuration/annotations.md
+  ## Use this parameter to set the required annotations for cert-manager, see
+  ## ref: https://cert-manager.io/docs/usage/ingress/#supported-annotations
+  ##
+  ## e.g:
+  ## annotations:
+  ##   kubernetes.io/ingress.class: nginx
+  ##   cert-manager.io/cluster-issuer: cluster-issuer-name
+  ##
+  annotations: {}
+  ## @param healthIngress.tls Enable TLS configuration for the hostname defined at `healthIngress.hostname` parameter
+  ## TLS certificates will be retrieved from a TLS secret with name: {{- printf "%s-tls" .Values.healthIngress.hostname }}
+  ## You can use the healthIngress.secrets parameter to create this TLS secret, relay on cert-manager to create it, or
+  ## let the chart create self-signed certificates for you
+  ##
+  tls: false
+  ## @param healthIngress.extraHosts An array with additional hostname(s) to be covered with the ingress record
+  ## e.g:
+  ## extraHosts:
+  ##   - name: example.local
+  ##     path: /
+  ##
+  extraHosts: []
+  ## @param healthIngress.extraPaths An array with additional arbitrary paths that may need to be added to the ingress under the main host
+  ## e.g:
+  ## extraPaths:
+  ## - path: /*
+  ##   backend:
+  ##     serviceName: ssl-redirect
+  ##     servicePort: use-annotation
+  ##
+  extraPaths: []
+  ## @param healthIngress.extraTls TLS configuration for additional hostnames to be covered
+  ## see: https://kubernetes.io/docs/concepts/services-networking/ingress/#tls
+  ## E.g.
+  ## extraTls:
+  ##   - hosts:
+  ##       - example.local
+  ##     secretName: example.local-tls
+  ##
+  extraTls: []
+  ## @param healthIngress.secrets TLS Secret configuration
+  ## If you're providing your own certificates, please use this to add the certificates as secrets
+  ## key and certificate should start with -----BEGIN CERTIFICATE----- or -----BEGIN RSA PRIVATE KEY-----
+  ## name should line up with a secretName set further up
+  ## If it is not set and you're using cert-manager, this is unneeded, as it will create the secret for you
+  ## If it is not set and you're NOT using cert-manager either, self-signed certificates will be created
+  ## It is also possible to create and manage the certificates outside of this helm chart
+  ## Please see README.md for more information
+  ##
+  ## E.g.
+  ## secrets:
+  ##   - name: example.local-tls
+  ##     key:
+  ##     certificate:
+  ##
+  secrets: []
+  ## @param healthIngress.ingressClassName IngressClass that will be be used to implement the Ingress (Kubernetes 1.18+)
+  ## This is supported in Kubernetes 1.18+ and required if you have more than one IngressClass marked as the default for your cluster .
+  ## ref: https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/
+  ##
+  ingressClassName: ""
+  ## @param healthIngress.extraRules The list of additional rules to be added to this ingress record. Evaluated as a template
+  ## Useful when looking for additional customization, such as using different backend
+  ##
+  extraRules: []
+## @section Metrics parameters
+
+## Prometheus Exporter / Metrics
+##
+metrics:
+  ## @param metrics.enabled Start a Prometheus exporter sidecar container
+  ##
+  enabled: false
+  ## Bitnami NGINX Prometheus Exporter image
+  ## ref: https://hub.docker.com/r/bitnami/nginx-exporter/tags/
+  ## @param metrics.image.registry [default: REGISTRY_NAME] NGINX Prometheus exporter image registry
+  ## @param metrics.image.repository [default: REPOSITORY_NAME/nginx-exporter] NGINX Prometheus exporter image repository
+  ## @skip metrics.image.tag NGINX Prometheus exporter image tag (immutable tags are recommended)
+  ## @param metrics.image.digest NGINX Prometheus exporter image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag
+  ## @param metrics.image.pullPolicy NGINX Prometheus exporter image pull policy
+  ## @param metrics.image.pullSecrets Specify docker-registry secret names as an array
+  ##
+  image:
+    registry: docker.io
+    repository: bitnami/nginx-exporter
+    tag: 1.4.1-debian-12-r0
+    digest: ""
+    pullPolicy: IfNotPresent
+    ## Optionally specify an array of imagePullSecrets.
+    ## Secrets must be manually created in the namespace.
+    ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
+    ## e.g:
+    ## pullSecrets:
+    ##   - myRegistryKeySecretName
+    ##
+    pullSecrets: []
+  ## @param metrics.port NGINX Container Status Port scraped by Prometheus Exporter
+  ## Defaults to specified http port
+  ##
+  port: ""
+  ## @param metrics.extraArgs Extra arguments for Prometheus exporter
+  ## e.g:
+  ## extraArgs:
+  ##   - --nginx.timeout
+  ##   - 5s
+  ##
+  extraArgs: []
+  ## @param metrics.containerPorts.metrics Prometheus exporter container port
+  ##
+  containerPorts:
+    metrics: 9113
+  ## @param metrics.podAnnotations Additional annotations for NGINX Prometheus exporter pod(s)
+  ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
+  ##
+  podAnnotations: {}
+  ## Container Security Context
+  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
+  ## @param metrics.securityContext.enabled Enabled NGINX Exporter containers' Security Context
+  ## @param metrics.securityContext.seLinuxOptions [object,nullable] Set SELinux options in container
+  ## @param metrics.securityContext.runAsUser Set NGINX Exporter container's Security Context runAsUser
+  ##
+  securityContext:
+    enabled: false
+    seLinuxOptions: {}
+    runAsUser: 1001
+  ## Prometheus exporter service parameters
+  ##
+  service:
+    ## @param metrics.service.port NGINX Prometheus exporter service port
+    ##
+    port: 9113
+    ## @param metrics.service.annotations [object] Annotations for the Prometheus exporter service
+    ##
+    annotations:
+      prometheus.io/scrape: "true"
+      prometheus.io/port: "{{ .Values.metrics.service.port }}"
+  ## NGINX Prometheus exporter resource requests and limits
+  ## ref: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
+  ## We usually recommend not to specify default resources and to leave this as a conscious
+  ## choice for the user. This also increases chances charts run on environments with little
+  ## resources, such as Minikube. If you do want to specify resources, uncomment the following
+  ## lines, adjust them as necessary, and remove the curly braces after 'resources:'.
+  ## @param metrics.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if metrics.resources is set (metrics.resources is recommended for production).
+  ## More information: https://github.com/bitnami/charts/blob/main/bitnami/common/templates/_resources.tpl#L15
+  ##
+  resourcesPreset: "nano"
+  ## @param metrics.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads)
+  ## Example:
+  ## resources:
+  ##   requests:
+  ##     cpu: 2
+  ##     memory: 512Mi
+  ##   limits:
+  ##     cpu: 3
+  ##     memory: 1024Mi
+  ##
+  resources: {}
+  ## Prometheus Operator ServiceMonitor configuration
+  ##
+  serviceMonitor:
+    ## @param metrics.serviceMonitor.enabled Creates a Prometheus Operator ServiceMonitor (also requires `metrics.enabled` to be `true`)
+    ##
+    enabled: false
+    ## @param metrics.serviceMonitor.namespace Namespace in which Prometheus is running
+    ##
+    namespace: ""
+    ## @param metrics.serviceMonitor.jobLabel The name of the label on the target service to use as the job name in prometheus.
+    ##
+    jobLabel: ""
+    ## @param metrics.serviceMonitor.interval Interval at which metrics should be scraped.
+    ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint
+    ## e.g:
+    ## interval: 10s
+    ##
+    interval: ""
+    ## @param metrics.serviceMonitor.scrapeTimeout Timeout after which the scrape is ended
+    ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint
+    ## e.g:
+    ## scrapeTimeout: 10s
+    ##
+    scrapeTimeout: ""
+    ## @param metrics.serviceMonitor.selector Prometheus instance selector labels
+    ## ref: https://github.com/bitnami/charts/tree/main/bitnami/prometheus-operator#prometheus-configuration
+    ##
+    ## selector:
+    ##   prometheus: my-prometheus
+    ##
+    selector: {}
+    ## @param metrics.serviceMonitor.labels Additional labels that can be used so PodMonitor will be discovered by Prometheus
+    ##
+    labels: {}
+    ## @param metrics.serviceMonitor.relabelings RelabelConfigs to apply to samples before scraping
+    ##
+    relabelings: []
+    ## @param metrics.serviceMonitor.metricRelabelings MetricRelabelConfigs to apply to samples before ingestion
+    ##
+    metricRelabelings: []
+    ## @param metrics.serviceMonitor.honorLabels honorLabels chooses the metric's labels on collisions with target labels
+    ##
+    honorLabels: false
+  ## Prometheus Operator PrometheusRule configuration
+  ##
+  prometheusRule:
+    ## @param metrics.prometheusRule.enabled if `true`, creates a Prometheus Operator PrometheusRule (also requires `metrics.enabled` to be `true` and `metrics.prometheusRule.rules`)
+    ##
+    enabled: false
+    ## @param metrics.prometheusRule.namespace Namespace for the PrometheusRule Resource (defaults to the Release Namespace)
+    ##
+    namespace: ""
+    ## @param metrics.prometheusRule.additionalLabels Additional labels that can be used so PrometheusRule will be discovered by Prometheus
+    ##
+    additionalLabels: {}
+    ## @param metrics.prometheusRule.rules Prometheus Rule definitions
+    ##   - alert: LowInstance
+    ##     expr: up{service="{{ template "common.names.fullname" . }}"} < 1
+    ##     for: 1m
+    ##     labels:
+    ##       severity: critical
+    ##     annotations:
+    ##       description: Service {{ template "common.names.fullname" . }} Tomcat is down since 1m.
+    ##       summary: Tomcat instance is down.
+    ##
+    rules: []
index f0c1319..0bab41b 100644 (file)
 .project
 .idea/
 *.tmproj
+# Project/CI/CD related items
+.gitlab
+.gitlab-ci.yml
+.dockerignore
+# Helm build files
+.helmignore
+.cache/
+.config/
+.local/
+# OOM specific dirs
+components/
index 81f566f..2f1971c 100644 (file)
@@ -1,5 +1,6 @@
 # Copyright © 2021 Orange
 # Modifications Copyright © 2021 Nordix Foundation
+# Modifications Copyright © 2024 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 apiVersion: v2
 description: Chart for Postgres init job
 name: postgres-init
-version: 13.0.1
-
+version: 13.0.6
 
 dependencies:
   - name: common
     version: ~13.x-0
-    repository: 'file://../common'
+    repository: '@local'
   - name: repositoryGenerator
     version: ~13.x-0
-    repository: 'file://../repositoryGenerator'
+    repository: '@local'
   - name: readinessCheck
     version: ~13.x-0
     repository: '@local'
   - name: serviceAccount
     version: ~13.x-0
-    repository: '@local'
\ No newline at end of file
+    repository: '@local'
index 66c28a0..e6a6744 100644 (file)
@@ -20,10 +20,6 @@ kind: ConfigMap
 metadata:
   name: {{ include "common.fullname" . }}
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 data:
 {{ tpl (.Files.Glob "resources/config/*").AsConfig . | indent 2 }}
index cc7d410..c7b1cb2 100644 (file)
@@ -19,26 +19,21 @@ kind: Job
 metadata:
   name: {{ include "common.fullname" . }}-config-job
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" . | nindent 4 }}
+  {{- if .Values.jobAnnotations }}
+  annotations:  {{- include "common.tplValue" (dict "value" .Values.jobAnnotations "context" $) | nindent 4 }}
+  {{- end }}
 spec:
   backoffLimit: 20
   template:
     metadata:
-      annotations:
-        # Workarround to exclude K8S API from istio communication
-        # as init-container (readinessCheck) does not work with the
-        # Istio CNI plugin, see:
-        # (https://istio.io/latest/docs/setup/additional-setup/cni/#compatibility-with-application-init-containers)
-        traffic.sidecar.istio.io/excludeOutboundPorts: "443"
-      labels:
-        app: {{ include "common.name" . }}
-        release: {{ include "common.release" . }}
+      {{- if .Values.jobPodAnnotations }}
+      annotations:  {{- include "common.tplValue" (dict "value" .Values.jobPodAnnotations "context" $) | nindent 8 }}
+      {{- end }}
+      labels: {{- include "common.labels" . | nindent 8 }}
       name: {{ include "common.name" . }}
     spec:
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
       initContainers: {{ include "common.readinessCheck.waitFor" . | nindent 6 }}
       containers:
       - command:
@@ -82,6 +77,7 @@ spec:
         - mountPath: /config
           name: pgconf
         resources: {{ include "common.resources" . | nindent 10 }}
+        {{ include "common.containerSecurityContext" . | indent 8 | trim }}
       {{ include "common.waitForJobContainer" . | indent 6 | trim }}
       {{- if .Values.nodeSelector }}
       nodeSelector:
@@ -98,6 +94,7 @@ spec:
           name: {{ include "common.fullname" . }}
       - name: pgconf
         emptyDir:
+          sizeLimit: 64Mi
           medium: Memory
       restartPolicy: Never
       {{- include "common.imagePullSecrets" . | nindent 6 }}
index 160e672..103ef04 100644 (file)
@@ -97,6 +97,10 @@ serviceAccount:
   roles:
     - read
 
+securityContext:
+  user_id: 26
+  group_id: 26
+
 readinessCheck:
   wait_for:
     services:
@@ -104,4 +108,26 @@ readinessCheck:
 
 wait_for_job_container:
   containers:
-    - '{{ include "common.name" . }}-update-config'
\ No newline at end of file
+    - '{{ include "common.name" . }}-update-config'
+
+# Annotations to control the execution and deletion of the job
+# Can be used to delete a job before an Upgrade
+#
+# jobAnnotations:
+#   # In case of an ArgoCD deployment this Hook deletes the job before syncing
+#   argocd.argoproj.io/hook: Sync
+#   argocd.argoproj.io/hook-delete-policy: BeforeHookCreation
+#
+#   # In case of an Helm/Flux deployment this Hook deletes the job
+#   # This is what defines this resource as a hook. Without this line, the
+#   # job is considered part of the release.
+#   "helm.sh/hook": "pre-upgrade,pre-rollback,post-install"
+#   "helm.sh/hook-delete-policy": "before-hook-creation"
+#   "helm.sh/hook-weight": "1"
+
+jobPodAnnotations:
+  # Workarround to exclude K8S API from istio communication
+  # as init-container (readinessCheck) does not work with the
+  # Istio CNI plugin, see:
+  # (https://istio.io/latest/docs/setup/additional-setup/cni/#compatibility-with-application-init-containers)
+  traffic.sidecar.istio.io/excludeOutboundPorts: "443"
index f0c1319..0bab41b 100644 (file)
 .project
 .idea/
 *.tmproj
+# Project/CI/CD related items
+.gitlab
+.gitlab-ci.yml
+.dockerignore
+# Helm build files
+.helmignore
+.cache/
+.config/
+.local/
+# OOM specific dirs
+components/
index 3920d8e..562b69f 100644 (file)
@@ -22,7 +22,7 @@ version: 13.1.0
 dependencies:
   - name: common
     version: ~13.x-0
-    repository: 'file://../common'
+    repository: '@local'
   - name: repositoryGenerator
     version: ~13.x-0
-    repository: 'file://../repositoryGenerator'
\ No newline at end of file
+    repository: '@local'
index 580185c..d891840 100644 (file)
@@ -65,4 +65,3 @@
 #local   all         all                               trust
 # IPv4 local connections:
 host    all         all         0.0.0.0/0          md5
-
index 535eefa..7947559 100644 (file)
@@ -15,4 +15,4 @@
 */}}
 {{- if not .Values.global.postgres.useOperator }}
 {{ include "common.postgres.deployment" (dict "dot" . "pgMode" "primary") }}
-{{- end }}
\ No newline at end of file
+{{- end }}
index 97c7e11..246e1e9 100644 (file)
@@ -15,4 +15,4 @@
 */}}
 {{- if not .Values.global.postgres.useOperator }}
 {{ include "common.postgres.deployment" (dict "dot" . "pgMode" "replica") }}
-{{- end }}
\ No newline at end of file
+{{- end }}
index 00a5182..b8d7912 100644 (file)
@@ -35,4 +35,4 @@ spec:
     name: {{ .Values.container.name.primary }}
     release: {{ include "common.release" . }}
 {{- end }}
-{{- end }}
\ No newline at end of file
+{{- end }}
index b8b9e79..6d9990a 100644 (file)
@@ -35,4 +35,4 @@ spec:
     name: {{ .Values.container.name.replica }}
     release: {{ include "common.release" . }}
 {{- end }}
-{{- end }}
\ No newline at end of file
+{{- end }}
index aca6aa2..0dad7f5 100644 (file)
@@ -16,4 +16,4 @@
 
 {{- if .Values.global.postgres.useOperator }}
 {{ include "common.postgresOpInstance" . }}
-{{- end }}
\ No newline at end of file
+{{- end }}
index 8db79d6..9e73ceb 100644 (file)
@@ -38,4 +38,4 @@ spec:
     path: {{ .Values.global.persistence.mountPath | default .Values.persistence.mountPath }}/{{ include "common.release" . }}/{{ .Values.persistence.mountSubPath }}/primary
 {{- end -}}
 {{- end -}}
-{{- end }}
\ No newline at end of file
+{{- end }}
index f59adf7..e71284f 100644 (file)
@@ -43,4 +43,4 @@ spec:
   storageClassName: {{ include "common.storageClass" . }}
 {{- end }}
 {{- end }}
-{{- end }}
\ No newline at end of file
+{{- end }}
index 6869456..878a02e 100644 (file)
@@ -40,4 +40,4 @@ spec:
   selector:
     name: "{{.Values.container.name.replica}}"
     release: {{ include "common.release" . }}
-{{- end }}
\ No newline at end of file
+{{- end }}
index 522e515..3fb716b 100644 (file)
@@ -17,4 +17,4 @@
 {{- if .Values.metrics.serviceMonitor.enabled }}
 {{  include "common.serviceMonitor" . }}
 {{- end }}
-{{- end }}
\ No newline at end of file
+{{- end }}
diff --git a/kubernetes/common/readinessCheck/.helmignore b/kubernetes/common/readinessCheck/.helmignore
new file mode 100644 (file)
index 0000000..0bab41b
--- /dev/null
@@ -0,0 +1,32 @@
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*~
+# Various IDEs
+.project
+.idea/
+*.tmproj
+# Project/CI/CD related items
+.gitlab
+.gitlab-ci.yml
+.dockerignore
+# Helm build files
+.helmignore
+.cache/
+.config/
+.local/
+# OOM specific dirs
+components/
index bb2986a..2214c8a 100644 (file)
 apiVersion: v2
 description: Template used to wait for other deployment/sts/jobs in onap
 name: readinessCheck
-version: 13.1.0
+version: 13.1.4
 
 dependencies:
   - name: common
     version: ~13.x-0
-    repository: 'file://../common'
+    repository: '@local'
   - name: repositoryGenerator
     version: ~13.x-0
-    repository: 'file://../repositoryGenerator'
\ No newline at end of file
+    repository: '@local'
index 51791fe..c09285e 100644 (file)
 {{-   $wait_for := default $initRoot.wait_for .wait_for -}}
 {{-   $containers := index (ternary (dict "containers" $wait_for) $wait_for (kindIs "slice" $wait_for)) "containers" -}}
 {{-   $services := index (ternary (dict) $wait_for (kindIs "slice" $wait_for)) "services" -}}
+{{-   $serviceMeshes := index (ternary (dict) $wait_for (kindIs "slice" $wait_for)) "serviceMeshes" -}}
 {{-   $pods := index (ternary (dict) $wait_for (kindIs "slice" $wait_for)) "pods" -}}
 {{-   $apps := index (ternary (dict) $wait_for (kindIs "slice" $wait_for)) "apps" -}}
 {{-   $namePart := index (ternary (dict) $wait_for (kindIs "slice" $wait_for)) "name" -}}
 {{-   $jobs := index (ternary (dict) $wait_for (kindIs "slice" $wait_for)) "jobs" -}}
+{{-   $timeout := index (ternary (dict) $wait_for (kindIs "slice" $wait_for)) "timeout" -}}
 - name: {{ include "common.name" $dot }}{{ ternary "" (printf "-%s" $namePart) (empty $namePart) }}-readiness
   image: {{ include "repositoryGenerator.image.readiness" $subchartDot }}
   imagePullPolicy: {{ $subchartDot.Values.global.pullPolicy | default $subchartDot.Values.pullPolicy }}
   securityContext:
     runAsUser: {{ $subchartDot.Values.user }}
     runAsGroup: {{ $subchartDot.Values.group }}
+    readOnlyRootFilesystem: true
+    privileged: false
+    allowPrivilegeEscalation: false
+    capabilities:
+      drop:
+        - ALL
+        - CAP_NET_RAW
   command:
   - /app/ready.py
   args:
   - --service-name
   - {{ tpl $service $dot }}
   {{- end }}
+  {{- range $serviceMesh := default (list) $serviceMeshes }}
+  - --service-mesh-check
+  - {{ tpl $serviceMesh $dot }}
+  {{- end }}
   {{- range $app := default (list) $apps }}
   - --app-name
   - {{ tpl $app $dot }}
   - --job-name
   - {{ tpl $job $dot }}
   {{- end }}
+  {{- if hasKey $wait_for "timeout" }}
+  - -t
+  - {{ $timeout | quote }}
+  {{- end }}
   env:
   - name: NAMESPACE
   {{- if $subchartDot.Values.namespace }}
index 239743e..d769fcd 100644 (file)
@@ -13,7 +13,7 @@
 # limitations under the License.
 
 global:
-  pullPolicy: Always
+  pullPolicy: IfNotPresent
 
 user: 100
 group: 65533
diff --git a/kubernetes/common/repositoryGenerator/.helmignore b/kubernetes/common/repositoryGenerator/.helmignore
new file mode 100644 (file)
index 0000000..0bab41b
--- /dev/null
@@ -0,0 +1,32 @@
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*~
+# Various IDEs
+.project
+.idea/
+*.tmproj
+# Project/CI/CD related items
+.gitlab
+.gitlab-ci.yml
+.dockerignore
+# Helm build files
+.helmignore
+.cache/
+.config/
+.local/
+# OOM specific dirs
+components/
index 09d6836..d1c2240 100644 (file)
@@ -16,4 +16,4 @@
 apiVersion: v2
 description: Template used to generate the right repository link
 name: repositoryGenerator
-version: 13.0.0
+version: 13.0.3
index 1da838a..14b8cc7 100644 (file)
@@ -2,6 +2,7 @@
 # Copyright © 2017 Amdocs, Bell Canada
 # Copyright © 2021 AT&T
 # Modifications Copyright (C) 2021 Nordix Foundation.
+# Modifications Copyright © 2024 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
   {{- include "repositoryGenerator._repositoryHelper" (merge (dict "repoName" "githubContainerRegistry") .) }}
 {{- end -}}
 
+{{/*
+  Resolve the name of the mariadbRepository image repository.
+
+  - .Values.global.mariadbContainerRegistry  : default image mariadbContainerRegistry for all images used by mariadb.operator
+  - .Values.mariadbContainerRegistryOverride : override global mariadbContainerRegistry repository on a per chart basis
+*/}}
+{{- define "repositoryGenerator.mariadbContainerRegistry" -}}
+  {{- include "repositoryGenerator._repositoryHelper" (merge (dict "repoName" "mariadbContainerRegistry") .) }}
+{{- end -}}
+
 {{- define "repositoryGenerator.image._helper" -}}
   {{- $dot := default . .dot -}}
   {{- $initRoot := default $dot.Values.repositoryGenerator .initRoot -}}
   {{- include "repositoryGenerator.image._helper" (merge (dict "image" "nginxImage") .) }}
 {{- end -}}
 
+{{- define "repositoryGenerator.image.mongodbImage" -}}
+  {{- include "repositoryGenerator.image._helper" (merge (dict "image" "mongodbImage") .) }}
+{{- end -}}
+
 {{- define "repositoryGenerator.image.postgres" -}}
   {{- include "repositoryGenerator.image._helper" (merge (dict "image" "postgresImage") .) }}
 {{- end -}}
   {{-     $repoCreds = printf "%s, %s" $repoCreds $ghcrRepoCreds }}
   {{-   end }}
   {{- end }}
+  {{- if $subchartDot.Values.global.mariadbContainerRegistryCred }}
+  {{-   $mariadbRepo := $subchartDot.Values.global.mariadbContainerRegistry }}
+  {{-   $mariadbCred := $subchartDot.Values.global.mariadbContainerRegistryCred }}
+  {{-   $mariadbMail := default "@" $mariadbCred.mail }}
+  {{-   $mariadbAuth := printf "%s:%s" $mariadbCred.user $mariadbCred.password | b64enc }}
+  {{-   $mariadbRepoCreds := printf "\"%s\":{\"username\":\"%s\",\"password\":\"%s\",\"email\":\"%s\",\"auth\":\"%s\"}" $mariadbRepo $mariadbCred.user $mariadbCred.password $mariadbMail $mariadbAuth }}
+  {{-   if eq "" $repoCreds }}
+  {{-     $repoCreds = $mariadbRepoCreds }}
+  {{-   else }}
+  {{-     $repoCreds = printf "%s, %s" $repoCreds $mariadbRepoCreds }}
+  {{-   end }}
+  {{- end }}
   {{- printf "{%s}" $repoCreds | b64enc -}}
 {{- end -}}
index da10d82..e0934e3 100644 (file)
@@ -21,12 +21,13 @@ global:
   elasticRepository: docker.elastic.co
   googleK8sRepository: k8s.gcr.io
   githubContainerRegistry: ghcr.io
+  mariadbContainerRegistry: docker-registry3.mariadb.com
   quayRepository: quay.io
 
   # common global images
   busyboxImage: busybox:1.34.1
   curlImage: curlimages/curl:7.80.0
-  envsubstImage: dibi/envsubst:1
+  envsubstImage: dibi/envsubst:latest
   # there's only latest image for htpasswd
   htpasswdImage: xmartlabs/htpasswd:latest
   # if you change jetty image, you'll also need to update jar file which is
@@ -36,13 +37,14 @@ global:
   jreImage: onap/integration-java11:10.0.0
   kubectlImage: bitnami/kubectl:1.22.4
   loggingImage: beats/filebeat:5.5.0
-  mariadbImage: bitnami/mariadb:10.5.8
+  mariadbImage: mariadb:11.7.2
+  mongodbImage: percona/percona-server-mongodb:7.0.16-10
   nginxImage: bitnami/nginx:1.21.4
   postgresImage: crunchydata/crunchy-postgres:centos8-13.2-4.6.1
-  readinessImage: onap/oom/readiness:6.0.3
+  readinessImage: onap/oom/readiness:6.2.0
   dcaePolicySyncImage: onap/org.onap.dcaegen2.deployments.dcae-services-policy-sync:1.0.1
   drProvClientImage: onap/dmaap/datarouter-prov-client:2.1.15
-  quitQuitImage: onap/oom/readiness:6.0.3
+  quitQuitImage: onap/oom/readiness:6.2.0
 
   # Default credentials
   # they're optional. If the target repository doesn't need them, comment them
@@ -71,6 +73,7 @@ imageRepoMapping:
   kubectlImage: dockerHubRepository
   loggingImage: elasticRepository
   mariadbImage: dockerHubRepository
+  mongodbImage: dockerHubRepository
   nginxImage: dockerHubRepository
   postgresImage: dockerHubRepository
   readinessImage: repository
diff --git a/kubernetes/common/serviceAccount/.helmignore b/kubernetes/common/serviceAccount/.helmignore
new file mode 100644 (file)
index 0000000..0bab41b
--- /dev/null
@@ -0,0 +1,32 @@
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*~
+# Various IDEs
+.project
+.idea/
+*.tmproj
+# Project/CI/CD related items
+.gitlab
+.gitlab-ci.yml
+.dockerignore
+# Helm build files
+.helmignore
+.cache/
+.config/
+.local/
+# OOM specific dirs
+components/
index 7afd31f..3e0e6c2 100644 (file)
@@ -18,9 +18,9 @@
 apiVersion: v2
 description: Template used to create the right Service Accounts / Role / RoleBinding
 name: serviceAccount
-version: 13.0.1
+version: 13.0.2
 
 dependencies:
   - name: common
     version: ~13.x-0
-    repository: 'file://../common'
\ No newline at end of file
+    repository: '@local'
index 83cb945..9070885 100644 (file)
@@ -47,94 +47,14 @@ metadata:
   namespace: {{ include "common.namespace" $dot }}
 rules:
 {{-     if eq $role_type "read" }}
-- apiGroups:
-  - "" # "" indicates the core API group
-  - apps
-  - batch
-  - extensions
-  resources:
-  - endpoints
-  - services
-  - nodes
-  - pods
-  - deployments
-  - deployments/status
-  - jobs
-  - jobs/status
-  - statefulsets
-  - replicasets
-  - replicasets/status
-  - daemonsets
-  verbs:
-  - get
-  - watch
-  - list
+{{- with $dot.Values.role.read }}
+  {{- toYaml . | nindent 2 }}
+{{- end }}
 {{-     else  }}
 {{-       if eq $role_type "create" }}
-- apiGroups:
-  - "" # "" indicates the core API group
-  - apps
-  - batch
-  - extensions
-  resources:
-  - pods
-  - deployments
-  - deployments/status
-  - jobs
-  - jobs/status
-  - statefulsets
-  - replicasets
-  - replicasets/status
-  - daemonsets
-  - secrets
-  - services
-  verbs:
-  - get
-  - watch
-  - list
-- apiGroups:
-  - "" # "" indicates the core API group
-  - apps
-  resources:
-  - statefulsets
-  - configmaps
-  verbs:
-  - patch
-- apiGroups:
-  - "" # "" indicates the core API group
-  - apps
-  resources:
-  - deployments
-  - secrets
-  - services
-  - pods
-  verbs:
-  - create
-- apiGroups:
-  - "" # "" indicates the core API group
-  - apps
-  resources:
-  - pods
-  - persistentvolumeclaims
-  - secrets
-  - deployments
-  - services
-  verbs:
-  - delete
-- apiGroups:
-  - "" # "" indicates the core API group
-  - apps
-  resources:
-  - pods/exec
-  verbs:
-  - create
-- apiGroups:
-  - cert-manager.io
-  resources:
-  - certificates
-  verbs:
-  - create
-  - delete
+{{- with $dot.Values.role.create }}
+  {{- toYaml . | nindent 2 }}
+{{- end }}
 {{-       else }}
 # if you don't match read or create, then you're not allowed to use API
 # except to see basic information about yourself
index 20bd94f..683d5d2 100644 (file)
@@ -21,4 +21,4 @@ apiVersion: v1
 kind: ServiceAccount
 metadata:
   name: {{ include "common.fullname" (dict "suffix" $role_type "dot" $dot ) }}
-{{- end }}
\ No newline at end of file
+{{- end }}
index 4c9f75f..5d20e45 100644 (file)
@@ -22,8 +22,8 @@ global:
 # if "createDefaultRoles=false"
 roles:
   - nothing
-# - read
-# - create
+  # - read
+  # - create
 
 # Flag to enable the creation of default roles instead of using
 # common roles-wrapper
@@ -43,3 +43,116 @@ new_roles_definitions: {}
 #        - "get"
 #        - "watch"
 #        - "list"
+
+role:
+  read:
+    - apiGroups:
+      - "" # "" indicates the core API group
+      resources:
+      - services
+      - pods
+      - endpoints
+      verbs:
+      - get
+      - watch
+      - list
+    - apiGroups:
+      - batch
+      resources:
+      - jobs
+      verbs:
+      - get
+      - watch
+      - list
+    - apiGroups:
+      - batch
+      resources:
+      - jobs/status
+      verbs:
+      - get
+    - apiGroups:
+      - apps
+      resources:
+      - statefulsets
+      - replicasets
+      - deployments
+      - statefulsets
+      - daemonsets
+      verbs:
+      - get
+      - watch
+      - list
+    - apiGroups:
+      - apps
+      resources:
+      - replicasets/status
+      - deployments/status
+      - statefulsets/status
+      verbs:
+      - get
+  create:
+    - apiGroups:
+      - "" # "" indicates the core API group
+      - apps
+      - batchs
+      - extensions
+      resources:
+      - pods
+      - deployments
+      - deployments/status
+      - jobs
+      - jobs/status
+      - statefulsets
+      - replicasets
+      - replicasets/status
+      - daemonsets
+      - secrets
+      - services
+      verbs:
+      - get
+      - watch
+      - list
+    - apiGroups:
+      - "" # "" indicates the core API group
+      - apps
+      resources:
+      - statefulsets
+      - configmaps
+      verbs:
+      - patch
+    - apiGroups:
+      - "" # "" indicates the core API group
+      - apps
+      resources:
+      - deployments
+      - secrets
+      - services
+      - pods
+      verbs:
+      - create
+    - apiGroups:
+      - "" # "" indicates the core API group
+      - apps
+      resources:
+      - pods
+      - persistentvolumeclaims
+      - secrets
+      - deployments
+      - services
+      verbs:
+      - delete
+    - apiGroups:
+      - "" # "" indicates the core API group
+      - apps
+      resources:
+      - pods/exec
+      verbs:
+      - create
+      - get
+    - apiGroups:
+      - cert-manager.io
+      resources:
+      - certificates
+      verbs:
+      - create
+      - delete
index 50af031..0bab41b 100644 (file)
 .project
 .idea/
 *.tmproj
-.vscode/
+# Project/CI/CD related items
+.gitlab
+.gitlab-ci.yml
+.dockerignore
+# Helm build files
+.helmignore
+.cache/
+.config/
+.local/
+# OOM specific dirs
+components/
index d8b9869..07762d4 100644 (file)
@@ -22,7 +22,7 @@ apiVersion: v2
 appVersion: "1.0"
 description: ONAP timescaledb
 name: timescaledb
-version: 13.0.0
+version: 13.0.2
 
 dependencies:
   - name: common
@@ -33,4 +33,4 @@ dependencies:
     repository: '@local'
   - name: repositoryGenerator
     version: ~13.x-0
-    repository: 'file://../repositoryGenerator'
\ No newline at end of file
+    repository: '@local'
index 82c1de6..6cb5c60 100644 (file)
@@ -23,11 +23,7 @@ kind: ConfigMap
 metadata:
   name: {{ include "common.fullname" . }}-init
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 data:
   init-schema.sh: |-
 {{ .Files.Get "resources/init/init-schema.sh" | indent 4}}
index 653326b..031241d 100644 (file)
@@ -29,27 +29,12 @@ spec:
     metadata: {{- include "common.templateMetadata" (dict "ignoreHelmChart" true "dot" . ) | nindent 6 }}
     spec:
       serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . ) }}
-      {{ include "common.podSecurityContext" . | indent 10 | trim}}
-      initContainers:
-        # we shouldn't need this but for unknown reason, it's fsGroup is not
-        # applied
-        - name: fix-permission
-          command:
-            - /bin/sh
-          args:
-            - -c
-            - chown -R {{ .Values.securityContext.user_id }}:{{ .Values.securityContext.group_id }} /var/lib/postgresql/data
-          image: {{ include "repositoryGenerator.image.busybox" . }}
-          imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-          securityContext:
-            runAsUser: 0
-          volumeMounts:
-            - mountPath: /var/lib/postgresql/data
-              name: {{ include "common.fullname" . }}
+      {{ include "common.podSecurityContext" . | indent 6 | trim}}
       containers:
         - name: {{ include "common.name" . }}
           image: {{ include "repositoryGenerator.dockerHubRepository" . }}/{{ .Values.image }}
           imagePullPolicy: {{ .Values.pullPolicy }}
+          {{ include "common.containerSecurityContext" . | indent 10 | trim}}
           ports: {{ include "common.containerPorts" . | nindent 12  }}
           livenessProbe:
             exec:
@@ -80,10 +65,15 @@ spec:
               mountPath: /docker-entrypoint-initdb.d
             - name: {{ include "common.fullname" . }}
               mountPath: /var/lib/postgresql/data
+            - name: var-run
+              mountPath: /var/run/postgresql
       volumes:
         - name: {{ include "common.fullname" . }}-init
           configMap:
             name: {{ include "common.fullname" . }}-init
+        - name: var-run
+          emptyDir:
+            sizeLimit: {{ .Values.dirSizes.varDir.sizeLimit }}
       {{- with .Values.nodeSelector }}
       nodeSelector:
       {{- toYaml . | nindent 8 }}
@@ -94,9 +84,9 @@ spec:
       {{- end }}
       {{- with .Values.tolerations }}
       tolerations:
-    {{- toYaml . | nindent 8 }}
-  {{- end }}
- {{if and .Values.persistence.enabled (not .Values.persistence.existingClaim) }}
+      {{- toYaml . | nindent 8 }}
+      {{- end }}
 {{if and .Values.persistence.enabled (not .Values.persistence.existingClaim) }}
   volumeClaimTemplates:
     - {{ include "common.PVCTemplate" (dict "dot" . "suffix" "data" "persistenceInfos" .Values.persistence "ignoreHelmChart" true) | indent 6 | trim }}
-{{- end }}
+  {{- end }}
index 2643f55..35beab7 100644 (file)
@@ -21,9 +21,9 @@ global:
   persistence: {}
 
 #################################################################
-# Secrets.
+# Image
 ##############################################################
-image: timescale/timescaledb:2.5.1-pg14
+image: timescale/timescaledb:2.16.1-pg14
 
 pullPolicy: Always
 containerPorts: 5432
@@ -41,11 +41,6 @@ securityContext:
   # Uid and gid to run the entrypoint of the container process (uid 70 is postgres user and gid 70 is postgres group)
   user_id: 70
   group_id: 70
-  # capabilities:
-  #   drop:
-  #   - ALL
-  # readOnlyRootFilesystem: true
-  # runAsNonRoot: true
 
 flavor: small
 
@@ -114,6 +109,10 @@ config:
   pgRootUserName: postgres
   pgDatabase: timescaledb
 
+dirSizes:
+  varDir:
+    sizeLimit: 64Mi
+
 secrets:
   - uid: root-creds
     type: basicAuth
index 81b8134..e9d4df5 100644 (file)
@@ -3,6 +3,7 @@
 #  Modifications Copyright (C) 2020 Bell Canada.
 #  Modifications Copyright (C) 2021-2023 Nordix Foundation.
 #  Modifications Copyright (C) 2021 Orange
+#  Modifications Copyright (C) 2024 TechMahindra Ltd.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -30,7 +31,7 @@ spring:
     initialization-mode: always
   liquibase:
     change-log: classpath:changelog/changelog-master.yaml
-    labels: {{ .Values.config.liquibaseLabels }}
+    label-filter: {{ .Values.config.liquibaseLabels }}
 
   kafka:
     producer:
@@ -43,6 +44,12 @@ security:
     username: ${CPS_USERNAME}
     password: ${CPS_PASSWORD}
 
+# Actuator
+management:
+  tracing:
+    propagation:
+      produce: {{ .Values.management.tracing.propagation.produce }}
+
 logging:
   level:
     org:
@@ -71,12 +78,24 @@ spring.kafka.properties.sasl.jaas.config: ${SASL_JAAS_CONFIG}
 {{ toYaml .Values.config.additional | nindent 2 }}
 {{- end }}
 
+# cps tracing
+{{- if .Values.tracing }}
+  {{ toYaml .Values.tracing | nindent 2 }}
+{{- end }}
+
 # Custom Hazelcast config.
 hazelcast:
+  cluster-name: {{ .Values.hazelcast.config.clusterName }}
   mode:
     kubernetes:
       enabled: {{ .Values.hazelcast.config.kubernetesDiscovery }}
       service-name: {{ .Values.hazelcast.config.kubernetesServiceName }}
 
+otel:
+  exporter:
+    otlp:
+      traces:
+        protocol: {{ .Values.otel.config.otlp.traces.protocol }}
+
 # Last empty line is required otherwise the last property will be missing from application.yml file in the pod.
 
index d728639..2c251ee 100644 (file)
@@ -1,6 +1,7 @@
 # Copyright (C) 2021 Pantheon.tech, Orange, Bell Canada.
 # Modifications Copyright (C) 2022 Bell Canada
 # Modifications Copyright © 2022-2023 Nordix Foundation
+# Modifications Copyright © 2024 TechMahindra Ltd.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -68,7 +69,7 @@ global:
     container:
       name: postgres
 
-image: onap/cps-and-ncmp:3.3.11
+image: onap/cps-and-ncmp:3.5.4
 
 service:
   type: ClusterIP
@@ -183,7 +184,6 @@ config:
 
   additional:
     notification.enabled: true
-    notification.data-updated.topic: &dataUpdatedTopic cps.data-updated-events
     notification.data-updated.filters.enabled-dataspaces: ""
     notification.async.enabled: false
     notification.async.executor.core-pool-size: 2
@@ -191,12 +191,16 @@ config:
     notification.async.executor.queue-capacity: 500
     notification.async.executor.wait-for-tasks-to-complete-on-shutdown: true
     notification.async.executor.thread-name-prefix: Async-
+    app.cps.data-updated.change-event-notifications-enabled: true
 
 # Strimzi KafkaUser and Topic config
 kafkaTopic:
   - name: &dmiCmEventsTopic dmi-cm-events
     retentionMs: 7200000
     segmentBytes: 1073741824
+  - name: &dataUpdatedTopic cps-data-updated-events
+    retentionMs: 7200000
+    segmentBytes: 1073741824
 
 kafkaUser:
   authenticationType: scram-sha-512
@@ -216,17 +220,62 @@ kafkaUser:
     - name: &cmAvcSubscriptionTopic cm-avc-subscription
       type: topic
       operations: [Read]
+    - name: &ncmpCmSubscriptionIn subscription
+      type: topic
+      operations: [Read]
+    - name: &ncmpCmSubscriptionDmiIn ncmp-dmi-cm-avc-subscription
+      type: topic
+      operations: [Read]
+    - name: &ncmpCmSubscriptionDmiOut dmi-ncmp-cm-avc-subscription
+      type: topic
+      operations: [Read]
+    - name: &ncmpCmSubscriptionOut subscription-response
+      type: topic
+      operations: [Read]
+    - name: &ncmpCmEventsTopic cm-events
+      type: topic
+      operations: [Read]
+    - name: &dmiDeviceHeartbeatTopic dmi-device-heartbeat
+      type: topic
+      operations: [Read]
+    - name: &lcmEventsTopic ncmp-events
+      type: topic
+      operations: [Read]
 
 topics:
   config:
     app.ncmp.async-m2m.topic: *ncmpAsyncM2MTopic
-    app.ncmp.avc.subscription-topic: *cmAvcSubscriptionTopic
+    app.ncmp.avc.cm-subscription-ncmp-in: *ncmpCmSubscriptionIn
+    app.ncmp.avc.cm-subscription-dmi-in:  *ncmpCmSubscriptionDmiIn
+    app.ncmp.avc.cm-subscription-dmi-out: *ncmpCmSubscriptionDmiOut
+    app.ncmp.avc.cm-subscription-ncmp-out: *ncmpCmSubscriptionOut
+    app.ncmp.avc.cm-events-topic: *ncmpCmEventsTopic
+    app.lcm.events.topic: *lcmEventsTopic
     app.dmi.cm-events.topic: *dmiCmEventsTopic
+    app.dmi.device-heartbeat.topic: *dmiDeviceHeartbeatTopic
+    app.cps.data-updated.topic: *dataUpdatedTopic
 
 logging:
   level: INFO
   path: /tmp
 
+management:
+  tracing:
+    propagation:
+      produce: [W3C]
+
+tracing:
+  cps:
+    tracing:
+      sampler:
+        jaeger_remote:
+          endpoint: http://onap-otel-collector:14250
+      exporter:
+        endpoint: http://onap-otel-collector:4317
+        protocol: grpc
+      enabled: false
+      excluded-observation-names: tasks.scheduled.execution
+
 #################################################################
 # Postgres overriding defaults in the postgres
 #################################################################
@@ -283,5 +332,11 @@ hazelcast:
   config:
     kubernetesDiscovery: true
     kubernetesServiceName: cps-core-headless
+    clusterName: cps-and-ncmp-common-cache-cluster
 
+otel:
+  config:
+    otlp:
+      traces:
+        protocol: grpc
 
index 56e229a..97ffb33 100644 (file)
@@ -83,7 +83,7 @@ replicaCount: 1
 resources:
   small:
     limits:
-      cpu: "2"
+      cpu: "3"
       memory: "2Gi"
     requests:
       cpu: "1"
index e0bc868..439fdb9 100644 (file)
@@ -47,7 +47,7 @@ global:
     virtualhost:
       baseurl: "simpledemo.onap.org"
 
-image: onap/ncmp-dmi-plugin:1.4.0
+image: onap/ncmp-dmi-plugin:1.5.0
 containerPort: &svc_port 8080
 
 prometheus:
index ade33b4..83732e8 100644 (file)
 # ============LICENSE_END=========================================================
 
 apiVersion: v2
-appVersion: "NewDelhi"
+appVersion: "Oslo"
 description: DCAE Microservices
 name: dcaegen2-services
-version: 13.1.0
+version: 15.0.1
 
 dependencies:
   - name: common
     version: ~13.x-0
     repository: '@local'
-  - name: dcae-datafile-collector
-    version: ~13.x-0
-    repository: '@local'
-    condition: dcae-datafile-collector.enabled
   - name: dcae-datalake-admin-ui
     version: ~13.x-0
     repository: '@local'
@@ -44,62 +40,22 @@ dependencies:
     version: ~13.x-0
     repository: '@local'
     condition: dcae-datalake-feeder.enabled
-  - name: dcae-heartbeat
-    version: ~13.x-0
-    repository: '@local'
-    condition: dcae-heartbeat.enabled
   - name: dcae-hv-ves-collector
     version: ~13.x-0
     repository: '@local'
     condition: dcae-hv-ves-collector.enabled
-  - name: dcae-kpi-ms
-    version: ~13.x-0
-    repository: '@local'
-    condition: dcae-kpi-ms.enabled
   - name: dcae-ms-healthcheck
     version: ~13.x-0
     repository: '@local'
     condition: dcae-ms-healthcheck.enabled
-  - name: dcae-pm-mapper
-    version: ~13.x-0
-    repository: '@local'
-    condition: dcae-pm-mapper.enabled
-  - name: dcae-pmsh
-    version: ~13.x-0
-    repository: '@local'
-    condition: dcae-pmsh.enabled
   - name: dcae-prh
     version: ~13.x-0
     repository: '@local'
     condition: dcae-prh.enabled
-  - name: dcae-restconf-collector
-    version: ~13.x-0
-    repository: '@local'
-    condition: dcae-restconf-collector.enabled
-  - name: dcae-slice-analysis-ms
-    version: ~13.x-0
-    repository: '@local'
-    condition: dcae-slice-analysis-ms.enabled
-  - name: dcae-snmptrap-collector
-    version: ~13.x-0
-    repository: '@local'
-    condition: dcae-snmptrap-collector.enabled
-  - name: dcae-son-handler
-    version: ~13.x-0
-    repository: '@local'
-    condition: dcae-son-handler.enabled
-  - name: dcae-tcagen2
-    version: ~13.x-0
-    repository: '@local'
-    condition: dcae-tcagen2.enabled
   - name: dcae-ves-collector
     version: ~13.x-0
     repository: '@local'
     condition: dcae-ves-collector.enabled
-  - name: dcae-ves-mapper
-    version: ~13.x-0
-    repository: '@local'
-    condition: dcae-ves-mapper.enabled
   - name: dcae-ves-openapi-manager
     version: ~13.x-0
     repository: 'file://components/dcae-ves-openapi-manager'
index c841d6d..eefee76 100644 (file)
@@ -85,7 +85,7 @@ This template generates a list of volumes associated with the pod,
 based on information provided in .Values.externalVolumes.  This
 template works in conjunction with dcaegen2-services-common._externalVolumeMounts
 to give the microservice access to data in volumes created else.
-This initial implementation supports ConfigMaps only, as this is the only
+This implementation supports ConfigMaps & EmptyDirs only, as this is the only
 external volume mounting required by current microservices.
 
 .Values.externalVolumes is a list of objects.  Each object has 3 required fields and 2 optional fields:
@@ -94,7 +94,7 @@ external volume mounting required by current microservices.
      names of resources are sometimes set at deployment time (for instance, to prefix the Helm
      release to the name), the string can be a Helm template fragment that will be expanded at
      deployment time.
-   - type: the type of the resource (in the current implementation, only "ConfigMap" is supported).
+   - type: the type of the resource (in the current implementation, only "ConfigMap" & "emptyDir" is supported).
      The value is a case-INsensitive string.
    - mountPoint: the path to the mount point for the volume in the container file system.  The
      value is a case-sensitive string.
@@ -113,7 +113,7 @@ externalVolumes:
     type: configmap
     mountPath: /opt/app/config
   - name: '{{ include "common.release" . }}-another-example'
-    type: configmap
+    type: emptyDir
     mountPath: /opt/app/otherconfig
     optional: false
 */}}
@@ -121,14 +121,18 @@ externalVolumes:
   {{- $global := . -}}
   {{- if .Values.externalVolumes }}
     {{- range $vol := .Values.externalVolumes }}
+      {{- $vname := (tpl $vol.name $global) -}}
       {{- if eq (lower $vol.type) "configmap" }}
-        {{- $vname := (tpl $vol.name $global) -}}
         {{- $opt := hasKey $vol "optional" | ternary $vol.optional true }}
 - configMap:
     defaultMode: 420
     name: {{ $vname }}
     optional: {{ $opt }}
   name: {{ $vname }}
+      {{- else if eq (lower $vol.type) "emptydir" }}
+- name: {{ $vname }}
+  emptyDir:
+    sizeLimit: {{ $vol.sizeLimit }}
       {{- end }}
     {{- end }}
   {{- end }}
@@ -141,7 +145,7 @@ This template generates a list of volume mounts for the microservice container,
 based on information provided in .Values.externalVolumes.  This
 template works in conjunction with dcaegen2-services-common._externalVolumes
 to give the microservice access to data in volumes created else.
-This initial implementation supports ConfigMaps only, as this is the only
+This initial implementation supports ConfigMaps & EmptyDirs, as this is the only
 external volume mounting required by current microservices.
 
 See the documentation for dcaegen2-services-common._externalVolumes for
@@ -152,16 +156,20 @@ the microservice.
   {{- $global := . -}}
   {{- if .Values.externalVolumes }}
     {{- range $vol := .Values.externalVolumes }}
+      {{- $vname := (tpl $vol.name $global) -}}
       {{- if eq (lower $vol.type) "configmap" }}
-        {{- $vname := (tpl $vol.name $global) -}}
         {{- $readOnly := $vol.readOnly | default false }}
 - mountPath: {{ $vol.mountPath }}
   name: {{ $vname }}
   readOnly: {{ $readOnly }}
+      {{- else if eq (lower $vol.type) "emptydir" }}
+- mountPath: {{ $vol.mountPath }}
+  name: {{ $vname }}
       {{- end }}
     {{- end }}
   {{- end }}
 {{- end }}
+
 {{/*
 dcaegen2-services-common.microserviceDeployment:
 This template produces a Kubernetes Deployment for a DCAE microservice.
@@ -236,6 +244,9 @@ post-processing.
 {{- define "dcaegen2-services-common.microserviceDeployment" -}}
 {{- $log := default dict .Values.log -}}
 {{- $logDir :=  default "" $log.path -}}
+{{- $tmp := default dict .Values.tmpDir -}}
+{{- $tmpDir :=  default false $tmp.enabled -}}
+{{- $ves := default false .Values.ves -}}
 {{- $certDir := (eq "true" (include "common.needTLS" .)) | ternary (default "" .Values.certDirectory . ) "" -}}
 {{- $commonRelease :=  print (include "common.release" .) -}}
 {{- $policy := default dict .Values.policies -}}
@@ -243,6 +254,7 @@ post-processing.
 {{- $drNeedProvisioning := or .Values.drFeedConfig .Values.drSubConfig -}}
 {{- $dcaeName := print (include "common.fullname" .) }}
 {{- $dcaeLabel := (dict "dcaeMicroserviceName" $dcaeName) -}}
+{{- $podLabels := default .Values.podLabels .labels -}}
 {{- $dot := . -}}
 apiVersion: apps/v1
 kind: Deployment
@@ -251,11 +263,21 @@ spec:
   replicas: 1
   selector: {{- include "common.selectors" . | nindent 4 }}
   template:
+    {{- if $podLabels}}
+    metadata: {{- include "common.templateMetadata" (dict "dot" . "labels" $podLabels) | nindent 6 }}
+    {{- else }}
     metadata: {{- include "common.templateMetadata" . | nindent 6 }}
+    {{- end }}
     spec:
+      securityContext:
+        {{- toYaml .Values.podSecurityContext | nindent 8 }}
       initContainers:
+
+      {{- if $ves }}
+        {{- include "dcaegen2-ves-collector.vesCollectorCopyEtc" . | nindent 6 }}
+      {{- end }}
       {{- if .Values.readinessCheck }}
-      {{ include "common.readinessCheck.waitFor" . | indent 6 | trim }}
+        {{ include "common.readinessCheck.waitFor" . | nindent 6 }}
       {{- end }}
       {{- include "common.dmaap.provisioning.initContainer" . | nindent 6 }}
       {{ include "dcaegen2-services-common._certPostProcessor" .  | nindent 4 }}
@@ -263,6 +285,8 @@ spec:
       - image: {{ default ( include "repositoryGenerator.repository" . ) .Values.imageRepositoryOverride }}/{{ .Values.image }}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
         name: {{ include "common.name" . }}
+        securityContext:
+          {{- toYaml .Values.containerSecurityContext | nindent 10 }}
         env:
         {{- range $cred := .Values.credentials }}
         - name: {{ $cred.name }}
@@ -307,12 +331,36 @@ spec:
             {{- end }}
           {{- end }}
         {{- end }}
+        {{- if .Values.liveness }}
+        livenessProbe:
+            initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds | default 5 }}
+            periodSeconds: {{ .Values.liveness.periodSeconds | default 15 }}
+            timeoutSeconds: {{ .Values.liveness.timeoutSeconds | default 1 }}
+            {{- $probeType := .Values.liveness.type | default "httpGet" -}}
+            {{- if eq $probeType "httpGet" }}
+            httpGet:
+             scheme: {{ .Values.liveness.scheme }}
+             path: {{ .Values.liveness.path }}
+             port: {{ .Values.liveness.port }}
+            {{- end }}
+            {{- if eq $probeType "exec" }}
+            exec:
+                command:
+                {{- range $cmd := .Values.liveness.command }}
+                - {{ $cmd }}
+                {{- end }}
+            {{- end }}
+        {{- end }}
         resources: {{ include "common.resources" . | nindent 10 }}
         volumeMounts:
         - mountPath: /app-config
           name: {{ ternary "app-config-input" "app-config" (not $drNeedProvisioning) }}
         - mountPath: /app-config-input
           name: app-config-input
+        {{- if $tmpDir }}
+        - mountPath: /tmp
+          name: tmp
+        {{- end }}
         {{- if $logDir }}
         - mountPath: {{ $logDir}}
           name: logs
@@ -385,9 +433,15 @@ spec:
       - emptyDir:
           medium: Memory
         name: app-config
+      {{- if $tmpDir }}
+      - name: tmp
+        emptyDir:
+          sizeLimit: 128Mi
+      {{- end }}
       {{- if $logDir }}
-      - emptyDir: {}
-        name: logs
+      - name: logs
+        emptyDir:
+          sizeLimit: 128Mi
       {{ include "common.log.volumes" (dict "dot" . "configMapNamePrefix" (tpl .Values.logConfigMapNamePrefix . )) | nindent 6 }}
       {{- end }}
       {{- if $certDir }}
diff --git a/kubernetes/dcaegen2-services/common/dcaegen2-services-common/templates/ves-collector/_copyEtc.tpl b/kubernetes/dcaegen2-services/common/dcaegen2-services-common/templates/ves-collector/_copyEtc.tpl
new file mode 100644 (file)
index 0000000..a3a7247
--- /dev/null
@@ -0,0 +1,26 @@
+{{- define "dcaegen2-ves-collector.vesCollectorCopyEtc" -}}
+- name: dcae-ves-collector-copy-etc
+  command: ["cp", "-R", "/opt/app/VESCollector/etc/.", "/opt/app/VESCollector/etc_rw/"]
+  image: {{ default ( include "repositoryGenerator.repository" . ) .Values.imageRepositoryOverride }}/{{ .Values.image }}
+  imagePullPolicy: Always
+  resources:
+    limits:
+      cpu: {{ .Values.copyEtc.resources.limits.cpu }}
+      memory: {{ .Values.copyEtc.resources.limits.memory }}
+    requests:
+      cpu: {{ .Values.copyEtc.resources.requests.cpu }}
+      memory: {{ .Values.copyEtc.resources.requests.memory }}
+  securityContext:
+    allowPrivilegeEscalation: false
+    capabilities:
+      drop:
+        - ALL
+        - CAP_NET_RAW
+    readOnlyRootFilesystem: true
+    runAsNonRoot: true
+  terminationMessagePath: /dev/termination-log
+  terminationMessagePolicy: File
+  volumeMounts:
+    - mountPath: /opt/app/VESCollector/etc_rw
+      name: ves-collector-etc
+{{- end }}
index 2365c17..e77d318 100644 (file)
@@ -53,6 +53,10 @@ containerPort: &containerPort 6061
 log:
   path: /var/log/ONAP/dcae-hv-ves-collector
 logConfigMapNamePrefix: '{{ include "common.fullname" . }}'
+# a tmp volume is needed by the tomcat server of the app
+# when the filesystem is set to read-only
+tmpDir:
+  enabled: true
 
 # directory where TLS certs should be stored
 # if absent, no certs will be retrieved and stored
@@ -92,9 +96,13 @@ readiness:
 # since there are problems receiving binary data via the sidecar
 # the service port is excluded in the sidecar processing
 podAnnotations:
+  traffic.sidecar.istio.io/excludeOutboundPorts: '6061'
   traffic.sidecar.istio.io/excludeInboundPorts: '6061'
   traffic.sidecar.istio.io/includeInboundPorts: '*'
 
+podLabels:
+  sidecar.istio.io/inject: "false"
+
 # service configuration
 service:
   type: NodePort
index fefc06e..408c0a9 100644 (file)
 # ============LICENSE_END=========================================================
 
 apiVersion: v2
-appVersion: "NewDelhi"
+appVersion: "Oslo"
 description: DCAE PRH
 name: dcae-prh
-version: 13.1.0
+version: 13.1.1
 
 dependencies:
   - name: common
index 11cb726..d8b2b20 100644 (file)
@@ -46,6 +46,11 @@ log:
   path: /opt/app/prh/logs
 logConfigMapNamePrefix: '{{ include "common.fullname" . }}'
 
+# a tmp volume is needed by the tomcat server of the app
+# when the filesystem is set to read-only
+tmpDir:
+  enabled: true
+
 secrets:
   - uid: &aaiCredsUID aaicreds
     type: basicAuth
@@ -55,7 +60,14 @@ secrets:
 
 # probe configuration
 readiness:
-  initialDelaySeconds: 5
+  initialDelaySeconds: 25
+  periodSeconds: 15
+  path: /heartbeat
+  scheme: HTTP
+  port: 8100
+  timeoutSeconds: 30
+liveness:
+  initialDelaySeconds: 25
   periodSeconds: 15
   path: /heartbeat
   scheme: HTTP
@@ -178,14 +190,14 @@ flavor: small
 resources:
   small:
     limits:
-      cpu: "1"
+      cpu: "2"
       memory: "3Gi"
     requests:
-      cpu: "0.5"
+      cpu: "1"
       memory: "3Gi"
   large:
     limits:
-      cpu: "2"
+      cpu: "3"
       memory: "6Gi"
     requests:
       cpu: "1"
@@ -197,3 +209,32 @@ serviceAccount:
   nameOverride: dcae-prh
   roles:
     - read
+
+# Pod Security context
+podSecurityContext:
+  runAsGroup: 1414
+  runAsUser: 1414
+  fsGroup: 1414
+  seccompProfile:
+    type: RuntimeDefault
+
+# Container Security context
+containerSecurityContext:
+  allowPrivilegeEscalation: false
+  capabilities:
+    drop:
+      - ALL
+      - CAP_NET_RAW
+  readOnlyRootFilesystem: true
+  runAsNonRoot: true
+
+# PRH volumes
+externalVolumes:
+  - name: prh-logs
+    mountPath: /var/log/ONAP/prh/prh-app-server/
+    type: emptyDir
+    sizeLimit: 64Mi
+
+# PRH pod annotations
+podAnnotations:
+  sidecar.istio.io/rewriteAppHTTPProbers: "false"
index 61a5f03..6c03c1a 100644 (file)
 # ============LICENSE_END=========================================================
 
 apiVersion: v2
-appVersion: "NewDelhi"
+appVersion: "Oslo"
 description: DCAE VES Collector
 name: dcae-ves-collector
-version: 13.1.0
+version: 13.1.1
 
 dependencies:
   - name: common
index ae75bac..fb2a761 100644 (file)
@@ -52,6 +52,11 @@ log:
   path: /opt/app/VESCollector/logs
 logConfigMapNamePrefix: '{{ include "common.fullname" . }}'
 
+# a tmp volume is needed by the tomcat server of the app
+# when the filesystem is set to read-only
+tmpDir:
+  enabled: true
+
 # directory where TLS certs should be stored
 # if absent, no certs will be retrieved and stored
 certDirectory: /opt/app/dcae-certificate
@@ -85,6 +90,12 @@ readiness:
   path: /healthcheck
   scheme: HTTP
   port: 8080
+liveness:
+  initialDelaySeconds: 5
+  periodSeconds: 15
+  path: /healthcheck
+  scheme: HTTP
+  port: 8080
 
 # service configuration
 service:
@@ -288,3 +299,45 @@ serviceAccount:
   nameOverride: dcae-ves-collector
   roles:
     - read
+
+# Pod Security context
+podSecurityContext:
+  runAsGroup: 1000
+  runAsUser: 100
+  fsGroup: 1000
+  seccompProfile:
+    type: RuntimeDefault
+
+# Container Security context
+containerSecurityContext:
+  allowPrivilegeEscalation: false
+  capabilities:
+    drop:
+      - ALL
+      - CAP_NET_RAW
+  readOnlyRootFilesystem: true
+  runAsNonRoot: true
+
+# Flag which can be used to put VES-COLLECTOR specific properties in template
+ves: true
+
+# VES-COLLECTOR volumes
+externalVolumes:
+  - name: ves-collector-etc
+    type: emptyDir
+    sizeLimit: 50Mi
+    mountPath: /opt/app/VESCollector/etc
+
+# VES-COLLECTOR pod annotations
+podAnnotations:
+  sidecar.istio.io/rewriteAppHTTPProbers: "false"
+
+# Resources for init container copy-etc
+copyEtc:
+  resources:
+    limits:
+      cpu: 100m
+      memory: 128Mi
+    requests:
+      cpu: 30m
+      memory: 32Mi
index 6b6ed67..c5d9b18 100644 (file)
@@ -47,6 +47,7 @@ liveness:
 
 readinessCheck:
   wait_for:
+    timeout: 30
     services:
       - sdc-be
 
@@ -55,17 +56,17 @@ resources:
   small:
     limits:
       cpu: "2"
-      memory: "500Mi"
+      memory: "1Gi"
     requests:
       cpu: "1"
-      memory: "500Mi"
+      memory: "1Gi"
   large:
     limits:
       cpu: "4"
-      memory: "1Gi"
+      memory: "2Gi"
     requests:
       cpu: "2"
-      memory: "1Gi"
+      memory: "2Gi"
   unlimited: {}
 
 #Pods Service Account
@@ -103,4 +104,4 @@ kafkaUser:
     - name: SDC-DISTR
       type: topic
       patternType: prefix
-      operations: [Read, Write]
\ No newline at end of file
+      operations: [Read, Write]
index af62dc3..cae85bf 100644 (file)
@@ -70,7 +70,7 @@ output.logstash:
   #ssl.key_passphrase: $ssl.key_passphrase
 
 logging:
-  level: debug
+  level: info
 
   # enable file rotation with default configuration
   to_files: true
index 7c4c3fb..c91552e 100644 (file)
@@ -40,7 +40,7 @@
 */}}
 
 {{- $ctx := . -}}
-{{- $components := list "dcae-hv-ves-collector" "dcae-prh" "dcae-tcagen2" "dcae-ves-collector" "dcae-ves-openapi-manager" -}}
+{{- $components := list "dcae-hv-ves-collector" "dcae-prh" "dcae-ves-collector" "dcae-ves-openapi-manager" -}}
 {{- $enabled := dict "enabled" list -}}
 {{- range $components -}}
   {{- if index $ctx.Values . "enabled" -}}
index ba3607f..6efbf36 100644 (file)
@@ -28,9 +28,6 @@ filebeatConfig:
 # Control deployment of DCAE microservices at ONAP installation time
 dcae-ves-openapi-manager:
   enabled: true
-dcae-datafile-collector:
-  enabled: false
-  logConfigMapNamePrefix: '{{ include "common.release" . }}-dcaegen2-services'
 dcae-datalake-admin-ui:
   enabled: false
   logConfigMapNamePrefix: '{{ include "common.release" . }}-dcaegen2-services'
@@ -40,45 +37,15 @@ dcae-datalake-des:
 dcae-datalake-feeder:
   enabled: false
   logConfigMapNamePrefix: '{{ include "common.release" . }}-dcaegen2-services'
-dcae-heartbeat:
-  enabled: false
-  logConfigMapNamePrefix: '{{ include "common.release" . }}-dcaegen2-services'
 dcae-hv-ves-collector:
   enabled: true
   logConfigMapNamePrefix: '{{ include "common.release" . }}-dcaegen2-services'
-dcae-kpi-ms:
-  enabled: false
-  logConfigMapNamePrefix: '{{ include "common.release" . }}-dcaegen2-services'
 dcae-ms-healthcheck:
   enabled: true
   logConfigMapNamePrefix: '{{ include "common.release" . }}-dcaegen2-services'
-dcae-pm-mapper:
-  enabled: false
-  logConfigMapNamePrefix: '{{ include "common.release" . }}-dcaegen2-services'
-dcae-pmsh:
-  enabled: false
-  logConfigMapNamePrefix: '{{ include "common.release" . }}-dcaegen2-services'
 dcae-prh:
   enabled: true
   logConfigMapNamePrefix: '{{ include "common.release" . }}-dcaegen2-services'
-dcae-restconf-collector:
-  enabled: false
-  logConfigMapNamePrefix: '{{ include "common.release" . }}-dcaegen2-services'
-dcae-slice-analysis-ms:
-  enabled: false
-  logConfigMapNamePrefix: '{{ include "common.release" . }}-dcaegen2-services'
-dcae-snmptrap-collector:
-  enabled: false
-  logConfigMapNamePrefix: '{{ include "common.release" . }}-dcaegen2-services'
-dcae-son-handler:
-  enabled: false
-  logConfigMapNamePrefix: '{{ include "common.release" . }}-dcaegen2-services'
-dcae-tcagen2:
-  enabled: true
-  logConfigMapNamePrefix: '{{ include "common.release" . }}-dcaegen2-services'
 dcae-ves-collector:
   enabled: true
   logConfigMapNamePrefix: '{{ include "common.release" . }}-dcaegen2-services'
-dcae-ves-mapper:
-  enabled: false
-  logConfigMapNamePrefix: '{{ include "common.release" . }}-dcaegen2-services'
index f60a2d3..08ced6e 100755 (executable)
@@ -271,7 +271,7 @@ deploy() {
   #So cache the results to prevent repeated execution.
   ALL_HELM_RELEASES=$(helm ls -q)
 
-    for subchart in strimzi roles-wrapper repository-wrapper cassandra mariadb-galera postgres ; do
+    for subchart in roles-wrapper repository-wrapper strimzi cassandra mariadb-galera postgres ; do
       SUBCHART_OVERRIDES=$CACHE_SUBCHART_DIR/$subchart/subchart-overrides.yaml
 
       SUBCHART_ENABLED=0
index 48a3b96..89bdbe7 100644 (file)
@@ -2,6 +2,7 @@
 # Modifications Copyright © 2018 AT&T
 # Modifications Copyright © 2021 Orange
 # Modifications Copyright © 2021 Nordix Foundation
+# Modifications Copyright © 2024 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -18,7 +19,7 @@
 apiVersion: v2
 description: ONAP multicloud broker
 name: multicloud
-version: 13.1.0
+version: 15.0.3
 
 dependencies:
   - name: common
@@ -35,26 +36,6 @@ dependencies:
     version: ~13.x-0
     repository: 'file://components/multicloud-k8s'
     condition: multicloud-k8s.enabled
-  - name: multicloud-pike
-    version: ~13.x-0
-    repository: 'file://components/multicloud-pike'
-    condition: multicloud-pike.enabled
-  - name: multicloud-prometheus
-    version: ~13.x-0
-    repository: 'file://components/multicloud-prometheus'
-    condition: multicloud-prometheus.enabled
-  - name: multicloud-starlingx
-    version: ~13.x-0
-    repository: 'file://components/multicloud-starlingx'
-    condition: multicloud-starlingx.enabled
-  - name: multicloud-vio
-    version: ~13.x-0
-    repository: 'file://components/multicloud-vio'
-    condition: multicloud-vio.enabled
-  - name: multicloud-windriver
-    version: ~13.x-0
-    repository: 'file://components/multicloud-windriver'
-    condition: multicloud-windriver.enabled
   - name: serviceAccount
     version: ~13.x-0
     repository: '@local'
index b825f67..64c8d5a 100644 (file)
@@ -1,5 +1,6 @@
 # Copyright (c) 2019, CMCC Technologies Co., Ltd.
 # Modifications Copyright © 2021 Orange
+# Modifications Copyright © 2024 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
index 4099f82..9e56446 100644 (file)
@@ -1,6 +1,7 @@
 # Copyright 2019 Intel Corporation, Inc
 # Modifications Copyright © 2021 Orange
 # Modifications Copyright © 2021 Nordix Foundation
+# Modifications Copyright © 2024 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -17,7 +18,7 @@
 apiVersion: v2
 description: ONAP Multicloud Kubernetes Plugin
 name: multicloud-k8s
-version: 13.1.0
+version: 13.1.3
 
 dependencies:
   - name: common
@@ -27,7 +28,7 @@ dependencies:
     # be published independently to a repo (at this point)
     repository: '@local'
   - name: mongodb
-    version: 14.12.2
+    version: ~16.5.x-0
     repository: '@local'
   - name: etcd
     version: ~13.x-0
index d6fa40d..08c228f 100644 (file)
@@ -8,4 +8,4 @@
     "database-address": "multicloud-k8s-mongo",
     "etcd-ip": "multicloud-k8s-etcd",
     "plugin-dir": "/opt/multicloud/k8splugin/plugins"
-}
\ No newline at end of file
+}
index 9881a13..6ed5dee 100644 (file)
@@ -1,5 +1,6 @@
 {{/*
 # Copyright 2019 Intel Corporation, Inc
+# Modifications Copyright © 2024 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -23,6 +24,7 @@ spec:
   template:
     metadata: {{- include "common.templateMetadata" . | nindent 6 }}
     spec:
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
       containers:
       - image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
@@ -30,6 +32,7 @@ spec:
         command: ["/opt/multicloud/k8splugin/k8plugin"]
         workingDir: /opt/multicloud/k8splugin
         ports: {{ include "common.containerPorts" . | nindent 10  }}
+        {{ include "common.containerSecurityContext" . | indent 10 | trim }}
         {{- if eq .Values.liveness.enabled true }}
         livenessProbe:
           tcpSocket:
@@ -43,9 +46,11 @@ spec:
           initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
           periodSeconds: {{ .Values.readiness.periodSeconds }}
         volumeMounts:
-          - mountPath: /opt/multicloud/k8splugin/k8sconfig.json
-            name: {{ include "common.name" .}}
-            subPath: k8sconfig.json
+        - mountPath: /tmp
+          name: tmp-dir-k8s
+        - mountPath: /opt/multicloud/k8splugin/k8sconfig.json
+          name: {{ include "common.name" .}}
+          subPath: k8sconfig.json
         resources: {{ include "common.resources" . | nindent 10 }}
         {{- if .Values.nodeSelector }}
         nodeSelector:
@@ -60,10 +65,28 @@ spec:
         name: framework-artifactbroker
         command: ["/opt/app/distribution/bin/artifact-dist.sh"]
         args: ["/opt/app/distribution/etc/mounted/config.json"]
+        {{ include "common.containerSecurityContext" . | indent 10 | trim }}
+        resources: {{ include "common.resources" . | nindent 10 }}
         ports:
         - containerPort: {{ .Values.artifactbroker.internalPort }}
           protocol: TCP
+        {{- if eq .Values.liveness.enabled true }}
+        livenessProbe:
+          tcpSocket:
+            port: {{ .Values.artifactbroker.internalPort }}
+          initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
+          periodSeconds: {{ .Values.liveness.periodSeconds }}
+        {{ end -}}
+        readinessProbe:
+          tcpSocket:
+            port: {{ .Values.artifactbroker.internalPort }}
+          initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
+          periodSeconds: {{ .Values.readiness.periodSeconds }}
         volumeMounts:
+        - mountPath: /tmp
+          name: tmp-dir-broker
+        - mountPath: "{{ .Values.log.path }}"
+          name: framework-log
         - mountPath: /opt/app/distribution/etc/mounted/config.json
           name: {{ include "common.name" .}}
           subPath: config.json
@@ -77,9 +100,19 @@ spec:
               key: sasl.jaas.config
       serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
       volumes:
+      - name: tmp-dir-k8s
+        emptyDir:
+          sizeLimit: {{ .Values.volumes.tmpK8SSizeLimit }}
+      - name: tmp-dir-broker
+        emptyDir:
+          sizeLimit: {{ .Values.volumes.tmpBrokerSizeLimit }}
+      - name: framework-log
+        emptyDir:
+          sizeLimit: {{ .Values.volumes.logSizeLimit }}
       - name : {{ include "common.name" . }}
         configMap:
           name: {{ include "common.fullname" . }}
       - name: artifact-data
-        emptyDir: {}
+        emptyDir:
+          sizeLimit: {{ .Values.volumes.artifactDataSizeLimit }}
       {{- include "common.imagePullSecrets" . | nindent 6 }}
index 5c9c0ad..02509e6 100644 (file)
@@ -1,4 +1,5 @@
 # Copyright 2019 Intel Corporation, Inc
+# Modifications Copyright © 2024 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -18,7 +19,7 @@
 global:
   nodePortPrefixExt: 304
   persistence: {}
-  artifactImage: onap/multicloud/framework-artifactbroker:1.9.0
+  artifactImage: onap/multicloud/framework-artifactbroker:1.9.2
   # Docker Repository used by RepositoryGenerator
   dockerHubRepository: docker.io
   # Additions for MongoDB****************************
@@ -59,6 +60,16 @@ nodeSelector: {}
 
 affinity: {}
 
+securityContext:
+  user_id: 999
+  group_id: 999
+
+volumes:
+  tmpK8SSizeLimit: 100Mi
+  tmpBrokerSizeLimit: 100Mi
+  artifactDataSizeLimit: 100Mi
+  logSizeLimit: 100Mi
+
 # probe configuration parameters
 liveness:
   initialDelaySeconds: 10
@@ -70,6 +81,7 @@ liveness:
 readiness:
   initialDelaySeconds: 10
   periodSeconds: 30
+  enabled: true
 
 service:
   type: NodePort
@@ -162,14 +174,14 @@ flavor: large
 resources:
   small:
     limits:
-      cpu: "200m"
+      cpu: "400m"
       memory: "500Mi"
     requests:
       cpu: "10m"
       memory: "10Mi"
   large:
     limits:
-      cpu: "400m"
+      cpu: "600m"
       memory: "1Gi"
     requests:
       cpu: "10m"
@@ -181,3 +193,7 @@ serviceAccount:
   nameOverride: multicloud-k8s
   roles:
     - read
+
+#Log configuration
+log:
+  path: /var/log/onap
index 80a09c7..a03a6d0 100644 (file)
@@ -1,6 +1,7 @@
 {{/*
 # Copyright © 2017 Amdocs, Bell Canada
 # Modifications Copyright © 2018 AT&T
+# Modifications Copyright © 2024 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -24,6 +25,23 @@ spec:
   template:
     metadata: {{- include "common.templateMetadata" . | nindent 6 }}
     spec:
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
+      initContainers:
+      - name: {{ include "common.name" . }}-copy-pub
+        image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        command: ["cp", "-R", "/opt/multivimbroker/multivimbroker/pub/.", "/opt/multivimbroker/multivimbroker/pub_rw/"]
+        resources:
+          limits:
+            cpu: 200m
+            memory: 200Mi
+          requests:
+            cpu: 10m
+            memory: 100Mi
+        {{ include "common.containerSecurityContext" . | indent 10 | trim }}
+        volumeMounts:
+        - mountPath: /opt/multivimbroker/multivimbroker/pub_rw
+          name: framework-pub
       containers:
       - env:
         - name: MSB_PROTO
@@ -50,9 +68,12 @@ spec:
         image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
         name: {{ include "common.name" . }}
+        {{ include "common.containerSecurityContext" . | indent 10 | trim }}
         volumeMounts:
         - mountPath: "{{ .Values.log.path }}"
           name: framework-log
+        - mountPath: /opt/multivimbroker/multivimbroker/pub
+          name: framework-pub
         - mountPath: /opt/multivimbroker/multivimbroker/pub/config/log.yml
           name: framework-logconfig
           subPath: log.yml
@@ -62,25 +83,34 @@ spec:
         ports: {{ include "common.containerPorts" . | nindent 10  }}
         # disable liveness probe when breakpoints set in debugger
         # so K8s doesn't restart unresponsive container
-        {{- if eq .Values.liveness.enabled true }}
+        {{ if .Values.liveness.enabled }}
         livenessProbe:
           httpGet:
-            path: /api/multicloud/v0/swagger.json
             port: {{ .Values.service.internalPort }}
-            scheme: "HTTP"
+            path: {{ .Values.liveness.path }}
+            scheme: HTTP
           initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
           periodSeconds: {{ .Values.liveness.periodSeconds }}
-          timeoutSeconds: {{ .Values.liveness.timeoutSeconds }}
-          successThreshold: {{ .Values.liveness.successThreshold }}
-          failureThreshold: {{ .Values.liveness.failureThreshold }}
-        {{ end -}}
-
+        {{ end }}
+        {{ if .Values.readiness.enabled }}
+        readinessProbe:
+          httpGet:
+            port: {{ .Values.service.internalPort }}
+            path: {{ .Values.readiness.path }}
+            scheme: HTTP
+          initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
+          periodSeconds: {{ .Values.readiness.periodSeconds }}
+        {{ end }}
       # side car containers
       {{ include "common.log.sidecar" . | nindent 6 }}
       serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
       volumes:
       - name: framework-log
-        emptyDir: {}
+        emptyDir:
+          sizeLimit: {{ .Values.volumes.logSizeLimit }}
+      - name: framework-pub
+        emptyDir:
+          sizeLimit: {{ .Values.volumes.pubSizeLimit }}
       - name: provider-plugin
         configMap:
           name: {{ include "common.fullname" . }}-provider-plugin-configmap
index 033826f..6193fb0 100644 (file)
@@ -1,5 +1,6 @@
 # Copyright © 2017 Amdocs, Bell Canada
 # Modifications Copyright © 2018 AT&T
+# Modifications Copyright © 2024 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -18,7 +19,7 @@
 #################################################################
 global:
   nodePortPrefix: 302
-  artifactImage: onap/multicloud/framework-artifactbroker:1.9.0
+  artifactImage: onap/multicloud/framework-artifactbroker:1.9.2
   prometheus:
     enabled: false
   persistence: {}
@@ -28,7 +29,7 @@ global:
 # Application configuration defaults.
 #################################################################
 # application image
-image: onap/multicloud/framework:1.8.1
+image: onap/multicloud/framework:1.9.2
 pullPolicy: Always
 
 #Istio sidecar injection policy
@@ -39,27 +40,11 @@ multicloud-fcaps:
   logConfigMapNamePrefix: '{{ include "common.release" . }}-multicloud'
 multicloud-k8s:
   enabled: true
-multicloud-pike:
-  enabled: true
-  logConfigMapNamePrefix: '{{ include "common.release" . }}-multicloud'
-multicloud-prometheus:
-  enabled: false
-multicloud-starlingx:
-  enabled: false
-  logConfigMapNamePrefix: '{{ include "common.release" . }}-multicloud'
-multicloud-vio:
-  enabled: false
-  logConfigMapNamePrefix: '{{ include "common.release" . }}-multicloud'
-multicloud-windriver:
-  enabled: false
-  logConfigMapNamePrefix: '{{ include "common.release" . }}-multicloud'
 
 # application configuration
 config:
-  msbgateway: msb-iag
   logstashServiceName: log-ls
   logstashPort: 5044
-  msbPort: 80
   aai:
     aaiPort: 80
     schemaVersion: v13
@@ -73,14 +58,26 @@ nodeSelector: {}
 
 affinity: {}
 
+securityContext:
+  user_id: 100
+  group_id: 65533
+
+volumes:
+  logSizeLimit: 50Mi
+  pubSizeLimit: 50Mi
+
 # probe configuration parameters
 liveness:
+  enabled: true
+  path: /api/multicloud/v0/swagger.json
   initialDelaySeconds: 30
   periodSeconds: 10
-  timeoutSeconds: 10
-  successThreshold: 1
-  failureThreshold: 5
+
+readiness:
   enabled: true
+  path: /api/multicloud/v0/swagger.json
+  initialDelaySeconds: 10
+  periodSeconds: 30
 
 service:
   type: NodePort
@@ -89,28 +86,6 @@ service:
     - name: http
       port: 9001
       nodePort: '91'
-  annotations:
-    msb.onap.org/service-info: |
-      {{ if .Values.global.msbEnabled -}}[
-        {
-          "serviceName": "multicloud",
-          "version": "v0",
-          "url": "/api/multicloud/v0",
-          "protocol": "REST",
-          "port": "{{ .Values.service.internalPort }}",
-          "enable_ssl": false,
-          "visualRange": "1"
-        },
-        {
-          "serviceName": "multicloud",
-          "version": "v1",
-          "url": "/api/multicloud/v1",
-          "protocol": "REST",
-          "port": "{{ .Values.service.internalPort }}",
-          "enable_ssl": false,
-          "visualRange": "1"
-        }
-      ]{{ end }}
 
 ingress:
   enabled: false
index 45d8da1..f1f1d69 100644 (file)
@@ -1,5 +1,5 @@
 # Copyright © 2017 Amdocs, Bell Canada
-# Modifications Copyright © 2021 Nordix Foundation
+# Modifications Copyright © 2021,2024 Nordix Foundation
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -15,8 +15,8 @@
 
 apiVersion: v2
 name: onap
-version: 14.0.0
-appVersion: NewDelhi
+version: 16.0.0
+appVersion: Paris
 description: Open Network Automation Platform (ONAP)
 home: https://www.onap.org/
 sources:
@@ -25,22 +25,22 @@ icon: https://wiki.onap.org/download/thumbnails/1015829/onap_704x271%20copy.png?
 kubeVersion: ">=1.19.11-0"
 
 dependencies:
+  - name: authentication
+    version: ~15.x-0
+    repository: '@local'
+    condition: authentication:enabled
   - name: aai
-    version: ~13.x-0
+    version: ~16.x-0
     repository: '@local'
     condition: aai.enabled
   - name: cassandra
-    version: ~13.x-0
+    version: ~16.x-0
     repository: '@local'
     condition: cassandra.enabled
   - name: cds
-    version: ~13.x-0
+    version: ~16.x-0
     repository: '@local'
     condition: cds.enabled
-  - name: cli
-    version: ~13.x-0
-    repository: '@local'
-    condition: cli.enabled
   - name: common
     version: ~13.x-0
     repository: '@local'
@@ -49,35 +49,19 @@ dependencies:
     repository: '@local'
     condition: cps.enabled
   - name: dcaegen2-services
-    version: ~13.x-0
+    version: ~15.x-0
     repository: '@local'
     condition: dcaegen2-services.enabled
-  - name: holmes
-    version: ~13.x-0
-    repository: '@local'
-    condition: holmes.enabled
-  - name: dmaap
-    version: ~13.x-0
-    repository: '@local'
-    condition: dmaap.enabled
   - name: mariadb-galera
-    version: ~13.x-0
+    version: ~16.x-0
     repository: '@local'
     condition: mariadb-galera.enabled
-  - name: msb
-    version: ~13.x-0
-    repository: '@local'
-    condition: msb.enabled
   - name: multicloud
-    version: ~13.x-0
+    version: ~15.x-0
     repository: '@local'
     condition: multicloud.enabled
-  - name: nbi
-    version: ~13.x-0
-    repository: '@local'
-    condition: nbi.enabled
   - name: policy
-    version: ~14.x-0
+    version: ~16.x-0
     repository: '@local'
     condition: policy.enabled
   - name: portal-ng
@@ -88,10 +72,6 @@ dependencies:
     version: ~13.x-0
     repository: '@local'
     condition: postgres.enabled
-  - name: oof
-    version: ~13.x-0
-    repository: '@local'
-    condition: oof.enabled
   - name: repository-wrapper
     version: ~13.x-0
     repository: '@local'
@@ -104,33 +84,21 @@ dependencies:
     repository: '@local'
     condition: sdc.enabled
   - name: sdnc
-    version: ~13.x-0
+    version: ~16.x-0
     repository: '@local'
     condition: sdnc.enabled
   - name: so
-    version: ~13.x-0
+    version: ~16.x-0
     repository: '@local'
     condition: so.enabled
   - name: strimzi
-    version: ~13.x-0
+    version: ~16.x-0
     repository: '@local'
     condition: strimzi.enabled
   - name: uui
-    version: ~13.x-0
+    version: ~15.x-0
     repository: '@local'
     condition: uui.enabled
-  - name: vfc
-    version: ~13.x-0
-    repository: '@local'
-    condition: vfc.enabled
-  - name: vnfsdk
-    version: ~13.x-0
-    repository: '@local'
-    condition: vnfsdk.enabled
-  - name: modeling
-    version: ~13.x-0
-    repository: '@local'
-    condition: modeling.enabled
   - name: platform
     version: ~13.x-0
     repository: '@local'
index fcf5de3..f66b1d7 100644 (file)
@@ -32,7 +32,7 @@ global:
   #repository: nexus3.onap.org:10001
 
   # readiness check
-  readinessImage: onap/oom/readiness:6.0.3
+  readinessImage: onap/oom/readiness:6.1.2
 
   # logging agent - temporary repo until images migrated to nexus3
   loggingRepository: docker.elastic.co
index 468aab8..554bacd 100644 (file)
@@ -61,37 +61,6 @@ cassandra:
   readiness:
     timeoutSeconds: 30
     periodSeconds: 60
-holmes:
-  holmes-rule-mgmt:
-    liveness:
-      initialDelaySeconds: 120
-    readiness:
-      initialDelaySeconds: 120
-  holmes-engine-mgmt:
-    liveness:
-      initialDelaySeconds: 120
-    readiness:
-      initialDelaySeconds: 120
-dmaap:
-  dmaap-bus-controller:
-    liveness:
-      initialDelaySeconds: 120
-    readiness:
-      initialDelaySeconds: 120
-  dmaap-dr-prov:
-    liveness:
-      initialDelaySeconds: 120
-    readiness:
-      initialDelaySeconds: 120
-    mariadb:
-      liveness:
-        initialDelaySeconds: 180
-        periodSeconds: 60
-  dmaap-dr-node:
-    liveness:
-      initialDelaySeconds: 120
-    readiness:
-      initialDelaySeconds: 120
 mariadb-galera:
   liveness:
     initialDelaySeconds: 30
@@ -101,19 +70,6 @@ mariadb-galera:
       initialDelaySeconds: 120
     readiness:
       initialDelaySeconds: 120
-modeling:
-  mariadb-galera:
-    liveness:
-      initialDelaySeconds: 180
-      periodSeconds: 60
-oof:
-  oof-has:
-    music:
-      music-cassandra:
-        liveness:
-          periodSeconds: 120
-        readiness:
-          periodSeconds: 60
 sdc:
   sdc-fe:
     liveness:
@@ -159,11 +115,6 @@ sdnc:
     initialDelaySeconds: 60
   readiness:
     initialDelaySeconds: 60
-  dmaap-listener:
-    liveness:
-      initialDelaySeconds: 120
-    readiness:
-      initialDelaySeconds: 120
   mariadb-galera:
     liveness:
       initialDelaySeconds: 180
@@ -190,8 +141,3 @@ uui:
       initialDelaySeconds: 120
     readiness:
       initialDelaySeconds: 120
-vfc:
-  mariadb-galera:
-    liveness:
-      initialDelaySeconds: 180
-      periodSeconds: 60
index 4c1a418..4f23dfc 100644 (file)
@@ -35,7 +35,7 @@ global:
     password: docker
 
   # readiness check
-  readinessImage: onap/oom/readiness:6.0.3
+  readinessImage: onap/oom/readiness:6.1.2
 
   # logging agent - temporary repo until images migrated to nexus3
   loggingRepository: docker.elastic.co
@@ -74,36 +74,16 @@ cassandra:
   enabled: true
 cds:
   enabled: true
-cli:
-  enabled: false
 cps:
   enabled: false
 dcaegen2-services:
   enabled: false
-holmes:
-  enabled: false
-dmaap:
-  enabled: true
-  message-router:
-    enabled: true
-  dmaap-dr-prov:
-    enabled: false
-  dmaap-dr-node:
-    enabled: false
-oof:
-  enabled: true
 mariadb-galera:
   enabled: true
 msb:
   enabled: true
 multicloud:
   enabled: false
-nbi:
-  enabled: true
-  config:
-    # openstack configuration
-    openStackRegion: "Yolo"
-    openStackVNFTenantId: "1234"
 policy:
   enabled: true
 portal-ng:
@@ -117,21 +97,16 @@ sdc:
   enabled: true
 sdnc:
   enabled: false
-
   replicaCount: 1
-
   mysql:
     replicaCount: 1
 so:
   enabled: true
-
   replicaCount: 1
-
   liveness:
     # necessary to disable liveness probe when setting breakpoints
     # in debugger so K8s doesn't restart unresponsive container
     enabled: false
-
   # so server configuration
   config:
     # message router configuration
@@ -149,9 +124,3 @@ strimzi:
     enabled: false
 uui:
   enabled: true
-vfc:
-  enabled: false
-vnfsdk:
-  enabled: false
-modeling:
-  enabled: false
index ba7b50e..b4b7741 100644 (file)
@@ -62,84 +62,40 @@ mariadb-galera:
   enabled: true
 postgres:
   enabled: true
+authentication:
+  enabled: true
 aai:
   enabled: true
 cds:
   enabled: true
-cli:
-  enabled: true
 cps:
   enabled: true
-dcaegen2:
-  enabled: true
 dcaegen2-services:
   enabled: true
-  dcae-datafile-collector:
-    enabled: true
   dcae-datalake-admin-ui:
     enabled: true
   dcae-datalake-des:
     enabled: true
   dcae-datalake-feeder:
     enabled: true
-  dcae-heartbeat:
-    enabled: true
   dcae-hv-ves-collector:
     enabled: true
-  dcae-kpi-ms:
-    enabled: true
   dcae-ms-healthcheck:
     enabled: true
-  dcae-pm-mapper:
-    enabled: true
-  dcae-pmsh:
-    enabled: true
   dcae-prh:
     enabled: true
-  dcae-restconf-collector:
-    enabled: true
-  dcae-slice-analysis-ms:
-    enabled: true
-  dcae-snmptrap-collector:
-    enabled: true
-  dcae-son-handler:
-    enabled: true
-  dcae-tcagen2:
-    enabled: true
   dcae-ves-collector:
     enabled: true
     applicationConfig:
       auth.method: "noAuth"
-  dcae-ves-mapper:
-    enabled: true
   dcae-ves-openapi-manager:
     enabled: true
-holmes:
-  enabled: true
-dmaap:
-  enabled: true
-  message-router:
-    enabled: true
-  dmaap-dr-prov:
-    enabled: true
-  dmaap-dr-node:
-    enabled: true
-oof:
-  enabled: true
-msb:
-  enabled: true
 multicloud:
   enabled: true
-nbi:
-  enabled: true
 platform:
   enabled: true
   cmpv2-cert-service:
     enabled: false
-  keycloak-init:
-    enabled: true
-  oauth2-proxy:
-    enabled: true
 policy:
   enabled: true
 portal-ng:
@@ -150,6 +106,16 @@ sdc:
   enabled: true
 sdnc:
   enabled: true
+  network-name-gen:
+    enabled: true
+  dgbuilder:
+    enabled: true
+  ueb-listener:
+    enabled: true
+  sdnc-ansible-server:
+    enabled: true
+  sdnc-web:
+    enabled: true
 so:
   enabled: true
 strimzi:
@@ -158,11 +124,5 @@ strimzi:
     enabled: true
 uui:
   enabled: true
-vfc:
-  enabled: true
-vnfsdk:
-  enabled: true
-modeling:
-  enabled: true
 a1policymanagement:
   enabled: true
index cc83042..c4b5e09 100644 (file)
@@ -63,84 +63,40 @@ mariadb-galera:
   enabled: true
 postgres:
   enabled: true
+authentication:
+  enabled: true
 aai:
   enabled: true
 cds:
   enabled: true
-cli:
-  enabled: true
 cps:
   enabled: true
-dcaegen2:
-  enabled: true
 dcaegen2-services:
   enabled: true
-  dcae-datafile-collector:
-    enabled: true
   dcae-datalake-admin-ui:
     enabled: true
   dcae-datalake-des:
     enabled: true
   dcae-datalake-feeder:
     enabled: true
-  dcae-heartbeat:
-    enabled: true
   dcae-hv-ves-collector:
     enabled: true
-  dcae-kpi-ms:
-    enabled: true
   dcae-ms-healthcheck:
     enabled: true
-  dcae-pm-mapper:
-    enabled: true
-  dcae-pmsh:
-    enabled: true
   dcae-prh:
     enabled: true
-  dcae-restconf-collector:
-    enabled: true
-  dcae-slice-analysis-ms:
-    enabled: true
-  dcae-snmptrap-collector:
-    enabled: true
-  dcae-son-handler:
-    enabled: true
-  dcae-tcagen2:
-    enabled: true
   dcae-ves-collector:
     enabled: true
     applicationConfig:
       auth.method: "noAuth"
-  dcae-ves-mapper:
-    enabled: true
   dcae-ves-openapi-manager:
     enabled: true
-holmes:
-  enabled: true
-dmaap:
-  enabled: true
-  message-router:
-    enabled: true
-  dmaap-dr-prov:
-    enabled: true
-  dmaap-dr-node:
-    enabled: true
-oof:
-  enabled: true
-msb:
-  enabled: true
 multicloud:
   enabled: true
-nbi:
-  enabled: true
 platform:
   enabled: true
   cmpv2-cert-service:
     enabled: false
-  keycloak-init:
-    enabled: true
-  oauth2-proxy:
-    enabled: true
 policy:
   enabled: true
 portal-ng:
@@ -151,6 +107,16 @@ sdc:
   enabled: true
 sdnc:
   enabled: true
+  network-name-gen:
+    enabled: true
+  dgbuilder:
+    enabled: true
+  ueb-listener:
+    enabled: true
+  sdnc-ansible-server:
+    enabled: true
+  sdnc-web:
+    enabled: true
 so:
   enabled: true
 strimzi:
@@ -159,11 +125,5 @@ strimzi:
     enabled: true
 uui:
   enabled: true
-vfc:
-  enabled: true
-vnfsdk:
-  enabled: true
-modeling:
-  enabled: true
 a1policymanagement:
   enabled: true
index e5fd78e..c90614b 100644 (file)
@@ -39,35 +39,42 @@ mariadb-galera:
   enabled: true
 postgres:
   enabled: true
-
+authentication:
+  enabled: true
 aai:
   enabled: true
 cds:
   enabled: true
-cli:
-  enabled: true
 cps:
   enabled: true
 dcaegen2-services:
   enabled: true
-holmes:
-  enabled: true
-dmaap:
-  enabled: true
-  message-router:
+  dcae-datalake-admin-ui:
     enabled: true
-  dmaap-dr-prov:
+  dcae-datalake-des:
     enabled: true
-  dmaap-dr-node:
+  dcae-datalake-feeder:
+    enabled: true
+  dcae-hv-ves-collector:
+    enabled: true
+  dcae-ms-healthcheck:
+    enabled: true
+  dcae-prh:
+    enabled: true
+  dcae-restconf-collector:
+    enabled: false
+  dcae-ves-collector:
+    enabled: true
+    applicationConfig:
+      auth.method: "noAuth"
+  dcae-ves-openapi-manager:
     enabled: true
-oof:
-  enabled: true
-msb:
-  enabled: true
 multicloud:
   enabled: true
-nbi:
+platform:
   enabled: true
+  cmpv2-cert-service:
+    enabled: false
 policy:
   enabled: true
 portal-ng:
@@ -78,6 +85,16 @@ sdc:
   enabled: true
 sdnc:
   enabled: true
+  network-name-gen:
+    enabled: true
+  dgbuilder:
+    enabled: true
+  ueb-listener:
+    enabled: true
+  sdnc-ansible-server:
+    enabled: true
+  sdnc-web:
+    enabled: true
 so:
   enabled: true
 strimzi:
@@ -86,8 +103,6 @@ strimzi:
     enabled: true
 uui:
   enabled: true
-vfc:
+a1policymanagement:
   enabled: true
-vnfsdk:
-  enabled: true
-
+                                                                                                                                                                      55,15         39%
index 027f8b3..444d904 100644 (file)
@@ -25,72 +25,34 @@ mariadb-galera:
   enabled: true
 postgres:
   enabled: true
+authentication:
+  enabled: true
 aai:
   enabled: true
 cds:
   enabled: true
-cli:
-  enabled: true
 cps:
   enabled: true
 dcaegen2-services:
   enabled: true
-  dcae-datafile-collector:
-    enabled: true
   dcae-datalake-admin-ui:
     enabled: true
   dcae-datalake-des:
     enabled: true
   dcae-datalake-feeder:
     enabled: true
-  dcae-heartbeat:
-    enabled: true
   dcae-hv-ves-collector:
     enabled: true
-  dcae-kpi-ms:
-    enabled: true
   dcae-ms-healthcheck:
     enabled: true
-  dcae-pm-mapper:
-    enabled: true
-  dcae-pmsh:
-    enabled: true
   dcae-prh:
     enabled: true
-  dcae-restconf-collector:
-    enabled: true
-  dcae-slice-analysis-ms:
-    enabled: true
-  dcae-snmptrap-collector:
-    enabled: true
-  dcae-son-handler:
-    enabled: true
-  dcae-tcagen2:
-    enabled: true
   dcae-ves-collector:
     enabled: true
-  dcae-ves-mapper:
-    enabled: true
   dcae-ves-openapi-manager:
     enabled: true
-holmes:
-  enabled: true
-dmaap:
-  enabled: true
-  message-router:
-    enabled: true
-  dmaap-dr-prov:
-    enabled: true
-  dmaap-dr-node:
-    enabled: true
-oof:
-  enabled: true
-msb:
-  enabled: true
 multicloud:
   enabled: true
-nbi:
-  enabled: true
 policy:
   enabled: true
 portal-ng:
@@ -101,6 +63,16 @@ sdc:
   enabled: true
 sdnc:
   enabled: true
+  network-name-gen:
+    enabled: true
+  dgbuilder:
+    enabled: true
+  ueb-listener:
+    enabled: true
+  sdnc-ansible-server:
+    enabled: true
+  sdnc-web:
+    enabled: true
 so:
   enabled: true
 strimzi:
@@ -109,12 +81,6 @@ strimzi:
     enabled: true
 uui:
   enabled: true
-vfc:
-  enabled: true
-vnfsdk:
-  enabled: true
-modeling:
-  enabled: true
 platform:
   enabled: true
 a1policymanagement:
index 14748dd..5ce3a97 100644 (file)
@@ -25,20 +25,6 @@ aai:
   enabled: true
 dcaegen2-services:
   enabled: true
-holmes:
-  enabled: true
-dmaap:
-  enabled: true
-  message-router:
-    enabled: true
-  dmaap-dr-prov:
-    enabled: false
-  dmaap-dr-node:
-    enabled: false
-oof:
-  enabled: true
-msb:
-  enabled: true
 policy:
   enabled: true
 portal-ng:
index dc5da35..6877e33 100644 (file)
@@ -63,32 +63,14 @@ aai:
 cassandra:
   enabled: true
   replicaCount: 3
-cli:
-  enabled: false
 cps:
   enabled: false
 dcaegen2-services:
   enabled: false
-dmaap:
-  enabled: true
-  message-router:
-    enabled: true
-  dmaap-dr-prov:
-    enabled: true
-  dmaap-dr-node:
-    enabled: true
-holmes:
-  enabled: false
 mariadb-galera:
   enabled: true
-msb:
-  enabled: false
 multicloud:
   enabled: false
-nbi:
-  enabled: false
-oof:
-  enabled: false
 policy:
   enabled: false
 portal-ng:
@@ -130,10 +112,5 @@ strimzi:
     enabled: true
 uui:
   enabled: false
-vfc:
-  enabled: false
-vnfsdk:
-  enabled: false
 cds:
   enabled: true
-
index 5f48a5e..b7cc78f 100755 (executable)
@@ -37,6 +37,7 @@ global:
   quayRepository: quay.io
   googleK8sRepository: k8s.gcr.io
   githubContainerRegistry: ghcr.io
+  mariadbContainerRegistry: docker-registry3.mariadb.com
 
   # Default credentials
   # they're optional. If the target repository doesn't need them, comment them
@@ -81,7 +82,7 @@ global:
   curlImage: curlimages/curl:7.80.0
 
   # env substitution image
-  envsubstImage: dibi/envsubst:1
+  envsubstImage: dibi/envsubst:latest
 
   # generate htpasswd files image
   # there's only latest image for htpasswd
@@ -94,7 +95,10 @@ global:
   loggingImage: beats/filebeat:5.5.0
 
   # mariadb client image
-  mariadbImage: bitnami/mariadb:10.5.8
+  mariadbImage: mariadb:11.7.2
+
+  # mongodb server image
+  mongodbImage: percona/percona-server-mongodb:7.0.16-10
 
   # nginx server image
   nginxImage: bitnami/nginx:1.21.4
@@ -103,7 +107,7 @@ global:
   postgresImage: crunchydata/crunchy-postgres:centos8-13.2-4.6.1
 
   # readiness check image
-  readinessImage: onap/oom/readiness:6.0.3
+  readinessImage: onap/oom/readiness:6.2.0
 
   # image pull policy
   pullPolicy: Always
@@ -115,6 +119,14 @@ global:
   # {{ template "common.fullname" . }}.{{ template "common.namespace" . }}.svc.{{ .Values.global.clusterName }}
   clusterName: cluster.local
 
+  # enable this if you have deployed Jaeger alongside ONAP
+  tracing:
+    enabled: false
+    collector:
+      baseUrl: http://jaeger-collector.istio-config:9411
+    sampling:
+      probability: 1.0 # percentage of requests that are sampled (between 0-1/0%-100%)
+
   # default mount path root directory referenced
   # by persistent volumes and log files
   persistence:
@@ -199,6 +211,9 @@ global:
     tls: true
     # be aware that linkerd is not well tested
     engine: "istio" # valid value: istio or linkerd
+    # if nativeSidecars are enabled in Istio, this value can be set to "true"
+    # and will disable the deployment of sidecar killer containers in jobs
+    nativeSidecars: false
 
   # Global Istio Authorization Policy configuration
   authorizationPolicies:
@@ -297,6 +312,8 @@ global:
 # to customize the ONAP deployment.
 #################################################################
 
+authentication:
+  enabled: false
 aai:
   enabled: false
 cassandra:
index aec56cf..c3f7768 100644 (file)
@@ -3,6 +3,7 @@
 # Modifications Copyright © 2020 Nokia
 # Modifications Copyright © 2021 Orange
 # Modifications Copyright © 2021 Nordix Foundation
+# Modifications Copyright © 2024 Deutsche Telekom AG
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -34,11 +35,3 @@ dependencies:
     version: ~13.x-0
     repository: '@local'
     condition: chartmuseum.enabled
-  - name: keycloak-init
-    version: ~13.x-0
-    repository: '@local'
-    condition: keycloak-init.enabled
-  - name: oauth2-proxy
-    version: ~13.x-0
-    repository: '@local'
-    condition: oauth2-proxy.enabled
index 3956255..fea1a1a 100644 (file)
@@ -27,21 +27,6 @@ spec:
     metadata: {{- include "common.templateMetadata" . | nindent 6 }}
     spec:
       {{ include "common.podSecurityContext" . | indent 7 | trim}}
-      initContainers:
-      - name: volume-permissions
-        image: {{ include "repositoryGenerator.image.busybox" . }}
-        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-        command:
-          - sh
-        args:
-          - "-c"
-          - |
-            chown -R {{ .Values.securityContext.user_id }}:{{ .Values.securityContext.group_id }} //chartmuseum-persist
-        securityContext:
-          runAsUser: 0
-        volumeMounts:
-          - name: chart-persistent
-            mountPath: "/chartmuseum-persist"
       containers:
         - name: {{ include "common.name" . }}
           image:  {{  include "repositoryGenerator.githubContainerRegistry" . }}/{{ .Values.image }}
index 6d48efd..70bd872 100644 (file)
@@ -15,7 +15,7 @@
 # Global
 global:
   nodePortPrefix: 302
-  readinessImage: onap/oom/readiness:6.0.3
+  readinessImage: onap/oom/readiness:6.1.2
   loggingRepository: docker.elastic.co
   loggingImage: beats/filebeat:5.5.0
   busyboxRepository: registry.hub.docker.com
@@ -58,7 +58,3 @@ cmpv2issuer:
     certRef: tls.crt
     keyRef: tls.key
     cacertRef: ca.crt
-
-
-
-
diff --git a/kubernetes/platform/components/keycloak-init/resources/realms/onap-realm.json b/kubernetes/platform/components/keycloak-init/resources/realms/onap-realm.json
deleted file mode 100644 (file)
index d845c60..0000000
+++ /dev/null
@@ -1,426 +0,0 @@
-{
-  "id": "ONAP",
-  "realm": "ONAP",
-  "enabled": true,
-  "roles": {
-    "realm": [
-      {
-        "name": "onap_admin",
-        "description": "User role for administration tasks in the portal.",
-        "composite": false,
-        "clientRole": false,
-        "containerId": "onap",
-        "attributes": {}
-      },
-      {
-        "name": "user",
-        "composite": false,
-        "clientRole": false,
-        "containerId": "onap",
-        "attributes": {}
-      },
-      {
-        "name": "admin",
-        "composite": false,
-        "clientRole": false,
-        "containerId": "onap",
-        "attributes": {}
-      },
-      {
-        "name": "onap_designer",
-        "description": "User role for designer tasks in the portal.",
-        "composite": false,
-        "clientRole": false,
-        "containerId": "onap",
-        "attributes": {}
-      },
-      {
-        "name": "offline_access",
-        "description": "${role_offline-access}",
-        "composite": false,
-        "clientRole": false,
-        "containerId": "onap",
-        "attributes": {}
-      },
-      {
-        "name": "onap_operator",
-        "description": "User role for operator tasks in the portal.",
-        "composite": false,
-        "clientRole": false,
-        "containerId": "onap",
-        "attributes": {}
-      },
-      {
-        "name": "uma_authorization",
-        "description": "${role_uma_authorization}",
-        "composite": false,
-        "clientRole": false,
-        "containerId": "onap",
-        "attributes": {}
-      },
-      {
-        "name": "default-roles-onap",
-        "description": "${role_default-roles}",
-        "composite": true,
-        "composites": {
-          "realm": [
-            "offline_access",
-            "uma_authorization"
-          ],
-          "client": {
-            "account": [
-              "view-profile",
-              "manage-account"
-            ]
-          }
-        },
-        "clientRole": false,
-        "containerId": "onap",
-        "attributes": {}
-      }
-    ]
-  },
-  "groups": [
-    {
-      "name": "admins",
-      "path": "/admins",
-      "attributes": {},
-      "realmRoles": [],
-      "clientRoles": {},
-      "subGroups": []
-    }
-  ],
-  "clients": [
-    {
-      "clientId": "oauth2-proxy",
-      "name": "Oauth2 Proxy",
-      "description": "",
-      "rootUrl": "",
-      "adminUrl": "",
-      "baseUrl": "",
-      "surrogateAuthRequired": false,
-      "enabled": true,
-      "alwaysDisplayInConsole": false,
-      "clientAuthenticatorType": "client-secret",
-      "secret": "5YSOkJz99WHv8enDZPknzJuGqVSerELp",
-      "redirectUris": [
-        "*"
-      ],
-      "webOrigins": [],
-      "notBefore": 0,
-      "bearerOnly": false,
-      "consentRequired": false,
-      "standardFlowEnabled": true,
-      "implicitFlowEnabled": false,
-      "directAccessGrantsEnabled": true,
-      "serviceAccountsEnabled": false,
-      "publicClient": false,
-      "frontchannelLogout": true,
-      "protocol": "openid-connect",
-      "attributes": {
-        "tls-client-certificate-bound-access-tokens": "false",
-        "oidc.ciba.grant.enabled": "false",
-        "backchannel.logout.session.required": "true",
-        "client_credentials.use_refresh_token": "false",
-        "acr.loa.map": "{}",
-        "require.pushed.authorization.requests": "false",
-        "oauth2.device.authorization.grant.enabled": "false",
-        "display.on.consent.screen": "false",
-        "backchannel.logout.revoke.offline.tokens": "false",
-        "token.response.type.bearer.lower-case": "false",
-        "use.refresh.tokens": "true"
-      },
-      "authenticationFlowBindingOverrides": {},
-      "fullScopeAllowed": true,
-      "nodeReRegistrationTimeout": -1,
-      "protocolMappers": [
-        {
-          "name": "SDC-User",
-          "protocol": "openid-connect",
-          "protocolMapper": "oidc-usermodel-attribute-mapper",
-          "consentRequired": false,
-          "config": {
-            "multivalued": "false",
-            "userinfo.token.claim": "true",
-            "user.attribute": "sdc_user",
-            "id.token.claim": "true",
-            "access.token.claim": "true",
-            "claim.name": "sdc_user",
-            "jsonType.label": "String"
-          }
-        }
-      ],
-      "defaultClientScopes": [
-        "web-origins",
-        "acr",
-        "profile",
-        "roles",
-        "email"
-      ],
-      "optionalClientScopes": [
-        "address",
-        "phone",
-        "offline_access",
-        "groups",
-        "microprofile-jwt"
-      ]
-    },
-    {
-      "clientId": "portal-app",
-      "surrogateAuthRequired": false,
-      "enabled": true,
-      "alwaysDisplayInConsole": false,
-      "clientAuthenticatorType": "client-secret",
-      "redirectUris": [
-        "{{ .Values.portalUrl }}/*",
-        "http://localhost/*"
-      ],
-      "webOrigins": [
-        "*"
-      ],
-      "notBefore": 0,
-      "bearerOnly": false,
-      "consentRequired": false,
-      "standardFlowEnabled": true,
-      "implicitFlowEnabled": false,
-      "directAccessGrantsEnabled": true,
-      "serviceAccountsEnabled": false,
-      "publicClient": true,
-      "frontchannelLogout": false,
-      "protocol": "openid-connect",
-      "attributes": {
-        "oidc.ciba.grant.enabled": "false",
-        "backchannel.logout.session.required": "true",
-        "post.logout.redirect.uris": "{{ .Values.portalUrl }}/*",
-        "oauth2.device.authorization.grant.enabled": "false",
-        "display.on.consent.screen": "false",
-        "backchannel.logout.revoke.offline.tokens": "false"
-      },
-      "authenticationFlowBindingOverrides": {},
-      "fullScopeAllowed": true,
-      "nodeReRegistrationTimeout": -1,
-      "protocolMappers": [
-        {
-          "name": "User-Roles",
-          "protocol": "openid-connect",
-          "protocolMapper": "oidc-usermodel-realm-role-mapper",
-          "consentRequired": false,
-          "config": {
-            "id.token.claim": "true",
-            "access.token.claim": "true",
-            "claim.name": "roles",
-            "multivalued": "true",
-            "userinfo.token.claim": "true"
-          }
-        },
-        {
-          "name": "SDC-User",
-          "protocol": "openid-connect",
-          "protocolMapper": "oidc-usermodel-attribute-mapper",
-          "consentRequired": false,
-          "config": {
-            "userinfo.token.claim": "true",
-            "user.attribute": "sdc_user",
-            "id.token.claim": "true",
-            "access.token.claim": "true",
-            "claim.name": "sdc_user",
-            "jsonType.label": "String"
-          }
-        }
-      ],
-      "defaultClientScopes": [
-        "web-origins",
-        "acr",
-        "profile",
-        "roles",
-        "email"
-      ],
-      "optionalClientScopes": [
-        "address",
-        "phone",
-        "offline_access",
-        "microprofile-jwt"
-      ]
-    },
-    {
-      "clientId" : "portal-bff",
-      "surrogateAuthRequired" : false,
-      "enabled" : true,
-      "alwaysDisplayInConsole" : false,
-      "clientAuthenticatorType" : "client-secret",
-      "secret" : "pKOuVH1bwRZoNzp5P5t4GV8CqcCJYVtr",
-      "redirectUris" : [ ],
-      "webOrigins" : [ ],
-      "notBefore" : 0,
-      "bearerOnly" : false,
-      "consentRequired" : false,
-      "standardFlowEnabled" : false,
-      "implicitFlowEnabled" : false,
-      "directAccessGrantsEnabled" : false,
-      "serviceAccountsEnabled" : true,
-      "publicClient" : false,
-      "frontchannelLogout" : false,
-      "protocol" : "openid-connect",
-      "attributes" : {
-        "saml.force.post.binding" : "false",
-        "saml.multivalued.roles" : "false",
-        "frontchannel.logout.session.required" : "false",
-        "oauth2.device.authorization.grant.enabled" : "false",
-        "backchannel.logout.revoke.offline.tokens" : "false",
-        "saml.server.signature.keyinfo.ext" : "false",
-        "use.refresh.tokens" : "true",
-        "oidc.ciba.grant.enabled" : "false",
-        "backchannel.logout.session.required" : "true",
-        "client_credentials.use_refresh_token" : "false",
-        "require.pushed.authorization.requests" : "false",
-        "saml.client.signature" : "false",
-        "saml.allow.ecp.flow" : "false",
-        "id.token.as.detached.signature" : "false",
-        "saml.assertion.signature" : "false",
-        "client.secret.creation.time" : "1665048112",
-        "saml.encrypt" : "false",
-        "saml.server.signature" : "false",
-        "exclude.session.state.from.auth.response" : "false",
-        "saml.artifact.binding" : "false",
-        "saml_force_name_id_format" : "false",
-        "acr.loa.map" : "{}",
-        "tls.client.certificate.bound.access.tokens" : "false",
-        "saml.authnstatement" : "false",
-        "display.on.consent.screen" : "false",
-        "token.response.type.bearer.lower-case" : "false",
-        "saml.onetimeuse.condition" : "false"
-      },
-      "authenticationFlowBindingOverrides" : { },
-      "fullScopeAllowed" : true,
-      "nodeReRegistrationTimeout" : -1,
-      "protocolMappers" : [ {
-        "name" : "Client Host",
-        "protocol" : "openid-connect",
-        "protocolMapper" : "oidc-usersessionmodel-note-mapper",
-        "consentRequired" : false,
-        "config" : {
-          "user.session.note" : "clientHost",
-          "id.token.claim" : "true",
-          "access.token.claim" : "true",
-          "claim.name" : "clientHost",
-          "jsonType.label" : "String"
-        }
-      }, {
-        "name" : "Client IP Address",
-        "protocol" : "openid-connect",
-        "protocolMapper" : "oidc-usersessionmodel-note-mapper",
-        "consentRequired" : false,
-        "config" : {
-          "user.session.note" : "clientAddress",
-          "id.token.claim" : "true",
-          "access.token.claim" : "true",
-          "claim.name" : "clientAddress",
-          "jsonType.label" : "String"
-        }
-      } ],
-      "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "email" ],
-      "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ]
-    }
-  ],
-  "users": [
-    {
-      "createdTimestamp" : 1664965113698,
-      "username" : "onap-admin",
-      "enabled" : true,
-      "totp" : false,
-      "emailVerified" : false,
-      "attributes" : {
-        "sdc_user" : [ "cs0008" ]
-      },
-      "credentials" : [ {
-        "type" : "password",
-        "createdDate" : 1664965134586,
-        "secretData" : "{\"value\":\"nD4K4x8HEgk6xlWIAgzZOE+EOjdbovJfEa7N3WXwIMCWCfdXpn7Riys7hZhI1NbKcc9QPI9j8LQB/JSuZVcXKA==\",\"salt\":\"T8X9A9tT2cyLvEjHFo+zuQ==\",\"additionalParameters\":{}}",
-        "credentialData" : "{\"hashIterations\":27500,\"algorithm\":\"pbkdf2-sha256\",\"additionalParameters\":{}}"
-      } ],
-      "disableableCredentialTypes" : [ ],
-      "requiredActions" : [ ],
-      "realmRoles" : [ "default-roles-onap", "onap_admin" ],
-      "notBefore" : 0,
-      "groups" : [ ]
-    }, {
-      "createdTimestamp" : 1665048354760,
-      "username" : "onap-designer",
-      "enabled" : true,
-      "totp" : false,
-      "emailVerified" : false,
-      "attributes" : {
-        "sec_user" : [ "cs0008" ]
-      },
-      "credentials" : [ ],
-      "disableableCredentialTypes" : [ ],
-      "requiredActions" : [ ],
-      "realmRoles" : [ "default-roles-onap", "onap_designer" ],
-      "notBefore" : 0,
-      "groups" : [ ]
-    }, {
-      "createdTimestamp" : 1665048547054,
-      "username" : "onap-operator",
-      "enabled" : true,
-      "totp" : false,
-      "emailVerified" : false,
-      "attributes" : {
-        "sdc_user" : [ "cs0008" ]
-      },
-      "credentials" : [ ],
-      "disableableCredentialTypes" : [ ],
-      "requiredActions" : [ ],
-      "realmRoles" : [ "default-roles-onap", "onap_operator" ],
-      "notBefore" : 0,
-      "groups" : [ ]
-    }, {
-      "createdTimestamp" : 1665048112458,
-      "username" : "service-account-portal-bff",
-      "enabled" : true,
-      "totp" : false,
-      "emailVerified" : false,
-      "serviceAccountClientId" : "portal-bff",
-      "credentials" : [ ],
-      "disableableCredentialTypes" : [ ],
-      "requiredActions" : [ ],
-      "realmRoles" : [ "default-roles-onap" ],
-      "clientRoles" : {
-        "realm-management" : [ "manage-realm", "manage-users" ]
-      },
-      "notBefore" : 0,
-      "groups" : [ ]
-    }
-  ],
-  "clientScopes": [
-    {
-      "name": "groups",
-      "description": "Membership to a group",
-      "protocol": "openid-connect",
-      "attributes": {
-        "include.in.token.scope": "true",
-        "display.on.consent.screen": "true",
-        "gui.order": "",
-        "consent.screen.text": ""
-      },
-      "protocolMappers": [
-        {
-          "name": "groups",
-          "protocol": "openid-connect",
-          "protocolMapper": "oidc-group-membership-mapper",
-          "consentRequired": false,
-          "config": {
-            "full.path": "false",
-            "id.token.claim": "true",
-            "access.token.claim": "true",
-            "claim.name": "groups",
-            "userinfo.token.claim": "true"
-          }
-        }
-      ]
-    }
-  ],
-  "attributes": {
-    "frontendUrl": "{{ .Values.KEYCLOAK_URL }}",
-    "acr.loa.map": "{\"ABC\":\"5\"}"
-  }
-}
diff --git a/kubernetes/platform/components/keycloak-init/templates/secret.yaml b/kubernetes/platform/components/keycloak-init/templates/secret.yaml
deleted file mode 100644 (file)
index 0d9b387..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
----
-apiVersion: v1
-kind: Secret
-metadata:
-  name: keycloak-config-cli-config-realms
-  namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
-{{- with .Files.Glob "resources/realms/*json" }}
-data:
-{{- range $path, $bytes := . }}
-  {{ base $path }}: {{ tpl ($.Files.Get $path) $ | b64enc | quote }}
-{{- end }}
-{{- end }}
diff --git a/kubernetes/platform/components/keycloak-init/values.yaml b/kubernetes/platform/components/keycloak-init/values.yaml
deleted file mode 100644 (file)
index a33ef2c..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright © 2022, Deutsche Telekom
-#
-# 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.
-
-global:
-  # Global ingress configuration
-  ingress:
-    enabled: false
-    virtualhost:
-      baseurl: "simpledemo.onap.org"
-
-KEYCLOAK_URL: &kc-url "https://keycloak-ui.simpledemo.onap.org/auth/"
-PORTAL_URL: "https://portal-ui.simpledemo.onap.org"
-
-onap-keycloak-config-cli:
-  image:
-    pullSecrets:
-      - name: onap-docker-registry-key
-  #existingSecret: "keycloak-keycloakx-admin-creds"
-  env:
-    KEYCLOAK_URL: http://keycloak-keycloakx-http.keycloak.svc.cluster.local/auth/
-    KEYCLOAK_SSLVERIFY: "false"
-    KEYCLOAK_AVAILABILITYCHECK_ENABLED: "true"
-  secrets:
-    KEYCLOAK_PASSWORD: secret
-  existingConfigSecret: "keycloak-config-cli-config-realms"
-
-serviceAccount:
-  nameOverride: keycloak-init
-  roles:
-    - read
diff --git a/kubernetes/platform/components/oauth2-proxy/Chart.yaml b/kubernetes/platform/components/oauth2-proxy/Chart.yaml
deleted file mode 100644 (file)
index 13da577..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-#============LICENSE_START========================================================
-# ================================================================================
-# Copyright © 2022 Deutsche Telekom
-# ================================================================================
-# Original licence (https://github.com/codecentric/helm-charts/blob/master/LICENSE)
-# 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.
-# ============LICENSE_END=========================================================
-apiVersion: v2
-version: 13.0.0
-description: ONAP Oauth2-proxy
-name: oauth2-proxy
-sources:
-- https://github.com/oauth2-proxy/manifests
-
-dependencies:
-  - name: common
-    version: ~13.x-0
-    repository: '@local'
-  - name: serviceAccount
-    version: ~13.x-0
-    repository: '@local'
-  - name: onap-oauth2-proxy
-    version: 6.10.1
-    repository: 'file://components/oauth2-proxy'
\ No newline at end of file
diff --git a/kubernetes/platform/components/oauth2-proxy/Makefile b/kubernetes/platform/components/oauth2-proxy/Makefile
deleted file mode 100644 (file)
index 5970a97..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-# Copyright © 2020 Samsung Electronics
-# Modifications Copyright © 2020 Nokia
-#
-# 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.
-
-ROOT_DIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
-OUTPUT_DIR := $(ROOT_DIR)/../../dist
-PACKAGE_DIR := $(OUTPUT_DIR)/packages
-SECRET_DIR := $(OUTPUT_DIR)/secrets
-
-EXCLUDES :=
-HELM_BIN := helm
-ifneq ($(SKIP_LINT),TRUE)
-       HELM_LINT_CMD := $(HELM_BIN) lint
-else
-       HELM_LINT_CMD := echo "Skipping linting of"
-endif
-
-HELM_CHARTS := $(filter-out $(EXCLUDES), $(sort $(patsubst %/.,%,$(wildcard */.))))
-HELM_VER := $(shell $(HELM_BIN) version --template "{{.Version}}")
-
-.PHONY: $(EXCLUDES) $(HELM_CHARTS)
-
-all: $(HELM_CHARTS)
-
-$(HELM_CHARTS):
-       @echo "\n[$@]"
-       @make package-$@
-
-make-%:
-       @if [ -f $*/Makefile ]; then make -C $*; fi
-
-dep-%: make-%
-       @if [ -f $*/Chart.yaml ]; then $(HELM_BIN) dep up $*; fi
-
-lint-%: dep-%
-       @if [ -f $*/Chart.yaml ]; then $(HELM_LINT_CMD) $*; fi
-
-package-%: lint-%
-       @mkdir -p $(PACKAGE_DIR)
-       @if [ -f $*/Chart.yaml ]; then PACKAGE_NAME=$$($(HELM_BIN) package -d $(PACKAGE_DIR) $* | cut -d":" -f2) && $(HELM_BIN) cm-push -f $$PACKAGE_NAME local; fi
-       @sleep 3
-       #@$(HELM_BIN) repo index $(PACKAGE_DIR)
-
-clean:
-       @rm -f */Chart.lock
-       @rm -f *tgz */charts/*tgz
-       @rm -rf $(PACKAGE_DIR)
-%:
-       @:
diff --git a/kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/.helmignore b/kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/.helmignore
deleted file mode 100644 (file)
index 825c007..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-# Patterns to ignore when building packages.
-# This supports shell glob matching, relative path matching, and
-# negation (prefixed with !). Only one pattern per line.
-.DS_Store
-# Common VCS dirs
-.git/
-.gitignore
-.bzr/
-.bzrignore
-.hg/
-.hgignore
-.svn/
-# Common backup files
-*.swp
-*.bak
-*.tmp
-*~
-# Various IDEs
-.project
-.idea/
-*.tmproj
-
-OWNERS
diff --git a/kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/README.md b/kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/README.md
deleted file mode 100644 (file)
index 9e18388..0000000
+++ /dev/null
@@ -1,323 +0,0 @@
-# oauth2-proxy
-
-[oauth2-proxy](https://github.com/oauth2-proxy/oauth2-proxy) is a reverse proxy and static file server that provides authentication using Providers (Google, GitHub, and others) to validate accounts by email, domain or group.
-
-## TL;DR;
-
-```console
-$ helm repo add oauth2-proxy https://oauth2-proxy.github.io/manifests
-$ helm install my-release oauth2-proxy/oauth2-proxy
-```
-
-## Introduction
-
-This chart bootstraps an oauth2-proxy deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
-
-## Installing the Chart
-
-To install the chart with the release name `my-release`:
-
-```console
-$ helm install my-release oauth2-proxy/oauth2-proxy
-```
-
-The command deploys oauth2-proxy on the Kubernetes cluster in the default configuration. The [configuration](#configuration) section lists the parameters that can be configured during installation.
-
-## Uninstalling the Chart
-
-To uninstall/delete the `my-release` deployment:
-
-```console
-$ helm uninstall my-release
-```
-
-The command removes all the Kubernetes components associated with the chart and deletes the release.
-
-## Upgrading an existing Release to a new major version
-
-A major chart version change (like v1.2.3 -> v2.0.0) indicates that there is an
-incompatible breaking change needing manual actions.
-
-### To 1.0.0
-
-This version upgrades oauth2-proxy to v4.0.0. Please see the [changelog](https://github.com/oauth2-proxy/oauth2-proxy/blob/v4.0.0/CHANGELOG.md#v400) in order to upgrade.
-
-### To 2.0.0
-
-Version 2.0.0 of this chart introduces support for Kubernetes v1.16.x by way of addressing the deprecation of the Deployment object apiVersion `apps/v1beta2`.  See [the v1.16 API deprecations page](https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16/) for more information.
-
-Due to [this issue](https://github.com/helm/helm/issues/6583) there may be errors performing a `helm upgrade` of this chart from versions earlier than 2.0.0.
-
-### To 3.0.0
-
-Version 3.0.0 introduces support for [EKS IAM roles for service accounts](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) by adding a managed service account to the chart.  This is a breaking change since the service account is enabled by default.  To disable this behaviour set `serviceAccount.enabled` to `false`
-
-### To 4.0.0
-
-Version 4.0.0 adds support for the new Ingress apiVersion **networking.k8s.io/v1**.
-Therefore the `ingress.extraPaths` parameter needs to be updated to the new format.
-See the [v1.22 API deprecations guide](https://kubernetes.io/docs/reference/using-api/deprecation-guide/#ingress-v122) for more information.
-
-For the same reason `service.port` was renamed to `service.portNumber`.
-
-### To 5.0.0
-
-Version 5.0.0 introduces support for custom labels and refactor [Kubernetes recommended labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/common-labels/). This is a breaking change because many labels of all resources need to be updated to stay consistent.
-
-In order to upgrade, delete the Deployment before upgrading:
-
-```bash
-kubectl delete deployment my-release-oauth2-proxy
-```
-
-This will introduce a slight downtime.
-
-For users who don't want downtime, you can perform these actions:
-
-- Perform a non-cascading removal of the deployment that keeps the pods running
-- Add new labels to pods
-- Perform `helm upgrade`
-
-### To 6.0.0
-
-Version 6.0.0 bumps the version of the redis subchart from ~10.6.0 to ~16.4.0. You probably need to adjust your redis config. See [here](https://github.com/bitnami/charts/tree/master/bitnami/redis#upgrading) for detailed upgrade instructions.
-
-## Configuration
-
-The following table lists the configurable parameters of the oauth2-proxy chart and their default values.
-
-Parameter | Description | Default
---- | --- | ---
-`affinity` | node/pod affinities | None
-`authenticatedEmailsFile.enabled` | Enables authorize individual email addresses | `false`
-`authenticatedEmailsFile.persistence` | Defines how the email addresses file will be projected, via a configmap or secret | `configmap`
-`authenticatedEmailsFile.template` | Name of the configmap or secret that is handled outside of that chart | `""`
-`authenticatedEmailsFile.restrictedUserAccessKey` | The key of the configmap or secret that holds the email addresses list | `""`
-`authenticatedEmailsFile.restricted_access` | [email addresses](https://oauth2-proxy.github.io/oauth2-proxy/docs/configuration/oauth_provider#email-authentication) list config | `""`
-`authenticatedEmailsFile.annotations` | configmap or secret annotations | `nil`
-`config.clientID` | oauth client ID | `""`
-`config.clientSecret` | oauth client secret | `""`
-`config.cookieSecret` | server specific cookie for the secret; create a new one with `openssl rand -base64 32 \| head -c 32 \| base64` | `""`
-`config.existingSecret` | existing Kubernetes secret to use for OAuth2 credentials. See [secret template](https://github.com/oauth2-proxy/manifests/blob/master/helm/oauth2-proxy/templates/secret.yaml) for the required values | `nil`
-`config.configFile` | custom [oauth2_proxy.cfg](https://github.com/oauth2-proxy/oauth2-proxy/blob/master/contrib/oauth2-proxy.cfg.example) contents for settings not overridable via environment nor command line | `""`
-`config.existingConfig` | existing Kubernetes configmap to use for the configuration file. See [config template](https://github.com/oauth2-proxy/manifests/blob/master/helm/oauth2-proxy/templates/configmap.yaml) for the required values | `nil`
-`config.cookieName` | The name of the cookie that oauth2-proxy will create. | `""`
-`alphaConfig.enabled` | Flag to toggle any alpha config related logic | `false`
-`alphaConfig.annotations` | Configmap annotations | `{}`
-`alphaConfig.serverConfigData` | Arbitrary configuration data to append to the server section | `{}`
-`alphaConfig.metricsConfigData` | Arbitrary configuration data to append to the metrics section | `{}`
-`alphaConfig.configData` | Arbitrary configuration data to append | `{}`
-`alphaConfig.existingConfig` | existing Kubernetes configmap to use for the alpha configuration file. See [config template](https://github.com/oauth2-proxy/manifests/blob/master/helm/oauth2-proxy/templates/configmap-alpha.yaml) for the required values | `nil`
-`customLabels` | Custom labels to add into metadata | `{}` |
-`config.google.adminEmail` | user impersonated by the google service account | `""`
-`config.google.useApplicationDefaultCredentials` | use the application-default credentials (i.e. Workload Identity on GKE) instead of providing a service account json | `false`
-`config.google.targetPrincipal` | service account to use/impersonate | `""`
-`config.google.serviceAccountJson` | google service account json contents | `""`
-`config.google.existingConfig` | existing Kubernetes configmap to use for the service account file. See [google secret template](https://github.com/oauth2-proxy/manifests/blob/master/helm/oauth2-proxy/templates/google-secret.yaml) for the required values | `nil`
-`config.google.groups` | restrict logins to members of these google groups | `[]`
-`containerPort` | used to customise port on the deployment | `""`
-`extraArgs` | Extra arguments to give the binary. Either as a map with key:value pairs or as a list type, which allows to configure the same flag multiple times. (e.g. `["--allowed-role=CLIENT_ID:CLIENT_ROLE_NAME_A", "--allowed-role=CLIENT_ID:CLIENT_ROLE_NAME_B"]`). | `{}` or `[]`
-`extraContainers` | List of extra containers to be added to the pod | `[]`
-`extraEnv` | key:value list of extra environment variables to give the binary | `[]`
-`extraVolumes` | list of extra volumes | `[]`
-`extraVolumeMounts` | list of extra volumeMounts | `[]`
-`hostAlias.enabled`  | provide extra ip:hostname alias for network name resolution.
-`hostAlias.ip`  | `ip` address `hostAliases.hostname` should resolve to.
-`hostAlias.hostname`  | `hostname` associated to `hostAliases.ip`.
-`htpasswdFile.enabled` | enable htpasswd-file option | `false`
-`htpasswdFile.entries` | list of [encrypted user:passwords](https://oauth2-proxy.github.io/oauth2-proxy/docs/configuration/overview#command-line-options) | `{}`
-`htpasswdFile.existingSecret` | existing Kubernetes secret to use for OAuth2 htpasswd file | `""`
-`httpScheme` | `http` or `https`. `name` used for port on the deployment. `httpGet` port `name` and `scheme` used for `liveness`- and `readinessProbes`. `name` and `targetPort` used for the service. | `http`
-`image.pullPolicy` | Image pull policy | `IfNotPresent`
-`image.repository` | Image repository | `quay.io/oauth2-proxy/oauth2-proxy`
-`image.tag` | Image tag | `""` (defaults to appVersion)
-`imagePullSecrets` | Specify image pull secrets | `nil` (does not add image pull secrets to deployed pods)
-`ingress.enabled` | Enable Ingress | `false`
-`ingress.className` | name referencing IngressClass | `nil`
-`ingress.path` | Ingress accepted path | `/`
-`ingress.pathType` | Ingress [path type](https://kubernetes.io/docs/concepts/services-networking/ingress/#path-types) | `ImplementationSpecific`
-`ingress.extraPaths` | Ingress extra paths to prepend to every host configuration. Useful when configuring [custom actions with AWS ALB Ingress Controller](https://kubernetes-sigs.github.io/aws-alb-ingress-controller/guide/ingress/annotation/#actions). | `[]`
-`ingress.annotations` | Ingress annotations | `nil`
-`ingress.hosts` | Ingress accepted hostnames | `nil`
-`ingress.tls` | Ingress TLS configuration | `nil`
-`livenessProbe.enabled`  | enable Kubernetes livenessProbe. Disable to use oauth2-proxy with Istio mTLS. See [Istio FAQ](https://istio.io/help/faq/security/#k8s-health-checks) | `true`
-`livenessProbe.initialDelaySeconds` | number of seconds | 0
-`livenessProbe.timeoutSeconds` | number of seconds | 1
-`nodeSelector` | node labels for pod assignment | `{}`
-`deploymentAnnotations` | annotations to add to the deployment | `{}`
-`podAnnotations` | annotations to add to each pod | `{}`
-`podLabels` | additional labesl to add to each pod | `{}`
-`podDisruptionBudget.enabled`| Enabled creation of PodDisruptionBudget (only if replicaCount > 1) | true
-`podDisruptionBudget.minAvailable`| minAvailable parameter for PodDisruptionBudget | 1
-`podSecurityContext` | Kubernetes security context to apply to pod | `{}`
-`priorityClassName` | priorityClassName | `nil`
-`readinessProbe.enabled` | enable Kubernetes readinessProbe. Disable to use oauth2-proxy with Istio mTLS. See [Istio FAQ](https://istio.io/help/faq/security/#k8s-health-checks) | `true`
-`readinessProbe.initialDelaySeconds` | number of seconds | 0
-`readinessProbe.timeoutSeconds` | number of seconds | 5
-`readinessProbe.periodSeconds` | number of seconds | 10
-`readinessProbe.successThreshold` | number of successes | 1
-`replicaCount` | desired number of pods | `1`
-`resources` | pod resource requests & limits | `{}`
-`revisionHistoryLimit` | maximum number of revisions maintained | 10
-`service.portNumber` | port number for the service | `80`
-`service.appProtocol` | application protocol on the port of the service | `http`
-`service.type` | type of service | `ClusterIP`
-`service.clusterIP` | cluster ip address | `nil`
-`service.loadBalancerIP` | ip of load balancer | `nil`
-`service.loadBalancerSourceRanges` | allowed source ranges in load balancer | `nil`
-`service.nodePort` | external port number for the service when service.type is `NodePort` | `nil`
-`serviceAccount.enabled` | create a service account | `true`
-`serviceAccount.name` | the service account name | ``
-`serviceAccount.annotations` | (optional) annotations for the service account | `{}`
-`tolerations` | list of node taints to tolerate | `[]`
-`securityContext.enabled` | enable Kubernetes security context on container | `false`
-`securityContext.runAsNonRoot` | make sure that the container runs as a non-root user | `true`
-`proxyVarsAsSecrets` | choose between environment values or secrets for setting up OAUTH2_PROXY variables. When set to false, remember to add the variables OAUTH2_PROXY_CLIENT_ID, OAUTH2_PROXY_CLIENT_SECRET, OAUTH2_PROXY_COOKIE_SECRET in extraEnv | `true`
-`sessionStorage.type` | Session storage type which can be one of the following: cookie or redis | `cookie`
-`sessionStorage.redis.existingSecret` | Name of the Kubernetes secret containing the redis & redis sentinel password values (see also `sessionStorage.redis.passwordKey`) | `""`
-`sessionStorage.redis.password` | Redis password. Applicable for all Redis configurations. Taken from redis subchart secret if not set. sessionStorage.redis.existingSecret takes precedence | `nil`
-`sessionStorage.redis.passwordKey` | Key of the Kubernetes secret data containing the redis password value | `redis-password`
-`sessionStorage.redis.clientType` | Allows the user to select which type of client will be used for redis instance. Possible options are: `sentinel`, `cluster` or `standalone` | `standalone`
-`sessionStorage.redis.standalone.connectionUrl` | URL of redis standalone server for redis session storage (e.g. `redis://HOST[:PORT]`). Automatically generated if not set. | `""`
-`sessionStorage.redis.cluster.connectionUrls` | List of Redis cluster connection URLs (e.g. `["redis://127.0.0.1:8000", "redis://127.0.0.1:8000"]`) | `[]`
-`sessionStorage.redis.sentinel.existingSecret` | Name of the Kubernetes secret containing the redis sentinel password value (see also `sessionStorage.redis.sentinel.passwordKey`). Default: `sessionStorage.redis.existingSecret` | `""`
-`sessionStorage.redis.sentinel.password` | Redis sentinel password. Used only for sentinel connection; any redis node passwords need to use `sessionStorage.redis.password` | `nil`
-`sessionStorage.redis.sentinel.passwordKey` | Key of the Kubernetes secret data containing the redis sentinel password value | `redis-sentinel-password`
-`sessionStorage.redis.sentinel.masterName` | Redis sentinel master name | `nil`
-`sessionStorage.redis.sentinel.connectionUrls` | List of Redis sentinel connection URLs (e.g. `["redis://127.0.0.1:8000", "redis://127.0.0.1:8000"]`) | `[]`
-`topologySpreadConstraints` | List of pod topology spread constraints | `[]`
-`redis.enabled` | Enable the redis subchart deployment | `false`
-`checkDeprecation` | Enable deprecation checks | `true`
-`metrics.enabled` | Enable Prometheus metrics endpoint | `true`
-`metrics.port` | Serve Prometheus metrics on this port | `44180`
-`metrics.nodePort` | External port for the metrics when service.type is `NodePort` | `nil`
-`metrics.service.appProtocol` | application protocol of the metrics port in the service | `http`
-`metrics.servicemonitor.enabled` | Enable Prometheus Operator ServiceMonitor | `false`
-`metrics.servicemonitor.namespace` | Define the namespace where to deploy the ServiceMonitor resource | `""`
-`metrics.servicemonitor.prometheusInstance` | Prometheus Instance definition | `default`
-`metrics.servicemonitor.interval` | Prometheus scrape interval | `60s`
-`metrics.servicemonitor.scrapeTimeout` | Prometheus scrape timeout | `30s`
-`metrics.servicemonitor.labels` | Add custom labels to the ServiceMonitor resource| `{}`
-`extraObjects` | Extra K8s manifests to deploy | `[]`
-
-Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
-
-```console
-$ helm install my-release oauth2-proxy/oauth2-proxy \
-  --set=image.tag=v0.0.2,resources.limits.cpu=200m
-```
-
-Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example,
-
-```console
-$ helm install my-release oauth2-proxy/oauth2-proxy -f values.yaml
-```
-
-> **Tip**: You can use the default [values.yaml](values.yaml)
-
-## TLS Configuration
-
-See: [TLS Configuration](https://oauth2-proxy.github.io/oauth2-proxy/docs/configuration/tls).
-Use ```values.yaml``` like:
-
-```yaml
-...
-extraArgs:
-  tls-cert-file: /path/to/cert.pem
-  tls-key-file: /path/to/cert.key
-
-extraVolumes:
-  - name: ssl-cert
-    secret:
-      secretName: my-ssl-secret
-
-extraVolumeMounts:
-  - mountPath: /path/to/
-    name: ssl-cert
-...
-```
-
-With a secret called `my-ssl-secret`:
-
-```yaml
-...
-data:
-  cert.pem: AB..==
-  cert.key: CD..==
-```
-
-## Extra environment variable templating
-The extraEnv value supports the tpl function which evaluate strings as templates inside the deployment template.
-This is useful to pass a template string as a value to the chart's extra environment variables and to render external configuration environment values
-
-
-```yaml
-...
-tplValue: "This is a test value for the tpl function"
-extraEnv:
-  - name: TEST_ENV_VAR_1
-    value: test_value_1
-  - name: TEST_ENV_VAR_2
-    value: '{{ .Values.tplValue }}'
-```
-
-## Custom templates configuration
-You can replace the default template files using a Kubernetes `configMap` volume. The default templates are the two files [sign_in.html](https://github.com/oauth2-proxy/oauth2-proxy/blob/master/pkg/app/pagewriter/sign_in.html) and [error.html](https://github.com/oauth2-proxy/oauth2-proxy/blob/master/pkg/app/pagewriter/error.html).
-
-```yaml
-config:
-  configFile: |
-    ...
-    custom_templates_dir = "/data/custom-templates"
-
-extraVolumes:
-  - name: custom-templates
-    configMap:
-      name: oauth2-proxy-custom-templates
-
-extraVolumeMounts:
-  - name: custom-templates
-    mountPath: "/data/custom-templates"
-    readOnly: true
-
-extraObjects:
-  - apiVersion: v1
-    kind: ConfigMap
-    metadata:
-      name: oauth2-proxy-custom-templates
-    data:
-      sign_in.html: |
-        <!DOCTYPE html>
-        <html>
-        <body>sign_in</body>
-        </html>
-      error.html: |
-        <!DOCTYPE html>
-        <html>
-        <body>
-        <h1>error</h1>
-        <p>{{.StatusCode}}</p>
-        </body>
-        </html>
-```
-## Multi whitelist-domain configuration
-For using multi whitelist-domain configuration for one Oauth2-proxy instance, you have to use the config.configFile section.
-
-It will be overwriting the `/etc/oauth2_proxy/oauth2_proxy.cfg` configuration file.
-In this example, Google provider is used, but you can find all other provider configuration here [oauth_provider](https://oauth2-proxy.github.io/oauth2-proxy/docs/configuration/oauth_provider/)
-
-```yaml
-config:
-  ...
-  clientID="$YOUR_GOOGLE_CLIENT_ID"
-  clientSecret="$YOUR_GOOGLE_CLIENT_SECRET"
-  cookieSecret="$YOUR_COOKIE_SECRET"
-  configFile: |
-    ...
-    email_domains = [ "*" ]
-    upstreams = [ "file:///dev/null" ]
-    cookie_secure = "false"
-    cookie_domains = [ ".domain.com", ".otherdomain.io" ]
-    whitelist_domains = [ ".domain.com", ".otherdomain.io"]
-    provider = "google"
-```
diff --git a/kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/ci/servicemonitor-values.yaml b/kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/ci/servicemonitor-values.yaml
deleted file mode 100644 (file)
index 9d31c28..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-metrics:
-  enabled: true
-  serviceMonitor:
-    enabled: true
diff --git a/kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/ci/tpl-values.yaml b/kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/ci/tpl-values.yaml
deleted file mode 100644 (file)
index 65977d9..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-extraEnv:
-  - name: TEST_ENV_VAR_2
-    value: '{{ $.Release.Name }}'
-ingress:
-  enabled: true
-  hosts:
-    - "{{ $.Release.Name }}.local"
-  tls:
-    - hosts:
-        - "{{ $.Release.Name }}.local"
-oauth2-proxy:
-  checkDeprecation: false
-  config:
-    clientSecret: '{{ $.Release.Name }}'
-    configFile: |
-      oidc_issuer_url = "https://{{ $.Release.Name }}/dex"
-
-pass_authorization_header: "true"
-
-extraArgs:
-  pass-authorization-header: "{{ $.Values.pass_authorization_header }}"
diff --git a/kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/templates/NOTES.txt b/kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/templates/NOTES.txt
deleted file mode 100644 (file)
index aa749e0..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-To verify that oauth2-proxy has started, run:
-
-  kubectl --namespace={{ .Release.Namespace }} get pods -l "app={{ template "oauth2-proxy.name" . }}"
diff --git a/kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/templates/configmap-alpha.yaml b/kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/templates/configmap-alpha.yaml
deleted file mode 100644 (file)
index 7ba0273..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-{{- if .Values.alphaConfig.enabled }}
-{{- if not .Values.alphaConfig.existingConfig }}
-apiVersion: v1
-kind: ConfigMap
-metadata:
-{{- if .Values.alphaConfig.annotations }}
-  annotations: {{- toYaml .Values.alphaConfig.annotations | nindent 4 }}
-{{- end }}
-  labels:
-    app: {{ template "oauth2-proxy.name" . }}
-    {{- include "oauth2-proxy.labels" . | indent 4 }}
-  name: {{ template "oauth2-proxy.fullname" . }}-alpha
-data:
-  oauth2_proxy.yml: |
-    ---
-    server:
-      BindAddress: '0.0.0.0:4180'
-    {{- if .Values.alphaConfig.serverConfigData }}
-    {{- toYaml .Values.alphaConfig.serverConfigData | nindent 6 }}
-    {{- end }}
-    {{- if .Values.metrics.enabled }}
-    metricsServer:
-      BindAddress: '0.0.0.0:44180'
-    {{- if .Values.alphaConfig.metricsConfigData }}
-    {{- toYaml .Values.alphaConfig.metricsConfigData | nindent 6 }}
-    {{- end }}
-    {{- end }}
-    {{- if .Values.alphaConfig.configData }}
-    {{- toYaml .Values.alphaConfig.configData | nindent 4 }}
-    {{- end }}
-{{- end }}
-{{- end }}
diff --git a/kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/templates/serviceaccount.yaml b/kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/templates/serviceaccount.yaml
deleted file mode 100644 (file)
index 6d0a9d7..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-{{- if or .Values.serviceAccount.enabled -}}
-apiVersion: v1
-kind: ServiceAccount
-metadata:
-  {{- with .Values.serviceAccount.annotations }}
-  annotations:
-    {{- toYaml . | nindent 4 }}
-  {{- end }}
-  labels:
-    app: {{ template "oauth2-proxy.name" . }}
-{{- include "oauth2-proxy.labels" . | indent 4 }}
-  name: {{ template "oauth2-proxy.serviceAccountName" . }}
-automountServiceAccountToken : {{ .Values.serviceAccount.automountServiceAccountToken }}
-{{- end -}}
diff --git a/kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/templates/servicemonitor.yaml b/kubernetes/platform/components/oauth2-proxy/components/oauth2-proxy/templates/servicemonitor.yaml
deleted file mode 100644 (file)
index 9c29d1b..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-{{- if and .Values.metrics.enabled .Values.metrics.servicemonitor.enabled }}
-apiVersion: monitoring.coreos.com/v1
-kind: ServiceMonitor
-metadata:
-  name: {{ template "oauth2-proxy.fullname" . }}
-{{- if .Values.metrics.servicemonitor.namespace }}
-  namespace: {{ .Values.metrics.servicemonitor.namespace }}
-{{- else }}
-  namespace: {{ .Release.Namespace | quote }}
-{{- end }}
-  labels:
-    prometheus: {{ .Values.metrics.servicemonitor.prometheusInstance }}
-    app: {{ template "oauth2-proxy.name" . }}
-{{- include "oauth2-proxy.labels" . | indent 4 }}
-{{- if .Values.metrics.servicemonitor.labels }}
-{{ toYaml .Values.metrics.servicemonitor.labels | indent 4}}
-{{- end }}
-spec:
-  jobLabel: {{ template "oauth2-proxy.fullname" . }}
-  selector:
-    matchLabels:
-      {{- include "oauth2-proxy.selectorLabels" . | indent 6 }}
-  namespaceSelector:
-    matchNames:
-      - {{ .Release.Namespace }}
-  endpoints:
-  - port: metrics
-    path: "/metrics"
-    interval: {{ .Values.metrics.servicemonitor.interval }}
-    scrapeTimeout: {{ .Values.metrics.servicemonitor.scrapeTimeout }}
-{{- end }}
diff --git a/kubernetes/platform/components/oauth2-proxy/values.yaml b/kubernetes/platform/components/oauth2-proxy/values.yaml
deleted file mode 100644 (file)
index 81a9986..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-onap-oauth2-proxy:
-  # Oauth client configuration specifics
-  config:
-    cookieSecret: "CbgXFXDJ16laaCfChtFBpKy1trNEmJZDIjaiaIMLyRA="
-    configFile: |-
-      email_domains = [ "*" ]        # Restrict to these E-Mail Domains, a wildcard "*" allows any email
-
-  alphaConfig:
-    enabled: true
-    configData:
-      providers:
-      - clientID: "oauth2-proxy"
-        clientSecret: "5YSOkJz99WHv8enDZPknzJuGqVSerELp"
-        id: oidc-istio
-        provider: oidc   # We use the generic 'oidc' provider
-        loginURL: https://keycloak-ui.simpledemo.onap.org/auth/realms/ONAP/protocol/openid-connect/auth
-        #redeemURL: https://keycloak-ui.simpledemo.onap.org/auth/realms/ONAP/protocol/openid-connect/token
-        redeemURL: http://keycloak-http.keycloak/auth/realms/ONAP/protocol/openid-connect/token
-        profileURL: https://keycloak-ui.simpledemo.onap.org/auth/realms/ONAP/protocol/openid-connect/userinfo
-        validateURL: https://keycloak-ui.simpledemo.onap.org/auth/realms/ONAP/protocol/openid-connect/userinfo
-        scope: "openid email profile groups"
-        #allowedGroups:
-        # - admins # List all groups managed at our your IdP which should be allowed access
-        # - infrateam
-        # - anothergroup
-        oidcConfig:
-          emailClaim: email  # Name of the clain in JWT containing the E-Mail
-          groupsClaim: groups # Name of the claim in JWT containing the Groups
-          userIDClaim: email  # Name of the claim in JWT containing the User ID
-          audienceClaims: ["aud"]
-          insecureAllowUnverifiedEmail: true
-          insecureSkipIssuerVerification: true
-          skipDiscovery: true # You can try using the well-knwon endpoint directly for auto discovery, here we won't use it
-          issuerURL: https://keycloak-ui.simpledemo.onap.org/auth/realms/ONAP
-          jwksURL: http://keycloak-http.keycloak/auth/realms/ONAP/protocol/openid-connect/certs
-      upstreamConfig:
-        upstreams:
-          - id: static_200
-            path: /
-            static: true
-            staticCode: 200
-      # Headers that should be added to responses from the proxy
-      injectResponseHeaders: # Send this headers in responses from oauth2-proxy
-        - name: X-Auth-Request-Preferred-Username
-          values:
-            - claim: preferred_username
-        - name: X-Auth-Request-Email
-          values:
-            - claim: email
-
-  extraArgs:
-    cookie-secure: "false"
-    cookie-domain: ".simpledemo.onap.org"    # Replace with your base domain
-    cookie-samesite: lax
-    cookie-expire: 12h               # How long our Cookie is valid
-    auth-logging: true               # Enable / Disable auth logs
-    request-logging: true            # Enable / Disable request logs
-    standard-logging: true           # Enable / Disable the standart logs
-    show-debug-on-error: true        # Disable in production setups
-    skip-provider-button: true       # We only have one provider configured (Keycloak)
-    silence-ping-logging: true       # Keeps our logs clean
-    whitelist-domain: ".simpledemo.onap.org" # Replace with your base domain
-
-  # Enables and configure the automatic deployment of the redis subchart
-  redis:
-    # provision an instance of the redis sub-chart
-    enabled: false
-
-
-serviceAccount:
-  nameOverride: oauth2-proxy
-  roles:
-    - read
-
index 5cc7612..95c98f6 100644 (file)
@@ -34,15 +34,11 @@ global:
 
 # Control deployment of Platform services at ONAP installation time
 chartmuseum:
-  enabled: true
+  enabled: false
 cmpv2-cert-provider:
   enabled: true
 oom-cert-service:
   enabled: true
-keycloak-init:
-  enabled: false
-oauth2-proxy:
-  enabled: false
 
 flavor: small
 # default number of instances
old mode 100755 (executable)
new mode 100644 (file)
index b305ef4..d406b44
@@ -1,7 +1,8 @@
 # Copyright © 2017 Amdocs, Bell Canada
 # Modifications Copyright © 2018, 2020 AT&T
 # Modifications Copyright © 2021 Orange
-# Modifications Copyright © 2021, 2022, 2023, 2024 Nordix Foundation
+# Modifications Copyright © 2021-2025 OpenInfra Europe. All rights reserved.
+# Modifications Copyright © 2024-2025 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 apiVersion: v2
 description: ONAP Policy
 name: policy
-version: 14.0.0
+version: 16.0.10
 
 dependencies:
   - name: common
     version: ~13.x-0
     repository: '@local'
-  - name: mariadb-galera
-    version: ~13.x-0
-    repository: '@local'
-    condition: global.mariadbGalera.localCluster
   - name: policy-nexus
-    version: ~14.x-0
+    version: ~15.x-0
     repository: 'file://components/policy-nexus'
     condition: policy-nexus.enabled
   - name: policy-api
-    version: ~14.x-0
+    version: ~16.x-0
     repository: 'file://components/policy-api'
     condition: policy-api.enabled
   - name: policy-pap
-    version: ~14.x-0
+    version: ~16.x-0
     repository: 'file://components/policy-pap'
     condition: policy-pap.enabled
   - name: policy-xacml-pdp
-    version: ~14.x-0
+    version: ~16.x-0
     repository: 'file://components/policy-xacml-pdp'
     condition: policy-xacml-pdp.enabled
   - name: policy-apex-pdp
-    version: ~14.x-0
+    version: ~16.x-0
     repository: 'file://components/policy-apex-pdp'
     condition: policy-apex-pdp.enabled
   - name: policy-drools-pdp
-    version: ~14.x-0
+    version: ~16.x-0
     repository: 'file://components/policy-drools-pdp'
     condition: policy-drools-pdp.enabled
+  - name: policy-opa-pdp
+    version: ~16.x-0
+    repository: 'file://components/policy-opa-pdp'
+    condition: policy-opa-pdp.enabled
   - name: policy-distribution
-    version: ~14.x-0
+    version: ~16.x-0
     repository: 'file://components/policy-distribution'
     condition: policy-distribution.enabled
   - name: policy-clamp-ac-k8s-ppnt
-    version: ~14.x-0
+    version: ~16.x-0
     repository: 'file://components/policy-clamp-ac-k8s-ppnt'
     condition: policy-clamp-ac-k8s-ppnt.enabled
   - name: policy-clamp-ac-http-ppnt
-    version: ~14.x-0
+    version: ~16.x-0
     repository: 'file://components/policy-clamp-ac-http-ppnt'
     condition: policy-clamp-ac-http-ppnt.enabled
   - name: policy-clamp-ac-a1pms-ppnt
-    version: ~14.x-0
+    version: ~16.x-0
     repository: 'file://components/policy-clamp-ac-a1pms-ppnt'
     condition: policy-clamp-ac-a1pms-ppnt.enabled
   - name: policy-clamp-ac-kserve-ppnt
-    version: ~14.x-0
+    version: ~16.x-0
     repository: 'file://components/policy-clamp-ac-kserve-ppnt'
     condition: policy-clamp-ac-kserve-ppnt.enabled
   - name: policy-clamp-ac-pf-ppnt
-    version: ~14.x-0
+    version: ~16.x-0
     repository: 'file://components/policy-clamp-ac-pf-ppnt'
     condition: policy-clamp-ac-pf-ppnt.enabled
   - name: policy-clamp-runtime-acm
-    version: ~14.x-0
+    version: ~16.x-0
     repository: 'file://components/policy-clamp-runtime-acm'
     condition: policy-clamp-runtime-acm.enabled
-  - name: policy-gui
-    version: ~14.x-0
-    repository: 'file://components/policy-gui'
-    condition: policy-gui.enabled
   - name: repositoryGenerator
     version: ~13.x-0
     repository: '@local'
   - name: serviceAccount
     version: ~13.x-0
     repository: '@local'
-  - name: readinessCheck
-    version: ~13.x-0
-    repository: '@local'
   - name: postgres
     version: ~13.x-0
     repository: '@local'
old mode 100755 (executable)
new mode 100644 (file)
index c8a2862..9288c89
@@ -1,8 +1,8 @@
 #  ============LICENSE_START=======================================================
 #   Copyright (C) 2018 Ericsson. All rights reserved.
 #   Modifications Copyright © 2021 Orange
-#   Modifications Copyright © 2021, 2024 Nordix Foundation
-#   Modification (C) 2023 Deutsche Telekom. All rights reserved.
+#   Modifications Copyright © 2021, 2024-2025 OpenInfra Europe. All rights reserved.
+#   Modification (C) 2023-2025 Deutsche Telekom. All rights reserved.
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -22,7 +22,7 @@
 apiVersion: v2
 description: ONAP Policy APEX PDP
 name: policy-apex-pdp
-version: 14.0.0
+version: 16.0.2
 
 dependencies:
   - name: common
index 7158c02..5a9baa8 100644 (file)
@@ -14,4 +14,4 @@
 # limitations under the License.
 */}}
 
-{{ include "common.authorizationPolicy" . }}
\ No newline at end of file
+{{ include "common.authorizationPolicy" . }}
index 5e2caa9..c67a328 100755 (executable)
@@ -3,6 +3,7 @@
 #   Copyright (C) 2018 Ericsson. All rights reserved.
 #   Modifications Copyright (C) 2020 Nordix Foundation.
 #   Modifications Copyright (C) 2020 AT&T Intellectual Property.
+#   Modifications Copyright (C) 2025 Deutsche Telekom.
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -25,11 +26,7 @@ kind: ConfigMap
 metadata:
   name: {{ include "common.fullname" . }}-configmap
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 {{- with .Files.Glob "resources/config/*store" }}
 binaryData:
 {{- range $path, $bytes := . }}
index de3e6d1..3b25dc5 100755 (executable)
@@ -3,7 +3,7 @@
 #   Copyright (C) 2018 Ericsson. All rights reserved.
 #   Modifications Copyright (C) 2020 AT&T Intellectual Property.
 #   Modifications Copyright © 2022 Nordix Foundation
-#   Modification (C) 2023 Deutsche Telekom. All rights reserved.
+#   Modification (C) 2023-2024 Deutsche Telekom. All rights reserved.
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -30,6 +30,7 @@ spec:
   template:
     metadata: {{- include "common.templateMetadata" . | nindent 6 }}
     spec:
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
       initContainers:
       - command: ["/bin/sh", "-cx"]
         args:
@@ -62,8 +63,10 @@ spec:
         image: {{ include "repositoryGenerator.image.envsubst" . }}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
         name: {{ include "common.name" . }}-update-config
+        {{ include "common.containerSecurityContext" . | indent 8 | trim }}
       containers:
         - name: {{ include "common.name" . }}
+          {{ include "common.containerSecurityContext" . | indent 10 | trim }}
           image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
           command: [ "/bin/sh", "-cx" ]
@@ -104,7 +107,8 @@ spec:
       serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
       volumes:
         - name: policy-logs
-          emptyDir: {}
+          emptyDir:
+            sizeLimit: {{ .Values.dirSizes.logDir.sizeLimit }}
         - name: apexconfig-input
           configMap:
             name: {{ include "common.fullname" . }}-configmap
@@ -112,4 +116,5 @@ spec:
         - name: apexconfig
           emptyDir:
             medium: Memory
+            sizeLimit: 64Mi
       {{- include "common.imagePullSecrets" . | nindent 6 }}
old mode 100755 (executable)
new mode 100644 (file)
index 3cea773..5a9d211
@@ -1,8 +1,8 @@
 #  ============LICENSE_START=======================================================
 #   Copyright (C) 2018 Ericsson. All rights reserved.
 #   Modifications Copyright (C) 2019-2021 AT&T Intellectual Property.
-#   Modifications Copyright © 2022 Nordix Foundation
-#   Modification (C) 2023 Deutsche Telekom. All rights reserved.
+#   Modifications Copyright © 2022, 2025 OpenInfra Europe. All rights reserved.
+#   Modification (C) 2023-2024 Deutsche Telekom. All rights reserved.
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -47,7 +47,7 @@ secrets:
 # Application configuration defaults.
 #################################################################
 # application image
-image: onap/policy-apex-pdp:3.1.0
+image: onap/policy-apex-pdp:4.2.0
 pullPolicy: Always
 
 # flag to enable debugging - application support required
@@ -114,17 +114,30 @@ resources:
       memory: "2Gi"
   unlimited: {}
 
+securityContext:
+  user_id: 100
+  group_id: 102
+
 #Pods Service Account
 serviceAccount:
   nameOverride: policy-apex-pdp
   roles:
     - read
 
+dirSizes:
+  logDir:
+    sizeLimit: 500Mi
+
 metrics:
   serviceMonitor:
     # Override the labels based on the Prometheus config parameter: serviceMonitorSelector.
     # The default operator for prometheus enforces the below label.
     labels:
+      app: '{{ include "common.name" . }}'
+      helm.sh/chart: '{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}'
+      app.kubernetes.io/instance: '{{ include "common.release" . }}'
+      app.kubernetes.io/managed-by: '{{ .Release.Service }}'
+      version: '{{ .Chart.Version | replace "+" "_" }}'
       release: prometheus
     enabled: true
     port: policy-apex-pdp
old mode 100755 (executable)
new mode 100644 (file)
index 32c22cb..8965487
@@ -1,8 +1,8 @@
 #  ============LICENSE_START=======================================================
 #   Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved.
 #   Modifications Copyright © 2021 Orange
-#   Modifications Copyright © 2021, 2024 Nordix Foundation
-#   Modification (C) 2023 Deutsche Telekom. All rights reserved.
+#   Modifications Copyright © 2021, 2024-2025 OpenInfra Europe. All rights reserved.
+#   Modification (C) 2023-2025 Deutsche Telekom. All rights reserved.
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -22,7 +22,7 @@
 apiVersion: v2
 description: ONAP Policy Design API
 name: policy-api
-version: 14.0.0
+version: 16.0.4
 
 dependencies:
   - name: common
@@ -34,3 +34,6 @@ dependencies:
   - name: serviceAccount
     version: ~13.x-0
     repository: '@local'
+  - name: readinessCheck
+    version: ~13.x-0
+    repository: '@local'
index 4e73dc0..866cd31 100644 (file)
@@ -1,7 +1,8 @@
 #  ============LICENSE_START=======================================================
 #   Copyright (C) 2022 Bell Canada. All rights reserved.
 #   Modifications Copyright (C) 2022 AT&T Intellectual Property.
-#   Modification (C) 2023 Deutsche Telekom. All rights reserved.
+#   Modification (C) 2023,2025 Deutsche Telekom. All rights reserved.
+#   Modifications Copyright © 2024-2025 Nordix Foundation.
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -31,24 +32,7 @@ spring:
     password: "${RESTSERVER_PASSWORD}"
   mvc.converters.preferred-json-mapper: gson
   datasource:
-{{ if not .Values.global.postgres.localCluster }}
-    url: jdbc:mariadb://{{ .Values.db.service.name }}:{{ .Values.db.service.internalPort }}/policyadmin
-    driverClassName: org.mariadb.jdbc.Driver
-    username: "${SQL_USER}"
-    password: "${SQL_PASSWORD}"
-    hikari:
-      maximumPoolSize: 20
-  jpa:
-    properties:
-      hibernate:
-        dialect: org.hibernate.dialect.MariaDB103Dialect
-    hibernate:
-      ddl-auto: none
-      naming:
-        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
-        implicit-strategy: org.onap.policy.common.spring.utils.CustomImplicitNamingStrategy
-{{ else }}
-    url: jdbc:postgresql://{{ .Values.db.service.pgName }}:{{ .Values.db.service.internalPgPort}}/policyadmin
+    url: jdbc:postgresql://{{ .Values.global.postgres.service.name2 }}:{{ .Values.global.postgres.service.port }}/policyadmin
     driverClassName: org.postgresql.Driver
     username: "${SQL_USER}"
     password: "${SQL_PASSWORD}"
@@ -63,25 +47,11 @@ spring:
       naming:
         physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
         implicit-strategy: org.onap.policy.common.spring.utils.CustomImplicitNamingStrategy
-    properties:
-      hibernate:
-        dialect: org.hibernate.dialect.PostgreSQLDialect
-        format_sql: true
-{{ end }}
 
 policy-api:
   name: ApiGroup
   aaf: false
 
-database:
-  name: PolicyProviderParameterGroup
-  implementation: org.onap.policy.models.provider.impl.DatabasePolicyModelsProviderImpl
-  driver: org.mariadb.jdbc.Driver
-  url: jdbc:mariadb://{{ .Values.db.service.name }}/policyadmin
-  user: "${SQL_USER}"
-  password: "${SQL_PASSWORD}"
-  persistenceUnit: PolicyDb
-
 policy-preload:
   policyTypes:
     - policytypes/onap.policies.monitoring.tcagen2.yaml
@@ -112,12 +82,15 @@ policy-preload:
     - policytypes/onap.policies.Match.yaml
     - policytypes/onap.policies.native.Drools.yaml
     - policytypes/onap.policies.native.Xacml.yaml
+    - policytypes/onap.policies.native.ToscaXacml.yaml
     - policytypes/onap.policies.native.Apex.yaml
     - policytypes/onap.policies.controlloop.operational.Common.yaml
     - policytypes/onap.policies.controlloop.operational.common.Apex.yaml
     - policytypes/onap.policies.controlloop.operational.common.Drools.yaml
+    - policytypes/onap.policies.native.opa.yaml
   policies:
     - policies/sdnc.policy.naming.input.tosca.yaml
+    - policies/opa.policy.slice.capacity.check.tosca.yaml
 
 management:
   endpoints:
@@ -1,7 +1,7 @@
 #!/bin/sh
 #
 # ============LICENSE_START=======================================================
-# Copyright (C) 2021-2022 Nordix Foundation.
+# Copyright (C) 2021-2024 Nordix Foundation.
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 
 export PGPASSWORD=${PG_ADMIN_PASSWORD};
 
-psql -h ${PG_HOST} -p ${PG_PORT} -U postgres --command "CREATE USER ${PG_USER} WITH PASSWORD '${PG_USER_PASSWORD}'"
+echo "Create user ${PG_USER} is created in Host ${PG_HOST}"
+psql -h ${PG_HOST} -p ${PG_PORT} -U postgres --command "CREATE USER \"${PG_USER}\" WITH PASSWORD '${PG_USER_PASSWORD}'"
 
 for db in migration pooling policyadmin policyclamp operationshistory clampacm
 do
+    echo "Create DB ${db}"
     psql -h ${PG_HOST} -p ${PG_PORT} -U postgres --command "CREATE DATABASE ${db};"
-    psql -h ${PG_HOST} -p ${PG_PORT} -U postgres --command "GRANT ALL PRIVILEGES ON DATABASE ${db} TO ${PG_USER};"
+    echo "Grant privileges to DB ${db} for user ${PG_USER}"
+    psql -h ${PG_HOST} -p ${PG_PORT} -U postgres --command "GRANT ALL PRIVILEGES ON DATABASE ${db} TO \"${PG_USER}\";"
+    echo "Grant privileges to SCHEMA public for user ${PG_USER}"
+    psql -h ${PG_HOST} -p ${PG_PORT} -d ${db} -U postgres --command "GRANT ALL ON SCHEMA public TO \"${PG_USER}\";"
 done
@@ -1,6 +1,6 @@
 #!/bin/sh
 {{/*
-# Copyright (C) 2022 Nordix Foundation.
+# Copyright (C) 2022, 2024 Nordix Foundation.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # See the License for the specific language governing permissions and
 # limitations under the License.
 */}}
-/opt/app/policy/bin/prepare_upgrade.sh ${SQL_DB}
-/opt/app/policy/bin/db-migrator-pg -s ${SQL_DB} -o upgrade
-rc=$?
-/opt/app/policy/bin/db-migrator-pg -s ${SQL_DB} -o report
-exit $rc
+
+for schema in ${SQL_DB}; do
+    echo "Initializing $schema..."
+    /opt/app/policy/bin/prepare_upgrade.sh ${schema}
+
+    /opt/app/policy/bin/db-migrator-pg -s ${schema} -o report
+
+    /opt/app/policy/bin/db-migrator-pg -s ${schema} -o upgrade
+    rc=$?
+
+    /opt/app/policy/bin/db-migrator-pg -s ${schema} -o report
+
+    if [ "$rc" != 0 ]; then
+        break
+    fi
+done
index 7158c02..5a9baa8 100644 (file)
@@ -14,4 +14,4 @@
 # limitations under the License.
 */}}
 
-{{ include "common.authorizationPolicy" . }}
\ No newline at end of file
+{{ include "common.authorizationPolicy" . }}
index 9ab25fe..a4962b4 100755 (executable)
@@ -3,6 +3,7 @@
 #   Copyright (C) 2018 Ericsson. All rights reserved.
 #   Modifications Copyright (C) 2020 Nordix Foundation.
 #   Modified Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+#   Modification (C) 2025 Deutsche Telekom. All rights reserved.
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -25,11 +26,7 @@ kind: ConfigMap
 metadata:
   name: {{ include "common.fullname" . }}-configmap
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 {{- with .Files.Glob "resources/config/*store" }}
 binaryData:
 {{- range $path, $bytes := . }}
@@ -37,4 +34,13 @@ binaryData:
 {{- end }}
 {{- end }}
 data:
-{{ tpl (.Files.Glob "resources/config/*.{yaml,xml}").AsConfig . | indent 2 }}
\ No newline at end of file
+{{ tpl (.Files.Glob "resources/config/*.{yaml,xml}").AsConfig . | indent 2 }}
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ include "common.fullname" . }}-db-configmap
+  namespace: {{ include "common.namespace" . }}
+  labels: {{- include "common.labels" . | nindent 4 }}
+data:
+{{ tpl (.Files.Glob "resources/config/*.sh").AsConfig . | indent 2 }}
index 8de035e..20c02be 100755 (executable)
@@ -1,3 +1,24 @@
+{{/*
+#  ============LICENSE_START=======================================================
+#   Copyright (C) 2021-2025 Nordix Foundation.
+#   Modification (C) 2025 Deutsche Telekom. All rights reserved.
+#  ================================================================================
+#  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.
+#
+#  SPDX-License-Identifier: Apache-2.0
+#  ============LICENSE_END=========================================================
+*/}}
+
 apiVersion: apps/v1
 kind: Deployment
 metadata: {{- include "common.resourceMetadata" . | nindent 2 }}
@@ -7,32 +28,79 @@ spec:
   template:
     metadata: {{- include "common.templateMetadata" . | nindent 6 }}
     spec:
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
+      {{- include "common.imagePullSecrets" . | nindent 6 }}
       initContainers:
-        - command:
-          - /app/ready.py
-          args:
-          - --job-name
-{{ if not .Values.global.postgres.localCluster }}
-          - {{ include "common.release" . }}-policy-galera-config
-{{ else }}
-          - {{ include "common.release" . }}-policy-pg-config
-{{ end }}
+        {{ include "common.readinessCheck.waitFor" . | indent 8 | trim }}
+        - name: {{ include "common.name" . }}-pg-config
+          image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.postgresImage }}
+          imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+          {{ include "common.containerSecurityContext" . | indent 10 | trim }}
+          command:
+            - /bin/sh
+            - -cx
+            - |
+              /docker-entrypoint-initdb.d/db-pg.sh
           env:
-          - name: NAMESPACE
+          - name: PG_ADMIN_PASSWORD
             valueFrom:
-              fieldRef:
-                apiVersion: v1
-                fieldPath: metadata.namespace
-          image: {{ include "repositoryGenerator.image.readiness" . }}
-          imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-          name: {{ include "common.name" . }}-readiness
+              secretKeyRef:
+                {{- if eq .Values.global.postgres.localCluster true }}
+                name: '{{ include "common.release" . }}-policy-db-root-password'
+                {{- else }}
+                name: '{{ .Values.global.postgres.userRootSecret }}'
+                {{- end }}
+                key: password
+          - name: PG_HOST
+            value: "{{ .Values.global.postgres.service.name2 }}"
+          - name: PG_USER
+            {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-secret" "key" "login") | indent 12 }}
+          - name: PG_USER_PASSWORD
+            {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-secret" "key" "password") | indent 12 }}
+          - name: PG_PORT
+            value: "{{ .Values.global.postgres.service.port }}"
           resources:
-            limits:
-              cpu: "100m"
-              memory: "500Mi"
             requests:
-              cpu: "3m"
-              memory: "20Mi"
+              cpu: 50m
+              memory: 64Mi
+            limits:
+              cpu: 300m
+              memory: 128Mi
+          volumeMounts:
+          - mountPath: /docker-entrypoint-initdb.d/db-pg.sh
+            name: {{ include "common.fullname" . }}-config
+            subPath: db-pg.sh
+        - name: {{ include "common.name" . }}-pg-db-migrator
+          image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.dbmigrator.image }}
+          imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+          {{ include "common.containerSecurityContext" . | indent 10 | trim }}
+          volumeMounts:
+            - mountPath: /dbcmd-config/db_migrator_pg_policy_init.sh
+              name: {{ include "common.fullname" . }}-config
+              subPath: db_migrator_pg_policy_init.sh
+            - mountPath: /opt/app/policy/etc/db/
+              name: {{ include "common.fullname" . }}-migration-writable
+          command:
+            - /bin/sh
+            - -cx
+            - |
+              /dbcmd-config/db_migrator_pg_policy_init.sh
+          env:
+          - name: SQL_HOST
+            value: "{{ .Values.global.postgres.service.name2 }}"
+          - name: SQL_USER
+          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-secret" "key" "login") | indent 12 }}
+          - name: SQL_PASSWORD
+          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-secret" "key" "password") | indent 12 }}
+          - name: SQL_DB
+            value: {{ .Values.dbmigrator.schemas }}
+          - name: POLICY_HOME
+            value: {{ .Values.dbmigrator.policy_home }}
+          - name: SCRIPT_DIRECTORY
+            value: "postgres"
+          - name: PGPASSWORD
+          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-secret" "key" "password") | indent 12 }}
+          resources: {{ include "common.resources" . | nindent 12 }}
         - command:
           - sh
           args:
@@ -40,9 +108,9 @@ spec:
           - "cd /config-input && for PFILE in `ls -1`; do envsubst <${PFILE} >/config/${PFILE}; done"
           env:
           - name: SQL_USER
-            {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-creds" "key" "login") | indent 12 }}
+            {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-secret" "key" "login") | indent 12 }}
           - name: SQL_PASSWORD
-            {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-creds" "key" "password") | indent 12 }}
+            {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-secret" "key" "password") | indent 12 }}
           - name: RESTSERVER_USER
             {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "restserver-creds" "key" "login") | indent 12 }}
           - name: RESTSERVER_PASSWORD
@@ -52,11 +120,20 @@ spec:
             name: apiconfig
           - mountPath: /config
             name: apiconfig-processed
+          name: {{ include "common.name" . }}-update-config
           image: {{ include "repositoryGenerator.image.envsubst" . }}
           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-          name: {{ include "common.name" . }}-update-config
+          resources:
+            requests:
+              cpu: 10m
+              memory: 64Mi
+            limits:
+              cpu: 100m
+              memory: 128Mi
+          {{ include "common.containerSecurityContext" . | indent 10 | trim }}
       containers:
         - name: {{ include "common.name" . }}
+          {{ include "common.containerSecurityContext" . | indent 10 | trim }}
           image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
           command: ["/opt/app/policy/api/bin/policy-api.sh"]
@@ -70,7 +147,7 @@ spec:
               port: {{ .Values.service.internalPort }}
             initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
             periodSeconds: {{ .Values.liveness.periodSeconds }}
-          {{ end -}}
+          {{- end }}
           readinessProbe:
             httpGet:
               path: {{ .Values.readiness.api }}
@@ -85,6 +162,14 @@ spec:
             periodSeconds: {{ .Values.readiness.periodSeconds }}
             timeoutSeconds: {{ .Values.readiness.timeout }}
           volumeMounts:
+          - name: logs
+            mountPath: /var/log/onap
+          - name: empty-dir
+            mountPath: /tmp
+            subPath: tmp-dir
+          - mountPath: /opt/app/policy/api/etc/logback.xml
+            subPath: logback.xml
+            name: apiconfig-processed
           - mountPath: /opt/app/policy/api/etc/mounted
             name: apiconfig-processed
           resources: {{ include "common.resources" . | nindent 12 }}
@@ -105,4 +190,22 @@ spec:
         - name: apiconfig-processed
           emptyDir:
             medium: Memory
-      {{- include "common.imagePullSecrets" . | nindent 6 }}
+            sizeLimit: 64Mi
+        - name: empty-dir
+          emptyDir:
+            sizeLimit: {{ .Values.dirSizes.emptyDir.sizeLimit }}
+        - name: logs
+          emptyDir:
+            sizeLimit: {{ .Values.dirSizes.logDir.sizeLimit }}
+        - name: {{ include "common.fullname" . }}-migration-writable
+          emptyDir:
+            sizeLimit: {{ .Values.dirSizes.migration.sizeLimit }}
+        - name: {{ include "common.fullname" . }}-config
+          configMap:
+            name: {{ include "common.fullname" . }}-db-configmap
+            defaultMode: 0755
+            items:
+              - key: db-pg.sh
+                path: db-pg.sh
+              - key: db_migrator_pg_policy_init.sh
+                path: db_migrator_pg_policy_init.sh
old mode 100755 (executable)
new mode 100644 (file)
index 530f021..562a087
@@ -1,7 +1,8 @@
 #  ============LICENSE_START=======================================================
 #   Copyright (C) 2019-2021 AT&T Intellectual Property. All rights reserved.
 #   Modifications Copyright (C) 2022 Bell Canada. All rights reserved.
-#   Modification (C) 2023 Deutsche Telekom. All rights reserved.
+#   Modification (C) 2023-2025 Deutsche Telekom. All rights reserved.
+#   Modifications Copyright © 2024-2025 OpenInfra Europe. All rights reserved.
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -25,13 +26,17 @@ global:
   nodePortPrefix: 304
   persistence: {}
   postgres:
-    localCluster: false
+    service:
+      name: policy-postgres
+      name2: policy-pg-primary
+      name3: policy-pg-replica
+      port: 5432
 
 #################################################################
 # Secrets metaconfig
 #################################################################
 secrets:
-  - uid: db-creds
+  - uid: db-secret
     type: basicAuth
     externalSecret: '{{ tpl (default "" .Values.db.credsExternalSecret) . }}'
     login: '{{ .Values.db.user }}'
@@ -44,11 +49,22 @@ secrets:
     password: '{{ .Values.restServer.password }}'
     passwordPolicy: required
 
+#################################################################
+# DB configuration defaults.
+#################################################################
+
+dbmigrator:
+  image: onap/policy-db-migrator:4.2.0
+  schemas: "policyadmin clampacm pooling operationshistory"
+  policy_home: "/opt/app/policy"
+
+postgresImage: library/postgres:17.2
+
 #################################################################
 # Application configuration defaults.
 #################################################################
 # application image
-image: onap/policy-api:3.1.0
+image: onap/policy-api:4.2.0
 pullPolicy: Always
 
 # flag to enable debugging - application support required
@@ -58,11 +74,11 @@ debugEnabled: false
 db:
   user: policy-user
   password: policy_user
-  service:
-    name: policy-mariadb
-    pgName: policy-pg-primary
-    internalPort: 3306
-    internalPgPort: 5432
+
+readinessCheck:
+  wait_for:
+    services:
+      - '{{ .Values.global.postgres.service.name2 }}'
 
 restServer:
   user: policyadmin
@@ -77,7 +93,7 @@ affinity: {}
 
 # probe configuration parameters
 liveness:
-  initialDelaySeconds: 60
+  initialDelaySeconds: 120
   periodSeconds: 10
   # necessary to disable liveness probe when setting breakpoints
   # in debugger so K8s doesn't restart unresponsive container
@@ -89,7 +105,7 @@ readiness:
   api: /policy/api/v1/healthcheck
   successThreshold: 1
   failureThreshold: 3
-  timeout: 60
+  timeout: 120
 
 service:
   type: ClusterIP
@@ -125,6 +141,21 @@ resources:
       memory: "2Gi"
   unlimited: {}
 
+securityContext:
+  user_id: 100
+  group_id: 102
+
+dirSizes:
+  emptyDir:
+    sizeLimit: 1Gi
+  logDir:
+    sizeLimit: 500Mi
+  migration:
+    sizeLimit: 1Gi
+
+dbReadiness:
+  retryCount: 3
+
 #Pods Service Account
 serviceAccount:
   nameOverride: policy-api
@@ -136,9 +167,15 @@ metrics:
     # Override the labels based on the Prometheus config parameter: serviceMonitorSelector.
     # The default operator for prometheus enforces the below label.
     labels:
+      app: '{{ include "common.name" . }}'
+      helm.sh/chart: '{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}'
+      app.kubernetes.io/instance: '{{ include "common.release" . }}'
+      app.kubernetes.io/managed-by: '{{ .Release.Service }}'
+      version: '{{ .Chart.Version | replace "+" "_" }}'
       release: prometheus
     enabled: true
-    port: policy-api
+    port: http
+    path: /policy/api/v1/metrics
     interval: 60s
     isHttps: false
     basicAuth:
@@ -146,8 +183,9 @@ metrics:
       externalSecretNameSuffix: policy-api-user-creds
       externalSecretUserKey: login
       externalSecretPasswordKey: password
+
     selector:
       app: '{{ include "common.name" . }}'
-      chart: '{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}'
-      release: '{{ include "common.release" . }}'
-      heritage: '{{ .Release.Service }}'
+      helm.sh/chart: '{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}'
+      app.kubernetes.io/instance: '{{ include "common.release" . }}'
+      app.kubernetes.io/managed-by: '{{ .Release.Service }}'
old mode 100755 (executable)
new mode 100644 (file)
index e35dd3d..bc980b6
@@ -1,5 +1,6 @@
 #  ============LICENSE_START=======================================================
-#  Copyright (C) 2022-2024 Nordix Foundation. All rights reserved.
+#  Copyright (C) 2022-2025 OpenInfra Europe. All rights reserved.
+#  Modifications Copyright © 2024 Deutsche Telekom
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -19,7 +20,7 @@
 apiVersion: v2
 description: ONAP Policy Clamp A1PMS Participant
 name: policy-clamp-ac-a1pms-ppnt
-version: 14.0.0
+version: 16.0.3
 
 dependencies:
   - name: common
index 31aa1b7..0404a8a 100755 (executable)
@@ -1,5 +1,5 @@
 #  ============LICENSE_START=======================================================
-#  Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  Copyright (C) 2022,2024 Nordix Foundation. All rights reserved.
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -32,6 +32,9 @@ security:
 
 participant:
   intermediaryParameters:
+    topics:
+      operationTopic: {{ .Values.global.kafkaTopics.acRuntimeOperationTopic.name }}
+      syncTopic: {{ .Values.global.kafkaTopics.acRuntimeSyncTopic.name }}
     reportingTimeIntervalMs: 120000
     description: Participant Description
     participantId: 101c62b3-8918-41b9-a747-d21eb79c6c00
@@ -40,7 +43,7 @@ participant:
         -
           useHttps: false
           fetchTimeout: 15000
-          topic: {{ .Values.global.kafkaTopics.acRuntimeTopic.name }}
+          topic: {{ .Values.global.kafkaTopics.acRuntimeOperationTopic.name }}
           topicCommInfrastructure: kafka
           servers:
             - {{ include "common.release" . }}-{{ .Values.global.kafkaBootstrap }}
@@ -50,11 +53,23 @@ participant:
             security.protocol: SASL_PLAINTEXT
             sasl.mechanism: {{ .Values.kafkaUser.authenticationType | upper }}
             sasl.jaas.config: ${SASL_JAAS_CONFIG}
+        -
+          useHttps: false
+          fetchTimeout: 15000
+          topic: {{ .Values.global.kafkaTopics.acRuntimeSyncTopic.name }}
+          topicCommInfrastructure: kafka
+          servers:
+            - {{ include "common.release" . }}-{{ .Values.global.kafkaBootstrap }}
+          additionalProps:
+            allow.auto.create.topics: false
+            security.protocol: SASL_PLAINTEXT
+            sasl.mechanism: {{ .Values.kafkaUser.authenticationType | upper }}
+            sasl.jaas.config: ${SASL_JAAS_CONFIG}
       topicSinks:
         -
           useHttps: false
           fetchTimeout: 15000
-          topic: {{ .Values.global.kafkaTopics.acRuntimeTopic.name }}
+          topic: {{ .Values.global.kafkaTopics.acRuntimeOperationTopic.name }}
           topicCommInfrastructure: kafka
           servers:
             - {{ include "common.release" . }}-{{ .Values.global.kafkaBootstrap }}
@@ -81,5 +96,3 @@ server:
     context-path: /onap/policy/clamp/acm/a1pmsparticipant
   ssl:
     enabled: false
-
-
index 4a0c2aa..7ef735b 100755 (executable)
@@ -23,11 +23,7 @@ kind: ConfigMap
 metadata:
   name: {{ include "common.fullname" . }}-configmap
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 data:
 {{- if .Values.a1pmsconfig }}
 {{ tpl (.Files.Glob "resources/config/A1pmsParticipantParameters.yaml").AsConfig . | indent 2 }}
index d34da14..b9eb83b 100755 (executable)
@@ -1,6 +1,7 @@
 {{/*
 #  ============LICENSE_START=======================================================
 #   Copyright (C) 2022-2023 Nordix Foundation.
+#   Modifications Copyright © 2024 Deutsche Telekom
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -27,6 +28,7 @@ spec:
   template:
     metadata: {{- include "common.templateMetadata" . | nindent 6 }}
     spec:
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
       initContainers:
       - command:
         - sh
@@ -50,9 +52,11 @@ spec:
           name: ac-a1pms-ppnt-config-processed
         image: {{ include "repositoryGenerator.image.envsubst" . }}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        {{ include "common.containerSecurityContext" . | indent 8 | trim }}
         name: {{ include "common.name" . }}-update-config
       containers:
         - name: {{ include "common.name" . }}
+          {{ include "common.containerSecurityContext" . | indent 10 | trim }}
           image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
           command: ["/opt/app/policy/clamp/bin/a1pms-participant.sh"]
@@ -75,6 +79,14 @@ spec:
           volumeMounts:
           - mountPath: /opt/app/policy/clamp/etc/mounted
             name: ac-a1pms-ppnt-config-processed
+          - name: logs
+            mountPath: /var/log/onap
+          - name: empty-dir
+            mountPath: /tmp
+            subPath: tmp-dir
+          - mountPath: /opt/app/policy/clamp/etc/logback.xml
+            subPath: logback.xml
+            name: ac-a1pms-ppnt-config-processed
           resources: {{ include "common.resources" . | nindent 12 }}
         {{- if .Values.nodeSelector }}
         nodeSelector:
@@ -93,4 +105,11 @@ spec:
         - name: ac-a1pms-ppnt-config-processed
           emptyDir:
             medium: Memory
+            sizeLimit: 64Mi
+        - name: empty-dir
+          emptyDir:
+            sizeLimit: {{ .Values.dirSizes.emptyDir.sizeLimit }}
+        - name: logs
+          emptyDir:
+            sizeLimit: {{ .Values.dirSizes.logDir.sizeLimit }}
       {{- include "common.imagePullSecrets" . | nindent 6 }}
index 19f522a..66aadf1 100644 (file)
@@ -1,21 +1,21 @@
-{{/*\r
-#  ============LICENSE_START=======================================================\r
-#   Copyright (C) 2022 Nordix Foundation. All rights reserved.\r
-#  ================================================================================\r
-#  Licensed under the Apache License, Version 2.0 (the "License");\r
-#  you may not use this file except in compliance with the License.\r
-#  You may obtain a copy of the License at\r
-#\r
-#       http://www.apache.org/licenses/LICENSE-2.0\r
-#\r
-#  Unless required by applicable law or agreed to in writing, software\r
-#  distributed under the License is distributed on an "AS IS" BASIS,\r
-#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-#  See the License for the specific language governing permissions and\r
-#  limitations under the License.\r
-#\r
-#  SPDX-License-Identifier: Apache-2.0\r
-#  ============LICENSE_END=========================================================\r
-*/}}\r
-\r
-{{ include "common.service" . }}\r
+{{/*
+#  ============LICENSE_START=======================================================
+#   Copyright (C) 2022 Nordix Foundation. All rights reserved.
+#  ================================================================================
+#  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.
+#
+#  SPDX-License-Identifier: Apache-2.0
+#  ============LICENSE_END=========================================================
+*/}}
+
+{{ include "common.service" . }}
old mode 100755 (executable)
new mode 100644 (file)
index 5954d65..edee611
@@ -1,5 +1,6 @@
 #  ============LICENSE_START=======================================================
-#   Copyright (C) 2022-2023 Nordix Foundation.
+#   Copyright (C) 2022-2025 OpenInfra Europe. All rights reserved.
+#   Modifications Copyright © 2024 Deutsche Telekom
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 global:
   persistence: {}
   kafkaTopics:
-    acRuntimeTopic:
-      name: &acRuntimeTopic policy.clamp-runtime-acm
+    acRuntimeOperationTopic:
+      name: &acRuntimeOperationTopic policy-acruntime-participant
+    acRuntimeSyncTopic:
+      name: &acRuntimeSyncTopic acm-ppnt-sync
 
 #################################################################
 # Secrets metaconfig
@@ -40,7 +43,7 @@ secrets:
 # Application configuration defaults.
 #################################################################
 # application image
-image: onap/policy-clamp-ac-a1pms-ppnt:7.1.0
+image: onap/policy-clamp-ac-a1pms-ppnt:8.2.0
 pullPolicy: Always
 
 componentName: &componentName policy-clamp-ac-a1pms-ppnt
@@ -115,6 +118,17 @@ resources:
       cpu: "1"
       memory: "2Gi"
   unlimited: {}
+
+securityContext:
+  user_id: 100
+  group_id: 102
+
+dirSizes:
+  emptyDir:
+    sizeLimit: 1Gi
+  logDir:
+    sizeLimit: 500Mi
+
 #Pods Service Account
 serviceAccount:
   nameOverride: *componentName
@@ -135,6 +149,9 @@ kafkaUser:
     - name: *componentName
       type: group
       operations: [Read]
-    - name: *acRuntimeTopic
+    - name: *acRuntimeOperationTopic
+      type: topic
+      operations: [Read, Write]
+    - name: *acRuntimeSyncTopic
       type: topic
       operations: [Read, Write]
index faa7014..621d421 100644 (file)
@@ -1,5 +1,6 @@
 #  ============LICENSE_START=======================================================
-#   Copyright (C) 2021-2022, 2024 Nordix Foundation.
+#   Copyright (C) 2021-2022, 2024-2025 OpenInfra Europe. All rights reserved.
+#   Modifications Copyright © 2024 Deutsche Telekom
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -19,7 +20,7 @@
 apiVersion: v2
 description: ONAP Policy Clamp Controlloop Http Participant
 name: policy-clamp-ac-http-ppnt
-version: 14.0.0
+version: 16.0.2
 
 dependencies:
   - name: common
@@ -31,4 +32,3 @@ dependencies:
   - name: serviceAccount
     version: ~13.x-0
     repository: '@local'
-
index a04c37f..8b877ff 100644 (file)
@@ -1,5 +1,5 @@
 #  ============LICENSE_START=======================================================
-#   Copyright (C) 2021-2023 Nordix Foundation.
+#   Copyright (C) 2021-2024 Nordix Foundation.
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -32,6 +32,9 @@ security:
 
 participant:
   intermediaryParameters:
+    topics:
+      operationTopic: {{ .Values.global.kafkaTopics.acRuntimeOperationTopic.name }}
+      syncTopic: {{ .Values.global.kafkaTopics.acRuntimeSyncTopic.name }}
     reportingTimeIntervalMs: 120000
     description: Participant Description
     participantId: 101c62b3-8918-41b9-a747-d21eb79c6c01
@@ -40,7 +43,7 @@ participant:
         -
           useHttps: false
           fetchTimeout: 15000
-          topic: {{ .Values.global.kafkaTopics.acRuntimeTopic.name }}
+          topic: {{ .Values.global.kafkaTopics.acRuntimeOperationTopic.name }}
           topicCommInfrastructure: kafka
           servers:
             - {{ include "common.release" . }}-{{ .Values.global.kafkaBootstrap }}
@@ -50,11 +53,23 @@ participant:
             security.protocol: SASL_PLAINTEXT
             sasl.mechanism: {{ .Values.kafkaUser.authenticationType | upper }}
             sasl.jaas.config: ${SASL_JAAS_CONFIG}
+        -
+          useHttps: false
+          fetchTimeout: 15000
+          topic: {{ .Values.global.kafkaTopics.acRuntimeSyncTopic.name }}
+          topicCommInfrastructure: kafka
+          servers:
+            - {{ include "common.release" . }}-{{ .Values.global.kafkaBootstrap }}
+          additionalProps:
+            allow.auto.create.topics: false
+            security.protocol: SASL_PLAINTEXT
+            sasl.mechanism: {{ .Values.kafkaUser.authenticationType | upper }}
+            sasl.jaas.config: ${SASL_JAAS_CONFIG}
       topicSinks:
         -
           useHttps: false
           fetchTimeout: 15000
-          topic: {{ .Values.global.kafkaTopics.acRuntimeTopic.name }}
+          topic: {{ .Values.global.kafkaTopics.acRuntimeOperationTopic.name }}
           topicCommInfrastructure: kafka
           servers:
             - {{ include "common.release" . }}-{{ .Values.global.kafkaBootstrap }}
@@ -80,4 +95,3 @@ server:
     context-path: /onap/httpparticipant
   ssl:
     enabled: false
-
index 09cc8cd..ff1bc31 100644 (file)
@@ -23,10 +23,6 @@ kind: ConfigMap
 metadata:
   name: {{ include "common.fullname" . }}-configmap
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 data:
 {{ tpl (.Files.Glob "resources/config/*.{xml,yaml}").AsConfig . | indent 2 }}
index e502c1a..dd7db7a 100644 (file)
@@ -1,6 +1,7 @@
 {{/*
 #  ============LICENSE_START=======================================================
 #   Copyright (C) 2021-2023 Nordix Foundation.
+#   Modifications Copyright © 2024 Deutsche Telekom
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -27,6 +28,7 @@ spec:
   template:
     metadata: {{- include "common.templateMetadata" . | nindent 6 }}
     spec:
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
       initContainers:
       - command:
         - sh
@@ -50,9 +52,11 @@ spec:
           name: ac-http-ppnt-config-processed
         image: {{ include "repositoryGenerator.image.envsubst" . }}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        {{ include "common.containerSecurityContext" . | indent 8 | trim }}
         name: {{ include "common.name" . }}-update-config
       containers:
         - name: {{ include "common.name" . }}
+          {{ include "common.containerSecurityContext" . | indent 10 | trim }}
           image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
           command: ["/opt/app/policy/clamp/bin/http-participant.sh"]
@@ -75,6 +79,14 @@ spec:
           volumeMounts:
           - mountPath: /opt/app/policy/clamp/etc/mounted
             name: ac-http-ppnt-config-processed
+          - name: logs
+            mountPath: /var/log/onap
+          - name: empty-dir
+            mountPath: /tmp
+            subPath: tmp-dir
+          - mountPath: /opt/app/policy/clamp/etc/logback.xml
+            subPath: logback.xml
+            name: ac-http-ppnt-config-processed
           resources: {{ include "common.resources" . | nindent 12 }}
         {{- if .Values.nodeSelector }}
         nodeSelector:
@@ -93,4 +105,11 @@ spec:
         - name: ac-http-ppnt-config-processed
           emptyDir:
             medium: Memory
+            sizeLimit: 64Mi
+        - name: empty-dir
+          emptyDir:
+            sizeLimit: {{ .Values.dirSizes.emptyDir.sizeLimit }}
+        - name: logs
+          emptyDir:
+            sizeLimit: {{ .Values.dirSizes.logDir.sizeLimit }}
       {{- include "common.imagePullSecrets" . | nindent 6 }}
index e676ff1..be2449f 100644 (file)
@@ -1,21 +1,21 @@
-{{/*\r
-#  ============LICENSE_START=======================================================\r
-#   Copyright (C) 2021 Nordix Foundation. All rights reserved.\r
-#  ================================================================================\r
-#  Licensed under the Apache License, Version 2.0 (the "License");\r
-#  you may not use this file except in compliance with the License.\r
-#  You may obtain a copy of the License at\r
-#\r
-#       http://www.apache.org/licenses/LICENSE-2.0\r
-#\r
-#  Unless required by applicable law or agreed to in writing, software\r
-#  distributed under the License is distributed on an "AS IS" BASIS,\r
-#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-#  See the License for the specific language governing permissions and\r
-#  limitations under the License.\r
-#\r
-#  SPDX-License-Identifier: Apache-2.0\r
-#  ============LICENSE_END=========================================================\r
-*/}}\r
-\r
-{{ include "common.service" . }}\r
+{{/*
+#  ============LICENSE_START=======================================================
+#   Copyright (C) 2021 Nordix Foundation. All rights reserved.
+#  ================================================================================
+#  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.
+#
+#  SPDX-License-Identifier: Apache-2.0
+#  ============LICENSE_END=========================================================
+*/}}
+
+{{ include "common.service" . }}
index 17e4d31..ad19556 100644 (file)
@@ -1,5 +1,6 @@
 #  ============LICENSE_START=======================================================
-#   Copyright (C) 2021-2023 Nordix Foundation.
+#   Copyright (C) 2021-2023, 2025 OpenInfra Europe. All rights reserved.
+#   Modifications Copyright © 2024 Deutsche Telekom
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -23,8 +24,10 @@ global:
   persistence: {}
   #Strimzi Kafka properties
   kafkaTopics:
-    acRuntimeTopic:
-      name: &acRuntimeTopic policy.clamp-runtime-acm
+    acRuntimeOperationTopic:
+      name: &acRuntimeOperationTopic policy-acruntime-participant
+    acRuntimeSyncTopic:
+      name: &acRuntimeSyncTopic acm-ppnt-sync
 
 #################################################################
 # Secrets metaconfig
@@ -41,7 +44,7 @@ secrets:
 # Application configuration defaults.
 #################################################################
 # application image
-image: onap/policy-clamp-ac-http-ppnt:7.1.0
+image: onap/policy-clamp-ac-http-ppnt:8.2.0
 pullPolicy: Always
 
 componentName: &componentName policy-clamp-ac-http-ppnt
@@ -106,6 +109,17 @@ resources:
       cpu: "1"
       memory: "2Gi"
   unlimited: {}
+
+securityContext:
+  user_id: 100
+  group_id: 102
+
+dirSizes:
+  emptyDir:
+    sizeLimit: 1Gi
+  logDir:
+    sizeLimit: 500Mi
+
 #Pods Service Account
 serviceAccount:
   nameOverride: *componentName
@@ -126,6 +140,9 @@ kafkaUser:
     - name: *componentName
       type: group
       operations: [Read]
-    - name: *acRuntimeTopic
+    - name: *acRuntimeOperationTopic
+      type: topic
+      operations: [Read, Write]
+    - name: *acRuntimeSyncTopic
       type: topic
       operations: [Read, Write]
index aa6d08a..19d9fd2 100644 (file)
@@ -1,7 +1,8 @@
 #  ============LICENSE_START=======================================================
-#  Copyright (C) 2021 Nordix Foundation. All rights reserved.
+#  Copyright (C) 2021, 2025 OpenInfra Europe. All rights reserved.
 #  Modifications Copyright © 2021 Orange
 #  Modifications Copyright © 2021-2022, 2024 Nordix Foundation
+#  Modifications Copyright © 2024 Deutsche Telekom
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -21,7 +22,7 @@
 apiVersion: v2
 description: ONAP Policy Clamp Controlloop K8s Participant
 name: policy-clamp-ac-k8s-ppnt
-version: 14.0.0
+version: 16.0.2
 
 dependencies:
   - name: common
index 14deab5..4616d66 100644 (file)
@@ -1,5 +1,5 @@
 #  ============LICENSE_START=======================================================
-#   Copyright (C) 2021-2022 Nordix Foundation. All rights reserved.
+#   Copyright (C) 2021-2022,2024 Nordix Foundation. All rights reserved.
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -34,6 +34,9 @@ participant:
   localChartDirectory: /home/policy/local-charts
   infoFileName: CHART_INFO.json
   intermediaryParameters:
+    topics:
+      operationTopic: {{ .Values.global.kafkaTopics.acRuntimeOperationTopic.name }}
+      syncTopic: {{ .Values.global.kafkaTopics.acRuntimeSyncTopic.name }}
     reportingTimeIntervalMs: 120000
     description: Participant Description
     participantId: 101c62b3-8918-41b9-a747-d21eb79c6c02
@@ -42,7 +45,7 @@ participant:
         -
           useHttps: false
           fetchTimeout: 15000
-          topic: {{ .Values.global.kafkaTopics.acRuntimeTopic.name }}
+          topic: {{ .Values.global.kafkaTopics.acRuntimeOperationTopic.name }}
           topicCommInfrastructure: kafka
           servers:
             - {{ include "common.release" . }}-{{ .Values.global.kafkaBootstrap }}
@@ -52,11 +55,23 @@ participant:
             security.protocol: SASL_PLAINTEXT
             sasl.mechanism: {{ .Values.kafkaUser.authenticationType | upper }}
             sasl.jaas.config: ${SASL_JAAS_CONFIG}
+        -
+          useHttps: false
+          fetchTimeout: 15000
+          topic: {{ .Values.global.kafkaTopics.acRuntimeSyncTopic.name }}
+          topicCommInfrastructure: kafka
+          servers:
+            - {{ include "common.release" . }}-{{ .Values.global.kafkaBootstrap }}
+          additionalProps:
+            allow.auto.create.topics: false
+            security.protocol: SASL_PLAINTEXT
+            sasl.mechanism: {{ .Values.kafkaUser.authenticationType | upper }}
+            sasl.jaas.config: ${SASL_JAAS_CONFIG}
       topicSinks:
         -
           useHttps: false
           fetchTimeout: 15000
-          topic: {{ .Values.global.kafkaTopics.acRuntimeTopic.name }}
+          topic: {{ .Values.global.kafkaTopics.acRuntimeOperationTopic.name }}
           topicCommInfrastructure: kafka
           servers:
             - {{ include "common.release" . }}-{{ .Values.global.kafkaBootstrap }}
index 8a6cf83..b17f167 100644 (file)
@@ -23,14 +23,10 @@ kind: ConfigMap
 metadata:
   name: {{ include "common.fullname" . }}-configmap
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 data:
 {{- if .Values.repoList }}
 {{ tpl (.Files.Glob "resources/config/KubernetesParticipantParameters.yaml").AsConfig . | indent 2 }}
 {{ toYaml .Values.repoList | indent 4 }}
 {{- end }}
-{{ tpl (.Files.Glob "resources/config/*.{json,xml,sh}").AsConfig . | indent 2 }}
\ No newline at end of file
+{{ tpl (.Files.Glob "resources/config/*.{json,xml,sh}").AsConfig . | indent 2 }}
index cfc2fc7..a97ab22 100644 (file)
@@ -1,6 +1,7 @@
 {{/*
 #  ============LICENSE_START=======================================================
 #   Copyright (C) 2021-2023 Nordix Foundation.
+#   Modifications Copyright © 2024 Deutsche Telekom
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -27,6 +28,7 @@ spec:
   template:
     metadata: {{- include "common.templateMetadata" . | nindent 6 }}
     spec:
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
       initContainers:
       - command:
         - sh
@@ -50,9 +52,11 @@ spec:
           name: ac-k8s-ppnt-config-processed
         image: {{ include "repositoryGenerator.image.envsubst" . }}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        {{ include "common.containerSecurityContext" . | indent 8 | trim }}
         name: {{ include "common.name" . }}-update-config
       containers:
         - name: {{ include "common.name" . }}
+          {{ include "common.containerSecurityContext" . | indent 10 | trim }}
           image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
           command: ["/opt/app/policy/clamp/bin/kubernetes-participant.sh"]
@@ -75,6 +79,14 @@ spec:
           volumeMounts:
           - mountPath: /opt/app/policy/clamp/etc/mounted
             name: ac-k8s-ppnt-config-processed
+          - name: logs
+            mountPath: /var/log/onap
+          - name: empty-dir
+            mountPath: /tmp
+            subPath: tmp-dir
+          - mountPath: /opt/app/policy/clamp/etc/logback.xml
+            subPath: logback.xml
+            name: ac-k8s-ppnt-config-processed
           resources: {{ include "common.resources" . | nindent 12 }}
         {{- if .Values.nodeSelector }}
         nodeSelector:
@@ -93,4 +105,11 @@ spec:
         - name: ac-k8s-ppnt-config-processed
           emptyDir:
             medium: Memory
+            sizeLimit: 64Mi
+        - name: empty-dir
+          emptyDir:
+            sizeLimit: {{ .Values.dirSizes.emptyDir.sizeLimit }}
+        - name: logs
+          emptyDir:
+            sizeLimit: {{ .Values.dirSizes.logDir.sizeLimit }}
       {{- include "common.imagePullSecrets" . | nindent 6 }}
index 2439223..b32deab 100644 (file)
@@ -23,11 +23,7 @@ kind: ClusterRoleBinding
 metadata:
   name: {{ include "common.namespace" . }}-policy-clamp-ac-k8s-ppnt-binding
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 roleRef:
   apiGroup: rbac.authorization.k8s.io
   kind: ClusterRole
@@ -36,4 +32,3 @@ subjects:
   - kind: ServiceAccount
     name: {{ include "common.fullname" (dict "suffix" "create" "dot" . )}}
     namespace: {{ include "common.namespace" . }}
-
index 407f5dd..5a05954 100644 (file)
@@ -1,5 +1,6 @@
 #  ============LICENSE_START=======================================================
-#  Copyright (C) 2021-2023 Nordix Foundation.
+#  Copyright (C) 2021-2025 OpenInfra Europe. All rights reserved.
+#  Modifications Copyright © 2024 Deutsche Telekom
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -24,8 +25,10 @@ global:
   persistence: {}
   #Strimzi Kafka properties
   kafkaTopics:
-    acRuntimeTopic:
-      name: &acRuntimeTopic policy.clamp-runtime-acm
+    acRuntimeOperationTopic:
+      name: &acRuntimeOperationTopic policy-acruntime-participant
+    acRuntimeSyncTopic:
+      name: &acRuntimeSyncTopic acm-ppnt-sync
 
 #################################################################
 # Secrets metaconfig
@@ -42,7 +45,7 @@ secrets:
 # Application configuration defaults.
 #################################################################
 # application image
-image: onap/policy-clamp-ac-k8s-ppnt:7.1.0
+image: onap/policy-clamp-ac-k8s-ppnt:8.2.0
 pullPolicy: Always
 
 componentName: &componentName policy-clamp-ac-k8s-ppnt
@@ -108,6 +111,16 @@ resources:
       memory: "2Gi"
   unlimited: {}
 
+securityContext:
+  user_id: 100
+  group_id: 102
+
+dirSizes:
+  emptyDir:
+    sizeLimit: 1Gi
+  logDir:
+    sizeLimit: 500Mi
+
 #Pods Service Account
 serviceAccount:
   nameOverride: *componentName
@@ -142,7 +155,9 @@ kafkaUser:
     - name: *componentName
       type: group
       operations: [Read]
-    - name: *acRuntimeTopic
+    - name: *acRuntimeOperationTopic
+      type: topic
+      operations: [Read, Write]
+    - name: *acRuntimeSyncTopic
       type: topic
       operations: [Read, Write]
-
old mode 100755 (executable)
new mode 100644 (file)
index 44c80ff..741d685
@@ -1,5 +1,6 @@
 #  ============LICENSE_START=======================================================
-#  Copyright (C) 2023-2024 Nordix Foundation. All rights reserved.
+#  Copyright (C) 2023-2025 OpenInfra Europe. All rights reserved.
+#  Modifications Copyright © 2024 Deutsche Telekom
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -19,7 +20,7 @@
 apiVersion: v2
 description: ONAP Policy Clamp Kserve Participant
 name: policy-clamp-ac-kserve-ppnt
-version: 14.0.0
+version: 16.0.2
 
 dependencies:
   - name: common
index 89cf949..55aa8eb 100755 (executable)
@@ -39,6 +39,9 @@ security:
 
 participant:
   intermediaryParameters:
+    topics:
+      operationTopic: {{ .Values.global.kafkaTopics.acRuntimeOperationTopic.name }}
+      syncTopic: {{ .Values.global.kafkaTopics.acRuntimeSyncTopic.name }}
     reportingTimeIntervalMs: 120000
     description: Participant Description
     participantId: 101c62b3-8918-41b9-a747-d21eb79c6c04
@@ -47,7 +50,7 @@ participant:
         -
           useHttps: false
           fetchTimeout: 15000
-          topic: {{ .Values.global.kafkaTopics.acRuntimeTopic.name }}
+          topic: {{ .Values.global.kafkaTopics.acRuntimeOperationTopic.name }}
           topicCommInfrastructure: kafka
           servers:
             - {{ include "common.release" . }}-{{ .Values.global.kafkaBootstrap }}
@@ -57,11 +60,23 @@ participant:
             security.protocol: SASL_PLAINTEXT
             sasl.mechanism: {{ .Values.kafkaUser.authenticationType | upper }}
             sasl.jaas.config: ${SASL_JAAS_CONFIG}
+        -
+          useHttps: false
+          fetchTimeout: 15000
+          topic: {{ .Values.global.kafkaTopics.acRuntimeSyncTopic.name }}
+          topicCommInfrastructure: kafka
+          servers:
+            - {{ include "common.release" . }}-{{ .Values.global.kafkaBootstrap }}
+          additionalProps:
+            allow.auto.create.topics: false
+            security.protocol: SASL_PLAINTEXT
+            sasl.mechanism: {{ .Values.kafkaUser.authenticationType | upper }}
+            sasl.jaas.config: ${SASL_JAAS_CONFIG}
       topicSinks:
         -
           useHttps: false
           fetchTimeout: 15000
-          topic: {{ .Values.global.kafkaTopics.acRuntimeTopic.name }}
+          topic: {{ .Values.global.kafkaTopics.acRuntimeOperationTopic.name }}
           topicCommInfrastructure: kafka
           servers:
             - {{ include "common.release" . }}-{{ .Values.global.kafkaBootstrap }}
@@ -96,5 +111,3 @@ server:
     context-path: /onap/policy/clamp/acm/kserveparticipant
   ssl:
     enabled: false
-
-
index d3e2833..ae4d6ec 100755 (executable)
@@ -23,10 +23,6 @@ kind: ConfigMap
 metadata:
   name: {{ include "common.fullname" . }}-configmap
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 data:
 {{ tpl (.Files.Glob "resources/config/*.{xml,yaml}").AsConfig . | indent 2 }}
index 8574979..3d1f4f8 100755 (executable)
@@ -1,6 +1,7 @@
 {{/*
 #  ============LICENSE_START=======================================================
 #   Copyright (C) 2023 Nordix Foundation.
+#   Modifications Copyright © 2024 Deutsche Telekom
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -27,6 +28,7 @@ spec:
   template:
     metadata: {{- include "common.templateMetadata" . | nindent 6 }}
     spec:
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
       initContainers:
       - command:
         - sh
@@ -50,9 +52,11 @@ spec:
           name: ac-kserve-ppnt-config-processed
         image: {{ include "repositoryGenerator.image.envsubst" . }}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        {{ include "common.containerSecurityContext" . | indent 8 | trim }}
         name: {{ include "common.name" . }}-update-config
       containers:
         - name: {{ include "common.name" . }}
+          {{ include "common.containerSecurityContext" . | indent 10 | trim }}
           image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
           command: ["/opt/app/policy/clamp/bin/kserve-participant.sh"]
@@ -75,6 +79,14 @@ spec:
           volumeMounts:
           - mountPath: /opt/app/policy/clamp/etc/mounted
             name: ac-kserve-ppnt-config-processed
+          - name: logs
+            mountPath: /var/log/onap
+          - name: empty-dir
+            mountPath: /tmp
+            subPath: tmp-dir
+          - mountPath: /opt/app/policy/clamp/etc/logback.xml
+            subPath: logback.xml
+            name: ac-kserve-ppnt-config-processed
           resources: {{ include "common.resources" . | nindent 12 }}
         {{- if .Values.nodeSelector }}
         nodeSelector:
@@ -93,4 +105,11 @@ spec:
         - name: ac-kserve-ppnt-config-processed
           emptyDir:
             medium: Memory
+            sizeLimit: 64Mi
+        - name: empty-dir
+          emptyDir:
+            sizeLimit: {{ .Values.dirSizes.emptyDir.sizeLimit }}
+        - name: logs
+          emptyDir:
+            sizeLimit: {{ .Values.dirSizes.logDir.sizeLimit }}
       {{- include "common.imagePullSecrets" . | nindent 6 }}
index b7e7364..6fc37c3 100755 (executable)
@@ -1,16 +1,16 @@
-{{/*\r
-# Copyright © 2023 Nordix Foundation\r
-#\r
-# Licensed under the Apache License, Version 2.0 (the "License");\r
-# you may not use this file except in compliance with the License.\r
-# You may obtain a copy of the License at\r
-#\r
-#       http://www.apache.org/licenses/LICENSE-2.0\r
-#\r
-# Unless required by applicable law or agreed to in writing, software\r
-# distributed under the License is distributed on an "AS IS" BASIS,\r
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-# See the License for the specific language governing permissions and\r
-# limitations under the License.\r
-*/}}\r
-{{ include "common.kafkauser" . }}\r
+{{/*
+# Copyright © 2023 Nordix Foundation
+#
+# 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.
+*/}}
+{{ include "common.kafkauser" . }}
index ac5ee0b..4092d0a 100644 (file)
@@ -1,38 +1,34 @@
-{{/*\r
-#  ============LICENSE_START=======================================================\r
-#   Copyright (C) 2023 Nordix Foundation. All rights reserved.\r
-#  ================================================================================\r
-#  Licensed under the Apache License, Version 2.0 (the "License");\r
-#  you may not use this file except in compliance with the License.\r
-#  You may obtain a copy of the License at\r
-#\r
-#       http://www.apache.org/licenses/LICENSE-2.0\r
-#\r
-#  Unless required by applicable law or agreed to in writing, software\r
-#  distributed under the License is distributed on an "AS IS" BASIS,\r
-#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-#  See the License for the specific language governing permissions and\r
-#  limitations under the License.\r
-#\r
-#  SPDX-License-Identifier: Apache-2.0\r
-#  ============LICENSE_END=========================================================\r
-*/}}\r
-\r
-apiVersion: rbac.authorization.k8s.io/v1\r
-kind: ClusterRoleBinding\r
-metadata:\r
-  name: {{ include "common.namespace" . }}-policy-clamp-ac-kserve-ppnt-binding\r
-  namespace: {{ include "common.namespace" . }}\r
-  labels:\r
-    app: {{ include "common.name" . }}\r
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}\r
-    release: {{ include "common.release" . }}\r
-    heritage: {{ .Release.Service }}\r
-roleRef:\r
-  apiGroup: rbac.authorization.k8s.io\r
-  kind: ClusterRole\r
-  name: cluster-admin\r
-subjects:\r
-  - kind: ServiceAccount\r
-    name: {{ include "common.fullname" (dict "suffix" "create" "dot" . )}}\r
-    namespace: {{ include "common.namespace" . }}\r
+{{/*
+#  ============LICENSE_START=======================================================
+#   Copyright (C) 2023 Nordix Foundation. All rights reserved.
+#  ================================================================================
+#  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.
+#
+#  SPDX-License-Identifier: Apache-2.0
+#  ============LICENSE_END=========================================================
+*/}}
+
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRoleBinding
+metadata:
+  name: {{ include "common.namespace" . }}-policy-clamp-ac-kserve-ppnt-binding
+  namespace: {{ include "common.namespace" . }}
+  labels: {{- include "common.labels" . | nindent 4 }}
+roleRef:
+  apiGroup: rbac.authorization.k8s.io
+  kind: ClusterRole
+  name: cluster-admin
+subjects:
+  - kind: ServiceAccount
+    name: {{ include "common.fullname" (dict "suffix" "create" "dot" . )}}
+    namespace: {{ include "common.namespace" . }}
old mode 100755 (executable)
new mode 100644 (file)
index 6f737a0..62f833a
@@ -1,5 +1,6 @@
 #  ============LICENSE_START=======================================================
-#   Copyright (C) 2023 Nordix Foundation.
+#   Copyright (C) 2023, 2025 OpenInfra Europe. All rights reserved.
+#   Modifications Copyright © 2024 Deutsche Telekom
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -23,8 +24,10 @@ global:
   persistence: {}
   #Strimzi Kafka properties
   kafkaTopics:
-    acRuntimeTopic:
-      name: &acRuntimeTopic policy.clamp-runtime-acm
+    acRuntimeOperationTopic:
+      name: &acRuntimeOperationTopic policy-acruntime-participant
+    acRuntimeSyncTopic:
+      name: &acRuntimeSyncTopic acm-ppnt-sync
 
 #################################################################
 # Secrets metaconfig
@@ -41,7 +44,7 @@ secrets:
 # Application configuration defaults.
 #################################################################
 # application image
-image: onap/policy-clamp-ac-kserve-ppnt:7.1.0
+image: onap/policy-clamp-ac-kserve-ppnt:8.2.0
 pullPolicy: Always
 
 componentName: &componentName policy-clamp-ac-kserve-ppnt
@@ -106,6 +109,17 @@ resources:
       cpu: "1"
       memory: "1.4Gi"
   unlimited: {}
+
+securityContext:
+  user_id: 100
+  group_id: 102
+
+dirSizes:
+  emptyDir:
+    sizeLimit: 1Gi
+  logDir:
+    sizeLimit: 500Mi
+
 #Pods Service Account
 serviceAccount:
   nameOverride: *componentName
@@ -125,6 +139,9 @@ kafkaUser:
     - name: *componentName
       type: group
       operations: [Read]
-    - name: *acRuntimeTopic
+    - name: *acRuntimeOperationTopic
+      type: topic
+      operations: [Read, Write]
+    - name: *acRuntimeSyncTopic
       type: topic
       operations: [Read, Write]
index f860393..e52d03f 100644 (file)
@@ -1,5 +1,6 @@
 #  ============LICENSE_START=======================================================
-#   Copyright (C) 2021-2022, 2024 Nordix Foundation.
+#   Copyright (C) 2021-2022, 2024-2025 OpenInfra Europe. All rights reserved.
+#   Modifications Copyright © 2024 Deutsche Telekom
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -19,7 +20,7 @@
 apiVersion: v2
 description: ONAP Policy Clamp Controlloop Policy Participant
 name: policy-clamp-ac-pf-ppnt
-version: 14.0.0
+version: 16.0.2
 
 dependencies:
   - name: common
index 1cd4ba3..1e7edea 100644 (file)
@@ -1,5 +1,5 @@
 #  ============LICENSE_START=======================================================
-#   Copyright (C) 2021-2023 Nordix Foundation.
+#   Copyright (C) 2021-2024 Nordix Foundation.
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -50,6 +50,9 @@ participant:
     useHttps: "false"
     allowSelfSignedCerts: true
   intermediaryParameters:
+    topics:
+      operationTopic: {{ .Values.global.kafkaTopics.acRuntimeOperationTopic.name }}
+      syncTopic: {{ .Values.global.kafkaTopics.acRuntimeSyncTopic.name }}
     reportingTimeIntervalMs: 120000
     description: Participant Description
     participantId: 101c62b3-8918-41b9-a747-d21eb79c6c03
@@ -58,7 +61,7 @@ participant:
         -
           useHttps: false
           fetchTimeout: 15000
-          topic: {{ .Values.global.kafkaTopics.acRuntimeTopic.name }}
+          topic: {{ .Values.global.kafkaTopics.acRuntimeOperationTopic.name }}
           topicCommInfrastructure: kafka
           servers:
             - {{ include "common.release" . }}-{{ .Values.global.kafkaBootstrap }}
@@ -68,11 +71,23 @@ participant:
             security.protocol: SASL_PLAINTEXT
             sasl.mechanism: {{ .Values.kafkaUser.authenticationType | upper }}
             sasl.jaas.config: ${SASL_JAAS_CONFIG}
+        -
+          useHttps: false
+          fetchTimeout: 15000
+          topic: {{ .Values.global.kafkaTopics.acRuntimeSyncTopic.name }}
+          topicCommInfrastructure: kafka
+          servers:
+            - {{ include "common.release" . }}-{{ .Values.global.kafkaBootstrap }}
+          additionalProps:
+            allow.auto.create.topics: false
+            security.protocol: SASL_PLAINTEXT
+            sasl.mechanism: {{ .Values.kafkaUser.authenticationType | upper }}
+            sasl.jaas.config: ${SASL_JAAS_CONFIG}
       topicSinks:
         -
           useHttps: false
           fetchTimeout: 15000
-          topic: {{ .Values.global.kafkaTopics.acRuntimeTopic.name }}
+          topic: {{ .Values.global.kafkaTopics.acRuntimeOperationTopic.name }}
           topicCommInfrastructure: kafka
           servers:
             - {{ include "common.release" . }}-{{ .Values.global.kafkaBootstrap }}
@@ -98,4 +113,3 @@ server:
     context-path: /onap/policyparticipant
   ssl:
     enabled: false
-
index 09cc8cd..ff1bc31 100644 (file)
@@ -23,10 +23,6 @@ kind: ConfigMap
 metadata:
   name: {{ include "common.fullname" . }}-configmap
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 data:
 {{ tpl (.Files.Glob "resources/config/*.{xml,yaml}").AsConfig . | indent 2 }}
index 9026309..c29dca9 100644 (file)
@@ -1,6 +1,7 @@
 {{/*
 #  ============LICENSE_START=======================================================
 #   Copyright (C) 2021-2023 Nordix Foundation.
+#   Modifications Copyright © 2024 Deutsche Telekom
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -27,6 +28,7 @@ spec:
   template:
     metadata: {{- include "common.templateMetadata" . | nindent 6 }}
     spec:
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
       initContainers:
       - command:
         - sh
@@ -58,9 +60,11 @@ spec:
           name: ac-pf-ppnt-config-processed
         image: {{ include "repositoryGenerator.image.envsubst" . }}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        {{ include "common.containerSecurityContext" . | indent 8 | trim }}
         name: {{ include "common.name" . }}-update-config
       containers:
         - name: {{ include "common.name" . }}
+          {{ include "common.containerSecurityContext" . | indent 10 | trim }}
           image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
           command: ["/opt/app/policy/clamp/bin/policy-participant.sh"]
@@ -83,6 +87,14 @@ spec:
           volumeMounts:
           - mountPath: /opt/app/policy/clamp/etc/mounted
             name: ac-pf-ppnt-config-processed
+          - name: logs
+            mountPath: /var/log/onap
+          - name: empty-dir
+            mountPath: /tmp
+            subPath: tmp-dir
+          - mountPath: /opt/app/policy/clamp/etc/logback.xml
+            subPath: logback.xml
+            name: ac-pf-ppnt-config-processed
           resources: {{ include "common.resources" . | nindent 12 }}
         {{- if .Values.nodeSelector }}
         nodeSelector:
@@ -101,4 +113,11 @@ spec:
         - name: ac-pf-ppnt-config-processed
           emptyDir:
             medium: Memory
+            sizeLimit: 64Mi
+        - name: empty-dir
+          emptyDir:
+            sizeLimit: {{ .Values.dirSizes.emptyDir.sizeLimit }}
+        - name: logs
+          emptyDir:
+            sizeLimit: {{ .Values.dirSizes.logDir.sizeLimit }}
       {{- include "common.imagePullSecrets" . | nindent 6 }}
index e676ff1..be2449f 100644 (file)
@@ -1,21 +1,21 @@
-{{/*\r
-#  ============LICENSE_START=======================================================\r
-#   Copyright (C) 2021 Nordix Foundation. All rights reserved.\r
-#  ================================================================================\r
-#  Licensed under the Apache License, Version 2.0 (the "License");\r
-#  you may not use this file except in compliance with the License.\r
-#  You may obtain a copy of the License at\r
-#\r
-#       http://www.apache.org/licenses/LICENSE-2.0\r
-#\r
-#  Unless required by applicable law or agreed to in writing, software\r
-#  distributed under the License is distributed on an "AS IS" BASIS,\r
-#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-#  See the License for the specific language governing permissions and\r
-#  limitations under the License.\r
-#\r
-#  SPDX-License-Identifier: Apache-2.0\r
-#  ============LICENSE_END=========================================================\r
-*/}}\r
-\r
-{{ include "common.service" . }}\r
+{{/*
+#  ============LICENSE_START=======================================================
+#   Copyright (C) 2021 Nordix Foundation. All rights reserved.
+#  ================================================================================
+#  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.
+#
+#  SPDX-License-Identifier: Apache-2.0
+#  ============LICENSE_END=========================================================
+*/}}
+
+{{ include "common.service" . }}
index b763699..3690eda 100644 (file)
@@ -1,5 +1,6 @@
 #  ============LICENSE_START=======================================================
-#   Copyright (C) 2021-2023 Nordix Foundation.
+#   Copyright (C) 2021-2025 OpenInfra Europe. All rights reserved.
+#   Modifications Copyright © 2024 Deutsche Telekom
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -23,8 +24,10 @@ global:
   persistence: {}
   #Strimzi Kafka properties
   kafkaTopics:
-    acRuntimeTopic:
-      name: &acRuntimeTopic policy.clamp-runtime-acm
+    acRuntimeOperationTopic:
+      name: &acRuntimeOperationTopic policy-acruntime-participant
+    acRuntimeSyncTopic:
+      name: &acRuntimeSyncTopic acm-ppnt-sync
 
 #################################################################
 # Secrets metaconfig
@@ -53,7 +56,7 @@ secrets:
 # Application configuration defaults.
 #################################################################
 # application image
-image: onap/policy-clamp-ac-pf-ppnt:7.1.0
+image: onap/policy-clamp-ac-pf-ppnt:8.2.0
 pullPolicy: Always
 
 componentName: &componentName policy-clamp-ac-pf-ppnt
@@ -127,6 +130,17 @@ resources:
       cpu: "1"
       memory: "2Gi"
   unlimited: {}
+
+securityContext:
+  user_id: 100
+  group_id: 102
+
+dirSizes:
+  emptyDir:
+    sizeLimit: 1Gi
+  logDir:
+    sizeLimit: 500Mi
+
 #Pods Service Account
 serviceAccount:
   nameOverride: *componentName
@@ -147,6 +161,9 @@ kafkaUser:
     - name: *componentName
       type: group
       operations: [Read]
-    - name: *acRuntimeTopic
+    - name: *acRuntimeOperationTopic
+      type: topic
+      operations: [Read, Write]
+    - name: *acRuntimeSyncTopic
       type: topic
       operations: [Read, Write]
index bdd6c99..8d0b9e4 100644 (file)
@@ -1,7 +1,8 @@
 #  ============LICENSE_START=======================================================
-#   Copyright (C) 2021, 2024 Nordix Foundation. All rights reserved.
+#   Copyright (C) 2021, 2025 OpenInfra Europe. All rights reserved.
 #   Modifications Copyright © 2021 Orange
-#   Modifications Copyright © 2021-2022 Nordix Foundation
+#   Modifications Copyright © 2021-2024 Nordix Foundation
+#   Modifications Copyright © 2024-2025 Deutsche Telekom
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -21,7 +22,7 @@
 apiVersion: v2
 description: ONAP Policy Clamp Controlloop Runtime
 name: policy-clamp-runtime-acm
-version: 14.0.0
+version: 16.0.3
 
 dependencies:
   - name: common
@@ -33,4 +34,6 @@ dependencies:
   - name: serviceAccount
     version: ~13.x-0
     repository: '@local'
-
+  - name: readinessCheck
+    version: ~13.x-0
+    repository: '@local'
index 35e42c5..b9dfe4c 100644 (file)
@@ -1,5 +1,5 @@
 #  ============LICENSE_START=======================================================
-#   Copyright (C) 2021-2023 Nordix Foundation.
+#   Copyright (C) 2021-2025 OpenInfra Foundation Europe. All rights reserved.
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -21,12 +21,12 @@ spring:
     user:
       name: ${RUNTIME_USER}
       password: ${RUNTIME_PASSWORD}
-  http:
+  mvc:
     converters:
       preferred-json-mapper: gson
   datasource:
-    url: jdbc:mariadb://{{ .Values.db.service.name }}:{{ .Values.db.service.internalPort }}/clampacm
-    driverClassName: org.mariadb.jdbc.Driver
+    url: jdbc:postgresql://{{ .Values.global.postgres.service.name2 }}:{{ .Values.global.postgres.service.port }}/clampacm
+    driverClassName: org.postgresql.Driver
     username: ${SQL_USER}
     password: ${SQL_PASSWORD}
     hikari:
@@ -42,7 +42,7 @@ spring:
         implicit-strategy: org.onap.policy.common.spring.utils.CustomImplicitNamingStrategy
     properties:
       hibernate:
-        dialect: org.hibernate.dialect.MariaDB103Dialect
+        dialect: org.hibernate.dialect.PostgreSQLDialect
         format_sql: true
 
 metrics:
@@ -62,10 +62,14 @@ server:
     enabled: false
 
 runtime:
+  topics:
+    operationTopic: {{ .Values.global.kafkaTopics.acRuntimeOperationTopic.name }}
+    syncTopic: {{ .Values.global.kafkaTopics.acRuntimeSyncTopic.name }}
   participantParameters:
     heartBeatMs: 120000
     maxMessageAgeMs: 600000
-    maxStatusWaitMs: 100000
+    maxStatusWaitMs: {{ .Values.customTimeout.maxStatusWaitMs }}
+    maxOperationWaitMs: {{ .Values.customTimeout.maxOperationWaitMs }}
     updateParameters:
       maxRetryCount: 3
       maxWaitMs: 100000
@@ -74,7 +78,7 @@ runtime:
       -
         useHttps: false
         fetchTimeout: 15000
-        topic: {{ .Values.global.kafkaTopics.acRuntimeTopic.name }}
+        topic: {{ .Values.global.kafkaTopics.acRuntimeOperationTopic.name }}
         topicCommInfrastructure: kafka
         servers:
           - {{ include "common.release" . }}-{{ .Values.global.kafkaBootstrap }}
@@ -88,7 +92,19 @@ runtime:
       -
         useHttps: false
         fetchTimeout: 15000
-        topic: {{ .Values.global.kafkaTopics.acRuntimeTopic.name }}
+        topic: {{ .Values.global.kafkaTopics.acRuntimeOperationTopic.name }}
+        topicCommInfrastructure: kafka
+        servers:
+          - {{ include "common.release" . }}-{{ .Values.global.kafkaBootstrap }}
+        additionalProps:
+          client.id: {{ (first .Values.kafkaUser.acls).name }}-client-id
+          security.protocol: SASL_PLAINTEXT
+          sasl.mechanism: {{ .Values.kafkaUser.authenticationType | upper }}
+          sasl.jaas.config: ${SASL_JAAS_CONFIG}
+      -
+        useHttps: false
+        fetchTimeout: 15000
+        topic: {{ .Values.global.kafkaTopics.acRuntimeSyncTopic.name }}
         topicCommInfrastructure: kafka
         servers:
           - {{ include "common.release" . }}-{{ .Values.global.kafkaBootstrap }}
index 66c096d..397ae81 100644 (file)
@@ -23,11 +23,7 @@ kind: ConfigMap
 metadata:
   name: {{ include "common.fullname" . }}-configmap
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 {{- with .Files.Glob "resources/config/*store" }}
 binaryData:
 {{- range $path, $bytes := . }}
index b0ea909..79120a3 100644 (file)
@@ -1,6 +1,7 @@
 {{/*
 #  ============LICENSE_START=======================================================
-#   Copyright (C) 2021-2023 Nordix Foundation.
+#   Copyright (C) 2021-2025 Nordix Foundation.
+#   Modifications Copyright © 2024-2025 Deutsche Telekom
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -27,28 +28,9 @@ spec:
   template:
     metadata: {{- include "common.templateMetadata" . | nindent 6 }}
     spec:
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
       initContainers:
-      - command:
-        - /app/ready.py
-        args:
-        - --job-name
-        - {{ include "common.release" . }}-policy-galera-config
-        env:
-        - name: NAMESPACE
-          valueFrom:
-            fieldRef:
-              apiVersion: v1
-              fieldPath: metadata.namespace
-        image: {{ include "repositoryGenerator.image.readiness" . }}
-        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-        name: {{ include "common.name" . }}-galera-config-readiness
-        resources:
-          limits:
-            cpu: "100m"
-            memory: "500Mi"
-          requests:
-            cpu: "3m"
-            memory: "20Mi"
+      {{ include "common.readinessCheck.waitFor" . | nindent 6 }}
       - command:
         - sh
         args:
@@ -60,14 +42,16 @@ spec:
         - name: SQL_PASSWORD
           {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-secret" "key" "password") | indent 10 }}
         - name: RUNTIME_USER
-            {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "runtime-secret" "key" "login") | indent 10 }}
+          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "runtime-secret" "key" "login") | indent 10 }}
         - name: RUNTIME_PASSWORD
           {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "runtime-secret" "key" "password") | indent 10 }}
+{{- if .Values.global.useStrimziKafka }}
         - name: SASL_JAAS_CONFIG
           valueFrom:
             secretKeyRef:
               name: {{ include "common.name" . }}-ku
               key: sasl.jaas.config
+{{- end }}
         volumeMounts:
         - mountPath: /config-input
           name: ac-runtime-config
@@ -75,9 +59,11 @@ spec:
           name: ac-runtime-config-processed
         image: {{ include "repositoryGenerator.image.envsubst" . }}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        {{ include "common.containerSecurityContext" . | indent 8 | trim }}
         name: {{ include "common.name" . }}-update-config
       containers:
         - name: {{ include "common.name" . }}
+          {{ include "common.containerSecurityContext" . | indent 10 | trim }}
           image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
           command: ["/opt/app/policy/clamp/bin/acm-runtime.sh"]
@@ -98,19 +84,39 @@ spec:
             initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
             periodSeconds: {{ .Values.readiness.periodSeconds }}
           volumeMounts:
-          - mountPath: /opt/app/policy/clamp/etc/mounted
-            name: ac-runtime-config-processed
+            - mountPath: /etc/localtime
+              name: localtime
+              readOnly: true
+            - name: logs
+              mountPath: /var/log/onap
+            - name: empty-dir
+              mountPath: /tmp
+              subPath: tmp-dir
+            - mountPath: /opt/app/policy/clamp/etc/logback.xml
+              subPath: logback.xml
+              name: ac-runtime-config-processed
+            - mountPath: /opt/app/policy/clamp/etc/mounted
+              name: ac-runtime-config-processed
           resources: {{ include "common.resources" . | nindent 12 }}
         {{- if .Values.nodeSelector }}
-        nodeSelector:
-{{ toYaml .Values.nodeSelector | indent 10 }}
+      nodeSelector:
+{{ toYaml .Values.nodeSelector | indent 8 }}
         {{- end -}}
         {{- if .Values.affinity }}
-        affinity:
-{{ toYaml .Values.affinity | indent 10 }}
+      affinity:
+{{ toYaml .Values.affinity | indent 8 }}
         {{- end }}
       serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
       volumes:
+        - name: localtime
+          hostPath:
+            path: /etc/localtime
+        - name: empty-dir
+          emptyDir:
+            sizeLimit: {{ .Values.dirSizes.emptyDir.sizeLimit }}
+        - name: logs
+          emptyDir:
+            sizeLimit: {{ .Values.dirSizes.logDir.sizeLimit }}
         - name: ac-runtime-config
           configMap:
             name: {{ include "common.fullname" . }}-configmap
@@ -118,4 +124,5 @@ spec:
         - name: ac-runtime-config-processed
           emptyDir:
             medium: Memory
+            sizeLimit: 64Mi
       {{- include "common.imagePullSecrets" . | nindent 6 }}
index cc399d3..95b186f 100644 (file)
@@ -1,5 +1,6 @@
 #  ============LICENSE_START=======================================================
-#   Copyright (C) 2021-2023 Nordix Foundation.
+#   Copyright (C) 2021-2025 OpenInfra Europe. All rights reserved.
+#   Modifications Copyright © 2024-2025 Deutsche Telekom
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 global:
   nodePortPrefixExt: 304
   persistence: {}
+  postgres:
+    service:
+      name: policy-postgres
+      name2: policy-pg-primary
+      name3: policy-pg-replica
+      port: 5432
   #Strimzi Kafka properties
   kafkaTopics:
-    acRuntimeTopic:
-      name: &acRuntimeTopic policy.clamp-runtime-acm
+    acRuntimeOperationTopic:
+      name: &acRuntimeOperationTopic policy-acruntime-participant
+    acRuntimeSyncTopic:
+      name: &acRuntimeSyncTopic acm-ppnt-sync
 
 #################################################################
 # Secrets metaconfig
@@ -48,7 +57,7 @@ secrets:
 # Application configuration defaults.
 #################################################################
 # application image
-image: onap/policy-clamp-runtime-acm:7.1.0
+image: onap/policy-clamp-runtime-acm:8.2.0
 pullPolicy: Always
 
 componentName: &componentName policy-clamp-runtime-acm
@@ -73,19 +82,20 @@ kafkaUser:
     - name: *componentName
       type: group
       operations: [Read]
-    - name: *acRuntimeTopic
+    - name: *acRuntimeOperationTopic
+      type: topic
+      operations: [Read, Write]
+    - name: *acRuntimeSyncTopic
       type: topic
       operations: [Read, Write]
 
 kafkaTopic:
-  - name: *acRuntimeTopic
+  - name: *acRuntimeOperationTopic
+  - name: *acRuntimeSyncTopic
 
 db:
   user: policy-user
   password: policy_user
-  service:
-    name: policy-mariadb
-    internalPort: 3306
 
 # default number of instances
 replicaCount: 1
@@ -96,7 +106,7 @@ affinity: {}
 
 # probe configuration parameters
 liveness:
-  initialDelaySeconds: 60
+  initialDelaySeconds: 120
   periodSeconds: 10
   # necessary to disable liveness probe when setting breakpoints
   # in debugger so K8s doesn't restart unresponsive container
@@ -122,7 +132,6 @@ serviceMesh:
   authorizationPolicy:
     authorizedPrincipals:
       - serviceAccount: strimzi-kafka-read
-      - serviceAccount: policy-gui-read
 
 flavor: small
 resources:
@@ -142,16 +151,31 @@ resources:
       memory: "2Gi"
   unlimited: {}
 
+securityContext:
+  user_id: 100
+  group_id: 102
+
+dirSizes:
+  emptyDir:
+    sizeLimit: 1Gi
+  logDir:
+    sizeLimit: 500Mi
+
 #Pods Service Account
 serviceAccount:
   nameOverride: *componentName
   roles:
     - read
 
-wait_for_job_container:
-  containers:
-    - '{{ include "common.release" . }}-policy-galera-config'
+readinessCheck:
+  wait_for:
+    services:
+      - policy-api
 
 customNaming:
   toscaElementName: org.onap.policy.clamp.acm.AutomationCompositionElement
-  toscaCompositionName: org.onap.policy.clamp.acm.AutomationComposition
\ No newline at end of file
+  toscaCompositionName: org.onap.policy.clamp.acm.AutomationComposition
+
+customTimeout:
+  maxStatusWaitMs: 100000
+  maxOperationWaitMs: 100000
old mode 100755 (executable)
new mode 100644 (file)
index 3de47d0..a4bd780
@@ -1,7 +1,8 @@
 #  ============LICENSE_START=======================================================
 #   Copyright (C) 2018 Ericsson. All rights reserved.
 #   Modifications Copyright © 2021 Orange
-#   Modifications Copyright © 2021, 2024 Nordix Foundation
+#   Modifications Copyright © 2021, 2024-2025 OpenInfra Europe. All rights reserved.
+#   Modifications Copyright © 2024 Deutsche Telekom
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -21,7 +22,7 @@
 apiVersion: v2
 description: ONAP Policy Distribution
 name: policy-distribution
-version: 14.0.0
+version: 16.0.2
 
 dependencies:
   - name: common
index 7158c02..5a9baa8 100644 (file)
@@ -14,4 +14,4 @@
 # limitations under the License.
 */}}
 
-{{ include "common.authorizationPolicy" . }}
\ No newline at end of file
+{{ include "common.authorizationPolicy" . }}
index 5e2caa9..0506979 100755 (executable)
@@ -25,11 +25,7 @@ kind: ConfigMap
 metadata:
   name: {{ include "common.fullname" . }}-configmap
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 {{- with .Files.Glob "resources/config/*store" }}
 binaryData:
 {{- range $path, $bytes := . }}
index 62a3bfc..fe08271 100755 (executable)
@@ -1,6 +1,7 @@
 {{/*
 #  ============LICENSE_START=======================================================
 #   Copyright (C) 2020 AT&T Intellectual Property.
+#   Modifications Copyright © 2024 Deutsche Telekom
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -27,6 +28,7 @@ spec:
   template:
     metadata: {{- include "common.templateMetadata" . | nindent 6 }}
     spec:
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
       initContainers:
       - command:
         - sh
@@ -57,9 +59,11 @@ spec:
           name: distributionconfig
         image: {{ include "repositoryGenerator.image.envsubst" . }}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        {{ include "common.containerSecurityContext" . | indent 8 | trim }}
         name: {{ include "common.name" . }}-update-config
       containers:
         - name: {{ include "common.name" . }}
+          {{ include "common.containerSecurityContext" . | indent 10 | trim }}
           image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
           env:
@@ -86,6 +90,14 @@ spec:
             initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
             periodSeconds: {{ .Values.readiness.periodSeconds }}
           volumeMounts:
+          - name: logs
+            mountPath: /var/log/onap
+          - name: empty-dir
+            mountPath: /tmp
+            subPath: tmp-dir
+          - mountPath: /opt/app/policy/distribution/etc/logback.xml
+            subPath: logback.xml
+            name: distributionconfig
           - mountPath: /opt/app/policy/distribution/etc/mounted
             name: distributionconfig
           resources: {{ include "common.resources" . | nindent 12 }}
@@ -106,4 +118,11 @@ spec:
         - name: distributionconfig
           emptyDir:
             medium: Memory
+            sizeLimit: 64Mi
+        - name: empty-dir
+          emptyDir:
+            sizeLimit: {{ .Values.dirSizes.emptyDir.sizeLimit }}
+        - name: logs
+          emptyDir:
+            sizeLimit: {{ .Values.dirSizes.logDir.sizeLimit }}
       {{- include "common.imagePullSecrets" . | nindent 6 }}
old mode 100755 (executable)
new mode 100644 (file)
index fd2fe2e..d2848bb
@@ -1,7 +1,8 @@
 #  ============LICENSE_START=======================================================
 #   Copyright (C) 2018 Ericsson. All rights reserved.
 #   Modifications Copyright (C) 2019-2021 AT&T Intellectual Property.
-#   Modifications Copyright (C) 2023 Nordix Foundation
+#   Modifications Copyright (C) 2023, 2025 OpenInfra Europe. All rights reserved.
+#   Modifications Copyright © 2024 Deutsche Telekom
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -58,7 +59,7 @@ global:
 # Application configuration defaults.
 #################################################################
 # application image
-image: onap/policy-distribution:3.1.0
+image: onap/policy-distribution:4.2.0
 pullPolicy: Always
 
 # flag to enable debugging - application support required
@@ -141,6 +142,16 @@ resources:
       memory: "1Gi"
   unlimited: {}
 
+securityContext:
+  user_id: 100
+  group_id: 102
+
+dirSizes:
+  emptyDir:
+    sizeLimit: 1Gi
+  logDir:
+    sizeLimit: 500Mi
+
 #Pods Service Account
 serviceAccount:
   nameOverride: policy-distribution
@@ -152,6 +163,11 @@ metrics:
     # Override the labels based on the Prometheus config parameter: serviceMonitorSelector.
     # The default operator for prometheus enforces the below label.
     labels:
+      app: '{{ include "common.name" . }}'
+      helm.sh/chart: '{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}'
+      app.kubernetes.io/instance: '{{ include "common.release" . }}'
+      app.kubernetes.io/managed-by: '{{ .Release.Service }}'
+      version: '{{ .Chart.Version | replace "+" "_" }}'
       release: prometheus
     enabled: true
     port: policy-distribution
@@ -162,8 +178,9 @@ metrics:
       externalSecretNameSuffix: policy-distribution-restserver-creds
       externalSecretUserKey: login
       externalSecretPasswordKey: password
+
     selector:
       app: '{{ include "common.name" . }}'
-      chart: '{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}'
-      release: '{{ include "common.release" . }}'
-      heritage: '{{ .Release.Service }}'
+      helm.sh/chart: '{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}'
+      app.kubernetes.io/instance: '{{ include "common.release" . }}'
+      app.kubernetes.io/managed-by: '{{ .Release.Service }}'
old mode 100755 (executable)
new mode 100644 (file)
index 63c4984..870718d
@@ -1,7 +1,8 @@
 # Copyright © 2017 Amdocs, Bell Canada
 # Modifications Copyright © 2018, 2020 AT&T Intellectual Property
 # Modifications Copyright © 2021 Orange
-# Modifications Copyright © 2021, 2024 Nordix Foundation
+# Modifications Copyright © 2021, 2024-2025 OpenInfra Europe. All rights reserved.
+# Modifications Copyright © 2024-2025 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -18,7 +19,7 @@
 apiVersion: v2
 description: ONAP Drools Policy Engine (PDP-D)
 name: policy-drools-pdp
-version: 14.0.0
+version: 16.0.4
 
 dependencies:
   - name: common
@@ -30,3 +31,6 @@ dependencies:
   - name: serviceAccount
     version: ~13.x-0
     repository: '@local'
+  - name: readinessCheck
+    version: ~13.x-0
+    repository: '@local'
old mode 100755 (executable)
new mode 100644 (file)
index 2e6efae..decd359
@@ -2,6 +2,8 @@
 # Copyright © 2017-2018 Amdocs, Bell Canada.
 # Modifications Copyright (C) 2018-2020, 2022 AT&T Intellectual Property.
 # Modifications Copyright (C) 2021 Bell Canada. All rights reserved.
+# Modifications Copyright (C) 2024-2025 OpenInfra Europe. All rights reserved.
+# Modifications Copyright (C) 2025 Deutsche Telekom. All rights reserved.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -18,7 +20,7 @@
 
 # JVM options
 
-JVM_OPTIONS={{.Values.server.jvmOpts}}
+JVM_OPTIONS={{ .Values.server.jvmOpts | quote }}
 
 # SYSTEM software configuration
 
@@ -40,11 +42,11 @@ REPOSITORY_OFFLINE={{.Values.nexus.offline}}
 
 # Relational (SQL) DB access
 
-SQL_HOST={{ .Values.db.name }}
-SQL_PORT=3306
-JDBC_URL=jdbc:mariadb://{{ .Values.db.name }}:3306/
+SQL_HOST={{ .Values.global.postgres.service.name2 }}
+SQL_PORT={{ .Values.global.postgres.service.port }}
+JDBC_URL=jdbc:postgresql://{{ .Values.global.postgres.service.name2 }}:{{ .Values.global.postgres.service.port }}/
 JDBC_OPTS=
-MYSQL_CMD=
+JDBC_DRIVER=org.postgresql.Driver
 
 # Liveness
 LIVENESS_CONTROLLERS=*
@@ -92,7 +94,15 @@ DCAE_CONSUMER_GROUP=dcae.policy.shared
 # Open DMaaP
 
 KAFKA_SERVERS={{ include "common.release" . }}-{{ .Values.global.kafkaBootstrap }}
+KAFKA_ADDITIONAL_PROPS="{
+                   \"group.id\": \"${GROUP_ID}\",
+                   \"security.protocol\": \"SASL_PLAINTEXT\",
+                   \"sasl.mechanism\": \"${SASL}\",
+                   \"sasl.jaas.config\": \"${JAASLOGIN}\"
+                 }"
+
 DMAAP_HTTPS="false"
+KAFKA_HTTPS="false"
 
 # AAI
 
@@ -107,17 +117,11 @@ SO_PORT=8080
 SO_CONTEXT_URI=onap/so/infra/
 SO_URL=https://so.{{.Release.Namespace}}:8080/onap/so/infra
 
-# VFC
-
-VFC_HOST=
-VFC_PORT=
-VFC_CONTEXT_URI=api/nslcm/v1/
-
 # SDNC
 
 SDNC_HOST=sdnc.{{.Release.Namespace}}
 SDNC_PORT=8282
-SDNC_CONTEXT_URI=restconf/operations/
+SDNC_CONTEXT_URI=rests/operations/
 
 # CDS
 
diff --git a/kubernetes/policy/components/policy-drools-pdp/resources/configmaps/feature-distributed-locking.properties b/kubernetes/policy/components/policy-drools-pdp/resources/configmaps/feature-distributed-locking.properties
new file mode 100644 (file)
index 0000000..d30d933
--- /dev/null
@@ -0,0 +1,30 @@
+###
+# ============LICENSE_START=======================================================
+# ONAP
+# ================================================================================
+# Copyright (C) 2024-2025 Nordix Foundation.
+# ================================================================================
+# 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.
+# ============LICENSE_END=========================================================
+###
+
+#Database properties
+jakarta.persistence.jdbc.driver=org.postgresql.Driver
+jakarta.persistence.jdbc.url=${envd:JDBC_URL}pooling${envd:JDBC_OPTS}
+jakarta.persistence.jdbc.user=${envd:SQL_USER}
+jakarta.persistence.jdbc.password=${envd:SQL_PASSWORD}
+
+# default property values are commented out
+#distributed.locking.expire.check.seconds=900
+#distributed.locking.retry.seconds=60
+#distributed.locking.max.retries=2
diff --git a/kubernetes/policy/components/policy-drools-pdp/resources/configmaps/feature-lifecycle.properties b/kubernetes/policy/components/policy-drools-pdp/resources/configmaps/feature-lifecycle.properties
new file mode 100644 (file)
index 0000000..26e1012
--- /dev/null
@@ -0,0 +1,41 @@
+# ============LICENSE_START=======================================================
+# ONAP
+# ================================================================================
+# Copyright (C) 2019-2021 AT&T Intellectual Property. All rights reserved.
+# Modifications Copyright (C) 2024 Nordix Foundation.
+# ================================================================================
+# 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.
+# ============LICENSE_END=========================================================
+
+lifecycle.pdp.group=${envd:POLICY_PDP_PAP_GROUP:defaultGroup}
+lifecycle.pdp.type=${envd:POLICY_PDP_PAP_TYPE:drools}
+
+# Mandatory policy types that this PDP-D must support at a minimum
+lifecycle.pdp.policytypes=${envd:POLICY_PDP_PAP_POLICYTYPES}
+
+kafka.source.topics=${envd:POLICY_PDP_PAP_TOPIC}
+kafka.sink.topics=${envd:POLICY_PDP_PAP_TOPIC}
+
+kafka.source.topics.policy-pdp-pap.servers=${envd:KAFKA_SERVERS}
+kafka.source.topics.policy-pdp-pap.effectiveTopic=${envd:POLICY_PDP_PAP_TOPIC}
+kafka.source.topics.policy-pdp-pap.apiKey=${envd:POLICY_PDP_PAP_API_KEY}
+kafka.source.topics.policy-pdp-pap.apiSecret=${envd:POLICY_PDP_PAP_API_SECRET}
+kafka.source.topics.policy-pdp-pap.https=${envd:KAFKA_HTTPS:false}
+kafka.source.topics.policy-pdp-pap.additionalProps=${envd:KAFKA_ADDITIONAL_PROPS}
+
+kafka.sink.topics.policy-pdp-pap.servers=${envd:KAFKA_SERVERS}
+kafka.sink.topics.policy-pdp-pap.effectiveTopic=${envd:POLICY_PDP_PAP_TOPIC}
+kafka.sink.topics.policy-pdp-pap.apiKey=${envd:POLICY_PDP_PAP_API_KEY}
+kafka.sink.topics.policy-pdp-pap.apiSecret=${envd:POLICY_PDP_PAP_API_SECRET}
+kafka.sink.topics.policy-pdp-pap.https=${envd:KAFKA_HTTPS:false}
+kafka.sink.topics.policy-pdp-pap.additionalProps=${envd:KAFKA_ADDITIONAL_PROPS}
@@ -1,6 +1,7 @@
 {{/*
 # Copyright 2018-2019 AT&T Intellectual Property. All rights reserved.
 # Modifications Copyright © 2018 Amdocs, Bell Canada.
+# Modifications Copyright © 2024 Nordix Foundation.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -15,4 +16,4 @@
 # limitations under the License.
 */}}
 
-POOLING_TOPIC=pooling
+POOLING_TOPIC=policy-pdp-pooling
index c535a95..e03fe44 100755 (executable)
@@ -1,6 +1,7 @@
 {{/*
 #  ============LICENSE_START=======================================================
 #   Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+#   Modifications Copyright (C) 2025 OpenInfra Europe. All rights reserved.
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -48,9 +49,6 @@ AAI_PASSWORD={{.Values.aai.password}}
 SO_USERNAME={{.Values.so.user}}
 SO_PASSWORD={{.Values.so.password}}
 
-VFC_USERNAME={{.Values.vfc.user}}
-VFC_PASSWORD={{.Values.vfc.password}}
-
 SDNC_USERNAME={{.Values.sdnc.user}}
 SDNC_PASSWORD={{.Values.sdnc.password}}
 
index 7158c02..5a9baa8 100644 (file)
@@ -14,4 +14,4 @@
 # limitations under the License.
 */}}
 
-{{ include "common.authorizationPolicy" . }}
\ No newline at end of file
+{{ include "common.authorizationPolicy" . }}
index f566142..7e6e2b8 100755 (executable)
@@ -20,11 +20,7 @@ kind: ConfigMap
 metadata:
   name: {{ include "common.fullname" . }}-configmap
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 {{- with .Files.Glob "resources/configmaps/*{.zip,store}" }}
 binaryData:
 {{- range $path, $bytes := . }}
index f986994..e42263c 100755 (executable)
@@ -22,11 +22,7 @@ kind: Secret
 metadata:
   name: {{ include "common.fullname" . }}-secret
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 type: Opaque
 data:
 {{- range $path, $bytes := .Files.Glob "resources/secrets/*" }}
old mode 100755 (executable)
new mode 100644 (file)
index ba0e2d1..d7bcccf
@@ -1,6 +1,8 @@
 {{/*
 # Copyright © 2017 Amdocs, Bell Canada
 # Modifications Copyright © 2018-2020, 2022 AT&T Intellectual Property
+# Modifications Copyright (C) 2024-2025 Nordix Foundation.
+# Modifications Copyright © 2024-2025 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -25,28 +27,9 @@ spec:
   template:
     metadata: {{- include "common.templateMetadata" . | nindent 6 }}
     spec:
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
       initContainers:
-      - command:
-        - /app/ready.py
-        args:
-        - --job-name
-        - {{ include "common.release" . }}-policy-galera-config
-        env:
-        - name: NAMESPACE
-          valueFrom:
-            fieldRef:
-              apiVersion: v1
-              fieldPath: metadata.namespace
-        image: {{ include "repositoryGenerator.image.readiness" . }}
-        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-        name: {{ include "common.name" . }}-db-readiness
-        resources:
-          limits:
-            cpu: "100m"
-            memory: "500Mi"
-          requests:
-            cpu: "3m"
-            memory: "20Mi"
+      {{ include "common.readinessCheck.waitFor" . | nindent 6 }}
 {{- if not .Values.nexus.offline }}
       - command:
         - /app/ready.py
@@ -69,6 +52,7 @@ spec:
           value: {{ .Values.config.app.listener.policyPdpPapTopic }}
         image: {{ include "repositoryGenerator.image.readiness" . }}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        {{ include "common.containerSecurityContext" . | indent 8 | trim }}
         name: {{ include "common.name" . }}-readiness
         resources:
           limits:
@@ -78,12 +62,43 @@ spec:
             cpu: "3m"
             memory: "20Mi"
 {{- end }}
+      - command:
+          - sh
+        args:
+          - -c
+          - JAASLOGIN=`echo $JAASLOGIN | tr -d '"'`; cd /config-input && for PFILE in `ls -1`; do envsubst <${PFILE} >/config/${PFILE}; done
+        env:
+        - name: KAFKA_URL
+          value: {{ include "common.release" . }}-{{ .Values.global.kafkaBootstrap }}
+        - name: SASL
+          value: {{ .Values.kafkaUser.authenticationType | upper }}
+        - name: GROUP_ID
+          value: {{ .Values.config.kafka.consumer.groupId }}
+      {{- if .Values.global.useStrimziKafka }}
+        - name: JAASLOGIN
+          valueFrom:
+            secretKeyRef:
+              name: {{ include "common.name" . }}-ku
+              key: sasl.jaas.config
+      {{- end }}
+        volumeMounts:
+          - mountPath: /config-input
+            name: drools-config
+          - mountPath: /config
+            name: drools-config-processed
+        image: {{ include "repositoryGenerator.image.envsubst" . }}
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        {{ include "common.containerSecurityContext" . | indent 8 | trim }}
+        name: {{ include "common.name" . }}-update-config
       containers:
         - name: {{ include "common.name" . }}
+          {{ include "common.containerSecurityContext" . | indent 10 | trim }}
           image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
           command: ["sh","-c"]
-          args: ["/opt/app/policy/bin/pdpd-cl-entrypoint.sh boot"]
+          args:
+            - ls /tmp/policy-install;
+              /opt/app/policy/bin/pdpd-cl-entrypoint.sh boot
           ports: {{ include "common.containerPorts" . | nindent 12  }}
           {{- if eq .Values.liveness.enabled true }}
           livenessProbe:
@@ -107,27 +122,58 @@ spec:
           - name: SQL_PASSWORD
             {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-secret" "key" "password") | indent 12 }}
           volumeMounts:
-          {{- range $path, $bytes := .Files.Glob "resources/secrets/*" }}
-          - mountPath: /tmp/policy-install/config/{{ base $path }}
-            name: drools-secret
-            subPath: {{ base $path }}
-          {{- end }}
-          {{- range $path, $bytes := .Files.Glob "resources/configmaps/*" }}
-          - mountPath: /tmp/policy-install/config/{{ base $path }}
+          - mountPath: /etc/localtime
+            name: localtime
+            readOnly: true
+          - name: logs
+            mountPath: /var/log/onap
+          - name: empty-dir
+            mountPath: /tmp
+            subPath: tmp-dir
+          - mountPath: /opt/app/policy/etc/profile.d/base.conf
+            subPath: base.conf
+            name: drools-config-processed
+          - mountPath: /opt/app/policy/etc/profile.d/credentials.conf
+            subPath: credentials.conf
+            name: drools-config-processed
+          - mountPath: /opt/app/policy/etc/profile.d/feature-pooling-messages.conf
+            subPath: feature-pooling-messages.conf
+            name: drools-config-processed
+          - mountPath: /opt/app/policy/config/feature-lifecycle.properties
+            subPath: feature-lifecycle.properties
+            name: drools-config-processed
+          - mountPath: /opt/app/policy/config/engine-system.properties
+            subPath: engine-system.properties
+            name: drools-config-processed
+          - mountPath: /opt/app/policy/config/feature-distributed-locking.properties
+            subPath: feature-distributed-locking.properties
+            name: drools-config-processed
+          - mountPath: /opt/app/policy/config/logback.xml
+            subPath: logback.xml
             name: drools-config
-            subPath: {{ base $path }}
-          {{- end }}
+          - mountPath: /opt/app/policy/config/settings.xml
+            subPath: settings.xml
+            name: drools-config-processed
           resources: {{ include "common.resources" . | nindent 12 }}
         {{- if .Values.nodeSelector }}
-        nodeSelector:
-{{ toYaml .Values.nodeSelector | indent 10 }}
+      nodeSelector:
+{{ toYaml .Values.nodeSelector | indent 8 }}
         {{- end -}}
         {{- if .Values.affinity }}
-        affinity:
-{{ toYaml .Values.affinity | indent 10 }}
+      affinity:
+{{ toYaml .Values.affinity | indent 8 }}
         {{- end }}
       serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
       volumes:
+        - name: localtime
+          hostPath:
+            path: /etc/localtime
+        - name: empty-dir
+          emptyDir:
+            sizeLimit: {{ .Values.dirSizes.emptyDir.sizeLimit }}
+        - name: logs
+          emptyDir:
+            sizeLimit: {{ .Values.dirSizes.logDir.sizeLimit }}
         - name: drools-config
           configMap:
             name: {{ include "common.fullname" . }}-configmap
@@ -137,6 +183,10 @@ spec:
               path: {{ base $path }}
               mode: 0755
             {{- end }}
+        - name: drools-config-processed
+          emptyDir:
+            medium: Memory
+            sizeLimit: 64Mi
         - name: drools-secret
           secret:
             secretName: {{ include "common.fullname" . }}-secret
old mode 100755 (executable)
new mode 100644 (file)
index 710acd2..1dc1127
@@ -1,6 +1,8 @@
 # Copyright © 2017 Amdocs
 # Copyright © 2017, 2021 Bell Canada
 # Modifications Copyright © 2018-2022 AT&T Intellectual Property
+# Modifications Copyright (C) 2024-2025 OpenInfra Europe. All rights reserved.
+# Modifications Copyright © 2024-2025 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 #################################################################
 global:
   nodePortPrefix: 302
+  postgres:
+    service:
+      name: policy-postgres
+      name2: policy-pg-primary
+      name3: policy-pg-replica
+      port: 5432
 
 #################################################################
 # Secrets metaconfig
@@ -41,7 +49,9 @@ secrets:
 # Application configuration defaults.
 #################################################################
 # application image
-image: onap/policy-pdpd-cl:2.1.1
+# The newest images have been tested with SASL and Postgres. The images released next will have the relevant fixes
+image: onap/policy-pdpd-cl:3.2.0
+
 pullPolicy: Always
 
 # flag to enable debugging - application support required
@@ -86,7 +96,7 @@ serviceMesh:
       - serviceAccount: strimzi-kafka-read
 
 server:
-  jvmOpts: -server -XshowSettings:vm
+  jvmOpts: "-server -XshowSettings:vm"
 
 telemetry:
   user: demo@people.osaaf.org
@@ -100,8 +110,6 @@ nexus:
   offline: true
 
 db:
-  name: policy-mariadb
-  user: policy-user
   password: policy_user
 
 pap:
@@ -128,10 +136,6 @@ so:
   user: InfraPortalClient
   password: password1$
 
-vfc:
-  user:
-  password:
-
 sdnc:
   user: admin
   password: Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
@@ -171,6 +175,16 @@ resources:
       memory: "1.6Gi"
   unlimited: {}
 
+securityContext:
+  user_id: 100
+  group_id: 102
+
+dirSizes:
+  emptyDir:
+    sizeLimit: 1Gi
+  logDir:
+    sizeLimit: 500Mi
+
 #Pods Service Account
 serviceAccount:
   nameOverride: policy-drools-pdp
@@ -182,6 +196,11 @@ metrics:
     # Override the labels based on the Prometheus config parameter: serviceMonitorSelector.
     # The default operator for prometheus enforces the below label.
     labels:
+      app: '{{ include "common.name" . }}'
+      helm.sh/chart: '{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}'
+      app.kubernetes.io/instance: '{{ include "common.release" . }}'
+      app.kubernetes.io/managed-by: '{{ .Release.Service }}'
+      version: '{{ .Chart.Version | replace "+" "_" }}'
       release: prometheus
     enabled: true
     port: policy-drools-pdp-9696
@@ -194,9 +213,9 @@ metrics:
       externalSecretPasswordKey: password
     selector:
       app: '{{ include "common.name" . }}'
-      chart: '{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}'
-      release: '{{ include "common.release" . }}'
-      heritage: '{{ .Release.Service }}'
+      helm.sh/chart: '{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}'
+      app.kubernetes.io/instance: '{{ include "common.release" . }}'
+      app.kubernetes.io/managed-by: '{{ .Release.Service }}'
 
 config:
   # Event consumption (kafka) properties
@@ -218,3 +237,52 @@ kafkaUser:
       type: topic
       patternType: prefix
       operations: [ Create, Describe, Read, Write ]
+    - name: a1-p-rsp
+      type: topic
+      patternType: prefix
+      operations: [ Create, Describe, Read, Write ]
+    - name: a1-p
+      type: topic
+      patternType: prefix
+      operations: [ Create, Describe, Read, Write ]
+    - name: appc-cl
+      type: topic
+      patternType: prefix
+      operations: [ Create, Describe, Read, Write ]
+    - name: appc-lcm-read
+      type: topic
+      patternType: prefix
+      operations: [ Create, Describe, Read, Write ]
+    - name: appc-lcm-write
+      type: topic
+      patternType: prefix
+      operations: [ Create, Describe, Read, Write ]
+    - name: dcae_cl_rsp
+      type: topic
+      patternType: prefix
+      operations: [ Create, Describe, Read, Write ]
+    - name: unauthenticated.dcae_cl_output
+      type: topic
+      patternType: prefix
+      operations: [ Create, Describe, Read, Write ]
+    - name: dcae_topic
+      type: topic
+      patternType: prefix
+      operations: [ Create, Describe, Read, Write ]
+    - name: policy-cl-mgt
+      type: topic
+      patternType: prefix
+      operations: [ Create, Describe, Read, Write ]
+    - name: sdnr-cl-rsp
+      type: topic
+      patternType: prefix
+      operations: [ Create, Describe, Read, Write ]
+    - name: sdnr-cl
+      type: topic
+      patternType: prefix
+      operations: [ Create, Describe, Read, Write ]
+
+readinessCheck:
+  wait_for:
+    services:
+      - policy-api
old mode 100755 (executable)
new mode 100644 (file)
index 8d04647..59e01d8
@@ -2,6 +2,7 @@
 # Modifications Copyright © 2018-2020 AT&T
 # Modifications Copyright © 2021 Orange
 # Modifications Copyright © 2021, 2024 Nordix Foundation
+# Modifications Copyright © 2024 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -18,7 +19,7 @@
 apiVersion: v2
 description: ONAP Policy Nexus
 name: policy-nexus
-version: 14.0.0
+version: 15.0.2
 
 dependencies:
   - name: common
index 7158c02..5a9baa8 100644 (file)
@@ -14,4 +14,4 @@
 # limitations under the License.
 */}}
 
-{{ include "common.authorizationPolicy" . }}
\ No newline at end of file
+{{ include "common.authorizationPolicy" . }}
index 3d03338..fe183cf 100755 (executable)
@@ -1,6 +1,7 @@
 {{/*
 # Copyright © 2017 Amdocs, Bell Canada
 # Modifications Copyright © 2018-2020 AT&T Intellectual Property
+# Modifications Copyright © 2024 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -24,16 +25,19 @@ spec:
   template:
     metadata: {{- include "common.templateMetadata" . | nindent 6 }}
     spec:
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
       initContainers:
       - command: ["sh", "-c", "chown -R 200:200 /share"]
         image: {{ include "repositoryGenerator.image.busybox" . }}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        {{ include "common.containerSecurityContext" . | indent 8 | trim }}
         name: {{ include "common.name" . }}-init
         volumeMounts:
         - mountPath: /share
           name: nexus-data
       containers:
         - name: {{ include "common.name" . }}
+          {{ include "common.containerSecurityContext" . | indent 10 | trim }}
           image: {{ include "repositoryGenerator.dockerHubRepository" . }}/{{ .Values.image }}
           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
           ports: {{ include "common.containerPorts" . | nindent 12  }}
index 62e66f1..1bafeb5 100755 (executable)
@@ -22,12 +22,7 @@ apiVersion: v1
 metadata:
   name: {{ include "common.fullname" . }}
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
-    release: "{{ include "common.release" . }}"
-    heritage: "{{ .Release.Service }}"
-    name: {{ include "common.fullname" . }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 spec:
   capacity:
     storage: {{ .Values.persistence.size }}
index 1cadcc5..e5a06e2 100755 (executable)
@@ -21,11 +21,7 @@ apiVersion: v1
 metadata:
   name: {{ include "common.fullname" . }}
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
-    release: "{{ include "common.release" . }}"
-    heritage: "{{ .Release.Service }}"
+  labels: {{- include "common.labels" . | nindent 4 }}
 {{- if .Values.persistence.annotations }}
   annotations:
 {{ toYaml .Values.persistence.annotations | indent 4 }}
index 6aee4ca..8d13879 100755 (executable)
@@ -15,4 +15,4 @@
 # limitations under the License.
 */}}
 
-{{ include "common.service" . }}
\ No newline at end of file
+{{ include "common.service" . }}
old mode 100755 (executable)
new mode 100644 (file)
index f10d55d..cc75a9f
@@ -1,5 +1,7 @@
 # Copyright © 2017 Amdocs, Bell Canada
 # Modifications Copyright © 2018-2020 AT&T Intellectual Property
+# Modifications Copyright © 2024 Deutsche Telekom
+# Modifications Copyright (C) 2024 Nordix Foundation.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 global:
   nodePortPrefix: 302
   persistence: {}
+  postgres:
+    useInPolicy: false
+  mariadbGalera:
+    useInPolicy: true
 
 #################################################################
 # Application configuration defaults.
@@ -97,6 +103,10 @@ resources:
       memory: "1Gi"
   unlimited: {}
 
+securityContext:
+  user_id: 100
+  group_id: 102
+
 #Pods Service Account
 serviceAccount:
   nameOverride: policy-nexus
diff --git a/kubernetes/policy/components/policy-opa-pdp/Chart.yaml b/kubernetes/policy/components/policy-opa-pdp/Chart.yaml
new file mode 100644 (file)
index 0000000..92df2f4
--- /dev/null
@@ -0,0 +1,36 @@
+#  ============LICENSE_START=======================================================
+#   Copyright (C) 2025 Deutsche Telekom Intellectual Property. All rights reserved.
+#  ================================================================================
+#  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.
+#
+#  SPDX-License-Identifier: Apache-2.0
+#  ============LICENSE_END=========================================================
+
+apiVersion: v2
+description: ONAP Policy OPA PDP (PDP-O)
+name: policy-opa-pdp
+version: 16.0.5
+
+dependencies:
+  - name: common
+    version: ~13.x-0
+    repository: '@local'
+  - name: repositoryGenerator
+    version: ~13.x-0
+    repository: '@local'
+  - name: serviceAccount
+    version: ~13.x-0
+    repository: '@local'
+  - name: readinessCheck
+    version: ~13.x-0
+    repository: '@local'
diff --git a/kubernetes/policy/components/policy-opa-pdp/resources/config/config.json b/kubernetes/policy/components/policy-opa-pdp/resources/config/config.json
new file mode 100755 (executable)
index 0000000..bb18a3b
--- /dev/null
@@ -0,0 +1,27 @@
+{{/*
+#  ============LICENSE_START=======================================================
+#   Copyright (C) 2025 Deutsche Telekom Intellectual Property. All rights reserved.
+#  ================================================================================
+#  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.
+#
+#  SPDX-License-Identifier: Apache-2.0
+#  ============LICENSE_END=========================================================
+*/}}
+{
+  "logging": {
+    "level": "debug"
+  },
+  "decision_logs": {
+    "console": true
+  }
+}
diff --git a/kubernetes/policy/components/policy-opa-pdp/templates/authorizationpolicy.yaml b/kubernetes/policy/components/policy-opa-pdp/templates/authorizationpolicy.yaml
new file mode 100755 (executable)
index 0000000..e2b4537
--- /dev/null
@@ -0,0 +1,21 @@
+{{/*
+#  ============LICENSE_START=======================================================
+#   Copyright (C) 2025 Deutsche Telekom Intellectual Property.
+#  ================================================================================
+#  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.
+#
+#  SPDX-License-Identifier: Apache-2.0
+#  ============LICENSE_END=========================================================
+*/}}
+
+{{ include "common.authorizationPolicy" . }}
diff --git a/kubernetes/policy/components/policy-opa-pdp/templates/autoscaling.yaml b/kubernetes/policy/components/policy-opa-pdp/templates/autoscaling.yaml
new file mode 100755 (executable)
index 0000000..4b2d6d4
--- /dev/null
@@ -0,0 +1,61 @@
+#  ============LICENSE_START=======================================================
+#   Copyright (C) 2025 Deutsche Telekom Intellectual Property. All rights reserved.
+#  ================================================================================
+#  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.
+#
+#  SPDX-License-Identifier: Apache-2.0
+#  ============LICENSE_END=========================================================
+
+{{- if .Values.autoscaling.enabled }}
+apiVersion: autoscaling/v2
+kind: HorizontalPodAutoscaler
+metadata:
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
+  labels: {{- include "common.labels" . | nindent 4 }}
+spec:
+  scaleTargetRef:
+    apiVersion: apps/v1
+    kind: Deployment
+    name: {{ include "common.fullname" . }}
+  minReplicas: {{ .Values.autoscaling.minReplicas }}
+  maxReplicas: {{ .Values.autoscaling.maxReplicas }}
+  metrics:
+    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}
+    - type: Resource
+      resource:
+        name: cpu
+        target:
+          type: Utilization
+          averageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}
+    {{- end }}
+    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}
+    - type: Resource
+      resource:
+        name: memory
+        target:
+          type: Utilization
+          averageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}
+    {{- end }}
+  behavior:
+    scaleDown:
+      stabilizationWindowSeconds: {{ .Values.autoscaling.stabilizationWindowSeconds}}
+      policies:
+      - type: Pods
+        value: {{ .Values.autoscaling.podScaleDownCount }}
+        periodSeconds: {{ .Values.autoscaling.periodSecondsPods }}
+      - type: Percent
+        value: {{ .Values.autoscaling.podScaleDownPercent }}
+        periodSeconds: {{ .Values.autoscaling.periodSecondsPercent }}
+      selectPolicy: {{ .Values.autoscaling.selectPolicy }}
+{{- end }}
diff --git a/kubernetes/policy/components/policy-opa-pdp/templates/configmap.yaml b/kubernetes/policy/components/policy-opa-pdp/templates/configmap.yaml
new file mode 100755 (executable)
index 0000000..1942a59
--- /dev/null
@@ -0,0 +1,28 @@
+{{/*
+#  ============LICENSE_START=======================================================
+#   Copyright (C) 2025 Deutsche Telekom Intellectual Property. All rights reserved.
+#  ================================================================================
+#  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.
+#
+#  SPDX-License-Identifier: Apache-2.0
+#  ============LICENSE_END=========================================================
+*/}}
+
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ include "common.fullname" . }}-configmap-config
+  namespace: {{ include "common.namespace" . }}
+  labels: {{- include "common.labels" . | nindent 4 }}
+data:
+{{ tpl (.Files.Glob "resources/config/*.{sql,json,properties,xml}").AsConfig . | indent 2 }}
diff --git a/kubernetes/policy/components/policy-opa-pdp/templates/deployment.yaml b/kubernetes/policy/components/policy-opa-pdp/templates/deployment.yaml
new file mode 100755 (executable)
index 0000000..ba74f1d
--- /dev/null
@@ -0,0 +1,132 @@
+{{/*
+#  ============LICENSE_START=======================================================
+#   Copyright (C) 2025 Deutsche Telekom Intellectual Property.
+#  ================================================================================
+#  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.
+#
+#  SPDX-License-Identifier: Apache-2.0
+#  ============LICENSE_END=========================================================
+*/}}
+
+apiVersion: apps/v1
+kind: Deployment
+metadata: {{- include "common.resourceMetadata" . | nindent 2 }}
+spec:
+  selector: {{- include "common.selectors" . | nindent 4 }}
+  {{- if not .Values.autoscaling.enabled }}
+  replicas: {{ .Values.replicaCount }}
+  {{ end }}
+  strategy:
+    type: {{ .Values.updateStrategy.type }}
+    rollingUpdate:
+      maxUnavailable: {{ .Values.updateStrategy.maxUnavailable }}
+      maxSurge: {{ .Values.updateStrategy.maxSurge }}
+  template:
+    metadata: {{- include "common.templateMetadata" . | nindent 6 }}
+    spec:
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
+      initContainers:
+        {{ include "common.readinessCheck.waitFor" . | nindent 8 }}
+      containers:
+      - name: {{ include "common.name" . }}
+        {{ include "common.containerSecurityContext" . | indent 10 | trim }}
+        image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        ports: {{ include "common.containerPorts" . | nindent 12  }}
+        # disable liveness probe when breakpoints set in debugger
+        # so K8s doesn't restart unresponsive container
+        env:
+        - name: UseSASLForKAFKA
+          value: "{{ .Values.kafka.useSASL }}"
+        - name: KAFKA_URL
+          value: {{ include "common.release" . }}-{{ .Values.global.kafkaBootstrap }}
+        - name: POD_UID
+          valueFrom:
+            fieldRef:
+              fieldPath: metadata.uid
+        - name: GROUPID
+          value: "{{ .Values.groupIdPrefix }}-$(POD_UID)"
+        - name: PATCH_GROUPID
+          value: "{{ .Values.patchGroupIdPrefix }}-$(POD_UID)"
+        - name: LOG_LEVEL
+          value: "{{ .Values.log.loglevel }}"
+        - name: PAP_TOPIC
+          value: "{{ .Values.kafka.topic }}"
+        - name: PATCH_TOPIC
+          value: "{{ .Values.kafka.patchtopic }}"
+        - name: USE_KAFKA_FOR_PATCH
+          value: "{{ .Values.useKafkaForPatch }}"
+        - name: API_USER
+          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "api-creds" "key" "login") | indent 10 }}
+        - name: API_PASSWORD
+          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "api-creds" "key" "password") | indent 10 }}
+        - name: RESTSERVER_USER
+          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "restserver-creds" "key" "login") | indent 10 }}
+        - name: RESTSERVER_PASSWORD
+          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "restserver-creds" "key" "password") | indent 10 }}
+        - name: JAASLOGIN
+          valueFrom:
+            secretKeyRef:
+              name: {{ include "common.name" . }}-ku
+              key: sasl.jaas.config
+        {{- if eq .Values.liveness.enabled true }}
+        livenessProbe:
+          tcpSocket:
+            port: {{ .Values.service.internalPort }}
+          initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
+          periodSeconds: {{ .Values.liveness.periodSeconds }}
+        {{ end -}}
+        readinessProbe:
+          tcpSocket:
+            port: {{ .Values.service.internalPort }}
+          initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
+          periodSeconds: {{ .Values.readiness.periodSeconds }}
+        volumeMounts:
+        - name: opa-config
+          mountPath: /app/config
+        - name: opa-bundles
+          mountPath: /app/bundles
+        - name: logs
+          mountPath: /var/logs
+        - mountPath: /opt/policies/
+          name: opt-policies
+        - mountPath: /opt/data/
+          name: opt-data
+        resources: {{ include "common.resources" . | nindent 12 }}
+      {{- if .Values.nodeSelector }}
+      nodeSelector:
+{{ toYaml .Values.nodeSelector | indent 8 }}
+      {{- end -}}
+      {{- if .Values.affinity }}
+      affinity:
+{{ toYaml .Values.affinity | indent 8 }}
+      {{- end }}
+      serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
+      volumes:
+      - name: opa-config
+        configMap:
+          name: {{ include "common.fullname" . }}-configmap-config
+          defaultMode: 0755
+      - name: opa-bundles
+        emptyDir:
+          sizeLimit: {{ .Values.dirSizes.bundleDir.sizeLimit }}
+      - name: logs
+        emptyDir:
+          sizeLimit: {{ .Values.dirSizes.logDir.sizeLimit }}
+      - name: opt-policies
+        emptyDir:
+          sizeLimit: {{ .Values.dirSizes.optPolicies.sizeLimit }}
+      - name: opt-data
+        emptyDir:
+          sizeLimit: {{ .Values.dirSizes.optData.sizeLimit }}
+      {{- include "common.imagePullSecrets" . | nindent 6 }}
diff --git a/kubernetes/policy/components/policy-opa-pdp/templates/kafkauser.yaml b/kubernetes/policy/components/policy-opa-pdp/templates/kafkauser.yaml
new file mode 100755 (executable)
index 0000000..faf3153
--- /dev/null
@@ -0,0 +1,20 @@
+{{/*
+#  ============LICENSE_START=======================================================
+#   Copyright (C) 2025 Deutsche Telekom Intellectual Property.
+#  ================================================================================
+#  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.
+#
+#  SPDX-License-Identifier: Apache-2.0
+#  ============LICENSE_END=========================================================
+*/}}
+{{ include "common.kafkauser" . }}
diff --git a/kubernetes/policy/components/policy-opa-pdp/templates/secrets.yaml b/kubernetes/policy/components/policy-opa-pdp/templates/secrets.yaml
new file mode 100755 (executable)
index 0000000..0c47a8b
--- /dev/null
@@ -0,0 +1,21 @@
+{{/*
+#  ============LICENSE_START=======================================================
+#   Copyright (C) 2025 Deutsche Telekom Intellectual Property.
+#  ================================================================================
+#  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.
+#
+#  SPDX-License-Identifier: Apache-2.0
+#  ============LICENSE_END=========================================================
+*/}}
+
+{{ include "common.secretFast" . }}
diff --git a/kubernetes/policy/components/policy-opa-pdp/templates/service.yaml b/kubernetes/policy/components/policy-opa-pdp/templates/service.yaml
new file mode 100755 (executable)
index 0000000..1d45a0b
--- /dev/null
@@ -0,0 +1,21 @@
+{{/*
+#  ============LICENSE_START=======================================================
+#   Copyright (C) 2025 Deutsche Telekom Intellectual Property. All rights reserved.
+#  ================================================================================
+#  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.
+#
+#  SPDX-License-Identifier: Apache-2.0
+#  ============LICENSE_END=========================================================
+*/}}
+
+{{ include "common.service" . }}
diff --git a/kubernetes/policy/components/policy-opa-pdp/templates/serviceMonitor.yaml b/kubernetes/policy/components/policy-opa-pdp/templates/serviceMonitor.yaml
new file mode 100755 (executable)
index 0000000..9677420
--- /dev/null
@@ -0,0 +1,23 @@
+{{/*
+# ============LICENSE_START=======================================================
+#  Copyright (c) 2024 Deutsche Telekom
+# ================================================================================
+# 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.
+#
+#  SPDX-License-Identifier: Apache-2.0
+# ============LICENSE_END=========================================================
+*/}}
+
+{{- if .Values.global.prometheusEnabled }}
+{{ include "common.serviceMonitor" . }}
+{{- end }}
diff --git a/kubernetes/policy/components/policy-opa-pdp/values.yaml b/kubernetes/policy/components/policy-opa-pdp/values.yaml
new file mode 100644 (file)
index 0000000..f8fcf24
--- /dev/null
@@ -0,0 +1,263 @@
+#  ============LICENSE_START=======================================================
+#   Copyright (C) 2025 Deutsche Telekom Intellectual Property. All rights reserved.
+#  ================================================================================
+#  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.
+#
+#  SPDX-License-Identifier: Apache-2.0
+#  ============LICENSE_END=========================================================
+
+#################################################################
+# Global configuration defaults.
+#################################################################
+global:
+  persistence: {}
+#################################################################
+# Secrets metaconfig
+#################################################################
+secrets:
+  - uid: api-creds
+    type: basicAuth
+    externalSecret: '{{ tpl (default "" .Values.apiServer.credsExternalSecret) . }}'
+    login: '{{ .Values.apiServer.user }}'
+    password: '{{ .Values.apiServer.password }}'
+    passwordPolicy: required
+  - uid: restserver-creds
+    type: basicAuth
+    externalSecret: '{{ tpl (default "" .Values.restServer.credsExternalSecret) . }}'
+    login: '{{ .Values.restServer.user }}'
+    password: '{{ .Values.restServer.password }}'
+    passwordPolicy: required
+
+#################################################################
+# Application configuration defaults.
+#################################################################
+# application image
+image: onap/policy-opa-pdp:1.0.7
+
+pullPolicy: Always
+
+componentName: &componentName policy-opa-pdp
+
+# flag to enable debugging - application support required
+debugEnabled: false
+
+log:
+  loglevel: "debug"
+
+# application configuration
+
+permissions:
+  uid: 100
+  gid: 102
+
+restServer:
+  user: healthcheck
+  password: zb!XztG34
+
+apiServer:
+  user: policyadmin
+  password: zb!XztG34
+
+updateStrategy:
+  type: RollingUpdate
+  # The number of pods that can be unavailable during the update process
+  maxUnavailable: 0
+  # The number of pods that can be created above the desired amount of pods during an update
+  maxSurge: 1
+
+securityContext:
+  user_id: 1000
+  group_id : 1000
+
+kafka:
+  groupid: "policy-opa-pdp"
+  topic: "policy-pdp-pap"
+  patchtopic: "opa-pdp-data"
+  useSASL: "true"
+  brokers: "onap-strimzi-kafka-bootstrap.onap:9092"
+
+useKafkaForPatch: false
+
+persistence:
+  enabled: true
+  volumeReclaimPolicy: Retain
+  accessMode: ReadWriteMany
+  logsSize: 1Gi
+  mountPath: /dockerdata-nfs
+  mountSubPath: policy/opapdp
+  storageClass: "cinder-os"
+  enableDefaultStorageclass: false
+  parameters: {}
+  storageclassProvisioner: cinder-os
+
+# default number of instances
+replicaCount: 1
+
+nodeSelector: {}
+
+affinity: {}
+
+# probe configuration parameters
+liveness:
+  initialDelaySeconds: 20
+  periodSeconds: 10
+  # necessary to disable liveness probe when setting breakpoints
+  # in debugger so K8s doesn't restart unresponsive container
+  enabled: true
+
+readiness:
+  initialDelaySeconds: 20
+  periodSeconds: 10
+
+readinessCheck:
+  wait_for:
+    services:
+      - 'policy-pap'
+
+autoscaling:
+  enabled: true
+  minReplicas: 1
+  maxReplicas: 3
+  targetCPUUtilizationPercentage: 70
+  stabilizationWindowSeconds: 60
+  podScaleDownCount: 1
+  periodSecondsPods: 60
+  podScaleDownPercent: 10
+  periodSecondsPercent: 60
+  selectPolicy: "Min"
+
+service:
+  type: ClusterIP
+  name: *componentName
+  internalPort: 8282
+  ports:
+    - name: http
+      port: 8282
+
+ingress:
+  enabled: false
+
+serviceMesh:
+  authorizationPolicy:
+    authorizedPrincipals:
+      - serviceAccount: dcae-datafile-collector-read
+      - serviceAccount: dcae-datalake-admin-ui-read
+      - serviceAccount: dcae-datalake-des-read
+      - serviceAccount: dcae-datalake-feeder-read
+      - serviceAccount: dcae-heartbeat-read
+      - serviceAccount: dcae-hv-ves-collector-read
+      - serviceAccount: dcae-kpi-ms-read
+      - serviceAccount: dcae-pm-mapper-read
+      - serviceAccount: dcae-pmsh-read
+      - serviceAccount: dcae-prh-read
+      - serviceAccount: dcae-restconf-collector-read
+      - serviceAccount: dcae-slice-analysis-ms-read
+      - serviceAccount: dcae-snmptrap-collector-read
+      - serviceAccount: dcae-son-handler-read
+      - serviceAccount: dcae-tcagen2-read
+      - serviceAccount: dcae-ves-collector-read
+      - serviceAccount: dcae-ves-mapper-read
+      - serviceAccount: dcae-ves-openapi-manager-read
+      - serviceAccount: strimzi-kafka-read
+      - serviceAccount: oof-read
+      - serviceAccount: sdnc-read
+
+flavor: small
+resources:
+  small:
+    limits:
+      cpu: "1"
+      memory: "1Gi"
+    requests:
+      cpu: "0.5"
+      memory: "1Gi"
+  large:
+    limits:
+      cpu: "2"
+      memory: "2Gi"
+    requests:
+      cpu: "1"
+      memory: "2Gi"
+  unlimited: {}
+
+dirSizes:
+  emptyDir:
+    sizeLimit: 1Gi
+  logDir:
+    sizeLimit: 500Mi
+  policyDir:
+    sizeLimit: 100Mi
+  bundleDir:
+    sizeLimit: 5Gi
+  optPolicies:
+    sizeLimit: 500Mi
+  optData:
+    sizeLimit: 500Mi
+
+groupIdPrefix: opa-pdp
+patchGroupIdPrefix: opa-pdp-data
+
+#Pods Service Account
+serviceAccount:
+  nameOverride: *componentName
+  roles:
+    - read
+
+metrics:
+  serviceMonitor:
+    # Override the labels based on the Prometheus config parameter: serviceMonitorSelector.
+    # The default operator for prometheus enforces the below label.
+    labels:
+      app: '{{ include "common.name" . }}'
+      helm.sh/chart: '{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}'
+      app.kubernetes.io/instance: '{{ include "common.release" . }}'
+      app.kubernetes.io/managed-by: '{{ .Release.Service }}'
+      version: '{{ .Chart.Version | replace "+" "_" }}'
+      release: prometheus
+    enabled: true
+    port: http
+    interval: 60s
+    path: /metrics
+    isHttps: false
+    basicAuth:
+      enabled: true
+      externalSecretNameSuffix: policy-opa-pdp-api-creds
+      externalSecretUserKey: login
+      externalSecretPasswordKey: password
+    selector:
+      app: '{{ include "common.name" . }}'
+      helm.sh/chart: '{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}'
+      app.kubernetes.io/instance: '{{ include "common.release" . }}'
+      app.kubernetes.io/managed-by: '{{ .Release.Service }}'
+
+config:
+  app:
+    listener:
+      policyPdpPapTopic: policy-pdp-pap
+
+# Strimzi Kafka config
+kafkaUser:
+  authenticationType: scram-sha-512
+  acls:
+    - name: opa-pdp
+      type: group
+      patternType: prefix
+      operations: [ Create, Describe, Read, Write ]
+    - name: policy-pdp-pap
+      type: topic
+      patternType: prefix
+      operations: [ Create, Describe, Read, Write ]
+    - name: opa-pdp-data
+      type: topic
+      patternType: prefix
+      operations: [ Create, Describe, Read, Write ]
old mode 100755 (executable)
new mode 100644 (file)
index 0634118..7bfcffa
@@ -1,8 +1,9 @@
 #  ============LICENSE_START=======================================================
-#   Copyright (C) 2019 Nordix Foundation.
+#   Copyright (C) 2019 OpenInfra Europe. All rights reserved.
 #   Modified Copyright (C) 2020 AT&T Intellectual Property.
 #   Modifications Copyright © 2021 Orange
-#   Modifications Copyright © 2021, 2024 Nordix Foundation
+#   Modifications Copyright © 2021, 2024-2025 OpenInfra Europe. All rights reserved.
+#   Modifications Copyright © 2024-2025 Deutsche Telekom
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -22,7 +23,7 @@
 apiVersion: v2
 description: ONAP Policy Administration (PAP)
 name: policy-pap
-version: 14.0.0
+version: 16.0.4
 
 dependencies:
   - name: common
@@ -34,3 +35,6 @@ dependencies:
   - name: serviceAccount
     version: ~13.x-0
     repository: '@local'
+  - name: readinessCheck
+    version: ~13.x-0
+    repository: '@local'
index 614116a..ef1334a 100644 (file)
@@ -1,6 +1,6 @@
 #  ============LICENSE_START=======================================================
 #   Copyright (C) 2022 Bell Canada. All rights reserved.
-#   Modifications Copyright © 2022 Nordix Foundation
+#   Modifications Copyright © 2022-2025 Nordix Foundation
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -26,24 +26,7 @@ spring:
     converters:
       preferred-json-mapper: gson
   datasource:
-{{ if not .Values.global.postgres.localCluster }}
-    url: jdbc:mariadb://{{ .Values.db.service.name }}:{{ .Values.db.service.internalPort }}/policyadmin
-    driverClassName: org.mariadb.jdbc.Driver
-    username: "${SQL_USER}"
-    password: "${SQL_PASSWORD}"
-    hikari:
-      maximumPoolSize: 20
-  jpa:
-    properties:
-      hibernate:
-        dialect: org.hibernate.dialect.MariaDB103Dialect
-    hibernate:
-      ddl-auto: none
-      naming:
-        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
-        implicit-strategy: org.onap.policy.common.spring.utils.CustomImplicitNamingStrategy
-{{- else }}
-    url: jdbc:postgresql://{{ .Values.db.service.pgName }}:{{ .Values.db.service.internalPgPort }}/policyadmin
+    url: jdbc:postgresql://{{ .Values.global.postgres.service.name2 }}:{{ .Values.global.postgres.service.port }}/policyadmin
     driverClassName: org.postgresql.Driver
     username: "${SQL_USER}"
     password: "${SQL_PASSWORD}"
@@ -58,11 +41,6 @@ spring:
       naming:
         physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
         implicit-strategy: org.onap.policy.common.spring.utils.CustomImplicitNamingStrategy
-    properties:
-      hibernate:
-        dialect: org.hibernate.dialect.PostgreSQLDialect
-        format_sql: true
-{{ end }}
 
 server:
   port: 6969
@@ -73,7 +51,6 @@ server:
 
 pap:
   name: PapGroup
-  aaf: false
   topic:
     pdp-pap.name: {{ .Values.config.kafka.topics.policyPdpPap }}
     notification.name: {{ .Values.config.kafka.topics.policyNotification }}
@@ -82,10 +59,10 @@ pap:
     heartBeatMs: 120000
     updateParameters:
       maxRetryCount: 1
-      maxWaitMs: 30000
+      maxWaitMs: 36000
     stateChangeParameters:
       maxRetryCount: 1
-      maxWaitMs: 30000
+      maxWaitMs: 36000
   savePdpStatisticsInDb: true
   topicParameterGroup:
     topicSources:
@@ -151,13 +128,6 @@ pap:
     password: "${API_PASSWORD}"
     useHttps: false
     basePath: policy/api/v1/healthcheck
-  - clientName: distribution
-    hostname: policy-distribution
-    port: 6969
-    userName: "${DISTRIBUTION_USER}"
-    password: "${DISTRIBUTION_PASSWORD}"
-    useHttps: false
-    basePath: healthcheck
 
 management:
   endpoints:
index 7158c02..5a9baa8 100644 (file)
@@ -14,4 +14,4 @@
 # limitations under the License.
 */}}
 
-{{ include "common.authorizationPolicy" . }}
\ No newline at end of file
+{{ include "common.authorizationPolicy" . }}
index ee03f70..c84fcf0 100755 (executable)
@@ -24,11 +24,7 @@ kind: ConfigMap
 metadata:
   name: {{ include "common.fullname" . }}-configmap
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 {{- with .Files.Glob "resources/config/*store" }}
 binaryData:
 {{- range $path, $bytes := . }}
old mode 100755 (executable)
new mode 100644 (file)
index 9ca8b84..5722563
@@ -2,6 +2,8 @@
 #  ============LICENSE_START=======================================================
 #   Copyright (C) 2020 AT&T Intellectual Property.
 #   Modifications Copyright (C) 2022 Bell Canada. All rights reserved.
+#   Modifications Copyright (C) 2024-2025 Nordix Foundation.
+#   Modifications Copyright © 2024-2025 Deutsche Telekom
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -28,31 +30,9 @@ spec:
   template:
     metadata: {{- include "common.templateMetadata" . | nindent 6 }}
     spec:
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
       initContainers:
-      - command:
-        - /app/ready.py
-        args:
-        - --job-name
-{{ if not .Values.global.postgres.localCluster }}
-        - {{ include "common.release" . }}-policy-galera-config
-{{ else }}
-        - {{ include "common.release" . }}-policy-pg-config
-{{ end }}        env:
-        - name: NAMESPACE
-          valueFrom:
-            fieldRef:
-              apiVersion: v1
-              fieldPath: metadata.namespace
-        image: {{ include "repositoryGenerator.image.readiness" . }}
-        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-        name: {{ include "common.name" . }}-db-readiness
-        resources:
-          limits:
-            cpu: "100m"
-            memory: "500Mi"
-          requests:
-            cpu: "3m"
-            memory: "20Mi"
+      {{ include "common.readinessCheck.waitFor" . | nindent 6 }}
       - command:
         - sh
         args:
@@ -75,11 +55,13 @@ spec:
           {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "distribution-secret" "key" "login") | indent 10 }}
         - name: DISTRIBUTION_PASSWORD
           {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "distribution-secret" "key" "password") | indent 10 }}
+{{- if .Values.global.useStrimziKafka }}
         - name: JAASLOGIN
           valueFrom:
             secretKeyRef:
               name: {{ include "common.name" . }}-ku
               key: sasl.jaas.config
+{{- end }}
         volumeMounts:
         - mountPath: /config-input
           name: papconfig
@@ -87,9 +69,11 @@ spec:
           name: papconfig-processed
         image: {{ include "repositoryGenerator.image.envsubst" . }}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        {{ include "common.containerSecurityContext" . | indent 8 | trim }}
         name: {{ include "common.name" . }}-update-config
       containers:
         - name: {{ include "common.name" . }}
+          {{ include "common.containerSecurityContext" . | indent 10 | trim }}
           image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
 
@@ -121,19 +105,39 @@ spec:
             periodSeconds: {{ .Values.readiness.periodSeconds }}
             timeoutSeconds: {{ .Values.readiness.timeout }}
           volumeMounts:
-          - mountPath: /opt/app/policy/pap/etc/mounted
-            name: papconfig-processed
+            - mountPath: /etc/localtime
+              name: localtime
+              readOnly: true
+            - name: logs
+              mountPath: /var/log/onap
+            - name: empty-dir
+              mountPath: /tmp
+              subPath: tmp-dir
+            - mountPath: /opt/app/policy/pap/etc/logback.xml
+              subPath: logback.xml
+              name: papconfig-processed
+            - name: papconfig-processed
+              mountPath: /opt/app/policy/pap/etc/mounted
           resources: {{ include "common.resources" . | nindent 12 }}
         {{- if .Values.nodeSelector }}
-        nodeSelector:
-{{ toYaml .Values.nodeSelector | indent 10 }}
+      nodeSelector:
+{{ toYaml .Values.nodeSelector | indent 8 }}
         {{- end -}}
         {{- if .Values.affinity }}
-        affinity:
-{{ toYaml .Values.affinity | indent 10 }}
+      affinity:
+{{ toYaml .Values.affinity | indent 8 }}
         {{- end }}
       serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
       volumes:
+        - name: localtime
+          emptyDir:
+            sizeLimit: {{ .Values.dirSizes.emptyDir.sizeLimit }}
+        - name: empty-dir
+          emptyDir:
+            sizeLimit: {{ .Values.dirSizes.emptyDir.sizeLimit }}
+        - name: logs
+          emptyDir:
+            sizeLimit: {{ .Values.dirSizes.logDir.sizeLimit }}
         - name: papconfig
           configMap:
             name: {{ include "common.fullname" . }}-configmap
@@ -141,4 +145,5 @@ spec:
         - name: papconfig-processed
           emptyDir:
             medium: Memory
+            sizeLimit: 64Mi
       {{- include "common.imagePullSecrets" . | nindent 6 }}
index 484ff64..8370f63 100755 (executable)
@@ -2,7 +2,8 @@
 #   Copyright (C) 2019 Nordix Foundation.
 #   Modifications Copyright (C) 2019-2021 AT&T Intellectual Property.
 #   Modifications Copyright (C) 2020-2022 Bell Canada. All rights reserved.
-#   Modifications Copyright © 2022 Nordix Foundation
+#   Modifications Copyright © 2022-2025 OpenInfra Europe. All rights reserved.
+#   Modifications Copyright © 2024-2025 Deutsche Telekom
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -26,7 +27,11 @@ global:
   nodePortPrefixExt: 304
   persistence: {}
   postgres:
-    localCluster: false
+    service:
+      name: policy-postgres
+      name2: policy-pg-primary
+      name3: policy-pg-replica
+      port: 5432
 
 #################################################################
 # Secrets metaconfig
@@ -68,7 +73,7 @@ secrets:
 # Application configuration defaults.
 #################################################################
 # application image
-image: onap/policy-pap:3.1.0
+image: onap/policy-pap:4.2.0
 pullPolicy: Always
 
 # flag to enable debugging - application support required
@@ -79,11 +84,6 @@ debugEnabled: false
 db:
   user: policy-user
   password: policy_user
-  service:
-    name: policy-mariadb
-    pgName: policy-pg-primary
-    internalPort: 3306
-    internalPgPort: 5432
 
 restServer:
   user: policyadmin
@@ -130,7 +130,7 @@ service:
     port: 6969
   - name: debug-port
     port: 5005
-    protocol: TCP
+    protocol: tcp
 
 ingress:
   enabled: false
@@ -145,20 +145,30 @@ flavor: small
 resources:
   small:
     limits:
-      cpu: "1"
+      cpu: "3"
       memory: "1Gi"
     requests:
-      cpu: "0.5"
+      cpu: "1"
       memory: "1Gi"
   large:
     limits:
-      cpu: "2"
+      cpu: "4"
       memory: "2Gi"
     requests:
-      cpu: "1"
+      cpu: "2"
       memory: "2Gi"
   unlimited: {}
 
+securityContext:
+  user_id: 100
+  group_id: 102
+
+dirSizes:
+  emptyDir:
+    sizeLimit: 1Gi
+  logDir:
+    sizeLimit: 500Mi
+
 #Pods Service Account
 serviceAccount:
   nameOverride: policy-pap
@@ -170,9 +180,15 @@ metrics:
     # Override the labels based on the Prometheus config parameter: serviceMonitorSelector.
     # The default operator for prometheus enforces the below label.
     labels:
+      app: '{{ include "common.name" . }}'
+      helm.sh/chart: '{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}'
+      app.kubernetes.io/instance: '{{ include "common.release" . }}'
+      app.kubernetes.io/managed-by: '{{ .Release.Service }}'
+      version: '{{ .Chart.Version | replace "+" "_" }}'
       release: prometheus
     enabled: true
     port: http-api
+    path: /policy/pap/v1/metrics
     interval: 60s
     isHttps: false
     basicAuth:
@@ -225,3 +241,7 @@ kafkaUser:
       patternType: prefix
       operations: [Create, Describe, Read, Write]
 
+readinessCheck:
+  wait_for:
+    services:
+      - policy-api
old mode 100755 (executable)
new mode 100644 (file)
index a46d612..2494382
@@ -1,7 +1,8 @@
 #  ============LICENSE_START=======================================================
 #   Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved.
 #   Modifications Copyright © 2021 Orange
-#   Modifications Copyright © 2021, 2024 Nordix Foundation
+#   Modifications Copyright © 2021, 2024-2025 OpenInfra Europe. All rights reserved.
+#   Modifications Copyright © 2024-2025 Deutsche Telekom
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -21,7 +22,7 @@
 apiVersion: v2
 description: ONAP Policy XACML PDP (PDP-X)
 name: policy-xacml-pdp
-version: 14.0.0
+version: 16.0.4
 
 dependencies:
   - name: common
@@ -33,3 +34,6 @@ dependencies:
   - name: serviceAccount
     version: ~13.x-0
     repository: '@local'
+  - name: readinessCheck
+    version: ~13.x-0
+    repository: '@local'
old mode 100755 (executable)
new mode 100644 (file)
index d2e9c62..8641165
@@ -1,4 +1,23 @@
 {{/*
+#  ============LICENSE_START=======================================================
+#   Copyright (C) 2024-2025 Nordix Foundation. All rights reserved.
+#   Modifications (C) 2025 Deutsche Telekom. All rights reserved.
+#  ================================================================================
+#  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.
+#
+#  SPDX-License-Identifier: Apache-2.0
+#  ============LICENSE_END=========================================================
+
 #
 # Properties that the embedded PDP engine uses to configure and load
 #
@@ -49,8 +68,8 @@ xacml.pip.engines=count-recent-operations,get-operation-outcome
 #
 # JPA Properties
 #
-eclipselink.target-database=MySQL
-javax.persistence.jdbc.driver=org.mariadb.jdbc.Driver
-javax.persistence.jdbc.url=jdbc:mariadb://{{ .Values.db.service.name }}:{{ .Values.db.service.internalPort }}/operationshistory
-javax.persistence.jdbc.user=${SQL_USER}
-javax.persistence.jdbc.password=${SQL_PASSWORD}
+eclipselink.target-database=PostgreSQL
+jakarta.persistence.jdbc.driver=org.postgresql.Driver
+jakarta.persistence.jdbc.url=jdbc:postgresql://{{ .Values.global.postgres.service.name2 }}:{{ .Values.global.postgres.service.port }}/operationshistory
+jakarta.persistence.jdbc.user=${SQL_USER}
+jakarta.persistence.jdbc.password=${SQL_PASSWORD}
index 7158c02..5a9baa8 100644 (file)
@@ -14,4 +14,4 @@
 # limitations under the License.
 */}}
 
-{{ include "common.authorizationPolicy" . }}
\ No newline at end of file
+{{ include "common.authorizationPolicy" . }}
diff --git a/kubernetes/policy/components/policy-xacml-pdp/templates/autoscaling.yaml b/kubernetes/policy/components/policy-xacml-pdp/templates/autoscaling.yaml
new file mode 100644 (file)
index 0000000..b7f2653
--- /dev/null
@@ -0,0 +1,32 @@
+{{- if .Values.autoscaling.enabled }}
+apiVersion: autoscaling/v2
+kind: HorizontalPodAutoscaler
+metadata:
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
+  labels: {{- include "common.labels" . | nindent 4 }}
+spec:
+  scaleTargetRef:
+    apiVersion: apps/v1
+    kind: Deployment
+    name: {{ include "common.fullname" . }}
+  minReplicas: {{ .Values.autoscaling.minReplicas }}
+  maxReplicas: {{ .Values.autoscaling.maxReplicas }}
+  metrics:
+    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}
+    - type: Resource
+      resource:
+        name: cpu
+        target:
+          type: Utilization
+          averageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}
+    {{- end }}
+    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}
+    - type: Resource
+      resource:
+        name: memory
+        target:
+          type: Utilization
+          averageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}
+    {{- end }}
+{{- end }}
index 3b1a123..f93d6a8 100755 (executable)
@@ -24,11 +24,7 @@ kind: ConfigMap
 metadata:
   name: {{ include "common.fullname" . }}-configmap
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 {{- with .Files.Glob "resources/config/*store" }}
 binaryData:
 {{- range $path, $bytes := . }}
old mode 100755 (executable)
new mode 100644 (file)
index cda1aa4..cd23866
@@ -1,6 +1,8 @@
 {{/*
 #  ============LICENSE_START=======================================================
 #   Copyright (C) 2020 AT&T Intellectual Property.
+#   Modifications Copyright (C) 2024-2025 Nordix Foundation.
+#   Modifications Copyright © 2024-2025 Deutsche Telekom
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -23,32 +25,20 @@ kind: Deployment
 metadata: {{- include "common.resourceMetadata" . | nindent 2 }}
 spec:
   selector: {{- include "common.selectors" . | nindent 4 }}
+  {{- if not .Values.autoscaling.enabled }}
   replicas: {{ .Values.replicaCount }}
+  {{ end }}
+  strategy:
+    type: {{ .Values.updateStrategy.type }}
+    rollingUpdate:
+      maxUnavailable: {{ .Values.updateStrategy.maxUnavailable }}
+      maxSurge: {{ .Values.updateStrategy.maxSurge }}
   template:
     metadata: {{- include "common.templateMetadata" . | nindent 6 }}
     spec:
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
       initContainers:
-      - command:
-        - /app/ready.py
-        args:
-        - --job-name
-        - {{ include "common.release" . }}-policy-galera-config
-        env:
-        - name: NAMESPACE
-          valueFrom:
-            fieldRef:
-              apiVersion: v1
-              fieldPath: metadata.namespace
-        image: {{ include "repositoryGenerator.image.readiness" . }}
-        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-        name: {{ include "common.name" . }}-readiness
-        resources:
-          limits:
-            cpu: "100m"
-            memory: "500Mi"
-          requests:
-            cpu: "3m"
-            memory: "20Mi"
+      {{ include "common.readinessCheck.waitFor" . | nindent 6 }}
       - command:
         - sh
         args:
@@ -74,10 +64,14 @@ spec:
               key: sasl.jaas.config
         - name: KAFKA_URL
           value: {{ include "common.release" . }}-{{ .Values.global.kafkaBootstrap }}
+        - name: POD_UID
+          valueFrom:
+            fieldRef:
+              fieldPath: metadata.uid
         - name: SASL
           value: {{ .Values.kafkaUser.authenticationType | upper }}
         - name: GROUP_ID
-          value: {{ .Values.config.kafka.consumer.groupId }}
+          value: {{ .Values.groupIdPrefix }}-$(POD_UID)
         - name: PAP_TOPIC
           value: {{ .Values.config.app.listener.policyPdpPapTopic }}
         volumeMounts:
@@ -87,9 +81,11 @@ spec:
           name: pdpxconfig-processed
         image: {{ include "repositoryGenerator.image.envsubst" . }}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        {{ include "common.containerSecurityContext" . | indent 8 | trim }}
         name: {{ include "common.name" . }}-update-config
       containers:
         - name: {{ include "common.name" . }}
+          {{ include "common.containerSecurityContext" . | indent 10 | trim }}
           image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
           command: ["/opt/app/policy/pdpx/bin/policy-pdpx.sh"]
@@ -110,19 +106,87 @@ spec:
             initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
             periodSeconds: {{ .Values.readiness.periodSeconds }}
           volumeMounts:
+          - name: policy-guard
+            mountPath: /opt/app/policy/pdpx/apps/guard
+          - name: pdpxconfig-processed
+            mountPath: /opt/app/policy/pdpx/apps/guard/xacml.properties
+            subPath: xacml.properties
+          - name: policy-match
+            mountPath: /opt/app/policy/pdpx/apps/match
+          - name: pdpxconfig-processed
+            mountPath: /opt/app/policy/pdpx/apps/match/xacml.properties
+            subPath: xacml.properties
+          - name: policy-monitoring
+            mountPath: /opt/app/policy/pdpx/apps/monitoring
+          - name: pdpxconfig-processed
+            mountPath: /opt/app/policy/pdpx/apps/monitoring/xacml.properties
+            subPath: xacml.properties
+          - name: policy-naming
+            mountPath: /opt/app/policy/pdpx/apps/naming
+          - name: pdpxconfig-processed
+            mountPath: /opt/app/policy/pdpx/apps/naming/xacml.properties
+            subPath: xacml.properties
+          - name: policy-native
+            mountPath: /opt/app/policy/pdpx/apps/native
+          - name: pdpxconfig-processed
+            mountPath: /opt/app/policy/pdpx/apps/native/xacml.properties
+            subPath: xacml.properties
+          - name: policy-optimization
+            mountPath: /opt/app/policy/pdpx/apps/optimization
+          - name: pdpxconfig-processed
+            mountPath: /opt/app/policy/pdpx/apps/optimization/xacml.properties
+            subPath: xacml.properties
+          - name: logs
+            mountPath: /var/log/onap
+          - name: empty-dir
+            mountPath: /tmp
+            subPath: tmp-dir
+          - mountPath: /opt/app/policy/pdpx/etc/logback.xml
+            subPath: logback.xml
+            name: pdpxconfig-processed
           - mountPath: /opt/app/policy/pdpx/etc/mounted
             name: pdpxconfig-processed
+          - mountPath: /etc/localtime
+            name: localtime
+            readOnly: true
           resources: {{ include "common.resources" . | nindent 12 }}
         {{- if .Values.nodeSelector }}
-        nodeSelector:
-{{ toYaml .Values.nodeSelector | indent 10 }}
+      nodeSelector:
+{{ toYaml .Values.nodeSelector | indent 8 }}
         {{- end -}}
         {{- if .Values.affinity }}
-        affinity:
-{{ toYaml .Values.affinity | indent 10 }}
+      affinity:
+{{ toYaml .Values.affinity | indent 8 }}
         {{- end }}
       serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
       volumes:
+        - name: policy-guard
+          emptyDir:
+            sizeLimit: {{ .Values.dirSizes.policyDir.sizeLimit }}
+        - name: policy-match
+          emptyDir:
+            sizeLimit: {{ .Values.dirSizes.policyDir.sizeLimit }}
+        - name: policy-monitoring
+          emptyDir:
+            sizeLimit: {{ .Values.dirSizes.policyDir.sizeLimit }}
+        - name: policy-naming
+          emptyDir:
+            sizeLimit: {{ .Values.dirSizes.policyDir.sizeLimit }}
+        - name: policy-native
+          emptyDir:
+            sizeLimit: {{ .Values.dirSizes.policyDir.sizeLimit }}
+        - name: policy-optimization
+          emptyDir:
+            sizeLimit: {{ .Values.dirSizes.policyDir.sizeLimit }}
+        - name: empty-dir
+          emptyDir:
+            sizeLimit: {{ .Values.dirSizes.emptyDir.sizeLimit }}
+        - name: logs
+          emptyDir:
+            sizeLimit: {{ .Values.dirSizes.logDir.sizeLimit }}
+        - name: localtime
+          emptyDir:
+            sizeLimit: {{ .Values.dirSizes.emptyDir.sizeLimit }}
         - name: pdpxconfig
           configMap:
             name: {{ include "common.fullname" . }}-configmap
@@ -130,4 +194,5 @@ spec:
         - name: pdpxconfig-processed
           emptyDir:
             medium: Memory
+            sizeLimit: 64Mi
       {{- include "common.imagePullSecrets" . | nindent 6 }}
index 3e76c2b..6dabd95 100755 (executable)
@@ -18,4 +18,4 @@
 #  ============LICENSE_END=========================================================
 */}}
 
-{{ include "common.service" . }}
\ No newline at end of file
+{{ include "common.service" . }}
old mode 100755 (executable)
new mode 100644 (file)
index 15ef5e3..061ceed
@@ -1,5 +1,7 @@
 #  ============LICENSE_START=======================================================
 #   Copyright (C) 2019-2021 AT&T Intellectual Property. All rights reserved.
+#   Modifications Copyright (C) 2024-2025 OpenInfra Europe. All rights reserved.
+#   Modifications Copyright © 2024-2025 Deutsche Telekom
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
 #################################################################
 global:
   persistence: {}
+  postgres:
+    service:
+      name: policy-postgres
+      name2: policy-pg-primary
+      name3: policy-pg-replica
+      port: 5432
 
 #################################################################
 # Secrets metaconfig
@@ -49,7 +57,7 @@ secrets:
 # Application configuration defaults.
 #################################################################
 # application image
-image: onap/policy-xacml-pdp:3.1.1
+image: onap/policy-xacml-pdp:4.2.0
 pullPolicy: Always
 
 componentName: &componentName policy-xacml-pdp
@@ -62,9 +70,6 @@ debugEnabled: false
 db:
   user: policy-user
   password: policy_user
-  service:
-    name: policy-mariadb
-    internalPort: 3306
 
 restServer:
   user: healthcheck
@@ -76,6 +81,12 @@ apiServer:
 
 # default number of instances
 replicaCount: 1
+updateStrategy:
+  type: RollingUpdate
+  # The number of pods that can be unavailable during the update process
+  maxUnavailable: 0
+  # The number of pods that can be created above the desired amount of pods during an update
+  maxSurge: 1
 
 nodeSelector: {}
 
@@ -93,6 +104,12 @@ readiness:
   initialDelaySeconds: 20
   periodSeconds: 10
 
+autoscaling:
+  enabled: true
+  minReplicas: 1
+  maxReplicas: 3
+  targetCPUUtilizationPercentage: 80
+
 service:
   type: ClusterIP
   name: *componentName
@@ -147,6 +164,20 @@ resources:
       memory: "2Gi"
   unlimited: {}
 
+securityContext:
+  user_id: 100
+  group_id: 102
+
+groupIdPrefix: policy-xacml-pdp
+
+dirSizes:
+  emptyDir:
+    sizeLimit: 1Gi
+  logDir:
+    sizeLimit: 500Mi
+  policyDir:
+    sizeLimit: 100Mi
+
 #Pods Service Account
 serviceAccount:
   nameOverride: *componentName
@@ -158,9 +189,15 @@ metrics:
     # Override the labels based on the Prometheus config parameter: serviceMonitorSelector.
     # The default operator for prometheus enforces the below label.
     labels:
+      app: '{{ include "common.name" . }}'
+      helm.sh/chart: '{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}'
+      app.kubernetes.io/instance: '{{ include "common.release" . }}'
+      app.kubernetes.io/managed-by: '{{ .Release.Service }}'
+      version: '{{ .Chart.Version | replace "+" "_" }}'
       release: prometheus
     enabled: true
-    port: policy-xacml-pdp
+    port: http
+    path: /metrics
     interval: 60s
     isHttps: false
     basicAuth:
@@ -170,9 +207,9 @@ metrics:
       externalSecretPasswordKey: password
     selector:
       app: '{{ include "common.name" . }}'
-      chart: '{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}'
-      release: '{{ include "common.release" . }}'
-      heritage: '{{ .Release.Service }}'
+      helm.sh/chart: '{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}'
+      app.kubernetes.io/instance: '{{ include "common.release" . }}'
+      app.kubernetes.io/managed-by: '{{ .Release.Service }}'
 
 config:
   # Event consumption (kafka) properties
@@ -189,10 +226,14 @@ kafkaUser:
   acls:
     - name: policy-xacml-pdp
       type: group
+      patternType: prefix
       operations: [ Create, Describe, Read, Write ]
     - name: policy-pdp-pap
       type: topic
       patternType: prefix
       operations: [ Create, Describe, Read, Write ]
 
-
+readinessCheck:
+  wait_for:
+    services:
+      - policy-api
diff --git a/kubernetes/policy/resources/config/db.sh b/kubernetes/policy/resources/config/db.sh
deleted file mode 100755 (executable)
index d793a02..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/bin/sh
-{{/*
-# Copyright © 2017 Amdocs, Bell Canada, AT&T
-# Modifications Copyright © 2018, 2020 AT&T Intellectual Property
-# Modifications Copyright (C) 2021 Nordix Foundation.
-#
-# 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.
-*/}}
-
-mysqlcmd() { mysql  -h ${MYSQL_HOST} -P ${MYSQL_PORT} "$@"; };
-
-i=5
-RESULT_VARIABLE=0
-echo "Check if user ${MYSQL_USER} is created in DB ${MYSQL_HOST}"
-while [ $i -gt 0 ] && [ "$RESULT_VARIABLE" != 1 ]
-do
-  i=$(( i-1 ))
-  RESULT_VARIABLE="$(mysqlcmd -uroot -p"${MYSQL_ROOT_PASSWORD}" -se "SELECT EXISTS(SELECT 1 FROM mysql.user WHERE user = '${MYSQL_USER}')")"
-  if [ "$RESULT_VARIABLE" = 1 ]; then
-    echo "User ${MYSQL_USER} exists"
-  else
-    echo "User ${MYSQL_USER} does not exist"
-    sleep 10
-  fi
-done
-if [ "$RESULT_VARIABLE" != 1 ]; then
-  exit 1
-fi
-for db in migration pooling policyadmin policyclamp operationshistory clampacm
-do
-    echo "Create DB ${db}"
-    mysqlcmd -uroot -p"${MYSQL_ROOT_PASSWORD}" --execute "CREATE DATABASE IF NOT EXISTS ${db};"
-    echo "Grand access for user ${MYSQL_USER}"
-    mysqlcmd -uroot -p"${MYSQL_ROOT_PASSWORD}" --execute "GRANT ALL PRIVILEGES ON \`${db}\`.* TO '${MYSQL_USER}'@'%' ;"
-done
-echo "Flush privileges"
-mysqlcmd -uroot -p"${MYSQL_ROOT_PASSWORD}" --execute "FLUSH PRIVILEGES;"
diff --git a/kubernetes/policy/resources/config/db_migrator_policy_init.sh b/kubernetes/policy/resources/config/db_migrator_policy_init.sh
deleted file mode 100644 (file)
index d1cc108..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/sh
-{{/*
-# Copyright (C) 2021 Nordix Foundation.
-#
-# 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.
-*/}}
-/opt/app/policy/bin/prepare_upgrade.sh ${SQL_DB}
-/opt/app/policy/bin/db-migrator -s ${SQL_DB} -o upgrade
-rc=$?
-/opt/app/policy/bin/db-migrator -s ${SQL_DB} -o report
-exit $rc
diff --git a/kubernetes/policy/templates/configmap.yaml b/kubernetes/policy/templates/configmap.yaml
deleted file mode 100755 (executable)
index c8b01cc..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-{{/*
-# Copyright © 2017 Amdocs, Bell Canada
-# Modifications Copyright © 2018, 2020 AT&T Intellectual Property
-# Modifications Copyright (C) 2021-2022 Nordix Foundation.
-#
-# 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.
-*/}}
-
-apiVersion: v1
-kind: ConfigMap
-metadata:
-  name: {{ include "common.fullname" . }}-db-configmap
-  namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
-data:
-{{ tpl (.Files.Glob "resources/config/*.sh").AsConfig . | indent 2 }}
diff --git a/kubernetes/policy/templates/job.yaml b/kubernetes/policy/templates/job.yaml
deleted file mode 100755 (executable)
index 3880d23..0000000
+++ /dev/null
@@ -1,367 +0,0 @@
-{{/*
-# Copyright © 2018 Amdocs, Bell Canada
-# Modifications Copyright © 2020 AT&T Intellectual Property
-# Modifications Copyright (C) 2022 Nordix Foundation.
-#
-# 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 not .Values.global.postgres.localCluster }}
-apiVersion: batch/v1
-kind: Job
-metadata:
-  name: {{ include "common.fullname" . }}-galera-init
-  namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}-galera-init
-    release: {{ include "common.release" . }}
-spec:
-  template:
-    metadata:
-      labels:
-        app: {{ include "common.name" . }}-galera-init
-        release: {{ include "common.release" . }}
-      name: {{ include "common.name" . }}-galera-init
-    spec:
-      {{- include "common.imagePullSecrets" . | nindent 6 }}
-      initContainers:
-      {{ include "common.readinessCheck.waitFor" (dict "dot" . "wait_for" .Values.readinessCheck.wait_for_mariadb ) | indent 6 | trim }}
-      containers:
-      - name: {{ include "common.name" . }}-galera-config
-        image: {{ include "repositoryGenerator.image.mariadb" . }}
-        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-        volumeMounts:
-        - mountPath: /dbcmd-config/db.sh
-          name: {{ include "common.fullname" . }}-config
-          subPath: db.sh
-        command:
-        - /bin/sh
-        - -cx
-        - |
-           {{- if include "common.onServiceMesh" . }}
-           echo "waiting 15s for istio side cars to be up"; sleep 15s;{{- end }}
-           /dbcmd-config/db.sh
-        env:
-        - name: MYSQL_ROOT_PASSWORD
-          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-root-password" "key" "password") | indent 10 }}
-        - name: MYSQL_HOST
-          value: "{{ index .Values "mariadb-galera" "service" "name" }}"
-        - name: MYSQL_USER
-          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-secret" "key" "login") | indent 10 }}
-        - name: MYSQL_PORT
-          value: "{{ index .Values "mariadb-galera" "service" "internalPort" }}"
-        resources: {{ include "common.resources" . | nindent 10 }}
-      {{- if (include "common.onServiceMesh" .) }}
-      - name: policy-service-mesh-wait-for-job-container
-        image: {{ include "repositoryGenerator.image.quitQuit" . }}
-        imagePullPolicy: Always
-        command:
-        - /bin/sh
-        - "-c"
-        args:
-        - echo "waiting 10s for istio side cars to be up"; sleep 10s;
-          /app/ready.py --service-mesh-check {{ include "common.name" . }}-galera-config -t 45;
-        env:
-        - name: NAMESPACE
-          valueFrom:
-            fieldRef:
-              apiVersion: v1
-              fieldPath: metadata.namespace
-      {{- end }}
-      restartPolicy: Never
-      serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
-      volumes:
-        - name: {{ include "common.fullname" . }}-config
-          configMap:
-            name: {{ include "common.fullname" . }}-db-configmap
-            defaultMode: 0755
-            items:
-              - key: db.sh
-                path: db.sh
-{{ end }}
-
-{{ if .Values.global.postgres.localCluster }}
----
-apiVersion: batch/v1
-kind: Job
-metadata:
-  name: {{ include "common.fullname" . }}-pg-init
-  namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}-pg-init
-    release: {{ include "common.release" . }}
-spec:
-  template:
-    metadata:
-      labels:
-        app: {{ include "common.name" . }}-pg-init
-        release: {{ include "common.release" . }}
-      name: {{ include "common.name" . }}-pg-init
-    spec:
-      {{- include "common.imagePullSecrets" . | nindent 6 }}
-      initContainers:
-      {{ include "common.readinessCheck.waitFor" (dict "dot" . "wait_for" .Values.readinessCheck.wait_for_postgres ) | indent 6 | trim }}
-      containers:
-      - name: {{ include "common.name" . }}-pg-config
-        image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.postgresImage }}
-        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-        volumeMounts:
-          - mountPath: /docker-entrypoint-initdb.d/db-pg.sh
-            name: {{ include "common.fullname" . }}-config
-            subPath: db-pg.sh
-        command:
-          - /bin/sh
-          - -cx
-          - |
-             {{- if include "common.onServiceMesh" . }}
-             echo "waiting 15s for istio side cars to be up"; sleep 15s;{{- end }}
-             /docker-entrypoint-initdb.d/db-pg.sh
-        env:
-          - name: PG_ADMIN_PASSWORD
-            {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-root-password" "key" "password") | indent 12 }}
-          - name: PG_HOST
-            value: "{{ .Values.postgres.service.name2 }}"
-          - name: PG_USER
-            {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-secret" "key" "login") | indent 12 }}
-          - name: PG_USER_PASSWORD
-            {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-secret" "key" "password") | indent 12 }}
-          - name: PG_PORT
-            value: "{{ .Values.postgres.service.internalPort }}"
-        resources: {{ include "common.resources" . | nindent 10 }}
-      {{- if (include "common.onServiceMesh" .) }}
-      - name: policy-service-mesh-wait-for-job-container
-        image: {{ include "repositoryGenerator.image.quitQuit" . }}
-        imagePullPolicy: Always
-        command:
-        - /bin/sh
-        - "-c"
-        args:
-        - echo "waiting 10s for istio side cars to be up"; sleep 10s;
-          /app/ready.py --service-mesh-check {{ include "common.name" . }}-pg-config -t 45;
-        env:
-        - name: NAMESPACE
-          valueFrom:
-            fieldRef:
-              apiVersion: v1
-              fieldPath: metadata.namespace
-      {{- end }}
-      restartPolicy: Never
-      serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
-      volumes:
-        - name: {{ include "common.fullname" . }}-config
-          configMap:
-            name: {{ include "common.fullname" . }}-db-configmap
-            defaultMode: 0755
-            items:
-              - key: db-pg.sh
-                path: db-pg.sh
-{{ end }}
-
----
-{{ if not .Values.global.postgres.localCluster }}
-apiVersion: batch/v1
-kind: Job
-metadata:
-  name: {{ include "common.fullname" . }}-galera-config
-  namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}-galera-config
-    release: {{ include "common.release" . }}
-spec:
-  template:
-    metadata:
-      labels:
-        app: {{ include "common.name" . }}-galera-config
-        release: {{ include "common.release" . }}
-      name: {{ include "common.name" . }}-galera-config
-    spec:
-      {{- include "common.imagePullSecrets" . | nindent 6 }}
-      initContainers:
-      - name: {{ include "common.name" . }}-init-readiness
-        image: {{ include "repositoryGenerator.image.readiness" . }}
-        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-        command:
-        - /app/ready.py
-        args:
-        - --job-name
-        - {{ include "common.fullname" . }}-galera-init
-        env:
-        - name: NAMESPACE
-          valueFrom:
-            fieldRef:
-              apiVersion: v1
-              fieldPath: metadata.namespace
-        resources:
-          limits:
-            cpu: "100m"
-            memory: "500Mi"
-          requests:
-            cpu: "3m"
-            memory: "20Mi"
-      containers:
-      - name: {{ include "common.name" . }}-galera-db-migrator
-        image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.dbmigrator.image }}
-        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-        volumeMounts:
-        - mountPath: /dbcmd-config/db_migrator_policy_init.sh
-          name: {{ include "common.fullname" . }}-config
-          subPath: db_migrator_policy_init.sh
-        command:
-        - /bin/sh
-        - -cx
-        - |
-           {{- if include "common.onServiceMesh" . }}
-           echo "waiting 15s for istio side cars to be up"; sleep 15s;{{- end }}
-           /dbcmd-config/db_migrator_policy_init.sh
-        env:
-        - name: SQL_HOST
-          value: "{{ index .Values "mariadb-galera" "service" "name" }}"
-        - name: SQL_USER
-          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-secret" "key" "login") | indent 10 }}
-        - name: SQL_PASSWORD
-          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-secret" "key" "password") | indent 10 }}
-        - name: SQL_DB
-          value: {{ .Values.dbmigrator.schema }}
-        - name: POLICY_HOME
-          value: {{ .Values.dbmigrator.policy_home }}
-        - name: SCRIPT_DIRECTORY
-          value: "sql"
-        resources: {{ include "common.resources" . | nindent 10 }}
-      {{- if (include "common.onServiceMesh" .) }}
-      - name: policy-service-mesh-wait-for-job-container
-        image: {{ include "repositoryGenerator.image.quitQuit" . }}
-        imagePullPolicy: Always
-        command:
-        - /bin/sh
-        - "-c"
-        args:
-        - echo "waiting 10s for istio side cars to be up"; sleep 10s;
-          /app/ready.py --service-mesh-check {{ include "common.name" . }}-galera-db-migrator -t 45;
-        env:
-        - name: NAMESPACE
-          valueFrom:
-            fieldRef:
-              apiVersion: v1
-              fieldPath: metadata.namespace
-      {{- end }}
-      restartPolicy: Never
-      serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
-      volumes:
-        - name: {{ include "common.fullname" . }}-config
-          configMap:
-            name: {{ include "common.fullname" . }}-db-configmap
-            defaultMode: 0755
-            items:
-              - key: db_migrator_policy_init.sh
-                path: db_migrator_policy_init.sh
-{{ end }}
-{{ if .Values.global.postgres.localCluster }}
----
-apiVersion: batch/v1
-kind: Job
-metadata:
-  name: {{ include "common.fullname" . }}-pg-config
-  namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}-pg-config
-    release: {{ include "common.release" . }}
-spec:
-  template:
-    metadata:
-      labels:
-        app: {{ include "common.name" . }}-pg-config
-        release: {{ include "common.release" . }}
-      name: {{ include "common.name" . }}-pg-config
-    spec:
-      {{- include "common.imagePullSecrets" . | nindent 6 }}
-      initContainers:
-      - name: {{ include "common.name" . }}-init-readiness
-        image: {{ include "repositoryGenerator.image.readiness" . }}
-        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-        command:
-        - /app/ready.py
-        args:
-        - --job-name
-        - {{ include "common.fullname" . }}-pg-init
-        env:
-        - name: NAMESPACE
-          valueFrom:
-            fieldRef:
-              apiVersion: v1
-              fieldPath: metadata.namespace
-        resources:
-          limits:
-            cpu: "100m"
-            memory: "500Mi"
-          requests:
-            cpu: "3m"
-            memory: "20Mi"
-      containers:
-      - name: {{ include "common.name" . }}-pg-db-migrator
-        image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.dbmigrator.image }}
-        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-        volumeMounts:
-          - mountPath: /dbcmd-config/db_migrator_pg_policy_init.sh
-            name: {{ include "common.fullname" . }}-config
-            subPath: db_migrator_pg_policy_init.sh
-        command:
-          - /bin/sh
-          - -cx
-          - |
-             {{- if include "common.onServiceMesh" . }}
-             echo "waiting 15s for istio side cars to be up"; sleep 15s;{{- end }}
-             /dbcmd-config/db_migrator_pg_policy_init.sh
-        env:
-        - name: SQL_HOST
-          value: "{{ .Values.postgres.service.name2 }}"
-        - name: SQL_USER
-          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-secret" "key" "login") | indent 10 }}
-        - name: SQL_PASSWORD
-          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-secret" "key" "password") | indent 10 }}
-        - name: SQL_DB
-          value: {{ .Values.dbmigrator.schema }}
-        - name: POLICY_HOME
-          value: {{ .Values.dbmigrator.policy_home }}
-        - name: SCRIPT_DIRECTORY
-          value: "postgres"
-        - name: PGPASSWORD
-          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-secret" "key" "password") | indent 10 }}
-        resources: {{ include "common.resources" . | nindent 10 }}
-      {{- if (include "common.onServiceMesh" .) }}
-      - name: policy-service-mesh-wait-for-job-container
-        image: {{ include "repositoryGenerator.image.quitQuit" . }}
-        imagePullPolicy: Always
-        command:
-        - /bin/sh
-        - "-c"
-        args:
-        - echo "waiting 10s for istio side cars to be up"; sleep 10s;
-          /app/ready.py --service-mesh-check {{ include "common.name" . }}-pg-db-migrator -t 45;
-        env:
-        - name: NAMESPACE
-          valueFrom:
-            fieldRef:
-              apiVersion: v1
-              fieldPath: metadata.namespace
-      {{- end }}
-      restartPolicy: Never
-      serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
-      volumes:
-        - name: {{ include "common.fullname" . }}-config
-          configMap:
-            name: {{ include "common.fullname" . }}-db-configmap
-            defaultMode: 0755
-            items:
-              - key: db_migrator_pg_policy_init.sh
-                path: db_migrator_pg_policy_init.sh
-{{ end }}
index feb29f3..0f71ae1 100644 (file)
@@ -1,5 +1,6 @@
 {{/*
 # Copyright © 2022 Nordix Foundation
+# Modifications Copyright ©2025 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -18,7 +19,7 @@ apiVersion: kafka.strimzi.io/v1beta2
 kind: KafkaTopic
 metadata:
   name: {{ .Values.config.policyPdpPapTopic.name }}
-  labels:
+  labels:  {{- include "common.labels" . | nindent 4 }}
     strimzi.io/cluster: {{ include "common.release" . }}-strimzi
 spec:
   partitions: {{ .Values.config.policyPdpPapTopic.partitions }}
@@ -30,7 +31,7 @@ apiVersion: kafka.strimzi.io/v1beta2
 kind: KafkaTopic
 metadata:
   name: {{ .Values.config.policyHeartbeatTopic.name }}
-  labels:
+  labels: {{- include "common.labels" . | nindent 4 }}
     strimzi.io/cluster: {{ include "common.release" . }}-strimzi
 spec:
   partitions: {{ .Values.config.policyHeartbeatTopic.partitions }}
@@ -42,10 +43,22 @@ apiVersion: kafka.strimzi.io/v1beta2
 kind: KafkaTopic
 metadata:
   name: {{ .Values.config.policyNotificationTopic.name }}
-  labels:
+  labels: {{- include "common.labels" . | nindent 4 }}
     strimzi.io/cluster: {{ include "common.release" . }}-strimzi
 spec:
   partitions: {{ .Values.config.policyNotificationTopic.partitions }}
   config:
     retention.ms: {{ .Values.config.policyNotificationTopic.retentionMs }}
     segment.bytes: {{ .Values.config.policyNotificationTopic.segmentBytes }}
+---
+apiVersion: kafka.strimzi.io/v1beta2
+kind: KafkaTopic
+metadata:
+  name: {{ .Values.config.opaPdpDataTopic.name }}
+  labels: {{- include "common.labels" . | nindent 4 }}
+    strimzi.io/cluster: {{ include "common.release" . }}-strimzi
+spec:
+  partitions: {{ .Values.config.opaPdpDataTopic.partitions }}
+  config:
+    retention.ms: {{ .Values.config.opaPdpDataTopic.retentionMs }}
+    segment.bytes: {{ .Values.config.opaPdpDataTopic.segmentBytes }}
index ed399ed..86ee725 100644 (file)
@@ -1,5 +1,6 @@
 {{/*
 # Copyright © 2022-2023 Nordix Foundation
+# Modifications Copyright © 2024 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -18,7 +19,7 @@ apiVersion: kafka.strimzi.io/v1beta2
 kind: KafkaUser
 metadata:
   name: {{ include "common.release" . }}-{{ .Values.global.policyKafkaUser }}
-  labels:
+  labels: {{- include "common.labels" . | nindent 4 }}
     strimzi.io/cluster: {{ include "common.release" . }}-strimzi
 spec:
   authentication:
@@ -29,16 +30,20 @@ spec:
     - resource:
         type: group
         name: {{ .Values.config.policyPdpPapTopic.consumer.groupId }}
-      operation: All
+      operations:
+        - All
     - resource:
         type: topic
         name: {{ .Values.config.policyPdpPapTopic.name }}
-      operation: All
+      operations:
+        - All
     - resource:
         type: topic
         name: {{ .Values.config.policyHeartbeatTopic.name }}
-      operation: All
+      operations:
+        - All
     - resource:
         type: topic
         name: {{ .Values.config.policyNotificationTopic.name }}
-      operation: All
+      operations:
+        - All
old mode 100755 (executable)
new mode 100644 (file)
index 9497c3c..2f7f141
@@ -1,6 +1,7 @@
 # Copyright © 2017 Amdocs, Bell Canada
 # Modifications Copyright © 2018-2020 AT&T Intellectual Property
-# Modifications Copyright (C) 2021-2023 Nordix Foundation.
+# Modifications Copyright (C) 2021-2025 Nordix Foundation.
+# Modifications Copyright © 2024-2025 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # Global configuration defaults.
 #################################################################
 global:
-  mariadbGalera:
-    # flag to enable the DB creation via mariadb-operator
-    useOperator: true
-    # if useOperator set to "true", set "enableServiceAccount to "false"
-    # as the SA is created by the Operator
-    enableServiceAccount: false
+  prometheusEnabled: true
+  postgres:
     localCluster: true
-    # '&mariadbConfig' means we "store" the values for  later use in the file
-    # with '*mariadbConfig' pointer.
-    config: &mariadbConfig
-      mysqlDatabase: policyadmin
-    service: &mariadbService policy-mariadb
-    internalPort: 3306
-    nameOverride: *mariadbService
+    # flag to enable the DB creation via pgo-operator
+    useOperator: false
+    service:
+      name: &postgresName policy-postgres
+      name2: &postgresName2 policy-pg-primary
+      name3: &postgresName3 policy-pg-replica
+      port: &postgresPort 5432
+    nameOverride: *postgresName
     # (optional) if localCluster=false and an external secret is used set this variable
     #userRootSecret: <secretName>
-  prometheusEnabled: false
-  postgres:
-    localCluster: false
-    service:
-      name: pgset
-      name2: tcp-pgset-primary
-      name3: tcp-pgset-replica
-    container:
-      name: postgres
   kafkaBootstrap: strimzi-kafka-bootstrap:9092
   policyKafkaUser: policy-kafka-user
+  useStrimziKafka: true
   kafkaTopics:
-    acRuntimeTopic:
-      name: policy.clamp-runtime-acm
+    acRuntimeOperationTopic:
+      name: policy-acruntime-participant
+    acRuntimeSyncTopic:
+      name: acm-ppnt-sync
 #################################################################
 # Secrets metaconfig
 #################################################################
@@ -55,27 +47,29 @@ secrets:
   - uid: db-root-password
     name: &dbRootPassSecretName '{{ include "common.release" . }}-policy-db-root-password'
     type: password
-    externalSecret: '{{ .Values.global.mariadbGalera.localCluster |
-      ternary (( hasSuffix "policy-db-root-password" (index .Values "mariadb-galera" "rootUser" "externalSecret")) |
-               ternary
-                  ""
-                  (tpl (default "" (index .Values "mariadb-galera" "rootUser" "externalSecret")) .)
-               )
-               ( (not (empty (default "" .Values.global.mariadbGalera.userRootSecret))) |
-                 ternary
-                   .Values.global.mariadbGalera.userRootSecret
-                   (include "common.mariadb.secret.rootPassSecretName"
-                     (dict "dot" . "chartName" .Values.global.mariadbGalera.nameOverride)
+    externalSecret: '{{ .Values.global.postgres.localCluster | ternary
+                 ( hasSuffix "policy-db-root-password" (index .Values "postgres" "config" "pgRootPasswordExternalSecret") | ternary
+                   ""
+                   (tpl (default "" (index .Values "postgres" "config" "pgRootPasswordExternalSecret")) .)
+                 )
+                 ( not (empty (default "" .Values.global.postgres.userRootSecret)) | ternary
+                   .Values.global.postgres.userRootSecret
+                   (include "common.postgres.secret.rootPassSecretName"
+                     (dict "dot" . "chartName" .Values.global.postgres.nameOverride)
                    )
-               ) }}'
-    password: '{{ (index .Values "mariadb-galera" "rootUser" "password") }}'
+                 )
+               }}'
+    password: '{{ (index .Values "postgres" "config" "pgRootPassword") }}'
     policy: generate
   - uid: db-secret
     name: &dbSecretName '{{ include "common.release" . }}-policy-db-secret'
     type: basicAuth
-    externalSecret: '{{ ternary "" (tpl (default "" (index .Values "mariadb-galera" "db" "externalSecret")) .) (hasSuffix "policy-db-secret" (index .Values "mariadb-galera" "db" "externalSecret"))}}'
-    login: '{{ index .Values "mariadb-galera" "db" "user" }}'
-    password: '{{ index .Values "mariadb-galera" "db" "password" }}'
+    externalSecret: '{{ hasSuffix "policy-db-secret" (index .Values "postgres" "config" "pgUserExternalSecret") | ternary
+                        ""
+                        (tpl (default "" (index .Values "postgres" "config" "pgUserExternalSecret")) .)
+                     }}'
+    login: '{{ (index .Values "postgres" "config" "pgUserName") }}'
+    password: '{{ (index .Values "postgres" "config" "pgUserPassword") }}'
     passwordPolicy: generate
   - uid: policy-app-user-creds
     name: &policyAppCredsSecret '{{ include "common.release" . }}-policy-app-user-creds'
@@ -128,10 +122,14 @@ policy-apex-pdp:
   config:
     jaasConfExternalSecret: '{{ include "common.release" . }}-{{ .Values.global.policyKafkaUser }}'
 policy-drools-pdp:
-  enabled: false
+  enabled: true
   db: *dbSecretsHook
   config:
     jaasConfExternalSecret: '{{ include "common.release" . }}-{{ .Values.global.policyKafkaUser }}'
+policy-opa-pdp:
+  enabled: true
+  config:
+    jaasConfExternalSecret: '{{ include "common.release" . }}-{{ .Values.global.policyKafkaUser }}'
 policy-distribution:
   enabled: true
   db: *dbSecretsHook
@@ -157,19 +155,6 @@ policy-nexus:
   enabled: false
   config:
     jaasConfExternalSecret: '{{ include "common.release" . }}-{{ .Values.global.policyKafkaUser }}'
-policy-gui:
-  enabled: false
-  config:
-    jaasConfExternalSecret: '{{ include "common.release" . }}-{{ .Values.global.policyKafkaUser }}'
-
-#################################################################
-# DB configuration defaults.
-#################################################################
-
-dbmigrator:
-  image: onap/policy-db-migrator:3.1.0
-  schema: policyadmin
-  policy_home: "/opt/app/policy"
 
 subChartsOnly:
   enabled: true
@@ -180,9 +165,9 @@ debugEnabled: false
 # default number of instances
 replicaCount: 1
 
-nodeSelector: {}
+nodeSelector: { }
 
-affinity: {}
+affinity: { }
 
 # probe configuration parameters
 liveness:
@@ -196,7 +181,6 @@ readiness:
   initialDelaySeconds: 10
   periodSeconds: 10
 
-
 config:
   policyAppUserName: runtimeUser
   policyPdpPapTopic:
@@ -220,60 +204,35 @@ config:
     segmentBytes: 1073741824
     consumer:
       groupId: policy-group
+  opaPdpDataTopic:
+    name: opa-pdp-data
+    partitions: 10
+    retentionMs: 7200000
+    segmentBytes: 1073741824
   someConfig: blah
 
-mariadb-galera:
-  # mariadb-galera.config and global.mariadbGalera.config must be equals
-  db:
-    user: policy-user
-    # password:
-    externalSecret: *dbSecretName
-    name: &mysqlDbName policyadmin
-  rootUser:
-    externalSecret: *dbRootPassSecretName
-  nameOverride: *mariadbService
-  # mariadb-galera.service and global.mariadbGalera.service must be equals
-  service:
-    name: *mariadbService
-  replicaCount: 1
-  mariadbOperator:
-    galera:
-      enabled: false
-  persistence:
-    enabled: true
-    mountSubPath: policy/maria/data
-  serviceAccount:
-    nameOverride: *mariadbService
-
-postgresImage: library/postgres:latest
 # application configuration override for postgres
 postgres:
   nameOverride: &postgresName policy-postgres
   service:
     name: *postgresName
-    name2: policy-pg-primary
-    name3: policy-pg-replica
+    name2: *postgresName2
+    name3: *postgresName3
+    internalPort: *postgresPort
   container:
     name:
-      primary: policy-pg-primary
-      replica: policy-pg-replica
+      primary: *postgresName2
+      replica: *postgresName3
   persistence:
     mountSubPath: policy/postgres/data
     mountInitPath: policy
+    size: 3Gi
   config:
     pgUserName: policy-user
     pgDatabase: policyadmin
     pgUserExternalSecret: *dbSecretName
     pgRootPasswordExternalSecret: *dbRootPassSecretName
 
-readinessCheck:
-  wait_for_postgres:
-    services:
-      - '{{ .Values.global.postgres.service.name2 }}'
-  wait_for_mariadb:
-    services:
-      - '{{ include "common.mariadbService" . }}'
-
 restServer:
   policyPapUserName: policyadmin
   policyPapUserPassword: zb!XztG34
@@ -298,7 +257,11 @@ resources:
     requests:
       cpu: "200m"
       memory: "2Gi"
-  unlimited: {}
+  unlimited: { }
+
+securityContext:
+  user_id: 100
+  group_id: 65533
 
 #Pods Service Account
 serviceAccount:
index 32a4504..796e98d 100644 (file)
@@ -15,7 +15,7 @@
 apiVersion: v2
 description: ONAP Next Generation Portal
 name: portal-ng
-version: 13.0.1
+version: 13.0.3
 
 dependencies:
   - name: common
@@ -33,4 +33,3 @@ dependencies:
   - name: portal-ng-ui
     version: ~13.x-0
     repository: '@local'
-
index ec9769d..457e5fb 100644 (file)
@@ -29,12 +29,12 @@ type: application
 # This is the chart version. This version number should be incremented each time you make changes
 # to the chart and its templates, including the app version.
 # Versions are expected to follow Semantic Versioning (https://semver.org/)
-version: 13.0.0
+version: 13.0.1
 
 # This is the version number of the application being deployed. This version number should be
 # incremented each time you make changes to the application. Versions are not expected to
 # follow Semantic Versioning. They should reflect the version the application is using.
-appVersion: latest
+appVersion: 0.1.2
 
 dependencies:
   - name: common
@@ -43,7 +43,3 @@ dependencies:
   - name: repositoryGenerator
     version: ~13.x-0
     repository: '@local'
-  - name: serviceAccount
-    version: ~13.x-0
-    repository: '@local'
-
index b45ead6..f41d630 100644 (file)
@@ -6,4 +6,7 @@ metadata:
 data:
   {{- range $key, $val := .Values.env }}
   {{ $key }}: {{ $val | quote }}
-  {{- end -}}
\ No newline at end of file
+  {{- end -}}
+  {{- range $key, $val := .Values.global.env }}
+  {{ $key }}: {{ $val | quote }}
+  {{- end -}}
index ef54110..7d521cf 100644 (file)
@@ -6,13 +6,18 @@ spec:
   replicas: {{ .Values.replicaCount }}
   revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
   template:
-    metadata: {{- include "common.templateMetadata" . | nindent 6 }}
+    metadata:
+      annotations:
+        checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
+      {{- include "common.templateMetadata" . | indent 6 }}
     spec:
       {{- include "common.imagePullSecrets" . | nindent 6 }}
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
       containers:
         - name: {{ .Chart.Name }}
           image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image.imageName }}:{{ .Values.image.tag | default .Chart.AppVersion }}
           imagePullPolicy: {{ .Values.image.pullPolicy }}
+          {{ include "common.containerSecurityContext" . | indent 10 | trim }}
           envFrom:
           - configMapRef:
               name: {{ include "common.fullname" . }}-configmap
@@ -34,3 +39,4 @@ spec:
               port: {{ .Values.service.port }}
             initialDelaySeconds: {{ .Values.probes.liveness.initialDelaySeconds }}
             failureThreshold: {{ .Values.probes.liveness.failureThreshold }}
+          resources: {{ include "common.resources" . | nindent 12 }}
index b8b7c3d..90ac470 100644 (file)
-global: {}
+global:
+  env:
+    KEYCLOAK_URL: http://keycloak-http.keycloak
+    KEYCLOAK_REALM: onap
+    COLLECTOR_HOST: jaeger-collector.istio-config
+    COLLECTOR_PORT: 9411
 
-# Default values for bff.
-# This is a YAML-formatted file.
-# Declare variables to be passed into your templates.
+## Default values for portal-ng-bff.
+## This is a YAML-formatted file.
+## Declare variables to be passed into your templates.
+
+##
+## Specifies the details of the Docker image to be used for deployment.
+##
 image:
+  ## The name of the Docker image.
   imageName: onap/portal-ng/bff
+  ## The policy that indicates when the image should be pulled.
+  ## "Always" means the image will be pulled on every deployment.
   pullPolicy: Always
-  # Overrides the image tag whose default value is the chart appVersion.
+  ## Overrides the image tag. The default is the chart appVersion.
+  ## An empty value means the default tag will be used.
   # tag: 0.1.0
 
+## Number of Pods to deploy
 replicaCount: 2
 
-# Specifies how many old replicas will be retained in a deployment
+## Specifies how many old replicas will be retained in a deployment
 revisionHistoryLimit: 2
 
-# Custom selector label (for bigger namespaces with other components)
+## Custom selector label (for bigger namespaces with other components)
 partOf: portal
 
+##
+## Service
+##
 service:
+  ## Use ClusterIP as the service type to expose the service on an internal IP
   type: ClusterIP
   port: 9080
+  ## The port on which the service is exposed
   ports:
     - name: http
       port: 9080
 
+##
+## Autoscaling
+##
 autoscaling:
+  ## Autoscaling is disabled. When set to true, the Horizontal Pod Autoscaler is enabled.
   enabled: false
+  ## Minimum number of replicas to maintain.
   minReplicas: 1
-  maxReplicas: 100
+  ## Maximum number of replicas to maintain.
+  maxReplicas: 2
+  ## Target CPU utilization percentage at which the Horizontal Pod Autoscaler adds or removes replicas.
   targetCPUUtilizationPercentage: 80
 
+resources:
+  small:
+    limits:
+      cpu: "4"
+      memory: "1Gi"
+    requests:
+      cpu: "50m"
+      memory: "256Mi"
+  large:
+    limits:
+      cpu: "2"
+      memory: "1Gi"
+    requests:
+      cpu: "100m"
+      memory: "256Mi"
+  unlimited: {}
+
+##
+## Readiness and liveness probes
+##
 probes:
+  # Configuration of the readiness probe to check if the container is ready.
   readiness:
+    ## Wait before performing the first probe
     initialDelaySeconds: 20
+    ## Number of consecutive failures allowed before marking probe as failed.
     failureThreshold: 4
+  # Configuration of the liveness probe to check if the container is alive.
   liveness:
+    ## Wait before performing the first probe
     initialDelaySeconds: 20
+    ## Number of consecutive failures allowed before marking probe as failed.
     failureThreshold: 4
 
 env:
-  KEYCLOAK_URL: http://keycloakx-http.keycloak/auth
-  KEYCLOAK_REALM: ONAP
   HISTORY_URL: http://portal-ng-history:9002
   PREFERENCES_URL: http://portal-ng-preferences:9001
   TRACING_ENABLED: true
-  COLLECTOR_HOST: jaeger-collector.istio-system
-  COLLECTOR_PORT: 9411
+  RBAC_EXCLUDED_ENDPOINTS: ''
 
 secretEnv:
   KEYCLOAK_CLIENT_ID: portal-bff
   KEYCLOAK_CLIENT_SECRET: pKOuVH1bwRZoNzp5P5t4GV8CqcCJYVtr
 
-#Pods Service Account
-serviceAccount:
-  nameOverride: portal-ng-bff
-  roles:
-    - read
-
+securityContext:
+  user_id: 65534
+  group_id: 65534
index 27e7f58..6d16ff9 100644 (file)
@@ -29,12 +29,12 @@ type: application
 # This is the chart version. This version number should be incremented each time you make changes
 # to the chart and its templates, including the app version.
 # Versions are expected to follow Semantic Versioning (https://semver.org/)
-version: 13.0.0
+version: 13.0.2
 
 # This is the version number of the application being deployed. This version number should be
 # incremented each time you make changes to the application. Versions are not expected to
 # follow Semantic Versioning. They should reflect the version the application is using.
-appVersion: latest
+appVersion: 0.1.1
 
 dependencies:
   - name: common
@@ -47,5 +47,5 @@ dependencies:
     version: ~13.x-0
     repository: '@local'
   - name: mongodb
-    version: 14.12.2
+    version: ~16.5.x-0
     repository: '@local'
index f8c2347..b81e796 100644 (file)
@@ -20,5 +20,8 @@ metadata:
   namespace: {{ include "common.namespace" . }}
 data:
   {{- range $key, $val := .Values.env }}
-    {{ $key }}: {{ $val | quote }}
-    {{- end -}}
\ No newline at end of file
+  {{ $key }}: {{ $val | quote }}
+  {{- end -}}
+  {{- range $key, $val := .Values.global.env }}
+  {{ $key }}: {{ $val | quote }}
+  {{- end -}}
index a2a924b..cdf47ca 100644 (file)
@@ -21,13 +21,18 @@ spec:
   replicas: {{ .Values.replicaCount }}
   revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
   template:
-    metadata: {{- include "common.templateMetadata" . | nindent 6 }}
+    metadata:
+      annotations:
+        checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
+      {{- include "common.templateMetadata" . | indent 6 }}
     spec:
       {{- include "common.imagePullSecrets" . | nindent 6 }}
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
       containers:
         - name: {{ .Chart.Name }}
           image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image.imageName }}:{{ .Values.image.tag | default .Chart.AppVersion }}
           imagePullPolicy: {{ .Values.image.pullPolicy }}
+          {{ include "common.containerSecurityContext" . | indent 10 | trim }}
           envFrom:
             - configMapRef:
                 name: {{ include "common.fullname" . }}-configmap
@@ -45,4 +50,5 @@ spec:
               path: /actuator/health/readiness
               port: {{ .Values.service.port }}
             initialDelaySeconds: {{ .Values.probes.readiness.initialDelaySeconds }}
-            failureThreshold: {{ .Values.probes.readiness.failureThreshold }}
\ No newline at end of file
+            failureThreshold: {{ .Values.probes.readiness.failureThreshold }}
+          resources: {{ include "common.resources" . | nindent 12 }}
index dc99984..cd7a62f 100644 (file)
@@ -1,4 +1,9 @@
-global: {}
+global:
+  env:
+    KEYCLOAK_URL: http://keycloak-http.keycloak
+    KEYCLOAK_REALM: onap
+    COLLECTOR_HOST: jaeger-collector.istio-config
+    COLLECTOR_PORT: 9411
 
 image:
   imageName: onap/portal-ng/history
@@ -26,6 +31,23 @@ service:
     - name: http
       port: 9002
 
+resources:
+  small:
+    limits:
+      cpu: "1"
+      memory: "512Mi"
+    requests:
+      cpu: "200m"
+      memory: "256Mi"
+  large:
+    limits:
+      cpu: "2"
+      memory: "1Gi"
+    requests:
+      cpu: "200m"
+      memory: "256Mi"
+  unlimited: {}
+
 autoscaling:
   enabled: false
   minReplicas: 1
@@ -34,11 +56,11 @@ autoscaling:
 
 probes:
   readiness:
-    initialDelaySeconds: 20
-    failureThreshold: 4
+    initialDelaySeconds: 30
+    failureThreshold: 5
   liveness:
-    initialDelaySeconds: 20
-    failureThreshold: 4
+    initialDelaySeconds: 30
+    failureThreshold: 5
 
 secretEnv:
   MONGO_USERNAME: dbuser
@@ -46,13 +68,9 @@ secretEnv:
   MONGO_DATABASE: history
 
 env:
-  KEYCLOAK_URL: http://keycloakx-http.keycloak
-  KEYCLOAK_REALM: ONAP
   MONGO_HOST: history-mongodb
   MONGO_PORT: 27017
   TRACING_ENABLED: true
-  COLLECTOR_HOST: jaeger-collector.istio-system
-  COLLECTOR_PORT: 9411
 
 mongodb:
   nameOverride: history-mongodb
@@ -79,3 +97,7 @@ serviceAccount:
   nameOverride: portal-ng-history
   roles:
     - read
+
+securityContext:
+  user_id: 65534
+  group_id: 65534
index 2ec186a..778afc1 100644 (file)
@@ -29,12 +29,12 @@ type: application
 # This is the chart version. This version number should be incremented each time you make changes
 # to the chart and its templates, including the app version.
 # Versions are expected to follow Semantic Versioning (https://semver.org/)
-version: 13.0.0
+version: 13.0.2
 
 # This is the version number of the application being deployed. This version number should be
 # incremented each time you make changes to the application. Versions are not expected to
 # follow Semantic Versioning. They should reflect the version the application is using.
-appVersion: latest
+appVersion: 0.1.1
 
 dependencies:
   - name: common
@@ -47,7 +47,5 @@ dependencies:
     version: ~13.x-0
     repository: '@local'
   - name: mongodb
-    version: 14.12.2
+    version: ~16.5.x-0
     repository: '@local'
-
-
index f8c2347..b81e796 100644 (file)
@@ -20,5 +20,8 @@ metadata:
   namespace: {{ include "common.namespace" . }}
 data:
   {{- range $key, $val := .Values.env }}
-    {{ $key }}: {{ $val | quote }}
-    {{- end -}}
\ No newline at end of file
+  {{ $key }}: {{ $val | quote }}
+  {{- end -}}
+  {{- range $key, $val := .Values.global.env }}
+  {{ $key }}: {{ $val | quote }}
+  {{- end -}}
index a2a924b..cdf47ca 100644 (file)
@@ -21,13 +21,18 @@ spec:
   replicas: {{ .Values.replicaCount }}
   revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
   template:
-    metadata: {{- include "common.templateMetadata" . | nindent 6 }}
+    metadata:
+      annotations:
+        checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
+      {{- include "common.templateMetadata" . | indent 6 }}
     spec:
       {{- include "common.imagePullSecrets" . | nindent 6 }}
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
       containers:
         - name: {{ .Chart.Name }}
           image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image.imageName }}:{{ .Values.image.tag | default .Chart.AppVersion }}
           imagePullPolicy: {{ .Values.image.pullPolicy }}
+          {{ include "common.containerSecurityContext" . | indent 10 | trim }}
           envFrom:
             - configMapRef:
                 name: {{ include "common.fullname" . }}-configmap
@@ -45,4 +50,5 @@ spec:
               path: /actuator/health/readiness
               port: {{ .Values.service.port }}
             initialDelaySeconds: {{ .Values.probes.readiness.initialDelaySeconds }}
-            failureThreshold: {{ .Values.probes.readiness.failureThreshold }}
\ No newline at end of file
+            failureThreshold: {{ .Values.probes.readiness.failureThreshold }}
+          resources: {{ include "common.resources" . | nindent 12 }}
index 2f6d1ba..23f79ef 100644 (file)
@@ -1,4 +1,9 @@
-global: {}
+global:
+  env:
+    KEYCLOAK_URL: http://keycloak-http.keycloak
+    KEYCLOAK_REALM: onap
+    COLLECTOR_HOST: jaeger-collector.istio-config
+    COLLECTOR_PORT: 9411
 
 # Default values for preferences.
 # This is a YAML-formatted file.
@@ -27,6 +32,23 @@ service:
     - name: http
       port: 9001
 
+resources:
+  small:
+    limits:
+      cpu: "1"
+      memory: "512Mi"
+    requests:
+      cpu: "100m"
+      memory: "256Mi"
+  large:
+    limits:
+      cpu: "2"
+      memory: "1Gi"
+    requests:
+      cpu: "200m"
+      memory: "256Mi"
+  unlimited: {}
+
 autoscaling:
   enabled: false
   minReplicas: 1
@@ -35,11 +57,11 @@ autoscaling:
 
 probes:
   readiness:
-    initialDelaySeconds: 20
-    failureThreshold: 4
+    initialDelaySeconds: 30
+    failureThreshold: 5
   liveness:
-    initialDelaySeconds: 20
-    failureThreshold: 4
+    initialDelaySeconds: 30
+    failureThreshold: 5
 
 secretEnv:
   MONGO_USERNAME: dbuser
@@ -47,13 +69,9 @@ secretEnv:
   MONGO_DATABASE: Preferences
 
 env:
-  KEYCLOAK_URL: http://keycloakx-http.keycloak
-  KEYCLOAK_REALM: ONAP
   MONGO_HOST: preferences-mongodb
   MONGO_PORT: 27017
   TRACING_ENABLED: true
-  COLLECTOR_HOST: jaeger-collector.istio-system
-  COLLECTOR_PORT: 9411
 
 mongodb:
   nameOverride: preferences-mongodb
@@ -80,3 +98,7 @@ serviceAccount:
   nameOverride: portal-ng-preferences
   roles:
     - read
+
+securityContext:
+  user_id: 65534
+  group_id: 65534
index 4dcb25c..b323a92 100644 (file)
@@ -29,12 +29,12 @@ type: application
 # This is the chart version. This version number should be incremented each time you make changes
 # to the chart and its templates, including the app version.
 # Versions are expected to follow Semantic Versioning (https://semver.org/)
-version: 13.0.0
+version: 13.0.1
 
 # This is the version number of the application being deployed. This version number should be
 # incremented each time you make changes to the application. Versions are not expected to
 # follow Semantic Versioning. They should reflect the version the application is using.
-appVersion: latest
+appVersion: 0.1.3
 
 dependencies:
   - name: common
diff --git a/kubernetes/portal-ng/components/portal-ng-ui/resources/assets/acl.json b/kubernetes/portal-ng/components/portal-ng-ui/resources/assets/acl.json
new file mode 100644 (file)
index 0000000..a8a505b
--- /dev/null
@@ -0,0 +1,5 @@
+{
+  "portal_admin": {{ .Values.acl.portal_admin | toPrettyJson }},
+  "portal_operator": {{ .Values.acl.portal_operator | toPrettyJson }},
+  "portal_designer": {{ .Values.acl.portal_designer | toPrettyJson }}
+}
diff --git a/kubernetes/portal-ng/components/portal-ng-ui/resources/assets/env.js b/kubernetes/portal-ng/components/portal-ng-ui/resources/assets/env.js
new file mode 100644 (file)
index 0000000..81a71c3
--- /dev/null
@@ -0,0 +1,11 @@
+(function(window) {
+  window["env"] = window["env"] || {};
+  window["env"]["keycloak"] = window["env"]["keycloak"] || {};
+
+  // Environment variables
+  window["env"]["customStyleEnabled"] = "{{ .Values.env.CUSTOM_STYLE_ENABLED }}";
+  window["env"]["keycloak"]["hostname"] = "{{ .Values.env.KEYCLOAK_EXTERNAL_URL }}";
+  window["env"]["keycloak"]["realm"] = "{{ .Values.env.KEYCLOAK_REALM | default .Values.global.env.KEYCLOAK_REALM }}";
+  window['env']['keycloak']['clientId'] = '{{ .Values.env.KEYCLOAK_CLIENT_ID }}';
+  window["env"]["loggingEnabled"]= '{{ .Values.env.LOGGING_ENABLED }}';
+})(this);
diff --git a/kubernetes/portal-ng/components/portal-ng-ui/resources/assets/version.json b/kubernetes/portal-ng/components/portal-ng-ui/resources/assets/version.json
new file mode 100644 (file)
index 0000000..4f56a1f
--- /dev/null
@@ -0,0 +1,3 @@
+{
+    "number": "{{ .Values.image.tag | default .Chart.AppVersion }}"
+}
diff --git a/kubernetes/portal-ng/components/portal-ng-ui/resources/default.conf b/kubernetes/portal-ng/components/portal-ng-ui/resources/default.conf
new file mode 100644 (file)
index 0000000..0c64588
--- /dev/null
@@ -0,0 +1,49 @@
+resolver {{ .Values.env.NAME_SERVER }};
+server {
+    listen       {{ .Values.env.NGINX_PORT }};
+    listen       [::]:{{.Values.env.NGINX_PORT}}; # listen on ipv6
+    location / {
+        root /usr/share/nginx/html;
+        index index.html;
+        try_files $uri $uri/ /index.html =404;
+    }
+    location /api/ {
+        set                 $upstream           {{ .Values.env.BFF_URL }};
+        rewrite             /api/(.*) /$1 break;
+        add_header          Access-Control-Allow-Origin *;
+        proxy_pass                              $upstream/$1$is_args$args;
+        proxy_set_header    Host                $host;
+        proxy_set_header    X-Real-IP           $remote_addr;
+        proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
+        proxy_set_header    X-Forwarded-Host    $host;
+        proxy_set_header    X-Forwarded-Server  $host;
+        proxy_set_header    X-Forwarded-Port    $server_port;
+        proxy_set_header    X-Forwarded-Proto   $scheme;
+        proxy_http_version 1.1;
+    }
+    location /auth/ {
+            set                 $upstream           {{ .Values.env.KEYCLOAK_URL | default .Values.global.env.KEYCLOAK_URL }}.svc.cluster.local;
+            rewrite             /auth/(.*) /$1 break;
+            add_header          Access-Control-Allow-Origin *;
+            proxy_pass                              $upstream/$1$is_args$args;
+            proxy_http_version                     1.1;
+            proxy_set_header    Host               $host;
+            proxy_set_header    X-Real-IP          $remote_addr;
+            proxy_set_header    X-Forwarded-For    $proxy_add_x_forwarded_for;
+            proxy_set_header    X-Forwarded-Host   $host;
+            proxy_set_header    X-Forwarded-Server $host;
+            proxy_set_header    X-Forwarded-Port   $server_port;
+            proxy_set_header    X-Forwarded-Proto  $scheme;
+    }
+}
+##
+# Gzip Settings
+##
+gzip on;
+gzip_vary on;
+gzip_proxied any;
+gzip_min_length 1100;
+gzip_comp_level 6;
+gzip_buffers 16 8k;
+gzip_http_version 1.1;
+gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
diff --git a/kubernetes/portal-ng/components/portal-ng-ui/templates/configmap-assets.yaml b/kubernetes/portal-ng/components/portal-ng-ui/templates/configmap-assets.yaml
new file mode 100644 (file)
index 0000000..0db7d56
--- /dev/null
@@ -0,0 +1,27 @@
+{{/*
+# Copyright © 2024 Deutsche Telekom
+#
+# 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.
+*/}}
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ include "common.fullname" . }}-assets
+  labels:
+    app: {{ include "common.name" . }}
+    release: {{ include "common.release" . }}
+    heritage: {{ .Release.Service }}
+data:
+  env_js: {{ tpl (.Files.Get "resources/assets/env.js") . | quote }}
+  acl_json: {{ tpl (.Files.Get "resources/assets/acl.json") . | quote }}
+  version_json: {{ tpl (.Files.Get "resources/assets/version.json") . | quote }}
diff --git a/kubernetes/portal-ng/components/portal-ng-ui/templates/configmap-nginx-config.yaml b/kubernetes/portal-ng/components/portal-ng-ui/templates/configmap-nginx-config.yaml
new file mode 100644 (file)
index 0000000..81a5407
--- /dev/null
@@ -0,0 +1,27 @@
+{{/*
+# Copyright © 2022 Deutsche Telekom
+#
+# 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.
+*/}}
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ include "common.fullname" . }}-nginx-config
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    release: {{ include "common.release" . }}
+    heritage: {{ .Release.Service }}
+data:
+{{ tpl (.Files.Glob "resources/default.conf").AsConfig . | indent 2 }}
diff --git a/kubernetes/portal-ng/components/portal-ng-ui/templates/configmap-version-json.yaml b/kubernetes/portal-ng/components/portal-ng-ui/templates/configmap-version-json.yaml
new file mode 100644 (file)
index 0000000..79182a4
--- /dev/null
@@ -0,0 +1,26 @@
+{{/*
+# Copyright © 2024 Deutsche Telekom
+#
+# 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.
+*/}}
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ include "common.fullname" . }}-version-json
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ include "common.release" . }}
+    heritage: {{ .Release.Service }}
+data:
+{{ tpl (.Files.Glob "resources/assets/version.json").AsConfig . | nindent 2 }}
index 4895edd..337cbc4 100644 (file)
@@ -21,10 +21,12 @@ metadata:
   namespace: {{ include "common.namespace" . }}
   labels:
     app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
     release: {{ include "common.release" . }}
     heritage: {{ .Release.Service }}
 data:
   {{- range $key, $val := .Values.env }}
   {{ $key }}: {{ $val | quote }}
   {{- end -}}
+  {{- range $key, $val := .Values.global.env }}
+  {{ $key }}: {{ $val | quote }}
+  {{- end -}}
index 6a16384..e9562bc 100644 (file)
@@ -22,13 +22,18 @@ spec:
   replicas: {{ .Values.replicaCount }}
   revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
   template:
-    metadata: {{- include "common.templateMetadata" . | nindent 6 }}
+    metadata:
+      annotations:
+        checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
+      {{- include "common.templateMetadata" . | indent 6 }}
     spec:
       {{- include "common.imagePullSecrets" . | nindent 6 }}
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
       containers:
         - name: {{ .Chart.Name }}
           image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image.imageName }}:{{ .Values.image.tag | default .Chart.AppVersion }}
           imagePullPolicy: {{ .Values.image.pullPolicy }}
+          {{ include "common.containerSecurityContext" . | indent 10 | trim }}
           envFrom:
           - configMapRef:
               name: {{ include "common.fullname" . }}-configmap
@@ -53,6 +58,26 @@ spec:
             mountPath: {{ .Values.nginx.tilesPath }}
             subPath: tiles.json
             readOnly: true
+          - name: nginx-config
+            mountPath: /etc/nginx/conf.d/default.conf
+            subPath: default.conf
+            readOnly: true
+          - name: assets
+            mountPath: /usr/share/nginx/html/assets/env.js
+            subPath: env.js
+            readOnly: true
+          - name: assets
+            mountPath: /usr/share/nginx/html/assets/acl.json
+            subPath: acl.json
+            readOnly: true
+          - name: assets
+            mountPath: /usr/share/nginx/html/assets/version.json
+            subPath: version.json
+            readOnly: true
+          - name: tmp-volume
+            mountPath: /tmp
+          - name: nginx-cache-volume
+            mountPath: /var/cache/nginx
           resources: {{ include "common.resources" . | nindent 12 }}
         {{- with .Values.nodeSelector }}
         nodeSelector:
@@ -76,3 +101,22 @@ spec:
             items:
             - key: tiles.json
               path: tiles.json
+        - name: nginx-config
+          configMap:
+            name: {{ include "common.fullname" . }}-nginx-config
+        - name: assets
+          configMap:
+            name: {{ include "common.fullname" . }}-assets
+            items:
+              - key: env_js
+                path: env.js
+              - key: acl_json
+                path: acl.json
+              - key: version_json
+                path: version.json
+        - name: tmp-volume
+          emptyDir:
+            sizeLimit: 64Mi
+        - name: nginx-cache-volume
+          emptyDir:
+            sizeLimit: 64Mi
index bf28766..f806c4c 100644 (file)
@@ -13,6 +13,9 @@
 # limitations under the License.
 
 global:
+  env:
+    KEYCLOAK_URL: http://keycloak-http.keycloak
+    KEYCLOAK_REALM: onap
   ingress:
     virtualhost:
       # Default Ingress base URL
@@ -49,7 +52,7 @@ service:
   internalPort: 8080
   ports:
     - name: http
-      port: 80
+      port: 8080
       port_protocol: http
 
 ingress:
@@ -57,11 +60,26 @@ ingress:
   service:
     - baseaddr: "portal-ng-ui"
       name: "portal-ng-ui"
-      port: 80
+      port: 8080
   config:
     ssl: "redirect"
 
-resources: {}
+resources:
+  small:
+    limits:
+      cpu: "2"
+      memory: "1Gi"
+    requests:
+      cpu: "50m"
+      memory: "128Mi"
+  large:
+    limits:
+      cpu: "4"
+      memory: "2Gi"
+    requests:
+      cpu: "100m"
+      memory: "256Mi"
+  unlimited: {}
 
 autoscaling:
   enabled: false
@@ -84,11 +102,9 @@ tolerations: []
 affinity: {}
 
 env:
+  NAME_SERVER: coredns.kube-system
   BFF_URL: http://portal-ng-bff.onap.svc.cluster.local:9080
   NGINX_PORT: 8080
-  KEYCLOAK_REALM: ONAP
-  KEYCLOAK_INTERNAL_URL: http://keycloakx-http.keycloak.svc.cluster.local
-  KEYCLOAK_HOSTNAME: https://keycloak-ui.simpledemo.onap.org
 
 #Pods Service Account
 serviceAccount:
@@ -108,4 +124,21 @@ tiles:
   HOLMES_URL: "holmes-rule-mgmt-ui"
   AAI_URL: "aai-sparkybe-api"
   SDNCDG_URL: "sdnc-dgbuilder-ui"
-  SDNCODL_URL: "sdnc-web-ui"
\ No newline at end of file
+  SDNCODL_URL: "sdnc-web-ui"
+
+acl:
+  portal_admin:
+    - users.administration.list
+    - users.administration.detail
+    - users.administration.create
+    - users.administration.edit
+    - users.administration.delete
+    - dashboard.tile.USER_LAST_ACTION_TILE
+  portal_operator:
+    - dashboard.tile.USER_LAST_ACTION_TILE
+  portal_designer:
+    - dashboard.tile.USER_LAST_ACTION_TILE
+
+securityContext:
+  user_id: 101
+  group_id: 101
index 4736d6d..cd556e4 100644 (file)
@@ -75,6 +75,12 @@ spec:
         - name: robot-logs
           mountPath: /share/logs
         resources: {{ include "common.resources" . | nindent 10 }}
+        env:
+          - name: KAFKA_PASSWORD
+            valueFrom:
+              secretKeyRef:
+                name: {{ .Values.strimziKafkaUsername }}
+                key: password
       {{- if .Values.nodeSelector }}
       nodeSelector:
 {{ toYaml .Values.nodeSelector | indent 8 }}
index 6025462..32dfa23 100644 (file)
@@ -22,7 +22,7 @@ global: # global defaults
 
 # application image
 repository: nexus3.onap.org:10001
-image: onap/testsuite:1.12.2
+image: onap/testsuite:1.14.0
 pullPolicy: Always
 
 ubuntuInitImage: oomk8s/ubuntu-init:2.0.0
index 86d3408..68ee222 100644 (file)
@@ -2,6 +2,7 @@
 # Modifications Copyright © 2018 ZTE
 # Modifications Copyright © 2021 Orange
 # Modifications Copyright © 2021 Nordix Foundation
+# Modifications Copyright © 2025 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -18,7 +19,7 @@
 apiVersion: v2
 description: Service Design and Creation Umbrella Helm charts
 name: sdc
-version: 13.0.1
+version: 13.0.7
 
 dependencies:
   - name: common
index e93607c..eec4106 100644 (file)
@@ -2,6 +2,7 @@
 # Modifications Copyright © 2018 AT&T, ZTE
 # Modifications Copyright © 2021 Orange
 # Modifications Copyright © 2021 Nordix Foundation
+# Modifications Copyright © 2025 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -18,7 +19,7 @@
 apiVersion: v2
 description: ONAP Service Design and Creation Backend API
 name: sdc-be
-version: 13.0.0
+version: 13.0.5
 
 dependencies:
   - name: common
@@ -30,3 +31,6 @@ dependencies:
   - name: serviceAccount
     version: ~13.x-0
     repository: '@local'
+  - name: readinessCheck
+    version: ~13.x-0
+    repository: '@local'
diff --git a/kubernetes/sdc/components/sdc-be/resources/config/catalog-be/configuration.yaml b/kubernetes/sdc/components/sdc-be/resources/config/catalog-be/configuration.yaml
new file mode 100644 (file)
index 0000000..ae2e2f5
--- /dev/null
@@ -0,0 +1,1253 @@
+identificationHeaderFields:
+  - HTTP_IV_USER
+  - HTTP_CSP_FIRSTNAME
+  - HTTP_CSP_LASTNAME
+  - HTTP_IV_REMOTE_ADDRESS
+  - HTTP_CSP_WSTYPE
+
+
+# catalog backend hostname
+beFqdn: {{ .Values.beFqdn }}
+
+# catalog backend http port
+beHttpPort: {{ .Values.beHttpPort }}
+
+# catalog backend http context
+beContext: /sdc/rest/config/get
+
+# catalog backend protocol
+beProtocol: http
+
+tlsCert: {{ .Values.tlsCert }}
+tlsKey: {{ .Values.tlsKey }}
+caCert: {{ .Values.caCert }}
+
+# catalog backend ssl port
+beSslPort: {{ .Values.beSslPort }}
+version: 1.1.0
+released: 2012-11-30
+toscaConformanceLevel: 11.0
+minToscaConformanceLevel: 3.0
+
+janusGraphCfgFile: {{ .Values.janusgraph.cfgFile }}
+janusGraphInMemoryGraph: {{ .Values.janusgraph.graph.inMemory }}
+janusGraphLockTimeout: {{ .Values.janusgraph.graph.lockTimeout }}
+#startup:                   connect to JanusGraph DB when it is down during ASDC--More-- (2% of 27930 bytes)
+janusGraphReconnectIntervalInSeconds: {{ .Values.janusgraph.reconnectInterval }}
+
+# The read timeout towards JanusGraph DB when health check is invoked:
+janusGraphHealthCheckReadTimeout: {{ .Values.janusgraph.healthCheckReadTimeout }}
+
+  #startup:                   connect to Elasticsearch when it is down during ASDC--More-- (3% of 27930 bytes)
+
+uebHealthCheckReconnectIntervalInSeconds: 15
+uebHealthCheckReadTimeout: 4
+
+# Protocols
+protocols:
+  - http
+  - https
+
+# Default imports
+defaultImports:
+  - nodes:
+      file: nodes.yml
+  - datatypes:
+      file: data.yml
+  - capabilities:
+      file: capabilities.yml
+  - relationships:
+      file: relationships.yml
+  - groups:
+      file: groups.yml
+  - policies:
+      file: policies.yml
+  - annotations:
+      file: annotations.yml
+
+# Global CSAR Import Files
+globalCsarImports:
+  - annotations.yml
+  - artifacts.yml
+  - capabilities.yml
+  - data.yml
+  - groups.yml
+  - interfaces.yml
+  - nodes.yml
+  - policies.yml
+  - relationships.yml
+
+# Users
+users:
+  tom: passwd
+  bob: passwd
+
+basicAuth:
+  enabled: {{ .Values.basicAuthConfig.enabled }}
+  userName: {{ .Values.basicAuth.userName }}
+  userPass: {{ .Values.basicAuth.userPass }}
+  excludedUrls: "/sdc2/rest/healthCheck"
+
+
+cassandraConfig:
+  cassandraHosts: [{{ .Values.global.sdc_cassandra.serviceName }}.{{ include "common.namespace" . }}.svc.cluster.local]
+  cassandraPort: {{ .Values.cassandra.port }}
+  localDataCenter: {{ .Values.global.sdc_cassandra.dataCenter }}
+  reconnectTimeout : 30000
+  socketReadTimeout: {{ .Values.cassandraConfig.socketReadTimeout }}
+  socketConnectTimeout: {{ .Values.cassandraConfig.socketConnectTimeout }}
+  authenticate: true
+  username: {{ .Values.cassandra.cassandraUsername }}
+  password: {{ .Values.cassandra.cassandraPassword }}
+  ssl: {{ .Values.cassandraConfig.ssl }}
+  keystorePath: {{ .Values.cassandraConfig.keystorePath }}
+  keystorePassword: {{ .Values.cassandraConfig.keystorePassword }}
+  truststorePath: {{ .Values.cassandraConfig.truststorePath }}
+  truststorePassword: {{ .Values.cassandraConfig.truststorePassword }}
+  keySpaces:
+    - { name: dox, replicationStrategy: NetworkTopologyStrategy, replicationInfo: ['{{ .Values.global.sdc_cassandra.dataCenter }}','{{ .Values.global.sdc_cassandra.replicaCount }}']}
+    - { name: sdcaudit, replicationStrategy: NetworkTopologyStrategy, replicationInfo: ['{{ .Values.global.sdc_cassandra.dataCenter }}','{{ .Values.global.sdc_cassandra.replicaCount }}']}
+    - { name: sdcartifact, replicationStrategy: NetworkTopologyStrategy, replicationInfo: ['{{ .Values.global.sdc_cassandra.dataCenter }}','{{ .Values.global.sdc_cassandra.replicaCount }}']}
+    - { name: sdccomponent, replicationStrategy: NetworkTopologyStrategy, replicationInfo: ['{{ .Values.global.sdc_cassandra.dataCenter }}','{{ .Values.global.sdc_cassandra.replicaCount }}']}
+    - { name: sdcrepository, replicationStrategy: NetworkTopologyStrategy, replicationInfo: ['{{ .Values.global.sdc_cassandra.dataCenter }}','{{ .Values.global.sdc_cassandra.replicaCount }}']}
+licenseTypes:
+  - User
+  - Installation
+  - CPU
+
+#Deployment artifacts placeHolder
+resourceTypes: &allResourceTypes
+  - VFC
+  - CP
+  - VL
+  - VF
+  - CR
+  - VFCMT
+  - Abstract
+  - CVFC
+  - Configuration
+  - ServiceProxy
+  - PNF
+
+componentAllowedInstanceTypes:
+  Resource:
+    VF:
+      - VFC
+      - VF
+      - CR
+      - CP
+      - PNF
+      - CVFC
+      - VL
+      - Configuration
+      - ServiceProxy
+      - Abstract
+    CVFC:
+      - VFC
+      - VF
+      - CR
+      - CP
+      - PNF
+      - CVFC
+      - VL
+      - ServiceProxy
+      - Abstract
+    PNF:
+      - VF
+      - CR
+      - CP
+      - PNF
+      - CVFC
+      - VL
+      - Configuration
+      - ServiceProxy
+      - Abstract
+    CR:
+      - VF
+      - CR
+      - CP
+      - PNF
+      - CVFC
+      - VL
+      - Configuration
+      - ServiceProxy
+      - Abstract
+    VL:
+      - VL
+  Service:
+    "*":
+      - VF
+      - VFC
+      - CR
+      - CP
+      - PNF
+      - CVFC
+      - VL
+      - Configuration
+      - ServiceProxy
+      - Abstract
+
+artifacts:
+  - type: CONTROLLER_BLUEPRINT_ARCHIVE
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - SERVICE
+      - RESOURCE
+    resourceTypes:
+      - VF
+      - PNF
+    acceptedTypes:
+      - zip
+  - type: HELM
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - SERVICE
+      - RESOURCE
+    resourceTypes: *allResourceTypes
+    acceptedTypes:
+      - tgz
+  - type: YANG_XML
+    categories:
+      - DEPLOYMENT
+      - INFORMATIONAL
+    componentTypes:
+      - SERVICE
+      - RESOURCE
+    resourceTypes: *allResourceTypes
+    acceptedTypes:
+      - xml
+  - type: VNF_CATALOG
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - SERVICE
+    resourceTypes:
+    acceptedTypes:
+      - xml
+  - type: MODEL_INVENTORY_PROFILE
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - SERVICE
+    resourceTypes:
+    acceptedTypes:
+      - xml
+  - type: MODEL_QUERY_SPEC
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - SERVICE
+    resourceTypes:
+    acceptedTypes:
+      - xml
+  - type: UCPE_LAYER_2_CONFIGURATION
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - SERVICE
+    resourceTypes:
+    acceptedTypes:
+      - xml
+  #AAI Artifacts
+  - type: AAI_SERVICE_MODEL
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - SERVICE
+    resourceTypes:
+    acceptedTypes:
+      - xml
+  - type: AAI_VF_MODULE_MODEL
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - SERVICE
+    resourceTypes:
+    acceptedTypes:
+      - xml
+  - type: AAI_VF_INSTANCE_MODEL
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - SERVICE
+    resourceTypes:
+    acceptedTypes:
+      - xml
+  #Plan
+  - type: PLAN
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - SERVICE
+      - RESOURCE
+      - RESOURCE_INSTANCE
+    resourceTypes:
+      - VF
+      - VFC
+    acceptedTypes:
+      - xml
+  - type: WORKFLOW
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - SERVICE
+      - RESOURCE
+    resourceTypes:
+      - VFC
+      - CP
+      - VL
+      - VF
+      - CR
+      - VFCMT
+      - Abstract
+      - CVFC
+      - PNF
+    acceptedTypes:
+  - type: HEAT
+    categories:
+      - DEPLOYMENT
+      - INFORMATIONAL
+    componentTypes:
+      - RESOURCE
+    resourceTypes: *allResourceTypes
+    acceptedTypes:
+      - yaml
+      - yml
+  - type: HEAT_VOL
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - RESOURCE
+    resourceTypes: *allResourceTypes
+    acceptedTypes:
+      - yaml
+      - yml
+  - type: HEAT_NET
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - RESOURCE
+    resourceTypes: *allResourceTypes
+    acceptedTypes:
+      - yaml
+      - yml
+  - type: HEAT_NESTED
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - RESOURCE
+    resourceTypes: *allResourceTypes
+    acceptedTypes:
+      - yaml
+      - yml
+  - type: HEAT_ARTIFACT
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - RESOURCE
+    resourceTypes: *allResourceTypes
+    acceptedTypes:
+  - type: CLOUD_TECHNOLOGY_SPECIFIC_ARTIFACT
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - RESOURCE
+    resourceTypes: *allResourceTypes
+    acceptedTypes:
+      - zip
+      - tgz
+      - csar
+  - type: VNF_CATALOG
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - RESOURCE
+    resourceTypes: *allResourceTypes
+    acceptedTypes:
+      - xml
+  - type: VF_LICENSE
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - RESOURCE
+    resourceTypes: *allResourceTypes
+    acceptedTypes:
+      - xml
+  - type: VENDOR_LICENSE
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - RESOURCE
+    resourceTypes: *allResourceTypes
+    acceptedTypes:
+      - xml
+  - type: MODEL_INVENTORY_PROFILE
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - RESOURCE
+    resourceTypes: *allResourceTypes
+    acceptedTypes:
+      - xml
+  - type: MODEL_QUERY_SPEC
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - RESOURCE
+    resourceTypes: *allResourceTypes
+    acceptedTypes:
+      - xml
+  - type: LIFECYCLE_OPERATIONS
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - RESOURCE
+    resourceTypes:
+      - VF
+      - VFC
+    acceptedTypes:
+      - yaml
+      - yml
+  - type: VES_EVENTS
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - RESOURCE
+      - RESOURCE_INSTANCE
+    resourceTypes:
+      - VFC
+      - CP
+      - VL
+      - VF
+      - CR
+      - VFCMT
+      - Abstract
+      - CVFC
+      - PNF
+    acceptedTypes:
+      - yaml
+      - yml
+  - type: PERFORMANCE_COUNTER
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - RESOURCE
+      - RESOURCE_INSTANCE
+    resourceTypes: *allResourceTypes
+    acceptedTypes:
+      - csv
+  - type: APPC_CONFIG
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - RESOURCE
+    resourceTypes:
+      - VF
+    acceptedTypes:
+  - type: DCAE_TOSCA
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - RESOURCE
+    resourceTypes:
+      - VF
+      - VFCMT
+    acceptedTypes:
+      - yml
+      - yaml
+  - type: DCAE_JSON
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - RESOURCE
+    resourceTypes:
+      - VF
+      - VFCMT
+    acceptedTypes:
+      - json
+  - type: DCAE_POLICY
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - RESOURCE
+    resourceTypes:
+      - VF
+      - VFCMT
+    acceptedTypes:
+      - emf
+  - type: DCAE_DOC
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - RESOURCE
+    resourceTypes:
+      - VF
+      - VFCMT
+    acceptedTypes:
+  - type: DCAE_EVENT
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - RESOURCE
+    resourceTypes:
+      - VF
+      - VFCMT
+    acceptedTypes:
+  - type: AAI_VF_MODEL
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - RESOURCE
+    resourceTypes:
+      - VF
+    acceptedTypes:
+      - xml
+  - type: AAI_VF_MODULE_MODEL
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - RESOURCE
+    resourceTypes:
+      - VF
+    acceptedTypes:
+      - xml
+  - type: OTHER
+    categories:
+      - DEPLOYMENT
+      - INFORMATIONAL
+    componentTypes:
+      - RESOURCE
+    resourceTypes:
+      - VFC
+      - CVFC
+      - CP
+      - VL
+      - VF
+      - VFCMT
+      - Abstract
+      - PNF
+    acceptedTypes:
+  - type: SNMP_POLL
+    categories:
+      - DEPLOYMENT
+      - INFORMATIONAL
+    componentTypes:
+      - RESOURCE
+      - RESOURCE_INSTANCE
+    resourceTypes: *allResourceTypes
+    acceptedTypes:
+  - type: SNMP_TRAP
+    categories:
+      - DEPLOYMENT
+      - INFORMATIONAL
+    componentTypes:
+      - RESOURCE
+      - RESOURCE_INSTANCE
+    resourceTypes: *allResourceTypes
+    acceptedTypes:
+  - type: PM_DICTIONARY
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - RESOURCE
+    resourceTypes:
+      - VF
+      - PNF
+    acceptedTypes:
+      - yaml
+      - yml
+  - type: YANG_MODULE
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - RESOURCE
+    resourceTypes:
+      - VF
+      - PNF
+    acceptedTypes:
+      - yang
+  - type: ANSIBLE_PLAYBOOK
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - RESOURCE
+    resourceTypes:
+      - VF
+      - PNF
+    acceptedTypes:
+      - yaml
+      - yml
+  - type: ONBOARDED_PACKAGE
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - RESOURCE
+    resourceTypes:
+      - VF
+      - PNF
+    acceptedTypes:
+      - csar
+      - zip
+  - type: ETSI_PACKAGE
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - RESOURCE
+    resourceTypes:
+      - VF
+      - PNF
+    acceptedTypes:
+      - csar
+      - zip
+  - type: ASD_PACKAGE
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - RESOURCE
+    resourceTypes:
+      - VF
+      - PNF
+    acceptedTypes:
+      - csar
+      - zip
+  - type: HEAT_ENV
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - RESOURCE_INSTANCE
+    resourceTypes:
+    acceptedTypes:
+      - env
+  - type: VF_MODULES_METADATA
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - RESOURCE_INSTANCE
+    resourceTypes:
+    acceptedTypes:
+      - json
+  - type: DCAE_INVENTORY_TOSCA
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - RESOURCE_INSTANCE
+    resourceTypes:
+    acceptedTypes:
+      - yml
+      - yaml
+  - type: DCAE_INVENTORY_JSON
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - RESOURCE_INSTANCE
+    resourceTypes:
+    acceptedTypes:
+      - json
+  - type: DCAE_INVENTORY_POLICY
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - RESOURCE_INSTANCE
+    resourceTypes:
+    acceptedTypes:
+      - emf
+  - type: DCAE_INVENTORY_DOC
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - RESOURCE_INSTANCE
+    resourceTypes:
+    acceptedTypes:
+  - type: DCAE_INVENTORY_BLUEPRINT
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - RESOURCE_INSTANCE
+    resourceTypes:
+    acceptedTypes:
+  - type: DCAE_INVENTORY_EVENT
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - RESOURCE_INSTANCE
+    resourceTypes:
+    acceptedTypes:
+  - type: CHEF
+    categories:
+      - INFORMATIONAL
+    componentTypes:
+      - RESOURCE
+    resourceTypes: *allResourceTypes
+    acceptedTypes:
+  - type: PUPPET
+    categories:
+      - INFORMATIONAL
+    componentTypes:
+      - RESOURCE
+    resourceTypes: *allResourceTypes
+    acceptedTypes:
+  - type: SHELL
+    categories:
+      - INFORMATIONAL
+    componentTypes:
+      - RESOURCE
+    resourceTypes: *allResourceTypes
+    acceptedTypes:
+  - type: YANG
+    categories:
+      - INFORMATIONAL
+    componentTypes:
+      - RESOURCE
+    resourceTypes: *allResourceTypes
+    acceptedTypes:
+  - type: BPEL
+    categories:
+      - INFORMATIONAL
+    componentTypes:
+      - RESOURCE
+    resourceTypes: *allResourceTypes
+    acceptedTypes:
+  - type: DG_XML
+    categories:
+      - INFORMATIONAL
+    componentTypes:
+      - RESOURCE
+    resourceTypes: *allResourceTypes
+    acceptedTypes:
+  - type: MURANO_PKG
+    categories:
+      - INFORMATIONAL
+    componentTypes:
+      - RESOURCE
+    resourceTypes: *allResourceTypes
+    acceptedTypes:
+  - type: PNF_SW_INFORMATION
+    categories:
+      - INFORMATIONAL
+    componentTypes:
+      - RESOURCE
+    resourceTypes:
+      - PNF
+    acceptedTypes:
+      - yaml
+      - yml
+  - type: GUIDE
+    categories:
+      - INFORMATIONAL
+    componentTypes:
+      - RESOURCE
+    resourceTypes:
+      - VF
+      - VFC
+      - CVFC
+      - PNF
+    acceptedTypes:
+      - yaml
+      - yml
+  - type: FLOW
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - SERVICE
+    resourceTypes: *allResourceTypes
+    acceptedTypes:
+  - type: SHELL_SCRIPT
+    categories:
+      - DEPLOYMENT
+    componentTypes:
+      - SERVICE
+      - SERVICE_INSTANCE
+      - RESOURCE
+      - RESOURCE_INSTANCE
+    resourceTypes: *allResourceTypes
+    acceptedTypes:
+      - sh
+  - type: TOSCA_CSAR
+    categories:
+      - TOSCA
+    componentTypes:
+    resourceTypes:
+    acceptedTypes:
+      - csar
+  - type: TOSCA_TEMPLATE
+    categories:
+      - TOSCA
+    componentTypes:
+    resourceTypes:
+    acceptedTypes:
+      - yml
+      - yaml
+  - type: NETWORK_CALL_FLOW
+    categories:
+    componentTypes:
+    resourceTypes:
+    acceptedTypes:
+  - type: ICON
+    categories:
+    componentTypes:
+    resourceTypes:
+    acceptedTypes:
+
+deploymentResourceArtifacts:
+
+deploymentResourceInstanceArtifacts:
+  heatEnv:
+    displayName: "HEAT ENV"
+    type: HEAT_ENV
+    description: "Auto-generated HEAT Environment deployment artifact"
+    fileExtension: "env"
+  VfHeatEnv:
+    displayName: "VF HEAT ENV"
+    type: HEAT_ENV
+    description: "VF Auto-generated HEAT Environment deployment artifact"
+    fileExtension: "env"
+
+#tosca artifacts placeholders
+toscaArtifacts:
+  assetToscaTemplate:
+    artifactName: -template.yml
+    displayName: Tosca Template
+    type: TOSCA_TEMPLATE
+    description: TOSCA representation of the asset
+  assetToscaCsar:
+    artifactName: -csar.csar
+    displayName: Tosca Model
+    type: TOSCA_CSAR
+    description: TOSCA definition package of the asset
+
+#Informational artifacts placeHolder
+excludeResourceCategory:
+  - Generic
+excludeResourceType:
+  - PNF
+  - CR
+informationalResourceArtifacts:
+  features:
+    displayName: Features
+    type: OTHER
+  capacity:
+    displayName: Capacity
+    type: OTHER
+  vendorTestResult:
+    displayName: Vendor Test Result
+    type: OTHER
+  testScripts:
+    displayName: Test Scripts
+    type: OTHER
+  CloudQuestionnaire:
+    displayName: Cloud Questionnaire (completed)
+    type: OTHER
+  HEATTemplateFromVendor:
+    displayName: HEAT Template from Vendor
+    type: HEAT
+  resourceSecurityTemplate:
+    displayName: Resource Security Template
+    type: OTHER
+
+excludeServiceCategory:
+
+informationalServiceArtifacts:
+  serviceArtifactPlan:
+    displayName: Service Artifact Plan
+    type: OTHER
+  summaryOfImpactsToECOMPElements:
+    displayName: Summary of impacts to ECOMP elements,OSSs, BSSs
+    type: OTHER
+  automationCompositionFunctions:
+    displayName: Automation Composition Functions
+    type: OTHER
+  dimensioningInfo:
+    displayName: Dimensioning Info
+    type: OTHER
+  affinityRules:
+    displayName: Affinity Rules
+    type: OTHER
+  operationalPolicies:
+    displayName: Operational Policies
+    type: OTHER
+  serviceSpecificPolicies:
+    displayName: Service-specific Policies
+    type: OTHER
+  engineeringRules:
+    displayName: Engineering Rules (ERD)
+    type: OTHER
+  distributionInstructions:
+    displayName: Distribution Instructions
+    type: OTHER
+  certificationTestResults:
+    displayName: TD Certification Test Results
+    type: OTHER
+  deploymentVotingRecord:
+    displayName: Deployment Voting Record
+    type: OTHER
+  serviceQuestionnaire:
+    displayName: Service Questionnaire
+    type: OTHER
+  serviceSecurityTemplate:
+    displayName: Service Security Template
+    type: OTHER
+
+serviceApiArtifacts:
+  configuration:
+    displayName: Configuration
+    type: OTHER
+  instantiation:
+    displayName: Instantiation
+    type: OTHER
+  monitoring:
+    displayName: Monitoring
+    type: OTHER
+  reporting:
+    displayName: Reporting
+    type: OTHER
+  logging:
+    displayName: Logging
+    type: OTHER
+  testing:
+    displayName: Testing
+    type: OTHER
+
+additionalInformationMaxNumberOfKeys: 50
+
+systemMonitoring:
+  enabled: false
+  isProxy: false
+  probeIntervalInSeconds: 15
+heatArtifactDeploymentTimeout:
+  defaultMinutes: 30
+  minMinutes: 1
+  maxMinutes: 120
+
+unLoggedUrls:
+  - /sdc2/rest/monitoring
+  - /sdc2/rest/healthCheck
+
+cleanComponentsConfiguration:
+  cleanIntervalInMinutes: 1440
+  componentsToClean:
+    - Resource
+    - Service
+
+artifactsIndex: resources
+
+heatEnvArtifactHeader: ""
+heatEnvArtifactFooter: ""
+
+onboarding:
+  host: {{ .Values.ONBOARDING_BE.host }}
+  protocol: {{ if .Values.disableHttp }}https{{ else }}http{{ end }}
+  port: {{ if .Values.disableHttp }}{{ .Values.ONBOARDING_BE.httpsPort }}{{ else }}{{ .Values.ONBOARDING_BE.httpPort }}{{ end }}
+  getVspPackageUri: "/onboarding-api/v1.0/vendor-software-products/packages/%s?versionId=%s" # /onboarding-api/v1.0/vendor-software-products/packages/:vspId?versionId=:vspVersionId
+  getLatestVspPackageUri: "/onboarding-api/v1.0/vendor-software-products/packages/%s" # /onboarding-api/v1.0/vendor-software-products/packages/:vspId
+  getVspUri: "/onboarding-api/v1.0/vendor-software-products/%s/versions/%s" # /onboarding-api/v1.0/vendor-software-products/:vspId/versions/:vspVersionId
+  getLatestVspUri: "/onboarding-api/v1.0/vendor-software-products/%s" # /onboarding-api/v1.0/vendor-software-products/:vspId
+  healthCheckUri: "/onboarding-api/v1.0/healthcheck"
+
+# #GSS IDNS
+switchoverDetector:
+  gBeFqdn:
+  gFeFqdn:
+  beVip: 1.2.3.4
+  feVip: 1.2.3.4
+  beResolveAttempts: 3
+  feResolveAttempts: 3
+  enabled: false
+  interval: 60
+  changePriorityUser: ecompasdc
+  changePriorityPassword: ecompasdc123
+  publishNetworkUrl:
+  publishNetworkBody: '{"note":"comment"}'
+  groups:
+    beSet: { changePriorityUrl: "", changePriorityBody: '{"name":"","uri":"","no_ad_redirection":false,"v4groups":{"failover_groups":["","","failover_policy":["FAILALL"]},"comment":"","intended_app_proto":"DNS"}'}
+    feSet: { changePriorityUrl: "", changePriorityBody: '{"name":"","uri":"","no_ad_redirection":false,"v4groups":{"failover_groups":["",""],"failover_policy":["FAILALL"]},"comment":"","intended_app_proto":"DNS"}'}
+applicationL1Cache:
+  datatypes:
+    enabled: true
+    firstRunDelay: 10
+    pollIntervalInSec: 60
+
+applicationL2Cache:
+  enabled: false
+  catalogL1Cache:
+    enabled: false
+    resourcesSizeInCache: 300
+    servicesSizeInCache: 200
+    productsSizeInCache: 100
+  queue:
+    syncIntervalInSecondes: 43200
+    waitOnShutDownInMinutes: 10
+    numberOfCacheWorkers: 4
+
+toscaValidators:
+  stringMaxLength: 2500
+
+disableAudit: false
+
+vfModuleProperties:
+  min_vf_module_instances:
+    forBaseModule: 1
+    forNonBaseModule: 0
+  max_vf_module_instances:
+    forBaseModule: 1
+    forNonBaseModule:
+  initial_count:
+    forBaseModule: 1
+    forNonBaseModule: 0
+  vf_module_type:
+    forBaseModule: Base
+    forNonBaseModule: Expansion
+
+genericAssetNodeTypes:
+  VFC: org.openecomp.resource.abstract.nodes.VFC
+  CVFC: org.openecomp.resource.abstract.nodes.VFC
+  VF : org.openecomp.resource.abstract.nodes.VF
+  CR : org.openecomp.resource.abstract.nodes.CR
+  PNF: org.openecomp.resource.abstract.nodes.PNF
+  Service: org.openecomp.resource.abstract.nodes.service
+  ETSI NFV Network Service: tosca.nodes.nfv.NS
+
+# Defines the base types for Services
+# <category name>:
+#   required: <boolean> //if the base type is mandatory or not
+#   baseTypes: <list of TOSCA types> //the base types. Required if the base type is required.
+#                                      If not provided, the category will have no base type.
+serviceBaseNodeTypes:
+  ETSI NFV Network Service:
+    required: true
+    baseTypes:
+      - tosca.nodes.nfv.NS
+  AutomationComposition:
+    required: false
+
+workloadContext: Production
+
+environmentContext:
+  defaultValue: General_Revenue-Bearing
+  validValues:
+    - Critical_Revenue-Bearing
+    - Vital_Revenue-Bearing
+    - Essential_Revenue-Bearing
+    - Important_Revenue-Bearing
+    - Needed_Revenue-Bearing
+    - Useful_Revenue-Bearing
+    - General_Revenue-Bearing
+    - Critical_Non-Revenue
+    - Vital_Non-Revenue
+    - Essential_Non-Revenue
+    - Important_Non-Revenue
+    - Needed_Non-Revenue
+    - Useful_Non-Revenue
+    - General_Non-Revenue
+
+gabConfig:
+  - artifactType: 'VES_EVENTS'
+    pathsAndNamesDefinitions:
+      -
+        friendlyName: "Action"
+        path: "event.action[2]"
+        searchable: true
+      -
+        friendlyName: "Comment"
+        path: "event.comment"
+        searchable: true
+      -
+        friendlyName: "Alarm Additional Information"
+        path: "event.structure.faultFields.structure.alarmAdditionalInformation.comment"
+        searchable: true
+  - artifactType: 'PM_DICTIONARY'
+    pathsAndNamesDefinitions:
+      -
+        friendlyName: "measType"
+        path: "pmMetaData.pmFields.measType"
+        searchable: true
+      -
+        friendlyName: "measDescription"
+        path: "pmMetaData.pmFields.measDescription"
+        searchable: true
+      -
+        friendlyName: "measCondition"
+        path: "pmMetaData.pmFields.measCondition"
+        searchable: false
+      -
+        friendlyName: "measResultUnits"
+        path: "pmMetaData.pmFields.measResultUnits"
+        searchable: false
+      -
+        friendlyName: "measResultRange"
+        path: "pmMetaData.pmFields.measResultRange"
+        searchable: false
+      -
+        friendlyName: "measObjClass"
+        path: "pmMetaData.pmFields.measObjClass"
+        searchable: true
+      -
+        friendlyName: "measCollectionMethod"
+        path: "pmMetaData.pmFields.measCollectionMethod"
+        searchable: false
+      -
+        friendlyName: "measInfoId"
+        path: "pmMetaData.pmFields.measInfoId"
+        searchable: true
+      -
+        friendlyName: "iMeasInfoId"
+        path: "pmMetaData.pmFields.iMeasInfoId"
+        searchable: false
+dmaapConsumerConfiguration:
+  active: {{ .Values.dmaapConsumerConfiguration.active }}
+  hosts: localhost:3905
+  consumerGroup: sdc
+  consumerId: mama
+  timeoutMs: 15000
+  limit: 1
+  pollingInterval: 2
+  topic: topic
+  latitude: 32.109333
+  longitude: 34.855499
+  version: 1.0
+  serviceName: localhost/events
+  environment: TEST
+  partner: BOT_R
+  routeOffer: MR1
+  protocol: https
+  contenttype: application/json
+  dme2TraceOn: true
+  aftEnvironment: AFTUAT
+  aftDme2ConnectionTimeoutMs: 15000
+  aftDme2RoundtripTimeoutMs: 240000
+  aftDme2ReadTimeoutMs: 50000
+  dme2preferredRouterFilePath: DME2preferredRouter.txt
+  timeLimitForNotificationHandleMs: 120000
+  credential:
+    username: user
+    password:
+  aftDme2SslEnable: true
+  aftDme2ClientSslCertAlias: certman
+
+dmaapProducerConfiguration:
+  active: {{ .Values.dmaapProducerConfiguration.active }}
+  hosts: {{ .Values.dmaapProducerConfiguration.hosts }}
+  consumerGroup: sdc-{{ .Values.chefEnvironment }}-1730226683
+  consumerId: sdc-{{ .Values.chefEnvironment }}1-1730226683
+  timeoutMs: 15000
+  limit: 1
+  pollingInterval: 2
+  topic: {{ .Values.dmaapProducerConfiguration.topic }}
+  latitude: 32.109333
+  longitude: 34.855499
+  version: 1.0
+  serviceName: {{ .Values.dmaapProducerConfiguration.serviceName }}
+  environment: {{ .Values.dmaapProducerConfiguration.environment }}
+  partner: BOT_R
+  routeOffer: MR1
+  protocol: {{ .Values.dmaapProducerConfiguration.protocol }}
+  contenttype: application/json
+  dme2TraceOn: true
+  aftEnvironment: {{ .Values.dmaapProducerConfiguration.aftEnvironment }}
+  aftDme2ConnectionTimeoutMs: 15000
+  aftDme2RoundtripTimeoutMs: 240000
+  aftDme2ReadTimeoutMs: 50000
+  dme2preferredRouterFilePath: {{ .Values.dmaapProducerConfiguration.dme2preferredRouterFilePath }}
+  timeLimitForNotificationHandleMs: 120000
+  credential:
+    username: {{ .Values.dmaapProducerConfiguration.username }}
+    password: {{ .Values.dmaapProducerConfiguration.password }}
+  aftDme2SslEnable: true
+  aftDme2ClientSslCertAlias: certman
+
+# ToDo: AF - had to remove due to configuration laod class failure
+#dmeConfiguration:
+#    lookupUriFormat: "http://DME2RESOLVE/service=%s/version=1.0.0/envContext=%s/routeOffer=DEFAULT"
+#    dme2Search: DME2SEARCH
+#    dme2Resolve: DME2RESOLVE
+
+excludedPolicyTypesMapping:
+# VF:
+#  - a.b.c
+#  - c.d.e
+#CR:
+#  - x.y.z
+
+excludedGroupTypesMapping:
+  CR:
+    - org.openecomp.groups.VfModule
+    - org.openecomp.groups.heat.HeatStack
+    - org.openecomp.groups.Group
+    - tosca.groups.Root
+  PNF:
+    - org.openecomp.groups.VfModule
+    - org.openecomp.groups.heat.HeatStack
+    - org.openecomp.groups.Group
+    - tosca.groups.Root
+  VF:
+    - org.openecomp.groups.VfModule
+    - org.openecomp.groups.heat.HeatStack
+    - org.openecomp.groups.Group
+    - tosca.groups.Root
+  Service:
+    - org.openecomp.groups.VfModule
+    - org.openecomp.groups.heat.HeatStack
+    - org.openecomp.groups.Group
+    - tosca.groups.Root
+
+healthStatusExclude:
+  - DE
+  - DMAAP
+  - DMAAP_PRODUCER
+  - ON_BOARDING
+  - DCAE
+  - PORTAL
+  - External API
+
+#Auto Healing
+enableAutoHealing: false
+appVersion: {{ .Values.appVersion }}
+
+artifactGeneratorConfig: Artifact-Generator.properties
+resourcesForUpgrade:
+  8.0:
+    - org.openecomp.resource.cp.extCP
+    - tosca.nodes.network.Network
+    - tosca.nodes.network.Port
+    - org.openecomp.resource.cp.nodes.network.SubInterface
+skipUpgradeFailedVfs: true
+skipUpgradeVSPs: true
+autoHealingOwner: jh0003
+supportAllottedResourcesAndProxy: true
+deleteLockTimeoutInSeconds: 60
+maxDeleteComponents: 10
+
+# This configuration entry lists all node type names prefix that shall be allowed on SDC.
+definedResourceNamespace:
+  - org.openecomp.resource.
+  - org.onap.policy.clamp.acm.
+  - tosca.nodes.
+
+# This configuration entry lists all Directives values that shall be allowed on SDC.
+directives:
+  - select
+  - selectable
+  - substitute
+  - substitutable
+
+externalCsarStore:
+  storageType: NONE # NONE, MINIO
+  endpoint:
+    host: 127.0.0.1
+    port: 9000
+    secure: false
+  credentials:
+    accessKey: "login"
+    secretKey: "password"
+  tempPath: "/home/onap/temp/"
+  uploadPartSize: 200000000
+
+#This configuration specifies the delimiter used to differentiate instance name and count
+componentInstanceCounterDelimiter: " "
+
+# Comma separated list of excluded URLs by the DataValidatorFilter
+dataValidatorFilterExcludedUrls: "/healthCheck,/followed,/authorize"
+
+#Space separated list of permitted ancestors
+permittedAncestors: {{ .Values.permittedAncestors }}
diff --git a/kubernetes/sdc/components/sdc-be/resources/config/catalog-be/distribution-engine-configuration.yaml b/kubernetes/sdc/components/sdc-be/resources/config/catalog-be/distribution-engine-configuration.yaml
new file mode 100644 (file)
index 0000000..f096b13
--- /dev/null
@@ -0,0 +1,84 @@
+uebServers:
+  - no-message-router.onap
+  - no-message-router.onap
+
+uebPublicKey: {{ .Values.uebPublicKey }}
+uebSecretKey: {{ .Values.uebSecretKey }}
+
+distributionNotifTopicName: {{ if .Values.distributionNotifTopicName }}{{ .Values.distributionNotifTopicName }}{{- else }}SDC-DISTR-NOTIF-TOPIC{{- end }}
+
+distributionStatusTopicName: {{ if .Values.distributionStatusTopicName }}{{ .Values.distributionStatusTopicName }}{{- else }}SDC-DISTR-STATUS-TOPIC{{- end }}
+
+kafkaBootStrapServers: {{ .Values.kafkaBootStrapServers }}
+
+initRetryIntervalSec: 5
+initMaxIntervalSec: 60
+
+distribNotifServiceArtifactTypes:
+  info:
+    - MURANO-PKG
+
+distribNotifResourceArtifactTypes:
+  lifecycle:
+    - HEAT
+    - DG-XML
+
+environments:
+  - {{ .Values.chefEnvironment }}
+
+distributionStatusTopic:
+  pollingIntervalSec: 60
+  fetchTimeSec: 15
+  consumerGroup: sdc-{{ .Values.chefEnvironment }}
+  consumerId: sdc-{{ .Values.chefEnvironment }}1
+
+
+distributionNotificationTopic:
+  minThreadPoolSize: 0
+  maxThreadPoolSize: 10
+  maxWaitingAfterSendingSeconds: 5
+
+createTopic:
+  partitionCount: 1
+  replicationCount: 1
+
+startDistributionEngine: true
+
+#This is false by default, since ONAP Dmaap currently doesn't support https
+useHttpsWithDmaap: false
+opEnvRecoveryIntervalSec: 180
+allowedTimeBeforeStaleSec: 300
+
+aaiConfig:
+  httpRequestConfig:
+    serverRootUrl: https://localhost:8443
+    resourceNamespaces:
+      operationalEnvironments: /aai/v12/cloud-infrastructure/operational-environments
+
+  httpClientConfig:
+    timeouts:
+      readTimeoutMs: 5000
+      connectTimeoutMs: 1000
+    clientCertificate:
+      keyStore: /app/jetty/base/be/etc/non-prod.jks
+      keyStorePassword: hmXYcznAljMSisdy8zgcag==
+    headers:
+      X-FromAppId: asdc
+    numOfRetries: 3
+
+msoConfig:
+  httpRequestConfig:
+    serverRootUrl: http://127.0.0.1:8080/onap/mso/infra/modelDistributions/v1
+    resourceNamespaces:
+      distributions: /distributions
+
+  httpClientConfig:
+    timeouts:
+      readTimeoutMs: 2000
+      connectTimeoutMs: 500
+    basicAuthorization:
+      userName: asdc
+      password: OTLEp5lfVhYdyw5EAtTUBQ==
+    numOfRetries: 3
+
+currentArtifactInstallationTimeout: 120
diff --git a/kubernetes/sdc/components/sdc-be/resources/config/catalog-be/janusgraph.properties b/kubernetes/sdc/components/sdc-be/resources/config/catalog-be/janusgraph.properties
new file mode 100644 (file)
index 0000000..6e4a43f
--- /dev/null
@@ -0,0 +1,33 @@
+storage.backend={{ .Values.janusgraph.storage.backend }}
+storage.hostname={{ .Values.global.sdc_cassandra.serviceName }}.{{ include "common.namespace" . }}.svc.cluster.local
+storage.port={{ .Values.cassandra.port }}
+storage.username={{ .Values.cassandra.cassandraUsername }}
+storage.password={{ .Values.cassandra.cassandraPassword }}
+storage.connection-timeout={{ .Values.janusgraph.storage.connectionTimeout }}
+storage.cql.keyspace={{ .Values.janusgraph.keyspace }}
+storage.cql.ssl.enabled={{ .Values.cassandra.cassandraSslEnabled }}
+{{- if .Values.cassandra.cassandraSslEnabled }}
+storage.cql.ssl.keystore.location={{ .Values.cassandra.keystoreLocation }}
+storage.cql.ssl.keystore.password={{ .Values.cassandra.keystorePassword }}
+storage.cql.ssl.truststore.location={{ .Values.cassandra.truststoreLocation }}
+storage.cql.ssl.truststore.password={{ .Values.cassandra.truststorePassword }}
+{{- end }}
+
+storage.cql.read-consistency-level={{ .Values.cassandra.readConsistencyLevel }}
+storage.cql.write-consistency-level={{ .Values.cassandra.writeConsistencyLevel }}
+storage.cql.replication-strategy-class=NetworkTopologyStrategy
+
+storage.cql.replication-strategy-options={{ .Values.global.sdc_cassandra.dataCenter }},{{ .Values.global.sdc_cassandra.replicaCount }}
+storage.cql.local-datacenter={{ .Values.global.sdc_cassandra.dataCenter }}
+
+cache.db-cache={{ .Values.janusgraph.dbCache.enabled }}
+{{- if .Values.janusgraph.dbCache.enabled }}
+cache.db-cache-clean-wait={{ .Values.janusgraph.dbCache.cleanWait }}
+cache.db-cache-time={{ .Values.janusgraph.dbCache.time }}
+cache.db-cache-size={{ .Values.janusgraph.dbCache.size }}
+{{- end }}
+
+cache.tx-cache-size={{ .Values.janusgraph.txCache.size }}
+
+storage.lock.retries={{ .Values.janusgraph.storage.lockRetries }}
+graph.replace-instance-if-exists={{ .Values.janusgraph.graph.replaceInstance }}
index fcbca71..59c34b9 100644 (file)
@@ -34,6 +34,9 @@
     <property name="pattern"
         value="%d{&quot;yyyy-MM-dd'T'HH:mm:ss.SSSXXX&quot;, UTC}\t[%thread]\t%-5level\t%logger{36}\t%replace(%replace(%replace(%mdc){'\t','\\\\t'}){', ','\t'}){'\n', '\\\\n'}\t%replace(%replace(%msg){'\n', '\\\\n'}){'\t','\\\\t'}%n"/>
 
+    <logger name="org.janusgraph.graphdb.transaction" level="ERROR" />
+    <logger name="org.openecomp.sdc.be.components.impl.CassandraHealthCheck" level="WARN" />
+    <logger name="org.onap.portalsdk.core.onboarding.listener.PortalTimeoutHandler" level="WARN" />
     <!-- STDOUT -->
     <appender class="ch.qos.logback.core.ConsoleAppender" name="STDOUT">
         <encoder>
         <queueSize>${queueSize}</queueSize>
         <appender-ref ref="AUDIT_ROLLING"/>
     </appender>
-    <root level="INFO">
-        <appender-ref ref="ASYNC_ERROR"/>
+    <root level="{{ .Values.logback.rootLogLevel }}">
+        <!--<appender-ref ref="ASYNC_ERROR"/>
         <appender-ref ref="ASYNC_DEBUG"/>
         <appender-ref ref="ASYNC_AUDIT"/>
-        <appender-ref ref="ASYNC_TRANSACTION"/>
+        <<appender-ref ref="ASYNC_TRANSACTION"/>
         <if condition='property("enable-all-log").equalsIgnoreCase("true")'>
             <then>
                 <appender-ref ref="ALL_ROLLING"/>
             </then>
-        </if>
+        </if>-->
         <appender-ref ref="STDOUT"/>
         <appender-ref ref="STDERR"/>
     </root>
diff --git a/kubernetes/sdc/components/sdc-be/resources/config/ready-probe.sh b/kubernetes/sdc/components/sdc-be/resources/config/ready-probe.sh
new file mode 100644 (file)
index 0000000..4bad479
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/sh
+health_check_http_code=$(curl -k --max-time 5 -o /dev/null -w '%{http_code}' {{ if .Values.global.disableHttp }}https://127.0.0.1:{{ .Values.beSslPort }}{{- else -}}http://127.0.0.1:{{ .Values.beHttpPort }}{{- end -}}/sdc2/rest/healthCheck)
+
+if [ "$health_check_http_code" -eq 200 ]; then
+  exit 0
+else
+  echo "Health check http status: $health_check_http_code"
+  exit 1
+fi
diff --git a/kubernetes/sdc/components/sdc-be/resources/config/resource/key.properties b/kubernetes/sdc/components/sdc-be/resources/config/resource/key.properties
new file mode 100644 (file)
index 0000000..72fd2f6
--- /dev/null
@@ -0,0 +1,41 @@
+###
+# ============LICENSE_START==========================================
+# ONAP Portal SDK
+# ===================================================================
+# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+# ===================================================================
+#
+# Unless otherwise specified, all software contained herein is licensed
+# under the Apache License, Version 2.0 (the ?License?);
+# you may not use this software 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.
+#
+# Unless otherwise specified, all documentation contained herein is licensed
+# under the Creative Commons License, Attribution 4.0 Intl. (the ?License?);
+# you may not use this documentation except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#             https://creativecommons.org/licenses/by/4.0/
+#
+# Unless required by applicable law or agreed to in writing, documentation
+# 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.
+#
+# ============LICENSE_END============================================
+#
+#
+###
+
+# Properties read by the ECOMP Framework library (epsdk-fw)
+
+cipher.enc.key = AGLDdG4D04BKm2IxIWEr8o==
diff --git a/kubernetes/sdc/components/sdc-be/resources/config/resource/portal.properties b/kubernetes/sdc/components/sdc-be/resources/config/resource/portal.properties
new file mode 100644 (file)
index 0000000..c3ba1b1
--- /dev/null
@@ -0,0 +1,89 @@
+###
+# ============LICENSE_START==========================================
+# ONAP Portal SDK
+# ===================================================================
+# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+# ===================================================================
+#
+# Unless otherwise specified, all software contained herein is licensed
+# under the Apache License, Version 2.0 (the ?License?);
+# you may not use this software 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.
+#
+# Unless otherwise specified, all documentation contained herein is licensed
+# under the Creative Commons License, Attribution 4.0 Intl. (the ?License?);
+# you may not use this documentation except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#             https://creativecommons.org/licenses/by/4.0/
+#
+# Unless required by applicable law or agreed to in writing, documentation
+# 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.
+#
+# ============LICENSE_END============================================
+#
+#
+###
+# Properties read by ECOMP Framework library, ecompFW.jar
+
+##########################################################################
+# The following properties should NOT be changed by partner applications.
+##########################################################################
+
+portal.api.prefix = /api
+max.idle.time = 5
+user.attribute.name = user_attribute
+
+#Use REST API instead of UEB to fetch the functional menu data
+use_rest_for_functional_menu=true
+
+
+##########################################################################
+# The following properties MUST be changed by partner applications.
+##########################################################################
+
+# Name of java class that implements the OnBoardingApiService interface.
+portal.api.impl.class = org.openecomp.sdc.be.ecomp.PortalRestApiCentralServiceImpl
+role_access_centralized = remote
+
+# Cookie set by CSP-SSO
+#csp_cookie_name = onapCsp
+
+# CSP setting, most use PROD; DEV also recognized
+csp_gate_keeper_prod_key = PROD
+
+# URL of the Portal where this app is onboarded
+ecomp_redirect_url = https://portal-app.onap:30225/ONAPPORTAL/login.htm
+
+# URL of the ECOMP Portal REST API
+ecomp_rest_url = https://portal-app.onap:8443/ONAPPORTAL/auxapi
+
+# Connection and Read timeout values
+ext_req_connection_timeout = 15000
+ext_req_read_timeout = 20000
+
+# Name of java class that implements the OnBoardingApiService interface.
+portal.api.impl.class = org.openecomp.sdc.be.ecomp.PortalRestApiCentralServiceImpl
+
+#Portal user & key
+portal_app_name = Ipwxi2oLvDxctMA1royaRw1W0jhucLx+grHzci3ePIA=
+portal_pass = j85yNhyIs7zKYbR1VlwEfNhS6b7Om4l0Gx5O8931sCI=
+portal_user = Ipwxi2oLvDxctMA1royaRw1W0jhucLx+grHzci3ePIA=
+
+
+# UEB key generated while on-boarding
+ueb_app_key = ""
+
+# Applications do not need to run a UEB listener after 1607.
+ueb_listeners_enable = false
diff --git a/kubernetes/sdc/components/sdc-be/resources/config/start.d/http.ini b/kubernetes/sdc/components/sdc-be/resources/config/start.d/http.ini
new file mode 100644 (file)
index 0000000..e637e23
--- /dev/null
@@ -0,0 +1,29 @@
+# ---------------------------------------
+# Module: http
+--module=http
+
+### HTTP Connector Configuration
+
+## Connector host/address to bind to
+# jetty.http.host=0.0.0.0
+
+## Connector port to listen on
+jetty.http.port= {{ .Values.jetty.httpPort }}
+
+## Connector idle timeout in milliseconds
+jetty.http.idleTimeout=30000
+
+## Connector socket linger time in seconds (-1 to disable)
+# jetty.http.soLingerTime=-1
+
+## Number of acceptors (-1 picks default based on number of cores)
+# jetty.http.acceptors=-1
+
+## Number of selectors (-1 picks default based on number of cores)
+# jetty.http.selectors=-1
+
+## ServerSocketChannel backlog (0 picks platform default)
+# jetty.http.acceptorQueueSize=0
+
+## Thread priority delta to give to acceptor threads
+# jetty.http.acceptorPriorityDelta=0
diff --git a/kubernetes/sdc/components/sdc-be/resources/config/start.d/https.ini b/kubernetes/sdc/components/sdc-be/resources/config/start.d/https.ini
new file mode 100644 (file)
index 0000000..68c36e8
--- /dev/null
@@ -0,0 +1,29 @@
+# ---------------------------------------
+# Module: https
+--module=https
+
+### HTTPS Connector Configuration
+
+## Connector host/address to bind to
+# jetty.https.host=0.0.0.0
+
+## Connector port to listen on
+jetty.https.port={{ .Values.jetty.httpsPort }}
+
+## Connector idle timeout in milliseconds
+jetty.https.idleTimeout=30000
+
+## Connector socket linger time in seconds (-1 to disable)
+# jetty.https.soLingerTime=-1
+
+## Number of acceptors (-1 picks default based on number of cores)
+# jetty.https.acceptors=-1
+
+## Number of selectors (-1 picks default based on number of cores)
+# jetty.https.selectors=-1
+
+## ServerSocketChannel backlog (0 picks platform default)
+# jetty.https.acceptorQueueSize=0
+
+## Thread priority delta to give to acceptor threads
+# jetty.https.acceptorPriorityDelta=0
diff --git a/kubernetes/sdc/components/sdc-be/resources/config/start.d/ssl.ini b/kubernetes/sdc/components/sdc-be/resources/config/start.d/ssl.ini
new file mode 100644 (file)
index 0000000..4394159
--- /dev/null
@@ -0,0 +1,100 @@
+# ---------------------------------------
+# Module: ssl
+--module=ssl
+
+### TLS(SSL) Connector Configuration
+
+## Connector host/address to bind to
+# jetty.ssl.host=0.0.0.0
+
+## Connector port to listen on
+jetty.ssl.port={{ .Values.jetty.httpsPort }}
+
+## Connector idle timeout in milliseconds
+# jetty.ssl.idleTimeout=30000
+
+## Connector socket linger time in seconds (-1 to disable)
+# jetty.ssl.soLingerTime=-1
+
+## Number of acceptors (-1 picks default based on number of cores)
+# jetty.ssl.acceptors=-1
+
+## Number of selectors (-1 picks default based on number of cores)
+# jetty.ssl.selectors=-1
+
+## ServerSocketChannel backlog (0 picks platform default)
+# jetty.ssl.acceptorQueueSize=0
+
+## Thread priority delta to give to acceptor threads
+# jetty.ssl.acceptorPriorityDelta=0
+
+## Whether request host names are checked to match any SNI names
+# jetty.ssl.sniHostCheck=true
+
+## max age in seconds for a Strict-Transport-Security response header (default -1)
+# jetty.ssl.stsMaxAgeSeconds=31536000
+
+## include subdomain property in any Strict-Transport-Security header (default false)
+# jetty.ssl.stsIncludeSubdomains=true
+
+### SslContextFactory Configuration
+## Note that OBF passwords are not secure, just protected from casual observation
+## See http://www.eclipse.org/jetty/documentation/current/configuring-security-secure-passwords.html
+
+## Keystore file path (relative to $jetty.base)
+{{- if .Values.jetty.keystorePath }}
+jetty.sslContext.keyStorePath={{ .Values.jetty.keystorePath }}
+{{- end }}
+
+## Truststore file path (relative to $jetty.base)
+{{- if .Values.jetty.truststorePath }}
+i
+jetty.sslContext.trustStorePath={{ .Values.jetty.truststorePath }}
+{{- end }}
+
+## Keystore password
+{{- if .Values.jetty.keystorePassword }}
+jetty.sslContext.keyStorePassword={{ .Values.jetty.keystorePassword }}
+{{- end }}
+
+## Keystore type and provider
+# jetty.sslContext.keyStoreType=JKS
+# jetty.sslContext.keyStoreProvider=
+
+## KeyManager password
+{{- if .Values.jetty.keystorePassword }}
+jetty.sslContext.keyManagerPassword={{ .Values.jetty.keystorePassword }}
+{{- end }}
+
+## Truststore password
+# tp{{ .Values.jetty.truststorePassword }}end
+# kp{{ .Values.jetty.keystorePassword }}end
+{{- if .Values.jetty.truststorePassword }}
+jetty.sslContext.trustStorePassword={{ .Values.jetty.truststorePassword }}
+{{- end }}
+
+## Truststore type and provider
+# jetty.sslContext.trustStoreType=JKS
+# jetty.sslContext.trustStoreProvider=
+
+## whether client certificate authentication is required
+jetty.sslContext.needClientAuth={{ .Values.jetty.truststorePassword | quote | default "false" | not | toString }}
+
+## Whether client certificate authentication is desired
+# jetty.sslContext.wantClientAuth=false
+
+## Whether cipher order is significant (since java 8 only)
+# jetty.sslContext.useCipherSuitesOrder=true
+
+## To configure Includes / Excludes for Cipher Suites or Protocols see tweak-ssl.xml example at
+## https://www.eclipse.org/jetty/documentation/current/configuring-ssl.html#configuring-sslcontextfactory-cipherSuites
+
+## Set the size of the SslSession cache
+# jetty.sslContext.sslSessionCacheSize=-1
+
+## Set the timeout (in seconds) of the SslSession cache timeout
+# jetty.sslContext.sslSessionTimeout=-1
+
+## Allow SSL renegotiation
+# jetty.sslContext.renegotiationAllowed=true
+# jetty.sslContext.renegotiationLimit=5
diff --git a/kubernetes/sdc/components/sdc-be/templates/autoscaling.yaml b/kubernetes/sdc/components/sdc-be/templates/autoscaling.yaml
new file mode 100644 (file)
index 0000000..b7f2653
--- /dev/null
@@ -0,0 +1,32 @@
+{{- if .Values.autoscaling.enabled }}
+apiVersion: autoscaling/v2
+kind: HorizontalPodAutoscaler
+metadata:
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
+  labels: {{- include "common.labels" . | nindent 4 }}
+spec:
+  scaleTargetRef:
+    apiVersion: apps/v1
+    kind: Deployment
+    name: {{ include "common.fullname" . }}
+  minReplicas: {{ .Values.autoscaling.minReplicas }}
+  maxReplicas: {{ .Values.autoscaling.maxReplicas }}
+  metrics:
+    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}
+    - type: Resource
+      resource:
+        name: cpu
+        target:
+          type: Utilization
+          averageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}
+    {{- end }}
+    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}
+    - type: Resource
+      resource:
+        name: memory
+        target:
+          type: Utilization
+          averageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}
+    {{- end }}
+{{- end }}
index 332cd74..77b70a2 100644 (file)
@@ -27,5 +27,81 @@ metadata:
     heritage: {{ .Release.Service }}
 data:
 {{ tpl (.Files.Glob "resources/config/logging/*").AsConfig . | indent 2 }}
-
-
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ include "common.release" . }}-sdc-http-be-configmap
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ include "common.release" . }}
+    heritage: {{ .Release.Service }}
+data:
+{{ tpl (.Files.Glob "resources/config/start.d/http.ini").AsConfig . | indent 2 }}
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ include "common.release" . }}-sdc-https-be-configmap
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ include "common.release" . }}
+    heritage: {{ .Release.Service }}
+data:
+{{ tpl (.Files.Glob "resources/config/start.d/https.ini").AsConfig . | indent 2 }}
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ include "common.release" . }}-sdc-ssl-be-configmap
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ include "common.release" . }}
+    heritage: {{ .Release.Service }}
+data:
+{{ tpl (.Files.Glob "resources/config/start.d/ssl.ini").AsConfig . | indent 2 }}
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ include "common.release" . }}-sdc-catalog-be-configmap
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ include "common.release" . }}
+    heritage: {{ .Release.Service }}
+data:
+{{ tpl (.Files.Glob "resources/config/catalog-be/*").AsConfig . | indent 2 }}
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ include "common.release" . }}-sdc-catalog-be-resource-configmap
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ include "common.release" . }}
+    heritage: {{ .Release.Service }}
+data:
+{{ tpl (.Files.Glob "resources/config/resource/*").AsConfig . | indent 2 }}
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ include "common.release" . }}-sdc-be-ready-probe-configmap
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ include "common.release" . }}
+    heritage: {{ .Release.Service }}
+data:
+{{ tpl (.Files.Glob "resources/config/ready-probe.sh").AsConfig . | indent 2 }}
index 229d423..ad635a1 100644 (file)
@@ -20,66 +20,47 @@ kind: Deployment
 metadata: {{- include "common.resourceMetadata" . | nindent 2 }}
 spec:
   selector: {{- include "common.selectors" . | nindent 4 }}
+  {{- if not .Values.autoscaling.enabled }}
   replicas: {{ .Values.replicaCount }}
+  {{- end }}
+  revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
+  minReadySeconds: {{ .Values.minReadySeconds }}
+  strategy:
+    type: {{ .Values.updateStrategy.type }}
+    rollingUpdate:
+      maxUnavailable: {{ .Values.updateStrategy.maxUnavailable }}
+      maxSurge: {{ .Values.updateStrategy.maxSurge }}
   template:
     metadata: {{- include "common.templateMetadata" . | nindent 6 }}
     spec:
       initContainers:
-      - name: {{ include "common.name" . }}-readiness
-        command:
-        - /app/ready.py
-        args:
-        - --service-name
-        - sdc-onboarding-be
-        {{- if not .Values.global.kafka.useKafka }}
-        - --service-name
-        - message-router
-        {{- end }}
-        env:
-        - name: NAMESPACE
-          valueFrom:
-            fieldRef:
-              apiVersion: v1
-              fieldPath: metadata.namespace
-        image: {{ include "repositoryGenerator.image.readiness" . }}
-        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-        resources:
-          limits:
-            cpu: "100m"
-            memory: "500Mi"
-          requests:
-            cpu: "3m"
-            memory: "20Mi"
-      - name: {{ include "common.name" . }}-job-completion
-        image: {{ include "repositoryGenerator.image.readiness" . }}
-        imagePullPolicy: "{{ .Values.global.pullPolicy | default .Values.pullPolicy }}"
-        command:
-        - /app/ready.py
-        args:
-        - --job-name
-        - {{ include "common.release" . }}-sdc-onboarding-be
-        env:
-        - name: NAMESPACE
-          valueFrom:
-            fieldRef:
-              apiVersion: v1
-              fieldPath: metadata.namespace
-        resources:
-          limits:
-            cpu: "100m"
-            memory: "500Mi"
-          requests:
-            cpu: "3m"
-            memory: "20Mi"
+        {{ include "common.readinessCheck.waitFor" (dict "dot" . "wait_for" .Values.readinessCheck.wait_for_service) | nindent 8 }}
+        - name: {{ include "common.name" . }}-copy-jetty
+          image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
+          imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+          command: ["/bin/sh","-c"]
+          args: ['cp -a /app/jetty/ /app/jetty_rw/; mkdir /app/jetty_rw/jetty/ruby_temp']
+          resources:
+            limits:
+              cpu: 400m
+              memory: 400Mi
+            requests:
+              cpu: 30m
+              memory: 200Mi
+          {{ include "common.containerSecurityContext" . | indent 10 | trim }}
+          volumeMounts:
+            - name: {{ include "common.fullname" . }}-jetty
+              mountPath: /app/jetty_rw
       containers:
         - name: {{ include "common.name" . }}
           image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
           ports: {{ include "common.containerPorts" . | nindent 12  }}
+          {{ include "common.containerSecurityContext" . | indent 10 | trim }}
           {{ if eq .Values.liveness.enabled true }}
           livenessProbe:
             httpGet:
-              path: /sdc2/rest/healthCheck
+              path: {{ .Values.liveness.path }}
               port: {{ .Values.service.internalPort }}
             initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
             periodSeconds: {{ .Values.liveness.periodSeconds }}
@@ -89,7 +70,7 @@ spec:
           {{ end }}
           readinessProbe:
             httpGet:
-              path: /sdc2/rest/healthCheck
+              path: {{ .Values.readiness.path }}
               port: {{ .Values.service.internalPort }}
             initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
             periodSeconds: {{ .Values.readiness.periodSeconds }}
@@ -98,7 +79,7 @@ spec:
             failureThreshold: {{ .Values.readiness.failureThreshold }}
           startupProbe:
             httpGet:
-              path: /sdc2/rest/healthCheck
+              path: {{ .Values.startup.path }}
               port: {{ .Values.service.internalPort }}
             initialDelaySeconds: {{ .Values.startup.initialDelaySeconds }}
             periodSeconds: {{ .Values.startup.periodSeconds }}
@@ -107,12 +88,28 @@ spec:
             failureThreshold: {{ .Values.startup.failureThreshold }}
           resources: {{ include "common.resources" . | nindent 12 }}
           env:
-          - name: ENVNAME
-            value: {{ .Values.env.name }}
+          - name: TMPDIR
+            value: '/app/jetty/ruby_temp'
           - name: JAVA_OPTIONS
             value: {{ .Values.config.javaOptions }}
           - name: cassandra_ssl_enabled
             value: {{ .Values.config.cassandraSslEnabled | quote }}
+          - name: TLS_CERT
+            value: {{ .Values.be.tlsCert }}
+          - name: TLS_KEY
+            value: {{ .Values.be.tlsKey }}
+          - name: TLS_PASSWORD
+            value: {{ .Values.be.tlsPassword }}
+          - name: KEYSTORE_PATH
+            value: {{ .Values.be.keystorePath }}
+          - name: KEYSTORE_PASSWORD
+            value: {{ .Values.be.keystorePassword }}
+          - name: CA_CERT
+            value: {{ .Values.be.caCert }}
+          - name: TRUSTSTORE_PATH
+            value: {{ .Values.be.truststorePath }}
+          - name: TRUSTSTORE_PASSWORD
+            value: {{ .Values.be.truststorePassword }}
           - name: HOST_IP
             valueFrom:
               fieldRef:
@@ -127,29 +124,88 @@ spec:
             value: {{ .Values.global.kafka.useKafka | quote }}
           {{- end }}
           volumeMounts:
-          - name: sdc-environments
-            mountPath: /app/jetty/chef-solo/environments/
-          - name: logs
+          - name: {{ include "common.fullname" . }}-jetty
+            mountPath: /app/jetty
+            subPath: jetty
+          - name: {{ include "common.fullname" . }}-logs
             mountPath: /var/log/onap
+          - name: {{ include "common.fullname" . }}-tmp
+            mountPath: /tmp
           - name: logback
             mountPath: /tmp/logback.xml
             subPath: logback.xml
+          - name: http-config
+            mountPath: /app/jetty/start.d/http.ini
+            subPath: http.ini
+          - name: https-config
+            mountPath: /app/jetty/start.d/https.ini
+            subPath: https.ini
+          - name: ssl-config
+            mountPath: /app/jetty/start.d/ssl.ini
+            subPath: ssl.ini
+          - name: catalog-be-config
+            mountPath: /app/jetty/config/catalog-be/janusgraph.properties
+            subPath: janusgraph.properties
+          - name: catalog-be-config
+            mountPath: /app/jetty/config/catalog-be/distribution-engine-configuration.yaml
+            subPath: distribution-engine-configuration.yaml
+          - name: catalog-be-config
+            mountPath: /app/jetty/config/catalog-be/configuration.yaml
+            subPath: configuration.yaml
+          - name: catalog-be-resource-config
+            mountPath: /app/jetty/resources/key.properties
+            subPath: key.properties
+          - name: catalog-be-resource-config
+            mountPath: /app/jetty/resources/portal.properties
+            subPath: portal.properties
+          - name: ready-probe-config
+            mountPath: /app/jetty/ready-probe.sh
+            subPath: ready-probe.sh
+
           lifecycle:
             postStart:
               exec:
-                command: ["/bin/sh", "-c", "export LOG=wait_logback.log; touch $LOG; export SRC=/tmp/logback.xml; export DST=/app/jetty/config/catalog-be/; while [ ! -e $DST ]; do echo 'Waiting for $DST...' >> $LOG; sleep 5; done; sleep 2; /bin/cp -f $SRC $DST; echo 'Done' >> $LOG"]
+                command: ["/bin/sh", "-c", "export SRC=/tmp/logback.xml; export DST=/app/jetty/config/catalog-be/; while [ ! -e $DST ]; do echo 'Waiting for $DST...'; sleep 5; done; sleep 2; /bin/cp -f $SRC $DST; echo 'Done copying logback.xml' ; echo 'Running BE_3_setup_key_and_trust_store.sh...' ; /app/jetty/BE_3_setup_key_and_trust_store.sh ; echo 'BE_3_setup_key_and_trust_store.sh completed' "]
         # side car containers
         {{ include "common.log.sidecar" . | nindent 8 }}
       serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
       volumes:
       {{ include "common.log.volumes" (dict "dot" . "configMapNamePrefix" (tpl .Values.logConfigMapNamePrefix .)) | nindent 6 }}
       - name: logback
         configMap:
           name : {{ include "common.fullname" . }}-logging-configmap
-      - name: sdc-environments
+      - name: {{ include "common.fullname" . }}-logs
+        emptyDir:
+          sizeLimit: {{ .Values.volumes.logSizeLimit }}
+      - name: {{ include "common.fullname" . }}-tmp
+        emptyDir:
+          sizeLimit: {{ .Values.volumes.tmpSizeLimit }}
+      - name: {{ include "common.fullname" . }}-jetty
+        emptyDir:
+          sizeLimit: {{ .Values.volumes.jettySizeLimit }}
+      - name: http-config
+        configMap:
+          name: {{ include "common.release" . }}-sdc-http-be-configmap
+          defaultMode: 0755
+      - name: https-config
+        configMap:
+          name: {{ include "common.release" . }}-sdc-https-be-configmap
+          defaultMode: 0755
+      - name: ssl-config
+        configMap:
+          name: {{ include "common.release" . }}-sdc-ssl-be-configmap
+          defaultMode: 0755
+      - name: catalog-be-config
+        configMap:
+          name: {{ include "common.release" . }}-sdc-catalog-be-configmap
+          defaultMode: 0755
+      - name: catalog-be-resource-config
+        configMap:
+          name: {{ include "common.release" . }}-sdc-catalog-be-resource-configmap
+          defaultMode: 0755
+      - name: ready-probe-config
         configMap:
-          name: {{ include "common.release" . }}-sdc-environments-configmap
+          name: {{ include "common.release" . }}-sdc-be-ready-probe-configmap
           defaultMode: 0755
-      - name: logs
-        emptyDir: {}
       {{- include "common.imagePullSecrets" . | nindent 6 }}
index 30400a8..c14de0b 100644 (file)
@@ -1,6 +1,7 @@
 {{/*
 # Copyright © 2017 Amdocs, AT&T, Bell Canada
 # Modifications Copyright © 2018 ZTE
+# Modifications Copyright © 2025 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 
 apiVersion: batch/v1
 kind: Job
-metadata: {{- include "common.resourceMetadata" . | nindent 2 }}
+metadata:
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    release: {{ include "common.release" . }}
+  {{- if .Values.jobAnnotations }}
+  annotations:  {{- include "common.tplValue" (dict "value" .Values.jobAnnotations "context" $) | nindent 4 }}
+  {{- end }}
 spec:
   backoffLimit: 20
   template:
@@ -29,53 +38,64 @@ spec:
         app.kubernetes.io/managed-by: {{ .Release.Service }}
     spec:
       restartPolicy: Never
+      securityContext:
+        {{- toYaml .Values.jobPodSecurityContext | nindent 8 }}
       initContainers:
-      - name: {{ include "common.name" . }}-init-readiness
-        image: {{ include "repositoryGenerator.image.readiness" . }}
-        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-        command:
-        - /app/ready.py
-        args:
-        - --service-name
-        - sdc-be
-        - "-t"
-        - "35"
-        env:
-        - name: NAMESPACE
-          valueFrom:
-            fieldRef:
-              apiVersion: v1
-              fieldPath: metadata.namespace
-        resources:
-          limits:
-            cpu: "100m"
-            memory: "500Mi"
-          requests:
-            cpu: "3m"
-            memory: "20Mi"
+        {{ include "common.readinessCheck.waitFor" (dict "dot" . "wait_for" .Values.readinessCheck.job_wait_for) | nindent 8 }}
       containers:
       - name: {{ include "common.name" . }}-job
         image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.backendInitImage }}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        {{ include "common.containerSecurityContext" . | indent 10 | trim }}
+        command:
+        - /bin/sh
+        - -c
+        - |
+          /home/onap/create_consumer_and_user.sh
+          /home/onap/check_backend.sh
+          /home/onap/import_normatives.sh
         volumeMounts:
         - name: {{ include "common.fullname" . }}-environments
           mountPath: /home/onap/chef-solo/environments/
-        - name: sdc-logs
+        - name: {{ include "common.fullname" . }}-logs
           mountPath: /home/onap/logs
+        - name: {{ include "common.fullname" . }}-tmp
+          mountPath: /tmp
+        - name: {{ include "common.fullname" . }}-var-tmp
+          mountPath: /var/tmp
         env:
+        - name: TMPDIR
+          value: '/home/onap/chef-solo/ruby_temp'
         - name: ENVNAME
           value: {{ .Values.env.name }}
         - name: HOST_IP
           valueFrom:
             fieldRef:
               fieldPath: status.podIP
+        - name: BE_IP
+          value: {{ .Values.beInit.beIp }}
+        - name: DISABLE_HTTP
+          value: {{ .Values.disableHttp | quote }}
+        - name: BE_HTTPS_PORT
+          value: {{ .Values.beSslPort | quote }}
+        - name: BE_HTTP_PORT
+          value: {{ .Values.beHttpPort | quote }}
+        - name: TLS_CERT
+          value: {{ .Values.beInit.tlsCert }}
+        - name: TLS_KEY
+          value: {{ .Values.beInit.tlsKey }}
+        - name: TLS_KEY_PW
+          value: {{ .Values.beInit.tlsKeyPw }}
+        - name: CA_CERT
+          value: {{ .Values.beInit.caCert }}
+        - name: BASIC_AUTH_ENABLED
+          value: {{ .Values.basicAuth.enabled | quote }}
+        - name: BASIC_AUTH_USER
+          value: {{ .Values.basicAuth.userName }}
+        - name: BASIC_AUTH_PASS
+          value: {{ .Values.basicAuth.userPass }}
         resources:
-          limits:
-            cpu: "800m"
-            memory: "1Gi"
-          requests:
-            cpu: "200m"
-            memory: "200Mi"
+          {{- toYaml .Values.resources_initContainer | nindent 12 }}
       {{ include "common.waitForJobContainer" . | indent 6 | trim }}
       serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
       volumes:
@@ -83,6 +103,13 @@ spec:
           configMap:
             name: {{ include "common.release" . }}-sdc-environments-configmap
             defaultMode: 0755
-        - name: sdc-logs
-          emptyDir: {}
+        - name: {{ include "common.fullname" . }}-logs
+          emptyDir:
+            sizeLimit: {{ .Values.volumes.logSizeLimit }}
+        - name: {{ include "common.fullname" . }}-tmp
+          emptyDir:
+            sizeLimit: {{ .Values.volumes.tmpSizeLimit }}
+        - name: {{ include "common.fullname" . }}-var-tmp
+          emptyDir:
+            sizeLimit: {{ .Values.volumes.varTmpSizeLimit }}
       {{- include "common.imagePullSecrets" . | nindent 6 }}
diff --git a/kubernetes/sdc/components/sdc-be/templates/servicemonitor.yaml b/kubernetes/sdc/components/sdc-be/templates/servicemonitor.yaml
new file mode 100644 (file)
index 0000000..c0d9f21
--- /dev/null
@@ -0,0 +1,3 @@
+{{- if .Values.metrics.serviceMonitor.enabled }}
+{{  include "common.serviceMonitor" . }}
+{{- end }}
\ No newline at end of file
index 7f914d4..2572b23 100644 (file)
@@ -1,6 +1,7 @@
 # Copyright © 2017 Amdocs, Bell Canada
 # Modifications Copyright © 2018 AT&T, ZTE
 # Modifications Copyright © 2022 Nordix Foundation
+# Modifications Copyright © 2025 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -29,7 +30,8 @@ global:
     #to match with its own cluster replica
     replicaCount: 3
     clusterName: cassandra
-    dataCenter: Pod
+    #datacenter name (use "dc1" in case of k8ssandra-operator, otherwise "Pod")
+    dataCenter: dc1
   # Global Strimzi kafka config overridden
   # from parent values.yaml
   kafka:
@@ -39,8 +41,8 @@ global:
 # Application configuration defaults.
 #################################################################
 # application image
-image: onap/sdc-backend-all-plugins:1.13.6
-backendInitImage: onap/sdc-backend-init:1.13.6
+image: onap/sdc-backend-all-plugins:1.14.1
+backendInitImage: onap/sdc-backend-init:1.14.1
 
 pullPolicy: Always
 
@@ -79,6 +81,7 @@ affinity: {}
 
 # probe configuration parameters
 liveness:
+  path: /sdc2/rest/healthCheck
   initialDelaySeconds: 1
   periodSeconds: 10
   timeoutSeconds: 180
@@ -89,6 +92,7 @@ liveness:
   enabled: true
 
 readiness:
+  path: /sdc2/rest/healthCheck
   initialDelaySeconds: 1
   periodSeconds: 10
   timeoutSeconds: 180
@@ -96,6 +100,7 @@ readiness:
   failureThreshold: 3
 
 startup:
+  path: /sdc2/rest/healthCheck
   initialDelaySeconds: 10
   periodSeconds: 10
   timeoutSeconds: 180
@@ -111,19 +116,6 @@ service:
       port: 8080
       port_protocol: http
       nodePort: '04'
-  annotations:
-    msb.onap.org/service-info: |
-      {{ if .Values.global.msbEnabled -}}[
-        {
-          "serviceName": "sdc-be",
-          "version": "v1",
-          "url": "/sdc/v1",
-          "path":"/sdc/v1",
-          "protocol": "REST",
-          "visualRange":"1",
-          "port": "{{ .Values.service.internalPort }}",
-        }
-      ]{{ end }}
 
 ingress:
   enabled: false
@@ -137,12 +129,7 @@ ingress:
 serviceMesh:
   authorizationPolicy:
     authorizedPrincipals:
-      - serviceAccount: consul-read
-      - serviceAccount: consul-server-read
-      - serviceAccount: modeling-etsicatalog-read
       - serviceAccount: nbi-read
-      - serviceAccount: oof-has-read
-      - serviceAccount: portal-db-read
       - serviceAccount: so-cnfm-lcm-read
       - serviceAccount: so-etsi-sol003-adapter-read
       - serviceAccount: so-read
@@ -155,26 +142,44 @@ flavor: small
 resources:
   small:
     limits:
-      cpu: "1"
+      cpu: "2"
       memory: "3Gi"
     requests:
-      cpu: "0.5"
+      cpu: "1"
       memory: "3Gi"
   large:
     limits:
-      cpu: "2"
+      cpu: "3"
       memory: "6Gi"
     requests:
       cpu: "1"
       memory: "6Gi"
   unlimited: {}
 
+metrics:
+  serviceMonitor:
+    enabled: true
+    targetPort: 8080
+    path: /sdc2/rest/actuator/prometheus
+    basicAuth:
+      enabled: false
+
 #Pods Service Account
 serviceAccount:
   nameOverride: sdc-be
   roles:
     - read
 
+readinessCheck:
+  wait_for_service:
+    name: "services"
+    services:
+      - sdc-onboarding-be
+  job_wait_for:
+    timeout: 25
+    services:
+      - sdc-be
+
 wait_for_job_container:
   containers:
     - '{{ include "common.name" . }}-job'
@@ -183,3 +188,189 @@ wait_for_job_container:
 log:
   path: /var/log/onap
 logConfigMapNamePrefix: '{{ include "common.fullname" . }}'
+
+securityContext:
+  user_id: 1000
+  group_id: 101
+
+jobPodSecurityContext:
+  fsGroup: 101
+  runAsGroup: 101
+  runAsNonRoot: true
+  runAsUser: 101
+  seccompProfile:
+    type: RuntimeDefault
+
+volumes:
+  logSizeLimit: 300Mi
+  jettySizeLimit: 400Mi
+  tmpSizeLimit: 500Mi
+  varTmpSizeLimit: 100Mi
+
+resources_initContainer:
+  limits:
+    cpu: "2000m"
+    memory: "2Gi"
+  requests:
+    cpu: "1000m"
+    memory: "600Mi"
+
+#######
+#######
+pairEnvName: ""
+
+cassandra:
+  hostname: cassandra-dc1-service.onap
+  port: 9042
+  cassandraPassword: Aa1234%^!
+  cassandraUsername: asdc_user
+  connectionTimeout: 10000
+  cassandraSslEnabled: false
+  keystoreLocation: ""
+  keystorePassword: ""
+  truststoreLocation: ""
+  truststorePassword: ""
+  clusterName: SDC-CS-
+  readConsistencyLevel: ONE
+  writeConsistencyLevel: ALL
+  #replication_strategy_options: dc1,3
+
+cassandraConfig:
+  cassandraHosts: [cassandra-dc1-service.onap]
+  cassandraPort: 9042
+  localDataCenter: dc1
+  socketReadTimeout: 20000
+  socketConnectTimeout: 20000
+  username: asdc_user
+  password: Aa1234%^!
+  ssl: false
+  keystorePath: ""
+  keystorePassword: false
+  truststorePath: ""
+  truststorePassword: ""
+
+janusgraph:
+  keyspace: sdctitan
+  cfgFile: /app/jetty/config/catalog-be/janusgraph.properties
+  dbCache:
+    enabled: false
+    cleanWait: 20
+    time: 18000
+    size: 0.5
+  txCache:
+    size: '1000000'
+  storage:
+    lockRetries: 5
+    lockWaitTime: 500
+    backend: cql
+    connectionTimeout: 5000
+  graph:
+    replaceInstance: true
+    inMemory: false
+    lockTimeout: 1800
+  reconnectInterval: 3
+  healthCheckReadTimeout: 8
+
+dmaapConsumerConfiguration:
+  active: false
+permittedAncestors: ""
+tlsCert: ""
+tlsKey: ""
+caCert: ""
+ONBOARDING_BE:
+  host: sdc-onboarding-be.onap
+  httpPort: 8081
+  httpsPort: 8445
+dmaapProducerConfiguration:
+  active: false
+  hosts: olsd004.com:3905
+  topic: SDC-FACADE-NOTIF-v1
+  serviceName: dmaap.com:3905/events
+  environment: TEST
+  protocol: ""
+  aftEnvironment: ""
+  dme2preferredRouterFilePath: ""
+  username: user1@sdc.com
+  password: password==
+appVersion: ""
+
+# Distrubution
+uebPublicKey: iPIxkpAMI8qTcQj8
+uebSecretKey: Ehq3WyT4bkif4zwgEbvshGal
+#distributionNotifTopicName: SDC-DISTR-NOTIF-TOPIC
+#distributionStatusTopicName: SDC-DISTR-STATUS-TOPIC
+kafkaBootStrapServers: onap-strimzi-kafka-bootstrap:9092
+chefEnvironment: AUTO
+
+logback:
+  rootLogLevel: INFO
+
+jetty:
+  httpPort: 8080
+  httpsPort: 8443
+  keystorePath: ""
+  truststorePath: ""
+  keystorePassword: ""
+  truststorePassword: ""
+
+disableHttp: false
+beFqdn: sdc-be.onap
+beHttpPort: 8080
+beSslPort: 8443
+basicAuth:
+  enabled: true
+  userName: testName
+  userPass: testPass
+
+basicAuthConfig:
+  enabled: false
+beInit:
+  beIp: sdc-be.onap
+  tlsCert: ""
+  tlsKey: ""
+  tlsKeyPw: ""
+  caCert: ""
+
+be:
+  tlsCert: ""
+  tlsKey: ""
+  tlsPassword: ""
+  keystorePath: ""
+  keystorePassword: ""
+  caCert: ""
+  truststorePath: ""
+  truststorePassword: ""
+
+autoscaling:
+  enabled: true
+  minReplicas: 1
+  maxReplicas: 3
+  targetCPUUtilizationPercentage: 75
+
+# number of ReplicaSets that should be retained for the Deployment
+revisionHistoryLimit: 1
+
+# the minimum number of seconds that a newly created Pod should be ready
+minReadySeconds: 30
+updateStrategy:
+  type: RollingUpdate
+  # The number of pods that can be unavailable during the update process
+  maxUnavailable: 0
+  # The number of pods that can be created above the desired amount of pods during an update
+  maxSurge: 1
+
+# Annotations to control the execution and deletion of the job
+# Can be used to delete a job before an Upgrade
+#
+# jobAnnotations:
+#   # In case of an ArgoCD deployment this Hook deletes the job before syncing
+#   argocd.argoproj.io/hook: Sync
+#   argocd.argoproj.io/hook-delete-policy: BeforeHookCreation
+#
+#   # In case of an Helm/Flux deployment this Hook deletes the job
+#   # This is what defines this resource as a hook. Without this line, the
+#   # job is considered part of the release.
+#   "helm.sh/hook": "pre-upgrade,pre-rollback,post-install"
+#   "helm.sh/hook-delete-policy": "before-hook-creation"
+#   "helm.sh/hook-weight": "1"
+#END
index f0bbbca..dded8cd 100644 (file)
@@ -2,6 +2,7 @@
 # Modifications Copyright © 2018 AT&T, ZTE
 # Modifications Copyright © 2021 Orange
 # Modifications Copyright © 2021 Nordix Foundation
+# Modifications Copyright © 2025 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -18,7 +19,7 @@
 apiVersion: v2
 description: ONAP Service Design and Creation Cassandra
 name: sdc-cs
-version: 13.0.0
+version: 13.0.5
 
 dependencies:
   - name: common
@@ -31,10 +32,12 @@ dependencies:
     version: ~13.x-0
     repository: '@local'
   - name: cassandra
-    version: ~13.x-0
+    version: ~16.x-0
     # local reference to common chart, as it is
     # a part of this chart's package and will not
     # be published independently to a repo (at this point)
     repository: '@local'
     condition: global.sdc_cassandra.localCluster
-
+  - name: readinessCheck
+    version: ~13.x-0
+    repository: '@local'
diff --git a/kubernetes/sdc/components/sdc-cs/resources/config/change_cassandra_pass.sh b/kubernetes/sdc/components/sdc-cs/resources/config/change_cassandra_pass.sh
new file mode 100644 (file)
index 0000000..4c4ab6d
--- /dev/null
@@ -0,0 +1,33 @@
+#!/bin/sh
+CASSANDRA_IP={{ .Values.global.sdc_cassandra.serviceName }}.{{ include "common.namespace" . }}.svc.cluster.local
+CASSANDRA_PORT={{ .Values.cassandraConfiguration.cassandraPort }}
+echo "Changing Cassandra password..."
+SDC_USER="$SDC_USER"
+SDC_PASSWORD="$SDC_PASSWORD"
+
+retry_num=1
+is_up=0
+while [ $is_up -eq 0 ] && [ $retry_num -le 100 ]; do
+    echo "exit" | cqlsh -u {{ .Values.global.sdc_cassandra.username }} -p {{ .Values.global.sdc_cassandra.password }} $CASSANDRA_IP $CASSANDRA_PORT --cqlversion="{{ .Values.cassandraConfiguration.cql_version }}"
+    res1=$?
+    echo "exit" | cqlsh -u {{ .Values.global.sdc_cassandra.username }} -p {{ .Values.global.sdc_cassandra.password }} $CASSANDRA_IP $CASSANDRA_PORT --cqlversion="{{ .Values.cassandraConfiguration.cql_version }}"
+    res2=$?
+
+    if [ $res1 -eq 0 ] || [ $res2 -eq 0 ]; then
+        echo "$(date) --- cqlsh is able to connect."
+        is_up=1
+    else
+        echo "$(date) --- cqlsh is NOT able to connect yet. Sleeping for 5 seconds."
+        sleep 5
+    fi
+    retry_num=$((retry_num + 1))
+done
+
+if [ $res1 -eq 0 ] && [ $res2 -eq 1 ] && [ $is_up -eq 1 ]; then
+    echo "Modifying Cassandra password"
+    echo "ALTER USER $SDC_USER WITH PASSWORD '$SDC_PASSWORD';" | cqlsh -u {{ .Values.global.sdc_cassandra.username }} -p {{ .Values.global.sdc_cassandra.password }} $CASSANDRA_IP $CASSANDRA_PORT --cqlversion="{{ .Values.cassandraConfiguration.cql_version }}"
+elif [ $res1 -eq 1 ] && [ $res2 -eq 0 ] && [ $is_up -eq 1 ]; then
+    echo "Cassandra password already modified"
+else
+    exit 1
+fi
diff --git a/kubernetes/sdc/components/sdc-cs/resources/config/change_cassandra_user.sh b/kubernetes/sdc/components/sdc-cs/resources/config/change_cassandra_user.sh
new file mode 100644 (file)
index 0000000..32939e8
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/sh
+CASSANDRA_IP={{ .Values.global.sdc_cassandra.serviceName }}.{{ include "common.namespace" . }}.svc.cluster.local
+CASSANDRA_PORT={{ .Values.cassandraConfiguration.cassandraPort }}
+SDC_USER="$SDC_USER"
+SDC_PASSWORD="$SDC_PASSWORD"
+
+retry_num=1
+is_up=0
+while [ $is_up -eq 0 -a $retry_num -le 100 ]; do
+   echo "exit" | cqlsh -u {{ .Values.global.sdc_cassandra.username }} -p {{ .Values.global.sdc_cassandra.password }} $CASSANDRA_IP $CASSANDRA_PORT --cqlversion="{{ .Values.cassandraConfiguration.cql_version }}"
+   res1=$?
+   if [ $res1 -eq 0 ]; then
+      echo "`date` --- cqlsh is able to connect."
+      is_up=1
+   else
+      echo "`date` --- cqlsh is NOT able to connect yet. sleep 5"
+      sleep 5
+   fi
+   retry_num=$((retry_num+1))
+done
+
+cassandra_user_exist=$(echo "list users;" | cqlsh -u {{ .Values.global.sdc_cassandra.username }} -p {{ .Values.global.sdc_cassandra.password }} $CASSANDRA_IP $CASSANDRA_PORT --cqlversion="{{ .Values.cassandraConfiguration.cql_version }}" | grep -c $SDC_USER)
+if [ $cassandra_user_exist -eq 1 ]; then
+    echo "Cassandra user $SDC_USER already exists"
+else
+    echo "Going to create $SDC_USER"
+    echo "create user $SDC_USER with password '$SDC_PASSWORD' nosuperuser;" | cqlsh -u {{ .Values.global.sdc_cassandra.username }} -p {{ .Values.global.sdc_cassandra.password }} $CASSANDRA_IP $CASSANDRA_PORT --cqlversion="{{ .Values.cassandraConfiguration.cql_version }}"
+fi
diff --git a/kubernetes/sdc/components/sdc-cs/resources/config/configuration.yaml b/kubernetes/sdc/components/sdc-cs/resources/config/configuration.yaml
new file mode 100644 (file)
index 0000000..db30a44
--- /dev/null
@@ -0,0 +1,399 @@
+identificationHeaderFields:
+  - HTTP_IV_USER
+  - HTTP_CSP_FIRSTNAME
+  - HTTP_CSP_LASTNAME
+  - HTTP_IV_REMOTE_ADDRESS
+  - HTTP_CSP_WSTYPE
+
+# catalog backend hostname
+beFqdn: sdc-be.{{ include "common.namespace" . }}.svc.cluster.local
+
+# catalog backend http port
+beHttpPort: {{ .Values.cassandraConfiguration.catalogPort }}
+
+# catalog backend http context
+beContext: /sdc/rest/config/get
+
+# catalog backend protocol
+{{- if .Values.cassandraConfiguration.disableHttp }}
+beProtocol: https
+{{- else }}
+beProtocol: http
+{{- end }}
+
+# catalog backend ssl port
+beSslPort: {{ .Values.cassandraConfiguration.sslPort }}
+
+version: 1.0
+released: 2012-11-30
+toscaConformanceLevel: 11.0
+minToscaConformanceLevel: 3.0
+
+janusGraphCfgFile: {{ .Values.janusgraph.cfgFile }}
+janusGraphInMemoryGraph: false
+janusGraphLockTimeout: 1800
+# The interval to try and reconnect to JanusGraph DB when it is down during ASDC startup:
+janusGraphReconnectIntervalInSeconds: 3
+
+# The read timeout towards JanusGraph DB when health check is invoked:
+janusGraphHealthCheckReadTimeout: 8
+
+# The interval to try and reconnect to Elasticsearch when it is down during ASDC startup:
+uebHealthCheckReconnectIntervalInSeconds: 15
+uebHealthCheckReadTimeout: 4
+
+# Protocols
+protocols:
+  - http
+  - https
+
+# Default imports
+defaultImports:
+  - nodes:
+      file: nodes.yml
+  - datatypes:
+      file: data.yml
+  - capabilities:
+      file: capabilities.yml
+  - relationships:
+      file: relationships.yml
+  - groups:
+      file: groups.yml
+  - policies:
+      file: policies.yml
+
+# Users
+users:
+  tom: passwd
+  bob: passwd
+
+cassandraConfig:
+  cassandraHosts: [{{ .Values.global.sdc_cassandra.serviceName }}.{{ include "common.namespace" . }}.svc.cluster.local]
+  cassandraPort: 9042
+  localDataCenter: {{ .Values.global.sdc_cassandra.dataCenter }}
+  reconnectTimeout: 30000
+  socketReadTimeout: {{ .Values.cassandraConfiguration.socketReadTimeout }}
+  socketConnectTimeout: {{ .Values.cassandraConfiguration.socketConnectTimeout }}
+  authenticate: true
+  username: {{ .Values.cassandraConfiguration.cassandra_user }}
+  password: {{ .Values.cassandraConfiguration.cassandra_password }}
+  ssl: {{ .Values.cassandraConfiguration.ssl }}
+  truststorePath: {{ .Values.cassandraConfiguration.truststorePath }}
+  truststorePassword: {{ .Values.cassandraConfiguration.truststorePassword }}
+  maxWaitSeconds: 120
+  keySpaces:
+    - { name: dox, replicationStrategy: NetworkTopologyStrategy, replicationInfo: ['{{ .Values.global.sdc_cassandra.dataCenter }}','{{ .Values.global.sdc_cassandra.replicaCount }}']}
+    - { name: sdcaudit, replicationStrategy: NetworkTopologyStrategy, replicationInfo: ['{{ .Values.global.sdc_cassandra.dataCenter }}','{{ .Values.global.sdc_cassandra.replicaCount }}']}
+    - { name: sdcartifact, replicationStrategy: NetworkTopologyStrategy, replicationInfo: ['{{ .Values.global.sdc_cassandra.dataCenter }}','{{ .Values.global.sdc_cassandra.replicaCount }}']}
+    - { name: sdccomponent, replicationStrategy: NetworkTopologyStrategy, replicationInfo: ['{{ .Values.global.sdc_cassandra.dataCenter }}','{{ .Values.global.sdc_cassandra.replicaCount }}']}
+    - { name: sdcrepository, replicationStrategy: NetworkTopologyStrategy, replicationInfo: ['{{ .Values.global.sdc_cassandra.dataCenter }}','{{ .Values.global.sdc_cassandra.replicaCount }}']}
+
+licenseTypes:
+  - User
+  - Installation
+  - CPU
+
+# Deployment artifacts placeholder
+resourceTypes: &allResourceTypes
+  - VFC
+  - CP
+  - VL
+  - VF
+  - VFCMT
+  - Abstract
+  - CVFC
+
+deploymentResourceArtifacts:
+  deploymentResourceInstanceArtifacts:
+    heatEnv:
+      displayName: "HEAT ENV"
+      type: HEAT_ENV
+      description: "Auto-generated HEAT Environment deployment artifact"
+      fileExtension: "env"
+    VfHeatEnv:
+      displayName: "VF HEAT ENV"
+      type: HEAT_ENV
+      description: "VF Auto-generated HEAT Environment deployment artifact"
+      fileExtension: "env"
+
+# Tosca artifacts placeholders
+toscaArtifacts:
+  assetToscaTemplate:
+    artifactName: -template.yml
+    displayName: Tosca Template
+    type: TOSCA_TEMPLATE
+    description: TOSCA representation of the asset
+  assetToscaCsar:
+    artifactName: -csar.csar
+    displayName: Tosca Model
+    type: TOSCA_CSAR
+    description: TOSCA definition package of the asset
+
+# Informational artifacts placeholder
+excludeResourceCategory:
+  - Generic
+excludeResourceType:
+  - PNF
+informationalResourceArtifacts:
+  features:
+    displayName: Features
+    type: OTHER
+  capacity:
+    displayName: Capacity
+    type: OTHER
+  vendorTestResult:
+    displayName: Vendor Test Result
+    type: OTHER
+  testScripts:
+    displayName: Test Scripts
+    type: OTHER
+  CloudQuestionnaire:
+    displayName: Cloud Questionnaire (completed)
+    type: OTHER
+  HEATTemplateFromVendor:
+    displayName: HEAT Template from Vendor
+    type: HEAT
+  resourceSecurityTemplate:
+    displayName: Resource Security Template
+    type: OTHER
+
+excludeServiceCategory:
+
+informationalServiceArtifacts:
+  serviceArtifactPlan:
+    displayName: Service Artifact Plan
+    type: OTHER
+  summaryOfImpactsToECOMPElements:
+    displayName: Summary of impacts to ECOMP elements,OSSs, BSSs
+    type: OTHER
+  automationCompositionFunctions:
+    displayName: Automation Composition Functions
+    type: OTHER
+  dimensioningInfo:
+    displayName: Dimensioning Info
+    type: OTHER
+  affinityRules:
+    displayName: Affinity Rules
+    type: OTHER
+  operationalPolicies:
+    displayName: Operational Policies
+    type: OTHER
+  serviceSpecificPolicies:
+    displayName: Service-specific Policies
+    type: OTHER
+  engineeringRules:
+    displayName: Engineering Rules (ERD)
+    type: OTHER
+  distributionInstructions:
+    displayName: Distribution Instructions
+    type: OTHER
+  certificationTestResults:
+    displayName: TD Certification Test Results
+    type: OTHER
+  deploymentVotingRecord:
+    displayName: Deployment Voting Record
+    type: OTHER
+  serviceQuestionnaire:
+    displayName: Service Questionnaire
+    type: OTHER
+  serviceSecurityTemplate:
+    displayName: Service Security Template
+    type: OTHER
+
+serviceApiArtifacts:
+  configuration:
+    displayName: Configuration
+    type: OTHER
+  instantiation:
+    displayName: Instantiation
+    type: OTHER
+  monitoring:
+    displayName: Monitoring
+    type: OTHER
+  reporting:
+    displayName: Reporting
+    type: OTHER
+  logging:
+    displayName: Logging
+    type: OTHER
+  testing:
+    displayName: Testing
+    type: OTHER
+
+additionalInformationMaxNumberOfKeys: 50
+
+systemMonitoring:
+  enabled: false
+  isProxy: false
+  probeIntervalInSeconds: 15
+
+heatArtifactDeploymentTimeout:
+  defaultMinutes: 30
+  minMinutes: 1
+  maxMinutes: 120
+
+unLoggedUrls:
+  - /sdc2/rest/healthCheck
+
+cleanComponentsConfiguration:
+  cleanIntervalInMinutes: 1440
+  componentsToClean:
+    - Resource
+    - Service
+
+artifactsIndex: resources
+
+heatEnvArtifactHeader: ""
+heatEnvArtifactFooter: ""
+
+# GSS IDNS
+switchoverDetector:
+  gBeFqdn:
+  gFeFqdn:
+  beVip: 1.2.3.4
+  feVip: 1.2.3.4
+  beResolveAttempts: 3
+  feResolveAttempts: 3
+  enabled: false
+  interval: 60
+  changePriorityUser: ecompasdc
+  changePriorityPassword: ecompasdc123
+  publishNetworkUrl:
+  publishNetworkBody: '{"note":"comment"}'
+  groups:
+    beSet:
+      changePriorityUrl: ""
+      changePriorityBody: '{"name":"","uri":"","no_ad_redirection":false,"v4groups":{"failover_groups":["","","failover_policy":["FAILALL"]},"comment":"","intended_app_proto":"DNS"}'
+    feSet:
+      changePriorityUrl: ""
+      changePriorityBody: '{"name":"","uri":"","no_ad_redirection":false,"v4groups":{"failover_groups":["",""],"failover_policy":["FAILALL"]},"comment":"","intended_app_proto":"DNS"}'
+
+applicationL1Cache:
+  datatypes:
+    enabled: true
+    firstRunDelay: 10
+    pollIntervalInSec: 60
+
+applicationL2Cache:
+  enabled: false
+  catalogL1Cache:
+    enabled: false
+    resourcesSizeInCache: 300
+    servicesSizeInCache: 200
+    productsSizeInCache: 100
+  queue:
+    syncIntervalInSecondes: 43200
+    waitOnShutDownInMinutes: 10
+    numberOfCacheWorkers: 4
+
+toscaValidators:
+  stringMaxLength: 2500
+
+disableAudit: false
+vfModuleProperties:
+  min_vf_module_instances:
+    forBaseModule: 1
+    forNonBaseModule: 0
+  max_vf_module_instances:
+    forBaseModule: 1
+    forNonBaseModule:
+  initial_count:
+    forBaseModule: 1
+    forNonBaseModule: 0
+  vf_module_type:
+    forBaseModule: Base
+    forNonBaseModule: Expansion
+
+genericAssetNodeTypes:
+  VFC: org.openecomp.resource.abstract.nodes.VFC
+  CVFC: org.openecomp.resource.abstract.nodes.VFC
+  VF: org.openecomp.resource.abstract.nodes.VF
+  PNF: org.openecomp.resource.abstract.nodes.PNF
+  Service: org.openecomp.resource.abstract.nodes.service
+
+workloadContext: Production
+
+environmentContext:
+  defaultValue: General_Revenue-Bearing
+  validValues:
+    - Critical_Revenue-Bearing
+    - Vital_Revenue-Bearing
+    - Essential_Revenue-Bearing
+    - Important_Revenue-Bearing
+    - Needed_Revenue-Bearing
+    - Useful_Revenue-Bearing
+    - General_Revenue-Bearing
+    - Critical_Non-Revenue
+    - Vital_Non-Revenue
+    - Essential_Non-Revenue
+    - Important_Non-Revenue
+    - Needed_Non-Revenue
+    - Useful_Non-Revenue
+    - General_Non-Revenue
+
+gabConfig:
+  - artifactType: 'VES_EVENTS'
+    pathsAndNamesDefinitions:
+      - friendlyName: "Action"
+        path: "event.action[2]"
+        searchable: "true"
+      - friendlyName: "Comment"
+        path: "event.comment"
+        searchable: "true"
+      - friendlyName: "Alarm Additional Information"
+        path: "event.structure.faultFields.structure.alarmAdditionalInformation.comment"
+        searchable: "true"
+
+dmaapConsumerConfiguration:
+  hosts: localhost:3905
+  consumerGroup: sdc
+  consumerId: mama
+  timeoutMs: 15000
+  limit: 1
+  pollingInterval: 2
+  topic: topic
+  latitude: 32.109333
+  longitude: 34.855499
+  version: 1.0
+  serviceName: localhost/events
+  environment: TEST
+  partner: BOT_R
+  routeOffer: MR1
+  protocol: https
+  contenttype: application/json
+  dme2TraceOn: true
+  aftEnvironment: AFTUAT
+  aftDme2ConnectionTimeoutMs: 15000
+  aftDme2RoundtripTimeoutMs: 240000
+  aftDme2ReadTimeoutMs: 50000
+  dme2preferredRouterFilePath: DME2preferredRouter.txt
+  timeLimitForNotificationHandleMs: 120000
+  credential:
+    username: user
+    password:
+
+excludedPolicyTypesMapping:
+  # VF:
+  #  - a.b.c
+  #  - c.d.e
+  # CR:
+  #  - x.y.z
+
+excludedGroupTypesMapping:
+  CR:
+    - org.openecomp.groups.VfModule
+    - org.openecomp.groups.heat.HeatStack
+    - tosca.groups.Root
+  VF:
+    - org.openecomp.groups.VfModule
+    - org.openecomp.groups.heat.HeatStack
+    - tosca.groups.Root
+  Service:
+    - org.openecomp.groups.VfModule
+    - org.openecomp.groups.heat.HeatStack
+    - tosca.groups.Root
+
+healthStatusExclude:
+  - DE
+  - DMAPP
+  - DCAE
diff --git a/kubernetes/sdc/components/sdc-cs/resources/config/create-alter-dox-db.sh b/kubernetes/sdc/components/sdc-cs/resources/config/create-alter-dox-db.sh
new file mode 100644 (file)
index 0000000..8a32bc8
--- /dev/null
@@ -0,0 +1,17 @@
+#!/bin/sh
+CASSANDRA_IP={{ .Values.global.sdc_cassandra.serviceName }}.{{ include "common.namespace" . }}.svc.cluster.local
+CASSANDRA_PASS="$SDC_PASSWORD"
+CASSANDRA_PORT={{ .Values.cassandraConfiguration.cassandraPort }}
+CASSANDRA_USER="$SDC_USER"
+
+CASSANDRA_COMMAND="cqlsh -u $CASSANDRA_USER -p $CASSANDRA_PASS $CASSANDRA_IP $CASSANDRA_PORT --cqlversion={{ .Values.cassandraConfiguration.cql_version }}"
+
+echo "Running create_dox_db.cql"
+chmod 755 /tmp/writable-config/tools/build/scripts/create_dox_db.cql
+$CASSANDRA_COMMAND -f /tmp/writable-config/tools/build/scripts/create_dox_db.cql > /dev/null 2>&1
+
+sleep 10
+
+echo "Running alter_dox_db.cql"
+chmod 755 /tmp/writable-config/tools/build/scripts/alter_dox_db.cql
+$CASSANDRA_COMMAND -f /tmp/writable-config/tools/build/scripts/alter_dox_db.cql > /dev/null 2>&1
diff --git a/kubernetes/sdc/components/sdc-cs/resources/config/create_dox_keyspace.sh b/kubernetes/sdc/components/sdc-cs/resources/config/create_dox_keyspace.sh
new file mode 100644 (file)
index 0000000..16fb1ec
--- /dev/null
@@ -0,0 +1,42 @@
+#!/bin/sh
+CASSANDRA_USER="$SDC_USER"
+CASSANDRA_IP={{ .Values.global.sdc_cassandra.serviceName }}.{{ include "common.namespace" . }}.svc.cluster.local
+CASSANDRA_PASS="$SDC_PASSWORD"
+CASSANDRA_PORT={{ .Values.cassandraConfiguration.cassandraPort }}
+DC_NAME={{ .Values.global.sdc_cassandra.dataCenter }}
+RC={{ .Values.global.sdc_cassandra.replicaCount }}
+CASSANDRA_COMMAND="cqlsh -u $CASSANDRA_USER -p $CASSANDRA_PASS $CASSANDRA_IP $CASSANDRA_PORT --cqlversion={{ .Values.cassandraConfiguration.cql_version }}"
+
+# Define Keyspace Creation Statements
+KEYSPACE="CREATE KEYSPACE IF NOT EXISTS dox WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', '$DC_NAME': '$RC'};"
+KEYSPACE1="CREATE KEYSPACE IF NOT EXISTS zusammen_dox WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', '$DC_NAME': '$RC'};"
+KEYSPACE2="CREATE KEYSPACE IF NOT EXISTS {{ .Values.janusgraph.keyspace }} WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', '$DC_NAME': '$RC'} AND durable_writes = true;"
+
+# Save Commands to File
+echo "run create_dox_keyspace.cql"
+echo "$KEYSPACE" > /tmp/config/create_dox_keyspace.cql
+echo "$KEYSPACE1" >> /tmp/config/create_dox_keyspace.cql
+echo "$KEYSPACE2" >> /tmp/config/create_dox_keyspace.cql
+
+chmod 555 /tmp/config/create_dox_keyspace.cql
+
+# Execute Keyspace Creation
+$CASSANDRA_COMMAND -f /tmp/config/create_dox_keyspace.cql > /dev/null 2>&1
+
+# Verify Keyspace Creation
+res=$(echo "select keyspace_name from system_schema.keyspaces;" | cqlsh -u $CASSANDRA_USER -p $CASSANDRA_PASS $CASSANDRA_IP $CASSANDRA_PORT --cqlversion={{ .Values.cassandraConfiguration.cql_version }} | grep -c dox 2>/dev/null)
+
+if [ $res -gt 0 ]; then
+    echo "$(date) --- dox keyspace was created"
+else
+    echo "$(date) --- Failed to create dox keyspace"
+fi
+
+# Check sdctitan Keyspace Creation
+res_sdctitan=$(echo "select keyspace_name from system_schema.keyspaces;" | cqlsh -u $CASSANDRA_USER -p $CASSANDRA_PASS $CASSANDRA_IP $CASSANDRA_PORT --cqlversion={{ .Values.cassandraConfiguration.cql_version }} | grep -c {{ .Values.janusgraph.keyspace }} 2>/dev/null)
+
+if [ $res_sdctitan -gt 0 ]; then
+    echo "$(date) --- {{ .Values.janusgraph.keyspace }} keyspace was created"
+else
+    echo "$(date) --- Failed to create {{ .Values.janusgraph.keyspace }} keyspace"
+fi
diff --git a/kubernetes/sdc/components/sdc-cs/resources/config/execution.sh b/kubernetes/sdc/components/sdc-cs/resources/config/execution.sh
new file mode 100644 (file)
index 0000000..897a54c
--- /dev/null
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+mkdir -p /tmp/writable-config
+mkdir -p /tmp/writable-config/sdctool
+mkdir -p /tmp/writable-config/tools
+cp -r /home/sdc/sdctool/* /tmp/writable-config/sdctool
+cp -r /home/sdc/tools/* /tmp/writable-config/tools
+cp /tmp/config/cassandra-db-scripts-common/* /tmp/writable-config/
+chmod +x /tmp/writable-config/*.sh
+chmod +x /tmp/writable-config/tools/*/*/*
+mkdir -p /home/sdc/asdctool/logs/SDC/SDC-TOOL
+chmod -R 770 /home/sdc/asdctool/logs/SDC/SDC-TOOL
+cp -r /tmp/writable-config/janusgraph.properties /tmp/writable-config/sdctool/config
+cp -r /tmp/writable-config/configuration.yaml /tmp/writable-config/sdctool/config
+sh -x /tmp/writable-config/change_cassandra_user.sh || exit
+sh -x /tmp/writable-config/create_dox_keyspace.sh || exit
+cd /tmp/writable-config/tools/build/scripts
+sed -i 's|#!/usr/bin/python|#!/usr/bin/python3|' /tmp/writable-config/tools/build/scripts/parse-json.py
+sh -x /tmp/writable-config/tools/build/scripts/onboard-db-schema-creation.sh || exit
+chmod -R 770 /tmp/writable-config/sdctool
+sed -i 's/java \(.*\) -cp/java \1 -Djava.io.tmpdir=\/tmp\/writable-config\/tmp -cp/' /tmp/writable-config/sdctool/scripts/schemaCreation.sh
+sed -i 's/java \(.*\) -cp/java \1 -Djava.io.tmpdir=\/tmp\/writable-config\/tmp -cp/' /tmp/writable-config/sdctool/scripts/janusGraphSchemaCreation.sh
+sed -i 's/java \(.*\) -cp/java \1 -Djava.io.tmpdir=\/tmp\/writable-config\/tmp -cp/' /tmp/writable-config/sdctool/scripts/sdcSchemaFileImport.sh
+sh -x /tmp/writable-config/create-alter-dox-db.sh
+sh -x /tmp/writable-config/sdctool/scripts/schemaCreation.sh /tmp/writable-config/sdctool/config || exit
+sh -x /tmp/writable-config/sdctool/scripts/janusGraphSchemaCreation.sh /tmp/writable-config/sdctool/config || exit
+sh -x /tmp/writable-config/importconformance.sh || exit
\ No newline at end of file
diff --git a/kubernetes/sdc/components/sdc-cs/resources/config/importconformance.sh b/kubernetes/sdc/components/sdc-cs/resources/config/importconformance.sh
new file mode 100644 (file)
index 0000000..eecf033
--- /dev/null
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+# Set the working directory
+working_directory="/tmp"
+
+# Extract the cl_release version
+version="1.14.0"  # Example version string; replace with actual value
+cl_release=$(echo $version | cut -d. -f1-3 | cut -d- -f1)
+printf "\033[33mcl_release=[$cl_release]\033[0m\n"
+
+# Execute the import-Conformance command
+conf_dir="/tmp/writable-config/sdctool/config"
+tosca_dir="/tmp/writable-config/sdctool/tosca"
+cl_version=$(grep 'toscaConformanceLevel:' $conf_dir/configuration.yaml | awk '{print $2}')
+
+cd /tmp/writable-config/sdctool/scripts
+chmod +x sdcSchemaFileImport.sh
+
+echo "execute /tmp/writable-config/sdctool/scripts/sdcSchemaFileImport.sh ${tosca_dir} ${cl_release} ${cl_version} ${conf_dir} onap"
+./sdcSchemaFileImport.sh ${tosca_dir} ${cl_release} ${cl_version} ${conf_dir} onap
diff --git a/kubernetes/sdc/components/sdc-cs/resources/config/janusgraph.properties b/kubernetes/sdc/components/sdc-cs/resources/config/janusgraph.properties
new file mode 100644 (file)
index 0000000..5dc5b99
--- /dev/null
@@ -0,0 +1,28 @@
+storage.backend={{ .Values.janusgraph.storage.backend }}
+storage.hostname={{ .Values.global.sdc_cassandra.serviceName }}.{{ include "common.namespace" . }}.svc.cluster.local
+storage.port={{ .Values.cassandraConfiguration.cassandraPort }}
+storage.username={{ .Values.cassandraConfiguration.cassandra_user }}
+storage.password={{ .Values.cassandraConfiguration.cassandra_password }}
+storage.connection-timeout={{ .Values.janusgraph.storage.connectionTimeout }}
+storage.cql.keyspace={{ .Values.janusgraph.keyspace }}
+storage.cql.port={{ .Values.cassandraConfiguration.cassandraPort }}
+storage.cql.ssl.enabled={{ .Values.cassandraConfiguration.ssl }}
+{{- if .Values.cassandraConfiguration.ssl }}
+storage.cql.ssl.truststore.location={{ .Values.truststorePath }}
+storage.cql.ssl.truststore.password={{ .Values.truststorePassword }}
+{{- end }}
+storage.cql.read-consistency-level={{ .Values.cassandraConfiguration.readConsistencyLevel }}
+storage.cql.write-consistency-level={{ .Values.cassandraConfiguration.writeConsistencyLevel }}
+storage.cql.replication-strategy-class=NetworkTopologyStrategy
+storage.cql.replication-strategy-options={{ .Values.global.sdc_cassandra.dataCenter }},{{ .Values.global.sdc_cassandra.replicaCount }}
+storage.cql.local-datacenter={{ .Values.global.sdc_cassandra.dataCenter }}
+storage.cql.grouping.keys-allowed=false
+cache.db-cache={{ .Values.janusgraph.dbCache.enabled }}
+{{- if .Values.janusgraph.dbCache.enabled }}
+cache.db-cache-clean-wait={{ .Values.janusgraph.dbCache.cleanWait }}
+cache.db-cache-time={{ .Values.janusgraph.dbCache.time }}
+cache.db-cache-size={{ .Values.janusgraph.dbCache.size }}
+{{- end }}
+cache.tx-cache-size={{ .Values.janusgraph.txCache.size }}
+
+storage.lock.wait-time={{ .Values.janusgraph.storage.lockWaitTime }}
diff --git a/kubernetes/sdc/components/sdc-cs/templates/configmap.yaml b/kubernetes/sdc/components/sdc-cs/templates/configmap.yaml
new file mode 100644 (file)
index 0000000..dc101cd
--- /dev/null
@@ -0,0 +1,29 @@
+{{/*
+# Copyright © 2017 Amdocs, AT&T, Bell Canada
+# Modifications Copyright © 2018 ZTE
+#
+# 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.
+*/}}
+
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ include "common.fullname" . }}-cassandra-db-scripts
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ include "common.release" . }}
+    heritage: {{ .Release.Service }}
+data:
+{{ tpl (.Files.Glob "resources/config/*").AsConfig . | indent 2 }}
index c715342..ed4fbe6 100644 (file)
@@ -1,6 +1,7 @@
 {{/*
 # Copyright © 2017 Amdocs, AT&T, Bell Canada
 # Modifications Copyright © 2018  ZTE
+# Modifications Copyright © 2025  Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 
 apiVersion: batch/v1
 kind: Job
-metadata: {{- include "common.resourceMetadata" . | nindent 2 }}
+metadata:
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    release: {{ include "common.release" . }}
+  {{- if .Values.jobAnnotations }}
+  annotations:  {{- include "common.tplValue" (dict "value" .Values.jobAnnotations "context" $) | nindent 4 }}
+  {{- end }}
 spec:
   backoffLimit: 20
   template:
@@ -27,41 +36,29 @@ spec:
         release: {{ include "common.release" . }}
     spec:
       restartPolicy: Never
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
       initContainers:
-      - name: {{ include "common.name" . }}-init-readiness
-        image: {{ include "repositoryGenerator.image.readiness" . }}
-        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-        command:
-        - /app/ready.py
-        args:
-        - --service-name
-        - {{ .Values.global.sdc_cassandra.serviceName }}
-        - "-t"
-        - "15"
-        env:
-        - name: NAMESPACE
-          valueFrom:
-            fieldRef:
-              apiVersion: v1
-              fieldPath: metadata.namespace
-        resources:
-          limits:
-            cpu: "100m"
-            memory: "500Mi"
-          requests:
-            cpu: "3m"
-            memory: "20Mi"
+        {{ include "common.readinessCheck.waitFor" . | nindent 8 }}
       containers:
       - name: {{ include "common.name" . }}-job
         image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.cassandraInitImage }}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        command:
+          - /bin/sh
+          - -c
+          - |
+            /tmp/config/cassandra-db-scripts-common/execution.sh
         volumeMounts:
-        - name: {{ include "common.fullname" . }}-environments
-          mountPath: /home/sdc/chef-solo/environments/
-        - name: {{ include "common.fullname" . }}-chef-cache
-          mountPath: /home/sdc/chef-solo/cache
         - name: {{ include "common.fullname" . }}-cqlshrc
           mountPath: /home/sdc/.cassandra
+        - name: {{ include "common.fullname" . }}-cassandra-db-scripts
+          mountPath: /tmp/config/cassandra-db-scripts-common
+        - name: {{ include "common.fullname" . }}-cassandra-config
+          mountPath: /tmp/config
+        - name: {{ include "common.fullname" . }}-writable-scripts
+          mountPath: /tmp/writable-config
+        - name: {{ include "common.fullname" . }}-importconf-tmp
+          mountPath: /tmp/writable-config/tmp
         env:
         - name: ENVNAME
           value: {{ .Values.env.name }}
@@ -80,22 +77,44 @@ spec:
           valueFrom:
             fieldRef:
               fieldPath: status.podIP
-        resources:
-          limits:
-            cpu: "800m"
-            memory: "1Gi"
-          requests:
-            cpu: "200m"
-            memory: "300Mi"
+        {{ if eq .Values.liveness.enabled true }}
+        livenessProbe:
+          httpGet:
+            path:  /healthz
+            port: {{ .Values.service.jobPort }}
+          initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
+          periodSeconds: {{ .Values.liveness.periodSeconds }}
+          timeoutSeconds: {{ .Values.liveness.timeoutSeconds }}
+          successThreshold: {{ .Values.liveness.successThreshold }}
+          failureThreshold: {{ .Values.liveness.failureThreshold }}
+        {{ end }}
+        readinessProbe:
+          httpGet:
+            path:  /healthz
+            port: {{ .Values.service.jobPort }}
+          initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
+          periodSeconds: {{ .Values.readiness.periodSeconds }}
+          timeoutSeconds: {{ .Values.readiness.timeoutSeconds }}
+          successThreshold: {{ .Values.readiness.successThreshold }}
+          failureThreshold: {{ .Values.readiness.failureThreshold }}
+        {{ include "common.containerSecurityContext" . | indent 10 | trim }}
+        resources: {{ include "common.resources" . | nindent 12 }}
       {{ include "common.waitForJobContainer" . | indent 6 | trim }}
       serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
       volumes:
-      - name: {{ include "common.fullname" . }}-environments
+      - name: {{ include "common.fullname" . }}-cassandra-db-scripts
         configMap:
-          name: {{ include "common.release" . }}-sdc-environments-configmap
+          name: {{ include "common.fullname" . }}-cassandra-db-scripts
           defaultMode: 0755
-      - name: {{ include "common.fullname" . }}-chef-cache
-        emptyDir: {}
+      - name: {{ include "common.fullname" . }}-cassandra-config
+        emptyDir:
+          sizeLimit: {{ .Values.volumes.cassandraConfigSizeLimit }}
+      - name: {{ include "common.fullname" . }}-writable-scripts
+        emptyDir:
+          sizeLimit: {{ .Values.volumes.writableScriptsSizeLimit }}
+      - name: {{ include "common.fullname" . }}-importconf-tmp
+        emptyDir:
+          sizeLimit: {{ .Values.volumes.importConfTmpSizeLimit }}
       - name: {{ include "common.fullname" . }}-cqlshrc
         configMap:
           name: {{ include "common.release" . }}-sdc-cqlshrc
index b8986ee..e0a7acf 100644 (file)
 #################################################################
 global:
   nodePortPrefix: 302
-  readinessImage: onap/oom/readiness:6.0.3
+  readinessImage: onap/oom/readiness:6.2.0
   loggingRepository: docker.elastic.co
   loggingImage: beats/filebeat:5.5.0
   sdc_cassandra:
     #This flag allows SDC to instantiate its own cluster, serviceName
     #should be sdc-cs if this flag is enabled
     localCluster: false
-
+    #Cassandra login details
+    username: cassandra
+    password: cassandra
     # in case of a local cassandra cluster
     # flag to enable the DB creation via k8ssandra-operator
     useOperator: true
@@ -71,10 +73,48 @@ cassandra:
     config:
       clusterName: sdc-cs
 
+cassandraConfiguration:
+  cassandraPort: 9042
+  cql_version: 3.4.6
+  catalogPort: 8080
+  disableHttp: true
+  sslPort: 8443
+  ssl: false
+  socketConnectTimeout: 40000
+  socketReadTimeout: 40000
+  truststorePath: /tmp/writable-config/sdctool/config/tmp.trust
+  truststorePassword: Aa123456
+  cassandra_user: asdc_user
+  cassandra_password: Aa1234%^!
+  readConsistencyLevel: LOCAL_QUORUM
+  writeConsistencyLevel: LOCAL_QUORUM
+
+janusgraph:
+  keyspace: sdctitan
+  cfgFile: /tmp/writable-config/sdctool/config/janusgraph.properties
+  dbCache:
+    enabled: false
+    cleanWait: 20
+    time: 18000
+    size: 0.5
+  txCache:
+    size: '1000000'
+  storage:
+    lockRetries: 5
+    lockWaitTime: 500
+    backend: cql
+    connectionTimeout: 5000
+  graph:
+    replaceInstance: true
+    inMemory: false
+    lockTimeout: 1800
+  reconnectInterval: 3
+  healthCheckReadTimeout: 8
+
 # application image
 repository: nexus3.onap.org:10001
-image: onap/sdc-cassandra:1.13.6
-cassandraInitImage: onap/sdc-cassandra-init:1.13.6
+image: onap/sdc-cassandra:1.14.1
+cassandraInitImage: onap/sdc-cassandra-init:1.14.1
 pullPolicy: Always
 
 config:
@@ -82,6 +122,21 @@ config:
   maxHeapSize: "1536M"
   heapNewSize: "512M"
 
+# Annotations to control the execution and deletion of the job
+# Can be used to delete a job before an Upgrade
+#
+# jobAnnotations:
+#   # In case of an ArgoCD deployment this Hook deletes the job before syncing
+#   argocd.argoproj.io/hook: Sync
+#   argocd.argoproj.io/hook-delete-policy: BeforeHookCreation
+#
+#   # In case of an Helm/Flux deployment this Hook deletes the job
+#   # This is what defines this resource as a hook. Without this line, the
+#   # job is considered part of the release.
+#   "helm.sh/hook": "pre-upgrade,pre-rollback,post-install"
+#   "helm.sh/hook-delete-policy": "before-hook-creation"
+#   "helm.sh/hook-weight": "1"
+
 #environment file
 env:
   name: AUTO
@@ -95,15 +150,15 @@ affinity: {}
 
 # probe configuration parameters
 liveness:
-  initialDelaySeconds: 60
-  periodSeconds: 10
+  initialDelaySeconds: 120
+  periodSeconds: 120
   # necessary to disable liveness probe when setting breakpoints
   # in debugger so K8s doesn't restart unresponsive container
   enabled: true
 
 readiness:
   initialDelaySeconds: 120
-  periodSeconds: 10
+  periodSeconds: 60
 
 service:
   type: ClusterIP
@@ -111,7 +166,7 @@ service:
   portName: sdc-cs
   externalPort: 9042
   internalPort: 9042
-
+  jobPort: 8080
 
 ## Persist data to a persitent volume
 persistence:
@@ -148,3 +203,45 @@ serviceAccount:
 wait_for_job_container:
   containers:
     - '{{ include "common.name" . }}-job'
+
+# Resource Limit flavor -By Default using small
+flavor: small
+# Segregation for Different environment (Small and Large)
+resources:
+  small:
+    limits:
+      cpu: 1200m
+      memory: 2Gi
+    requests:
+      cpu: 300m
+      memory: 500Mi
+  large:
+    limits:
+      cpu: 1600m
+      memory: "2Gi"
+    requests:
+      cpu: 400m
+      memory: 600Mi
+  unlimited: {}
+
+securityContext:
+  user_id: 1000
+  group_id: 1000
+
+volumes:
+  importConfTmpSizeLimit: 100Mi
+  writableScriptsSizeLimit: 1.2Gi
+  cassandraConfigSizeLimit: 100Mi
+
+resources_initContainer:
+  limits:
+    cpu: "100m"
+    memory: "500Mi"
+  requests:
+    cpu: "3m"
+    memory: "20Mi"
+
+readinessCheck:
+  wait_for:
+    services:
+      - '{{ .Values.global.sdc_cassandra.serviceName }}'
index 5c05fda..b7bb91e 100644 (file)
@@ -2,6 +2,7 @@
 # Modifications Copyright © 2018 AT&T, ZTE
 # Modifications Copyright © 2021 Orange
 # Modifications Copyright © 2021 Nordix Foundation
+# Modifications Copyright © 2025 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 apiVersion: v2
 description: ONAP Service Design and Creation Front End
 name: sdc-fe
-version: 13.0.0
+version: 13.0.4
 
 dependencies:
+  - name: common
+    version: ~13.x-0
+    repository: '@local'
   - name: repositoryGenerator
     version: ~13.x-0
     repository: '@local'
   - name: serviceAccount
     version: ~13.x-0
     repository: '@local'
+  - name: readinessCheck
+    version: ~13.x-0
+    repository: '@local'
diff --git a/kubernetes/sdc/components/sdc-fe/resources/config/catalogfe/configuration.yaml b/kubernetes/sdc/components/sdc-fe/resources/config/catalogfe/configuration.yaml
new file mode 100644 (file)
index 0000000..95416a9
--- /dev/null
@@ -0,0 +1,126 @@
+# Needed for logging purposes. To be populated by DevOps - currently dummy
+feFqdn: sdc-fe.{{ include "common.namespace" . }}.svc.cluster.local
+
+# catalog backend hostname
+beHost: sdc-be.{{ include "common.namespace" . }}.svc.cluster.local
+
+# catalog backend http port
+beHttpPort: {{ .Values.be_http_port }}
+
+# catalog backend http context
+beContext: /sdc2/rest/v1/catalog/upload/resources
+
+# catalog backend protocol
+{{- if .Values.disableHttp }}
+beProtocol: https
+{{- else }}
+beProtocol: http
+{{- end }}
+
+# catalog backend ssl port
+beSslPort: {{ .Values.fe_conf.https_port }}
+
+# threadpool size for handling requests
+threadpoolSize: 50
+
+# request processing timeout (seconds)
+requestTimeout: 1200
+
+# catalog ms (the host-port values need to be changed once it is deployed)
+catalogFacadeMs:
+  protocol: http
+  host: {{ .Values.facade_vip }}
+  port: {{ .Values.facade_port }}
+  healthCheckUri: "/healthCheck"
+  path: "/uicache"
+
+# Determines the health check read timeout when invoking health check towards the LB (or BE whatever is configured):
+healthCheckSocketTimeoutInMs: 5000
+
+healthCheckIntervalInSeconds: 5
+
+basicAuth:
+  enabled: {{ .Values.fe_conf.basic_auth }}
+  userName: {{ .Values.fe_conf.user_name }}
+  userPass: {{ .Values.fe_conf.user_pass }}
+
+onboarding:
+    hostFe: sdc-fe.{{ include "common.namespace" . }}.svc.cluster.local
+    {{- if .Values.disableHttp }}
+    protocolFe: https
+    portFe: {{ .Values.fe_conf.https_port }}
+    {{- else }}
+    protocolFe: http
+    portFe: {{ .Values.fe_conf.http_port }}
+    {{- end }}
+    healthCheckUriFe: "/onboarding/v1.0/healthcheck"
+    hostBe: sdc-onboarding-be.{{ include "common.namespace" . }}.svc.cluster.local
+    {{- if .Values.disableHttp }}
+    protocolBe: https
+    portBe: {{ .Values.onboarding_be.https_port }}
+    {{- else }}
+    protocolBe: http
+    portBe: {{ .Values.onboarding_be.http_port }}
+    {{- end }}
+
+identificationHeaderFields:
+   -
+        - &HTTP_IV_USER HTTP_IV_USER
+        - &iv-user iv-user
+   -
+        - &USER_ID USER_ID
+        - &user-id user-id
+   -
+        - &HTTP_CSP_ATTUID HTTP_CSP_ATTUID
+        - &csp-attuid csp-attuid
+
+optionalHeaderFields:
+   -
+        - &HTTP_CSP_FIRSTNAME HTTP_CSP_FIRSTNAME
+        - &csp-firstname csp-firstname
+   -
+        - &HTTP_CSP_LASTNAME HTTP_CSP_LASTNAME
+        - &csp-lastname csp-lastname
+   -
+        - &HTTP_IV_REMOTE_ADDRESS HTTP_IV_REMOTE_ADDRESS
+        - &iv-remote-address iv-remote-address
+   -
+        - &HTTP_CSP_EMAIL HTTP_CSP_EMAIL
+        - &csp-email csp-email
+
+version: 1.0
+released: 2012-11-30
+
+# access restriction
+authCookie:
+  cookieName: "AuthenticationCookie"
+  path: /
+  domain: ""
+  securityKey: {{ .Values.access_restriction_key }}
+
+# Connection parameters
+connection:
+    url: jdbc:mysql://localhost:3306/db
+    poolSize: 17
+
+# Protocols
+protocols:
+   - http
+   - https
+
+systemMonitoring:
+    enabled: false
+    isProxy: true
+    probeIntervalInSeconds: 15
+
+healthStatusExclude:
+   - DE
+   - DMAAP
+   - DCAE
+   - DMAAP_PRODUCER
+   - PORTAL
+   - CATALOG_FACADE_MS
+   - External API
+
+# Space separated list of permitted ancestors
+permittedAncestors: {{ .Values.permittedAncestors }}
diff --git a/kubernetes/sdc/components/sdc-fe/resources/config/catalogfe/ecomp-error-configuration.yaml b/kubernetes/sdc/components/sdc-fe/resources/config/catalogfe/ecomp-error-configuration.yaml
new file mode 100644 (file)
index 0000000..cf0cb86
--- /dev/null
@@ -0,0 +1,42 @@
+###########################################
+# Note the conventions of the field values:
+# type can be one of: CONFIG_ERROR, SYSTEM_ERROR, DATA_ERROR, CONNECTION_PROBLEM
+# severity can be one of: WARN, ERROR, FATAL
+# alarmSeverity can be one of: CRITICAL, MAJOR, MINOR, INFORMATIONAL, NONE
+# code is a unique integer in range of 3003-9999 (3000-3002 are occupied for internal usage)
+# The above enumeration values are out-of-the-box and can be changed in code.
+# In case of config and code mismatch, the appropriate error will be printed to log
+#
+# Range of FE codes - 8000-9999
+
+errors:
+  FeHealthCheckConnectionError:
+    type: CONNECTION_PROBLEM
+    code: ASDC_8000
+    severity: ERROR
+    description: "Connection error during FE Health Check"
+    alarmSeverity: CRITICAL
+  FeHttpLoggingError:
+    type: SYSTEM_ERROR
+    code: ASDC_8001
+    severity: ERROR
+    description: "Error when logging FE HTTP request/response"
+    alarmSeverity: MINOR
+  FePortalServletError:
+    type: SYSTEM_ERROR
+    code: ASDC_8002
+    severity: ERROR
+    description: "Error when trying to access FE Portal page"
+    alarmSeverity: MAJOR
+  FeHealthCheckGeneralError:
+    type: SYSTEM_ERROR
+    code: ASDC_8004
+    severity: ERROR
+    description: "General error during FE Health Check"
+    alarmSeverity: CRITICAL
+  FeHealthCheckRecovery:
+    type: RECOVERY
+    code: ASDC_8005
+    severity: INFO
+    description: "BE Health Check Recovery"
+    alarmSeverity: INFORMATIONAL
-<?xml version="1.0" encoding="utf-8"?>\r
-<!--\r
-# Copyright © 2018 Amdocs, Bell Canada, AT&T, ZTE\r
-#\r
-# Licensed under the Apache License, Version 2.0 (the "License");\r
-# you may not use this file except in compliance with the License.\r
-# You may obtain a copy of the License at\r
-#\r
-#       http://www.apache.org/licenses/LICENSE-2.0\r
-#\r
-# Unless required by applicable law or agreed to in writing, software\r
-# distributed under the License is distributed on an "AS IS" BASIS,\r
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-# See the License for the specific language governing permissions and\r
-# limitations under the License.\r
--->\r
-\r
-<configuration scan="true" scanPeriod="3 seconds">\r
-    <property name="logDir" value="/var/log/onap"/>\r
-    <property name="componentName" scope="system" value="sdc"/>\r
-    <property name="subComponentName" scope="system" value="sdc-fe"/>\r
-    <property name="logDirectory" value="${logDir}/${componentName}/${subComponentName}"/>\r
-    <property file="${config.home}/catalog-fe/configuration.yaml"/>\r
-    <property name="enable-all-log" scope="context" value="false"/>\r
-    <!--  log file names -->\r
-    <property name="errorLogName" value="error"/>\r
-    <property name="metricsLogName" value="metrics"/>\r
-    <property name="auditLogName" value="audit"/>\r
-    <property name="debugLogName" value="debug"/>\r
-    <property name="transactionLogName" value="transaction"/>\r
-    <property name="allLogName" value="all"/>\r
-    <property name="queueSize" value="256"/>\r
-    <property name="maxFileSize" value="50MB"/>\r
-    <property name="maxHistory" value="30"/>\r
-    <property name="totalSizeCap" value="10GB"/>\r
-    <property name="pattern"\r
-        value="%d{&quot;yyyy-MM-dd'T'HH:mm:ss.SSSXXX&quot;, UTC}\t[%thread]\t%-5level\t%logger{36}\t%replace(%replace(%replace(%mdc){'\t','\\\\t'}){', ','\t'}){'\n', '\\\\n'}\t%replace(%replace(%msg){'\n', '\\\\n'}){'\t','\\\\t'}%n"/>\r
-\r
-    <!-- STDOUT -->\r
-    <appender class="ch.qos.logback.core.ConsoleAppender" name="STDOUT">\r
-        <encoder>\r
-            <pattern>${pattern}</pattern>\r
-        </encoder>\r
-    </appender>\r
-\r
-    <!-- STDERR -->\r
-    <appender class="ch.qos.logback.core.ConsoleAppender" name="STDERR">\r
-        <filter class="ch.qos.logback.classic.filter.LevelFilter">\r
-            <level>ERROR</level>\r
-            <onMatch>ACCEPT</onMatch>\r
-            <onMismatch>DENY</onMismatch>\r
-        </filter>\r
-        <encoder>\r
-            <pattern>"%d [%thread] %-5level %logger{1024} - %msg%n"</pattern>\r
-        </encoder>\r
-    </appender>\r
-\r
-    <!-- All log -->\r
-    <if condition='property("enable-all-log").equalsIgnoreCase("true")'>\r
-        <then>\r
-            <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="ALL_ROLLING">\r
-                <file>${logDirectory}/${allLogName}.log</file>\r
-                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">\r
-                    <fileNamePattern>${logDirectory}/${allLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>\r
-                    <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">\r
-                        <maxFileSize>${maxFileSize}</maxFileSize>\r
-                    </timeBasedFileNamingAndTriggeringPolicy>\r
-                    <maxHistory>${maxHistory}</maxHistory>\r
-                    <totalSizeCap>${totalSizeCap}</totalSizeCap>\r
-                </rollingPolicy>\r
-                <encoder>\r
-                    <pattern>${pattern}</pattern>\r
-                </encoder>\r
-            </appender>\r
-            <appender class="ch.qos.logback.classic.AsyncAppender" name="ASYNC_ALL">\r
-                <appender-ref ref="ALL_ROLLING"/>\r
-            </appender>\r
-        </then>\r
-    </if>\r
-    <!-- Error log -->\r
-    <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="ERROR_ROLLING">\r
-        <file>${logDirectory}/${errorLogName}.log</file>\r
-        <!-- Audit messages filter - deny audit messages -->\r
-        <filter class="ch.qos.logback.core.filter.EvaluatorFilter">\r
-            <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">\r
-                <marker>AUDIT_MARKER</marker>\r
-            </evaluator>\r
-            <onMismatch>NEUTRAL</onMismatch>\r
-            <onMatch>DENY</onMatch>\r
-        </filter>\r
-        <!-- Transaction messages filter - deny Transaction messages -->\r
-        <filter class="ch.qos.logback.core.filter.EvaluatorFilter">\r
-            <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">\r
-                <marker>TRANSACTION_MARKER</marker>\r
-            </evaluator>\r
-            <onMismatch>NEUTRAL</onMismatch>\r
-            <onMatch>DENY</onMatch>\r
-        </filter>\r
-        <!-- deny all events with a level below INFO, that is TRACE and DEBUG -->\r
-        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">\r
-            <level>INFO</level>\r
-        </filter>\r
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">\r
-            <fileNamePattern>${logDirectory}/${errorLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>\r
-            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">\r
-                <maxFileSize>${maxFileSize}</maxFileSize>\r
-            </timeBasedFileNamingAndTriggeringPolicy>\r
-            <maxHistory>${maxHistory}</maxHistory>\r
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>\r
-        </rollingPolicy>\r
-        <encoder>\r
-            <pattern>${pattern}</pattern>\r
-        </encoder>\r
-    </appender>\r
-    <!-- Debug log -->\r
-    <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="DEBUG_ROLLING">\r
-        <file>${logDirectory}/${debugLogName}.log</file>\r
-        <!-- No need to deny audit messages - they are INFO only, will be denied\r
-                        anyway -->\r
-        <!-- Transaction messages filter - deny Transaction messages, there are\r
-                        some DEBUG level messages among them -->\r
-        <filter class="ch.qos.logback.core.filter.EvaluatorFilter">\r
-            <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">\r
-                <marker>TRANSACTION_MARKER</marker>\r
-            </evaluator>\r
-            <onMismatch>NEUTRAL</onMismatch>\r
-            <onMatch>DENY</onMatch>\r
-        </filter>\r
-        <!-- accept DEBUG and TRACE level -->\r
-        <filter class="ch.qos.logback.core.filter.EvaluatorFilter">\r
-            <evaluator class="ch.qos.logback.classic.boolex.GEventEvaluator">\r
-                <expression>e.level.toInt() &lt;= DEBUG.toInt()</expression>\r
-            </evaluator>\r
-            <OnMismatch>DENY</OnMismatch>\r
-            <OnMatch>NEUTRAL</OnMatch>\r
-        </filter>\r
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">\r
-            <fileNamePattern>${logDirectory}/${debugLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>\r
-            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">\r
-                <maxFileSize>${maxFileSize}</maxFileSize>\r
-            </timeBasedFileNamingAndTriggeringPolicy>\r
-            <maxHistory>${maxHistory}</maxHistory>\r
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>\r
-        </rollingPolicy>\r
-        <encoder>\r
-            <pattern>${pattern}</pattern>\r
-        </encoder>\r
-    </appender>\r
-    <!-- Audit log -->\r
-    <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="AUDIT_ROLLING">\r
-        <file>${logDirectory}/${auditLogName}.log</file>\r
-        <!-- Audit messages filter - accept audit messages -->\r
-        <filter class="ch.qos.logback.core.filter.EvaluatorFilter">\r
-            <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">\r
-                <marker>AUDIT_MARKER</marker>\r
-            </evaluator>\r
-            <onMismatch>DENY</onMismatch>\r
-            <onMatch>ACCEPT</onMatch>\r
-        </filter>\r
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">\r
-            <fileNamePattern>${logDirectory}/${auditLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>\r
-            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">\r
-                <maxFileSize>${maxFileSize}</maxFileSize>\r
-            </timeBasedFileNamingAndTriggeringPolicy>\r
-            <maxHistory>${maxHistory}</maxHistory>\r
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>\r
-        </rollingPolicy>\r
-        <encoder>\r
-            <pattern>${pattern}</pattern>\r
-        </encoder>\r
-    </appender>\r
-    <!-- SdncTransaction log -->\r
-    <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="TRANSACTION_ROLLING">\r
-        <file>${logDirectory}/${transactionLogName}.log</file>\r
-        <!-- Transaction messages filter - accept audit messages -->\r
-        <filter class="ch.qos.logback.core.filter.EvaluatorFilter">\r
-            <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">\r
-                <marker>TRANSACTION_MARKER</marker>\r
-            </evaluator>\r
-            <onMismatch>DENY</onMismatch>\r
-            <onMatch>ACCEPT</onMatch>\r
-        </filter>\r
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">\r
-            <fileNamePattern>${logDirectory}/${transactionLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>\r
-            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">\r
-                <maxFileSize>${maxFileSize}</maxFileSize>\r
-            </timeBasedFileNamingAndTriggeringPolicy>\r
-            <maxHistory>${maxHistory}</maxHistory>\r
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>\r
-        </rollingPolicy>\r
-        <encoder>\r
-            <pattern>${pattern}</pattern>\r
-        </encoder>\r
-    </appender>\r
-    <!-- Asynchronicity Configurations -->\r
-    <appender class="ch.qos.logback.classic.AsyncAppender" name="ASYNC_DEBUG">\r
-        <queueSize>${queueSize}</queueSize>\r
-        <appender-ref ref="DEBUG_ROLLING"/>\r
-    </appender>\r
-    <appender class="ch.qos.logback.classic.AsyncAppender" name="ASYNC_TRANSACTION">\r
-        <queueSize>${queueSize}</queueSize>\r
-        <appender-ref ref="TRANSACTION_ROLLING"/>\r
-    </appender>\r
-    <appender class="ch.qos.logback.classic.AsyncAppender" name="ASYNC_ERROR">\r
-        <queueSize>${queueSize}</queueSize>\r
-        <appender-ref ref="ERROR_ROLLING"/>\r
-    </appender>\r
-    <appender class="ch.qos.logback.classic.AsyncAppender" name="ASYNC_AUDIT">\r
-        <queueSize>${queueSize}</queueSize>\r
-        <appender-ref ref="AUDIT_ROLLING"/>\r
-    </appender>\r
-    <root level="INFO">\r
-        <appender-ref ref="ASYNC_ERROR"/>\r
-        <appender-ref ref="ASYNC_DEBUG"/>\r
-        <appender-ref ref="ASYNC_AUDIT"/>\r
-        <appender-ref ref="ASYNC_TRANSACTION"/>\r
-        <if condition='property("enable-all-log").equalsIgnoreCase("true")'>\r
-            <then>\r
-                <appender-ref ref="ALL_ROLLING"/>\r
-            </then>\r
-        </if>\r
-        <appender-ref ref="STDOUT"/>\r
-        <appender-ref ref="STDERR"/>\r
-    </root>\r
-    <logger level="INFO" name="org.openecomp.sdc"/>\r
-</configuration>\r
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+# Copyright © 2018 Amdocs, Bell Canada, AT&T, ZTE
+#
+# 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.
+-->
+
+<configuration scan="true" scanPeriod="3 seconds">
+    <property name="logDir" value="/var/log/onap"/>
+    <property name="componentName" scope="system" value="sdc"/>
+    <property name="subComponentName" scope="system" value="sdc-fe"/>
+    <property name="logDirectory" value="${logDir}/${componentName}/${subComponentName}"/>
+    <property file="${config.home}/catalog-fe/configuration.yaml"/>
+    <property name="enable-all-log" scope="context" value="false"/>
+    <!--  log file names -->
+    <property name="errorLogName" value="error"/>
+    <property name="metricsLogName" value="metrics"/>
+    <property name="auditLogName" value="audit"/>
+    <property name="debugLogName" value="debug"/>
+    <property name="transactionLogName" value="transaction"/>
+    <property name="allLogName" value="all"/>
+    <property name="queueSize" value="256"/>
+    <property name="maxFileSize" value="50MB"/>
+    <property name="maxHistory" value="30"/>
+    <property name="totalSizeCap" value="10GB"/>
+    <property name="pattern"
+        value="%d{&quot;yyyy-MM-dd'T'HH:mm:ss.SSSXXX&quot;, UTC}\t[%thread]\t%-5level\t%logger{36}\t%replace(%replace(%replace(%mdc){'\t','\\\\t'}){', ','\t'}){'\n', '\\\\n'}\t%replace(%replace(%msg){'\n', '\\\\n'}){'\t','\\\\t'}%n"/>
+
+    <!-- STDOUT -->
+    <appender class="ch.qos.logback.core.ConsoleAppender" name="STDOUT">
+        <encoder>
+            <pattern>${pattern}</pattern>
+        </encoder>
+    </appender>
+
+    <!-- STDERR -->
+    <appender class="ch.qos.logback.core.ConsoleAppender" name="STDERR">
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>ERROR</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+        <encoder>
+            <pattern>"%d [%thread] %-5level %logger{1024} - %msg%n"</pattern>
+        </encoder>
+    </appender>
+
+    <!-- All log -->
+    <if condition='property("enable-all-log").equalsIgnoreCase("true")'>
+        <then>
+            <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="ALL_ROLLING">
+                <file>${logDirectory}/${allLogName}.log</file>
+                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+                    <fileNamePattern>${logDirectory}/${allLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+                    <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                        <maxFileSize>${maxFileSize}</maxFileSize>
+                    </timeBasedFileNamingAndTriggeringPolicy>
+                    <maxHistory>${maxHistory}</maxHistory>
+                    <totalSizeCap>${totalSizeCap}</totalSizeCap>
+                </rollingPolicy>
+                <encoder>
+                    <pattern>${pattern}</pattern>
+                </encoder>
+            </appender>
+            <appender class="ch.qos.logback.classic.AsyncAppender" name="ASYNC_ALL">
+                <appender-ref ref="ALL_ROLLING"/>
+            </appender>
+        </then>
+    </if>
+    <!-- Error log -->
+    <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="ERROR_ROLLING">
+        <file>${logDirectory}/${errorLogName}.log</file>
+        <!-- Audit messages filter - deny audit messages -->
+        <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
+            <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">
+                <marker>AUDIT_MARKER</marker>
+            </evaluator>
+            <onMismatch>NEUTRAL</onMismatch>
+            <onMatch>DENY</onMatch>
+        </filter>
+        <!-- Transaction messages filter - deny Transaction messages -->
+        <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
+            <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">
+                <marker>TRANSACTION_MARKER</marker>
+            </evaluator>
+            <onMismatch>NEUTRAL</onMismatch>
+            <onMatch>DENY</onMatch>
+        </filter>
+        <!-- deny all events with a level below INFO, that is TRACE and DEBUG -->
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>INFO</level>
+        </filter>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${logDirectory}/${errorLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>${maxFileSize}</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <maxHistory>${maxHistory}</maxHistory>
+            <totalSizeCap>${totalSizeCap}</totalSizeCap>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${pattern}</pattern>
+        </encoder>
+    </appender>
+    <!-- Debug log -->
+    <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="DEBUG_ROLLING">
+        <file>${logDirectory}/${debugLogName}.log</file>
+        <!-- No need to deny audit messages - they are INFO only, will be denied
+                        anyway -->
+        <!-- Transaction messages filter - deny Transaction messages, there are
+                        some DEBUG level messages among them -->
+        <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
+            <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">
+                <marker>TRANSACTION_MARKER</marker>
+            </evaluator>
+            <onMismatch>NEUTRAL</onMismatch>
+            <onMatch>DENY</onMatch>
+        </filter>
+        <!-- accept DEBUG and TRACE level -->
+        <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
+            <evaluator class="ch.qos.logback.classic.boolex.GEventEvaluator">
+                <expression>e.level.toInt() &lt;= DEBUG.toInt()</expression>
+            </evaluator>
+            <OnMismatch>DENY</OnMismatch>
+            <OnMatch>NEUTRAL</OnMatch>
+        </filter>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${logDirectory}/${debugLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>${maxFileSize}</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <maxHistory>${maxHistory}</maxHistory>
+            <totalSizeCap>${totalSizeCap}</totalSizeCap>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${pattern}</pattern>
+        </encoder>
+    </appender>
+    <!-- Audit log -->
+    <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="AUDIT_ROLLING">
+        <file>${logDirectory}/${auditLogName}.log</file>
+        <!-- Audit messages filter - accept audit messages -->
+        <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
+            <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">
+                <marker>AUDIT_MARKER</marker>
+            </evaluator>
+            <onMismatch>DENY</onMismatch>
+            <onMatch>ACCEPT</onMatch>
+        </filter>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${logDirectory}/${auditLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>${maxFileSize}</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <maxHistory>${maxHistory}</maxHistory>
+            <totalSizeCap>${totalSizeCap}</totalSizeCap>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${pattern}</pattern>
+        </encoder>
+    </appender>
+    <!-- SdncTransaction log -->
+    <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="TRANSACTION_ROLLING">
+        <file>${logDirectory}/${transactionLogName}.log</file>
+        <!-- Transaction messages filter - accept audit messages -->
+        <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
+            <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">
+                <marker>TRANSACTION_MARKER</marker>
+            </evaluator>
+            <onMismatch>DENY</onMismatch>
+            <onMatch>ACCEPT</onMatch>
+        </filter>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${logDirectory}/${transactionLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>${maxFileSize}</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <maxHistory>${maxHistory}</maxHistory>
+            <totalSizeCap>${totalSizeCap}</totalSizeCap>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${pattern}</pattern>
+        </encoder>
+    </appender>
+    <!-- Asynchronicity Configurations -->
+    <appender class="ch.qos.logback.classic.AsyncAppender" name="ASYNC_DEBUG">
+        <queueSize>${queueSize}</queueSize>
+        <appender-ref ref="DEBUG_ROLLING"/>
+    </appender>
+    <appender class="ch.qos.logback.classic.AsyncAppender" name="ASYNC_TRANSACTION">
+        <queueSize>${queueSize}</queueSize>
+        <appender-ref ref="TRANSACTION_ROLLING"/>
+    </appender>
+    <appender class="ch.qos.logback.classic.AsyncAppender" name="ASYNC_ERROR">
+        <queueSize>${queueSize}</queueSize>
+        <appender-ref ref="ERROR_ROLLING"/>
+    </appender>
+    <appender class="ch.qos.logback.classic.AsyncAppender" name="ASYNC_AUDIT">
+        <queueSize>${queueSize}</queueSize>
+        <appender-ref ref="AUDIT_ROLLING"/>
+    </appender>
+    <root level="{{ .Values.logback.rootLogLevel }}">
+        <!--<appender-ref ref="ASYNC_ERROR"/>
+        <appender-ref ref="ASYNC_DEBUG"/>
+        <appender-ref ref="ASYNC_AUDIT"/>
+        <appender-ref ref="ASYNC_TRANSACTION"/>
+        <if condition='property("enable-all-log").equalsIgnoreCase("true")'>
+            <then>
+                <appender-ref ref="ALL_ROLLING"/>
+            </then>
+        </if>-->
+        <appender-ref ref="STDOUT"/>
+        <appender-ref ref="STDERR"/>
+    </root>
+    <logger level="INFO" name="org.openecomp.sdc"/>
+</configuration>
diff --git a/kubernetes/sdc/components/sdc-fe/resources/config/catalogfe/rest-configuration-info.yaml b/kubernetes/sdc/components/sdc-fe/resources/config/catalogfe/rest-configuration-info.yaml
new file mode 100644 (file)
index 0000000..ecedafe
--- /dev/null
@@ -0,0 +1,11 @@
+# rest read timeout - means no timeout
+readTimeoutInSec: 0
+
+# whether to ignore certificate
+ignoreCertificate: false
+
+# the connection pool size
+connectionPoolSize: 10
+
+# create connection timeout
+connectTimeoutInSec: 10
diff --git a/kubernetes/sdc/components/sdc-fe/resources/config/catalogfe/workspace-configuration.yaml b/kubernetes/sdc/components/sdc-fe/resources/config/catalogfe/workspace-configuration.yaml
new file mode 100644 (file)
index 0000000..f05b28c
--- /dev/null
@@ -0,0 +1,204 @@
+# following entries defines the workspace menus that are displayed according to type/subtype of the component in the workspace
+# in addition, they can also be disabled for specific roles.
+workspaceMenuConfiguration:
+  VFC:
+    - text: General
+      action: onMenuItemPressed
+      state: workspace.general
+    - text: Deployment Artifact
+      action: onMenuItemPressed
+      state: workspace.deployment_artifacts
+    - text: Information Artifact
+      action: onMenuItemPressed
+      state: workspace.information_artifacts
+    - text: TOSCA Artifacts
+      action: onMenuItemPressed
+      state: workspace.tosca_artifacts
+    - text: Properties
+      action: onMenuItemPressed
+      state: workspace.properties
+    - text: Attributes
+      action: onMenuItemPressed
+      state: workspace.attributes
+    - text: Req. & Capabilities
+      action: onMenuItemPressed
+      state: workspace.reqAndCap
+    - text: Activity Log
+      action: onMenuItemPressed
+      state: workspace.activity_log
+  VL:
+    - text: General
+      action: onMenuItemPressed
+      state: workspace.general
+    - text: Deployment Artifact
+      action: onMenuItemPressed
+      state: workspace.deployment_artifacts
+    - text: Information Artifact
+      action: onMenuItemPressed
+      state: workspace.information_artifacts
+    - text: TOSCA Artifacts
+      action: onMenuItemPressed
+      state: workspace.tosca_artifacts
+    - text: Properties
+      action: onMenuItemPressed
+      state: workspace.properties
+    - text: Attributes
+      action: onMenuItemPressed
+      state: workspace.attributes
+    - text: Req. & Capabilities
+      action: onMenuItemPressed
+      state: workspace.reqAndCap
+    - text: Activity Log
+      action: onMenuItemPressed
+      state: workspace.activity_log
+  CP:
+    - text: General
+      action: onMenuItemPressed
+      state: workspace.general
+    - text: Deployment Artifact
+      action: onMenuItemPressed
+      state: workspace.deployment_artifacts
+    - text: Information Artifact
+      action: onMenuItemPressed
+      state: workspace.information_artifacts
+    - text: TOSCA Artifacts
+      action: onMenuItemPressed
+      state: workspace.tosca_artifacts
+    - text: Properties
+      action: onMenuItemPressed
+      state: workspace.properties
+    - text: Attributes
+      action: onMenuItemPressed
+      state: workspace.attributes
+    - text: Req. & Capabilities
+      action: onMenuItemPressed
+      state: workspace.reqAndCap
+    - text: Activity Log
+      action: onMenuItemPressed
+      state: workspace.activity_log
+  VF:
+    - text: General
+      action: onMenuItemPressed
+      state: workspace.general
+    - text: Deployment Artifact
+      action: onMenuItemPressed
+      state: workspace.deployment_artifacts
+    - text: Information Artifact
+      action: onMenuItemPressed
+      state: workspace.information_artifacts
+    - text: TOSCA Artifacts
+      action: onMenuItemPressed
+      state: workspace.tosca_artifacts
+    - text: Composition
+      action: onMenuItemPressed
+      state: workspace.composition.details
+    - text: Operation
+      action: onMenuItemPressed
+      state: workspace.interface_operation
+    - text: Activity Log
+      action: onMenuItemPressed
+      state: workspace.activity_log
+    - text: Deployment
+      action: onMenuItemPressed
+      state: workspace.deployment
+    - text: Properties Assignment
+      action: onMenuItemPressed
+      state: workspace.properties_assignment
+    - text: Attributes & Outputs
+      action: onMenuItemPressed
+      state: workspace.attributes_outputs
+    - text: Req. & Capabilities
+      action: onMenuItemPressed
+      state: workspace.reqAndCapEditable
+  PNF:
+    - text: General
+      action: onMenuItemPressed
+      state: workspace.general
+    - text: Deployment Artifact
+      action: onMenuItemPressed
+      state: workspace.deployment_artifacts
+    - text: Information Artifact
+      action: onMenuItemPressed
+      state: workspace.information_artifacts
+    - text: TOSCA Artifacts
+      action: onMenuItemPressed
+      state: workspace.tosca_artifacts
+    - text: Composition
+      action: onMenuItemPressed
+      state: workspace.composition.details
+    - text: Operation
+      action: onMenuItemPressed
+      state: workspace.interface_operation
+    - text: Activity Log
+      action: onMenuItemPressed
+      state: workspace.activity_log
+    - text: Properties Assignment
+      action: onMenuItemPressed
+      state: workspace.properties_assignment
+    - text: Req. & Capabilities
+      action: onMenuItemPressed
+      state: workspace.reqAndCapEditable
+  CR:
+    - text: General
+      action: onMenuItemPressed
+      state: workspace.general
+    - text: Deployment Artifact
+      action: onMenuItemPressed
+      state: workspace.deployment_artifacts
+    - text: Information Artifact
+      action: onMenuItemPressed
+      state: workspace.information_artifacts
+    - text: TOSCA Artifacts
+      action: onMenuItemPressed
+      state: workspace.tosca_artifacts
+    - text: Composition
+      action: onMenuItemPressed
+      state: workspace.composition.details
+    - text: Activity Log
+      action: onMenuItemPressed
+      state: workspace.activity_log
+    - text: Properties Assignment
+      action: onMenuItemPressed
+      state: workspace.properties_assignment
+  SERVICE:
+    - text: General
+      action: onMenuItemPressed
+      state: workspace.general
+    - text: TOSCA Artifacts
+      action: onMenuItemPressed
+      state: workspace.tosca_artifacts
+    - text: Composition
+      action: onMenuItemPressed
+      state: workspace.composition.details
+    - text: Operation
+      action: onMenuItemPressed
+      state: workspace.interface_operation
+    - text: Activity Log
+      action: onMenuItemPressed
+      state: workspace.activity_log
+    - text: Management Workflow
+      action: onMenuItemPressed
+      state: workspace.management_workflow
+    - text: 'Network Call Flow '
+      action: onMenuItemPressed
+      state: workspace.network_call_flow
+    - text: Distribution
+      action: onMenuItemPressed
+      state: workspace.distribution
+      disabledRoles:
+        - ADMIN
+        - TESTER
+        - GOVERNOR
+        - DESIGNER
+    - text: Deployment
+      action: onMenuItemPressed
+      state: workspace.deployment
+    - text: Properties Assignment
+      action: onMenuItemPressed
+      state: workspace.properties_assignment
+    - text: Outputs
+      action: onMenuItemPressed
+      state: workspace.outputs_assignment
+    - text: Req. & Capabilities
+      action: onMenuItemPressed
+      state: workspace.reqAndCapEditable
diff --git a/kubernetes/sdc/components/sdc-fe/resources/config/feEtcConfig/rewrite-root-to-sdc1.xml b/kubernetes/sdc/components/sdc-fe/resources/config/feEtcConfig/rewrite-root-to-sdc1.xml
new file mode 100644 (file)
index 0000000..e0862a5
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0"?><!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_3.dtd">
+<Configure id="Server" class="org.eclipse.jetty.server.Server">
+  <Ref refid="Rewrite">
+    <Call name="addRule">
+      <Arg>
+        <New class="org.eclipse.jetty.rewrite.handler.RedirectPatternRule">
+          <Set name="pattern" type="String"/>
+          <Set name="location">/sdc1</Set>
+        </New>
+      </Arg>
+    </Call>
+  </Ref>
+  <!-- ===================== -->
+  <!-- DefaultHandler config -->
+  <!-- ===================== -->
+  <Ref id="DefaultHandler">
+    <Set name="showContexts">false</Set>
+  </Ref>
+</Configure>
diff --git a/kubernetes/sdc/components/sdc-fe/resources/config/onboardingfe/onboarding_configuration.yaml b/kubernetes/sdc/components/sdc-fe/resources/config/onboardingfe/onboarding_configuration.yaml
new file mode 100644 (file)
index 0000000..e0ed8cd
--- /dev/null
@@ -0,0 +1,9 @@
+notifications:
+  pollingIntervalMsec: 2000
+  selectionSize: 100
+  beHost: sdc-onboarding-be.{{ include "common.namespace" . }}.svc.cluster.local
+  {{- if .Values.disableHttp }}
+  beHttpPort: {{ .Values.onboarding_be.https_port }}
+  {{- else }}
+  beHttpPort: {{ .Values.onboarding_be.http_port }}
+  {{- end }}
diff --git a/kubernetes/sdc/components/sdc-fe/resources/config/readyProbe/combined-liveness.sh b/kubernetes/sdc/components/sdc-fe/resources/config/readyProbe/combined-liveness.sh
new file mode 100644 (file)
index 0000000..28ad30a
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+# Variables
+
+INTERNAL_PORT=8181
+HEALTHCHECK_URL="http://localhost:8181/sdc1/rest/healthCheck"
+
+# 1. TCP Socket Check for Internal Port
+
+nc -z localhost $INTERNAL_PORT
+TCP_STATUS=$?
+
+if [ $TCP_STATUS -ne 0 ]; then
+    echo "TCP check failed: Internal port $INTERNAL_PORT is not open."
+    exit 1
+fi
+
+# 2. Cassandra Health Check from API Response using jq
+
+CASSANDRA_STATUS=$(curl -s $HEALTHCHECK_URL | jq -r '.componentsInfo[] | select(.healthCheckComponent == "CASSANDRA") | .healthCheckStatus')
+
+if [ "$CASSANDRA_STATUS" != "UP" ]; then
+    echo "Cassandra API check failed: HealthCheck status is $CASSANDRA_STATUS, not UP."
+    exit 1
+fi
+
+echo "Liveness check passed: Internal port $INTERNAL_PORT is open, and Cassandra is healthy."
+exit 0
diff --git a/kubernetes/sdc/components/sdc-fe/resources/config/readyProbe/ready-probe.sh b/kubernetes/sdc/components/sdc-fe/resources/config/readyProbe/ready-probe.sh
new file mode 100644 (file)
index 0000000..6606ed3
--- /dev/null
@@ -0,0 +1,27 @@
+#!/bin/sh
+# Determine the protocol and ports from Helm values
+disableHttp={{ .Values.disableHttp | quote }}  # Use the value from values.yaml
+http_port={{ .Values.fe_conf.http_port | quote }}       # Use the HTTP port from values.yaml
+https_port={{ .Values.fe_conf.https_port | quote }}     # Use the HTTPS port from values.yaml
+
+# Determine the protocol and port
+if [ "$disableHttp" = "true" ]; then
+  protocol="https"
+  port="$https_port"
+else
+  protocol="http"
+  port="$http_port"
+fi
+
+# Perform health check
+health_check_http_code=$(curl -k --max-time 5 -o /dev/null -w '%{http_code}' "$protocol://127.0.0.1:$port/sdc1/rest/healthCheck")
+
+# Output the health check result
+echo "Health check http status: $health_check_http_code"
+
+# Check if the response code is 200
+if [ "$health_check_http_code" -eq 200 ]; then
+  exit 0
+else
+  exit 1
+fi
diff --git a/kubernetes/sdc/components/sdc-fe/resources/config/startdConfig/http.ini b/kubernetes/sdc/components/sdc-fe/resources/config/startdConfig/http.ini
new file mode 100644 (file)
index 0000000..019c9b2
--- /dev/null
@@ -0,0 +1,29 @@
+# ---------------------------------------
+# Module: http
+#{{ .Values.http_option }}
+
+### HTTP Connector Configuration
+
+## Connector host/address to bind to
+# jetty.http.host=0.0.0.0
+
+## Connector port to listen on
+jetty.http.port={{ .Values.fe_conf.http_port }}
+
+## Connector idle timeout in milliseconds
+jetty.http.idleTimeout=30000
+
+## Connector socket linger time in seconds (-1 to disable)
+# jetty.http.soLingerTime=-1
+
+## Number of acceptors (-1 picks default based on number of cores)
+# jetty.http.acceptors=-1
+
+## Number of selectors (-1 picks default based on number of cores)
+# jetty.http.selectors=-1
+
+## ServerSocketChannel backlog (0 picks platform default)
+# jetty.http.acceptorQueueSize=0
+
+## Thread priority delta to give to acceptor threads
+# jetty.http.acceptorPriorityDelta=0
diff --git a/kubernetes/sdc/components/sdc-fe/resources/config/startdConfig/https.ini b/kubernetes/sdc/components/sdc-fe/resources/config/startdConfig/https.ini
new file mode 100644 (file)
index 0000000..debf27d
--- /dev/null
@@ -0,0 +1,29 @@
+# ---------------------------------------
+# Module: https
+--module=https
+
+### HTTPS Connector Configuration
+
+## Connector host/address to bind to
+# jetty.https.host=0.0.0.0
+
+## Connector port to listen on
+jetty.https.port={{ .Values.fe_conf.https_port }}
+
+## Connector idle timeout in milliseconds
+jetty.https.idleTimeout=30000
+
+## Connector socket linger time in seconds (-1 to disable)
+# jetty.https.soLingerTime=-1
+
+## Number of acceptors (-1 picks default based on number of cores)
+# jetty.https.acceptors=-1
+
+## Number of selectors (-1 picks default based on number of cores)
+# jetty.https.selectors=-1
+
+## ServerSocketChannel backlog (0 picks platform default)
+# jetty.https.acceptorQueueSize=0
+
+## Thread priority delta to give to acceptor threads
+# jetty.https.acceptorPriorityDelta=0
diff --git a/kubernetes/sdc/components/sdc-fe/resources/config/startdConfig/ssl.ini b/kubernetes/sdc/components/sdc-fe/resources/config/startdConfig/ssl.ini
new file mode 100644 (file)
index 0000000..bca1cd0
--- /dev/null
@@ -0,0 +1,95 @@
+## TLS(SSL) Connector Configuration
+# ---------------------------------------
+# Module: ssl
+--module=ssl
+
+### TLS(SSL) Connector Configuration
+
+## Connector host/address to bind to
+# jetty.ssl.host=0.0.0.0
+
+## Connector port to listen on
+jetty.ssl.port={{ .Values.fe_conf.https_port }}
+
+## Connector idle timeout in milliseconds
+# jetty.ssl.idleTimeout=30000
+
+## Connector socket linger time in seconds (-1 to disable)
+# jetty.ssl.soLingerTime=-1
+
+## Number of acceptors (-1 picks default based on number of cores)
+# jetty.ssl.acceptors=-1
+
+## Number of selectors (-1 picks default based on number of cores)
+# jetty.ssl.selectors=-1
+
+## ServerSocketChannel backlog (0 picks platform default)
+# jetty.ssl.acceptorQueueSize=0
+
+## Thread priority delta to give to acceptor threads
+# jetty.ssl.acceptorPriorityDelta=0
+
+## Whether request host names are checked to match any SNI names
+# jetty.ssl.sniHostCheck=true
+
+## max age in seconds for a Strict-Transport-Security response header (default -1)
+# jetty.ssl.stsMaxAgeSeconds=31536000
+
+## include subdomain property in any Strict-Transport-Security header (default false)
+# jetty.ssl.stsIncludeSubdomains=true
+
+### SslContextFactory Configuration
+## Note that OBF passwords are not secure, just protected from casual observation
+## See http://www.eclipse.org/jetty/documentation/current/configuring-security-secure-passwords.html
+
+## Keystore file path (relative to $jetty.base)
+{{- if .Values.keystore_path }}
+jetty.sslContext.keyStorePath={{ .Values.keystore_path }}
+{{- end }}
+
+## Truststore file path (relative to $jetty.base)
+{{- if .Values.truststore_path }}
+jetty.sslContext.trustStorePath={{ .Values.truststore_path }}
+{{- end }}
+
+## Keystore password
+{{- if .Values.keystore_password }}
+jetty.sslContext.keyStorePassword={{ .Values.keystore_password }}
+{{- end }}
+
+## Keystore type and provider
+# jetty.sslContext.keyStoreType=JKS
+# jetty.sslContext.keyStoreProvider=
+
+## KeyManager password
+{{- if .Values.keystore_password }}
+jetty.sslContext.keyManagerPassword={{ .Values.keystore_password }}
+{{- end }}
+
+## Truststore password
+{{- if .Values.truststore_password }}
+jetty.sslContext.trustStorePassword={{ .Values.truststore_password }}
+{{- end }}
+
+## Truststore type and provider
+# jetty.sslContext.trustStoreType=JKS
+# jetty.sslContext.trustStoreProvider=
+
+## Whether client certificate authentication is required
+jetty.sslContext.needClientAuth={{ if .Values.truststore_password }}true{{ else }}false{{ end }}
+
+## Whether client certificate authentication is desired
+# jetty.sslContext.wantClientAuth=false
+
+## Whether cipher order is significant (since java 8 only)
+# jetty.sslContext.useCipherSuitesOrder=true
+
+## Set the size of the SslSession cache
+# jetty.sslContext.sslSessionCacheSize=-1
+
+## Set the timeout (in seconds) of the SslSession cache timeout
+# jetty.sslContext.sslSessionTimeout=-1
+
+## Allow SSL renegotiation
+# jetty.sslContext.renegotiationAllowed=true
+# jetty.sslContext.renegotiationLimit=5
diff --git a/kubernetes/sdc/components/sdc-fe/templates/autoscaling.yaml b/kubernetes/sdc/components/sdc-fe/templates/autoscaling.yaml
new file mode 100644 (file)
index 0000000..b7f2653
--- /dev/null
@@ -0,0 +1,32 @@
+{{- if .Values.autoscaling.enabled }}
+apiVersion: autoscaling/v2
+kind: HorizontalPodAutoscaler
+metadata:
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
+  labels: {{- include "common.labels" . | nindent 4 }}
+spec:
+  scaleTargetRef:
+    apiVersion: apps/v1
+    kind: Deployment
+    name: {{ include "common.fullname" . }}
+  minReplicas: {{ .Values.autoscaling.minReplicas }}
+  maxReplicas: {{ .Values.autoscaling.maxReplicas }}
+  metrics:
+    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}
+    - type: Resource
+      resource:
+        name: cpu
+        target:
+          type: Utilization
+          averageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}
+    {{- end }}
+    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}
+    - type: Resource
+      resource:
+        name: memory
+        target:
+          type: Utilization
+          averageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}
+    {{- end }}
+{{- end }}
index 948a3fe..65c6acd 100644 (file)
@@ -18,7 +18,7 @@
 apiVersion: v1
 kind: ConfigMap
 metadata:
-  name: {{ include "common.fullname" . }}-logging-configmap
+  name: {{ include "common.fullname" . }}-plugins-configmap
   namespace: {{ include "common.namespace" . }}
   labels:
     app: {{ include "common.name" . }}
@@ -26,12 +26,21 @@ metadata:
     release: {{ include "common.release" . }}
     heritage: {{ .Release.Service }}
 data:
-{{ tpl (.Files.Glob "resources/config/logging/*").AsConfig . | indent 2 }}
+{{ tpl (.Files.Glob "resources/config/plugins/*").AsConfig . | indent 2 }}
 ---
 apiVersion: v1
 kind: ConfigMap
 metadata:
-  name: {{ include "common.fullname" . }}-plugins-configmap
+  name: {{ include "common.fullname" . }}-readiness-liveness-probe
+  namespace: {{ include "common.namespace" . }}
+  labels: {{- include "common.labels" . | nindent 4 }}
+data:
+{{ tpl (.Files.Glob "resources/config/readyProbe/*").AsConfig . | indent 2 }}
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ include "common.release" . }}-catalog-fe-config
   namespace: {{ include "common.namespace" . }}
   labels:
     app: {{ include "common.name" . }}
@@ -39,4 +48,56 @@ metadata:
     release: {{ include "common.release" . }}
     heritage: {{ .Release.Service }}
 data:
-{{ tpl (.Files.Glob "resources/config/plugins/*").AsConfig . | indent 2 }}
+{{ tpl (.Files.Glob "resources/config/catalogfe/*").AsConfig . | indent 2 }}
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ include "common.release" . }}-onboarding-fe-config
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ include "common.release" . }}
+    heritage: {{ .Release.Service }}
+data:
+{{ tpl (.Files.Glob "resources/config/onboardingfe/*").AsConfig . | indent 2 }}
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ include "common.release" . }}-startd-config
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ include "common.release" . }}
+    heritage: {{ .Release.Service }}
+data:
+{{ tpl (.Files.Glob "resources/config/startdConfig/*").AsConfig . | indent 2 }}
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ include "common.release" . }}-fe-etc-config
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ include "common.release" . }}
+    heritage: {{ .Release.Service }}
+data:
+{{ tpl (.Files.Glob "resources/config/feEtcConfig/*").AsConfig . | indent 2 }}
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ include "common.release" . }}-ready-probe-script
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ include "common.release" . }}
+    heritage: {{ .Release.Service }}
+data:
+{{ tpl (.Files.Glob "resources/config/readyProbe/*").AsConfig . | indent 2 }}
index bfdf547..7a15fff 100644 (file)
@@ -1,7 +1,7 @@
 {{/*
 # Copyright © 2017 Amdocs, Bell Canada
 # Modifications Copyright © 2018 AT&T, ZTE
-# Modifications Copyright © 2023 Deutsche Telekom
+# Modifications Copyright © 2023,2025 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -21,43 +21,56 @@ kind: Deployment
 metadata: {{- include "common.resourceMetadata" . | nindent 2 }}
 spec:
   selector: {{- include "common.selectors" . | nindent 4 }}
+  {{- if not .Values.autoscaling.enabled }}
   replicas: {{ .Values.replicaCount }}
+  {{- end }}
+  revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
+  minReadySeconds: {{ .Values.minReadySeconds }}
+  strategy:
+    type: {{ .Values.updateStrategy.type }}
+    rollingUpdate:
+      maxUnavailable: {{ .Values.updateStrategy.maxUnavailable }}
+      maxSurge: {{ .Values.updateStrategy.maxSurge }}
   template:
     metadata: {{- include "common.templateMetadata" . | nindent 6 }}
     spec:
       initContainers:
-      - name: {{ include "common.name" . }}-job-completion
-        image: {{ include "repositoryGenerator.image.readiness" . }}
-        imagePullPolicy: "{{ .Values.global.pullPolicy | default .Values.pullPolicy }}"
-        command:
-        - /app/ready.py
-        args:
-        - --job-name
-        - {{ include "common.release" . }}-sdc-be
-        - "-t"
-        - "35"
-        env:
-        - name: NAMESPACE
-          valueFrom:
-            fieldRef:
-              apiVersion: v1
-              fieldPath: metadata.namespace
-        resources:
-          limits:
-            cpu: "100m"
-            memory: "500Mi"
-          requests:
-            cpu: "3m"
-            memory: "20Mi"
+        {{ include "common.readinessCheck.waitFor" . | nindent 8 }}
+        - name: {{ include "common.name" . }}-copy-jetty
+          image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
+          imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+          command: ["/bin/sh","-c"]
+          args: ['cp -a /app/jetty/ /app/jetty_rw/; mkdir /app/jetty_rw/jetty/ruby_temp']
+          resources:
+            limits:
+              cpu: 400m
+              memory: 400Mi
+            requests:
+              cpu: 30m
+              memory: 200Mi
+          {{ include "common.containerSecurityContext" . | indent 10 | trim }}
+          volumeMounts:
+            - name: {{ include "common.fullname" . }}-jetty
+              mountPath: /app/jetty_rw
       containers:
         - name: {{ include "common.name" . }}
           image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+          command:
+          - /bin/sh
+          - -c
+          - |
+            JAVA_OPTIONS="$JAVA_OPTIONS -Dconfig.home=$JETTY_BASE/config -Dlog.home=$JETTY_BASE/logs -Dlogback.configurationFile=$JETTY_BASE/config/catalog-fe/logback.xml -Dconfiguration.yaml=$JETTY_BASE/config/catalog-fe/configuration.yaml -Donboarding_configuration.yaml=$JETTY_BASE/config/onboarding-fe/onboarding_configuration.yaml -Djavax.net.ssl.trustStore=$JETTY_BASE/etc/org.onap.sdc.trust.jks -Djavax.net.ssl.trustStorePassword=z+KEj;t+,KN^iimSiS89e#p0"
+            cd /app/jetty
+            sh -x /app/jetty/ready-probe.sh
+            java $JAVA_OPTIONS -jar "${JETTY_HOME}/start.jar"
           ports: {{ include "common.containerPorts" . | nindent 12  }}
           {{ if eq .Values.liveness.enabled true }}
           livenessProbe:
-            tcpSocket:
-              port: {{ .Values.service.internalPort }}
+            exec:
+              command:
+                - /bin/sh
+                - /opt/scripts/combined-liveness.sh
             initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
             periodSeconds: {{ .Values.liveness.periodSeconds }}
             timeoutSeconds: {{ .Values.liveness.timeoutSeconds }}
@@ -65,8 +78,10 @@ spec:
             failureThreshold: {{ .Values.liveness.failureThreshold }}
           {{ end }}
           readinessProbe:
-            tcpSocket:
-              port: {{ .Values.service.internalPort }}
+            exec:
+              command:
+                - /bin/sh
+                - /opt/scripts/combined-liveness.sh
             initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
             periodSeconds: {{ .Values.readiness.periodSeconds }}
             timeoutSeconds: {{ .Values.readiness.timeoutSeconds }}
@@ -81,7 +96,10 @@ spec:
             successThreshold: {{ .Values.startup.successThreshold }}
             failureThreshold: {{ .Values.startup.failureThreshold }}
           resources: {{ include "common.resources" . | nindent 12 }}
+          {{ include "common.containerSecurityContext" . | indent 10 | trim }}
           env:
+          - name: TMPDIR
+            value: '/app/jetty/ruby_temp'
           - name: ENVNAME
             value: {{ .Values.env.name }}
           - name: HOST_IP
@@ -91,22 +109,59 @@ spec:
           - name: JAVA_OPTIONS
             value: {{ .Values.config.javaOptions }}
           volumeMounts:
-          - name: sdc-environments
-            mountPath: /app/jetty/chef-solo/environments/
-          - name: logs
+          - name: {{ include "common.fullname" . }}-jetty
+            mountPath: /app/jetty
+            subPath: jetty
+          - name: {{ include "common.fullname" . }}-logs
             mountPath: /var/log/onap
+          - name: {{ include "common.fullname" . }}-tmp
+            mountPath: /tmp
           - name: configs
             mountPath: /app/jetty/config/catalog-fe/plugins-configuration.yaml
             subPath: plugins-configuration.yaml
-          - name: logback
-            mountPath: /tmp/logback.xml
+          - name: {{ include "common.fullname" . }}-ready-probe-script
+            mountPath: /app/jetty/ready-probe.sh
+            subPath: ready-probe.sh
+          - name: {{ include "common.fullname" . }}-fe-etc-config
+            mountPath: /app/jetty/etc/rewrite-root-to-sdc1.xml
+            subPath: rewrite-root-to-sdc1.xml
+          - name: {{ include "common.fullname" . }}-startd-config
+            mountPath: /app/jetty/start.d/http.ini
+            subPath: http.ini
+          - name: {{ include "common.fullname" . }}-startd-config
+            mountPath: /app/jetty/start.d/https.ini
+            subPath: https.ini
+          - name: {{ include "common.fullname" . }}-startd-config
+            mountPath: /app/jetty/start.d/ssl.ini
+            subPath: ssl.ini
+          - name: {{ include "common.fullname" . }}-onboarding-fe-config
+            mountPath: /app/jetty/config/onboarding-fe/onboarding_configuration.yaml
+            subPath: onboarding_configuration.yaml
+          - name: {{ include "common.fullname" . }}-catalog-fe-config
+            mountPath: /app/jetty/config/catalog-fe/configuration.yaml
+            subPath: configuration.yaml
+          - name: {{ include "common.fullname" . }}-catalog-fe-config
+            mountPath: /app/jetty/config/catalog-fe/workspace-configuration.yaml
+            subPath: workspace-configuration.yaml
+          - name: {{ include "common.fullname" . }}-catalog-fe-config
+            mountPath: /app/jetty/config/catalog-fe/ecomp-error-configuration.yaml
+            subPath: ecomp-error-configuration.yaml
+          - name: {{ include "common.fullname" . }}-catalog-fe-config
+            mountPath: /app/jetty/config/catalog-fe/logback.xml
             subPath: logback.xml
+          - name: {{ include "common.fullname" . }}-catalog-fe-config
+            mountPath: /app/jetty/config/catalog-fe/rest-configuration-info.yaml
+            subPath: rest-configuration-info.yaml
+          - name: {{ include "common.fullname" . }}-readiness-liveness-probe
+            mountPath: /opt/scripts/combined-liveness.sh
+            subPath: combined-liveness.sh
           lifecycle:
             postStart:
               exec:
-                command: ["/bin/sh", "-c", "export LOG=wait_logback.log; touch $LOG; export SRC=/tmp/logback.xml; export DST=/app/jetty/config/catalog-fe/; while [ ! -e $DST ]; do echo 'Waiting for $DST...' >> $LOG; sleep 5; done; sleep 2; /bin/cp -f $SRC $DST; echo 'Done' >> $LOG"]
+                command: ["/bin/sh", "-c", "export LOG=/tmp/wait_logback.log; touch $LOG; export SRC=/tmp/logback.xml; export DST=/app/jetty/config/catalog-fe/; while [ ! -e $DST ]; do echo 'Waiting for $DST...' >> $LOG; sleep 5; done; sleep 2; /bin/cp -f $SRC $DST; echo 'Done' >> $LOG"]
         # side car containers
         {{ include "common.log.sidecar" . | nindent 8 }}
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
       serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
       volumes:
         {{ include "common.log.volumes" (dict "dot" . "configMapNamePrefix" (tpl .Values.logConfigMapNamePrefix .)) | nindent 8 }}
@@ -114,9 +169,6 @@ spec:
           configMap:
             name : {{ include "common.fullname" . }}-plugins-configmap
             defaultMode: 0777
-        - name: logback
-          configMap:
-            name : {{ include "common.fullname" . }}-logging-configmap
         - name: sdc-environments
         {{- if .Values.global.aafEnabled }}
           emptyDir: { medium: "Memory" }
@@ -125,6 +177,37 @@ spec:
           configMap:
             name: {{ include "common.release" . }}-sdc-environments-configmap
             defaultMode: 0755
-        - name: logs
-          emptyDir: {}
+        - name: {{ include "common.fullname" . }}-logs
+          emptyDir:
+            sizeLimit: {{ .Values.volumes.logSizeLimit }}
+        - name: {{ include "common.fullname" . }}-tmp
+          emptyDir:
+            sizeLimit: {{ .Values.volumes.tmpSizeLimit }}
+        - name: {{ include "common.fullname" . }}-jetty
+          emptyDir:
+            sizeLimit: {{ .Values.volumes.jettySizeLimit }}
+        - name: {{ include "common.fullname" . }}-ready-probe-script
+          configMap:
+            name: {{ include "common.release" . }}-ready-probe-script
+            defaultMode: 0755
+        - name: {{ include "common.fullname" . }}-fe-etc-config
+          configMap:
+            name: {{ include "common.release" . }}-fe-etc-config
+            defaultMode: 0644
+        - name: {{ include "common.fullname" . }}-startd-config
+          configMap:
+            name: {{ include "common.release" . }}-startd-config
+            defaultMode: 0755
+        - name: {{ include "common.fullname" . }}-onboarding-fe-config
+          configMap:
+            name: {{ include "common.release" . }}-onboarding-fe-config
+            defaultMode: 0755
+        - name: {{ include "common.fullname" . }}-catalog-fe-config
+          configMap:
+            name: {{ include "common.release" . }}-catalog-fe-config
+            defaultMode: 0755
+        - name: {{ include "common.fullname" . }}-readiness-liveness-probe
+          configMap:
+            name: {{ include "common.fullname" . }}-readiness-liveness-probe
+            defaultMode: 0755
       {{- include "common.imagePullSecrets" . | nindent 6 }}
index 5745f06..4c93bfd 100644 (file)
@@ -1,5 +1,6 @@
 # Copyright © 2017 Amdocs, Bell Canada
 # Modifications Copyright © 2018 AT&T, ZTE
+# Modifications Copyright © 2025 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -23,7 +24,7 @@ global:
 # Application configuration defaults.
 #################################################################
 # application image
-image: onap/sdc-frontend:1.13.6
+image: onap/sdc-frontend:1.14.1
 pullPolicy: Always
 
 config:
@@ -57,7 +58,7 @@ affinity: {}
 liveness:
   initialDelaySeconds: 1
   periodSeconds: 10
-  timeoutSeconds: 15
+  timeoutSeconds: 30
   successThreshold: 1
   failureThreshold: 3
   # necessary to disable liveness probe when setting breakpoints
@@ -67,7 +68,7 @@ liveness:
 readiness:
   initialDelaySeconds: 1
   periodSeconds: 10
-  timeoutSeconds: 15
+  timeoutSeconds: 30
   successThreshold: 1
   failureThreshold: 3
 
@@ -86,18 +87,6 @@ service:
     - name: http
       port: 8181
       nodePort: '07'
-  annotations:
-    msb.onap.org/service-info: |
-      {{ if .Values.global.msbEnabled -}}[
-        {
-          "serviceName": "sdc-ui",
-          "version": "v1",
-          "url": "/sdc1",
-          "protocol": "UI",
-          "visualRange":"0|1",
-          "port": "{{ .Values.service.internalPort }}",
-        }
-      ]{{ end }}
 
 ingress:
   enabled: false
@@ -111,8 +100,6 @@ ingress:
 serviceMesh:
   authorizationPolicy:
     authorizedPrincipals:
-      - serviceAccount: consul-read
-      - serviceAccount: consul-server-read
       - serviceAccount: istio-ingress
         namespace: istio-ingress
 
@@ -142,7 +129,73 @@ serviceAccount:
   roles:
     - read
 
+readinessCheck:
+  wait_for:
+    jobs:
+      - '{{ include "common.release" . }}-sdc-be'
+
 #Log configuration
 log:
   path: /var/log/onap
 logConfigMapNamePrefix: '{{ include "common.fullname" . }}'
+
+securityContext:
+  user_id: 1000
+  group_id: 101
+
+volumes:
+  logSizeLimit: 64Mi
+  jettySizeLimit: 400Mi
+  tmpSizeLimit: 500Mi
+
+autoscaling:
+  enabled: true
+  minReplicas: 1
+  maxReplicas: 3
+  targetCPUUtilizationPercentage: 75
+
+# number of ReplicaSets that should be retained for the Deployment
+revisionHistoryLimit: 1
+
+# the minimum number of seconds that a newly created Pod should be ready
+minReadySeconds: 30
+updateStrategy:
+  type: RollingUpdate
+  # The number of pods that can be unavailable during the update process
+  maxUnavailable: 0
+  # The number of pods that can be created above the desired amount of pods during an update
+  maxSurge: 1
+
+# Script parameters
+be_http_port: 8080
+
+fe_conf:
+  http_port: 8181
+  https_port: 9443
+  domain_name: "sdc"
+  basic_auth: "true"
+  user_name: "testName"
+  user_pass: "testPass"
+  http_port_pro: 8181
+
+facade_vip:
+facade_port:
+user_name: "testName"
+user_pass: "testPass"
+access_restriction_key:
+permittedAncestors:
+disableHttp: false
+
+onboarding_be:
+  https_port: 8445
+  http_port: 8081
+
+http_option : http_option
+https_port: 8443
+keystore_path:
+truststore_path:
+keystore_password:
+truststore_password:
+
+logback:
+  rootLogLevel: INFO
index d114dc8..4efd7f6 100644 (file)
@@ -2,6 +2,7 @@
 # Copyright (c) 2021 Nokia. All rights reserved.
 # Modifications Copyright © 2021 Orange
 # Modifications Copyright © 2021 Nordix Foundation
+# Modifications Copyright © 2025 Deutsche Telekom
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 apiVersion: v2
 description: ONAP Service Design and Creation Helm Validator
 name: sdc-helm-validator
-version: 13.0.0
+version: 13.0.1
 
 dependencies:
-  - name: repositoryGenerator
+  - name: common
     version: ~13.x-0
     repository: '@local'
-  - name: common
+  - name: repositoryGenerator
     version: ~13.x-0
     repository: '@local'
index f3572ca..894bfd6 100644 (file)
@@ -1,6 +1,7 @@
 {{/*
 # ===========LICENSE_START========================================================
 # Copyright (c) 2021 Nokia. All rights reserved.
+# Modifications Copyright © 2025 Deutsche Telekom
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -25,15 +26,23 @@ spec:
   template:
     metadata: {{- include "common.templateMetadata" . | nindent 6 }}
     spec:
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
       containers:
         - name: {{ include "common.name" . }}
           image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
           resources: {{ include "common.resources" . | nindent 12 }}
           ports: {{ include "common.containerPorts" . | nindent 12 }}
+          {{ include "common.containerSecurityContext" . | indent 10 | trim }}
           env:
             - name: LOG_LEVEL
               value: {{ .Values.config.loggingLevel }}
+            - name: TRACING_ENABLED
+              value: {{ .Values.global.tracing.enabled | quote }}
+            - name: COLLECTOR_URL
+              value: {{ .Values.global.tracing.collector.baseUrl }}
+            - name: TRACING_SAMPLING_PROBABILITY
+              value: {{ .Values.global.tracing.sampling.probability | quote }}
           livenessProbe:
             httpGet:
               path: {{ .Values.liveness.path }}
@@ -42,6 +51,14 @@ spec:
             periodSeconds: {{ .Values.liveness.periodSeconds }}
             successThreshold: {{ .Values.liveness.successThreshold }}
             failureThreshold: {{ .Values.liveness.failureThreshold }}
+          readinessProbe:
+            httpGet:
+              path: {{ .Values.readiness.path }}
+              port: {{ .Values.readiness.port }}
+            initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
+            periodSeconds: {{ .Values.readiness.periodSeconds }}
+            successThreshold: {{ .Values.readiness.successThreshold }}
+            failureThreshold: {{ .Values.readiness.failureThreshold }}
           startupProbe:
             httpGet:
               path: {{ .Values.startup.path }}
@@ -50,4 +67,11 @@ spec:
             periodSeconds: {{ .Values.startup.periodSeconds }}
             successThreshold: {{ .Values.startup.successThreshold }}
             failureThreshold: {{ .Values.startup.failureThreshold }}
+          volumeMounts:
+            - mountPath: /tmp
+              name: tmp
+      volumes:
+        - name: tmp
+          emptyDir:
+            sizeLimit: {{ .Values.volumes.tmpSizeLimit }}
       {{- include "common.imagePullSecrets" . | nindent 6 }}
index 3470770..b96e3c1 100644 (file)
@@ -1,5 +1,6 @@
 # ===========LICENSE_START========================================================
 # Copyright (c) 2021 Nokia. All rights reserved.
+# Modifications Copyright © 2025 Deutsche Telekom
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # Global values
 global:
   pullPolicy: Always
+  tracing:
+    enabled: false
+    collector:
+      baseUrl: http://jaeger-collector.istio-config:9411
+    sampling:
+      probability: 1.0 # percentage of requests that are sampled (between 0-1/0%-100%)
 
-image: onap/sdc-helm-validator:1.3.1
+image: onap/sdc-helm-validator:1.3.2
 containerPort: &svc_port 8080
 
 config:
@@ -46,6 +53,15 @@ liveness:
   # in debugger so K8s doesn't restart unresponsive container
   enabled: true
 
+readiness:
+  port: *port
+  path: /actuator/health
+  initialDelaySeconds: 1
+  periodSeconds: 10
+  timeoutSeconds: 1
+  successThreshold: 1
+  failureThreshold: 3
+
 startup:
   initialDelaySeconds: 10
   periodSeconds: 10
@@ -59,10 +75,10 @@ resources:
   small:
     limits:
       cpu: "1"
-      memory: "500Mi"
+      memory: "1Gi"
     requests:
       cpu: "0.5"
-      memory: "500Mi"
+      memory: "1Gi"
   large:
     limits:
       cpu: "2"
@@ -71,3 +87,10 @@ resources:
       cpu: "1"
       memory: "1Gi"
   unlimited: {}
+
+securityContext:
+  user_id: 1000
+  group_id: 65533
+
+volumes:
+  tmpSizeLimit: 200Mi
index 0e998b7..10c8b11 100644 (file)
@@ -2,6 +2,7 @@
 # Modifications Copyright © 2018 AT&T, ZTE
 # Modifications Copyright © 2021 Orange
 # Modifications Copyright © 2021 Nordix Foundation
+# Modifications Copyright © 2025 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 apiVersion: v2
 description: ONAP Service Design and Creation Onboarding API
 name: sdc-onboarding-be
-version: 13.0.0
+version: 13.0.5
 
 dependencies:
+  - name: common
+    version: ~13.x-0
+    repository: '@local'
   - name: repositoryGenerator
     version: ~13.x-0
     repository: '@local'
   - name: serviceAccount
     version: ~13.x-0
     repository: '@local'
+  - name: readinessCheck
+    version: ~13.x-0
+    repository: '@local'
index ee22ff2..30409b8 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>\r
-<!--\r
-# Copyright © 2018 Amdocs, Bell Canada, AT&T, ZTE\r
-#\r
-# Licensed under the Apache License, Version 2.0 (the "License");\r
-# you may not use this file except in compliance with the License.\r
-# You may obtain a copy of the License at\r
-#\r
-#       http://www.apache.org/licenses/LICENSE-2.0\r
-#\r
-# Unless required by applicable law or agreed to in writing, software\r
-# distributed under the License is distributed on an "AS IS" BASIS,\r
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-# See the License for the specific language governing permissions and\r
-# limitations under the License.\r
--->\r
-<configuration scan="true" scanPeriod="3 seconds">\r
-    <property name="logDir" value="/var/log/onap"/>\r
-    <property name="componentName" scope="system" value="sdc"/>\r
-    <property name="subComponentName" scope="system" value="sdc-onboarding-be"/>\r
-    <property name="logDirectory" value="${logDir}/${componentName}/${subComponentName}"/>\r
-    <property file="${config.home}/catalog-be/configuration.yaml"/>\r
-    <property name="enable-all-log" scope="context" value="false"/>\r
-    <!--  log file names -->\r
-    <property name="errorLogName" value="error"/>\r
-    <property name="metricsLogName" value="metrics"/>\r
-    <property name="auditLogName" value="audit"/>\r
-    <property name="debugLogName" value="debug"/>\r
-    <property name="transactionLogName" value="transaction"/>\r
-    <property name="allLogName" value="all"/>\r
-    <property name="queueSize" value="256"/>\r
-    <property name="maxFileSize" value="50MB"/>\r
-    <property name="maxHistory" value="30"/>\r
-    <property name="totalSizeCap" value="10GB"/>\r
-    <property name="pattern"\r
-        value="%d{&quot;yyyy-MM-dd'T'HH:mm:ss.SSSXXX&quot;, UTC}\t[%thread]\t%-5level\t%logger{36}\t%replace(%replace(%replace(%mdc){'\t','\\\\t'}){', ','\t'}){'\n', '\\\\n'}\t%replace(%replace(%msg){'\n', '\\\\n'}){'\t','\\\\t'}%n"/>\r
-\r
-    <!-- STDOUT -->\r
-    <appender class="ch.qos.logback.core.ConsoleAppender" name="STDOUT">\r
-        <encoder>\r
-            <pattern>${pattern}</pattern>\r
-        </encoder>\r
-    </appender>\r
-\r
-    <!-- STDERR -->\r
-    <appender class="ch.qos.logback.core.ConsoleAppender" name="STDERR">\r
-        <filter class="ch.qos.logback.classic.filter.LevelFilter">\r
-            <level>ERROR</level>\r
-            <onMatch>ACCEPT</onMatch>\r
-            <onMismatch>DENY</onMismatch>\r
-        </filter>\r
-        <encoder>\r
-            <pattern>"%d [%thread] %-5level %logger{1024} - %msg%n"</pattern>\r
-        </encoder>\r
-    </appender>\r
-\r
-    <!-- All log -->\r
-    <if condition='property("enable-all-log").equalsIgnoreCase("true")'>\r
-        <then>\r
-            <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="ALL_ROLLING">\r
-                <file>${logDirectory}/${allLogName}.log</file>\r
-                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">\r
-                    <fileNamePattern>${logDirectory}/${allLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>\r
-                    <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">\r
-                        <maxFileSize>${maxFileSize}</maxFileSize>\r
-                    </timeBasedFileNamingAndTriggeringPolicy>\r
-                    <maxHistory>${maxHistory}</maxHistory>\r
-                    <totalSizeCap>${totalSizeCap}</totalSizeCap>\r
-                </rollingPolicy>\r
-                <encoder>\r
-                    <pattern>${pattern}</pattern>\r
-                </encoder>\r
-            </appender>\r
-            <appender class="ch.qos.logback.classic.AsyncAppender" name="ASYNC_ALL">\r
-                <appender-ref ref="ALL_ROLLING"/>\r
-            </appender>\r
-        </then>\r
-    </if>\r
-    <!-- Error log -->\r
-    <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="ERROR_ROLLING">\r
-        <file>${logDirectory}/${errorLogName}.log</file>\r
-        <!-- Audit messages filter - deny audit messages -->\r
-        <filter class="ch.qos.logback.core.filter.EvaluatorFilter">\r
-            <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">\r
-                <marker>AUDIT_MARKER</marker>\r
-            </evaluator>\r
-            <onMismatch>NEUTRAL</onMismatch>\r
-            <onMatch>DENY</onMatch>\r
-        </filter>\r
-        <!-- Transaction messages filter - deny Transaction messages -->\r
-        <filter class="ch.qos.logback.core.filter.EvaluatorFilter">\r
-            <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">\r
-                <marker>TRANSACTION_MARKER</marker>\r
-            </evaluator>\r
-            <onMismatch>NEUTRAL</onMismatch>\r
-            <onMatch>DENY</onMatch>\r
-        </filter>\r
-        <!-- deny all events with a level below INFO, that is TRACE and DEBUG -->\r
-        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">\r
-            <level>INFO</level>\r
-        </filter>\r
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">\r
-            <fileNamePattern>${logDirectory}/${errorLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>\r
-            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">\r
-                <maxFileSize>${maxFileSize}</maxFileSize>\r
-            </timeBasedFileNamingAndTriggeringPolicy>\r
-            <maxHistory>${maxHistory}</maxHistory>\r
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>\r
-        </rollingPolicy>\r
-        <encoder>\r
-            <pattern>${pattern}</pattern>\r
-        </encoder>\r
-    </appender>\r
-    <!-- Debug log -->\r
-    <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="DEBUG_ROLLING">\r
-        <file>${logDirectory}/${debugLogName}.log</file>\r
-        <!-- No need to deny audit messages - they are INFO only, will be denied anyway -->\r
-        <!-- Transaction messages filter - deny Transaction messages, there are some DEBUG level messages among them -->\r
-        <filter class="ch.qos.logback.core.filter.EvaluatorFilter">\r
-            <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">\r
-                <marker>TRANSACTION_MARKER</marker>\r
-            </evaluator>\r
-            <onMismatch>NEUTRAL</onMismatch>\r
-            <onMatch>DENY</onMatch>\r
-        </filter>\r
-        <!-- accept DEBUG and TRACE level -->\r
-        <filter class="ch.qos.logback.core.filter.EvaluatorFilter">\r
-            <evaluator class="ch.qos.logback.classic.boolex.GEventEvaluator">\r
-                <expression>e.level.toInt() &lt;= DEBUG.toInt()</expression>\r
-            </evaluator>\r
-            <OnMismatch>DENY</OnMismatch>\r
-            <OnMatch>NEUTRAL</OnMatch>\r
-        </filter>\r
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">\r
-            <fileNamePattern>${logDirectory}/${debugLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>\r
-            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">\r
-                <maxFileSize>${maxFileSize}</maxFileSize>\r
-            </timeBasedFileNamingAndTriggeringPolicy>\r
-            <maxHistory>${maxHistory}</maxHistory>\r
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>\r
-        </rollingPolicy>\r
-        <encoder>\r
-            <pattern>${pattern}</pattern>\r
-        </encoder>\r
-    </appender>\r
-    <!-- Audit log -->\r
-    <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="AUDIT_ROLLING">\r
-        <file>${logDirectory}/${auditLogName}.log</file>\r
-        <!-- Audit messages filter - accept audit messages -->\r
-        <filter class="ch.qos.logback.core.filter.EvaluatorFilter">\r
-            <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">\r
-                <marker>AUDIT_MARKER</marker>\r
-            </evaluator>\r
-            <onMismatch>DENY</onMismatch>\r
-            <onMatch>ACCEPT</onMatch>\r
-        </filter>\r
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">\r
-            <fileNamePattern>${logDirectory}/${auditLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>\r
-            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">\r
-                <maxFileSize>${maxFileSize}</maxFileSize>\r
-            </timeBasedFileNamingAndTriggeringPolicy>\r
-            <maxHistory>${maxHistory}</maxHistory>\r
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>\r
-        </rollingPolicy>\r
-        <encoder>\r
-            <pattern>${pattern}</pattern>\r
-        </encoder>\r
-    </appender>\r
-    <!-- SdncTransaction log -->\r
-    <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="TRANSACTION_ROLLING">\r
-        <file>${logDirectory}/${transactionLogName}.log</file>\r
-        <!-- Transaction messages filter - accept audit messages -->\r
-        <filter class="ch.qos.logback.core.filter.EvaluatorFilter">\r
-            <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">\r
-                <marker>TRANSACTION_MARKER</marker>\r
-            </evaluator>\r
-            <onMismatch>DENY</onMismatch>\r
-            <onMatch>ACCEPT</onMatch>\r
-        </filter>\r
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">\r
-            <fileNamePattern>${logDirectory}/${transactionLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>\r
-            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">\r
-                <maxFileSize>${maxFileSize}</maxFileSize>\r
-            </timeBasedFileNamingAndTriggeringPolicy>\r
-            <maxHistory>${maxHistory}</maxHistory>\r
-            <totalSizeCap>${totalSizeCap}</totalSizeCap>\r
-        </rollingPolicy>\r
-        <encoder>\r
-            <pattern>${pattern}</pattern>\r
-        </encoder>\r
-    </appender>\r
-    <!-- Asynchronicity Configurations -->\r
-    <appender class="ch.qos.logback.classic.AsyncAppender" name="ASYNC_DEBUG">\r
-        <queueSize>${queueSize}</queueSize>\r
-        <appender-ref ref="DEBUG_ROLLING"/>\r
-    </appender>\r
-    <appender class="ch.qos.logback.classic.AsyncAppender" name="ASYNC_TRANSACTION">\r
-        <queueSize>${queueSize}</queueSize>\r
-        <appender-ref ref="TRANSACTION_ROLLING"/>\r
-    </appender>\r
-    <appender class="ch.qos.logback.classic.AsyncAppender" name="ASYNC_ERROR">\r
-        <queueSize>${queueSize}</queueSize>\r
-        <appender-ref ref="ERROR_ROLLING"/>\r
-    </appender>\r
-    <appender class="ch.qos.logback.classic.AsyncAppender" name="ASYNC_AUDIT">\r
-        <queueSize>${queueSize}</queueSize>\r
-        <appender-ref ref="AUDIT_ROLLING"/>\r
-    </appender>\r
-    <root level="INFO">\r
-        <appender-ref ref="ASYNC_ERROR"/>\r
-        <appender-ref ref="ASYNC_DEBUG"/>\r
-        <appender-ref ref="ASYNC_AUDIT"/>\r
-        <appender-ref ref="ASYNC_TRANSACTION"/>\r
-        <if condition='property("enable-all-log").equalsIgnoreCase("true")'>\r
-            <then>\r
-                <appender-ref ref="ALL_ROLLING"/>\r
-            </then>\r
-        </if>\r
-        <appender-ref ref="STDOUT"/>\r
-        <appender-ref ref="STDERR"/>\r
-    </root>\r
-    <logger level="INFO" name="org.openecomp.sdc"/>\r
-</configuration>\r
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+# Copyright © 2018 Amdocs, Bell Canada, AT&T, ZTE
+#
+# 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.
+-->
+<configuration scan="true" scanPeriod="3 seconds">
+    <property name="logDir" value="/var/log/onap"/>
+    <property name="componentName" scope="system" value="sdc"/>
+    <property name="subComponentName" scope="system" value="sdc-onboarding-be"/>
+    <property name="logDirectory" value="${logDir}/${componentName}/${subComponentName}"/>
+    <property file="${config.home}/catalog-be/configuration.yaml"/>
+    <property name="enable-all-log" scope="context" value="false"/>
+    <!--  log file names -->
+    <property name="errorLogName" value="error"/>
+    <property name="metricsLogName" value="metrics"/>
+    <property name="auditLogName" value="audit"/>
+    <property name="debugLogName" value="debug"/>
+    <property name="transactionLogName" value="transaction"/>
+    <property name="allLogName" value="all"/>
+    <property name="queueSize" value="256"/>
+    <property name="maxFileSize" value="50MB"/>
+    <property name="maxHistory" value="30"/>
+    <property name="totalSizeCap" value="10GB"/>
+    <property name="pattern"
+        value="%d{&quot;yyyy-MM-dd'T'HH:mm:ss.SSSXXX&quot;, UTC}\t[%thread]\t%-5level\t%logger{36}\t%replace(%replace(%replace(%mdc){'\t','\\\\t'}){', ','\t'}){'\n', '\\\\n'}\t%replace(%replace(%msg){'\n', '\\\\n'}){'\t','\\\\t'}%n"/>
+
+    <!-- STDOUT -->
+    <appender class="ch.qos.logback.core.ConsoleAppender" name="STDOUT">
+        <encoder>
+            <pattern>${pattern}</pattern>
+        </encoder>
+    </appender>
+
+    <!-- STDERR -->
+    <appender class="ch.qos.logback.core.ConsoleAppender" name="STDERR">
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>ERROR</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+        <encoder>
+            <pattern>"%d [%thread] %-5level %logger{1024} - %msg%n"</pattern>
+        </encoder>
+    </appender>
+
+    <!-- All log -->
+    <if condition='property("enable-all-log").equalsIgnoreCase("true")'>
+        <then>
+            <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="ALL_ROLLING">
+                <file>${logDirectory}/${allLogName}.log</file>
+                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+                    <fileNamePattern>${logDirectory}/${allLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+                    <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                        <maxFileSize>${maxFileSize}</maxFileSize>
+                    </timeBasedFileNamingAndTriggeringPolicy>
+                    <maxHistory>${maxHistory}</maxHistory>
+                    <totalSizeCap>${totalSizeCap}</totalSizeCap>
+                </rollingPolicy>
+                <encoder>
+                    <pattern>${pattern}</pattern>
+                </encoder>
+            </appender>
+            <appender class="ch.qos.logback.classic.AsyncAppender" name="ASYNC_ALL">
+                <appender-ref ref="ALL_ROLLING"/>
+            </appender>
+        </then>
+    </if>
+    <!-- Error log -->
+    <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="ERROR_ROLLING">
+        <file>${logDirectory}/${errorLogName}.log</file>
+        <!-- Audit messages filter - deny audit messages -->
+        <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
+            <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">
+                <marker>AUDIT_MARKER</marker>
+            </evaluator>
+            <onMismatch>NEUTRAL</onMismatch>
+            <onMatch>DENY</onMatch>
+        </filter>
+        <!-- Transaction messages filter - deny Transaction messages -->
+        <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
+            <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">
+                <marker>TRANSACTION_MARKER</marker>
+            </evaluator>
+            <onMismatch>NEUTRAL</onMismatch>
+            <onMatch>DENY</onMatch>
+        </filter>
+        <!-- deny all events with a level below INFO, that is TRACE and DEBUG -->
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>INFO</level>
+        </filter>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${logDirectory}/${errorLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>${maxFileSize}</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <maxHistory>${maxHistory}</maxHistory>
+            <totalSizeCap>${totalSizeCap}</totalSizeCap>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${pattern}</pattern>
+        </encoder>
+    </appender>
+    <!-- Debug log -->
+    <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="DEBUG_ROLLING">
+        <file>${logDirectory}/${debugLogName}.log</file>
+        <!-- No need to deny audit messages - they are INFO only, will be denied anyway -->
+        <!-- Transaction messages filter - deny Transaction messages, there are some DEBUG level messages among them -->
+        <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
+            <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">
+                <marker>TRANSACTION_MARKER</marker>
+            </evaluator>
+            <onMismatch>NEUTRAL</onMismatch>
+            <onMatch>DENY</onMatch>
+        </filter>
+        <!-- accept DEBUG and TRACE level -->
+        <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
+            <evaluator class="ch.qos.logback.classic.boolex.GEventEvaluator">
+                <expression>e.level.toInt() &lt;= DEBUG.toInt()</expression>
+            </evaluator>
+            <OnMismatch>DENY</OnMismatch>
+            <OnMatch>NEUTRAL</OnMatch>
+        </filter>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${logDirectory}/${debugLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>${maxFileSize}</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <maxHistory>${maxHistory}</maxHistory>
+            <totalSizeCap>${totalSizeCap}</totalSizeCap>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${pattern}</pattern>
+        </encoder>
+    </appender>
+    <!-- Audit log -->
+    <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="AUDIT_ROLLING">
+        <file>${logDirectory}/${auditLogName}.log</file>
+        <!-- Audit messages filter - accept audit messages -->
+        <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
+            <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">
+                <marker>AUDIT_MARKER</marker>
+            </evaluator>
+            <onMismatch>DENY</onMismatch>
+            <onMatch>ACCEPT</onMatch>
+        </filter>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${logDirectory}/${auditLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>${maxFileSize}</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <maxHistory>${maxHistory}</maxHistory>
+            <totalSizeCap>${totalSizeCap}</totalSizeCap>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${pattern}</pattern>
+        </encoder>
+    </appender>
+    <!-- SdncTransaction log -->
+    <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="TRANSACTION_ROLLING">
+        <file>${logDirectory}/${transactionLogName}.log</file>
+        <!-- Transaction messages filter - accept audit messages -->
+        <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
+            <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">
+                <marker>TRANSACTION_MARKER</marker>
+            </evaluator>
+            <onMismatch>DENY</onMismatch>
+            <onMatch>ACCEPT</onMatch>
+        </filter>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${logDirectory}/${transactionLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>${maxFileSize}</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <maxHistory>${maxHistory}</maxHistory>
+            <totalSizeCap>${totalSizeCap}</totalSizeCap>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${pattern}</pattern>
+        </encoder>
+    </appender>
+    <!-- Asynchronicity Configurations -->
+    <appender class="ch.qos.logback.classic.AsyncAppender" name="ASYNC_DEBUG">
+        <queueSize>${queueSize}</queueSize>
+        <appender-ref ref="DEBUG_ROLLING"/>
+    </appender>
+    <appender class="ch.qos.logback.classic.AsyncAppender" name="ASYNC_TRANSACTION">
+        <queueSize>${queueSize}</queueSize>
+        <appender-ref ref="TRANSACTION_ROLLING"/>
+    </appender>
+    <appender class="ch.qos.logback.classic.AsyncAppender" name="ASYNC_ERROR">
+        <queueSize>${queueSize}</queueSize>
+        <appender-ref ref="ERROR_ROLLING"/>
+    </appender>
+    <appender class="ch.qos.logback.classic.AsyncAppender" name="ASYNC_AUDIT">
+        <queueSize>${queueSize}</queueSize>
+        <appender-ref ref="AUDIT_ROLLING"/>
+    </appender>
+    <root level="{{ .Values.logback.rootLogLevel }}">
+        <!--<appender-ref ref="ASYNC_ERROR"/>
+        <appender-ref ref="ASYNC_DEBUG"/>
+        <appender-ref ref="ASYNC_AUDIT"/>
+        <appender-ref ref="ASYNC_TRANSACTION"/>
+        <if condition='property("enable-all-log").equalsIgnoreCase("true")'>
+            <then>
+                <appender-ref ref="ALL_ROLLING"/>
+            </then>
+        </if>-->
+        <appender-ref ref="STDOUT"/>
+        <appender-ref ref="STDERR"/>
+    </root>
+    <logger level="INFO" name="org.openecomp.sdc"/>
+</configuration>
diff --git a/kubernetes/sdc/components/sdc-onboarding-be/resources/config/onboarding-config/config-helmvalidator.yaml b/kubernetes/sdc/components/sdc-onboarding-be/resources/config/onboarding-config/config-helmvalidator.yaml
new file mode 100644 (file)
index 0000000..fe13217
--- /dev/null
@@ -0,0 +1,6 @@
+hValidatorEnabled: {{ .Values.sdcHelmValidator.enabled }}
+hValidatorUrl: {{ .Values.sdcHelmValidator.url }}
+hValidatorVersion: {{ .Values.sdcHelmValidator.helmVersion }}
+hValidatorDeployable: {{ .Values.sdcHelmValidator.deployable }}
+hValidatorLintable: {{ .Values.sdcHelmValidator.lintable }}
+hValidatorStrictLintable: {{ .Values.sdcHelmValidator.strictLintable }}
diff --git a/kubernetes/sdc/components/sdc-onboarding-be/resources/config/onboarding-config/config-vnfrepo.yaml b/kubernetes/sdc/components/sdc-onboarding-be/resources/config/onboarding-config/config-vnfrepo.yaml
new file mode 100644 (file)
index 0000000..8b8bdec
--- /dev/null
@@ -0,0 +1,4 @@
+vnfRepoPort: {{ .Values.VnfRepo.vnfRepoPort }}
+vnfRepoHost: refrepo.{{include "common.namespace" .}}
+getVnfUri: /onapapi/vnfsdk-marketplace/v1/PackageResource/csars
+downloadVnfUri: /onapapi/vnfsdk-marketplace/v1/PackageResource/csars/%s/files/app/jetty/config/onboarding-be
diff --git a/kubernetes/sdc/components/sdc-onboarding-be/resources/config/onboarding-config/externaltesting-configuration.yaml b/kubernetes/sdc/components/sdc-onboarding-be/resources/config/onboarding-config/externaltesting-configuration.yaml
new file mode 100644 (file)
index 0000000..a617f13
--- /dev/null
@@ -0,0 +1,5 @@
+client:
+  enabled: true
+endpoints:
+  - {{ .Values.EXTTEST.ep1_config }}
+  - {{ .Values.EXTTEST.ep2_config }}
diff --git a/kubernetes/sdc/components/sdc-onboarding-be/resources/config/onboarding-config/features.properties b/kubernetes/sdc/components/sdc-onboarding-be/resources/config/onboarding-config/features.properties
new file mode 100644 (file)
index 0000000..54c4dea
--- /dev/null
@@ -0,0 +1 @@
+EXTERNAL_LICENSE=true
diff --git a/kubernetes/sdc/components/sdc-onboarding-be/resources/config/onboarding-config/onboarding_configuration.yaml b/kubernetes/sdc/components/sdc-onboarding-be/resources/config/onboarding-config/onboarding_configuration.yaml
new file mode 100644 (file)
index 0000000..665d891
--- /dev/null
@@ -0,0 +1,72 @@
+catalogNotificationsConfig:
+  # catalog backend protocol
+  catalogBeProtocol: {{ if .Values.global.disableHttp }}https{{- else }}http{{- end }}
+  catalogBeHttpPort: {{ (.Values.global.BE).http_port }}
+  catalogBeSslPort: {{ (.Values.global.BE).https_port }}
+  catalogBeFqdn: sdc-be.{{ include "common.namespace" . }}
+  # do not remove the "" from catalog_notification_url. it is escaping % characters coming from AUTO.json
+  catalogNotificationUrl: {{ .Values.ONBOARDING_BE.catalog_notification_url | quote }}
+
+notifications:
+  pollingIntervalMsec: 2000
+  selectionSize: 100
+  beHost: sdc-onboarding-be.{{ include "common.namespace" . }}
+  beHttpPort: {{ .Values.ONBOARDING_BE.http_port }}
+
+cassandraConfig:
+  cassandraHosts: [ {{ .Values.global.sdc_cassandra.serviceName }}.{{ include "common.namespace" . }} ]
+  cassandraPort: {{ .Values.cassandra.cassandra_port }}
+  localDataCenter: {{ .Values.global.sdc_cassandra.dataCenter }}
+  reconnectTimeout: 30000
+  socketReadTimeout: {{ .Values.cassandra.socket_read_timeout }}
+  socketConnectTimeout: {{ .Values.cassandra.socket_connect_timeout }}
+  authenticate: true
+  username: {{ .Values.cassandra.cassandra_user }}
+  password: {{ .Values.cassandra.cassandra_password }}
+  ssl: {{ .Values.config.cassandraSslEnabled }}
+  truststorePath: {{ .Values.JETTY_BASE }}/etc/truststore
+  truststorePassword: {{ .Values.cassandra.truststore_password }}
+
+authCookie:
+  securityKey: MlB1WHFpSHNVTWdJZU1PcQ==
+  maxSessionTimeOut: 86400000
+  sessionIdleTimeOut: 3600000
+  cookieName: "AuthenticationCookie"
+  path: /
+  domain: ""
+  isHttpOnly: true
+  # redirect variable name from portal.properties file
+  redirectURL: "redirect_url"
+  excludedUrls: [ '/.*' ]
+  onboardingExcludedUrls: [ '/.*' ]
+
+basicAuth:
+  enabled: {{ .Values.basic_auth.enabled }}
+  userName: {{ .Values.basic_auth.user_name }}
+  userPass: {{ .Values.basic_auth.user_pass }}
+  excludedUrls: "/v1.0/healthcheck"
+
+zipValidation:
+  ignoreManifest: false
+
+externalCsarStore:
+  storageType: NONE # NONE, MINIO
+  endpoint:
+    host: 127.0.0.1
+    port: 9000
+    secure: false
+  credentials:
+    accessKey: "login"
+    secretKey: "password"
+  foldersToStrip:
+    - Files/images
+  sizeLimit: 10000000
+  thresholdEntries: 10000
+  tempPath: "/home/onap/temp/"
+  uploadPartSize: 200000000
+
+#Space separated list of permitted ancestors
+permittedAncestors: {{ .Values.permittedAncestors | join " " }}
+
+# Comma separated list of excluded URLs by the DataValidatorFilter
+dataValidatorFilterExcludedUrls: "/healthCheck,/followed,/authorize"
diff --git a/kubernetes/sdc/components/sdc-onboarding-be/resources/config/ready-probe.sh b/kubernetes/sdc/components/sdc-onboarding-be/resources/config/ready-probe.sh
new file mode 100644 (file)
index 0000000..54ed696
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/sh
+health_check_http_code=$(curl -k --max-time 5 -o /dev/null -w '%{http_code}' -X GET --header "Accept: application/json" "{{ if .Values.global.disableHttp }}https://127.0.0.1:{{ .Values.ONBOARDING_BE.https_port }}{{- else -}}http://127.0.0.1:{{ .Values.ONBOARDING_BE.http_port }}{{- end -}}/onboarding-api/v1.0/healthcheck")
+if [ "$health_check_http_code" -eq 200 ]; then
+  exit 0
+else
+  echo "Health check http status: $health_check_http_code"
+  exit 1
+fi
diff --git a/kubernetes/sdc/components/sdc-onboarding-be/resources/config/start.d/http.ini b/kubernetes/sdc/components/sdc-onboarding-be/resources/config/start.d/http.ini
new file mode 100644 (file)
index 0000000..e4e66c5
--- /dev/null
@@ -0,0 +1,29 @@
+# Module: http
+--module=http
+
+### HTTP Connector Configuration
+
+## Connector host/address to bind to
+# jetty.http.host=0.0.0.0
+
+## Connector port to listen on
+#jetty.http.port=8081
+jetty.http.port= {{ .Values.ONBOARDING_BE.http_port }}
+
+## Connector idle timeout in milliseconds
+jetty.http.idleTimeout=30000
+
+## Connector socket linger time in seconds (-1 to disable)
+# jetty.http.soLingerTime=-1
+
+## Number of acceptors (-1 picks default based on number of cores)
+# jetty.http.acceptors=-1
+
+## Number of selectors (-1 picks default based on number of cores)
+# jetty.http.selectors=-1
+
+## ServerSocketChannel backlog (0 picks platform default)
+# jetty.http.acceptorQueueSize=0
+
+## Thread priority delta to give to acceptor threads
+# jetty.http.acceptorPriorityDelta=0
diff --git a/kubernetes/sdc/components/sdc-onboarding-be/resources/config/start.d/https.ini b/kubernetes/sdc/components/sdc-onboarding-be/resources/config/start.d/https.ini
new file mode 100644 (file)
index 0000000..ec92157
--- /dev/null
@@ -0,0 +1,31 @@
+# ---------------------------------------
+# Module: https
+--module=https
+
+### HTTPS Connector Configuration
+
+## Connector host/address to bind to
+# jetty.https.host=0.0.0.0
+
+## Connector port to listen on
+
+#jetty.https.port=8445
+jetty.https.port= {{ .Values.ONBOARDING_BE.https_port }}
+
+## Connector idle timeout in milliseconds
+jetty.https.idleTimeout=30000
+
+## Connector socket linger time in seconds (-1 to disable)
+# jetty.https.soLingerTime=-1
+
+## Number of acceptors (-1 picks default based on number of cores)
+# jetty.https.acceptors=-1
+
+## Number of selectors (-1 picks default based on number of cores)
+# jetty.https.selectors=-1
+
+## ServerSocketChannel backlog (0 picks platform default)
+# jetty.https.acceptorQueueSize=0
+
+## Thread priority delta to give to acceptor threads
+# jetty.https.acceptorPriorityDelta=0
diff --git a/kubernetes/sdc/components/sdc-onboarding-be/resources/config/start.d/ssl.ini b/kubernetes/sdc/components/sdc-onboarding-be/resources/config/start.d/ssl.ini
new file mode 100644 (file)
index 0000000..70ceffb
--- /dev/null
@@ -0,0 +1,98 @@
+# ---------------------------------------
+# Module: ssl
+--module=ssl
+
+### TLS(SSL) Connector Configuration
+
+## Connector host/address to bind to
+# jetty.ssl.host=0.0.0.0
+
+## Connector port to listen on
+
+#jetty.ssl.port=8445
+jetty.ssl.port = {{ .Values.ONBOARDING_BE.https_port }}
+
+## Connector idle timeout in milliseconds
+# jetty.ssl.idleTimeout=30000
+
+## Connector socket linger time in seconds (-1 to disable)
+# jetty.ssl.soLingerTime=-1
+
+## Number of acceptors (-1 picks default based on number of cores)
+# jetty.ssl.acceptors=-1
+
+## Number of selectors (-1 picks default based on number of cores)
+# jetty.ssl.selectors=-1
+
+## ServerSocketChannel backlog (0 picks platform default)
+# jetty.ssl.acceptorQueueSize=0
+
+## Thread priority delta to give to acceptor threads
+# jetty.ssl.acceptorPriorityDelta=0
+
+## Whether request host names are checked to match any SNI names
+# jetty.ssl.sniHostCheck=true
+
+## max age in seconds for a Strict-Transport-Security response header (default -1)
+# jetty.ssl.stsMaxAgeSeconds=31536000
+
+## include subdomain property in any Strict-Transport-Security header (default false)
+# jetty.ssl.stsIncludeSubdomains=true
+
+### SslContextFactory Configuration
+## Note that OBF passwords are not secure, just protected from casual observation
+## See http://www.eclipse.org/jetty/documentation/current/configuring-security-secure-passwords.html
+
+## Keystore file path (relative to $jetty.base)
+jetty.sslContext.keyStorePath=etc/org.onap.sdc.p12
+
+## Truststore file path (relative to $jetty.base)
+jetty.sslContext.trustStorePath=etc/org.onap.sdc.trust.jks
+
+## Keystore password
+# jetty.sslContext.keyStorePassword=OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4
+
+#jetty.sslContext.keyStorePassword=?(kP!Yur![*!Y5!E^f(ZKc31
+jetty.sslContext.keyStorePassword= {{ .Values.jetty.keyStorePassword }}
+
+## Keystore type and provider
+# jetty.sslContext.keyStoreType=JKS
+# jetty.sslContext.keyStoreProvider=
+
+## KeyManager password
+# jetty.sslContext.keyManagerPassword=OBF:1u2u1wml1z7s1z7a1wnl1u2g
+
+#jetty.sslContext.keyManagerPassword=?(kP!Yur![*!Y5!E^f(ZKc31
+jetty.sslContext.keyManagerPassword= {{ .Values.jetty.keyManagerPassword }}
+
+## Truststore password
+# jetty.sslContext.trustStorePassword=OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4
+
+#jetty.sslContext.trustStorePassword=z+KEj;t+,KN^iimSiS89e#p0
+jetty.sslContext.trustStorePassword= {{ .Values.jetty.trustStorePassword }}
+
+## Truststore type and provider
+# jetty.sslContext.trustStoreType=JKS
+# jetty.sslContext.trustStoreProvider=
+
+## whether client certificate authentication is required
+# jetty.sslContext.needClientAuth=false
+
+## Whether client certificate authentication is desired
+# jetty.sslContext.wantClientAuth=false
+
+## Whether cipher order is significant (since java 8 only)
+# jetty.sslContext.useCipherSuitesOrder=true
+
+## To configure Includes / Excludes for Cipher Suites or Protocols see tweak-ssl.xml example at
+## https://www.eclipse.org/jetty/documentation/current/configuring-ssl.html#configuring-sslcontextfactory-cipherSuites
+
+## Set the size of the SslSession cache
+# jetty.sslContext.sslSessionCacheSize=-1
+
+## Set the timeout (in seconds) of the SslSession cache timeout
+# jetty.sslContext.sslSessionTimeout=-1
+
+## Allow SSL renegotiation
+# jetty.sslContext.renegotiationAllowed=true
+# jetty.sslContext.renegotiationLimit=5
diff --git a/kubernetes/sdc/components/sdc-onboarding-be/templates/autoscaling.yaml b/kubernetes/sdc/components/sdc-onboarding-be/templates/autoscaling.yaml
new file mode 100644 (file)
index 0000000..b7f2653
--- /dev/null
@@ -0,0 +1,32 @@
+{{- if .Values.autoscaling.enabled }}
+apiVersion: autoscaling/v2
+kind: HorizontalPodAutoscaler
+metadata:
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
+  labels: {{- include "common.labels" . | nindent 4 }}
+spec:
+  scaleTargetRef:
+    apiVersion: apps/v1
+    kind: Deployment
+    name: {{ include "common.fullname" . }}
+  minReplicas: {{ .Values.autoscaling.minReplicas }}
+  maxReplicas: {{ .Values.autoscaling.maxReplicas }}
+  metrics:
+    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}
+    - type: Resource
+      resource:
+        name: cpu
+        target:
+          type: Utilization
+          averageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}
+    {{- end }}
+    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}
+    - type: Resource
+      resource:
+        name: memory
+        target:
+          type: Utilization
+          averageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}
+    {{- end }}
+{{- end }}
index aa632f3..06e6b79 100644 (file)
@@ -27,3 +27,68 @@ metadata:
     heritage: {{ .Release.Service }}
 data:
 {{ tpl (.Files.Glob "resources/config/logging/*").AsConfig . | indent 2 }}
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ include "common.release" . }}-sdc-onboarding-be-configmap
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ include "common.release" . }}
+    heritage: {{ .Release.Service }}
+data:
+{{ tpl (.Files.Glob "resources/config/onboarding-config/*").AsConfig . | indent 2 }}
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ include "common.release" . }}-sdc-http-04-configmap
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ include "common.release" . }}
+    heritage: {{ .Release.Service }}
+data:
+{{ tpl (.Files.Glob "resources/config/start.d/http.ini").AsConfig . | indent 2 }}
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ include "common.release" . }}-sdc-https-04-configmap
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ include "common.release" . }}
+    heritage: {{ .Release.Service }}
+data:
+{{ tpl (.Files.Glob "resources/config/start.d/https.ini").AsConfig . | indent 2 }}
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ include "common.release" . }}-sdc-ssl-04-configmap
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ include "common.release" . }}
+    heritage: {{ .Release.Service }}
+data:
+{{ tpl (.Files.Glob "resources/config/start.d/ssl.ini").AsConfig . | indent 2 }}
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ include "common.release" . }}-sdc-ready-probe-configmap
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ include "common.release" . }}
+    heritage: {{ .Release.Service }}
+data:
+{{ tpl (.Files.Glob "resources/config/ready-probe.sh").AsConfig . | indent 2 }}
index 24715bc..90664a8 100644 (file)
@@ -21,32 +21,37 @@ kind: Deployment
 metadata: {{- include "common.resourceMetadata" . | nindent 2 }}
 spec:
   selector: {{- include "common.selectors" . | nindent 4 }}
+  {{- if not .Values.autoscaling.enabled }}
   replicas: {{ .Values.replicaCount }}
+  {{- end }}
+  revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
+  minReadySeconds: {{ .Values.minReadySeconds }}
+  strategy:
+    type: {{ .Values.updateStrategy.type }}
+    rollingUpdate:
+      maxUnavailable: {{ .Values.updateStrategy.maxUnavailable }}
+      maxSurge: {{ .Values.updateStrategy.maxSurge }}
   template:
     metadata: {{- include "common.templateMetadata" . | nindent 6 }}
     spec:
       initContainers:
-      - name: {{ include "common.name" . }}-job-completion
-        image: {{ include "repositoryGenerator.image.readiness" . }}
-        imagePullPolicy: "{{ .Values.global.pullPolicy | default .Values.pullPolicy }}"
-        command:
-        - /app/ready.py
-        args:
-        - --job-name
-        - {{ include "common.release" . }}-sdc-onboarding-be
-        env:
-        - name: NAMESPACE
-          valueFrom:
-            fieldRef:
-              apiVersion: v1
-              fieldPath: metadata.namespace
-        resources:
-          limits:
-            cpu: "100m"
-            memory: "500Mi"
-          requests:
-            cpu: "3m"
-            memory: "20Mi"
+       {{ include "common.readinessCheck.waitFor" . | nindent 8 }}
+        - name: {{ include "common.name" . }}-copy-jetty
+          image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
+          imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+          command: ["/bin/sh","-c"]
+          args: ['cp -a /app/jetty/ /app/jetty_rw/; mkdir /app/jetty_rw/jetty/ruby_temp']
+          resources:
+            limits:
+              cpu: 400m
+              memory: 400Mi
+            requests:
+              cpu: 30m
+              memory: 200Mi
+          {{ include "common.containerSecurityContext" . | indent 10 | trim }}
+          volumeMounts:
+            - name: {{ include "common.fullname" . }}-jetty
+              mountPath: /app/jetty_rw
       containers:
         - name: {{ include "common.name" . }}
           image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
@@ -55,7 +60,7 @@ spec:
           {{ if eq .Values.liveness.enabled true }}
           livenessProbe:
             httpGet:
-              path: /onboarding-api/v1.0/healthcheck
+              path: {{ .Values.liveness.path }}
               port: {{ .Values.service.internalPort }}
             initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
             periodSeconds: {{ .Values.liveness.periodSeconds }}
@@ -65,7 +70,7 @@ spec:
           {{ end }}
           readinessProbe:
             httpGet:
-              path: /onboarding-api/v1.0/healthcheck
+              path: {{ .Values.readiness.path }}
               port: {{ .Values.service.internalPort }}
             initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
             periodSeconds: {{ .Values.readiness.periodSeconds }}
@@ -74,15 +79,18 @@ spec:
             failureThreshold: {{ .Values.readiness.failureThreshold }}
           startupProbe:
             httpGet:
-              path: /onboarding-api/v1.0/healthcheck
+              path: {{ .Values.startup.path }}
               port: {{ .Values.service.internalPort }}
             initialDelaySeconds: {{ .Values.startup.initialDelaySeconds }}
             periodSeconds: {{ .Values.startup.periodSeconds }}
             timeoutSeconds: {{ .Values.startup.timeoutSeconds }}
             successThreshold: {{ .Values.startup.successThreshold }}
             failureThreshold: {{ .Values.startup.failureThreshold }}
+          {{ include "common.containerSecurityContext" . | indent 10 | trim }}
           resources: {{ include "common.resources" . | nindent 12 }}
           env:
+          - name: TMPDIR
+            value: '/app/jetty/ruby_temp'
           - name: ENVNAME
             value: {{ .Values.env.name }}
           - name: JAVA_OPTIONS
@@ -104,29 +112,84 @@ spec:
           - name: SDC_CERT_DIR
             value: ""
           volumeMounts:
-          - name: sdc-environments
-            mountPath: /app/jetty/chef-solo/environments/
-          - name: logs
+          - name: {{ include "common.fullname" . }}-jetty
+            mountPath: /app/jetty
+            subPath: jetty
+          - name: {{ include "common.fullname" . }}-logs
             mountPath: /var/log/onap
+          - name: {{ include "common.fullname" . }}-tmp
+            mountPath: /tmp
           - name: logback
             mountPath: /tmp/logback.xml
             subPath: logback.xml
+          - name: onboarding-conf
+            mountPath: /app/jetty/config/onboarding-be/config-vnfrepo.yaml
+            subPath: config-vnfrepo.yaml
+          - name: onboarding-conf
+            mountPath: /app/jetty/config/onboarding-be/onboarding_configuration.yaml
+            subPath: onboarding_configuration.yaml
+          - name: onboarding-conf
+            mountPath: /app/jetty/config/onboarding-be/config-helmvalidator.yaml
+            subPath: config-helmvalidator.yaml
+          - name: onboarding-conf
+            mountPath: /app/jetty/config/onboarding-be/externaltesting-configuration.yaml
+            subPath: externaltesting-configuration.yaml
+          - name: onboarding-conf
+            mountPath: /app/jetty/config/onboarding-be/features.properties
+            subPath: features.properties
+          - name: http-config
+            mountPath: /app/jetty/start.d/http.ini
+            subPath: http.ini
+          - name: https-config
+            mountPath: /app/jetty/start.d/https.ini
+            subPath: https.ini
+          - name: ssl-config
+            mountPath: /app/jetty/start.d/ssl.ini
+            subPath: ssl.ini
+          - name: ready-probe-config
+            mountPath: /app/jetty/ready-probe.sh
+            subPath: ready-probe.sh
           lifecycle:
             postStart:
               exec:
-                command: ["/bin/sh", "-c", "export LOG=wait_logback.log; touch $LOG; export SRC=/tmp/logback.xml; export DST=/app/jetty/config/onboarding-be/; while [ ! -e $DST ]; do echo 'Waiting for $DST...' >> $LOG; sleep 5; done; sleep 2; /bin/cp -f $SRC $DST; echo 'Done' >> $LOG"]
+                command: ["/bin/sh", "-c", "export LOG=/tmp/wait_logback.log; touch $LOG; export SRC=/tmp/logback.xml; export DST=/app/jetty/config/onboarding-be/; while [ ! -e $DST ]; do echo 'Waiting for $DST...' >> $LOG; sleep 5; done; sleep 2; /bin/cp -f $SRC $DST; echo 'Done' >> $LOG"]
         # side car containers
         {{ include "common.log.sidecar" . | nindent 8 }}
       serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
+      {{ include "common.podSecurityContext" . | indent 6 | trim }}
       volumes:
       {{ include "common.log.volumes" (dict "dot" . "configMapNamePrefix" (tpl .Values.logConfigMapNamePrefix .)) | nindent 6 }}
       - name: logback
         configMap:
           name : {{ include "common.fullname" . }}-logging-configmap
-      - name: sdc-environments
+      - name: onboarding-conf
+        configMap:
+          name: {{ include "common.release" . }}-sdc-onboarding-be-configmap
+          defaultMode: 0755
+      - name: http-config
+        configMap:
+          name: {{ include "common.release" . }}-sdc-http-04-configmap
+          defaultMode: 0755
+      - name: https-config
+        configMap:
+          name: {{ include "common.release" . }}-sdc-https-04-configmap
+          defaultMode: 0755
+      - name: ssl-config
         configMap:
-          name: {{ include "common.release" . }}-sdc-environments-configmap
+          name: {{ include "common.release" . }}-sdc-ssl-04-configmap
           defaultMode: 0755
-      - name:  logs
-        emptyDir: {}
+      - name: ready-probe-config
+        configMap:
+          name: {{ include "common.release" . }}-sdc-ready-probe-configmap
+          defaultMode: 0755
+      - name: {{ include "common.fullname" . }}-logs
+        emptyDir:
+          sizeLimit: {{ .Values.volumes.logSizeLimit }}
+      - name: {{ include "common.fullname" . }}-tmp
+        emptyDir:
+          sizeLimit: {{ .Values.volumes.tmpSizeLimit }}
+      - name: {{ include "common.fullname" . }}-jetty
+        emptyDir:
+          sizeLimit: {{ .Values.volumes.jettySizeLimit }}
       {{- include "common.imagePullSecrets" . | nindent 6 }}
+
index 8ceca38..7ff54e8 100644 (file)
@@ -1,6 +1,7 @@
 {{/*
 # Copyright © 2017 Amdocs, AT&T, Bell Canada
 # Modifications Copyright © 2018  ZTE
+# Modifications Copyright © 2025 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 
 apiVersion: batch/v1
 kind: Job
-metadata: {{- include "common.resourceMetadata" . | nindent 2 }}
+metadata:
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    release: {{ include "common.release" . }}
+  {{- if .Values.jobAnnotations }}
+  annotations:  {{- include "common.tplValue" (dict "value" .Values.jobAnnotations "context" $) | nindent 4 }}
+  {{- end }}
 spec:
   backoffLimit: 20
   template:
@@ -27,30 +36,10 @@ spec:
         release: {{ include "common.release" . }}
     spec:
       restartPolicy: Never
+      securityContext:
+        {{- toYaml .Values.jobPodSecurityContext | nindent 8 }}
       initContainers:
-      - name: {{ include "common.name" . }}-job-completion
-        image: {{ include "repositoryGenerator.image.readiness" . }}
-        imagePullPolicy: "{{ .Values.global.pullPolicy | default .Values.pullPolicy }}"
-        command:
-        - /app/ready.py
-        args:
-        - --job-name
-        - {{ include "common.release" . }}-sdc-cs
-        - "-t"
-        - "20"
-        env:
-        - name: NAMESPACE
-          valueFrom:
-            fieldRef:
-              apiVersion: v1
-              fieldPath: metadata.namespace
-        resources:
-          limits:
-            cpu: "100m"
-            memory: "500Mi"
-          requests:
-            cpu: "3m"
-            memory: "20Mi"
+        {{ include "common.readinessCheck.waitFor" (dict "dot" . "wait_for" .Values.readinessCheck.job_wait_for) | nindent 8 }}
       containers:
       - name: {{ include "common.name" . }}-job
         image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.onboardingInitImage }}
@@ -92,6 +81,27 @@ spec:
           requests:
             cpu: "200m"
             memory: "200Mi"
+        {{ if eq .Values.liveness.enabled true }}
+        livenessProbe:
+          httpGet:
+            path:  /healthz
+            port: {{ .Values.service.jobPort }}
+          initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
+          periodSeconds: {{ .Values.liveness.periodSeconds }}
+          timeoutSeconds: {{ .Values.liveness.timeoutSeconds }}
+          successThreshold: {{ .Values.liveness.successThreshold }}
+          failureThreshold: {{ .Values.liveness.failureThreshold }}
+        {{ end }}
+        readinessProbe:
+          httpGet:
+            path:  /healthz
+            port: {{ .Values.service.jobPort }}
+          initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
+          periodSeconds: {{ .Values.readiness.periodSeconds }}
+          timeoutSeconds: {{ .Values.readiness.timeoutSeconds }}
+          successThreshold: {{ .Values.readiness.successThreshold }}
+          failureThreshold: {{ .Values.readiness.failureThreshold }}
+        {{ include "common.containerSecurityContext" . | indent 10 | trim }}
       {{ include "common.waitForJobContainer" . | indent 6 | trim }}
       serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
       volumes:
diff --git a/kubernetes/sdc/components/sdc-onboarding-be/templates/servicemonitor.yaml b/kubernetes/sdc/components/sdc-onboarding-be/templates/servicemonitor.yaml
new file mode 100644 (file)
index 0000000..937f5ef
--- /dev/null
@@ -0,0 +1,19 @@
+{{/*
+# Copyright © 2024 Deutsche Telekom AG
+#
+# 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.metrics.serviceMonitor.enabled }}
+{{  include "common.serviceMonitor" . }}
+{{- end }}
index a555656..6a35c44 100644 (file)
@@ -1,5 +1,6 @@
 # Copyright © 2017 Amdocs, Bell Canada
 # Modifications Copyright © 2018 AT&T, ZTE
+# Modifications Copyright © 2025 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -35,8 +36,8 @@ global:
 # Application configuration defaults.
 #################################################################
 # application image
-image: onap/sdc-onboard-backend:1.13.6
-onboardingInitImage: onap/sdc-onboard-cassandra-init:1.13.6
+image: onap/sdc-onboard-backend:1.14.1
+onboardingInitImage: onap/sdc-onboard-cassandra-init:1.14.1
 pullPolicy: Always
 
 # flag to enable debugging - application support required
@@ -59,6 +60,7 @@ affinity: {}
 
 # probe configuration parameters
 liveness:
+  path: /onboarding-api/v1.0/healthcheck
   initialDelaySeconds: 1
   periodSeconds: 10
   timeoutSeconds: 15
@@ -69,6 +71,7 @@ liveness:
   enabled: true
 
 readiness:
+  path: /onboarding-api/v1.0/healthcheck
   initialDelaySeconds: 1
   periodSeconds: 10
   timeoutSeconds: 15
@@ -76,6 +79,7 @@ readiness:
   failureThreshold: 3
 
 startup:
+  path: /onboarding-api/v1.0/healthcheck
   initialDelaySeconds: 10
   periodSeconds: 10
   timeoutSeconds: 15
@@ -86,6 +90,7 @@ service:
   type: ClusterIP
   name: sdc-onboarding-be
   internalPort: 8081
+  jobPort: 8080
   ports:
     - name: http
       port: 8081
@@ -118,10 +123,6 @@ persistence:
   mountPath: /dockerdata-nfs
   mountSubPath: /sdc/sdc-cs/CS
 
-securityContext:
-  fsGroup: 35953
-  runAsUser: 352070
-
 ingress:
   enabled: false
 
@@ -131,8 +132,8 @@ flavor: small
 resources:
   small:
     limits:
-      cpu: "1"
-      memory: "1.5Gi"
+      cpu: "2"
+      memory: "2Gi"
     requests:
       cpu: "0.5"
       memory: "1.5Gi"
@@ -155,7 +156,136 @@ wait_for_job_container:
   containers:
     - '{{ include "common.name" . }}-job'
 
+readinessCheck:
+  wait_for:
+    timeout: 25
+    jobs:
+      - '{{ include "common.release" . }}-sdc-onboarding-be'
+  job_wait_for:
+    timeout: 20
+    jobs:
+      - '{{ include "common.release" . }}-sdc-cs'
+
 #Log configuration
 log:
   path: /var/log/onap
 logConfigMapNamePrefix: '{{ include "common.fullname" . }}'
+
+securityContext:
+  user_id: 1000
+  group_id: 101
+
+volumes:
+  logSizeLimit: 300Mi
+  jettySizeLimit: 400Mi
+  tmpSizeLimit: 500Mi
+
+resources_initContainer:
+  limits:
+    cpu: "100m"
+    memory: "500Mi"
+  requests:
+    cpu: "3m"
+    memory: "20Mi"
+
+jobPodSecurityContext:
+  fsGroup: 1000
+  runAsGroup: 1000
+  runAsNonRoot: true
+  runAsUser: 1000
+  seccompProfile:
+    type: RuntimeDefault
+
+#################################################################
+# Settings from Default.rb
+#################################################################
+ONBOARDING_BE:
+  http_port: 8081
+  https_port: 8445
+  catalog_notification_url: "%s://%s:%s/sdc2/rest/v1/catalog/notif/vsp/"
+FE:
+  http_port: 8181
+  https_port: 9443
+disableHttp: true
+cassandra:
+  truststore_password: Aa123456
+  cassandra_port: 9042
+  datacenter_name: DC-
+  cluster_name: SDC-CS-
+  socket_read_timeout: 20000
+  socket_connect_timeout: 20000
+  janusgraph_connection_timeout: 10000
+  cassandra_user: asdc_user
+  cassandra_password: Aa1234%^!
+sdcHelmValidator:
+  enabled: true
+  helmVersion: 3.5.2
+  deployable: true
+  lintable: false
+  strictLintable: false
+  url: http://sdc-helm-validator:8080/validate
+VnfRepo:
+  vnfRepoPort: 8703
+  vnfRepoHost: refrepo
+jetty:
+  trustStorePassword: "z+KEj;t+,KN^iimSiS89e#p0"
+  keyManagerPassword: "?(kP!Yur![*!Y5!E^f(ZKc31"
+  keyStorePassword: "?(kP!Yur![*!Y5!E^f(ZKc31"
+basic_auth:
+  enabled: true
+  user_name: testName
+  user_pass: testPass
+  excludedUrls: /v1.0/healthcheck
+
+EXTTEST:
+  ep1_config: vtp,VTP,true,http://refrepo:8702/onapapi/vnfsdk-marketplace,onap.*
+  ep2_config: repository,Repository,false,,.*
+
+#Addiding extra Envs
+permittedAncestors: ""
+JETTY_BASE: "/app/jetty"
+http_option: http_option
+
+autoscaling:
+  enabled: true
+  minReplicas: 1
+  maxReplicas: 3
+  targetCPUUtilizationPercentage: 75
+
+# number of ReplicaSets that should be retained for the Deployment
+revisionHistoryLimit: 1
+
+# the minimum number of seconds that a newly created Pod should be ready
+minReadySeconds: 30
+updateStrategy:
+  type: RollingUpdate
+  # The number of pods that can be unavailable during the update process
+  maxUnavailable: 0
+  # The number of pods that can be created above the desired amount of pods during an update
+  maxSurge: 1
+
+metrics:
+  serviceMonitor:
+    enabled: true
+    targetPort: 8081
+    path: /onboarding-api/v1.0/actuator/prometheus
+    basicAuth:
+      enabled: false
+
+logback:
+  rootLogLevel: INFO
+
+# Annotations to control the execution and deletion of the job
+# Can be used to delete a job before an Upgrade
+#
+# jobAnnotations:
+#   # In case of an ArgoCD deployment this Hook deletes the job before syncing
+#   argocd.argoproj.io/hook: Sync
+#   argocd.argoproj.io/hook-delete-policy: BeforeHookCreation
+#
+#   # In case of an Helm/Flux deployment this Hook deletes the job
+#   # This is what defines this resource as a hook. Without this line, the
+#   # job is considered part of the release.
+#   "helm.sh/hook": "pre-upgrade,pre-rollback,post-install"
+#   "helm.sh/hook-delete-policy": "before-hook-creation"
+#   "helm.sh/hook-weight": "1"
index 8a1a8b3..7fc60f2 100644 (file)
@@ -1,6 +1,7 @@
 # Copyright © 2018 Amdocs, Bell Canada
 # Modifications Copyright © 2021 Orange
 # Modifications Copyright © 2021 Nordix Foundation
+# Modifications Copyright © 2025 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -17,7 +18,7 @@
 apiVersion: v2
 description: ONAP Service Design and Creation Workflow Designer backend
 name: sdc-wfd-be
-version: 13.0.0
+version: 13.0.5
 
 dependencies:
   - name: repositoryGenerator
@@ -26,3 +27,6 @@ dependencies:
   - name: serviceAccount
     version: ~13.x-0
     repository: '@local'
+  - name: readinessCheck
+    version: ~13.x-0
+    repository: '@local'
diff --git a/kubernetes/sdc/components/sdc-wfd-be/templates/autoscaling.yaml b/kubernetes/sdc/components/sdc-wfd-be/templates/autoscaling.yaml
new file mode 100644 (file)
index 0000000..b7f2653
--- /dev/null
@@ -0,0 +1,32 @@
+{{- if .Values.autoscaling.enabled }}
+apiVersion: autoscaling/v2
+kind: HorizontalPodAutoscaler
+metadata:
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
+  labels: {{- include "common.labels" . | nindent 4 }}
+spec:
+  scaleTargetRef:
+    apiVersion: apps/v1
+    kind: Deployment
+    name: {{ include "common.fullname" . }}
+  minReplicas: {{ .Values.autoscaling.minReplicas }}
+  maxReplicas: {{ .Values.autoscaling.maxReplicas }}
+  metrics:
+    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}
+    - type: Resource
+      resource:
+        name: cpu
+        target:
+          type: Utilization
+          averageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}
+    {{- end }}
+    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}
+    - type: Resource
+      resource:
+        name: memory
+        target:
+          type: Utilization
+          averageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}
+    {{- end }}
+{{- end }}
index 59ebb02..25288e5 100644 (file)
@@ -1,7 +1,7 @@
 {{/*
 # Copyright © 2017 Amdocs, AT&T, Bell Canada
 # Modifications Copyright © 2018  ZTE
-# Modifications Copyright © 2023 Deutsche Telekom
+# Modifications Copyright © 2023,2025 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -21,33 +21,22 @@ kind: Deployment
 metadata: {{- include "common.resourceMetadata" . | nindent 2 }}
 spec:
   selector: {{- include "common.selectors" . | nindent 4 }}
+  {{- if not .Values.autoscaling.enabled }}
   replicas: {{ .Values.replicaCount }}
+  {{- end }}
+  revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
+  minReadySeconds: {{ .Values.minReadySeconds }}
+  strategy:
+    type: {{ .Values.updateStrategy.type }}
+    rollingUpdate:
+      maxUnavailable: {{ .Values.updateStrategy.maxUnavailable }}
+      maxSurge: {{ .Values.updateStrategy.maxSurge }}
   template:
     metadata: {{- include "common.templateMetadata" . | nindent 6 }}
     spec:
       initContainers:
       {{- if .Values.initJob.enabled }}
-      - name: {{ include "common.name" . }}-job-completion
-        image: {{ include "repositoryGenerator.image.readiness" . }}
-        imagePullPolicy: "{{ .Values.global.pullPolicy | default .Values.pullPolicy }}"
-        command:
-        - /app/ready.py
-        args:
-        - --job-name
-        - {{ include "common.fullname" . }}
-        env:
-        - name: NAMESPACE
-          valueFrom:
-            fieldRef:
-              apiVersion: v1
-              fieldPath: metadata.namespace
-        resources:
-          limits:
-            cpu: "100m"
-            memory: "500Mi"
-          requests:
-            cpu: "3m"
-            memory: "20Mi"
+        {{ include "common.readinessCheck.waitFor" . | nindent 8 }}
       {{ end }}
       containers:
         - name: {{ include "common.name" . }}
@@ -94,6 +83,8 @@ spec:
           - name: CS_PASSWORD
             valueFrom:
               secretKeyRef: {name: {{ include "common.release" . }}-sdc-cs-secrets, key: sdc_password}
+          - name: CS_DATACENTER
+            value: "{{ .Values.config.cassandraDataCenter }}"
           - name: CS_SSL_ENABLED
             value: "{{ .Values.config.cassandraSSLEnabled }}"
           - name: CS_TRUST_STORE_PATH
@@ -112,6 +103,14 @@ spec:
               secretKeyRef: {name: {{ include "common.release" . }}-sdc-cs-secrets, key: wf_external_user_password}
           - name: SERVER_SSL_ENABLED
             value: "false"
+          - name: TRACING_ENABLED
+            value: "{{ .Values.global.tracing.enabled }}"
+          - name: TRACING_COLLECTOR_BASEURL
+            value: "{{ .Values.global.tracing.collector.baseUrl }}"
+          - name: TRACING_SAMPLING_PROBABILITY
+            value: "{{ .Values.config.tracing.samplingProbability }}"
+          - name: TRACING_SKIP_PATTERN
+            value: "{{ .Values.config.tracing.skipPattern }}"
           resources: {{ include "common.resources" . | nindent 12 }}
       serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
       {{- include "common.imagePullSecrets" . | nindent 6 }}
index 5b6762b..32eb857 100644 (file)
 {{ if .Values.initJob.enabled }}
 apiVersion: batch/v1
 kind: Job
-metadata: {{- include "common.resourceMetadata" . | nindent 2 }}
+metadata:
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    release: {{ include "common.release" . }}
+  {{- if .Values.jobAnnotations }}
+  annotations:  {{- include "common.tplValue" (dict "value" .Values.jobAnnotations "context" $) | nindent 4 }}
+  {{- end }}
 spec:
   backoffLimit: 20
   template:
index cc85176..0e5cc81 100644 (file)
@@ -1,5 +1,6 @@
 # Copyright © 2017 Amdocs, Bell Canada
 # Modifications Copyright © 2018 AT&T, ZTE
+# Modifications Copyright © 2025 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -30,13 +31,17 @@ global:
     replicaCount: 3
     clusterName: cassandra
     dataCenter: Pod
+  tracing:
+    enabled: false
+    collector:
+      baseUrl: http://jaeger-collector.istio-config:9411
 
 #################################################################
 # Application configuration defaults.
 #################################################################
 # application image
-image: onap/sdc-workflow-backend:1.12.0
-configInitImage: onap/sdc-workflow-init:1.12.0
+image: onap/sdc-workflow-backend:1.14.0
+configInitImage: onap/sdc-workflow-init:1.14.0
 pullPolicy: Always
 
 initJob:
@@ -46,6 +51,7 @@ config:
   javaOptions: "-Xmx1536m -Xms1536m"
   cassandraAuthenticationEnabled: true
   cassandraClientPort: 9042
+  cassandraDataCenter: dc1
   sdcEndpoint:
     http: sdc-be:8080
   sdcExternalUser: workflow
@@ -53,6 +59,9 @@ config:
   serverSSLTrustStoreType: jks
   cassandraSSLEnabled: false
   cassandraTrustStorePath: /home/sdc/etc/truststore
+  tracing:
+    samplingProbability: 1.0
+    skipPattern: ""
 
 # environment file
 env:
@@ -131,17 +140,17 @@ resources:
   small:
     limits:
       cpu: "1"
-      memory: "1Gi"
+      memory: "2Gi"
     requests:
       cpu: "0.5"
-      memory: "1Gi"
+      memory: "2Gi"
   large:
     limits:
       cpu: "2"
-      memory: "2Gi"
+      memory: "3Gi"
     requests:
       cpu: "1"
-      memory: "2Gi"
+      memory: "3Gi"
   unlimited: {}
 
 #Pods Service Account
@@ -153,3 +162,41 @@ serviceAccount:
 wait_for_job_container:
   containers:
     - '{{ include "common.name" . }}-job'
+
+readinessCheck:
+  wait_for:
+    jobs:
+      - '{{ include "common.fullname" . }}'
+
+autoscaling:
+  enabled: false
+  minReplicas: 1
+  maxReplicas: 3
+  targetCPUUtilizationPercentage: 75
+
+# number of ReplicaSets that should be retained for the Deployment
+revisionHistoryLimit: 1
+
+# the minimum number of seconds that a newly created Pod should be ready
+minReadySeconds: 30
+updateStrategy:
+  type: RollingUpdate
+  # The number of pods that can be unavailable during the update process
+  maxUnavailable: 0
+  # The number of pods that can be created above the desired amount of pods during an update
+  maxSurge: 1
+
+# Annotations to control the execution and deletion of the job
+# Can be used to delete a job before an Upgrade
+#
+# jobAnnotations:
+#   # In case of an ArgoCD deployment this Hook deletes the job before syncing
+#   argocd.argoproj.io/hook: Sync
+#   argocd.argoproj.io/hook-delete-policy: BeforeHookCreation
+#
+#   # In case of an Helm/Flux deployment this Hook deletes the job
+#   # This is what defines this resource as a hook. Without this line, the
+#   # job is considered part of the release.
+#   "helm.sh/hook": "pre-upgrade,pre-rollback,post-install"
+#   "helm.sh/hook-delete-policy": "before-hook-creation"
+#   "helm.sh/hook-weight": "1"
index 79ff34a..b94d65e 100644 (file)
@@ -1,6 +1,7 @@
 # Copyright © 2018 Amdocs, Bell Canada
 # Modifications Copyright © 2021 Orange
 # Modifications Copyright © 2021 Nordix Foundation
+# Modifications Copyright © 2025 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -17,7 +18,7 @@
 apiVersion: v2
 description: ONAP Service Design and Creation Workflow Designer frontend
 name: sdc-wfd-fe
-version: 13.0.0
+version: 13.0.4
 
 dependencies:
   - name: repositoryGenerator
@@ -26,3 +27,6 @@ dependencies:
   - name: serviceAccount
     version: ~13.x-0
     repository: '@local'
+  - name: readinessCheck
+    version: ~13.x-0
+    repository: '@local'
diff --git a/kubernetes/sdc/components/sdc-wfd-fe/templates/autoscaling.yaml b/kubernetes/sdc/components/sdc-wfd-fe/templates/autoscaling.yaml
new file mode 100644 (file)
index 0000000..b7f2653
--- /dev/null
@@ -0,0 +1,32 @@
+{{- if .Values.autoscaling.enabled }}
+apiVersion: autoscaling/v2
+kind: HorizontalPodAutoscaler
+metadata:
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
+  labels: {{- include "common.labels" . | nindent 4 }}
+spec:
+  scaleTargetRef:
+    apiVersion: apps/v1
+    kind: Deployment
+    name: {{ include "common.fullname" . }}
+  minReplicas: {{ .Values.autoscaling.minReplicas }}
+  maxReplicas: {{ .Values.autoscaling.maxReplicas }}
+  metrics:
+    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}
+    - type: Resource
+      resource:
+        name: cpu
+        target:
+          type: Utilization
+          averageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}
+    {{- end }}
+    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}
+    - type: Resource
+      resource:
+        name: memory
+        target:
+          type: Utilization
+          averageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}
+    {{- end }}
+{{- end }}
index ad031da..54a99e4 100644 (file)
@@ -19,32 +19,21 @@ kind: Deployment
 metadata: {{- include "common.resourceMetadata" . | nindent 2 }}
 spec:
   selector: {{- include "common.selectors" . | nindent 4 }}
+  {{- if not .Values.autoscaling.enabled }}
   replicas: {{ .Values.replicaCount }}
+  {{- end }}
+  revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
+  minReadySeconds: {{ .Values.minReadySeconds }}
+  strategy:
+    type: {{ .Values.updateStrategy.type }}
+    rollingUpdate:
+      maxUnavailable: {{ .Values.updateStrategy.maxUnavailable }}
+      maxSurge: {{ .Values.updateStrategy.maxSurge }}
   template:
     metadata: {{- include "common.templateMetadata" . | nindent 6 }}
     spec:
       initContainers:
-      - name: {{ include "common.name" . }}-readiness
-        command:
-        - /app/ready.py
-        args:
-        - --service-name
-        - sdc-wfd-be
-        env:
-        - name: NAMESPACE
-          valueFrom:
-            fieldRef:
-              apiVersion: v1
-              fieldPath: metadata.namespace
-        image: {{ include "repositoryGenerator.image.readiness" . }}
-        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-        resources:
-          limits:
-            cpu: "100m"
-            memory: "500Mi"
-          requests:
-            cpu: "3m"
-            memory: "20Mi"
+        {{ include "common.readinessCheck.waitFor" . | nindent 8 }}
       containers:
         - name: {{ include "common.name" . }}
           image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
index e33cf48..cbfc15c 100644 (file)
@@ -1,4 +1,5 @@
 # Copyright © 2018 Amdocs, Bell Canada
+# Modifications Copyright © 2025 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -23,7 +24,7 @@ global:
 # Application configuration defaults.
 #################################################################
 # application image
-image: onap/sdc-workflow-frontend:1.12.0
+image: onap/sdc-workflow-frontend:1.14.0
 pullPolicy: Always
 
 # flag to enable debugging - application support required
@@ -81,18 +82,6 @@ service:
       port: 8080
       port_protocol: http
       nodePort: '56'
-  annotations:
-    msb.onap.org/service-info: |
-      {{ if .Values.global.msbEnabled -}}[
-        {
-          "serviceName": "wf-gui",
-          "version": "v1",
-          "url": "/",
-          "protocol": "UI",
-          "port": "{{ .Values.service.internalPort }}",
-          "visualRange":"0|1"
-        }
-      ]{{ end }}
 
 ingress:
   enabled: false
@@ -138,3 +127,26 @@ serviceAccount:
 log:
   path: /var/log/onap
 logConfigMapNamePrefix: '{{ include "common.fullname" . }}'
+
+readinessCheck:
+  wait_for:
+    services:
+      - sdc-wfd-be
+
+autoscaling:
+  enabled: false
+  minReplicas: 1
+  maxReplicas: 3
+  targetCPUUtilizationPercentage: 75
+
+# number of ReplicaSets that should be retained for the Deployment
+revisionHistoryLimit: 1
+
+# the minimum number of seconds that a newly created Pod should be ready
+minReadySeconds: 30
+updateStrategy:
+  type: RollingUpdate
+  # The number of pods that can be unavailable during the update process
+  maxUnavailable: 0
+  # The number of pods that can be created above the desired amount of pods during an update
+  maxSurge: 1
index 9cfae6a..2332418 100644 (file)
@@ -29,6 +29,9 @@ global:
     #This flag allows SDC to instantiate its own cluster, serviceName
     #should be "sdc-cs" if this flag is enabled
     localCluster: false
+    #Cassandra login details
+    username: cassandra
+    password: cassandra
     #The cassandra service name to connect to (default: shared cassandra service)
     #in case of using k8ssandra-operator in the common cassandra installation
     #the service name is:
@@ -37,18 +40,23 @@ global:
     #serviceName: cassandra
     #Shared cassandra cluster replicaCount, should be changed if localCluster is enabled
     #to match with its own cluster replica
-    #see "cassandra: replicaCount" in file sdc-cs/values.yaml)
-    replicaCount: 3
+    #see "cassandra: replicaCount" in file sdc-cs/values.yaml
     dbCache: true
     readConsistencyLevel: ONE
     writeConsistencyLevel: ALL
     clusterName: cassandra
     #datacenter name (use "dc1" in case of k8ssandra-operator, otherwise "Pod")
+    replicaCount: 3
     dataCenter: dc1
+    rc1: 1
     #cqlVersion for cassandra 3.11.* must be "3.4.4" and cassandra 4.0.* must be "3.4.5"
     #and cassandra 4.1.* must be "3.4.6"
     cqlVersion: "3.4.6"
 
+  BE:
+    http_port: 8080
+    https_port: 8443
+
   centralizedLoggingEnabled: true
   # global Kafka config passed to sdc-be chart
   kafka:
@@ -57,6 +65,12 @@ global:
     topics:
       sdcDistNotifTopic: &notif-topic-name SDC-DISTR-NOTIF-TOPIC
       sdcDistStatusTopic: &status-topic-name SDC-DISTR-STATUS-TOPIC
+  tracing:
+    enabled: false
+    collector:
+      baseUrl: http://jaeger-collector.istio-config:9411
+    sampling:
+      probability: 1.0 # percentage of requests that are sampled (between 0-1/0%-100%)
 
 # Environment file
 env:
@@ -94,3 +108,25 @@ sdcHelmValidator:
   lintable: false
   strictLintable: false
   url: http://sdc-helm-validator:8080/validate
+
+ONBOARDING_BE:
+  http_port: 8081
+  https_port: 8445
+  catalog_notification_url: "%s://%s:%s/sdc2/rest/v1/catalog/notif/vsp/"
+cassandra:
+  cassandra_port: 9042
+  concurrent_reads: 32
+  num_tokens: 256
+  data_dir: /var/lib/cassandra/data
+  hinted_handoff_enabled: true
+  cassandra_user: asdc_user
+  cassandra_password: Aa1234%^!
+  concurrent_writes: 32
+  multithreaded_compaction: false
+  cache_dir: "/var/lib/cassandra/saved_caches"
+  log_file: "/var/lib/cassandra/log/system.log"
+  phi_convict_threshold: 8
+  commitlog_dir: "/var/lib/cassandra/commitlog"
+  socket_read_timeout: 20000
+  socket_connect_timeout: 20000
+  janusgraph_connection_timeout: 10000
index f98bc4e..87654cb 100644 (file)
@@ -18,7 +18,7 @@
 apiVersion: v2
 description: SDN Controller
 name: sdnc
-version: 13.0.2
+version: 16.0.0
 
 dependencies:
   - name: common
@@ -31,11 +31,11 @@ dependencies:
     version: ~13.x-0
     repository: '@local'
   - name: network-name-gen
-    version: ~13.x-0
+    version: ~16.x-0
     repository: '@local'
     condition: network-name-gen.enabled
   - name: dgbuilder
-    version: ~13.x-0
+    version: ~15.x-0
     repository: '@local'
     condition: dgbuilder.enabled
   - name: sdnc-prom
@@ -43,7 +43,7 @@ dependencies:
     repository: '@local'
     condition: config.geoEnabled
   - name: mariadb-galera
-    version: ~13.x-0
+    version: ~16.x-0
     repository: '@local'
     condition: global.mariadbGalera.localCluster
   - name: elasticsearch
@@ -51,20 +51,16 @@ dependencies:
     repository: '@local'
     condition: sdnc.elasticsearch.enabled,elasticsearch.enabled
   # conditions for sdnc-subcharts
-  - name: dmaap-listener
-    version: ~13.x-0
-    repository: '@local'
-    condition: sdnc.dmaap-listener.enabled,dmaap-listener.enabled
   - name: ueb-listener
-    version: ~13.x-0
+    version: ~15.x-0
     repository: '@local'
     condition: sdnc.ueb-listener.enabled,ueb-listener.enabled
   - name: sdnc-ansible-server
-    version: ~13.x-0
+    version: ~15.x-0
     repository: '@local'
     condition: sdnc.sdnc-ansible-server.enabled,sdnc-ansible-server.enabled
   - name: sdnc-web
-    version: ~13.x-0
+    version: ~15.x-0
     repository: '@local'
     condition: sdnc.sdnc-web.enabled,sdnc-web.enabled
   - name: repositoryGenerator
index ff32f4e..31089ad 100644 (file)
@@ -17,7 +17,7 @@
 apiVersion: v2
 description: D.G. Builder application
 name: dgbuilder
-version: 13.0.0
+version: 15.1.0
 
 dependencies:
   - name: common
@@ -28,4 +28,4 @@ dependencies:
     repository: '@local'
   - name: serviceAccount
     version: ~13.x-0
-    repository: '@local'
\ No newline at end of file
+    repository: '@local'
index abaab57..372a0ca 100644 (file)
@@ -35,7 +35,7 @@ module.exports={
     "dbUser": "${DB_USER}",
     "dbPassword": "${DB_PASSWORD}",
     "gitLocalRepository": "",
-    "restConfUrl": "http://localhost:8181/restconf/operations/SLI-API:execute-graph",
+    "restConfUrl": "http://localhost:8181/rests/operations/SLI-API:execute-graph",
     "restConfUser": "${REST_CONF_USER}",
     "restConfPassword": "${REST_CONF_PASSWORD}",
     "formatXML": "Y",
index 68cb86b..754c632 100644 (file)
@@ -69,7 +69,7 @@ secrets:
 # Application configuration defaults.
 #################################################################
 # application image
-image: onap/ccsdk-dgbuilder-image:1.5.1
+image: onap/ccsdk-dgbuilder-image:2.0.1
 pullPolicy: Always
 
 # flag to enable debugging - application support required
index e998a64..8484b1c 100644 (file)
@@ -17,7 +17,7 @@
 apiVersion: v2\r
 description: Name Generation Micro Service\r
 name: network-name-gen\r
-version: 13.0.0\r
+version: 16.0.0\r
 \r
 dependencies:\r
   - name: common\r
@@ -27,7 +27,7 @@ dependencies:
     version: ~13.x-0\r
     repository: '@local'\r
   - name: mariadb-init\r
-    version: ~13.x-0\r
+    version: ~16.x-0\r
     repository: '@local'\r
   - name: serviceAccount\r
     version: ~13.x-0\r
index e7342b1..a9abeef 100644 (file)
@@ -17,7 +17,7 @@
 apiVersion: v2
 description: SDN-C Ansible Server
 name: sdnc-ansible-server
-version: 13.0.0
+version: 15.1.0
 
 dependencies:
   - name: common
index a1c9007..19f0f79 100644 (file)
@@ -51,7 +51,7 @@ secrets:
 # Application configuration defaults.
 #################################################################
 # application image
-image: onap/sdnc-ansible-server-image:2.5.5
+image: onap/sdnc-ansible-server-image:3.0.2
 pullPolicy: Always
 
 # flag to enable debugging - application support required
index c36d2e3..e579e62 100755 (executable)
@@ -19,7 +19,7 @@
 set -e
 primary=${SDNC_IS_PRIMARY_CLUSTER:-true}
 
-url=http://sdnc:8282/restconf/operations/cluster-admin:change-member-voting-states-for-all-shards
+url=http://sdnc:8282/rests/operations/cluster-admin:change-member-voting-states-for-all-shards
 username="${ODL_USERNAME:-{{.Values.odl.restconf.username}}}"
 password="${ODL_PASSWORD:-{{.Values.odl.restconf.password}}}"
 LOGFILE="/app/geo.log"
index db331e1..cf46600 100644 (file)
@@ -16,7 +16,7 @@
 apiVersion: v2
 description: SDN-C Web Server
 name: sdnc-web
-version: 13.0.0
+version: 15.1.0
 
 dependencies:
   - name: common
index 98e44d0..51136a2 100644 (file)
@@ -22,7 +22,7 @@ global:
 # Application configuration defaults.
 #################################################################
 # application image
-image: "onap/sdnc-web-image:2.5.5"
+image: "onap/sdnc-web-image:3.0.2"
 pullPolicy: Always
 
 config:
index a7dff13..53ba47d 100644 (file)
@@ -17,7 +17,7 @@
 apiVersion: v2
 description: SDNC UEB Listener
 name: ueb-listener
-version: 13.0.0
+version: 15.1.0
 
 dependencies:
   - name: common
index e27ef36..580e939 100644 (file)
@@ -9,7 +9,7 @@ org.onap.ccsdk.sli.northbound.uebclient.password=${UEB_PASSWORD}
 org.onap.ccsdk.sli.northbound.uebclient.user=${UEB_USER}
 org.onap.ccsdk.sli.northbound.uebclient.sdnc-user=${ODL_USER}
 org.onap.ccsdk.sli.northbound.uebclient.sdnc-passwd=${ODL_PASSWORD}
-org.onap.ccsdk.sli.northbound.uebclient.asdc-api-base-url=http://sdnc.{{.Release.Namespace}}:{{.Values.config.sdncPort}}/restconf/operations/
+org.onap.ccsdk.sli.northbound.uebclient.asdc-api-base-url=http://sdnc.{{.Release.Namespace}}:{{.Values.config.sdncPort}}/rests/operations/
 org.onap.ccsdk.sli.northbound.uebclient.asdc-api-namespace=org:onap:ccsdk
 org.onap.ccsdk.sli.northbound.uebclient.spool.incoming=/opt/onap/sdnc/ueb-listener/spool/incoming
 org.onap.ccsdk.sli.northbound.uebclient.spool.archive=/opt/onap/sdnc/ueb-listener/spool/archive
index bccb1d7..c5b2fbb 100644 (file)
@@ -57,7 +57,7 @@ secrets:
 # Application configuration defaults.
 #################################################################
 # application image
-image: onap/sdnc-ueb-listener-image:2.5.5
+image: onap/sdnc-ueb-listener-image:3.0.2
 pullPolicy: Always
 
 # flag to enable debugging - application support required
index 971a446..f7694d5 100755 (executable)
@@ -55,8 +55,8 @@ org.onap.ccsdk.sli.adaptors.aai.update=/aai/v13/actions/update
 
 # UBB Notify
 org.onap.ccsdk.sli.adaptors.aai.path.notify=/aai/v13/actions/notify
-org.onap.ccsdk.sli.adaptors.aai.notify.selflink.fqdn=<%= @ubbUri %>/restconf/config/L3SDN-API:services/layer3-service-list/{service-instance-id}
-org.onap.ccsdk.sli.adaptors.aai.notify.selflink.avpn=<%= @ubbUri %>/restconf/config/L3AVPN-EVC-API:services/service-list/{service-instance-id}/service-data/avpn-logicalchannel-information
+org.onap.ccsdk.sli.adaptors.aai.notify.selflink.fqdn=<%= @ubbUri %>/rests/data/L3SDN-API:services/layer3-service-list/{service-instance-id}
+org.onap.ccsdk.sli.adaptors.aai.notify.selflink.avpn=<%= @ubbUri %>/rests/data/L3AVPN-EVC-API:services/service-list/{service-instance-id}/service-data/avpn-logicalchannel-information
 
 # P-Interfaces
 org.onap.ccsdk.sli.adaptors.aai.path.pserver.pinterfaces=/aai/v13/cloud-infrastructure/pservers/pserver/{hostname}/p-interfaces
index 4ce1851..ada4d7b 100644 (file)
@@ -34,4 +34,4 @@ org.onap.ccsdk.features.blueprints.adaptors.restconf.type=generic
 org.onap.ccsdk.features.blueprints.adaptors.restconf.enable=true
 org.onap.ccsdk.features.blueprints.adaptors.restconf.user=${RESTCONF_USER}
 org.onap.ccsdk.features.blueprints.adaptors.restconf.passwd=${RESTCONF_PASSWORD}
-org.onap.ccsdk.features.blueprints.adaptors.restconf.url=http://sdnc:8282/restconf/
+org.onap.ccsdk.features.blueprints.adaptors.restconf.url=http://sdnc:8282/rests/
diff --git a/kubernetes/sdnc/resources/config/conf/generic-resource-api-dg.properties b/kubernetes/sdnc/resources/config/conf/generic-resource-api-dg.properties
new file mode 100644 (file)
index 0000000..89b9c1c
--- /dev/null
@@ -0,0 +1,106 @@
+restapi.templateDir=/opt/onap/sdnc/restapi/templates
+controller.url=http://localhost:8181
+controller.user=${ODL_USER}
+controller.pwd=${ODL_PASSWORD}
+honeycomb.url=http://{honeycomb-instance-ip}:8183
+honeycomb.user=${HONEYCOMB_USER}
+honeycomb.pwd=${HONEYCOMB_PASSWORD}
+restapi.trustStoreFileName=/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks
+restapi.trustStorePassword=${TRUSTSTORE_PASSWORD}
+restapi.keyStoreFileName=/opt/onap/sdnc/data/stores/sdnc.p12
+restapi.keyStorePassword=${KEYSTORE_PASSWORD}
+restapi.connection-oof-url=http://oof-osdf:8698/api/oof/v1/route
+naming.gen-name.url=http://neng-serv:8080
+naming.gen-name.user=${NENG_NAME}
+naming.gen-name.pwd=${NENG_PASSWORD}
+so.user=${SO_USER}
+so.pwd=${SO_PASSWORD}
+cds.url=http://cds-blueprints-processor-http:8080
+cds.user=${CDS_USER}
+cds.pwd=${CDS_PASSWORD}
+
+# Templates
+restapi.sz.templatefile=security-zone-allotted-resource.json
+restapi.cr.templatefile=contrail-route-allotted-resource.json
+restapi.brg.templatefile=brg-allotted-resource.json
+restapi.vpp.vxlan-tunnel.templatefile=vcpe-vxlan-tunnel.json
+restapi.vpp.bridge-domain.templatefile=vcpe-vpp-bridge-domain.json
+restapi.vpp.xconnect.templatefile=vcpe-l2-interface.json
+restapi.tx.templatefile=tunnelxconn-allotted-resource.json
+restapi.parentsvc.templatefile=parent-provided-allotted-resource.json
+restapi.network-ar.templatefile=network-provided-allotted-resources.json
+restapi.vnf-ar.templatefile=vnf-provided-allotted-resources.json
+restapi.services.templatefile=vcpe-services-service.json
+restapi.services.vnf.vfmodule.templatefile=vfmodule-vim-parameters.vgw.json
+restapi.sotn-attachment.templatefile=sotn-attachment-allotted-resource.json
+restapi.sdwan-attachment.templatefile=sdwan-attachment-allotted-resource.json
+restapi.oof-getpath.templatefile=oof-getpath.json
+restapi.transport-slice-creation.templatefile=ts-allocate-tn-slice.json
+restapi.transport-sliceA-list-creation.templatefile=ts-allocate-tn-sliceA-list.json
+restapi.transport-sliceB-list-creation.templatefile=ts-allocate-tn-sliceB-list.json
+restapi.transport-sliceG-list-creation.templatefile=ts-allocate-tn-sliceG-list.json
+restapi.ts-otn-src-domain-creation.templatefile=ts-otn-tunnel-src-domain.json
+restapi.ts-otn-dst-domain-creation.templatefile=ts-otn-tunnel-dst-domain.json
+restapi.ts-otn-domainG-creation.templatefile=ts-otn-tunnel-domainG.json
+restapi.ts-ethernet-service.templatefile=ts-ethernet-service.json
+restapi.ts-coloring-uni-port.templatefile=ts-coloring-uni-port.json
+restapi.p2p-otn-src-domain-creation.templatefile=p2p-otn-tunnel-src-domain.json
+restapi.p2p-otn-dst-domain-creation.templatefile=p2p-otn-tunnel-dst-domain.json
+restapi.p2p-otn-domainG-creation.templatefile=p2p-otn-tunnel-domainG.json
+restapi.p2p-ethernet-service.templatefile=p2p-ethernet-service.json
+restapi.p2p-ethernet-service-vlan.templatefile=p2p-ethernet-service-vlan.json
+restapi.p2p-ethernet-service-same-domain.templatefile=p2p-ethernet-service-same-domain.json
+restapi.p2p-ethernet-service-modify.templatefile=p2p-ethernet-service-modify.json
+restapi.p2p-subscribe-notification.templatefile=p2p-subscribe-notification.json
+restapi.p2p-terminate-notification.templatefile=p2p-terminate-notification.json
+restapi.p2p-create-pm-data.templatefile=p2p-create-pm-data.json
+restapi.p2p-call-ves.templatefile=p2p-call-ves.json
+restapi.cll-ethernet-service-loop.templatefile=cll-ethernet-service-loop.json
+restapi.cll-ethernet-service-loop-protection.templatefile=cll-ethernet-service-loop-protection.json
+restapi.cll-otn-src-domain-creation.templatefile=cll-otn-tunnel-src-domain.json
+restapi.cll-otn-dst-domain-creation.templatefile=cll-otn-tunnel-dst-domain.json
+restapi.cll-otn-domainG-creation.templatefile=cll-otn-tunnel-domainG.json
+restapi.cll-subscribe-notification.templatefile=cll-subscribe-notification.json
+restapi.cll-terminate-notification.templatefile=cll-terminate-notification.json
+restapi.cll-create-pm-data.templatefile=cll-create-pm-data.json
+restapi.cll-call-ves.templatefile=cll-call-ves.json
+restapi.naming.gen-name.templatefile=naming-ms-post-gen-name.json
+restapi.ss.pnf.templatefile=self-serve-pnf-assignments.json
+restapi.ss.vnf.templatefile=self-serve-vnf-assignments.json
+restapi.ss.vfmodule.templatefile=self-serve-vfmodule-assignments.json
+restapi.ss.mS.vlan.tag.assign.templatefile=self-serve-mS-vlan-tag-assignments.json
+restapi.ss.mS.vlan.tag.unassign.templatefile=self-serve-mS-vlan-tag-unassignments.json
+restapi.ss.mS.mac.address.assign.templatefile=self-serve-mS-mac-address-assign.json
+restapi.ss.mS.mac.address.unassign.templatefile=self-serve-mS-mac-address-unassign.json
+
+# Default cloud owner
+cloud-region.cloud-owner=CloudOwner
+
+# URLs
+restapi.cr-allottedresource=/rests/data/GENERIC-RESOURCE-API:contrail-route-allotted-resources/contrail-route-allotted-resource={allotted-resource-id}
+restapi.sz-allottedresource=/rests/data/GENERIC-RESOURCE-API:security-zone-allotted-resources/security-zone-allotted-resource={allotted-resource-id}
+restapi.brg-allottedresource=/rests/data/GENERIC-RESOURCE-API:brg-allotted-resources/brg-allotted-resource={allotted-resource-id}
+restapi.vpp-honeycomb=/rests/data/ietf-interfaces:interfaces/interface={tunnel-name}
+restapi.tx-allottedresource=/rests/data/GENERIC-RESOURCE-API:tunnelxconn-allotted-resources/tunnelxconn-allotted-resource={allotted-resource-id}
+restapi.vnf-provided-allottedresource=/rests/data/GENERIC-RESOURCE-API:services/service={service-instance-id}/service-data/vnfs/vnf={vnf-id}/vnf-data/vnf-provided-allotted-resources
+restapi.network-provided-allottedresource=/rests/data/GENERIC-RESOURCE-API:services/service={service-instance-id}/service-data/vnfs/vnf={vnf-id}/vnf-data/vnf-provided-allotted-resources
+restapi.pm-configuration=/rests/data/GENERIC-RESOURCE-API:port-mirror-configurations/port-mirror-configuration={configuration-id}
+restapi.network=/rests/data/GENERIC-RESOURCE-API:services/service={service-instance-id}/service-data/networks
+restapi.vnf=/rests/data/GENERIC-RESOURCE-API:services/service={service-instance-id}/service-data/vnfs
+restapi.vnf-api.service-information=/rests/data/VNF-API:vnfs/vnf-list={vnf-id}/service-data
+restapi.parent-provided-resource=/rests/data/GENERIC-RESOURCE-API:services/service={service-instance-id}/service-data/provided-allotted-resources/provided-allotted-resource={allotted-resource-id}
+restapi.network-provided-resource=/rests/data/GENERIC-RESOURCE-API:services/service={service-instance-id}/service-data/networks/network={network-id}/network-data/network-provided-allotted-resources
+restapi.services=/rests/data/GENERIC-RESOURCE-API:services/service={service-instance-id}
+restapi.service.vnf.vfmodule-resource=/rests/data/GENERIC-RESOURCE-API:services/service={service-instance-id}/service-data/vnfs/vnf={vnf-id}/vnf-data/vf-modules/vf-module={vf-module-id}
+restapi.connection-attachment-allottedresource=/rests/data/GENERIC-RESOURCE-API:connection-attachment-allotted-resources/connection-attachment-allotted-resource={allotted-resource-id}
+restapi.naming.gen-name.service=/web/service/v1/genNetworkElementName
+restapi.ss-pnf-assignments=/rests/data/GENERIC-RESOURCE-API:services/service={service-instance-id}/service-data/pnfs/pnf={pnf-id}
+restapi.ss-vnf-assignments=/rests/data/GENERIC-RESOURCE-API:services/service={service-instance-id}/service-data/vnfs/vnf={vnf-id}
+restapi.ss-vfmodule-assignments=/rests/data/GENERIC-RESOURCE-API:services/service={service-instance-id}/service-data/vnfs/vnf={vnf-id}/vnf-data/vf-modules/vf-module={vf-module-id}
+restapi.ss-mS-vlan-tag-assign=/vlantagapi/v1/{action}
+restapi.ss-mS-mac-address-assign=/api/macaddress/v1/service/assign
+restapi.ss-mS-mac-address-unassign=/api/macaddress/v1/service/unassign
+restapi.preload-network=/rests/data/GENERIC-RESOURCE-API:preload-information/preload-list={network-name}/network/preload-data/preload-network-topology-information
+restapi.preloadinformation=/rests/data/GENERIC-RESOURCE-API:preload-information/preload-list=
+restapi.vf-module=/rests/data/GENERIC-RESOURCE-API:services/service={service-instance-id}/service-data/vnfs/vnf={vnf-id}/vnf-data/vf-modules/vf-module={vf-module-id}
+restapi.vnf-assign=/rests/data/GENERIC-RESOURCE-API:services/service={service-instance-id}/service-data/vnfs/vnf={vnf-id}
\ No newline at end of file
index 44ee0b9..17dea78 100644 (file)
@@ -21,8 +21,8 @@ restapi.templateDir=/opt/onap/sdnc/restapi/templates
 
 #RESTCONF
 lcm.restconf.configscaleout.templatefile=lcm-restconf-configscaleout.json
-lcm.restconf.configscaleout.urlpath=/restconf/config/vlb-business-vnf-onap-plugin:vlb-business-vnf-onap-plugin/vdns-instances/vdns-instance/
-lcm.restconf.configscaleout.geturlpath=/restconf/operational/health-vnf-onap-plugin:health-vnf-onap-plugin-state/health-check
+lcm.restconf.configscaleout.urlpath=/rests/data/vlb-business-vnf-onap-plugin:vlb-business-vnf-onap-plugin/vdns-instances/vdns-instance/
+lcm.restconf.configscaleout.geturlpath=/rests/data/health-vnf-onap-plugin:health-vnf-onap-plugin-state/health-check
 lcm.restconf.configscaleout.user=${SCALEOUT_USER}
 lcm.restconf.configscaleout.password=${SCALEOUT_PASSWORD}
 lcm.restconf.user=${RESTCONF_USER}
index a276854..0ff0656 100755 (executable)
@@ -33,11 +33,11 @@ PASSWORD=`awk '/odlPassword/ {print $2}' $dir/../../../values.yaml | head -1`
 case "$1" in
 
 primary)
-   status=$(curl -u $USERNAME:$PASSWORD -o /dev/null -H "Content-Type: application/json" -H "Accept: application/json" -X POST http://localhost:30202/restconf/operations/cluster-admin:change-member-voting-states-for-all-shards -d '{ "input" : { "member-voting-state" : [ { "member-name" : "member-1", "voting":true}, { "member-name" : "member-2", "voting":true}, { "member-name" : "member-3", "voting":true},{ "member-name" : "member-4", "voting":false},{ "member-name" : "member-5", "voting":false},{ "member-name" : "member-6", "voting":false}] } }' -w "%{http_code}\n" $url 2> /dev/null)
+   status=$(curl -u $USERNAME:$PASSWORD -o /dev/null -H "Content-Type: application/json" -H "Accept: application/json" -X POST http://localhost:30202/rests/operations/cluster-admin:change-member-voting-states-for-all-shards -d '{ "input" : { "member-voting-state" : [ { "member-name" : "member-1", "voting":true}, { "member-name" : "member-2", "voting":true}, { "member-name" : "member-3", "voting":true},{ "member-name" : "member-4", "voting":false},{ "member-name" : "member-5", "voting":false},{ "member-name" : "member-6", "voting":false}] } }' -w "%{http_code}\n" $url 2> /dev/null)
 ;;
 
 secondary)
-   status=$(curl -u $USERNAME:$PASSWORD -o /dev/null -H "Content-Type: application/json" -H "Accept: application/json" -X POST http://localhost:30202/restconf/operations/cluster-admin:change-member-voting-states-for-all-shards -d '{ "input" : { "member-voting-state" : [ { "member-name" : "member-1", "voting":false}, { "member-name" : "member-2", "voting":false}, { "member-name" : "member-3", "voting":false},{ "member-name" : "member-4", "voting":true},{ "member-name" : "member-5", "voting":true},{ "member-name" : "member-6", "voting":true}] } }' -w "%{http_code}\n" $url 2> /dev/null)
+   status=$(curl -u $USERNAME:$PASSWORD -o /dev/null -H "Content-Type: application/json" -H "Accept: application/json" -X POST http://localhost:30202/rests/operations/cluster-admin:change-member-voting-states-for-all-shards -d '{ "input" : { "member-voting-state" : [ { "member-name" : "member-1", "voting":false}, { "member-name" : "member-2", "voting":false}, { "member-name" : "member-3", "voting":false},{ "member-name" : "member-4", "voting":true},{ "member-name" : "member-5", "voting":true},{ "member-name" : "member-6", "voting":true}] } }' -w "%{http_code}\n" $url 2> /dev/null)
 ;;
 
 *)
index ffd578f..4a7ca8a 100755 (executable)
@@ -25,6 +25,9 @@ metadata:
     chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
     release: {{ include "common.release" . }}
     heritage: {{ .Release.Service }}
+  {{- if .Values.jobAnnotations }}
+  annotations:  {{- include "common.tplValue" (dict "value" .Values.jobAnnotations "context" $) | nindent 4 }}
+  {{- end }}
 spec:
   backoffLimit: 20
   template:
index 1845f6c..0b630e0 100755 (executable)
 {{ if .Values.config.sdnr.enabled -}}
 apiVersion: batch/v1
 kind: Job
-metadata: {{- include "common.resourceMetadata" (dict "suffix" "sdnrdb-init-job" "dot" . ) | nindent 2 }}
+metadata:
+  name: {{ include "common.fullname" . }}-sdnrdb-init-job
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ include "common.release" . }}
+    heritage: {{ .Release.Service }}
+  {{- if .Values.jobAnnotations }}
+  annotations:  {{- include "common.tplValue" (dict "value" .Values.jobAnnotations "context" $) | nindent 4 }}
+  {{- end }}
 spec:
   backoffLimit: 20
   template:
index 666a8ad..5a89df5 100644 (file)
@@ -290,7 +290,7 @@ spec:
           - name: JAVA_HOME
             value: "{{ .Values.config.javaHome}}"
           - name: JAVA_OPTS
-            value: "-Xms{{.Values.config.odl.javaOptions.minMemory}} -Xmx{{.Values.config.odl.javaOptions.maxMemory}}"
+            value: "-XX:MaxRAMPercentage={{.Values.config.odl.javaOptions.maxRAMPercentage}}"
           - name: LOG4J_FORMAT_MSG_NO_LOOKUPS
             value: "true"
           - name: KARAF_CONSOLE_LOG_LEVEL
@@ -394,6 +394,9 @@ spec:
           - mountPath: {{ .Values.config.configDir }}/dblib.properties
             name: properties
             subPath: dblib.properties
+          - mountPath: {{ .Values.config.configDir }}/generic-api-dg.properties
+            name: properties
+            subPath: generic-api-dg.properties
           - mountPath: {{ .Values.config.configDir }}/lcm-dg.properties
             name: properties
             subPath: lcm-dg.properties
index dc5fe74..e61f628 100644 (file)
@@ -216,7 +216,7 @@ certificates:
 # application images
 
 pullPolicy: Always
-image: onap/sdnc-image:2.5.5
+image: onap/sdnc-image:3.0.2
 
 # flag to enable debugging - application support required
 debugEnabled: false
@@ -316,8 +316,7 @@ config:
       maxGCPauseMillis: 100
       parallelGCThreads : 3
       numberGCLogFiles: 10
-      minMemory: 512m
-      maxMemory: 2048m
+      maxRAMPercentage: 70
       gcLogOptions: ""
       # Next line enables gc logging
       # gcLogOptions: "-Xlog:gc=trace:file={{.Values.config.odl.gcLogDir}}/gc-%t.log}:time,level,tags:filecount={{.Values.config.odl.javaOptions.numberGCLogFiles}}"
@@ -412,6 +411,20 @@ config:
 # Strimzi KafkaUser/Topic config on top level
 kafkaUser: *kafkaUser
 
+# Annotations to control the execution and deletion of the job
+# Can be used to delete a job before an Upgrade
+#
+# jobAnnotations:
+#   # In case of an ArgoCD deployment this Hook deletes the job before syncing
+#   argocd.argoproj.io/hook: Sync
+#   argocd.argoproj.io/hook-delete-policy: BeforeHookCreation
+#
+#   # In case of an Helm/Flux deployment this Hook deletes the job
+#   # This is what defines this resource as a hook. Without this line, the
+#   # job is considered part of the release.
+#   "helm.sh/hook": "pre-upgrade,pre-rollback,post-install"
+#   "helm.sh/hook-delete-policy": "before-hook-creation"
+#   "helm.sh/hook-weight": "1"
 
 # dependency / sub-chart configuration
 network-name-gen:
@@ -445,21 +458,6 @@ mariadb-galera: &mariadbGalera
 cds:
   enabled: false
 
-dmaap-listener:
-  enabled: true
-  nameOverride: sdnc-dmaap-listener
-  mariadb-galera:
-    <<: *mariadbGalera
-    config:
-      <<: *mariadbGaleraConfig
-      mysqlDatabase: *sdncDbName
-  config:
-    sdncChartName: sdnc
-    dmaapPort: 3904
-    sdncPort: 8282
-    configDir: /opt/onap/sdnc/data/properties
-    odlCredsExternalSecret: *odlCredsSecretName
-
 ueb-listener:
   enabled: true
   mariadb-galera:
@@ -668,18 +666,18 @@ flavor: small
 resources:
   small:
     limits:
-      cpu: "2"
-      memory: "4.7Gi"
+      cpu: "3"
+      memory: "8Gi"
     requests:
       cpu: "1"
-      memory: "4.7Gi"
+      memory: "8Gi"
   large:
     limits:
       cpu: "4"
-      memory: "9.4Gi"
+      memory: "10Gi"
     requests:
       cpu: "2"
-      memory: "9.4Gi"
+      memory: "10Gi"
   unlimited: {}
 
 #Pods Service Account
index 8341967..dac67dd 100755 (executable)
@@ -17,7 +17,7 @@
 apiVersion: v2
 description: ONAP Service Orchestrator
 name: so
-version: 13.0.2
+version: 16.0.2
 
 dependencies:
   - name: common
@@ -30,7 +30,7 @@ dependencies:
     version: ~13.x-0
     repository: '@local'
   - name: mariadb-galera
-    version: ~13.x-0
+    version: ~16.x-0
     repository: '@local'
     condition: global.mariadbGalera.localCluster
   - name: repositoryGenerator
@@ -40,18 +40,18 @@ dependencies:
     version: ~13.x-0
     repository: 'file://components/soHelpers'
   - name: so-admin-cockpit
-    version: ~13.x-0
+    version: ~15.x-0
     repository: 'file://components/so-admin-cockpit'
     condition: so-admin-cockpit.enabled
   - name: so-bpmn-infra
-    version: ~13.x-0
+    version: ~15.x-0
     repository: 'file://components/so-bpmn-infra'
   - name: so-catalog-db-adapter
-    version: ~13.x-0
+    version: ~15.x-0
     repository: 'file://components/so-catalog-db-adapter'
     condition: so-catalog-db-adapter.enabled
   - name: so-cnf-adapter
-    version: ~13.x-0
+    version: ~15.x-0
     repository: "file://components/so-cnf-adapter"
     condition: so-cnf-adapter.enabled
   - name: so-cnfm-lcm
@@ -67,28 +67,28 @@ dependencies:
     repository: 'file://components/so-etsi-sol003-adapter'
     condition: so-etsi-sol003-adapter.enabled
   - name: so-mariadb
-    version: ~13.x-0
+    version: ~16.x-0
     repository: 'file://components/so-mariadb'
   - name: so-nssmf-adapter
-    version: ~13.x-0
+    version: ~15.x-0
     repository: 'file://components/so-nssmf-adapter'
     condition: so-nssmf-adapter.enabled
   - name: so-oof-adapter
-    version: ~13.x-0
+    version: ~15.x-0
     repository: 'file://components/so-oof-adapter'
     condition: so-oof-adapter.enabled
   - name: so-openstack-adapter
-    version: ~13.x-0
+    version: ~15.x-0
     repository: 'file://components/so-openstack-adapter'
     condition: so-openstack-adapter.enabled
   - name: so-request-db-adapter
-    version: ~13.x-0
+    version: ~15.x-0
     repository: 'file://components/so-request-db-adapter'
   - name: so-sdc-controller
-    version: ~13.x-0
+    version: ~15.x-0
     repository: 'file://components/so-sdc-controller'
   - name: so-sdnc-adapter
-    version: ~13.x-0
+    version: ~15.x-0
     repository: 'file://components/so-sdnc-adapter'
     condition: so-sdnc-adapter.enabled
   - name: so-ve-vnfm-adapter
index defd598..76fae4d 100644 (file)
@@ -21,7 +21,7 @@
 apiVersion: v2
 description: A Helm chart for ONAP Service Orchestration Monitoring
 name: so-admin-cockpit
-version: 13.0.0
+version: 15.0.0
 
 dependencies:
   - name: common
index 7657415..8bfb149 100644 (file)
@@ -21,6 +21,8 @@ mso:
         url: http://so-request-db-adapter.{{ include "common.namespace" . }}:8083/infraActiveRequests/
         auth: Basic YnBlbDpwYXNzd29yZDEk
 spring:
+  application:
+    name: so-admin-cockpit
   main:
     allow-bean-definition-overriding: true
   security:
index 53d185c..c61de00 100644 (file)
@@ -26,7 +26,7 @@ global:
   nodePortPrefix: 302
   nodePortPrefixExt: 304
   repository: nexus3.onap.org:10001
-  readinessImage: onap/oom/readiness:6.0.3
+  readinessImage: onap/oom/readiness:6.1.2
   envsubstImage: dibi/envsubst
   persistence:
     mountPath: /dockerdata-nfs
@@ -66,7 +66,7 @@ secrets:
 # Application configuration defaults.
 #################################################################
 repository: nexus3.onap.org:10001
-image: onap/so/so-admin-cockpit:1.9.0
+image: onap/so/so-admin-cockpit:1.10.0
 pullPolicy: Always
 
 # Local mariadb galera instance default name
@@ -121,17 +121,17 @@ flavor: small
 resources:
   small:
     requests:
-      cpu: "0.5"
+      cpu: "1"
       memory: "1Gi"
     limits:
-      cpu: "1"
+      cpu: "2"
       memory: "4Gi"
   large:
     requests:
       cpu: "1"
       memory: "2Gi"
     limits:
-      cpu: "2"
+      cpu: "3"
       memory: "8Gi"
   unlimited: {}
 readinessProbe:
index 6f52dfa..2ed1abc 100755 (executable)
@@ -18,7 +18,7 @@ apiVersion: v2
 appVersion: "1.0"
 description: A Helm chart for SO Bpmn Infra
 name: so-bpmn-infra
-version: 13.1.0
+version: 15.1.1
 
 dependencies:
   - name: common
index eebc71a..b659306 100755 (executable)
@@ -299,7 +299,7 @@ policy:
 sdnc:
   auth: Basic YWRtaW46S3A4Yko0U1hzek0wV1hsaGFrM2VIbGNzZTJnQXc4NHZhb0dHbUp2VXkyVQ==
   host: http://{{ .Values.global.sdncOamService }}.{{ include "common.namespace" . }}:{{ .Values.global.sdncOamPort }}
-  path: /restconf/operations/GENERIC-RESOURCE-API
+  path: /rests/operations/GENERIC-RESOURCE-API
   si:
     svc:
       types: PORT-MIRROR,PPROBE
@@ -311,7 +311,7 @@ sdnc:
     callback:
       timeout: PT5M
   lcm:
-    path: '/restconf/operations/LCM:'
+    path: '/rests/operations/LCM:'
     actionTimeout: 300000
     dmapp:
       readTopic: SDNC-LCM-WRITE
@@ -355,6 +355,8 @@ server:
   tomcat:
     max-threads: 50
 spring:
+  application:
+    name: so-bpmn-infra
   datasource:
     hikari:
       jdbcUrl: jdbc:mariadb://${DB_HOST}:${DB_PORT}/camundabpmn
@@ -389,6 +391,19 @@ spring:
       username: mso_admin
       password: '$2a$10$Fh9ffgPw2vnmsghsRD3ZauBL1aKXebigbq3BB1RPWtE62UDILsjke'
       role: ACTUATOR
+  sleuth:
+    enabled: {{ .Values.global.tracing.enabled }}
+    messaging:
+      jms:
+        enabled: false
+    trace-id128: true
+    sampler:
+      probability: {{ .Values.global.tracing.sampling.probability }}
+    supports-join: false
+    web:
+      skip-pattern: /actuator/health/*
+  zipkin:
+    base-url: {{ .Values.global.tracing.collector.baseUrl }}
 so:
   vnfm:
     adapter:
index ec19321..190b89d 100755 (executable)
@@ -20,6 +20,7 @@ metadata: {{- include "common.resourceMetadata" . | nindent 2 }}
 spec:
   selector: {{- include "common.selectors" . | nindent 4 }}
   replicas: {{ .Values.replicaCount }}
+  revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
   minReadySeconds: {{ index .Values.minReadySeconds }}
   strategy:
     type: {{ index .Values.updateStrategy.type }}
@@ -65,7 +66,8 @@ spec:
           readOnly: true
         - name: {{ include "common.fullname" . }}-logs
           mountPath: {{ .Values.log.path }}
-{{ include "so.helpers.livenessProbe" .| indent 8 }}
+        {{- include "so.helpers.startupProbe" .| indent 8 }}
+        {{- include "so.helpers.livenessProbe" .| indent 8 }}
         ports: {{ include "common.containerPorts" . | nindent 10  }}
       # Filebeat sidecar container
       {{ include "common.log.sidecar" . | nindent 6 }}
index d5cee51..1cab8f9 100755 (executable)
@@ -28,11 +28,20 @@ global:
     useOperator: true
     service: mariadb-galera
     servicePort: '3306'
+  tracing:
+    enabled: false
+    collector:
+      baseUrl: http://jaeger-collector.istio-config:9411
+    sampling:
+      probability: 1.0 # percentage of requests that are sampled (between 0-1/0%-100%)
+
 
 readinessCheck:
   wait_for:
     jobs:
       - '{{ include "common.release" . }}-so-mariadb-config-job'
+    services:
+      - 'so-catalog-db-adapter'
 
 #################################################################
 # Secrets metaconfig
@@ -60,7 +69,7 @@ secrets:
 #################################################################
 # Application configuration defaults.
 #################################################################
-image: onap/so/bpmn-infra:1.13.0
+image: onap/so/bpmn-infra:1.15.4
 pullPolicy: Always
 
 kafkaUser:
@@ -136,6 +145,7 @@ vnf:
     version: v2
 
 replicaCount: 1
+revisionHistoryLimit: 1
 minReadySeconds: 10
 containerPort: &containerPort 8081
 logPath: ./logs/bpmn/
@@ -162,14 +172,14 @@ flavor: large
 resources:
   small:
     limits:
-      cpu: "1"
+      cpu: "2"
       memory: "3Gi"
     requests:
-      cpu: "0.5"
+      cpu: "1"
       memory: "3Gi"
   large:
     limits:
-      cpu: "2"
+      cpu: "3"
       memory: "6Gi"
     requests:
       cpu: "1"
@@ -178,8 +188,7 @@ resources:
 livenessProbe:
   path: /manage/health
   scheme: HTTP
-  initialDelaySeconds: 600
-  periodSeconds: 60
+  periodSeconds: 20
   timeoutSeconds: 10
   successThreshold: 1
   failureThreshold: 3
@@ -209,3 +218,9 @@ serviceAccount:
 log:
   path: /var/log/onap
 logConfigMapNamePrefix: '{{ include "common.fullname" . }}'
+
+podAnnotations:
+  # disable istio-based tracing
+  proxy.istio.io/config: |
+    tracing:
+      sampling: 0
index 04021f9..7841938 100755 (executable)
@@ -16,7 +16,7 @@
 apiVersion: v2
 description: A Helm chart for so-catalog-db-adapter
 name: so-catalog-db-adapter
-version: 13.0.0
+version: 15.1.1
 
 dependencies:
   - name: common
index d5a3aef..b797d1f 100755 (executable)
@@ -31,6 +31,8 @@ mso:
   db:
     auth:  {{ .Values.mso.adapters.db.auth }}
 spring:
+  application:
+    name: so-catalog-db-adapter
   datasource:
     hikari:
       jdbcUrl: jdbc:mariadb://${DB_HOST}:${DB_PORT}/catalogdb
@@ -49,6 +51,19 @@ spring:
       username: mso_admin
       password: '$2a$10$Fh9ffgPw2vnmsghsRD3ZauBL1aKXebigbq3BB1RPWtE62UDILsjke'
       role: ACTUATOR
+  sleuth:
+    enabled: {{ .Values.global.tracing.enabled }}
+    messaging:
+      jms:
+        enabled: false
+    trace-id128: true
+    sampler:
+      probability: {{ .Values.global.tracing.sampling.probability }}
+    supports-join: false
+    web:
+      skip-pattern: /actuator/health/*
+  zipkin:
+    base-url: {{ .Values.global.tracing.collector.baseUrl }}
 #Actuator
 management:
   context-path: /manage
index e3a77de..02673ec 100755 (executable)
@@ -19,6 +19,7 @@ metadata: {{- include "common.resourceMetadata" . | nindent 2 }}
 spec:
   selector: {{- include "common.selectors" . | nindent 4 }}
   replicas: {{ .Values.replicaCount }}
+  revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
   minReadySeconds: {{ index .Values.minReadySeconds }}
   strategy:
     type: {{ index .Values.updateStrategy.type }}
@@ -57,7 +58,8 @@ spec:
         - name: config
           mountPath: /app/config
           readOnly: true
-{{ include "so.helpers.livenessProbe" .| indent 8 }}
+        {{- include "so.helpers.startupProbe" .| indent 8 }}
+        {{- include "so.helpers.livenessProbe" .| indent 8 }}
         ports: {{ include "common.containerPorts" . | nindent 10  }}
       serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
       volumes:
index 5a5325f..c13b7b0 100755 (executable)
@@ -24,6 +24,12 @@ global:
   mariadbGalera:
     service: mariadb-galera
     servicePort: '3306'
+  tracing:
+    enabled: false
+    collector:
+      baseUrl: http://jaeger-collector.istio-config:9411
+    sampling:
+      probability: 1.0 # percentage of requests that are sampled (between 0-1/0%-100%)
 
 readinessCheck:
   wait_for:
@@ -56,7 +62,7 @@ secrets:
 #################################################################
 # Application configuration defaults.
 #################################################################
-image: onap/so/catalog-db-adapter:1.12.2
+image: onap/so/catalog-db-adapter:1.15.4
 pullPolicy: Always
 
 # Local mariadb galera instance default name
@@ -82,6 +88,7 @@ mso:
       auth: Basic YnBlbDpwYXNzd29yZDEk
 
 replicaCount: 1
+revisionHistoryLimit: 1
 minReadySeconds: 10
 containerPort: &containerPort 8082
 logPath: ./logs/catdb/
@@ -125,8 +132,7 @@ livenessProbe:
   path: /manage/health
   port: 8082
   scheme: HTTP
-  initialDelaySeconds: 600
-  periodSeconds: 60
+  periodSeconds: 20
   timeoutSeconds: 10
   successThreshold: 1
   failureThreshold: 3
@@ -160,3 +166,9 @@ serviceAccount:
   nameOverride: so-catalog-db-adapter
   roles:
     - read
+
+podAnnotations:
+  # disable istio-based tracing
+  proxy.istio.io/config: |
+    tracing:
+      sampling: 0
index c9bac65..d386cb3 100755 (executable)
@@ -18,7 +18,7 @@ apiVersion: v2
 appVersion: "1.7.1"
 description: A Helm chart for Kubernetes
 name: so-cnf-adapter
-version: 13.0.0
+version: 15.0.0
 
 dependencies:
   - name: common
index a1a25be..ada2f78 100755 (executable)
@@ -21,6 +21,8 @@ aai:
 logging:
   path: logs
 spring:
+  application:
+    name: so-cnf-adapter
   security:
     usercredentials:
       - username: ${ACTUATOR_USERNAME}
index d8670f1..60baffa 100755 (executable)
@@ -20,6 +20,7 @@ metadata: {{- include "common.resourceMetadata" . | nindent 2 }}
 spec:
   selector: {{- include "common.selectors" . | nindent 4 }}
   replicas: {{ index .Values.replicaCount }}
+  revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
   minReadySeconds: {{ index .Values.minReadySeconds }}
   strategy:
     type: {{ index .Values.updateStrategy.type }}
@@ -80,12 +81,12 @@ spec:
               readOnly: true
             - name: encoder
               mountPath: /input
+          {{- include "so.helpers.startupProbe" .| indent 10 }}
           livenessProbe:
             httpGet:
               path: {{ index .Values.livenessProbe.path}}
               port: {{ index .Values.containerPort }}
               scheme: {{ index .Values.livenessProbe.scheme}}
-            initialDelaySeconds: {{ index .Values.livenessProbe.initialDelaySeconds}}
             periodSeconds: {{ index .Values.livenessProbe.periodSeconds}}
             timeoutSeconds: {{ index .Values.livenessProbe.timeoutSeconds}}
             successThreshold: {{ index .Values.livenessProbe.successThreshold}}
index 32f8727..126f4d3 100755 (executable)
@@ -63,7 +63,7 @@ secrets:
 #################################################################
 # Application configuration defaults.
 #################################################################
-image: onap/so/so-cnf-adapter:1.10.0
+image: onap/so/so-cnf-adapter:1.12.3
 pullPolicy: Always
 
 readinessCheck:
@@ -104,6 +104,7 @@ mso:
     requestDb:
       auth: ${REQUEST_AUTH}
 replicaCount: 1
+revisionHistoryLimit: 1
 minReadySeconds: 10
 containerPort: &containerPort 8090
 logPath: ./logs/cnf-adapter/
@@ -131,24 +132,23 @@ resources:
   small:
     limits:
       cpu: "1"
-      memory: "1Gi"
+      memory: "3Gi"
     requests:
       cpu: "0.5"
-      memory: "1Gi"
+      memory: "3Gi"
   large:
     limits:
       cpu: "2"
-      memory: "2Gi"
+      memory: "4Gi"
     requests:
       cpu: "1"
-      memory: "2Gi"
+      memory: "4Gi"
   unlimited: {}
 livenessProbe:
   path: /manage/health
   port: 8090
   scheme: HTTP
-  initialDelaySeconds: 600
-  periodSeconds: 60
+  periodSeconds: 20
   timeoutSeconds: 10
   successThreshold: 1
   failureThreshold: 3
index 411b75f..3d2f6c8 100644 (file)
@@ -17,6 +17,8 @@ aai:
   version: v24
   endpoint: http://aai.{{ include "common.namespace" . }}:80
 spring:
+  application:
+    name: so-cnfm-lcm
   datasource:
     hikari:
       camunda:
index 45572c9..040fbad 100644 (file)
@@ -18,6 +18,7 @@ metadata: {{- include "common.resourceMetadata" . | nindent 2 }}
 spec:
   selector: {{- include "common.selectors" . | nindent 4 }}
   replicas: {{ index .Values.replicaCount }}
+  revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
   minReadySeconds: {{ index .Values.minReadySeconds }}
   strategy:
     type: {{ index .Values.updateStrategy.type }}
index 9a85ec8..fa93ac6 100644 (file)
@@ -42,7 +42,7 @@ secrets:
 #################################################################
 # Application configuration defaults.
 #################################################################
-image: onap/so/so-cnfm-as-lcm:1.12.1
+image: onap/so/so-cnfm-as-lcm:1.12.2
 pullPolicy: Always
 
 aai:
@@ -77,6 +77,7 @@ sdc:
   key: 566B754875657232314F5548556D3665
 
 replicaCount: 1
+revisionHistoryLimit: 1
 minReadySeconds: 10
 containerPort: &containerPort 9888
 logPath: ./logs/so-cnfm-lcm/
@@ -103,25 +104,25 @@ flavor: small
 resources:
   small:
     limits:
-      cpu: "2000m"
+      cpu: "4"
       memory: "4Gi"
     requests:
-      cpu: "500m"
+      cpu: "2"
       memory: "1Gi"
   large:
     limits:
-      cpu: "4000m"
+      cpu: "5"
       memory: "8Gi"
     requests:
-      cpu: "1000m"
+      cpu: "2"
       memory: "2Gi"
   unlimited: {}
 
 livenessProbe:
   port: *containerPort
-  initialDelaySeconds: 600
-  periodSeconds: 60
+  periodSeconds: 20
   timeoutSeconds: 10
+  initialDelaySeconds: 60
   successThreshold: 1
   failureThreshold: 3
 
@@ -152,4 +153,3 @@ serviceAccount:
   nameOverride: so-cnfm-lcm
   roles:
     - read
-
index 40f97ad..b555d16 100644 (file)
@@ -19,6 +19,8 @@ aai:
   version: v19
   endpoint: http://aai.{{ include "common.namespace" . }}:80
 spring:
+  application:
+    name: so-etsi-nfvo-ns-lcm
   datasource:
     hikari:
       camunda:
index dc6f2b7..ad55487 100644 (file)
@@ -128,10 +128,10 @@ resources:
   small:
     limits:
       cpu: "1"
-      memory: "1Gi"
+      memory: "3Gi"
     requests:
       cpu: "0.5"
-      memory: "1Gi"
+      memory: "2Gi"
   large:
     limits:
       cpu: "2"
index 04d973a..27af6f3 100755 (executable)
@@ -18,6 +18,8 @@ aai:
   version: v15
   endpoint: http://aai.{{ include "common.namespace" . }}:80
 spring:
+  application:
+    name: so-etsi-sol003-adapter
   security:
     usercredentials:
     - username: vnfm
index bea0a28..6d08ea1 100755 (executable)
@@ -28,7 +28,7 @@ global:
 #################################################################
 # Application configuration defaults.
 #################################################################
-image: onap/so/so-etsi-sol003-adapter:1.9.0
+image: onap/so/so-etsi-sol003-adapter:1.9.1
 pullPolicy: Always
 
 aaf:
index c4d28c4..d1e4773 100755 (executable)
@@ -16,6 +16,8 @@
 logging:
   path: logs
 spring:
+  application:
+    name: so-etsi-sol005-adapter
   datasource:
     hikari:
        driver-class-name: org.mariadb.jdbc.Driver
index 2b219d0..cc81dac 100755 (executable)
@@ -52,7 +52,7 @@ secrets:
 #################################################################
 # Application configuration defaults.
 #################################################################
-image: onap/so/so-etsi-sol005-adapter:1.9.0
+image: onap/so/so-etsi-sol005-adapter:1.9.1
 pullPolicy: Always
 
 # Local mariadb galera instance default name
@@ -105,17 +105,17 @@ resources:
   small:
     limits:
       cpu: "1"
-      memory: "1Gi"
+      memory: "3Gi"
     requests:
       cpu: "0.5"
-      memory: "1Gi"
+      memory: "2Gi"
   large:
     limits:
       cpu: "2"
-      memory: "2Gi"
+      memory: "4Gi"
     requests:
       cpu: "1"
-      memory: "2Gi"
+      memory: "3Gi"
   unlimited: {}
 livenessProbe:
   path: /manage/health
index f66f740..3d229b8 100755 (executable)
@@ -16,7 +16,7 @@
 apiVersion: v2
 description: MariaDB Service
 name: so-mariadb
-version: 13.0.0
+version: 16.0.0
 
 dependencies:
   - name: common
index 1a78253..73c120a 100755 (executable)
@@ -26,7 +26,7 @@
 
 echo "Creating camundabpmn database . . ." 1>/tmp/mariadb-camundabpmn.log 2>&1
 
-mysql -uroot -p$MYSQL_ROOT_PASSWORD << EOF || exit 1
+mysqlcmd -uroot -p$MYSQL_ROOT_PASSWORD << EOF || exit 1
 DROP DATABASE IF EXISTS camundabpmn;
 CREATE DATABASE camundabpmn;
 DROP USER IF EXISTS '${CAMUNDA_DB_USER}';
@@ -37,7 +37,7 @@ EOF
 
 cd /docker-entrypoint-initdb.d/db-sql-scripts
 
-mysql -uroot -p$MYSQL_ROOT_PASSWORD -f < mariadb_engine_7.14.0.sql || exit 1
-mysql -uroot -p$MYSQL_ROOT_PASSWORD -f < mariadb_identity_7.14.0.sql || exit 1
+mysqlcmd -uroot -p$MYSQL_ROOT_PASSWORD -f < mariadb_engine_7.14.0.sql || exit 1
+mysqlcmd -uroot -p$MYSQL_ROOT_PASSWORD -f < mariadb_identity_7.14.0.sql || exit 1
 
 echo "Created camundabpmn database . . ." 1>>/tmp/mariadb-camundabpmn.log 2>&1
index 4c2d668..ae9a23d 100755 (executable)
@@ -25,7 +25,7 @@
 
 echo "Creating requestdb database . . ." 1>/tmp/mariadb-requestdb.log 2>&1
 
-mysql -uroot -p$MYSQL_ROOT_PASSWORD << EOF || exit 1
+mysqlcmd -uroot -p$MYSQL_ROOT_PASSWORD << EOF || exit 1
 DROP DATABASE IF EXISTS requestdb;
 CREATE DATABASE /*!32312 IF NOT EXISTS*/ requestdb /*!40100 DEFAULT CHARACTER SET latin1 */;
 DROP USER IF EXISTS '${REQUEST_DB_USER}';
index dd374d4..2f2aec8 100755 (executable)
@@ -25,7 +25,7 @@
 
 echo "Creating catalogdb database . . ." 1>/tmp/mariadb-catalogdb.log 2>&1
 
-mysql -uroot -p$MYSQL_ROOT_PASSWORD << EOF || exit 1
+mysqlcmd -uroot -p$MYSQL_ROOT_PASSWORD << EOF || exit 1
 DROP DATABASE IF EXISTS catalogdb;
 CREATE DATABASE /*!32312 IF NOT EXISTS*/ catalogdb /*!40100 DEFAULT CHARACTER SET latin1 */;
 DROP USER IF EXISTS '${CATALOG_DB_USER}';
index db6fd22..410be6c 100755 (executable)
@@ -28,7 +28,7 @@ prepare_password()
 
 NFVO_DB_PASSWORD=`prepare_password $NFVO_DB_PASSWORD`
 
-mysql -uroot -p$MYSQL_ROOT_PASSWORD << EOF || exit 1
+mysqlcmd -uroot -p$MYSQL_ROOT_PASSWORD << EOF || exit 1
 CREATE DATABASE /*!32312 IF NOT EXISTS*/ nfvo /*!40100 DEFAULT CHARACTER SET latin1 */;
 DROP USER IF EXISTS '${NFVO_DB_USER}';
 CREATE USER '${NFVO_DB_USER}';
index cb343bc..84ff14d 100644 (file)
@@ -28,7 +28,7 @@ prepare_password()
 
 CNFM_DB_PASSWORD=`prepare_password $CNFM_DB_PASSWORD`
 
-mysql -uroot -p$MYSQL_ROOT_PASSWORD << EOF || exit 1
+mysqlcmd -uroot -p$MYSQL_ROOT_PASSWORD << EOF || exit 1
 CREATE DATABASE /*!32312 IF NOT EXISTS*/ cnfm /*!40100 DEFAULT CHARACTER SET latin1 */;
 DROP USER IF EXISTS '${CNFM_DB_USER}';
 CREATE USER '${CNFM_DB_USER}';
index bf8ae78..8086dd6 100755 (executable)
@@ -33,7 +33,7 @@ prepare_password()
 
 DB_PASSWORD=`prepare_password $DB_PASSWORD`
 
-mysql -uroot -p$MYSQL_ROOT_PASSWORD << EOF || exit 1
+mysqlcmd -uroot -p$MYSQL_ROOT_PASSWORD << EOF || exit 1
 DROP USER IF EXISTS '${DB_USER}';
 CREATE USER '${DB_USER}';
 GRANT USAGE ON *.* TO '${DB_USER}'@'%' IDENTIFIED BY '${DB_PASSWORD}';
index 74b869c..d4ffb1f 100755 (executable)
@@ -33,7 +33,7 @@ prepare_password()
 
 DB_ADMIN_PASSWORD=`prepare_password $DB_ADMIN_PASSWORD`
 
-mysql -uroot -p$MYSQL_ROOT_PASSWORD << EOF || exit 1
+mysqlcmd -uroot -p$MYSQL_ROOT_PASSWORD << EOF || exit 1
 DROP USER IF EXISTS '${DB_ADMIN}';
 CREATE USER '${DB_ADMIN}';
 GRANT USAGE ON *.* TO '${DB_ADMIN}'@'%' IDENTIFIED BY '${DB_ADMIN_PASSWORD}';
index 20cba67..d87faf9 100644 (file)
@@ -25,10 +25,9 @@ metadata:
     chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
     release: {{ include "common.release" . }}
     heritage: {{ .Release.Service }}
-  annotations:
-    "helm.sh/hook": pre-upgrade,pre-install
-    "helm.sh/hook-weight": "1"
-    "helm.sh/hook-delete-policy": before-hook-creation
+  {{- if .Values.jobAnnotations }}
+  annotations:  {{- include "common.tplValue" (dict "value" .Values.jobAnnotations "context" $) | nindent 4 }}
+  {{- end }}
 spec:
   backoffLimit: 20
   template:
@@ -81,10 +80,9 @@ metadata:
     chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
     release: {{ include "common.release" . }}
     heritage: {{ .Release.Service }}
-  annotations:
-    "helm.sh/hook": post-upgrade,post-rollback,post-install
-    "helm.sh/hook-weight": "0"
-    "helm.sh/hook-delete-policy": before-hook-creation
+  {{- if .Values.jobAnnotations }}
+  annotations:  {{- include "common.tplValue" (dict "value" .Values.jobAnnotations "context" $) | nindent 4 }}
+  {{- end }}
 spec:
   backoffLimit: 20
   template:
@@ -97,7 +95,7 @@ spec:
       initContainers: {{ include "common.readinessCheck.waitFor" . | nindent 6 }}
       containers:
       - name: {{ include "common.name" . }}-config
-        image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
+        image: {{ include "repositoryGenerator.image.mariadb" . }}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
         command:
         - /bin/bash
@@ -105,12 +103,12 @@ spec:
         - >
           {{- if include "common.onServiceMesh" . }}
           echo "waiting 15s for istio side cars to be up"; sleep 15s;{{- end }}
-          mysql() { /usr/bin/mysql  -h ${DB_HOST} -P ${DB_PORT} "$@"; };
-          export -f mysql;
-          mysql --user=root --password=${MYSQL_ROOT_PASSWORD} requestdb -e exit > /dev/null 2>&1 {{ if not .Values.global.migration.enabled }} && echo "Database already initialized!!!" && exit 0 {{ end }};
-          for f in /docker-entrypoint-initdb.d/*; do case "$f" in  *.sh) echo "$0: running $f"; . "$f" ;;  *.sql) echo "$0: running $f"; "${mysql[@]}" < "$f"; echo ;; *.sql.gz) echo "$0: running $f"; gunzip -c "$f" | "${mysql[@]}"; echo ;;  *) echo "$0: ignoring $f" ;;  esac; echo; done;
+          mysqlcmd() { mariadb  -h ${DB_HOST} -P ${DB_PORT} "$@"; };
+          export -f mysqlcmd;
+          mysqlcmd --user=root --password=${MYSQL_ROOT_PASSWORD} requestdb -e exit > /dev/null 2>&1 {{ if not .Values.global.migration.enabled }} && echo "Database already initialized!!!" && exit 0 {{ end }};
+          for f in /docker-entrypoint-initdb.d/*; do case "$f" in  *.sh) echo "$0: running $f"; . "$f" ;;  *.sql) echo "$0: running $f"; "${mysqlcmd[@]}" < "$f"; echo ;; *.sql.gz) echo "$0: running $f"; gunzip -c "$f" | "${mysqlcmd[@]}"; echo ;;  *) echo "$0: ignoring $f" ;;  esac; echo; done;
           {{- if .Values.global.migration.enabled }}
-          mysql -vv --user=root --password=${MYSQL_ROOT_PASSWORD} < `ls -tr /var/data/mariadb/* | tail -1`;
+          mysqlcmd -vv --user=root --password=${MYSQL_ROOT_PASSWORD} < `ls -tr /var/data/mariadb/* | tail -1`;
           {{- end }}
         env:
         - name: DB_HOST
index 7eea6a5..a2cf93c 100755 (executable)
@@ -22,7 +22,7 @@ global:
   nodePortPrefix: 302
   nodePortPrefixExt: 304
   repository: nexus3.onap.org:10001
-  readinessImage: onap/oom/readiness:6.0.3
+  readinessImage: onap/oom/readiness:6.2.0
   ubuntuInitRepository: docker.io
   mariadbGalera:
     # flag to enable the DB creation via mariadb-operator
@@ -97,11 +97,7 @@ secrets:
 #################################################################
 # Application configuration defaults.
 #################################################################
-# application image
-repository: nexus3.onap.org:10001
-image: mariadb:10.1.38
 pullPolicy: Always
-ubuntuInitImage: oomk8s/ubuntu-init:2.0.0
 
 # Local mariadb galera instance default name
 mariadb-galera:
@@ -212,3 +208,18 @@ readinessCheck:
   wait_for:
     services:
       - '{{ include "common.mariadbService" . }}'
+
+# Annotations to control the execution and deletion of the job
+# Can be used to delete a job before an Upgrade
+#
+# jobAnnotations:
+#   # In case of an ArgoCD deployment this Hook deletes the job before syncing
+#   argocd.argoproj.io/hook: Sync
+#   argocd.argoproj.io/hook-delete-policy: BeforeHookCreation
+#
+#   # In case of an Helm/Flux deployment this Hook deletes the job
+#   # This is what defines this resource as a hook. Without this line, the
+#   # job is considered part of the release.
+#   "helm.sh/hook": "pre-upgrade,pre-rollback,post-install"
+#   "helm.sh/hook-delete-policy": "before-hook-creation"
+#   "helm.sh/hook-weight": "1"
index 0dc42e4..b06e503 100755 (executable)
@@ -17,7 +17,7 @@ apiVersion: v2
 appVersion: "1.0"
 description: A Helm chart for Kubernetes
 name: so-nssmf-adapter
-version: 13.0.0
+version: 15.0.0
 
 dependencies:
   - name: common
index 633ac7d..7c63fd3 100755 (executable)
@@ -19,6 +19,8 @@ aai:
 logging:
   path: logs
 spring:
+  application:
+    name: so-nssmf-adapter
   datasource:
     jdbc-url: jdbc:mariadb://${DB_HOST}:${DB_PORT}/requestdb
     username: ${DB_USERNAME}
index d45ee69..fc26535 100755 (executable)
@@ -71,7 +71,7 @@ secrets:
 #################################################################
 # Application configuration defaults.
 #################################################################
-image: onap/so/so-nssmf-adapter:1.9.1
+image: onap/so/so-nssmf-adapter:1.10.0
 pullPolicy: Always
 
 # Local mariadb galera instance default name
@@ -130,19 +130,19 @@ flavor: small
 # Segregation for Different environment (Small and Large)
 resources:
   small:
-    limits:
-      cpu: "1"
-      memory: "1Gi"
-    requests:
-      cpu: "0.5"
-      memory: "1Gi"
-  large:
     limits:
       cpu: "2"
       memory: "2Gi"
     requests:
       cpu: "1"
       memory: "2Gi"
+  large:
+    limits:
+      cpu: "3"
+      memory: "3Gi"
+    requests:
+      cpu: "1"
+      memory: "3Gi"
   unlimited: {}
 livenessProbe:
   path: /manage/health
index 08e8071..00fa469 100755 (executable)
@@ -18,7 +18,7 @@ apiVersion: v2
 appVersion: "1.0"
 description: A Helm chart for Kubernetes
 name: so-oof-adapter
-version: 13.0.0
+version: 15.0.0
 
 dependencies:
   - name: common
index c58ba91..5f52f00 100755 (executable)
@@ -16,6 +16,8 @@
 logging:
   path: logs
 spring:
+  application:
+    name: so-oof-adapter
   security:
     usercredentials:
       - username: ${BPEL_USERNAME}
index d1b795d..b205756 100755 (executable)
@@ -67,7 +67,7 @@ secrets:
 #################################################################
 # Application configuration defaults.
 #################################################################
-image: onap/so/so-oof-adapter:1.8.3
+image: onap/so/so-oof-adapter:1.10.1
 pullPolicy: Always
 
 # Local mariadb galera instance default name
index 1129cf2..4324d1b 100755 (executable)
@@ -17,7 +17,7 @@ apiVersion: v2
 appVersion: "1.0"
 description: A Helm chart for Kubernetes
 name: so-openstack-adapter
-version: 13.0.0
+version: 15.1.1
 
 dependencies:
   - name: common
index 287c953..caaff52 100755 (executable)
@@ -23,6 +23,8 @@ server:
   port: {{ index .Values.containerPort }}
 SW  port: {{ index .Values.containerPort }}
 spring:
+  application:
+    name: so-openstack-adapter
   datasource:
     hikari:
       jdbcUrl: jdbc:mariadb://${DB_HOST}:${DB_PORT}/catalogdb
@@ -57,6 +59,19 @@ spring:
       username: mso_admin
       password: '$2a$10$Fh9ffgPw2vnmsghsRD3ZauBL1aKXebigbq3BB1RPWtE62UDILsjke'
       role: ACTUATOR
+  sleuth:
+    enabled: {{ .Values.global.tracing.enabled }}
+    messaging:
+      jms:
+        enabled: false
+    trace-id128: true
+    sampler:
+      probability: {{ .Values.global.tracing.sampling.probability }}
+    supports-join: false
+    web:
+      skip-pattern: /actuator/health/*
+  zipkin:
+    base-url: {{ .Values.global.tracing.collector.baseUrl }}
 org:
   onap:
     so:
@@ -116,7 +131,9 @@ mso:
     requestDb:
       endpoint: http://so-request-db-adapter.{{ include "common.namespace" . }}:8083
       auth: {{ .Values.mso.db.auth }}
-  auth: {{ .Values.mso.auth }}
+  auth:
+    user: {{ .Values.mso.auth.user }}
+    password: {{ .Values.mso.auth.password }}
   logPath: ./logs/openstack
   msb-ip: msb-iag
   msb-port: 80
@@ -124,9 +141,6 @@ mso:
   workflow:
     endpoint: http://so-bpmn-infra.{{ include "common.namespace" . }}:8081/sobpmnengine
   msoKey: {{ .Values.mso.msoKey }}
-  config:
-    cadi:
-      aafId: {{ .Values.mso.basicUser }}
   catalog:
     db:
       spring:
index 15074b5..e211424 100755 (executable)
@@ -24,6 +24,13 @@ global:
     useOperator: true
     service: mariadb-galera
     servicePort: '3306'
+  tracing:
+    enabled: false
+    collector:
+      baseUrl: http://jaeger-collector.istio-config:9411
+    sampling:
+      probability: 1.0 # percentage of requests that are sampled (between 0-1/0%-100%)
+
 
 readinessCheck:
   wait_for:
@@ -54,7 +61,7 @@ secrets:
 #################################################################
 # Application configuration defaults.
 #################################################################
-image: onap/so/openstack-adapter:1.12.2
+image: onap/so/openstack-adapter:1.15.4
 pullPolicy: Always
 
 # Local mariadb galera instance default name
@@ -83,8 +90,9 @@ org:
         bpelauth: D1A67FA93B6A6419132D0F83CC771AF774FD3C60853C50C22C8C6FC5088CC79E9E81EDE9EA39F22B2F66A0068E
 mso:
   msoKey: 07a7159d3bf51a0e53be7a8f89699be7
-  basicUser: poBpmn
-  auth: BEA8637716A7EB617DF472BA6552D22F68C1CB17B0D094D77DDA562F4ADAAC4457CAB848E1A4
+  auth:
+    user: poBpmn
+    password: BEA8637716A7EB617DF472BA6552D22F68C1CB17B0D094D77DDA562F4ADAAC4457CAB848E1A4
   db:
     auth: Basic YnBlbDpwYXNzd29yZDEk
 
@@ -115,14 +123,14 @@ flavor: small
 resources:
   small:
     limits:
-      cpu: "1"
+      cpu: "2"
       memory: "1.5Gi"
     requests:
       cpu: "0.5"
       memory: "1.5Gi"
   large:
     limits:
-      cpu: "2"
+      cpu: "3"
       memory: "3Gi"
     requests:
       cpu: "1"
@@ -168,3 +176,9 @@ serviceAccount:
 log:
   path: /var/log/onap
 logConfigMapNamePrefix: '{{ include "common.fullname" . }}'
+
+podAnnotations:
+  # disable istio-based tracing
+  proxy.istio.io/config: |
+    tracing:
+      sampling: 0
index 32095c2..c7178fd 100755 (executable)
@@ -16,7 +16,7 @@
 apiVersion: v2
 description: A Helm chart for request-db-adapter
 name: so-request-db-adapter
-version: 13.0.0
+version: 15.1.1
 
 dependencies:
   - name: common
index 7ea7749..e6b2456 100755 (executable)
@@ -30,6 +30,8 @@ mso:
       auth: {{ .Values.mso.adapters.requestDb.auth }}
       endpoint: http://so-request-db-adapter.{{ include "common.namespace" . }}:8083
 spring:
+  application:
+    name: so-request-db-adapter
   datasource:
     hikari:
       jdbcUrl: jdbc:mariadb://${DB_HOST}:${DB_PORT}/requestdb
@@ -48,6 +50,19 @@ spring:
       username: mso_admin
       password: '$2a$10$Fh9ffgPw2vnmsghsRD3ZauBL1aKXebigbq3BB1RPWtE62UDILsjke'
       role: ACTUATOR
+  sleuth:
+    enabled: {{ .Values.global.tracing.enabled }}
+    messaging:
+      jms:
+        enabled: false
+    trace-id128: true
+    sampler:
+      probability: {{ .Values.global.tracing.sampling.probability }}
+    supports-join: false
+    web:
+      skip-pattern: /actuator/health/*
+  zipkin:
+    base-url: {{ .Values.global.tracing.collector.baseUrl }}
 #Actuator
 management:
   context-path: /manage
index 329d45e..93eef57 100755 (executable)
@@ -19,6 +19,7 @@ metadata: {{- include "common.resourceMetadata" . | nindent 2 }}
 spec:
   selector: {{- include "common.selectors" . | nindent 4 }}
   replicas: {{ index .Values.replicaCount }}
+  revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
   minReadySeconds: {{ index .Values.minReadySeconds }}
   strategy:
     type: {{ index .Values.updateStrategy.type }}
@@ -57,7 +58,8 @@ spec:
         - name: config
           mountPath: /app/config
           readOnly: true
-{{ include "so.helpers.livenessProbe" .| indent 8 }}
+        {{- include "so.helpers.startupProbe" .| indent 8 }}
+        {{- include "so.helpers.livenessProbe" .| indent 8 }}
         ports: {{- include "common.containerPorts" . | nindent 10  }}
       serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
       volumes:
index 9eecb24..9143bc7 100755 (executable)
@@ -24,6 +24,12 @@ global:
     useOperator: true
     service: mariadb-galera
     servicePort: '3306'
+  tracing:
+    enabled: false
+    collector:
+      baseUrl: http://jaeger-collector.istio-config:9411
+    sampling:
+      probability: 1.0 # percentage of requests that are sampled (between 0-1/0%-100%)
 
 readinessCheck:
   wait_for:
@@ -54,7 +60,7 @@ secrets:
 #################################################################
 # Application configuration defaults.
 #################################################################
-image: onap/so/request-db-adapter:1.12.2
+image: onap/so/request-db-adapter:1.15.4
 pullPolicy: Always
 
 # Local mariadb galera instance default name
@@ -80,6 +86,7 @@ mso:
       auth: Basic YnBlbDpwYXNzd29yZDEk
 
 replicaCount: 1
+revisionHistoryLimit: 1
 minReadySeconds: 10
 containerPort: &containerPort 8083
 logPath: ./logs/reqdb/
@@ -123,8 +130,7 @@ livenessProbe:
   path: /manage/health
   port: 8083
   scheme: HTTP
-  initialDelaySeconds: 600
-  periodSeconds: 60
+  periodSeconds: 20
   timeoutSeconds: 10
   successThreshold: 1
   failureThreshold: 3
@@ -150,3 +156,9 @@ serviceAccount:
   nameOverride: so-request-db-adapter
   roles:
     - read
+
+podAnnotations:
+  # disable istio-based tracing
+  proxy.istio.io/config: |
+    tracing:
+      sampling: 0
index fc5496c..bec23d0 100755 (executable)
@@ -17,7 +17,7 @@ apiVersion: v2
 appVersion: "1.0"
 description: A Helm chart for Kubernetes
 name: so-sdc-controller
-version: 13.0.0
+version: 15.1.1
 
 dependencies:
   - name: common
index 473b1c3..3d948d7 100755 (executable)
@@ -21,6 +21,8 @@ server:
   {{- end }}
   port: {{ index .Values.containerPort }}
 spring:
+  application:
+    name: so-sdc-controller
   datasource:
     hikari:
       jdbcUrl: jdbc:mariadb://${DB_HOST}:${DB_PORT}/catalogdb
@@ -39,6 +41,19 @@ spring:
       username: mso_admin
       password: '$2a$10$Fh9ffgPw2vnmsghsRD3ZauBL1aKXebigbq3BB1RPWtE62UDILsjke'
       role: ACTUATOR
+  sleuth:
+    enabled: {{ .Values.global.tracing.enabled }}
+    messaging:
+      jms:
+        enabled: false
+    trace-id128: true
+    sampler:
+      probability: {{ .Values.global.tracing.sampling.probability }}
+    supports-join: false
+    web:
+      skip-pattern: /actuator/health/*
+  zipkin:
+    base-url: {{ .Values.global.tracing.collector.baseUrl }}
 request:
   datasource:
     hikari:
index 1fe5b50..33af0a7 100755 (executable)
@@ -25,11 +25,20 @@ global:
     service: mariadb-galera
     servicePort: '3306'
   soSdcListenerKafkaUser: so-sdc-list-user
+  tracing:
+    enabled: false
+    collector:
+      baseUrl: http://jaeger-collector.istio-config:9411
+    sampling:
+      probability: 1.0 # percentage of requests that are sampled (between 0-1/0%-100%)
 
 readinessCheck:
   wait_for:
+    timeout: 30
     jobs:
       - '{{ include "common.release" . }}-so-mariadb-config-job'
+    services:
+      - sdc-be
 
 #################################################################
 # Secrets metaconfig
@@ -55,7 +64,7 @@ secrets:
 #################################################################
 # Application configuration defaults.
 #################################################################
-image: onap/so/sdc-controller:1.12.2
+image: onap/so/sdc-controller:1.15.4
 pullPolicy: Always
 
 # Local mariadb galera instance default name
@@ -117,14 +126,14 @@ flavor: small
 resources:
   small:
     limits:
-      cpu: "1"
+      cpu: "2"
       memory: "1.5Gi"
     requests:
-      cpu: "0.5"
+      cpu: "1"
       memory: "1.5Gi"
   large:
     limits:
-      cpu: "2"
+      cpu: "3"
       memory: "3Gi"
     requests:
       cpu: "1"
@@ -175,3 +184,9 @@ serviceAccount:
 log:
   path: /var/log/onap
 logConfigMapNamePrefix: '{{ include "common.fullname" . }}'
+
+podAnnotations:
+  # disable istio-based tracing
+  proxy.istio.io/config: |
+    tracing:
+      sampling: 0
index c43cad7..ce72fe4 100755 (executable)
@@ -17,7 +17,7 @@ apiVersion: v2
 appVersion: "1.0"
 description: A Helm chart for Kubernetes
 name: so-sdnc-adapter
-version: 13.0.0
+version: 15.1.1
 
 dependencies:
   - name: common
index 55dc115..6e1771f 100755 (executable)
@@ -20,15 +20,14 @@ server:
     port: {{ index .Values.containerPort }}
 mso:
     msoKey: ${MSO_KEY}
-    auth: ${MSO_AUTH}
+    auth:
+        user: so@so.onap.org
+        password: ${MSO_AUTH}
     async:
         core-pool-size: 50
         max-pool-size: 50
         queue-capacity: 500
     logPath: ./logs/sdnc
-    config:
-        cadi:
-          aafId: so@so.onap.org
     catalog:
         db:
           spring:
@@ -160,16 +159,16 @@ org:
                         bpelurl: http://so-bpmn-infra.{{ include "common.namespace" . }}:8081/mso/WorkflowMessage
                     sdncauth: {{ .Values.org.onap.so.adapters.sdnc.sdncauth }}
                     sdncconnecttime: 5000
-                    sdncurl10: 'http://{{ .Values.global.sdncOamService }}.{{ include "common.namespace" . }}:{{ .Values.global.sdncOamPort }}/restconf/operations/GENERIC-RESOURCE-API:'
-                    sdncurl11: 'http://{{ .Values.global.sdncOamService }}.{{ include "common.namespace" . }}:{{ .Values.global.sdncOamPort }}/restconf/operations/VNFTOPOLOGYAIC-API:'
+                    sdncurl10: 'http://{{ .Values.global.sdncOamService }}.{{ include "common.namespace" . }}:{{ .Values.global.sdncOamPort }}/rests/operations/GENERIC-RESOURCE-API:'
+                    sdncurl11: 'http://{{ .Values.global.sdncOamService }}.{{ include "common.namespace" . }}:{{ .Values.global.sdncOamPort }}/rests/operations/VNFTOPOLOGYAIC-API:'
                     sdncurl12: 'http://{{ .Values.global.sdncOamService }}.{{ include "common.namespace" . }}:{{ .Values.global.sdncOamPort }}/'
-                    sdncurl13: 'http://{{ .Values.global.sdncOamService }}.{{ include "common.namespace" . }}:{{ .Values.global.sdncOamPort }}/restconf/operations/opticalservice:'
-                    sdncurl5: 'http://{{ .Values.global.sdncOamService }}.{{ include "common.namespace" . }}:{{ .Values.global.sdncOamPort }}/restconf/config'
-                    sdncurl6: 'http://{{ .Values.global.sdncOamService }}.{{ include "common.namespace" . }}:{{ .Values.global.sdncOamPort }}/restconf/operations/VNF-API:'
-                    sdncurl7: 'http://{{ .Values.global.sdncOamService }}.{{ include "common.namespace" . }}:{{ .Values.global.sdncOamPort }}/restconf/operations/L3UCPE-API:'
-                    sdncurl8: 'http://{{ .Values.global.sdncOamService }}.{{ include "common.namespace" . }}:{{ .Values.global.sdncOamPort }}/restconf/operations/NBNC-API:'
-                    sdncurl9: 'http://{{ .Values.global.sdncOamService }}.{{ include "common.namespace" . }}:{{ .Values.global.sdncOamPort }}/restconf/operations/NORTHBOUND-API:service-topology-operation'
-                    sdncurl20: 'http://{{ .Values.global.sdncOamService }}.{{ include "common.namespace" . }}:{{ .Values.global.sdncOamPort }}/restconf/operations/LCM:'
+                    sdncurl13: 'http://{{ .Values.global.sdncOamService }}.{{ include "common.namespace" . }}:{{ .Values.global.sdncOamPort }}/rests/operations/opticalservice:'
+                    sdncurl5: 'http://{{ .Values.global.sdncOamService }}.{{ include "common.namespace" . }}:{{ .Values.global.sdncOamPort }}/rests/data'
+                    sdncurl6: 'http://{{ .Values.global.sdncOamService }}.{{ include "common.namespace" . }}:{{ .Values.global.sdncOamPort }}/rests/operations/VNF-API:'
+                    sdncurl7: 'http://{{ .Values.global.sdncOamService }}.{{ include "common.namespace" . }}:{{ .Values.global.sdncOamPort }}/rests/operations/L3UCPE-API:'
+                    sdncurl8: 'http://{{ .Values.global.sdncOamService }}.{{ include "common.namespace" . }}:{{ .Values.global.sdncOamPort }}/rests/operations/NBNC-API:'
+                    sdncurl9: 'http://{{ .Values.global.sdncOamService }}.{{ include "common.namespace" . }}:{{ .Values.global.sdncOamPort }}/rests/operations/NORTHBOUND-API:service-topology-operation'
+                    sdncurl20: 'http://{{ .Values.global.sdncOamService }}.{{ include "common.namespace" . }}:{{ .Values.global.sdncOamPort }}/rests/operations/LCM:'
                     service:
                         infra:
                             service-topology-infra-activate-operation: POST|90000|sdncurl9|sdnc-request-header|com:att:sdnctl:northbound-api:v1
@@ -188,6 +187,8 @@ org:
                 network:
                     encryptionKey: {{ index .Values.org.onap.so.adapters.sdnc.network.encryptionKey }}
 spring:
+  application:
+    name: so-sdnc-adapter
   security:
     usercredentials:
     -
@@ -214,3 +215,16 @@ spring:
       username: mso_admin
       password: '$2a$10$Fh9ffgPw2vnmsghsRD3ZauBL1aKXebigbq3BB1RPWtE62UDILsjke'
       role: ACTUATOR
+  sleuth:
+    enabled: {{ .Values.global.tracing.enabled }}
+    messaging:
+      jms:
+        enabled: false
+    trace-id128: true
+    sampler:
+      probability: {{ .Values.global.tracing.sampling.probability }}
+    supports-join: false
+    web:
+      skip-pattern: /actuator/health/*
+  zipkin:
+    base-url: {{ .Values.global.tracing.collector.baseUrl }}
index 61ec096..ea8dbf6 100755 (executable)
@@ -27,6 +27,12 @@ global:
     useOperator: true
     service: mariadb-galera
     servicePort: '3306'
+  tracing:
+    enabled: false
+    collector:
+      baseUrl: http://jaeger-collector.istio-config:9411
+    sampling:
+      probability: 1.0 # percentage of requests that are sampled (between 0-1/0%-100%)
 
 #################################################################
 # Secrets metaconfig
@@ -61,7 +67,7 @@ secrets:
 #################################################################
 # Application configuration defaults.
 #################################################################
-image: onap/so/sdnc-adapter:1.12.2
+image: onap/so/sdnc-adapter:1.15.4
 pullPolicy: Always
 
 org:
@@ -170,3 +176,9 @@ serviceAccount:
 log:
   path: /var/log/onap
 logConfigMapNamePrefix: '{{ include "common.fullname" . }}'
+
+podAnnotations:
+  # disable istio-based tracing
+  proxy.istio.io/config: |
+    tracing:
+      sampling: 0
index 36ce3fa..280e3e2 100755 (executable)
@@ -16,7 +16,7 @@
 apiVersion: v2
 description: A Helm chart for SO helpers
 name: soHelpers
-version: 13.0.0
+version: 13.0.1
 
 dependencies:
   - name: common
index e596b80..70ea57c 100644 (file)
@@ -7,7 +7,9 @@ livenessProbe:
     path: {{ $subchartDot.Values.livenessProbe.path }}
     port: {{ $subchartDot.Values.containerPort }}
     scheme: {{  $subchartDot.Values.livenessProbe.scheme }}
+{{- if $subchartDot.Values.livenessProbe.initialDelaySeconds }}
   initialDelaySeconds: {{ $subchartDot.Values.livenessProbe.initialDelaySeconds }}
+{{- end }}
   periodSeconds: {{ $subchartDot.Values.livenessProbe.periodSeconds }}
   timeoutSeconds: {{ $subchartDot.Values.livenessProbe.timeoutSeconds }}
   successThreshold: {{ $subchartDot.Values.livenessProbe.successThreshold }}
diff --git a/kubernetes/so/components/soHelpers/templates/_startupProbe.tpl b/kubernetes/so/components/soHelpers/templates/_startupProbe.tpl
new file mode 100644 (file)
index 0000000..3ea8916
--- /dev/null
@@ -0,0 +1,14 @@
+{{- define "so.helpers.startupProbe" -}}
+{{-   $dot := default . .dot -}}
+{{-   $initRoot := default $dot.Values.soHelpers .initRoot -}}
+{{- $subchartDot := fromJson (include "common.subChartDot" (dict "dot" $dot "initRoot" $initRoot)) }}
+startupProbe:
+  httpGet:
+    path: {{ $subchartDot.Values.startupProbe.path }}
+    port: {{ $subchartDot.Values.containerPort }}
+    scheme: {{  $subchartDot.Values.startupProbe.scheme }}
+  periodSeconds: {{ $subchartDot.Values.startupProbe.periodSeconds }}
+  timeoutSeconds: {{ $subchartDot.Values.startupProbe.timeoutSeconds }}
+  successThreshold: {{ $subchartDot.Values.startupProbe.successThreshold }}
+  failureThreshold: {{ $subchartDot.Values.startupProbe.failureThreshold }}
+{{- end -}}
index ec3fef2..60a71f4 100755 (executable)
@@ -24,10 +24,16 @@ global:
 # Application configuration defaults.
 #################################################################
 
+startupProbe:
+  path: /manage/health
+  scheme: HTTP
+  periodSeconds: 5
+  timeoutSeconds: 5
+  successThreshold: 1
+  failureThreshold: 120
 livenessProbe:
   path: /manage/health
   scheme: HTTP
-  initialDelaySeconds: 600
   periodSeconds: 60
   timeoutSeconds: 10
   successThreshold: 1
index 119a313..9a8284c 100755 (executable)
     {
       "sdncurls":
       [
-        "http://{{.Values.config.sdnc.serviceName}}:{{.Values.config.sdnc.port}}/restconf/operations/L3SDN-API:",
-        "http://{{.Values.config.sdnc.serviceName}}:{{.Values.config.sdnc.port}}/restconf/config/L3SDN-API:",
-        "http://{{.Values.config.sdnc.serviceName}}:{{.Values.config.sdnc.port}}/restconf/operations/Firewall-API:",
-        "http://{{.Values.config.sdnc.serviceName}}:{{.Values.config.sdnc.port}}/restconf/config",
-        "http://{{.Values.config.sdnc.serviceName}}:{{.Values.config.sdnc.port}}/restconf/operations/VNF-API:",
-        "http://{{.Values.config.sdnc.serviceName}}:{{.Values.config.sdnc.port}}/restconf/operations/NBNC-API:",
-        "http://{{.Values.config.sdnc.serviceName}}:{{.Values.config.sdnc.port}}/restconf/operations/NORTHBOUND-API:service-topology-operation",
-        "http://{{.Values.config.sdnc.serviceName}}:{{.Values.config.sdnc.port}}/restconf/operations/GENERIC-RESOURCE-API:",
-        "http://{{.Values.config.sdnc.serviceName}}:{{.Values.config.sdnc.port}}/restconf/operations/VNFTOPOLOGYAIC-API:",
+        "http://{{.Values.config.sdnc.serviceName}}:{{.Values.config.sdnc.port}}/rests/operations/L3SDN-API:",
+        "http://{{.Values.config.sdnc.serviceName}}:{{.Values.config.sdnc.port}}/rests/data/L3SDN-API:",
+        "http://{{.Values.config.sdnc.serviceName}}:{{.Values.config.sdnc.port}}/rests/operations/Firewall-API:",
+        "http://{{.Values.config.sdnc.serviceName}}:{{.Values.config.sdnc.port}}/rests/data",
+        "http://{{.Values.config.sdnc.serviceName}}:{{.Values.config.sdnc.port}}/rests/operations/VNF-API:",
+        "http://{{.Values.config.sdnc.serviceName}}:{{.Values.config.sdnc.port}}/rests/operations/NBNC-API:",
+        "http://{{.Values.config.sdnc.serviceName}}:{{.Values.config.sdnc.port}}/rests/operations/NORTHBOUND-API:service-topology-operation",
+        "http://{{.Values.config.sdnc.serviceName}}:{{.Values.config.sdnc.port}}/rests/operations/GENERIC-RESOURCE-API:",
+        "http://{{.Values.config.sdnc.serviceName}}:{{.Values.config.sdnc.port}}/rests/operations/VNFTOPOLOGYAIC-API:",
         "http://{{.Values.config.sdnc.serviceName}}:{{.Values.config.sdnc.port}}/"
       ],
 
index 47fc6d3..7e144f9 100755 (executable)
@@ -72,6 +72,8 @@ mso:
       - subsystem: catalogdb
         uri: http://so-catalog-db-adapter:8082
 spring:
+  application:
+    name: so-api-handler-infra
   datasource:
     hikari:
       jdbcUrl: jdbc:mariadb://${DB_HOST}:${DB_PORT}/catalogdb
index 0d53ea3..ea702f9 100755 (executable)
@@ -47,11 +47,16 @@ global:
     dbUser: root
     dbPassword: secretpassword
     # dbCredsExternalSecret: some secret
-  msbEnabled: true
   app:
     siteName: onapheat
     auth: 3EDC974C5CD7FE54C47C7490AF4D3B474CDD7D0FFA35A7ACDE3E209631E45F428976EAC0858874F17390A13149E63C90281DD8D20456
     defaultCloudOwner: onap
+  tracing:
+    enabled: false
+    collector:
+      baseUrl: http://jaeger-collector.istio-config:9411
+    sampling:
+      probability: 1.0 # percentage of requests that are sampled (between 0-1/0%-100%)
 
 readinessCheck:
   wait_for:
@@ -154,7 +159,7 @@ dbCreds:
   userName: so_user
   adminName: so_admin
 
-image: onap/so/api-handler-infra:1.12.2
+image: onap/so/api-handler-infra:1.15.4
 
 server:
   aai:
@@ -183,370 +188,6 @@ service:
     - name: http
       port: *containerPort
       nodePort: '77'
-  annotations:
-    msb.onap.org/service-info: |
-      {{ if .Values.global.msbEnabled -}}[
-        {
-          "serviceName": "so",
-          "version": "v1",
-          "url": "/onap/so/infra/cloudResources/{version:[vV][1]}/operationalEnvironments",
-          "protocol": "REST",
-          "port": "{{ .Values.service.internalPort }}",
-          "visualRange":"0",
-          "lb_policy":"ip_hash"
-        },
-        {
-          "serviceName": "so",
-          "version": "v1",
-          "url": "/onap/so/infra/cloudResources/{version:[vV][1]}/operationalEnvironments/{operationalEnvironmentId}/activate",
-          "protocol": "REST",
-          "port": "{{ .Values.service.internalPort }}",
-          "visualRange":"0",
-          "lb_policy":"ip_hash"
-        },
-        {
-          "serviceName": "so",
-          "version": "v1",
-          "url": "/onap/so/infra/cloudResources/{version:[vV][1]}/operationalEnvironments/{operationalEnvironmentId}/deactivate",
-          "protocol": "REST",
-          "port": "{{ .Values.service.internalPort }}",
-          "visualRange":"0",
-          "lb_policy":"ip_hash"
-        },
-        {
-          "serviceName": "so",
-          "version": "v1",
-          "url": "/onap/so/infra/cloudResourcesRequests/{version:[vV][1]}/{requestId}/unlock",
-          "protocol": "REST",
-          "port": "{{ .Values.service.internalPort }}",
-          "visualRange":"0",
-          "lb_policy":"ip_hash"
-        },
-        {
-          "serviceName": "so",
-          "version": "v1",
-          "url": "/onap/so/infra/cloudResourcesRequests/{version:[vV][1]}",
-          "protocol": "REST",
-          "port": "{{ .Values.service.internalPort }}",
-          "visualRange":"0",
-          "lb_policy":"ip_hash"
-        },
-        {
-          "serviceName": "so",
-          "version": "v1",
-          "url": "/onap/so/infra/orchestrationRequests/{version:[vV][4-7]}/{requestId}",
-          "protocol": "REST",
-          "port": "{{ .Values.service.internalPort }}",
-          "visualRange":"0",
-          "lb_policy":"ip_hash"
-        },
-        {
-          "serviceName": "so",
-          "version": "v1",
-          "url": "/onap/so/infra/orchestrationRequests/{version:[vV][4-7]}",
-          "protocol": "REST",
-          "port": "{{ .Values.service.internalPort }}",
-          "visualRange":"0",
-          "lb_policy":"ip_hash"
-        },
-        {
-          "serviceName": "so",
-          "version": "v1",
-          "url": "/onap/so/infra/orchestrationRequests/{version:[vV][4-7]}/{requestId}/unlock",
-          "protocol": "REST",
-          "port": "{{ .Values.service.internalPort }}",
-          "visualRange":"0",
-          "lb_policy":"ip_hash"
-        },
-        {
-          "serviceName": "so",
-          "version": "v1",
-          "url": "/onap/so/infra/serviceInstantiation/{version:[vV][5-7]}/serviceInstances",
-          "protocol": "REST",
-          "port": "{{ .Values.service.internalPort }}",
-          "visualRange":"0",
-          "lb_policy":"ip_hash"
-        },
-        {
-          "serviceName": "so",
-          "version": "v1",
-          "url": "/onap/so/infra/serviceInstantiation/{version:[vV][5-7]}/serviceInstances/{serviceInstanceId}/activate",
-          "protocol": "REST",
-          "port": "{{ .Values.service.internalPort }}",
-          "visualRange":"0",
-          "lb_policy":"ip_hash"
-        },
-        {
-          "serviceName": "so",
-          "version": "v1",
-          "url": "/onap/so/infra/serviceInstantiation/{version:[vV][5-7]}/serviceInstances/{serviceInstanceId}/deactivate",
-          "protocol": "REST",
-          "port": "{{ .Values.service.internalPort }}",
-          "visualRange":"0",
-          "lb_policy":"ip_hash"
-        },
-        {
-          "serviceName": "so",
-          "version": "v1",
-          "url": "/onap/so/infra/serviceInstantiationRequests/{version:[vV][5-7]}/serviceInstances/{serviceInstanceId}",
-          "protocol": "REST",
-          "port": "{{ .Values.service.internalPort }}",
-          "visualRange":"0",
-          "lb_policy":"ip_hash"
-        },
-        {
-          "serviceName": "so",
-          "version": "v1",
-          "url": "/onap/so/infra/serviceInstantiationRequests/{version:[vV][7]}/serviceInstances/assign",
-          "protocol": "REST",
-          "port": "{{ .Values.service.internalPort }}",
-          "visualRange":"0",
-          "lb_policy":"ip_hash"
-        },
-        {
-          "serviceName": "so",
-          "version": "v1",
-          "url": "/onap/so/infra/serviceInstantiation/{version:[vV][7]}/serviceInstances/{serviceInstanceId}/unassign",
-          "protocol": "REST",
-          "port": "{{ .Values.service.internalPort }}",
-          "visualRange":"0",
-          "lb_policy":"ip_hash"
-        },
-        {
-          "serviceName": "so",
-          "version": "v1",
-          "url": "/onap/so/infra/serviceInstantiation/{version:[vV][5-7]}/serviceInstances/{serviceInstanceId}/configurations",
-          "protocol": "REST",
-          "port": "{{ .Values.service.internalPort }}",
-          "visualRange":"0",
-          "lb_policy":"ip_hash"
-        },
-        {
-          "serviceName": "so",
-          "version": "v1",
-          "url": "/onap/so/infra/serviceInstantiation/{version:[vV][5-7]}/serviceInstances/{serviceInstanceId}/configurations/{configurationInstanceId}",
-          "protocol": "REST",
-          "port": "{{ .Values.service.internalPort }}",
-          "visualRange":"0",
-          "lb_policy":"ip_hash"
-        },
-        {
-          "serviceName": "so",
-          "version": "v1",
-          "url": "/onap/so/infra/serviceInstantiation/{version:[vV][5-7]}/serviceInstances/{serviceInstanceId}/configurations/{configurationInstanceId}/enablePort",
-          "protocol": "REST",
-          "port": "{{ .Values.service.internalPort }}",
-          "visualRange":"0",
-          "lb_policy":"ip_hash"
-        },
-        {
-          "serviceName": "so",
-          "version": "v1",
-          "url": "/onap/so/infra/serviceInstantiation/{version:[vV][5-7]}/serviceInstances/{serviceInstanceId}/configurations/{configurationInstanceId}/disablePort",
-          "protocol": "REST",
-          "port": "{{ .Values.service.internalPort }}",
-          "visualRange":"0",
-          "lb_policy":"ip_hash"
-        },
-        {
-          "serviceName": "so",
-          "version": "v1",
-          "url": "/onap/so/infra/serviceInstantiation/{version:[vV][5-7]}/serviceInstances/{serviceInstanceId}/configurations/{configurationInstanceId}/activate",
-          "protocol": "REST",
-          "port": "{{ .Values.service.internalPort }}",
-          "visualRange":"0",
-          "lb_policy":"ip_hash"
-        },
-        {
-          "serviceName": "so",
-          "version": "v1",
-          "url": "/onap/so/infra/serviceInstantiationRequests/{version:[vV][5-7]}/serviceInstances/{serviceInstanceId}/configurations/{configurationInstanceId}/deactivate",
-          "protocol": "REST",
-          "port": "{{ .Values.service.internalPort }}",
-          "visualRange":"0",
-          "lb_policy":"ip_hash"
-        },
-        {
-          "serviceName": "so",
-          "version": "v1",
-          "url": "/onap/so/infra/serviceInstantiationRequests/{version:[vV][6-7]}/serviceInstances/{serviceInstanceId}/addRelationships",
-          "protocol": "REST",
-          "port": "{{ .Values.service.internalPort }}",
-          "visualRange":"0",
-          "lb_policy":"ip_hash"
-        },
-        {
-          "serviceName": "so",
-          "version": "v1",
-          "url": "/onap/so/infra/serviceInstantiation/{version:[vV][6-7]}/serviceInstances/{serviceInstanceId}/removeRelationships",
-          "protocol": "REST",
-          "port": "{{ .Values.service.internalPort }}",
-          "visualRange":"0",
-          "lb_policy":"ip_hash"
-        },
-        {
-          "serviceName": "so",
-          "version": "v1",
-          "url": "/onap/so/infra/serviceInstantiation/{version:[vV][5-7]}/serviceInstances/{serviceInstanceId}/vnfs",
-          "protocol": "REST",
-          "port": "{{ .Values.service.internalPort }}",
-          "visualRange":"0",
-          "lb_policy":"ip_hash"
-        },
-        {
-          "serviceName": "so",
-          "version": "v1",
-          "url": "/onap/so/infra/serviceInstantiation/{version:[vV][5-7]}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/replace",
-          "protocol": "REST",
-          "port": "{{ .Values.service.internalPort }}",
-          "visualRange":"0",
-          "lb_policy":"ip_hash"
-        },
-        {
-          "serviceName": "so",
-          "version": "v1",
-          "url": "/onap/so/infra/serviceInstantiation/{version:[vV][5-7]}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}",
-          "protocol": "REST",
-          "port": "{{ .Values.service.internalPort }}",
-          "visualRange":"0",
-          "lb_policy":"ip_hash"
-        },
-        {
-          "serviceName": "so",
-          "version": "v1",
-          "url": "/onap/so/infra/serviceInstantiation/{version:[vV][6-7]}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/applyUpdatedConfig",
-          "protocol": "REST",
-          "port": "{{ .Values.service.internalPort }}",
-          "visualRange":"0",
-          "lb_policy":"ip_hash"
-        },
-        {
-          "serviceName": "so",
-          "version": "v1",
-          "url": "/onap/so/infra/serviceInstantiation/{version:[vV][5-7]}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}",
-          "protocol": "REST",
-          "port": "{{ .Values.service.internalPort }}",
-          "visualRange":"0",
-          "lb_policy":"ip_hash"
-        },
-        {
-          "serviceName": "so",
-          "version": "v1",
-          "url": "/onap/so/infra/serviceInstantiationRequests/{version:[vV][5-7]}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/vfModules",
-          "protocol": "REST",
-          "port": "{{ .Values.service.internalPort }}",
-          "visualRange":"0",
-          "lb_policy":"ip_hash"
-        },
-        {
-          "serviceName": "so",
-          "version": "v1",
-          "url": "/onap/so/infra/serviceInstantiationRequests/{version:[vV][5-7]}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/vfModules/{vfmoduleInstanceId}/replace",
-          "protocol": "REST",
-          "port": "{{ .Values.service.internalPort }}",
-          "visualRange":"0",
-          "lb_policy":"ip_hash"
-        },
-        {
-          "serviceName": "so",
-          "version": "v1",
-          "url": "/onap/so/infra/serviceInstantiationRequests/{version:[vV][5-7]}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/vfModules/{vfmoduleInstanceId}",
-          "protocol": "REST",
-          "port": "{{ .Values.service.internalPort }}",
-          "visualRange":"0",
-          "lb_policy":"ip_hash"
-        },
-        {
-          "serviceName": "so",
-          "version": "v1",
-          "url": "/onap/so/infra/serviceInstantiationRequests/{version:[vV][6-7]}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/inPlaceSoftwareUpdate",
-          "protocol": "REST",
-          "port": "{{ .Values.service.internalPort }}",
-          "visualRange":"0",
-          "lb_policy":"ip_hash"
-        },
-        {
-          "serviceName": "so",
-          "version": "v1",
-          "url": "/onap/so/infra/serviceInstantiationRequests/{version:[vV][5-7]}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/vfModules/{vfmoduleInstanceId}",
-          "protocol": "REST",
-          "port": "{{ .Values.service.internalPort }}",
-          "visualRange":"0",
-          "lb_policy":"ip_hash"
-        },
-        {
-          "serviceName": "so",
-          "version": "v1",
-          "url": "/onap/so/infra/serviceInstantiation/{version:[vV][7]}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/vfModules/{vfmoduleInstanceId}/deactivateAndCloudDelete",
-          "protocol": "REST",
-          "port": "{{ .Values.service.internalPort }}",
-          "visualRange":"0",
-          "lb_policy":"ip_hash"
-        },
-        {
-          "serviceName": "so",
-          "version": "v1",
-          "url": "/onap/so/infra/serviceInstantiation/{version:[vV][7]}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/vfModules/scaleOut",
-          "protocol": "REST",
-          "port": "{{ .Values.service.internalPort }}",
-          "visualRange":"0",
-          "lb_policy":"ip_hash"
-        },
-        {
-          "serviceName": "so",
-          "version": "v1",
-          "url": "/onap/so/infra/serviceInstantiation/{version:[vV][5-7]}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/volumeGroups",
-          "protocol": "REST",
-          "port": "{{ .Values.service.internalPort }}",
-          "visualRange":"0",
-          "lb_policy":"ip_hash"
-        },
-        {
-          "serviceName": "so",
-          "version": "v1",
-          "url": "/onap/so/infra/serviceInstantiationRequests/{version:[vV][5-7]}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/volumeGroups/{volumeGroupInstanceId}",
-          "protocol": "REST",
-          "port": "{{ .Values.service.internalPort }}",
-          "visualRange":"0",
-          "lb_policy":"ip_hash"
-        },
-        {
-          "serviceName": "so",
-          "version": "v1",
-          "url": "/onap/so/infra/serviceInstantiationRequests/{version:[vV][5-7]}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/volumeGroups/{volumeGroupInstanceId}",
-          "protocol": "REST",
-          "port": "{{ .Values.service.internalPort }}",
-          "visualRange":"0",
-          "lb_policy":"ip_hash"
-        },
-        {
-          "serviceName": "so",
-          "version": "v1",
-          "url": "/onap/so/infra/serviceInstantiation/{version:[vV][5-7]}/serviceInstances/{serviceInstanceId}/networks",
-          "protocol": "REST",
-          "port": "{{ .Values.service.internalPort }}",
-          "visualRange":"0",
-          "lb_policy":"ip_hash"
-        },
-        {
-          "serviceName": "so",
-          "version": "v1",
-          "url": "/onap/so/infra/serviceInstantiationRequests/{version:[vV][5-7]}/serviceInstances/{serviceInstanceId}/networks/{networkInstanceId}",
-          "protocol": "REST",
-          "port": "{{ .Values.service.internalPort }}",
-          "visualRange":"0",
-          "lb_policy":"ip_hash"
-        },
-        {
-          "serviceName": "so",
-          "version": "v1",
-          "url": "/onap/so/infra/serviceInstantiationRequests/{version:[vV][5-7]}/serviceInstances/{serviceInstanceId}/networks/{networkInstanceId}",
-          "protocol": "REST",
-          "port": "{{ .Values.service.internalPort }}",
-          "visualRange":"0",
-          "lb_policy":"ip_hash"
-        }
-      ]{{ end }}
 
 updateStrategy:
   type: RollingUpdate
@@ -565,7 +206,7 @@ flavor: small
 resources:
   small:
     limits:
-      cpu: "1"
+      cpu: "1500m"
       memory: "4Gi"
     requests:
       cpu: "0.5"
@@ -794,3 +435,9 @@ serviceAccount:
 #Log configuration
 log:
   path: /var/log/onap
+
+podAnnotations:
+  # disable istio-based tracing
+  proxy.istio.io/config: |
+    tracing:
+      sampling: 0
index 0f976e9..218ebb1 100644 (file)
@@ -20,3 +20,5 @@
 .idea/
 *.tmproj
 Chart.lock
+# OOM specific dirs
+components/
index 1b927d6..f0fb478 100644 (file)
@@ -1,4 +1,5 @@
 # Copyright © 2022 Nordix Foundation
+# Modifications Copyright © 2025 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -15,7 +16,7 @@
 apiVersion: v2
 description: ONAP Strimzi Kafka
 name: strimzi
-version: 13.0.1
+version: 16.0.0
 
 dependencies:
   - name: common
@@ -31,4 +32,3 @@ dependencies:
     version: ~13.x-0
     repository: 'file://components/strimzi-kafka-bridge'
     condition: strimzi-kafka-bridge.enabled
-
index e254d99..63c4a2c 100644 (file)
@@ -15,7 +15,7 @@
 apiVersion: v2
 description: ONAP Strimzi Kafka Bridge
 name: strimzi-kafka-bridge
-version: 13.0.0
+version: 13.0.3
 
 dependencies:
   - name: common
index 25fbf3d..83c8045 100644 (file)
@@ -18,7 +18,7 @@ apiVersion: v1
 kind: ConfigMap
 metadata:
   name: {{ include "common.fullname" . }}-kb-logging-cm
+  labels: {{- include "common.labels" . | nindent 4 }}
   namespace: {{ include "common.namespace" . }}
 data:
 {{ tpl (.Files.Glob "resources/config/log4j2.properties").AsConfig . | indent 2 }}
-
index b081e29..6f00574 100644 (file)
@@ -24,7 +24,7 @@ spec:
     username: {{ .Values.config.strimziKafkaAdminUser }}
     passwordSecret:
       secretName: {{ .Values.config.strimziKafkaAdminUser }}
-      password: password
+      password: {{ .Values.config.strimziKafkaAdminPassword }}
   enableMetrics: {{ .Values.config.enableMetrics }}
   http:
     port: {{ .Values.config.port }}
@@ -34,6 +34,18 @@ spec:
       configMapKeyRef:
         key: log4j2.properties
         name: {{ include "common.fullname" . }}-kb-logging-cm
+  resources:
+    requests:
+      cpu: {{ .Values.resources.requests.cpu }}
+      memory: {{ .Values.resources.requests.memory }}
+    limits:
+      cpu: {{ .Values.resources.limits.cpu }}
+      memory: {{ .Values.resources.limits.memory }}
   template:
     pod:
       {{- include "common.imagePullSecrets" . | nindent 6 }}
+      securityContext:
+        {{- toYaml .Values.pod.securityContext | nindent 8 }}
+    bridgeContainer:
+      securityContext:
+        {{- toYaml .Values.bridgeContainer.securityContext | nindent 8 }}
index 8a4c4cd..f349558 100644 (file)
@@ -29,7 +29,32 @@ config:
   saslMechanism: parentValue
   kafkaInternalPort: parentValue
   strimziKafkaAdminUser: parentValue
+  strimziKafkaAdminPassword: password
 
 # nameOverride is required to avoid duplication
 # in pod and service names ie ...-bridge-bridge-{random hex}
 nameOverride: strimzi-kafka
+
+resources:
+  limits:
+    cpu: '2'
+    memory: 2Gi
+  requests:
+    cpu: 100m
+    memory: 1Gi
+
+pod:
+  securityContext:
+    seccompProfile:
+      type: RuntimeDefault
+bridgeContainer:
+  securityContext:
+    allowPrivilegeEscalation: false
+    readOnlyRootFilesystem: true
+    runAsGroup: 1001
+    runAsNonRoot: true
+    runAsUser: 1001
+    capabilities:
+      drop:
+        - ALL
+        - CAP_NET_RAW
index 12c742e..1e59dc6 100644 (file)
@@ -17,4 +17,4 @@ lowercaseOutputName: true
 rules:
   - pattern: kafka.cruisecontrol<name=(.+)><>(\w+)
     name: kafka_cruisecontrol_$1_$2
-    type: GAUGE
\ No newline at end of file
+    type: GAUGE
index 7ad971f..8db35a9 100644 (file)
@@ -134,4 +134,4 @@ rules:
     name: kafka_$1_$2_$3
     type: GAUGE
     labels:
-      quantile: "0.$4"
\ No newline at end of file
+      quantile: "0.$4"
index 6a1eab7..d5bf27f 100644 (file)
@@ -41,4 +41,4 @@ rules:
     type: GAUGE
     labels:
       replicaId: "$2"
-      memberType: "$3"
\ No newline at end of file
+      memberType: "$3"
index 6d5f143..f7e6ad0 100644 (file)
@@ -1,5 +1,5 @@
 {{/*
-# Copyright (c) 2023 Deutsche Telekom
+# Copyright (c) 2023-2025 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -18,7 +18,7 @@ apiVersion: kafka.strimzi.io/v1beta2
 kind: KafkaRebalance
 metadata:
   name: {{ include "common.fullname" . }}-kafka-rebalance
-  labels:
+  labels: {{- include "common.labels" . | nindent 4 }}
     strimzi.io/cluster: {{ include "common.release" . }}-strimzi
 spec: {}
 {{- end }}
index be288a4..329784f 100644 (file)
@@ -1,5 +1,5 @@
 {{/*
-# Copyright (c) 2023 Deutsche Telekom
+# Copyright (c) 2023-2025 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -23,7 +23,14 @@ metadata:
     ##
     # labels:
     #   prometheus: kube-prometheus
-  labels: {{- toYaml $.Values.metrics.podMonitor.labels | nindent 4 }}
+  labels:
+    app: '{{- default $.Chart.Name $.Values.nameOverride | trunc 63 | trimSuffix "-" -}}'
+    {{- if $.Chart.AppVersion }}
+    version: '{{ $.Chart.AppVersion | replace "+" "_" }}'
+    {{- else }}
+    version: '{{ $.Chart.Version | replace "+" "_" }}'
+    {{- end }}
+    {{- toYaml $.Values.metrics.podMonitor.labels | nindent 4 }}
 spec:
   selector:
     matchLabels:
similarity index 77%
rename from kubernetes/strimzi/templates/pv-zk.yaml
rename to kubernetes/strimzi/templates/pv-controller.yaml
index 2c5a8e3..9a1c849 100644 (file)
@@ -1,5 +1,6 @@
 {{/*
 # Copyright © 2022 Nordix Foundation
+# Modifications Copyright © 2025 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -13,4 +14,4 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 */}}
-{{ include "common.replicaPV" (dict "dot" . "suffix" "zk" "persistenceInfos" .Values.persistence.zookeeper) }}
+{{ include "common.replicaPV" (dict "dot" . "suffix" "controller" "persistenceInfos" .Values.persistence.controller) }}
index efd4902..5f22f79 100644 (file)
@@ -1,5 +1,6 @@
 {{/*
 # Copyright © 2022 Nordix Foundation
+# Modifications Copyright © 2025 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -13,4 +14,4 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 */}}
-{{ include "common.replicaPV" (dict "dot" . "suffix" "kafka" "persistenceInfos" .Values.persistence.kafka) }}
+{{ include "common.replicaPV" (dict "dot" . "suffix" "kafka" "persistenceInfos" .Values.persistence.broker) }}
index 4532777..7a3e7ef 100644 (file)
@@ -17,7 +17,7 @@ apiVersion: kafka.strimzi.io/v1beta2
 kind: KafkaUser
 metadata:
   name: {{ .Values.config.strimziKafkaAdminUser }}
-  labels:
+  labels: {{- include "common.labels" . | nindent 4 }}
     strimzi.io/cluster: {{ include "common.release" . }}-strimzi
 spec:
   authentication:
index aee4696..630d6c8 100644 (file)
@@ -1,5 +1,6 @@
 {{/*
 # Copyright © 2022 Nordix Foundation
+# Modifications Copyright © 2025 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # limitations under the License.
 */}}
 apiVersion: kafka.strimzi.io/v1beta2
+kind: KafkaNodePool
+metadata:
+  name: {{ include "common.fullname" . }}-controller
+  labels:
+    strimzi.io/cluster: {{ include "common.fullname" . }}
+spec:
+  replicas: {{ .Values.replicaCount }}
+  roles:
+    - controller
+  resources:
+    limits:
+      cpu: {{ .Values.controller.resources.limits.cpu }}
+      memory: {{ .Values.controller.resources.limits.memory }}
+    requests:
+      cpu: {{ .Values.controller.resources.requests.cpu }}
+      memory: {{ .Values.controller.resources.requests.memory }}
+  template:
+    pod:
+      {{- include "common.imagePullSecrets" . | nindent 6 }}
+      securityContext:
+        {{- toYaml .Values.controller.template.pod.securityContext | nindent 8 }}
+      {{- if .Values.affinity.podAntiAffinity.enabled }}
+      affinity:
+        podAntiAffinity:
+          requiredDuringSchedulingIgnoredDuringExecution:
+            - labelSelector:
+                matchExpressions:
+                  - key: strimzi.io/name
+                    operator: In
+                    values:
+                      - {{ include "common.fullname" . }}-controller
+              topologyKey: "kubernetes.io/hostname"
+      {{- end }}
+    kafkaContainer:
+      securityContext:
+        {{- toYaml .Values.controller.template.kafkaContainer.securityContext | nindent 10 }}
+  storage:
+    type: jbod
+    volumes:
+    - id: 0
+      type: persistent-claim
+      size: {{ .Values.persistence.controller.size }}
+      kraftMetadata: shared
+      deleteClaim: true
+      class: {{ include "common.storageClass" (dict "dot" . "suffix" "controller" "persistenceInfos" .Values.persistence.controller) }}
+---
+apiVersion: kafka.strimzi.io/v1beta2
+kind: KafkaNodePool
+metadata:
+  name: {{ include "common.fullname" . }}-broker
+  labels:
+    strimzi.io/cluster: {{ include "common.fullname" . }}
+spec:
+  replicas: {{ .Values.replicaCount }}
+  roles:
+    - broker
+  resources:
+    limits:
+      cpu: {{ .Values.broker.resources.limits.cpu }}
+      memory: {{ .Values.broker.resources.limits.memory }}
+    requests:
+      cpu: {{ .Values.broker.resources.requests.cpu }}
+      memory: {{ .Values.broker.resources.requests.memory }}
+  template:
+    pod:
+      {{- include "common.imagePullSecrets" . | nindent 6 }}
+      securityContext:
+        {{- toYaml .Values.broker.template.pod.securityContext | nindent 8 }}
+      {{- if .Values.affinity.podAntiAffinity.enabled }}
+      affinity:
+        podAntiAffinity:
+          requiredDuringSchedulingIgnoredDuringExecution:
+            - labelSelector:
+                matchExpressions:
+                  - key: strimzi.io/name
+                    operator: In
+                    values:
+                      - {{ include "common.fullname" . }}-broker
+              topologyKey: "kubernetes.io/hostname"
+      {{- end }}
+    kafkaContainer:
+      securityContext:
+        {{- toYaml .Values.broker.template.kafkaContainer.securityContext | nindent 8 }}
+  storage:
+    type: jbod
+    volumes:
+    - id: 0
+      type: persistent-claim
+      size: {{ .Values.persistence.broker.size }}
+      kraftMetadata: shared
+      deleteClaim: true
+      class: {{ include "common.storageClass" (dict "dot" . "suffix" "kafka" "persistenceInfos" .Values.persistence.broker) }}
+---
+apiVersion: kafka.strimzi.io/v1beta2
 kind: Kafka
-metadata: {{- include "common.resourceMetadata" . | nindent 2 }}
+metadata:
+  name: {{ include "common.fullname" . }}
+  annotations:
+    strimzi.io/node-pools: enabled
+    strimzi.io/kraft: enabled
 spec:
   kafka:
     version: {{ .Values.config.kafkaVersion }}
-    replicas: {{ .Values.replicaCount }}
+    {{- if .Values.config.kafkaMetadataVersion }}
+    metadataVersion: {{ .Values.config.kafkaMetadataVersion }}
+    {{- end }}
     listeners:
       - name: plain
         port: {{ .Values.config.kafkaInternalPort }}
@@ -67,24 +168,6 @@ spec:
       type: {{ .Values.config.authType }}
       superUsers:
         - {{ .Values.config.strimziKafkaAdminUser }}
-    template:
-      pod:
-        {{- include "common.imagePullSecrets" . | nindent 8 }}
-        securityContext:
-          runAsUser: 0
-          fsGroup: 0
-        {{- if .Values.affinity.podAntiAffinity.enabled }}
-        affinity:
-          podAntiAffinity:
-            requiredDuringSchedulingIgnoredDuringExecution:
-              - labelSelector:
-                  matchExpressions:
-                    - key: strimzi.io/name
-                      operator: In
-                      values:
-                        - {{ include "common.fullname" . }}-kafka
-                topologyKey: "kubernetes.io/hostname"
-        {{- end }}
     config:
       default.replication.factor: {{ .Values.replicaCount }}
       min.insync.replicas: {{ (eq 1.0 (.Values.replicaCount)) | ternary 1 (sub .Values.replicaCount 1) }}
@@ -95,14 +178,6 @@ spec:
       log.message.format.version: {{ .Values.config.kafkaVersion }}
       inter.broker.protocol.version: {{ .Values.config.kafkaVersion }}
       auto.create.topics.enable: {{ .Values.config.autoCreateTopics }}
-    storage:
-      type: jbod
-      volumes:
-      - id: 0
-        type: persistent-claim
-        size: {{ .Values.persistence.kafka.size }}
-        deleteClaim: true
-        class: {{ include "common.storageClass" (dict "dot" . "suffix" "kafka" "persistenceInfos" .Values.persistence.kafka) }}
     {{- if .Values.metrics.kafkaExporter.enabled }}
     metricsConfig:
       type: {{ .Values.metrics.kafkaExporter.metricsConfig.type }}
@@ -111,68 +186,68 @@ spec:
           name: {{ include "common.fullname" . }}
           key: kafka-metrics-config.yml
     {{- end }}
-  zookeeper:
-    template:
-      pod:
-        {{- include "common.imagePullSecrets" . | nindent 8 }}
-        securityContext:
-          runAsUser: 0
-          fsGroup: 0
-        {{- if .Values.affinity.podAntiAffinity.enabled }}
-        affinity:
-          podAntiAffinity:
-            requiredDuringSchedulingIgnoredDuringExecution:
-              - labelSelector:
-                  matchExpressions:
-                    - key: strimzi.io/name
-                      operator: In
-                      values:
-                        - {{ include "common.fullname" . }}-zookeeper
-                topologyKey: "kubernetes.io/hostname"
-        {{- end }}
-    replicas: {{ .Values.replicaCount }}
-    config:
-      ssl.hostnameVerification: false
-      ssl.quorum.hostnameVerification: false
-      {{- if (include "common.onServiceMesh" .) }}
-      sslQuorum: false
-      {{- end }}
-    storage:
-      type: persistent-claim
-      size: {{ .Values.persistence.zookeeper.size }}
-      deleteClaim: true
-      class: {{ include "common.storageClass" (dict "dot" . "suffix" "zk" "persistenceInfos" .Values.persistence.zookeeper) }}
-    {{- if .Values.metrics.kafkaExporter.enabled }}
-    metricsConfig:
-      type: {{ .Values.metrics.kafkaExporter.metricsConfig.type }}
-      valueFrom:
-        configMapKeyRef:
-          name: {{ include "common.fullname" . }}
-          key: zookeeper-metrics-config.yml
-    {{- end }}
   entityOperator:
     template:
       pod:
         {{- include "common.imagePullSecrets" . | nindent 8 }}
-    topicOperator: {}
-    userOperator: {}
+        securityContext:
+          {{- toYaml .Values.entityOperator.template.pod.securityContext | nindent 10 }}
+      topicOperatorContainer:
+        securityContext:
+          {{- toYaml .Values.entityOperator.template.topicOperatorContainer.securityContext | nindent 10 }}
+      userOperatorContainer:
+        securityContext:
+          {{- toYaml .Values.entityOperator.template.userOperatorContainer.securityContext | nindent 10 }}
+    topicOperator:
+      resources:
+        limits:
+          cpu: {{ .Values.entityOperator.template.topicOperator.resources.limits.cpu }}
+          memory: {{ .Values.entityOperator.template.topicOperator.resources.limits.memory }}
+        requests:
+          cpu: {{ .Values.entityOperator.template.topicOperator.resources.requests.cpu }}
+          memory: {{ .Values.entityOperator.template.topicOperator.resources.requests.memory }}
+    userOperator:
+      resources:
+        limits:
+          cpu: {{ .Values.entityOperator.template.userOperator.resources.limits.cpu }}
+          memory: {{ .Values.entityOperator.template.userOperator.resources.limits.memory }}
+        requests:
+          cpu: {{ .Values.entityOperator.template.userOperator.resources.requests.cpu }}
+          memory: {{ .Values.entityOperator.template.userOperator.resources.requests.memory }}
   {{- if .Values.cruiseControl.enabled }}
   cruiseControl:
     template:
       pod:
         {{- include "common.imagePullSecrets" . | nindent 8 }}
+        securityContext:
+          {{- toYaml .Values.cruiseControl.template.pod.securityContext | nindent 10 }}
+      cruiseControlContainer:
+        securityContext:
+          {{- toYaml .Values.cruiseControl.template.cruiseControlContainer.securityContext | nindent 10 }}
     metricsConfig:
       type: {{ .Values.cruiseControl.metricsConfig.type }}
       valueFrom:
         configMapKeyRef:
           name: {{ include "common.fullname" . }}
           key: cruisecontrol-metrics-config.yml
+    resources:
+      limits:
+        cpu: {{ .Values.cruiseControl.template.resources.limits.cpu }}
+        memory: {{ .Values.cruiseControl.template.resources.limits.memory }}
+      requests:
+        cpu: {{ .Values.cruiseControl.template.resources.requests.cpu }}
+        memory: {{ .Values.cruiseControl.template.resources.requests.memory }}
   {{- end }}
   {{- if .Values.metrics.kafkaExporter.enabled }}
   kafkaExporter:
     template:
       pod:
         {{- include "common.imagePullSecrets" . | nindent 8 }}
+        securityContext:
+          {{- toYaml .Values.cruiseControl.template.pod.securityContext | nindent 10 }}
+      container:
+        securityContext:
+          {{- toYaml .Values.kafkaExporter.template.container.securityContext | nindent 10 }}
     topicRegex: {{ .Values.metrics.kafkaExporter.topicRegex }}
     groupRegex: {{ .Values.metrics.kafkaExporter.groupRegex }}
     resources:
index 3cced3e..5f31fc1 100644 (file)
@@ -1,4 +1,5 @@
 # Copyright © 2022 Nordix Foundation
+# Modifications Copyright © 2025 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -33,7 +34,11 @@ affinity:
   podAntiAffinity:
     enabled: true
 config:
-  kafkaVersion: 3.7.0
+  # strimzi-operator 0.45.0 supports <=3.9.0
+  kafkaVersion: 3.9.0
+  # strimzi-operator 0.46.0 supports <=4.0.0
+  #kafkaVersion: 4.0.0
+  #kafkaMetadataVersion: 4.0-IV3
   authType: simple
   saslMechanism: &saslMech scram-sha-512
   kafkaInternalPort: &plainPort 9092
@@ -47,7 +52,7 @@ config:
 persistence:
   enabled: &pvenabled true
   mountPath: /dockerdata-nfs
-  kafka:
+  broker:
     enabled: *pvenabled
     # default values of 2Gi for dev env.
     # Production values should be dimensioned according to requirements. ie >= 10Gi
@@ -55,14 +60,14 @@ persistence:
     volumeReclaimPolicy: Retain
     accessMode: ReadWriteOnce
     mountPath: /dockerdata-nfs
-    mountSubPath: strimzi-kafka/kafka
-  zookeeper:
+    mountSubPath: strimzi-kafka/broker
+  controller:
     enabled: *pvenabled
     size: 1Gi
     volumeReclaimPolicy: Retain
     accessMode: ReadWriteOnce
     mountPath: /dockerdata-nfs
-    mountSubPath: strimzi-kafka/zk
+    mountSubPath: strimzi-kafka/controller
 
 #Pods Service Account
 serviceAccount:
@@ -141,6 +146,29 @@ cruiseControl:
   # ref. https://strimzi.io/blog/2020/06/15/cruise-control/
   kafkaRebalance:
     enabled: false
+  template:
+    pod:
+      securityContext:
+        seccompProfile:
+          type: RuntimeDefault
+    cruiseControlContainer:
+      securityContext:
+        allowPrivilegeEscalation: false
+        readOnlyRootFilesystem: true
+        runAsGroup: 1001
+        runAsNonRoot: true
+        runAsUser: 1001
+        capabilities:
+          drop:
+            - ALL
+            - CAP_NET_RAW
+    resources:
+      limits:
+        cpu: '2'
+        memory: 2Gi
+      requests:
+        cpu: 100m
+        memory: 1Gi
 
 ######################
 #  Component overrides
@@ -151,3 +179,122 @@ strimzi-kafka-bridge:
     saslMechanism: *saslMech
     kafkaInternalPort: *plainPort
     strimziKafkaAdminUser: *adminUser
+
+broker:
+  template:
+    pod:
+      securityContext:
+        runAsUser: 1001
+        runAsGroup: 1001
+        fsGroup: 1001
+        seccompProfile:
+          type: RuntimeDefault
+    kafkaContainer:
+      securityContext:
+        allowPrivilegeEscalation: false
+        readOnlyRootFilesystem: true
+        #runAsGroup: 1001
+        runAsNonRoot: true
+        runAsUser: 1001
+        capabilities:
+          drop:
+            - ALL
+            - CAP_NET_RAW
+  resources:
+    limits:
+      cpu: '2'
+      memory: 2Gi
+    requests:
+      cpu: 100m
+      memory: 1Gi
+
+controller:
+  template:
+    pod:
+      securityContext:
+        runAsUser: 1001
+        runAsGroup: 1001
+        fsGroup: 1001
+        seccompProfile:
+          type: RuntimeDefault
+    kafkaContainer:
+      securityContext:
+        allowPrivilegeEscalation: false
+        readOnlyRootFilesystem: true
+        #runAsGroup: 1001
+        runAsNonRoot: true
+        runAsUser: 1001
+        capabilities:
+          drop:
+            - ALL
+            - CAP_NET_RAW
+  resources:
+    limits:
+      cpu: '2'
+      memory: 2Gi
+    requests:
+      cpu: 100m
+      memory: 1Gi
+
+entityOperator:
+  template:
+    pod:
+      securityContext:
+        seccompProfile:
+          type: RuntimeDefault
+    topicOperatorContainer:
+      securityContext:
+        allowPrivilegeEscalation: false
+        readOnlyRootFilesystem: true
+        runAsGroup: 1001
+        runAsNonRoot: true
+        runAsUser: 1001
+        capabilities:
+          drop:
+            - ALL
+            - CAP_NET_RAW
+    userOperatorContainer:
+      securityContext:
+        allowPrivilegeEscalation: false
+        readOnlyRootFilesystem: true
+        runAsGroup: 1001
+        runAsNonRoot: true
+        runAsUser: 1001
+        capabilities:
+          drop:
+            - ALL
+            - CAP_NET_RAW
+    topicOperator:
+      resources:
+        limits:
+          cpu: '2'
+          memory: 2Gi
+        requests:
+          cpu: 100m
+          memory: 1Gi
+    userOperator:
+      resources:
+        limits:
+          cpu: '2'
+          memory: 2Gi
+        requests:
+          cpu: 100m
+          memory: 1Gi
+
+kafkaExporter:
+  template:
+    pod:
+      securityContext:
+        seccompProfile:
+          type: RuntimeDefault
+    container:
+      securityContext:
+        allowPrivilegeEscalation: false
+        readOnlyRootFilesystem: true
+        runAsGroup: 1001
+        runAsNonRoot: true
+        runAsUser: 1001
+        capabilities:
+          drop:
+            - ALL
+            - CAP_NET_RAW
index 7c4a5b7..1b3ca07 100644 (file)
@@ -18,7 +18,7 @@
 apiVersion: v2
 description: ONAP uui
 name: uui
-version: 13.0.0
+version: 15.0.1
 
 dependencies:
   - name: common
@@ -31,11 +31,17 @@ dependencies:
     version: ~13.x-0
     repository: '@local'
   - name: uui-server
-    version: ~13.x-0
+    version: ~15.x-0
     repository: 'file://components/uui-server'
   - name: uui-nlp
     version: ~13.x-0
     repository: 'file://components/uui-nlp'
   - name: uui-intent-analysis
-    version: ~13.x-0
+    version: ~15.x-0
     repository: 'file://components/uui-intent-analysis'
+  - name: uui-llm-adaptation
+    version: ~15.x-0
+    repository: 'file://components/uui-llm-adaptation'
+  - name: nginx
+    version: ~18.3.x-0
+    repository: '@local'
index bd1f6ee..25fa945 100644 (file)
@@ -15,7 +15,7 @@
 apiVersion: v2
 description: ONAP uui intent analysis
 name: uui-intent-analysis
-version: 13.0.0
+version: 15.0.0
 
 dependencies:
   - name: common
index cf68e7c..0107a73 100644 (file)
@@ -20,7 +20,7 @@ main_path="/home/uui"
 echo @main_path@ $main_path
 
 JAVA_PATH="$JAVA_HOME/bin/java"
-JAVA_OPTS="-Xms50m -Xmx128m"
+JAVA_OPTS="-XX:MaxRAMPercentage=${MAX_RAM_PERCENTAGE:-70}"
 echo @JAVA_PATH@ $JAVA_PATH
 echo @JAVA_OPTS@ $JAVA_OPTS
 
index d2824d1..2d52f1e 100644 (file)
@@ -19,6 +19,7 @@ metadata: {{- include "common.resourceMetadata" . | nindent 2 }}
 spec:
   selector: {{- include "common.selectors" . | nindent 4 }}
   replicas: {{ .Values.replicaCount }}
+  revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
   template:
     metadata: {{- include "common.templateMetadata" . | nindent 6 }}
     spec:
@@ -42,25 +43,37 @@ spec:
           {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "pg-user-creds" "key" "login") | indent 10 }}
         - name: POSTGRES_PASSWORD
           {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "pg-user-creds" "key" "password") | indent 10 }}
-{{- if eq .Values.liveness.enabled true }}
+        - name: TRACING_ENABLED
+          value: {{ .Values.global.tracing.enabled | quote }}
+        - name: COLLECTOR_HOST
+          value: {{ .Values.tracing.collector.host }}
+        - name: COLLECTOR_PORT
+          value: {{ .Values.tracing.collector.port | quote }}
+        {{- if eq .Values.startup.enabled true }}
+        startupProbe:
+          httpGet:
+            port: {{ .Values.startup.port }}
+            path: {{ .Values.startup.path }}
+          failureThreshold: {{ .Values.startup.failureThreshold }}
+          periodSeconds: {{ .Values.startup.periodSeconds }}
+        {{- end }}
+        {{- if eq .Values.liveness.enabled true }}
         livenessProbe:
           tcpSocket:
             port: {{ .Values.liveness.port }}
-          initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
           periodSeconds: {{ .Values.liveness.periodSeconds }}
-{{- end }}
+        {{- end }}
         readinessProbe:
           tcpSocket:
             port: {{ .Values.readiness.port }}
-          initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
           periodSeconds: {{ .Values.readiness.periodSeconds }}
         resources: {{ include "common.resources" . | nindent 10 }}
-{{- if .Values.nodeSelector }}
+        {{- if .Values.nodeSelector }}
         nodeSelector: {{ toYaml .Values.nodeSelector | nindent 10 }}
-{{- end }}
-{{- if .Values.affinity }}
+        {{- end }}
+        {{- if .Values.affinity }}
         affinity: {{ toYaml .Values.affinity | nindent 10 }}
-{{- end }}
+        {{- end }}
         volumeMounts:
         - mountPath: /uui/run.sh
           name: entrypoint
index 9c49913..639cad1 100644 (file)
@@ -24,6 +24,9 @@ metadata:
     chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
     release: {{ include "common.release" . }}
     heritage: {{ .Release.Service }}
+  {{- if .Values.jobAnnotations }}
+  annotations:  {{- include "common.tplValue" (dict "value" .Values.jobAnnotations "context" $) | nindent 4 }}
+  {{- end }}
 spec:
   backoffLimit: 20
   template:
index c638303..65f7214 100644 (file)
@@ -18,6 +18,8 @@
 
 global:
   passwordStrength: long
+  tracing:
+    enabled: false
 
 #Pods Service Account
 serviceAccount:
@@ -40,7 +42,7 @@ secrets:
     password: '{{ .Values.postgres.config.pgUserPassword }}'
     passwordPolicy: generate
 
-image: onap/usecase-ui-intent-analysis:5.2.4
+image: onap/usecase-ui-intent-analysis:15.0.1
 pullPolicy: Always
 
 # flag to enable debugging - application support required
@@ -49,6 +51,7 @@ flavor: small
 replicaCount: 1
 nodeSelector: {}
 affinity: {}
+revisionHistoryLimit: 1
 
 service:
   type: ClusterIP
@@ -57,14 +60,19 @@ service:
   - name: http-rest
     port: &svc_port 8083
 
+startup:
+  enabled: true
+  path: /api/usecaseui-intent-analysis/v1/actuator/health
+  port: *svc_port
+  periodSeconds: 1
+  failureThreshold: 90
+
 liveness:
-  initialDelaySeconds: 120
+  enabled: true
   port: *svc_port
   periodSeconds: 10
-  enabled: true
 
 readiness:
-  initialDelaySeconds: 60
   port: *svc_port
   periodSeconds: 10
 
@@ -124,3 +132,22 @@ resources:
       memory: "1Gi"
   unlimited: {}
 
+tracing:
+  collector:
+    host: jaeger-collector.istio-config
+    port: 9411
+
+# Annotations to control the execution and deletion of the job
+# Can be used to delete a job before an Upgrade
+#
+# jobAnnotations:
+#   # In case of an ArgoCD deployment this Hook deletes the job before syncing
+#   argocd.argoproj.io/hook: Sync
+#   argocd.argoproj.io/hook-delete-policy: BeforeHookCreation
+#
+#   # In case of an Helm/Flux deployment this Hook deletes the job
+#   # This is what defines this resource as a hook. Without this line, the
+#   # job is considered part of the release.
+#   "helm.sh/hook": "pre-upgrade,pre-rollback,post-install"
+#   "helm.sh/hook-delete-policy": "before-hook-creation"
+#   "helm.sh/hook-weight": "1"
diff --git a/kubernetes/uui/components/uui-llm-adaptation/.helmignore b/kubernetes/uui/components/uui-llm-adaptation/.helmignore
new file mode 100644 (file)
index 0000000..f0c1319
--- /dev/null
@@ -0,0 +1,21 @@
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*~
+# Various IDEs
+.project
+.idea/
+*.tmproj
diff --git a/kubernetes/uui/components/uui-llm-adaptation/Chart.yaml b/kubernetes/uui/components/uui-llm-adaptation/Chart.yaml
new file mode 100644 (file)
index 0000000..2391ac3
--- /dev/null
@@ -0,0 +1,35 @@
+# Copyright © 2022 Huawei Technologies Co., Ltd. All rights reserved.
+#
+# 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.
+
+apiVersion: v2
+description: ONAP uui llm adaptation
+name: uui-llm-adaptation
+version: 15.0.0
+
+dependencies:
+  - name: common
+    version: ~13.x-0
+    repository: '@local'
+  - name: repositoryGenerator
+    version: ~13.x-0
+    repository: '@local'
+  - name: postgres
+    version: ~13.x-0
+    repository: '@local'
+  - name: serviceAccount
+    version: ~13.x-0
+    repository: '@local'
+  - name: readinessCheck
+    version: ~13.x-0
+    repository: '@local'
diff --git a/kubernetes/uui/components/uui-llm-adaptation/resources/config/llm-adaptation-init.sql b/kubernetes/uui/components/uui-llm-adaptation/resources/config/llm-adaptation-init.sql
new file mode 100644 (file)
index 0000000..5379c73
--- /dev/null
@@ -0,0 +1,23 @@
+--
+-- Copyright (C) 2024 CMCC, Inc. and others. All rights reserved.
+--
+-- 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.
+--
+
+CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
+
+create table if not exists intent(
+    intent_id varchar(255) primary key,
+    intent_name varchar(255),
+    intent_generateType VARCHAR (225)
+);
\ No newline at end of file
diff --git a/kubernetes/uui/components/uui-llm-adaptation/resources/entrypoint/run.sh b/kubernetes/uui/components/uui-llm-adaptation/resources/entrypoint/run.sh
new file mode 100644 (file)
index 0000000..7786624
--- /dev/null
@@ -0,0 +1,31 @@
+{{/*
+#
+# Copyright (C) 2022 Huawei Technologies Co., Ltd. All rights reserved.
+#
+# 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.
+#
+*/}}
+
+main_path="/home/uui"
+echo @main_path@ $main_path
+
+JAVA_PATH="$JAVA_HOME/bin/java"
+JAVA_OPTS="-XX:MaxRAMPercentage=${MAX_RAM_PERCENTAGE:-70}"
+echo @JAVA_PATH@ $JAVA_PATH
+echo @JAVA_OPTS@ $JAVA_OPTS
+
+jar_path="$main_path/usecase-ui-llm-adaptation.jar"
+echo @jar_path@ $jar_path
+
+echo "Starting usecase-ui-llm-adaptation..."
+$JAVA_PATH $JAVA_OPTS -classpath $jar_path -jar $jar_path $SPRING_OPTS
diff --git a/kubernetes/uui/components/uui-llm-adaptation/templates/configmap.yaml b/kubernetes/uui/components/uui-llm-adaptation/templates/configmap.yaml
new file mode 100644 (file)
index 0000000..3583c41
--- /dev/null
@@ -0,0 +1,31 @@
+{{/*
+# Copyright © 2022 Huawei Technologies Co., Ltd. All rights reserved.
+#
+# 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.
+*/}}
+
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
+data:
+{{ tpl (.Files.Glob "resources/config/*").AsConfig . | indent 2 }}
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ include "common.fullname" . }}-entrypoint
+  namespace: {{ include "common.namespace" . }}
+data:
+{{ tpl (.Files.Glob "resources/entrypoint/*").AsConfig . | indent 2 }}
diff --git a/kubernetes/uui/components/uui-llm-adaptation/templates/deployment.yaml b/kubernetes/uui/components/uui-llm-adaptation/templates/deployment.yaml
new file mode 100644 (file)
index 0000000..890bc5e
--- /dev/null
@@ -0,0 +1,75 @@
+{{/*
+# Copyright © 2022 Huawei Technologies Co., Ltd. All rights reserved.
+# 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.
+*/}}
+
+apiVersion: apps/v1
+kind: Deployment
+metadata: {{- include "common.resourceMetadata" . | nindent 2 }}
+spec:
+  selector: {{- include "common.selectors" . | nindent 4 }}
+  replicas: {{ .Values.replicaCount }}
+  revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
+  template:
+    metadata: {{- include "common.templateMetadata" . | nindent 6 }}
+    spec:
+      initContainers: {{ include "common.readinessCheck.waitFor" . | nindent 6 }}
+      containers:
+      - name: {{ include "common.name" . }}
+        image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
+        imagePullPolicy: {{ .Values.pullPolicy }}
+        command: ["sh", "-c"]
+        args:
+        - ". /uui/run.sh"
+        ports: {{ include "common.containerPorts" . | nindent 10 }}
+        env:
+        - name: POSTGRES_IP
+          value: {{ .Values.postgres.service.name2 }}
+        - name: POSTGRES_PORT
+          value: "{{ .Values.postgres.service.externalPort }}"
+        - name: POSTGRES_DB_NAME
+          value: {{ .Values.postgres.config.pgDatabase }}
+        - name: POSTGRES_USERNAME
+          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "pg-user-creds" "key" "login") | indent 10 }}
+        - name: POSTGRES_PASSWORD
+          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "pg-user-creds" "key" "password") | indent 10 }}
+{{- if eq .Values.liveness.enabled true }}
+        livenessProbe:
+          tcpSocket:
+            port: {{ .Values.liveness.port }}
+          initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
+          periodSeconds: {{ .Values.liveness.periodSeconds }}
+{{- end }}
+        readinessProbe:
+          tcpSocket:
+            port: {{ .Values.readiness.port }}
+          initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
+          periodSeconds: {{ .Values.readiness.periodSeconds }}
+        resources: {{ include "common.resources" . | nindent 10 }}
+{{- if .Values.nodeSelector }}
+        nodeSelector: {{ toYaml .Values.nodeSelector | nindent 10 }}
+{{- end }}
+{{- if .Values.affinity }}
+        affinity: {{ toYaml .Values.affinity | nindent 10 }}
+{{- end }}
+        volumeMounts:
+        - mountPath: /uui/run.sh
+          name: entrypoint
+          subPath: run.sh
+      serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
+      volumes:
+      - name: entrypoint
+        configMap:
+          name: {{ include "common.fullname" . }}-entrypoint
+          defaultMode: 0755
+      {{- include "common.imagePullSecrets" . | nindent 6 }}
diff --git a/kubernetes/uui/components/uui-llm-adaptation/templates/job.yaml b/kubernetes/uui/components/uui-llm-adaptation/templates/job.yaml
new file mode 100644 (file)
index 0000000..efbcce2
--- /dev/null
@@ -0,0 +1,85 @@
+{{/*
+# Copyright © 2022 Huawei Technologies Co., Ltd. All rights reserved.
+#
+# 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.
+*/}}
+
+apiVersion: batch/v1
+kind: Job
+metadata:
+  name: {{ include "common.fullname" . }}-init-postgres
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}-job
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ include "common.release" . }}
+    heritage: {{ .Release.Service }}
+  {{- if .Values.jobAnnotations }}
+  annotations:  {{- include "common.tplValue" (dict "value" .Values.jobAnnotations "context" $) | nindent 4 }}
+  {{- end }}
+spec:
+  backoffLimit: 20
+  template:
+    metadata:
+      labels:
+        app: {{ include "common.name" . }}-job
+        release: {{ include "common.release" . }}
+    spec:
+      restartPolicy: Never
+      initContainers:
+      - command:
+        - /app/ready.py
+        args:
+        - --service-name
+        - "{{ .Values.postgres.service.name2 }}"
+        env:
+        - name: NAMESPACE
+          valueFrom:
+            fieldRef:
+              apiVersion: v1
+              fieldPath: metadata.namespace
+        image: {{ include "repositoryGenerator.image.readiness" . }}
+        imagePullPolicy: {{ .Values.pullPolicy }}
+        name: {{ include "common.name" . }}-readiness
+        resources:
+          limits:
+            cpu: "100m"
+            memory: "500Mi"
+          requests:
+            cpu: "3m"
+            memory: "20Mi"
+      containers:
+      - name: {{ include "common.name" . }}-job
+        image: {{ include "repositoryGenerator.image.postgres" . }}
+        imagePullPolicy: {{ .Values.pullPolicy }}
+        env:
+        - name: PGUSER
+          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "pg-user-creds" "key" "login") | indent 10 }}
+        - name: PGPASSWORD
+          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "pg-user-creds" "key" "password") | indent 10 }}
+        command:
+        - /bin/sh
+        - -c
+        - |
+          psql -h $(UUI_ADAPTATION_PG_PRIMARY_SERVICE_HOST) -f /aaa/init/llm-adaptation-init.sql -d {{ .Values.postgres.config.pgDatabase }}
+        volumeMounts:
+        - name: init-data
+          mountPath: /aaa/init/llm-adaptation-init.sql
+          subPath: llm-adaptation-init.sql
+      {{ include "common.waitForJobContainer" . | indent 6 | trim }}
+      {{- include "common.imagePullSecrets" . | nindent 6 }}
+      serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
+      volumes:
+      - name: init-data
+        configMap:
+          name: {{ include "common.fullname" . }}
diff --git a/kubernetes/uui/components/uui-llm-adaptation/templates/secrets.yaml b/kubernetes/uui/components/uui-llm-adaptation/templates/secrets.yaml
new file mode 100644 (file)
index 0000000..638e02c
--- /dev/null
@@ -0,0 +1,17 @@
+{{/*
+# Copyright © 2022 Huawei Technologies Co., Ltd. All rights reserved.
+#
+# 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.
+*/}}
+
+{{ include "common.secretFast" . }}
diff --git a/kubernetes/uui/components/uui-llm-adaptation/templates/service.yaml b/kubernetes/uui/components/uui-llm-adaptation/templates/service.yaml
new file mode 100644 (file)
index 0000000..33e96ef
--- /dev/null
@@ -0,0 +1,17 @@
+{{/*
+# Copyright © 2022 Huawei Technologies Co., Ltd. All rights reserved.
+#
+# 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.
+*/}}
+
+{{ include "common.service" . }}
diff --git a/kubernetes/uui/components/uui-llm-adaptation/values.yaml b/kubernetes/uui/components/uui-llm-adaptation/values.yaml
new file mode 100644 (file)
index 0000000..9ee1f30
--- /dev/null
@@ -0,0 +1,141 @@
+# Copyright © 2022 Huawei Technologies Co., Ltd. All rights reserved.
+#
+# 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.
+
+# Default values for uui llm adaptation.
+# This is a YAML-formatted file.
+# Declare variables to be passed into your templates.
+
+global:
+  passwordStrength: long
+
+#Pods Service Account
+serviceAccount:
+  nameOverride: uui-llm-adaptation
+  roles:
+    - read
+
+secrets:
+  - uid: pg-root-pass
+    name: &pgRootPassSecretName '{{ include "common.release" . }}-uui-adaptation-pg-root-pass'
+    type: password
+    externalSecret: '{{ ternary "" (tpl (default "" .Values.postgres.config.pgRootPasswordExternalSecret) .) (hasSuffix "uui-adaptation-pg-root-pass" .Values.postgres.config.pgRootPasswordExternalSecret) }}'
+    password: '{{ .Values.postgres.config.pgRootpassword }}'
+    policy: generate
+  - uid: pg-user-creds
+    name: &pgUserCredsSecretName '{{ include "common.release" . }}-uui-adaptation-pg-user-creds'
+    type: basicAuth
+    externalSecret: '{{ ternary "" (tpl (default "" .Values.postgres.config.pgUserExternalSecret) .) (hasSuffix "uui-adaptation-pg-user-creds" .Values.postgres.config.pgUserExternalSecret) }}'
+    login: '{{ .Values.postgres.config.pgUserName }}'
+    password: '{{ .Values.postgres.config.pgUserPassword }}'
+    passwordPolicy: generate
+
+image: onap/usecase-ui-llm-adaptation:15.0.0
+pullPolicy: Always
+
+# flag to enable debugging - application support required
+debugEnabled: false
+flavor: small
+replicaCount: 1
+nodeSelector: {}
+affinity: {}
+revisionHistoryLimit: 1
+
+service:
+  type: ClusterIP
+  name: uui-llm-adaptation
+  ports:
+  - name: http-rest
+    port: &svc_port 8084
+
+liveness:
+  initialDelaySeconds: 120
+  port: *svc_port
+  periodSeconds: 10
+  enabled: true
+
+readiness:
+  initialDelaySeconds: 60
+  port: *svc_port
+  periodSeconds: 10
+
+# application configuration override for postgres
+postgres:
+  nameOverride: &postgresName uui-adaptation-postgres
+  service:
+    name: *postgresName
+    name2: uui-adaptation-pg-primary
+    name3: uui-adaptation-pg-replica
+  container:
+    name:
+      primary: uui-adaptation-pg-primary
+      replica: uui-adaptation-pg-replica
+  config:
+    pgUserName: uui
+    pgDatabase: uuiadaptation
+    pgUserExternalSecret: *pgUserCredsSecretName
+    pgRootPasswordExternalSecret: *pgRootPassSecretName
+  persistence:
+    mountSubPath: uui/uuiadaptation/data
+    mountInitPath: uui
+
+readinessCheck:
+  wait_for:
+    services:
+      - '{{ .Values.postgres.service.name2 }}'
+
+wait_for_job_container:
+  containers:
+    - '{{ include "common.name" . }}-job'
+
+# We usually recommend not to specify default resources and to leave this as a conscious
+# choice for the user. This also increases chances charts run on environments with little
+# resources, such as Minikube. If you do want to specify resources, uncomment the following
+# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
+#
+# Example:
+# Configure resource requests and limits
+# ref: http://kubernetes.io/docs/user-guide/compute-resources/
+# Minimum memory for development is 2 CPU cores and 4GB memory
+# Minimum memory for production is 4 CPU cores and 8GB memory
+resources:
+  small:
+    limits:
+      cpu: "2"
+      memory: "1Gi"
+    requests:
+      cpu: "1"
+      memory: "200Mi"
+  large:
+    limits:
+      cpu: "4"
+      memory: "2Gi"
+    requests:
+      cpu: "2"
+      memory: "1Gi"
+  unlimited: {}
+
+# Annotations to control the execution and deletion of the job
+# Can be used to delete a job before an Upgrade
+#
+# jobAnnotations:
+#   # In case of an ArgoCD deployment this Hook deletes the job before syncing
+#   argocd.argoproj.io/hook: Sync
+#   argocd.argoproj.io/hook-delete-policy: BeforeHookCreation
+#
+#   # In case of an Helm/Flux deployment this Hook deletes the job
+#   # This is what defines this resource as a hook. Without this line, the
+#   # job is considered part of the release.
+#   "helm.sh/hook": "pre-upgrade,pre-rollback,post-install"
+#   "helm.sh/hook-delete-policy": "before-hook-creation"
+#   "helm.sh/hook-weight": "1"
index 8ef2792..f8537bd 100644 (file)
@@ -22,6 +22,7 @@ kind: Deployment
 metadata: {{- include "common.resourceMetadata" . | nindent 2 }}
 spec:
   replicas: 1
+  revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
   selector: {{- include "common.selectors" . | nindent 4 }}
   template:
     metadata: {{- include "common.templateMetadata" . | nindent 6 }}
index cdfa50e..abf1d7f 100644 (file)
@@ -43,6 +43,7 @@ service:
     - name: http-upload
       port: *upload_port
 
+revisionHistoryLimit: 1
 
 liveness:
   initialDelaySeconds: 300
index 82e395e..e5677aa 100644 (file)
@@ -17,7 +17,7 @@
 apiVersion: v2
 description: ONAP uui server
 name: uui-server
-version: 13.0.0
+version: 15.0.1
 
 dependencies:
   - name: common
index 36308c0..a86cea7 100644 (file)
@@ -14,7 +14,8 @@
 ## limitations under the License.
 ##
 ## General App Properties
-server.servlet.contextPath=/api/usecaseui-server/v1
+spring.application.name=uui-server
+server.servlet.contextPath={{ .Values.uuiServer.basePath }}
 server.port=8082
 spring.http.multipart.max-file-size=128MB
 spring.http.multipart.max-request-size=128MB
@@ -46,3 +47,29 @@ logging.level.*=INFO
 #enable shutdown
 endpoints.shutdown.enabled=true
 endpoints.shutdown.sensitive=false
+
+intents.scheduledTask.enabled=false
+
+management.endpoints.web.exposure.include=*
+management.tracing.enabled={{ default .Values.global.tracing.enabled .Values.tracing.enabled }}
+management.tracing.sampling.probability={{ default .Values.global.tracing.sampling.probability .Values.tracing.collector.baseUrl }}
+management.zipkin.tracing.endpoint={{ default .Values.global.tracing.collector.baseUrl .Values.tracing.collector.baseUrl }}/api/v2/spans
+
+uui-server.client.aai.baseUrl={{ .Values.uuiServer.client.aai.baseUrl }}
+uui-server.client.aai.apiVersion={{ .Values.uuiServer.client.aai.apiVersion }}
+uui-server.client.aai.username={{ .Values.uuiServer.client.aai.username }}
+uui-server.client.aai.password={{ .Values.uuiServer.client.aai.password }}
+uui-server.client.so.baseUrl={{ .Values.uuiServer.client.so.baseUrl }}
+uui-server.client.so.username={{ .Values.uuiServer.client.so.username }}
+uui-server.client.so.password={{ .Values.uuiServer.client.so.password }}
+uui-server.client.sdc.baseUrl={{ .Values.uuiServer.client.sdc.baseUrl }}
+uui-server.client.sdc.username={{ .Values.uuiServer.client.sdc.username }}
+uui-server.client.sdc.password={{ .Values.uuiServer.client.sdc.password }}
+uui-server.slicing.service-invariant-uuid={{ .Values.uuiServer.slicing.serviceInvariantUuid }}
+uui-server.slicing.service-uuid={{ .Values.uuiServer.slicing.serviceUuid }}
+uui-server.slicing.global-subscriber-id={{ .Values.uuiServer.slicing.globalSubscriberId }}
+uui-server.slicing.service-type={{ .Values.uuiServer.slicing.serviceType }}
+uui-server.ccvpn.globalCustomerId={{ .Values.uuiServer.ccvpn.globalCustomerId }}
+uui-server.ccvpn.serviceType={{ .Values.uuiServer.ccvpn.serviceType }}
+uui-server.ccvpn.subscriberName={{ .Values.uuiServer.ccvpn.subscriberName }}
+uui-server.ccvpn.subscriberType={{ .Values.uuiServer.ccvpn.subscriberType }}
index 283d55b..6f58527 100644 (file)
@@ -32,7 +32,7 @@ $dbScript 127.0.0.1 5432 postgres uui
 echo "usecase-ui database init script finished normally..."
 
 JAVA_PATH="$JAVA_HOME/bin/java"
-JAVA_OPTS="-Xms50m -Xmx128m"
+JAVA_OPTS="-XX:MaxRAMPercentage=${MAX_RAM_PERCENTAGE:-70}"
 echo @JAVA_PATH@ $JAVA_PATH
 echo @JAVA_OPTS@ $JAVA_OPTS
 
index ae08054..0d48648 100644 (file)
@@ -21,6 +21,7 @@ metadata: {{- include "common.resourceMetadata" . | nindent 2 }}
 spec:
   selector: {{- include "common.selectors" . | nindent 4 }}
   replicas: {{ .Values.replicaCount }}
+  revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
   template:
     metadata: {{- include "common.templateMetadata" . | nindent 6 }}
     spec:
@@ -82,24 +83,35 @@ spec:
           ports: {{ include "common.containerPorts" . | nindent 10  }}
           # disable liveness probe when breakpoints set in debugger
           # so K8s doesn't restart unresponsive container
+          {{- if eq .Values.startup.enabled true }}
+          startupProbe:
+            httpGet:
+              port: {{ index .Values.service.ports 0 "port" }}
+              path: {{ .Values.uuiServer.basePath }}{{ .Values.startup.path }}
+            failureThreshold: {{ .Values.startup.failureThreshold }}
+            periodSeconds: {{ .Values.startup.periodSeconds }}
+          {{- end }}
           {{- if eq .Values.liveness.enabled true }}
           livenessProbe:
-            tcpSocket:
-              port: {{ .Values.service.internalPort }}
-            initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
+            httpGet:
+              port: {{ index .Values.service.ports 0 "port" }}
+              path: {{ .Values.uuiServer.basePath }}{{ .Values.liveness.path }}
             periodSeconds: {{ .Values.liveness.periodSeconds }}
+            failureThreshold: {{ .Values.liveness.failureThreshold }}
           {{- end }}
-          resources: {{ include "common.resources" . | nindent 12 }}
           readinessProbe:
-            tcpSocket:
-              port: {{ .Values.service.internalPort }}
-            initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
+            httpGet:
+              port: {{ index .Values.service.ports 0 "port" }}
+              path: {{ .Values.uuiServer.basePath }}{{ .Values.readiness.path }}
             periodSeconds: {{ .Values.readiness.periodSeconds }}
+          resources: {{ include "common.resources" . | nindent 12 }}
           env:
           - name: MSB_ADDR
             value: {{tpl .Values.msbaddr .}}
           - name: MR_ADDR
             value: {{tpl .Values.mraddr .}}
+          - name: AAI_ADDR
+            value: {{tpl .Values.aaiaddr .}}
           - name: POSTGRES_IP
             value: {{.Values.postgres.service.name2}}
           - name: POSTGRES_PORT
index e995c58..50cc024 100644 (file)
 #
 apiVersion: batch/v1
 kind: Job
-metadata: {{- include "common.resourceMetadata" . | nindent 2 }}
+metadata:
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    release: {{ include "common.release" . }}
+  {{- if .Values.jobAnnotations }}
+  annotations:  {{- include "common.tplValue" (dict "value" .Values.jobAnnotations "context" $) | nindent 4 }}
+  {{- end }}
 spec:
   backoffLimit: 20
   template:
index d1bc337..83dabb3 100644 (file)
 # Global configuration defaults.
 #################################################################
 global:
-  nodePortPrefix: 302
+  tracing:
+    collector:
+      baseUrl: http://jaeger-collector.istio-config:9411
+    sampling:
+      probability: 1.0
 
 secrets:
   - uid: pg-root-pass
@@ -48,13 +52,15 @@ flavor: small
 
 # application image
 repository: nexus3.onap.org:10001
-image: onap/usecase-ui-server:5.2.2
+image: onap/usecase-ui-server:15.0.3
 pullPolicy: Always
+revisionHistoryLimit: 1
 
 # application configuration
 
 msbaddr: msb-iag.{{include "common.namespace" .}}:80
 mraddr: message-router.{{include "common.namespace" .}}:3904
+aaiaddr: aai.{{include "common.namespace" .}}:80
 
 # application configuration override for postgres
 postgres:
@@ -89,40 +95,28 @@ nodeSelector: {}
 affinity: {}
 
 # probe configuration parameters
+startup:
+  enabled: true
+  path: /actuator/health
+  periodSeconds: 1
+  failureThreshold: 60
+
 liveness:
-  initialDelaySeconds: 120
-  periodSeconds: 10
-  # necessary to disable liveness probe when setting breakpoints
-  # in debugger so K8s doesn't restart unresponsive container
+  # disable this for remote debugging
   enabled: true
+  path: /actuator/health
+  periodSeconds: 10
 
 readiness:
-  initialDelaySeconds: 60
+  path: /actuator/health/readiness
   periodSeconds: 10
 
 service:
-  type: NodePort
+  type: ClusterIP
   name: uui-server
-  internalPort: 8082
-  nodePortPrefixOverride: 303
   ports:
     - name: http
       port: 8082
-      nodePort: '99'
-  annotations:
-    msb.onap.org/service-info: |
-      {{ if .Values.global.msbEnabled -}}[
-        {
-          "serviceName": "usecaseui-server",
-          "version": "v1",
-          "url": "/api/usecase-server/v1",
-          "path":"/iui/usecaseui",
-          "protocol": "REST",
-          "visualRange":"1",
-          "port": "{{ include "common.getPort" (dict "global" . "name" "http" "getPlain" true) }}",
-          "enable_ssl": false
-        }
-      ]{{ end }}
 
 ingress:
   enabled: false
@@ -131,6 +125,16 @@ ingress:
       name: "uui-server"
       port: 8082
 
+##
+## Use this to override the global defaults
+tracing:
+# enabled: false
+  collector: {}
+#   baseUrl: http://jaeger-collector.istio-config:9411
+  sampling: {}
+#   probability: 1.0 # percentage of requests that are sampled (between 0-1/0%-100%)
+
+
   # We usually recommend not to specify default resources and to leave this as a conscious
   # choice for the user. This also increases chances charts run on environments with little
   # resources, such as Minikube. If you do want to specify resources, uncomment the following
@@ -147,7 +151,7 @@ resources:
       cpu: "1.5"
       memory: "2Gi"
     requests:
-      cpu: "1"
+      cpu: "300m"
       memory: "1Gi"
   large:
     limits:
@@ -170,3 +174,45 @@ securityContext:
 wait_for_job_container:
   containers:
     - '{{ include "common.name" . }}-job'
+
+# Annotations to control the execution and deletion of the job
+# Can be used to delete a job before an Upgrade
+#
+# jobAnnotations:
+#   # In case of an ArgoCD deployment this Hook deletes the job before syncing
+#   argocd.argoproj.io/hook: Sync
+#   argocd.argoproj.io/hook-delete-policy: BeforeHookCreation
+#
+#   # In case of an Helm/Flux deployment this Hook deletes the job
+#   # This is what defines this resource as a hook. Without this line, the
+#   # job is considered part of the release.
+#   "helm.sh/hook": "pre-upgrade,pre-rollback,post-install"
+#   "helm.sh/hook-delete-policy": "before-hook-creation"
+#   "helm.sh/hook-weight": "1"
+
+uuiServer:
+  basePath: /api/usecaseui-server/v1
+  client:
+    aai:
+      baseUrl: http://aai.onap
+      username: AAI
+      password: AAI
+      apiVersion: v29
+    so:
+      baseUrl: http://so.onap:8080
+      username: InfraPortalClient
+      password: password1$
+    sdc:
+      baseUrl: http://sdc-be:8080
+      username: aai
+      password: Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
+  slicing:
+    serviceInvariantUuid: defaultServiceInvariantUuid
+    serviceUuid: defaultServiceUuid
+    globalSubscriberId: defaultGlobalSubscriberId
+    serviceType: defaultServiceType
+  ccvpn:
+    globalCustomerId: defaultGlobalCustomerId
+    serviceType: defaultServiceType
+    subscriberName: defaultSubscriberName
+    subscriberType: defaultSubscriberType
index c9feacc..abbd35d 100644 (file)
@@ -61,13 +61,13 @@ spec:
           {{- if eq .Values.liveness.enabled true }}
           livenessProbe:
             tcpSocket:
-              port: {{ .Values.service.internalPort }}
+              port: {{ index .Values.service.ports 0 "port" }}
             initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
             periodSeconds: {{ .Values.liveness.periodSeconds }}
           {{ end -}}
           readinessProbe:
             tcpSocket:
-              port: {{ .Values.service.internalPort }}
+              port: {{ index .Values.service.ports 0 "port" }}
             initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
             periodSeconds: {{ .Values.readiness.periodSeconds }}
           volumeMounts:
index b7893bc..8f7c6cd 100644 (file)
 # This is a YAML-formatted file.
 # Declare variables to be passed into your templates.
 global:
-  nodePortPrefix: 302
+  tracing:
+    enabled: false
+    collectorHost: jaeger-collector.istio-system
+    collectorPort: 9411
 
 subChartsOnly:
   enabled: true
@@ -25,7 +28,7 @@ subChartsOnly:
 flavor: small
 
 # application image
-image: onap/usecase-ui:5.2.2
+image: onap/usecase-ui:15.0.1
 pullPolicy: Always
 
 # application configuration
@@ -56,35 +59,18 @@ readiness:
   periodSeconds: 10
 
 service:
-  type: NodePort
+  type: ClusterIP
   name: uui
-  internalPort: 8080
-  nodePortPrefixOverride: 303
   ports:
     - name: http
       port: 8080
-      nodePort: '98'
-  annotations:
-    msb.onap.org/service-info: |
-      {{ if .Values.global.msbEnabled -}}[
-        {
-          "serviceName": "usecaseui-ui",
-          "version": "v1",
-          "url": "/usecase-ui",
-          "path":"/iui/usecaseui",
-          "protocol": "UI",
-          "visualRange":"1",
-          "port": "{{ include "common.getPort" (dict "global" . "name" "http" "getPlain" true) }}",
-          "enable_ssl": false
-        }
-      ]{{ end }}
 
 ingress:
-  enabled: false
+  enabled: true
   service:
-    - baseaddr: "uui-ui"
-      name: "uui"
-      port: 8080
+    - baseaddr: uui
+      name: uui-proxy
+      port: 80
   config:
     ssl: "redirect"
 
@@ -114,3 +100,50 @@ resources:
       cpu: "500m"
       memory: "1Gi"
   unlimited: {}
+
+nginx:
+  fullnameOverride: uui-proxy
+  serverBlock: |-
+    server {
+      listen 8080;
+      listen [::]:8080;
+
+      # Redirect root path to /usecase-ui
+      location = / {
+          return 301 /usecase-ui;
+      }
+
+      # frontend
+      location /usecase-ui {
+          proxy_pass http://uui:8080;
+          proxy_set_header Host $host;
+          proxy_set_header X-Real-IP $remote_addr;
+          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+          proxy_set_header X-Forwarded-Proto $scheme;
+      }
+
+      # uui-server
+      location /api/usecaseui-server {
+          proxy_pass http://uui-server:8082;
+          proxy_set_header Host $host;
+          proxy_set_header X-Real-IP $remote_addr;
+          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+          proxy_set_header X-Forwarded-Proto $scheme;
+      }
+      # intent-service
+      location /api/usecaseui-intent-analysis {
+          proxy_pass http://uui-intent-analysis:8083;
+          proxy_set_header Host $host;
+          proxy_set_header X-Real-IP $remote_addr;
+          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+          proxy_set_header X-Forwarded-Proto $scheme;
+      }
+      # llm-service
+      location /api/usecaseui-llm-adaptation {
+          proxy_pass http://uui-nlp:33011;
+          proxy_set_header Host $host;
+          proxy_set_header X-Real-IP $remote_addr;
+          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+          proxy_set_header X-Forwarded-Proto $scheme;
+      }
+    }
diff --git a/kubernetes/vfc/components/Makefile b/kubernetes/vfc/components/Makefile
deleted file mode 100644 (file)
index 9544d70..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-# Copyright © 2020 Samsung Electronics
-#
-# 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.
-
-ROOT_DIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
-OUTPUT_DIR := $(ROOT_DIR)/../../dist
-PACKAGE_DIR := $(OUTPUT_DIR)/packages
-SECRET_DIR := $(OUTPUT_DIR)/secrets
-
-EXCLUDES :=
-HELM_BIN := helm
-ifneq ($(SKIP_LINT),TRUE)
-       HELM_LINT_CMD := $(HELM_BIN) lint
-else
-       HELM_LINT_CMD := echo "Skipping linting of"
-endif
-
-HELM_CHARTS := $(filter-out $(EXCLUDES), $(sort $(patsubst %/.,%,$(wildcard */.))))
-
-.PHONY: $(EXCLUDES) $(HELM_CHARTS)
-
-all: $(HELM_CHARTS)
-
-$(HELM_CHARTS):
-       @echo "\n[$@]"
-       @make package-$@
-
-make-%:
-       @if [ -f $*/Makefile ]; then make -C $*; fi
-
-dep-%: make-%
-       @if [ -f $*/Chart.yaml ]; then $(HELM_BIN) dep up $*; fi
-
-lint-%: dep-%
-       @if [ -f $*/Chart.yaml ]; then $(HELM_LINT_CMD) $*; fi
-
-package-%: lint-%
-       @mkdir -p $(PACKAGE_DIR)
-       @if [ -f $*/Chart.yaml ]; then PACKAGE_NAME=$$($(HELM_BIN) package -d $(PACKAGE_DIR) $* | cut -d":" -f2) && $(HELM_BIN) cm-push -f $$PACKAGE_NAME local; fi
-       @sleep 3
-       #@$(HELM_BIN) repo index $(PACKAGE_DIR)
-
-clean:
-       @rm -f */Chart.lock
-       @rm -f *tgz */charts/*tgz
-       @rm -rf $(PACKAGE_DIR)
-%:
-       @:
diff --git a/tox.ini b/tox.ini
index 253cb6b..050a9b0 100644 (file)
--- a/tox.ini
+++ b/tox.ini
@@ -9,7 +9,7 @@ envlist =
 skipsdist=true
 
 [doc8]
-ignore-path-errors=docs/helm-search.txt;D001
+ignore-path-errors=docs/sections/resources/helm/helm-search.txt;D001
 
 [testenv:doc8]
 basepython = python3.8