.. _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/
+.. _DefaultStorageClass: https://kubernetes.io/docs/tasks/administer-cluster/change-default-storage-class/
.. _oom_base_setup_guide:
deploy 1.0.0 install (upgrade if release exists) parent chart and all subcharts as separate but related releases
undeploy 1.0.0 delete parent chart and subcharts that were deployed as separate releases
+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.
+
+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"}}}'
+
+see `DefaultStorageClass`_
Install the Strimzi Kafka Operator
----------------------------------
============== =========== ======= ======== ======== ============= ========
Release Kubernetes Helm kubectl Docker Cert-Manager Strimzi
============== =========== ======= ======== ======== ============= ========
- Jakarta 1.22.4 3.6.3 1.22.4 20.10.x 1.8.0 0.28.0
Kohn 1.23.8 3.8.2 1.23.8 20.10.x 1.8.0 0.32.0
London 1.23.8 3.8.2 1.23.x 20.10.x 1.12.2 0.35.0
+ Montreal 1.23.8 3.10.2 1.23.x 20.10.x 1.12.2 0.35.0
============== =========== ======= ======== ======== ============= ========
.. table:: OOM Software Requirements (production)
Release Istio Gateway-API Keycloak
============== ====== ============ ==============
London 1.17.2 v0.6.2 19.0.3-legacy
+ Montreal 1.17.2 v0.6.2 19.0.3-legacy
============== ====== ============ ==============
.. table:: OOM Software Requirements (optional)
============== ================= ==========
Release Prometheus Stack K8ssandra
============== ================= ==========
- Jakarta 35.x
Kohn 35.x
London 45.x 1.6.1
+ Montreal 45.x 1.8.0
============== ================= ==========
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 }}
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 }}
subPath: application.properties
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 }}
lifecycle:
# wait for active requests (long-running tasks) to be finished
# Before the SIGTERM is invoked, Kubernetes exposes a preStop hook in the Pod.
{{- if .Values.affinity }}
affinity: {{ toYaml .Values.affinity | nindent 8 }}
{{- end }}
+ serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
volumes:
- name: localtime
hostPath:
{{- if .Values.affinity }}
affinity: {{ toYaml .Values.affinity | nindent 8 }}
{{- end }}
+ serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
volumes:
- name: localtime
hostPath:
{{- if .Values.affinity }}
affinity: {{ toYaml .Values.affinity | nindent 8 }}
{{- end }}
+ serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
volumes:
- name: localtime
hostPath:
{{- if .Values.affinity }}
affinity: {{ toYaml .Values.affinity | nindent 8 }}
{{- end }}
+ serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
volumes: {{ include "common.resources" . | nindent 10 }}
- name: localtime
hostPath:
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 }}
- port: {{ .Values.service.internalPort }}
nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }}
name: {{ .Values.service.portName }}
+ targetPort: {{ .Values.service.portName }}
- port: {{ .Values.service.internalPort2 }}
nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort2 }}
name: {{ .Values.service.portName2 }}
+ targetPort: {{ .Values.service.portName2 }}
- port: {{ .Values.service.internalPort3 }}
nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort3 }}
name: {{ .Values.service.portName3 }}
+ targetPort: {{ .Values.service.portName3 }}
{{- 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 }}
{{- end}}
selector:
app: {{ include "common.name" . }}
internalPort: 8449
portName2: tcp-5005
internalPort2: 5005
- portName3: http-aai-graphadmin
+ portName3: http-graphadmin
internalPort3: 8448
terminationGracePeriodSeconds: 120
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 }}
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" . }}
spec:
{{- if .Values.nodeSelector }}
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 }}
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 }}
subPath: application-keycloak.properties
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 }}
lifecycle:
# wait for active requests (long-running tasks) to be finished
# Before the SIGTERM is invoked, Kubernetes exposes a preStop hook in the Pod.
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 }}
{{ if eq .Values.service.type "NodePort" -}}
- port: {{ .Values.service.internalPort }}
nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }}
- name: {{ .Values.service.portName }}{{ (eq "true" (include "common.needTLS" .)) | ternary "s" "" }}
+ name: {{ .Values.service.portName }}
+ targetPort: {{ .Values.service.portName }}
- port: {{ .Values.service.internalPort2 }}
nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort2 }}
name: {{ .Values.service.portName2 }}
+ targetPort: {{ .Values.service.portName2 }}
- port: {{ .Values.service.internalPort3 }}
nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort3 }}
name: {{ .Values.service.portName3 }}
+ targetPort: {{ .Values.service.portName3 }}
{{- else -}}
- port: {{ .Values.service.internalPort }}
- name: {{ .Values.service.portName }}{{ (eq "true" (include "common.needTLS" .)) | ternary "s" "" }}
+ 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 }}
{{- end }}
selector:
app: {{ include "common.name" . }}
internalPort: 8447
portName2: tcp-5005
internalPort2: 5005
- portName3: http-aai-resources
+ portName3: http-resources
internalPort3: 8448
terminationGracePeriodSeconds: 120
sessionAffinity: None
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 }}
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 }}
subPath: application.properties
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 }}
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 }}
{{if eq .Values.service.type "NodePort" -}}
- port: {{ .Values.service.internalPort }}
nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }}
- name: {{ .Values.service.portName }}{{ (eq "true" (include "common.needTLS" .)) | ternary "s" "" }}
+ name: {{ .Values.service.portName }}
+ targetPort: {{ .Values.service.portName }}
- port: {{ .Values.service.internalPort2 }}
nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort2 }}
name: {{ .Values.service.portName2 }}
+ targetPort: {{ .Values.service.portName2 }}
{{- else -}}
- port: {{ .Values.service.internalPort }}
- name: {{ .Values.service.portName }}{{ (eq "true" (include "common.needTLS" .)) | ternary "s" "" }}
+ name: {{ .Values.service.portName }}
+ targetPort: {{ .Values.service.portName }}
- port: {{ .Values.service.internalPort2 }}
name: {{ .Values.service.portName2 }}
+ targetPort: {{ .Values.service.portName2 }}
{{- end }}
selector:
app: {{ include "common.name" . }}
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 }}
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 }}
subPath: application-keycloak.properties
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 }}
lifecycle:
# wait for active requests (long-running tasks) to be finished
# Before the SIGTERM is invoked, Kubernetes exposes a preStop hook in the Pod.
subPath: application.properties
# disable liveness probe when breakpoints set in debugger
# so K8s doesn't restart unresponsive container
+ serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
volumes:
- name: localtime
hostPath:
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 }}
{{if eq .Values.service.type "NodePort" -}}
- port: {{ .Values.service.internalPort }}
nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }}
- name: {{ .Values.service.portName }}{{ (eq "true" (include "common.needTLS" .)) | ternary "s" "" }}
+ name: {{ .Values.service.portName }}
+ targetPort: {{ .Values.service.portName }}
- port: {{ .Values.service.internalPort2 }}
nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort2 }}
name: {{ .Values.service.portName2 }}
+ targetPort: {{ .Values.service.portName2 }}
- port: {{ .Values.service.internalPort3 }}
nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort3 }}
name: {{ .Values.service.portName3 }}
+ targetPort: {{ .Values.service.portName3 }}
{{- else -}}
- port: {{ .Values.service.internalPort }}
- name: {{ .Values.service.portName }}{{ (eq "true" (include "common.needTLS" .)) | ternary "s" "" }}
+ 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 }}
{{- end }}
selector:
app: {{ include "common.name" . }}
internalPort: 8446
portName2: tcp-5005
internalPort2: 5005
- portName3: http-aai-traversal
+ portName3: http-traversal
internalPort3: 8448
terminationGracePeriodSeconds: 120
sessionAffinity: None
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 }}
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 }}
name: haproxy-cfg
ports:
- containerPort: {{ .Values.service.internalPort }}
+ name: {{ .Values.service.portName }}
- containerPort: {{ .Values.metricsService.internalPort }}
+ name: {{ .Values.metricsService.portName }}
# disable liveness probe when breakpoints set in debugger
# so K8s doesn't restart unresponsive container
{{- if eq .Values.liveness.enabled true }}
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 }}
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 }}
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 }}
metricsService:
type: ClusterIP
- portName: http-prometheus
+ portName: http-pro
externalPort: 8448
internalPort: 8448
enabled: true
cassandraVersion: 4.0.1
persistence:
- storageClassName: default
+ #storageClassName: default
size: 10Gi
config:
clusterName: cassandra
serverVersion: {{ .Values.k8ssandraOperator.cassandraVersion }}
storageConfig:
cassandraDataVolumeClaimSpec:
+ {{ if .Values.k8ssandraOperator.persistence.storageClassName -}}
storageClassName: {{ .Values.k8ssandraOperator.persistence.storageClassName }}
+ {{- end }}
accessModes:
- ReadWriteOnce
resources: