diff options
32 files changed, 553 insertions, 109 deletions
diff --git a/kubernetes/aai/charts/aai-cassandra/templates/statefulset.yaml b/kubernetes/aai/charts/aai-cassandra/templates/statefulset.yaml index aa3482d293..92f05dda7e 100644 --- a/kubernetes/aai/charts/aai-cassandra/templates/statefulset.yaml +++ b/kubernetes/aai/charts/aai-cassandra/templates/statefulset.yaml @@ -77,7 +77,7 @@ spec: fieldPath: status.podIP volumeMounts: - name: cassandra-data - mountPath: /var/lib/cassandra/data + mountPath: /var/lib/cassandra resources: {{ toYaml .Values.resources | indent 10 }} {{- if .Values.nodeSelector }} diff --git a/kubernetes/aai/charts/aai-cassandra/values.yaml b/kubernetes/aai/charts/aai-cassandra/values.yaml index 884bc396a8..baa87c2a72 100644 --- a/kubernetes/aai/charts/aai-cassandra/values.yaml +++ b/kubernetes/aai/charts/aai-cassandra/values.yaml @@ -62,7 +62,7 @@ ingress: enabled: false persistence: - enabled: false + enabled: true ## A manually managed Persistent Volume and Claim ## Requires persistence.enabled: true diff --git a/kubernetes/appc/templates/pv.yaml b/kubernetes/appc/templates/pv.yaml new file mode 100644 index 0000000000..10214097e3 --- /dev/null +++ b/kubernetes/appc/templates/pv.yaml @@ -0,0 +1,130 @@ +{{/* +# Copyright © 2018 Amdocs, AT&T, Bell Canada +# # +# # 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 and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}} +{{ $pvNum := default 1 .Values.replicaCount | int }} +kind: PersistentVolume +apiVersion: v1 +metadata: + name: {{ include "common.fullname" . }}-data0 + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.fullname" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" + name: {{ include "common.fullname" . }} +spec: + capacity: + storage: {{ .Values.persistence.size}} + accessModes: + - {{ .Values.persistence.accessMode }} + storageClassName: "{{ include "common.fullname" . }}-data" + persistentVolumeReclaimPolicy: {{ .Values.persistence.volumeReclaimPolicy }} + hostPath: + path: {{ .Values.global.persistence.mountPath | default .Values.persistence.mountPath }}/{{ .Release.Name }}/{{ .Values.persistence.mountSubPath }}0 +{{ if gt $pvNum 1 }} +--- +kind: PersistentVolume +apiVersion: v1 +metadata: + name: {{ include "common.fullname" . }}-data1 + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.fullname" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" + name: {{ include "common.fullname" . }} +spec: + capacity: + storage: {{ .Values.persistence.size}} + accessModes: + - {{ .Values.persistence.accessMode }} + storageClassName: "{{ include "common.fullname" . }}-data" + persistentVolumeReclaimPolicy: {{ .Values.persistence.volumeReclaimPolicy }} + hostPath: + path: {{ .Values.global.persistence.mountPath | default .Values.persistence.mountPath }}/{{ .Release.Name }}/{{ .Values.persistence.mountSubPath }}1 +{{ end }} +{{ if gt $pvNum 2 }} +--- +kind: PersistentVolume +apiVersion: v1 +metadata: + name: {{ include "common.fullname" . }}-data2 + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.fullname" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" + name: {{ include "common.fullname" . }} +spec: + capacity: + storage: {{ .Values.persistence.size}} + accessModes: + - {{ .Values.persistence.accessMode }} + storageClassName: "{{ include "common.fullname" . }}-data" + persistentVolumeReclaimPolicy: {{ .Values.persistence.volumeReclaimPolicy }} + hostPath: + path: {{ .Values.global.persistence.mountPath | default .Values.persistence.mountPath }}/{{ .Release.Name }}/{{ .Values.persistence.mountSubPath }}2 +{{ end }} +{{ if gt $pvNum 3 }} +--- +kind: PersistentVolume +apiVersion: v1 +metadata: + name: {{ include "common.fullname" . }}-data3 + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.fullname" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" + name: {{ include "common.fullname" . }} +spec: + capacity: + storage: {{ .Values.persistence.size}} + accessModes: + - {{ .Values.persistence.accessMode }} + storageClassName: "{{ include "common.fullname" . }}-data" + persistentVolumeReclaimPolicy: {{ .Values.persistence.volumeReclaimPolicy }} + hostPath: + path: {{ .Values.global.persistence.mountPath | default .Values.persistence.mountPath }}/{{ .Release.Name }}/{{ .Values.persistence.mountSubPath }}3 +{{ end }} +{{ if gt $pvNum 4 }} +--- +kind: PersistentVolume +apiVersion: v1 +metadata: + name: {{ include "common.fullname" . }}-data4 + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.fullname" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" + name: {{ include "common.fullname" . }} +spec: + capacity: + storage: {{ .Values.persistence.size}} + accessModes: + - {{ .Values.persistence.accessMode }} + storageClassName: "{{ include "common.fullname" . }}-data" + persistentVolumeReclaimPolicy: {{ .Values.persistence.volumeReclaimPolicy }} + hostPath: + path: {{ .Values.global.persistence.mountPath | default .Values.persistence.mountPath }}/{{ .Release.Name }}/{{ .Values.persistence.mountSubPath }}4 +{{ end }} +{{- end -}} diff --git a/kubernetes/appc/templates/statefulset.yaml b/kubernetes/appc/templates/statefulset.yaml index 5da50a5fdf..e81c50d27f 100644 --- a/kubernetes/appc/templates/statefulset.yaml +++ b/kubernetes/appc/templates/statefulset.yaml @@ -18,6 +18,8 @@ spec: app: {{ include "common.name" . }} release: {{ .Release.Name }} spec: + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" initContainers: - command: - /root/ready.py @@ -112,6 +114,8 @@ spec: - mountPath: /opt/onap/ccsdk/bin/installSdncDb.sh name: onap-sdnc-bin subPath: installSdncDb.sh + - mountPath: {{ .Values.persistence.mdsalPath }} + name: {{ include "common.fullname" . }}-data - mountPath: /var/log/onap name: logs - mountPath: /opt/opendaylight/current/etc/org.ops4j.pax.logging.cfg @@ -182,5 +186,19 @@ spec: configMap: name: {{ include "common.fullname" . }}-onap-sdnc-bin defaultMode: 0755 - imagePullSecrets: - - name: "{{ include "common.namespace" . }}-docker-registry-key" +{{ if not .Values.persistence.enabled }} + - name: {{ include "common.fullname" . }}-data + emptyDir: {} +{{ else }} + volumeClaimTemplates: + - metadata: + name: {{ include "common.fullname" . }}-data + labels: + name: {{ include "common.fullname" . }} + spec: + accessModes: [ {{ .Values.persistence.accessMode }} ] + storageClassName: {{ include "common.fullname" . }}-data + resources: + requests: + storage: {{ .Values.persistence.size }} +{{ end }} diff --git a/kubernetes/appc/values.yaml b/kubernetes/appc/values.yaml index a9f67a9375..962ecfdd27 100644 --- a/kubernetes/appc/values.yaml +++ b/kubernetes/appc/values.yaml @@ -97,6 +97,28 @@ service: nodePort2: 31 clusterPort: 2550 +## Persist data to a persitent volume +persistence: + enabled: true + + ## A manually managed Persistent Volume and Claim + ## Requires persistence.enabled: true + ## If defined, PVC must be created manually before volume will be bound + # existingClaim: + volumeReclaimPolicy: Retain + + ## database data Persistent Volume Storage Class + ## If defined, storageClassName: <storageClass> + ## If set to "-", storageClassName: "", which disables dynamic provisioning + ## If undefined (the default) or set to null, no storageClassName spec is + ## set, choosing the default provisioner. (gp2 on AWS, standard on + ## GKE, AWS & OpenStack) + accessMode: ReadWriteOnce + size: 1Gi + mountPath: /dockerdata-nfs + mountSubPath: appc/mdsal + mdsalPath: /opt/opendaylight/current/daexim + ingress: enabled: false diff --git a/kubernetes/clamp/values.yaml b/kubernetes/clamp/values.yaml index 827b5d99cc..8b782f9b05 100644 --- a/kubernetes/clamp/values.yaml +++ b/kubernetes/clamp/values.yaml @@ -42,7 +42,7 @@ config: dataRootDir: /dockerdata-nfs springApplicationJson: > { - "spring.datasource.cldsdb.url": "jdbc:mariadb:sequential://mariadb:3306/cldsdb4?autoReconnect=true&connectTimeout=10000&socketTimeout=10000&retriesAllDown=3", + "spring.datasource.cldsdb.url": "jdbc:mariadb:sequential://clampdb:3306/cldsdb4?autoReconnect=true&connectTimeout=10000&socketTimeout=10000&retriesAllDown=3", "clamp.config.sdc.catalog.url": "https://sdc-be:8443/sdc/v1/catalog/", "clamp.config.sdc.hostUrl": "https://sdc-be:8443/", "clamp.config.sdc.serviceUrl": "https://sdc-be:8443/sdc/v1/catalog/services", diff --git a/kubernetes/multicloud/charts/multicloud-ocata/templates/NOTES.txt b/kubernetes/multicloud/charts/multicloud-ocata/templates/NOTES.txt new file mode 100644 index 0000000000..befedf4578 --- /dev/null +++ b/kubernetes/multicloud/charts/multicloud-ocata/templates/NOTES.txt @@ -0,0 +1,34 @@ +# Copyright © 2018 Amdocs, AT&T, Bell Canada +# +# 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. + + +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range .Values.ingress.hosts }} + http://{{ . }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ include "common.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "common.name" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ include "common.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get svc -w {{ include "common.name" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.name" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') + echo http://$SERVICE_IP:{{ .Values.service.externalPort }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ include "common.namespace" . }} -l "app={{ include "common.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl port-forward $POD_NAME 8080:{{ .Values.service.internalPort }} +{{- end }} diff --git a/kubernetes/multicloud/charts/multicloud-ocata/values.yaml b/kubernetes/multicloud/charts/multicloud-ocata/values.yaml index db0397561a..a1f72eabcc 100644 --- a/kubernetes/multicloud/charts/multicloud-ocata/values.yaml +++ b/kubernetes/multicloud/charts/multicloud-ocata/values.yaml @@ -60,6 +60,9 @@ service: internalPort: 9006 nodePort: 93 +ingress: + enabled: false + 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 diff --git a/kubernetes/multicloud/charts/multicloud-vio/templates/NOTES.txt b/kubernetes/multicloud/charts/multicloud-vio/templates/NOTES.txt new file mode 100644 index 0000000000..befedf4578 --- /dev/null +++ b/kubernetes/multicloud/charts/multicloud-vio/templates/NOTES.txt @@ -0,0 +1,34 @@ +# Copyright © 2018 Amdocs, AT&T, Bell Canada +# +# 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. + + +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range .Values.ingress.hosts }} + http://{{ . }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ include "common.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "common.name" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ include "common.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get svc -w {{ include "common.name" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.name" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') + echo http://$SERVICE_IP:{{ .Values.service.externalPort }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ include "common.namespace" . }} -l "app={{ include "common.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl port-forward $POD_NAME 8080:{{ .Values.service.internalPort }} +{{- end }} diff --git a/kubernetes/multicloud/charts/multicloud-vio/values.yaml b/kubernetes/multicloud/charts/multicloud-vio/values.yaml index 187f2b9562..4fea235b5b 100644 --- a/kubernetes/multicloud/charts/multicloud-vio/values.yaml +++ b/kubernetes/multicloud/charts/multicloud-vio/values.yaml @@ -60,6 +60,9 @@ service: internalPort: 9004 nodePort: 92 +ingress: + enabled: false + 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 diff --git a/kubernetes/multicloud/charts/multicloud-windriver/templates/NOTES.txt b/kubernetes/multicloud/charts/multicloud-windriver/templates/NOTES.txt new file mode 100644 index 0000000000..befedf4578 --- /dev/null +++ b/kubernetes/multicloud/charts/multicloud-windriver/templates/NOTES.txt @@ -0,0 +1,34 @@ +# Copyright © 2018 Amdocs, AT&T, Bell Canada +# +# 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. + + +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range .Values.ingress.hosts }} + http://{{ . }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ include "common.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "common.name" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ include "common.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get svc -w {{ include "common.name" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.name" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') + echo http://$SERVICE_IP:{{ .Values.service.externalPort }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ include "common.namespace" . }} -l "app={{ include "common.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl port-forward $POD_NAME 8080:{{ .Values.service.internalPort }} +{{- end }} diff --git a/kubernetes/multicloud/charts/multicloud-windriver/values.yaml b/kubernetes/multicloud/charts/multicloud-windriver/values.yaml index 1126284f11..919289c65d 100644 --- a/kubernetes/multicloud/charts/multicloud-windriver/values.yaml +++ b/kubernetes/multicloud/charts/multicloud-windriver/values.yaml @@ -60,6 +60,9 @@ liveness: failureThreshold: 5 enabled: true +ingress: + enabled: false + 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 diff --git a/kubernetes/multicloud/resources/config/provider-plugin.json b/kubernetes/multicloud/resources/config/provider-plugin.json new file mode 100644 index 0000000000..0ac4701aa9 --- /dev/null +++ b/kubernetes/multicloud/resources/config/provider-plugin.json @@ -0,0 +1,29 @@ +{ + "openstack": { + "vim_type": "openstack", + "versions": { + "titanium_cloud": { + "version": "titanium_cloud", + "extra_info_hint": "", + "provider_plugin": "multicloud-titanium_cloud" + }, + "ocata": { + "version": "ocata", + "extra_info_hint": "", + "provider_plugin": "multicloud-ocata" + } + }, + "provider_plugin": "multicloud-ocata" + }, + "vmware": { + "vim_type": "vmware", + "versions": { + "4.0": { + "version": "4.0", + "extra_info_hint": "", + "provider_plugin": "multicloud-vio" + } + }, + "provider_plugin": "multicloud-vio" + } +}
\ No newline at end of file diff --git a/kubernetes/multicloud/templates/NOTES.txt b/kubernetes/multicloud/templates/NOTES.txt new file mode 100644 index 0000000000..befedf4578 --- /dev/null +++ b/kubernetes/multicloud/templates/NOTES.txt @@ -0,0 +1,34 @@ +# Copyright © 2018 Amdocs, AT&T, Bell Canada +# +# 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. + + +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range .Values.ingress.hosts }} + http://{{ . }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ include "common.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "common.name" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ include "common.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get svc -w {{ include "common.name" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.name" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') + echo http://$SERVICE_IP:{{ .Values.service.externalPort }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ include "common.namespace" . }} -l "app={{ include "common.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl port-forward $POD_NAME 8080:{{ .Values.service.internalPort }} +{{- end }} diff --git a/kubernetes/multicloud/templates/configmap.yaml b/kubernetes/multicloud/templates/configmap.yaml index e420fb99f7..dc356a3d9a 100644 --- a/kubernetes/multicloud/templates/configmap.yaml +++ b/kubernetes/multicloud/templates/configmap.yaml @@ -29,3 +29,11 @@ metadata: namespace: {{ include "common.namespace" . }} data: {{ tpl (.Files.Glob "resources/config/log/framework/*").AsConfig . | indent 2 }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-provider-plugin-configmap + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/provider-plugin.json").AsConfig . | indent 2 }} diff --git a/kubernetes/multicloud/templates/deployment.yaml b/kubernetes/multicloud/templates/deployment.yaml index f42d5f3f8f..3a0671c911 100644 --- a/kubernetes/multicloud/templates/deployment.yaml +++ b/kubernetes/multicloud/templates/deployment.yaml @@ -61,6 +61,9 @@ spec: - mountPath: /opt/multivimbroker/multivimbroker/pub/config/log.yml name: framework-logconfig subPath: log.yml + - mountPath: /opt/multivimbroker/multivimbroker/pub/config/provider-plugin.json + name: provider-plugin + subPath: provider-plugin.json ports: - containerPort: {{ .Values.service.internalPort }} # disable liveness probe when breakpoints set in debugger @@ -104,6 +107,9 @@ spec: volumes: - name: framework-log emptyDir: {} + - name: provider-plugin + configMap: + name: {{ include "common.fullname" . }}-provider-plugin-configmap - name: framework-data-filebeat emptyDir: {} - name: filebeat-conf diff --git a/kubernetes/portal/charts/portal-app/resources/config/deliveries/properties/ONAPPORTAL/fusion.properties b/kubernetes/portal/charts/portal-app/resources/config/deliveries/properties/ONAPPORTAL/fusion.properties index 876c5c7b9a..9c6fc5104f 100755 --- a/kubernetes/portal/charts/portal-app/resources/config/deliveries/properties/ONAPPORTAL/fusion.properties +++ b/kubernetes/portal/charts/portal-app/resources/config/deliveries/properties/ONAPPORTAL/fusion.properties @@ -4,7 +4,7 @@ # validator settings #default_error_message = Default error message -login_url_no_ret_val = http://portal.api.simpledemo.onap.org:8989/ONAPPORTAL/login.htm +login_url_no_ret_val = http://{{.Values.global.portalHostName}}:{{.Values.global.portalPort}}/ONAPPORTAL/login.htm user_attribute_name = user diff --git a/kubernetes/portal/charts/portal-app/resources/config/deliveries/properties/ONAPPORTAL/openid-connect.properties b/kubernetes/portal/charts/portal-app/resources/config/deliveries/properties/ONAPPORTAL/openid-connect.properties index 2a33551933..f99b2234ea 100755 --- a/kubernetes/portal/charts/portal-app/resources/config/deliveries/properties/ONAPPORTAL/openid-connect.properties +++ b/kubernetes/portal/charts/portal-app/resources/config/deliveries/properties/ONAPPORTAL/openid-connect.properties @@ -1,3 +1,3 @@ -authentication_server_url = http://portal.api.simpledemo.onap.org:8383/openid-connect-server-webapp/ -ecomp_openid_connect_client = http://portal.api.simpledemo.onap.org:8989/ONAPPORTAL/openid_connect_login -ecomp_redirect_uri = http://portal.api.simpledemo.onap.org:8989/ONAPPORTAL/welcome.htm +authentication_server_url = http://{{.Values.global.portalHostName}}:8383/openid-connect-server-webapp/ +ecomp_openid_connect_client = http://{{.Values.global.portalHostName}}:{{.Values.global.portalPort}}/ONAPPORTAL/openid_connect_login +ecomp_redirect_uri = http://{{.Values.global.portalHostName}}:{{.Values.global.portalPort}}/ONAPPORTAL/welcome.htm diff --git a/kubernetes/portal/charts/portal-app/resources/config/deliveries/properties/ONAPPORTAL/portal.properties b/kubernetes/portal/charts/portal-app/resources/config/deliveries/properties/ONAPPORTAL/portal.properties index 6157f29356..7561e3acf6 100755 --- a/kubernetes/portal/charts/portal-app/resources/config/deliveries/properties/ONAPPORTAL/portal.properties +++ b/kubernetes/portal/charts/portal-app/resources/config/deliveries/properties/ONAPPORTAL/portal.properties @@ -5,10 +5,10 @@ max.idle.time = 5 user.attribute.name = user_attribute # for single sign on -ecomp_redirect_url = http://portal.api.simpledemo.onap.org:8989/ONAPPORTAL/login.htm +ecomp_redirect_url = http://{{.Values.global.portalHostName}}:{{.Values.global.portalPort}}/ONAPPORTAL/login.htm # URL of the ECOMP Portal REST API -ecomp_rest_url = http://portal.api.simpledemo.onap.org:8989/ONAPPORTAL/auxapi +ecomp_rest_url = http://{{.Values.global.portalHostName}}:{{.Values.global.portalPort}}/ONAPPORTAL/auxapi ueb_listeners_enable = true diff --git a/kubernetes/portal/charts/portal-app/resources/config/deliveries/properties/ONAPPORTAL/system.properties b/kubernetes/portal/charts/portal-app/resources/config/deliveries/properties/ONAPPORTAL/system.properties index 47c73cd6a1..109d8d24d2 100755 --- a/kubernetes/portal/charts/portal-app/resources/config/deliveries/properties/ONAPPORTAL/system.properties +++ b/kubernetes/portal/charts/portal-app/resources/config/deliveries/properties/ONAPPORTAL/system.properties @@ -44,7 +44,7 @@ log_cron = 0 * * * * ? * sessiontimeout_feed_cron = 0 0/5 * * * ? * #Front end URL -frontend_url = http://portal.api.simpledemo.onap.org:8989/ONAPPORTAL/applicationsHome +frontend_url = http://{{.Values.global.portalHostName}}:{{.Values.global.portalPort}}/ONAPPORTAL/applicationsHome # An Unqiue 128-bit value defined to indentify a specific version of @@ -70,7 +70,7 @@ online_user_update_rate = 30 online_user_update_duration = 300 #authenticate user server -authenticate_user_server=http://portal.api.simpledemo.onap.org:8383/openid-connect-server-webapp/allUsers +authenticate_user_server=http://{{.Values.global.portalHostName}}:8383/openid-connect-server-webapp/allUsers #window width threshold to collapse left/right menu when page onload window_width_threshold_left_menu = 1400 diff --git a/kubernetes/portal/charts/portal-app/templates/service.yaml b/kubernetes/portal/charts/portal-app/templates/service.yaml index f9339e671a..4ccf2b02b8 100644 --- a/kubernetes/portal/charts/portal-app/templates/service.yaml +++ b/kubernetes/portal/charts/portal-app/templates/service.yaml @@ -29,14 +29,14 @@ metadata: "version": "v2", "url": "/", "protocol": "REST" - "port": "8989", + "port": "{{ .Values.service.externalPort }}", "visualRange":"1" } ]' spec: type: {{ .Values.service.type }} ports: - {{if eq .Values.service.type "NodePort" -}} + {{- if or (eq .Values.service.type "NodePort") (eq .Values.service.type "LoadBalancer") }} - port: {{ .Values.service.externalPort }} targetPort: {{ .Values.service.internalPort }} nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} @@ -59,7 +59,7 @@ spec: - port: {{ .Values.service.externalPort3 }} targetPort: {{ .Values.service.internalPort3 }} name: {{ .Values.service.portName }}3 - {{- end}} + {{- end }} selector: app: {{ include "common.name" . }} release: {{ .Release.Name }} diff --git a/kubernetes/portal/charts/portal-app/values.yaml b/kubernetes/portal/charts/portal-app/values.yaml index b0ea028f6f..657fa18039 100644 --- a/kubernetes/portal/charts/portal-app/values.yaml +++ b/kubernetes/portal/charts/portal-app/values.yaml @@ -31,9 +31,6 @@ repository: nexus3.onap.org:10001 image: onap/portal-app:2.1-STAGING-latest pullPolicy: Always -# flag to enable debugging - application support required -debugEnabled: false - # default number of instances replicaCount: 1 @@ -54,7 +51,7 @@ readiness: periodSeconds: 10 service: - type: NodePort + type: LoadBalancer name: portal-app portName: portal-app externalPort: 8989 diff --git a/kubernetes/portal/charts/portal-mariadb/resources/config/mariadb/oom_updates.sql b/kubernetes/portal/charts/portal-mariadb/resources/config/mariadb/oom_updates.sql index 0163d317bb..f6bd05f614 100644 --- a/kubernetes/portal/charts/portal-mariadb/resources/config/mariadb/oom_updates.sql +++ b/kubernetes/portal/charts/portal-mariadb/resources/config/mariadb/oom_updates.sql @@ -5,20 +5,20 @@ Any updates required by OOM to the portaldb are made here. while the OOM K8s version has these service split up. */ -- app_url is the FE, app_rest_endpoint is the BE ---portal-sdk => doesnt have a node port so this won't work -update fn_app set app_url = 'http://portal-sdk.simpledemo.onap.org:8990/ONAPPORTALSDK/welcome.htm', app_rest_endpoint = 'http://portal-sdk:8990/ONAPPORTALSDK/api/v2' where app_name = 'xDemo App'; ---dmaap-bc => the dmaap-bc chart actually opens 8080 and 8443, not 8989. the chart isnt merged yet either. confirm the service name after bc chart merge -update fn_app set app_url = 'http://dmaap-bc.simpledemo.onap.org:8989/ECOMPDBCAPP/dbc#/dmaap', app_rest_endpoint = 'http://dmaap-bc:8989/ECOMPDBCAPP/api/v2' where app_name = 'DMaaP Bus Ctrl'; +--portal-sdk => TODO: doesn't open a node port yet +update fn_app set app_url = 'http://{{.Values.config.portalSdkHostName}}:{{.Values.config.portalSdkPort}}/ONAPPORTALSDK/welcome.htm', app_rest_endpoint = 'http://portal-sdk:8990/ONAPPORTALSDK/api/v2' where app_name = 'xDemo App'; +--dmaap-bc => the dmaap-bc doesn't open a node port.. +update fn_app set app_url = 'http://{{.Values.config.dmaapBcHostName}}:{{.Values.config.dmaapBcPort}}/ECOMPDBCAPP/dbc#/dmaap', app_rest_endpoint = 'http://dmaap-bc:8989/ECOMPDBCAPP/api/v2' where app_name = 'DMaaP Bus Ctrl'; --sdc-be => 8443:30204, 8080:30205 --sdc-fe => 8181:30206, 9443:30207 -update fn_app set app_url = 'http://sdc.api.fe.simpledemo.onap.org:8181/sdc1/portal', app_rest_endpoint = 'http://sdc-be:8080/api/v2' where app_name = 'SDC'; +update fn_app set app_url = 'http://{{.Values.config.sdcFeHostName}}:{{.Values.config.sdcFePort}}/sdc1/portal', app_rest_endpoint = 'http://sdc-be:8080/api/v2' where app_name = 'SDC'; --pap => 8443:30219 -update fn_app set app_url = 'http://policy.api.simpledemo.onap.org:8443/onap/policy', app_rest_endpoint = 'http://pap:8443/onap/api/v2' where app_name = 'Policy'; +update fn_app set app_url = 'http://{{.Values.config.papHostName}}:{{.Values.config.papPort}}/onap/policy', app_rest_endpoint = 'http://pap:8443/onap/api/v2' where app_name = 'Policy'; --vid => 8080:30200 -update fn_app set app_url = 'http://vid.api.simpledemo.onap.org:8080/vid/welcome.htm', app_rest_endpoint = 'http://vid:8080/vid/api/v2' where app_name = 'Virtual Infrastructure Deployment'; ---sparky => sparky doesn't open a node port.. -update fn_app set app_url = 'http://aai.api.sparky.simpledemo.onap.org:8080/services/aai/webapp/index.html#/viewInspect', app_rest_endpoint = 'http://aai-sparky-be.{{.Release.Namespace}}:9517/api/v2' where app_name = 'A&AI UI'; +update fn_app set app_url = 'http://{{.Values.config.vidHostName}}:{{.Values.config.vidPort}}/vid/welcome.htm', app_rest_endpoint = 'http://vid:8080/vid/api/v2' where app_name = 'Virtual Infrastructure Deployment'; +--sparky => TODO: sparky doesn't open a node port yet +update fn_app set app_url = 'http://{{.Values.config.aaiSparkyHostName}}:{{.Values.config.aaiSparkyPort}}/services/aai/webapp/index.html#/viewInspect', app_rest_endpoint = 'http://aai-sparky-be.{{.Release.Namespace}}:9517/api/v2' where app_name = 'A&AI UI'; --cli => 8080:30260 -update fn_app set app_url = 'http://cli.api.simpledemo.onap.org:8080/', app_type = 1 where app_name = 'CLI'; +update fn_app set app_url = 'http://{{.Values.config.cliHostName}}:{{.Values.config.cliPort}}/', app_type = 1 where app_name = 'CLI'; --msb-discovery => 10081:30281 this is clearly incorrect -update fn_app set app_url = 'http://msb.api.discovery.simpledemo.onap.org:8080/iui/microservices/default.html' where app_name = 'MSB';
\ No newline at end of file +update fn_app set app_url = 'http://{{.Values.config.msbDiscoveryHostName}}:{{.Values.config.msbDiscoveryPort}}/iui/microservices/default.html' where app_name = 'MSB';
\ No newline at end of file diff --git a/kubernetes/portal/charts/portal-mariadb/values.yaml b/kubernetes/portal/charts/portal-mariadb/values.yaml index 8118db330f..7d9b82a629 100644 --- a/kubernetes/portal/charts/portal-mariadb/values.yaml +++ b/kubernetes/portal/charts/portal-mariadb/values.yaml @@ -36,7 +36,38 @@ config: mariadbRootPassword: Aa123456 #The directory where sql files are found in the projects gerrit repo. sqlSourceDirectory: portal/deliveries - + # sdc frontend assignment for port 8181 + sdcFePort: "30206" + # application's front end hostname. Must be resolvable on the client side environment + sdcFeHostName: "sdc.api.fe.simpledemo.onap.org" + # policy pap ui assignment for port 8443 + papPort: "30219" + # application's front end hostname. Must be resolvable on the client side environment + papHostName: "policy.api.simpledemo.onap.org" + # vid ui assignment for port 8080 + vidPort: "30200" + # application's front end hostname. Must be resolvable on the client side environment + vidHostName: "vid.api.simpledemo.onap.org" + # aai sparky ui assignment for port 8080 + aaiSparkyPort: "" # TODO: populate with + # application's front end hostname. Must be resolvable on the client side environment + aaiSparkyHostName: "aai.api.sparky.simpledemo.onap.org" + # cli ui assignment for port 8080 + cliPort: "30260" + # application's front end hostname. Must be resolvable on the client side environment + cliHostName: "cli.api.simpledemo.onap.org" + # portal sdk (demo app) ui assignment for port 8990 + portalSdkPort: "" # TODO: populate with port + # application's front end hostname. Must be resolvable on the client side environment + portalSdkHostName: "portal-sdk.simpledemo.onap.org" + # dmaap bus controller ui assignment for port ? + dmaapBcPort: "" # TODO: populate with + # application's front end hostname. Must be resolvable on the client side environment + dmaapBcHostName: "dmaap-bc.simpledemo.onap.org" + # msb discovery ui assignment for port ? + msbDiscoveryPort: "30281" + # application's front end hostname. Must be resolvable on the client side environment + msbDiscoveryHostName: "msb.api.discovery.simpledemo.onap.org" # default number of instances replicaCount: 1 diff --git a/kubernetes/portal/charts/portal-sdk/resources/config/deliveries/properties/ONAPPORTALSDK/portal.properties b/kubernetes/portal/charts/portal-sdk/resources/config/deliveries/properties/ONAPPORTALSDK/portal.properties index 2b199cca5c..f161609087 100755 --- a/kubernetes/portal/charts/portal-sdk/resources/config/deliveries/properties/ONAPPORTALSDK/portal.properties +++ b/kubernetes/portal/charts/portal-sdk/resources/config/deliveries/properties/ONAPPORTALSDK/portal.properties @@ -20,11 +20,11 @@ use_rest_for_functional_menu=true portal.api.impl.class = org.onap.portalapp.service.OnBoardingApiServiceImpl # CSP Global Log On for single sign on -ecomp_redirect_url = http://portal.api.simpledemo.onap.org:8989/ONAPPORTAL/login.htm +ecomp_redirect_url = http://{{.Values.global.portalHostName}}:{{.Values.global.portalPort}}/ONAPPORTAL/login.htm # URL of the ECOMP Portal REST API -ecomp_rest_url = http://portal.api.simpledemo.onap.org:8989/ONAPPORTAL/auxapi +ecomp_rest_url = http://{{.Values.global.portalHostName}}:{{.Values.global.portalPort}}/ONAPPORTAL/auxapi # Applications do not need to run a UEB listener in 1610. ueb_listeners_enable = false diff --git a/kubernetes/portal/charts/portal-sdk/resources/config/deliveries/properties/ONAPPORTALSDK/system.properties b/kubernetes/portal/charts/portal-sdk/resources/config/deliveries/properties/ONAPPORTALSDK/system.properties index 531c96cccc..2d92cd3b66 100755 --- a/kubernetes/portal/charts/portal-sdk/resources/config/deliveries/properties/ONAPPORTALSDK/system.properties +++ b/kubernetes/portal/charts/portal-sdk/resources/config/deliveries/properties/ONAPPORTALSDK/system.properties @@ -62,7 +62,7 @@ guard_notebook_url= #authenticate user server #TODO: what is this URL supposed to be pointing to? Nothing in portal opens 8383 -authenticate_user_server=http://portal.api.simpledemo.onap.org:8383/openid-connect-server-webapp/allUsers +authenticate_user_server=http://{{.Values.global.portalHostName}}:8383/openid-connect-server-webapp/allUsers #cookie domain cookie_domain = onap.org diff --git a/kubernetes/portal/charts/portal-widget/resources/config/deliveries/properties/ONAPWIDGETMS/application.properties b/kubernetes/portal/charts/portal-widget/resources/config/deliveries/properties/ONAPWIDGETMS/application.properties index 547a882c98..738834902c 100644 --- a/kubernetes/portal/charts/portal-widget/resources/config/deliveries/properties/ONAPWIDGETMS/application.properties +++ b/kubernetes/portal/charts/portal-widget/resources/config/deliveries/properties/ONAPWIDGETMS/application.properties @@ -19,7 +19,7 @@ security.user.name=widget_user security.user.password=ENC(IjywcRnI9+nuVEh9+OFFiRWAjBT1n718) initialization.default.widgets=true -initialization.widgetData.url=http://portal.api.simpledemo.onap.org:8989/ONAPPORTAL/commonWidgets +initialization.widgetData.url=http://{{.Values.global.portalHostName}}:{{.Values.global.portalPort}}/ONAPPORTAL/commonWidgets ## Account Basic Authentication Properties account.user.name=portal diff --git a/kubernetes/portal/launch-onap-portal.sh b/kubernetes/portal/launch-onap-portal.sh deleted file mode 100755 index d9f64c121b..0000000000 --- a/kubernetes/portal/launch-onap-portal.sh +++ /dev/null @@ -1,70 +0,0 @@ -#!/bin/bash - -usage () { echo "Usage : $0 <namespace> <helm release name>"; } - -READY_JSONPATH='{range .items[*]}{@.metadata.name}:{range @.status.conditions[*]}{@.type}={@.status};{end}{end}' - -NAMESPACE=$1 -RELEASE_NAME=$2 - -if [ ! "$NAMESPACE" ] || [ ! "$RELEASE_NAME" ] -then - usage - exit 1 -fi - -PORTAL_POD_NAME=`kubectl get pods --namespace $NAMESPACE --selector=app=portal-app,release=$RELEASE_NAME \ --o jsonpath='{.items[*].metadata.name}' -o jsonpath="$READY_JSONPATH" | grep "Ready=True"|awk -F: '{print $1}' ` -SDC_POD_NAME=`kubectl get pods --namespace $NAMESPACE --selector=app=sdc-fe,release=$RELEASE_NAME \ --o jsonpath='{.items[*].metadata.name}' -o jsonpath="$READY_JSONPATH" | grep "Ready=True" |awk -F: '{print $1}'` -VID_POD_NAME=`kubectl get pods --namespace $NAMESPACE --selector=app=vid,release=$RELEASE_NAME \ --o jsonpath='{.items[*].metadata.name}' -o jsonpath="$READY_JSONPATH" | grep "Ready=True" |awk -F: '{print $1}'` -POLICY_POD_NAME=`kubectl get pods --namespace $NAMESPACE --selector=app=pap,release=$RELEASE_NAME \ --o jsonpath='{.items[*].metadata.name}' -o jsonpath="$READY_JSONPATH" | grep "Ready=True" |awk -F: '{print $1}'` -PORTALSDK_POD_NAME=`kubectl get pods --namespace $NAMESPACE --selector=app=portal-sdk,release=$RELEASE_NAME \ --o jsonpath='{.items[*].metadata.name}' -o jsonpath="$READY_JSONPATH" | grep "Ready=True" |awk -F: '{print $1}'` - -#TODO: Add more as testing progresses -[[ -z "$PORTAL_POD_NAME" ]] && { echo "WARNING: portal-app is not running in your Kubernetes cluster"; } -[[ -z "$SDC_POD_NAME" ]] && { echo "WARNING: sdc-fe is not running in your Kubernetes cluster"; } -[[ -z "$VID_POD_NAME" ]] && { echo "WARNING: vid is not running in your Kubernetes cluster"; } -[[ -z "$POLICY_POD_NAME" ]] && { echo "WARNING: pap is not running in your Kubernetes cluster"; } -[[ -z "$PORTALSDK_POD_NAME" ]] && { echo "WARNING: portal-sdk is not running in your Kubernetes cluster"; } - -if [ ! -z "$PORTAL_POD_NAME" ] -then - kubectl -n $NAMESPACE port-forward "$PORTAL_POD_NAME" 8989:8080 & - PORTAL_PID=$! -fi - -if [ ! -z "$VID_POD_NAME" ] -then - kubectl -n $NAMESPACE port-forward "$VID_POD_NAME" 8080:8080 & - VID_PID=$! -fi - -if [ ! -z "$SDC_POD_NAME" ] -then - kubectl -n $NAMESPACE port-forward "$SDC_POD_NAME" 8181:8181 & - SDC_PID=$! -fi - -if [ ! -z "$POLICY_POD_NAME" ] -then - kubectl -n $NAMESPACE port-forward "$POLICY_POD_NAME" 8443:8443 & - POLICY_PID=$! -fi - -if [ ! -z "$PORTALSDK_POD_NAME" ] -then - kubectl -n $NAMESPACE port-forward "$PORTALSDK_POD_NAME" 8990:8080 & - PORTALSDK_PID=$! -fi - -trap "{ kill -9 $PORTAL_PID $VID_PID $SDC_PID $POLICY_PID $PORTALSDK_PID; exit 0; }" INT -echo -e $'Press Ctrl+C to exit...\n' - -while : -do - sleep 60 -done
\ No newline at end of file diff --git a/kubernetes/portal/values.yaml b/kubernetes/portal/values.yaml index 949efad31b..ebbfbc38e1 100644 --- a/kubernetes/portal/values.yaml +++ b/kubernetes/portal/values.yaml @@ -15,6 +15,11 @@ global: env: tomcatDir: "/opt/apache-tomcat-8.0.37" + # portal frontend port + portalPort: "8989" + # application's front end hostname. Must be resolvable on the client side environment + portalHostName: "portal.api.simpledemo.onap.org" + config: logstashServiceName: log-ls logstashPort: 5044 diff --git a/kubernetes/sdnc/templates/pv.yaml b/kubernetes/sdnc/templates/pv.yaml new file mode 100644 index 0000000000..e20e2818a3 --- /dev/null +++ b/kubernetes/sdnc/templates/pv.yaml @@ -0,0 +1,84 @@ +{{/* +# Copyright © 2018 Amdocs, AT&T, Bell Canada +# # +# # 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 and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}} +{{ $pvNum := default 1 .Values.replicaCount | int }} +kind: PersistentVolume +apiVersion: v1 +metadata: + name: {{ include "common.fullname" . }}-data0 + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.fullname" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" + name: {{ include "common.fullname" . }} +spec: + capacity: + storage: {{ .Values.persistence.size}} + accessModes: + - {{ .Values.persistence.accessMode }} + storageClassName: "{{ include "common.fullname" . }}-data" + persistentVolumeReclaimPolicy: {{ .Values.persistence.volumeReclaimPolicy }} + hostPath: + path: {{ .Values.global.persistence.mountPath | default .Values.persistence.mountPath }}/{{ .Release.Name }}/{{ .Values.persistence.mountSubPath }}0 +{{ if gt $pvNum 1 }} +--- +kind: PersistentVolume +apiVersion: v1 +metadata: + name: {{ include "common.fullname" . }}-data1 + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.fullname" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" + name: {{ include "common.fullname" . }} +spec: + capacity: + storage: {{ .Values.persistence.size}} + accessModes: + - {{ .Values.persistence.accessMode }} + storageClassName: "{{ include "common.fullname" . }}-data" + persistentVolumeReclaimPolicy: {{ .Values.persistence.volumeReclaimPolicy }} + hostPath: + path: {{ .Values.global.persistence.mountPath | default .Values.persistence.mountPath }}/{{ .Release.Name }}/{{ .Values.persistence.mountSubPath }}1 +{{ end }} +{{ if gt $pvNum 2 }} +--- +kind: PersistentVolume +apiVersion: v1 +metadata: + name: {{ include "common.fullname" . }}-data2 + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.fullname" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" + name: {{ include "common.fullname" . }} +spec: + capacity: + storage: {{ .Values.persistence.size}} + accessModes: + - {{ .Values.persistence.accessMode }} + storageClassName: "{{ include "common.fullname" . }}-data" + persistentVolumeReclaimPolicy: {{ .Values.persistence.volumeReclaimPolicy }} + hostPath: + path: {{ .Values.global.persistence.mountPath | default .Values.persistence.mountPath }}/{{ .Release.Name }}/{{ .Values.persistence.mountSubPath }}2 +{{ end }} +{{- end -}}
\ No newline at end of file diff --git a/kubernetes/sdnc/templates/statefulset.yaml b/kubernetes/sdnc/templates/statefulset.yaml index 55eaf2b4d0..ccf283ff4c 100644 --- a/kubernetes/sdnc/templates/statefulset.yaml +++ b/kubernetes/sdnc/templates/statefulset.yaml @@ -102,6 +102,8 @@ spec: - mountPath: /opt/onap/sdnc/svclogic/config/svclogic.properties name: onap-sdnc-svclogic-config subPath: svclogic.properties + - mountPath: {{ .Values.persistence.mdsalPath }} + name: {{ include "common.fullname" . }}-data - mountPath: /var/log/onap name: logs resources: @@ -127,6 +129,8 @@ spec: name: logs - mountPath: /usr/share/filebeat/data name: data-filebeat + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" volumes: - name: localtime hostPath: @@ -183,6 +187,19 @@ spec: - key: svclogic.properties path: svclogic.properties mode: 0644 - - imagePullSecrets: - - name: "{{ include "common.namespace" . }}-docker-registry-key" + {{ if not .Values.persistence.enabled }} + - name: {{ include "common.fullname" . }}-data + emptyDir: {} + {{ else }} + volumeClaimTemplates: + - metadata: + name: {{ include "common.fullname" . }}-data + labels: + name: {{ include "common.fullname" . }} + spec: + accessModes: [ {{ .Values.persistence.accessMode }} ] + storageClassName: {{ include "common.fullname" . }}-data + resources: + requests: + storage: {{ .Values.persistence.size }} + {{ end }}
\ No newline at end of file diff --git a/kubernetes/sdnc/values.yaml b/kubernetes/sdnc/values.yaml index e3cd8ae4ed..2603cd9fca 100644 --- a/kubernetes/sdnc/values.yaml +++ b/kubernetes/sdnc/values.yaml @@ -142,6 +142,28 @@ service: geoNodePort5: 65 geoNodePort6: 66 +## Persist data to a persitent volume +persistence: + enabled: true + + ## A manually managed Persistent Volume and Claim + ## Requires persistence.enabled: true + ## If defined, PVC must be created manually before volume will be bound + # existingClaim: + volumeReclaimPolicy: Retain + + ## database data Persistent Volume Storage Class + ## If defined, storageClassName: <storageClass> + ## If set to "-", storageClassName: "", which disables dynamic provisioning + ## If undefined (the default) or set to null, no storageClassName spec is + ## set, choosing the default provisioner. (gp2 on AWS, standard on + ## GKE, AWS & OpenStack) + accessMode: ReadWriteOnce + size: 1Gi + mountPath: /dockerdata-nfs + mountSubPath: sdnc/mdsal + mdsalPath: /opt/opendaylight/current/daexim + ingress: enabled: false |