From 4b4373d6e961c3fe9aafa4ca072f7db69811ea93 Mon Sep 17 00:00:00 2001 From: Jerry Flood Date: Tue, 30 Apr 2019 15:30:04 -0400 Subject: Update CMSO OOM to use HTTPS and AAF Fixes OPTFRA-484 and OPTFRA-390 Issue-ID: OPTFRA-391 Change-Id: I2b65743e38464aac8dbc8cf81419e9ce36769b7d Signed-off-by: Jerry Flood --- .../resources/config/cadi.properties | 2 +- .../resources/config/optimizer.properties | 10 ++- .../oof-cmso-optimizer/templates/deployment.yaml | 29 ++++--- .../resources/config/cadi.properties | 2 +- .../resources/config/cmso.properties | 26 ++++--- .../oof-cmso-service/resources/config/mock.py | 83 +++++++++++++++++++++ .../resources/config/msosimulator.sh | 4 + .../resources/config/optimizer.properties | 6 +- .../resources/config/ticketmgt.properties | 8 +- .../oof-cmso-service/templates/deployment.yaml | 63 ++++++++++++++-- .../oof-cmso/charts/oof-cmso-service/values.yaml | 2 + .../resources/config/cadi.properties | 2 +- .../resources/config/ticketmgt.properties | 3 + .../oof-cmso-ticketmgt/templates/deployment.yaml | 20 ++++- .../oof-cmso/charts/oof-cmso-ticketmgt/values.yaml | 3 +- .../resources/config/cadi.properties | 2 +- .../resources/config/topology.properties | 3 + .../oof-cmso-topology/templates/deployment.yaml | 20 ++++- .../resources/certs/AAFUserRoles.properties | 1 + .../resources/certs/org.onap.oof.cred.props | 22 ++++++ .../oof-cmso/resources/certs/org.onap.oof.jks | Bin 0 -> 3711 bytes .../oof-cmso/resources/certs/org.onap.oof.keyfile | 27 +++++++ .../resources/certs/org.onap.oof.location.props | 20 +++++ .../oof-cmso/resources/certs/org.onap.oof.props | 26 +++++++ .../oof-cmso/resources/certs/truststoreONAPall.jks | Bin 0 -> 117990 bytes .../oof-cmso/resources/log/filebeat/filebeat.yml | 55 ++++++++++++++ .../oof/charts/oof-cmso/templates/configmap.yaml | 27 +++++++ .../oof/charts/oof-cmso/templates/secret.yaml | 27 +++++++ kubernetes/oof/charts/oof-cmso/values.yaml | 17 ++++- 29 files changed, 465 insertions(+), 45 deletions(-) create mode 100644 kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/resources/config/mock.py create mode 100644 kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/resources/config/msosimulator.sh create mode 100644 kubernetes/oof/charts/oof-cmso/resources/certs/AAFUserRoles.properties create mode 100644 kubernetes/oof/charts/oof-cmso/resources/certs/org.onap.oof.cred.props create mode 100644 kubernetes/oof/charts/oof-cmso/resources/certs/org.onap.oof.jks create mode 100644 kubernetes/oof/charts/oof-cmso/resources/certs/org.onap.oof.keyfile create mode 100644 kubernetes/oof/charts/oof-cmso/resources/certs/org.onap.oof.location.props create mode 100644 kubernetes/oof/charts/oof-cmso/resources/certs/org.onap.oof.props create mode 100644 kubernetes/oof/charts/oof-cmso/resources/certs/truststoreONAPall.jks create mode 100644 kubernetes/oof/charts/oof-cmso/resources/log/filebeat/filebeat.yml create mode 100644 kubernetes/oof/charts/oof-cmso/templates/configmap.yaml create mode 100644 kubernetes/oof/charts/oof-cmso/templates/secret.yaml (limited to 'kubernetes/oof') diff --git a/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-optimizer/resources/config/cadi.properties b/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-optimizer/resources/config/cadi.properties index 9a6b91c602..871341d1fa 100644 --- a/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-optimizer/resources/config/cadi.properties +++ b/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-optimizer/resources/config/cadi.properties @@ -17,5 +17,5 @@ # #------------------------------------------------------------------------------- cadi_loglevel=DEBUG -cadi_prop_files=src/main/resources/aaf/org.onap.oof.props +cadi_prop_files=/share/etc/certs/org.onap.oof.props diff --git a/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-optimizer/resources/config/optimizer.properties b/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-optimizer/resources/config/optimizer.properties index 83ed89a844..6b72dd4360 100644 --- a/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-optimizer/resources/config/optimizer.properties +++ b/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-optimizer/resources/config/optimizer.properties @@ -41,8 +41,8 @@ logging.level.org.hibernate=WARN #------------------------------------------------------------------------------- -cmso.topology.create.request.url=http://${TOPOLOGY_HOST}:${TOPOLOGY_PORT}/topology/v1/current -cmso.ticket.create.request.url=http://${TICKETMGT_HOST}:${TICKETMGT_PORT}/ticketmgt/v1/activetickets +cmso.topology.create.request.url=https://oof-cmso-topology:7998/topology/v1/current +cmso.ticket.create.request.url=https://oof-cmso-ticketmgt:7999/ticketmgt/v1/activetickets cmso.local.policy.folder=data/policies cmso.minizinc.command.exe=/mz-dist/bin/minizinc @@ -51,4 +51,8 @@ cmso.minizinc.command.timelimit=60000 cmso.minizinc.command.mzn=scripts/minizinc/generic_attributes.mzn mechid.user=oof@oof.onap.org -mechid.pass=changeit +mechid.pass=enc:vfxQdJ1mgdcI7S6SPrzNaw== + +cadi_loglevel=DEBUG +cadi_prop_files=/share/etc/certs/org.onap.oof.props +aaf.user.roles=/share/etc/certs/AAFUserRoles.properties \ No newline at end of file diff --git a/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-optimizer/templates/deployment.yaml b/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-optimizer/templates/deployment.yaml index 4e418bf756..e28dfca453 100644 --- a/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-optimizer/templates/deployment.yaml +++ b/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-optimizer/templates/deployment.yaml @@ -66,21 +66,13 @@ spec: volumeMounts: - name: {{ include "common.fullname" . }}-config mountPath: /share/etc/config - - name: {{ include "common.fullname" . }}-logs + - name: {{ include "common.fullname" . }}-logs mountPath: /share/logs containers: - name: {{ include "common.name" . }} image: "{{ include "common.repository" . }}/{{ .Values.image }}" imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} env: - - name: TOPOLOGY_HOST - value: {{ .Values.config.topology_host }}.{{.Release.Namespace}} - - name: TOPOLOGY_PORT - value: {{ .Values.config.topology_port | quote}} - - name: TICKETMGT_HOST - value: {{ .Values.config.ticketmgt_host }}.{{.Release.Namespace}} - - name: TICKETMGT_PORT - value: {{ .Values.config.ticketmgt_port | quote}} - name: DB_HOST value: {{ .Values.config.db_host }}.{{.Release.Namespace}} - name: DB_PORT @@ -94,6 +86,16 @@ spec: secretKeyRef: name: {{ .Release.Name}}-cmso-db key: db-root-password + - name: JAVA_TRUSTSTORE + value: /share/etc/certs/{{ .Values.global.truststoreFile }} + - name: SSL_KEYSTORE + value: /share/etc/certs/{{ .Values.global.keystoreFile }} + - name: JAVA_TRUSTSTORE_PASSWORD + value: {{ .Values.global.truststorePassword }} + - name: SSL_KEYSTORE_PASSWORD + value: {{ .Values.global.keystorePassword }} + - name: AUTHENTICATION + value: {{ .Values.global.authentication }} ports: - containerPort: {{ .Values.service.internalPort }} # disable liveness probe when breakpoints set in debugger @@ -116,7 +118,11 @@ spec: - name: {{ include "common.fullname" . }}-logs mountPath: /share/debug-logs - name: {{ include "common.fullname" . }}-config - mountPath: /share/etc/config + mountPath: /share/etc/config + - name: {{ include "common.fullname" . }}-certs + mountPath: /share/etc/certs + - name: {{ include "common.fullname" . }}-certs + mountPath: /opt/app/cmso/src/main/resources/aaf resources: {{ include "common.resources" . | indent 12 }} {{- if .Values.nodeSelector }} @@ -142,5 +148,8 @@ spec: path: liquibase.properties - name: {{ include "common.fullname" . }}-logs emptyDir: {} + - name: {{ include "common.fullname" . }}-certs + secret: + secretName: {{ .Release.Name }}-{{ .Values.global.commonConfigPrefix }}-certs imagePullSecrets: - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/resources/config/cadi.properties b/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/resources/config/cadi.properties index 9a6b91c602..871341d1fa 100644 --- a/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/resources/config/cadi.properties +++ b/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/resources/config/cadi.properties @@ -17,5 +17,5 @@ # #------------------------------------------------------------------------------- cadi_loglevel=DEBUG -cadi_prop_files=src/main/resources/aaf/org.onap.oof.props +cadi_prop_files=/share/etc/certs/org.onap.oof.props diff --git a/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/resources/config/cmso.properties b/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/resources/config/cmso.properties index ce94f573f6..c6c93eda9c 100644 --- a/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/resources/config/cmso.properties +++ b/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/resources/config/cmso.properties @@ -2,27 +2,27 @@ #------------------------------------------------------------------------------- # Copyright (c) 2017-2018 AT&T Intellectual Property. # Modifications Copyright (c) 2018 IBM. -# +# # 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. -# -# +# +# # 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. @@ -74,7 +74,7 @@ cmso.cm.polling.job.interval.ms=10000 # How many management cmso polling intervals to look ahead to dispatch # (To account for possible latency of the polling job) cmso.cm.polling.job.lookahead.intervals=5 -# Lead time before event time to enable dispatcher to +# Lead time before event time to enable dispatcher to # test that it is safe to dispatch (i.e. meeting reminder lead time) cmso.cm.dispatcher.lead.time.ms=5000 # Lead time to prepare and call VID to dispatch work to MSO @@ -93,11 +93,15 @@ so.polling.interval.ms=10000 #mso.pass=enc:bfodXf8qRfCqMvlxVBYNWQ== ## loopback settings -so.url=http://localhost:8080/cmso/v1/loopbacktest/onap/so/infra/orchestrationRequests/v7 +so.url=http://127.0.0.1:5000/onap/so/infra/orchestrationRequests/v7 so.user=oof@oof.onap.org -so.pass=changeit +so.pass=enc:vfxQdJ1mgdcI7S6SPrzNaw== mechid.user=oof@oof.onap.org -mechid.pass=changeit +mechid.pass=enc:vfxQdJ1mgdcI7S6SPrzNaw== cmso.dispatch.url=http://localhost:8089 + +cadi_loglevel=DEBUG +cadi_prop_files=/share/etc/certs/org.onap.oof.props +aaf.user.roles=/share/etc/certs/AAFUserRoles.properties diff --git a/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/resources/config/mock.py b/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/resources/config/mock.py new file mode 100644 index 0000000000..b678a4e8d4 --- /dev/null +++ b/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/resources/config/mock.py @@ -0,0 +1,83 @@ + # ------------------------------------------------------------------------- + # Copyright (c) 2019 AT&T 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. + # + # ------------------------------------------------------------------------- + # + +from flask import Flask +from flask import request +from flask import Response +from flask import json +from flask import send_from_directory +import requests +from threading import Thread +import time + +import os +import fnmatch +import re +import time +import datetime + +app = Flask(__name__) +ROOT_MOCK_DIR = os.path.dirname(os.path.abspath(__file__)) +DATA_DIR = os.path.join(ROOT_MOCK_DIR, "data") +global requestNum +requestNum = 1 + +######################################################################## +######################################################################## +@app.route('/onap/so/infra/orchestrationRequests/v7/schedule/', methods=['GET', 'POST']) +def soSchedule(VNFNAME): + if request.method == 'POST': + testid = request.headers.environ["HTTP_X_TRANSACTIONID"] + response = { + "status" : "202", + "entity" : { + "requestReferences" : { + "requestId" : "000001" + } + } + } + resp = Response(json.dumps(response), 200, mimetype='application/json') + return resp + + + else : + return "Helloooooo!!!!" + +######################################################################## +######################################################################## +@app.route('/onap/so/infra/orchestrationRequests/v7/', methods=['GET']) +def soStatus(REQUESTID): + response = {"request" : { "requestStatus" : { + "requestState" : "COMPLETE", + "statusMessage" : "Done.", + "percentProgress" : 100, + "finishTime" : "" + }}} + now = datetime.datetime.utcnow() + #response["finishTime"] = now.strftime("%Y-%m-%dT%H:%M:%SZ") + response["request"]["requestStatus"]["finishTime"] = now.strftime("%a, %d %b %Y %H:%M:%S GMT") + resp = Response(json.dumps(response), 200, mimetype='application/json') + + return resp + +######################################################################## +######################################################################## +if __name__ == "__main__": + app.run(host= '0.0.0.0',port=5000) + #app.run() + diff --git a/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/resources/config/msosimulator.sh b/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/resources/config/msosimulator.sh new file mode 100644 index 0000000000..c87a26bb7a --- /dev/null +++ b/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/resources/config/msosimulator.sh @@ -0,0 +1,4 @@ +#!/bin/sh +pip install flask +pip install requests +python /share/etc/config/mock.py diff --git a/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/resources/config/optimizer.properties b/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/resources/config/optimizer.properties index 498a1e5870..1e4a8417c4 100644 --- a/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/resources/config/optimizer.properties +++ b/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/resources/config/optimizer.properties @@ -29,6 +29,6 @@ # limitations under the License. #------------------------------------------------------------------------------- -cmso.optimizer.request.url=$http://${OPTIMIZER_HOST}:${OPTIMIZER_PORT}/optimizer/v1/optimize/schedule -cmso.optimizer.status.url=http://${OPTIMIZER_HOST}:${OPTIMIZER_PORT}/optimizer/v1/optimize/schedule -cmso.optimizer.health.url=http://${OPTIMIZER_HOST}:${OPTIMIZER_PORT}/optimizer/v1/health?checkInterfaces=true \ No newline at end of file +cmso.optimizer.request.url=https://oof-cmso-optimizer:7997/optimizer/v1/optimize/schedule +cmso.optimizer.status.url=https://oof-cmso-optimizer:7997/optimizer/v1/optimize/schedule +cmso.optimizer.health.url=https://oof-cmso-optimizer:7997/optimizer/v1/health?checkInterfaces=true \ No newline at end of file diff --git a/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/resources/config/ticketmgt.properties b/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/resources/config/ticketmgt.properties index bfdaec6b8d..bdf483d289 100644 --- a/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/resources/config/ticketmgt.properties +++ b/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/resources/config/ticketmgt.properties @@ -30,9 +30,9 @@ #------------------------------------------------------------------------------- tm.vnfs.per.ticket=1 -tm.getPath=http://localhost:8080/cmso/v1/tm/getChangeRecord -tm.createPath=http://localhost:8080/cmso/v1/tm/createChangeRecord -tm.closePath=http://localhost:8080/cmso/v1/tm/closeCancelChangeRecord -tm.updatePath=http://localhost:8080/cmso/v1/tm/updateChangeRecord +tm.getPath=http://localhost:8089/cmso/v1/tm/getChangeRecord +tm.createPath=http://localhost:8089/cmso/v1/tm/createChangeRecord +tm.closePath=http://localhost:8089/cmso/v1/tm/closeCancelChangeRecord +tm.updatePath=http://localhost:8089/cmso/v1/tm/updateChangeRecord tm.approvalStatus=Approved|Scheduled,Approved|Assigned tm.template.folder=data/templates/tm diff --git a/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/templates/deployment.yaml b/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/templates/deployment.yaml index 350708f078..b26f6dd6c0 100644 --- a/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/templates/deployment.yaml +++ b/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/templates/deployment.yaml @@ -66,9 +66,38 @@ spec: volumeMounts: - name: {{ include "common.fullname" . }}-config mountPath: /share/etc/config - - name: {{ include "common.fullname" . }}-logs + - name: {{ include "common.fullname" . }}-logs mountPath: /share/logs containers: + # side car containers + - name: filebeat-onap + image: "{{ .Values.global.loggingRepository }}/{{ .Values.global.loggingImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + volumeMounts: + - mountPath: /usr/share/filebeat/filebeat.yml + subPath: filebeat.yml + name: filebeat-conf + - mountPath: /var/log/onap + name: {{ include "common.fullname" . }}-logs + - mountPath: /usr/share/filebeat/data + name: {{ include "common.fullname" . }}-filebeat + resources: +{{ include "common.resources" . }} + - name: mso-simulator + image: "{{ .Values.global.pythonRepository }}/{{ .Values.global.pythonImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + volumeMounts: + - name: {{ include "common.fullname" . }}-config + mountPath: /share/etc/config + command: + - /bin/sh + args: + - -x + - /share/etc/config/msosimulator.sh + ports: + - containerPort: 5000 + resources: +{{ include "common.resources" . }} - name: {{ include "common.name" . }} image: "{{ include "common.repository" . }}/{{ .Values.image }}" imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} @@ -86,10 +115,16 @@ spec: secretKeyRef: name: {{ .Release.Name}}-cmso-db key: user-password - - name: OPTIMIZER_HOST - value: {{ .Values.config.optimizer_host }}.{{.Release.Namespace}} - - name: OPTIMIZER_PORT - value: {{ .Values.config.optimizer_port | quote}} + - name: JAVA_TRUSTSTORE + value: /share/etc/certs/{{ .Values.global.truststoreFile }} + - name: SSL_KEYSTORE + value: /share/etc/certs/{{ .Values.global.keystoreFile }} + - name: JAVA_TRUSTSTORE_PASSWORD + value: {{ .Values.global.truststorePassword }} + - name: SSL_KEYSTORE_PASSWORD + value: {{ .Values.global.keystorePassword }} + - name: AUTHENTICATION + value: {{ .Values.global.authentication }} ports: - containerPort: {{ .Values.service.internalPort }} # disable liveness probe when breakpoints set in debugger @@ -112,7 +147,11 @@ spec: - name: {{ include "common.fullname" . }}-logs mountPath: /share/debug-logs - name: {{ include "common.fullname" . }}-config - mountPath: /share/etc/config + mountPath: /share/etc/config + - name: {{ include "common.fullname" . }}-certs + mountPath: /share/etc/certs + - name: {{ include "common.fullname" . }}-certs + mountPath: /opt/app/cmso/src/main/resources/aaf resources: {{ include "common.resources" . | indent 12 }} {{- if .Values.nodeSelector }} @@ -140,7 +179,19 @@ spec: path: ticketmgt.properties - key: liquibase.properties path: liquibase.properties + - key: mock.py + path: mock.py + - key: msosimulator.sh + path: msosimulator.sh - name: {{ include "common.fullname" . }}-logs emptyDir: {} + - name: {{ include "common.fullname" . }}-filebeat + emptyDir: {} + - name: filebeat-conf + configMap: + name: {{ .Release.Name }}-cmso-filebeat-configmap + - name: {{ include "common.fullname" . }}-certs + secret: + secretName: {{ .Release.Name }}-{{ .Values.global.commonConfigPrefix }}-certs imagePullSecrets: - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/values.yaml b/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/values.yaml index 6df3049b1b..f4d3ffb8ff 100644 --- a/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/values.yaml +++ b/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/values.yaml @@ -19,6 +19,8 @@ global: # global defaults nodePortPrefix: 302 readinessRepository: oomk8s readinessImage: readiness-check:2.0.0 + pythonRepository: library + pythonImage: python:3.6-alpine subChartsOnly: enabled: true diff --git a/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-ticketmgt/resources/config/cadi.properties b/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-ticketmgt/resources/config/cadi.properties index 9a6b91c602..871341d1fa 100644 --- a/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-ticketmgt/resources/config/cadi.properties +++ b/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-ticketmgt/resources/config/cadi.properties @@ -17,5 +17,5 @@ # #------------------------------------------------------------------------------- cadi_loglevel=DEBUG -cadi_prop_files=src/main/resources/aaf/org.onap.oof.props +cadi_prop_files=/share/etc/certs/org.onap.oof.props diff --git a/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-ticketmgt/resources/config/ticketmgt.properties b/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-ticketmgt/resources/config/ticketmgt.properties index 5ca252f9bc..d687ab376d 100644 --- a/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-ticketmgt/resources/config/ticketmgt.properties +++ b/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-ticketmgt/resources/config/ticketmgt.properties @@ -28,3 +28,6 @@ # See the License for the specific language governing permissions and # limitations under the License. #------------------------------------------------------------------------------- +cadi_loglevel=DEBUG +cadi_prop_files=/share/etc/certs/org.onap.oof.props +aaf.user.roles=/share/etc/certs/AAFUserRoles.properties \ No newline at end of file diff --git a/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-ticketmgt/templates/deployment.yaml b/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-ticketmgt/templates/deployment.yaml index e01034e8d2..38a8c929d5 100644 --- a/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-ticketmgt/templates/deployment.yaml +++ b/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-ticketmgt/templates/deployment.yaml @@ -34,6 +34,17 @@ spec: - name: {{ include "common.name" . }} image: "{{ include "common.repository" . }}/{{ .Values.image }}" imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + env: + - name: JAVA_TRUSTSTORE + value: /share/etc/certs/{{ .Values.global.truststoreFile }} + - name: SSL_KEYSTORE + value: /share/etc/certs/{{ .Values.global.keystoreFile }} + - name: JAVA_TRUSTSTORE_PASSWORD + value: {{ .Values.global.truststorePassword }} + - name: SSL_KEYSTORE_PASSWORD + value: {{ .Values.global.keystorePassword }} + - name: AUTHENTICATION + value: proprietary-auth ports: - containerPort: {{ .Values.service.internalPort }} # disable liveness probe when breakpoints set in debugger @@ -56,7 +67,11 @@ spec: - name: {{ include "common.fullname" . }}-logs mountPath: /share/debug-logs - name: {{ include "common.fullname" . }}-config - mountPath: /share/etc/config + mountPath: /share/etc/config + - name: {{ include "common.fullname" . }}-certs + mountPath: /share/etc/certs + - name: {{ include "common.fullname" . }}-certs + mountPath: /opt/app/cmso/src/main/resources/aaf resources: {{ include "common.resources" . | indent 12 }} {{- if .Values.nodeSelector }} @@ -80,5 +95,8 @@ spec: path: cadi.properties - name: {{ include "common.fullname" . }}-logs emptyDir: {} + - name: {{ include "common.fullname" . }}-certs + secret: + secretName: {{ .Release.Name }}-{{ .Values.global.commonConfigPrefix }}-certs imagePullSecrets: - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-ticketmgt/values.yaml b/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-ticketmgt/values.yaml index f19b8e2b1b..7c687f521b 100644 --- a/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-ticketmgt/values.yaml +++ b/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-ticketmgt/values.yaml @@ -19,7 +19,8 @@ global: # global defaults nodePortPrefix: 302 readinessRepository: oomk8s readinessImage: readiness-check:2.0.0 - + authentication: proprietary-auth + subChartsOnly: enabled: true diff --git a/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-topology/resources/config/cadi.properties b/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-topology/resources/config/cadi.properties index 9a6b91c602..871341d1fa 100644 --- a/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-topology/resources/config/cadi.properties +++ b/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-topology/resources/config/cadi.properties @@ -17,5 +17,5 @@ # #------------------------------------------------------------------------------- cadi_loglevel=DEBUG -cadi_prop_files=src/main/resources/aaf/org.onap.oof.props +cadi_prop_files=/share/etc/certs/org.onap.oof.props diff --git a/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-topology/resources/config/topology.properties b/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-topology/resources/config/topology.properties index 5ca252f9bc..d687ab376d 100644 --- a/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-topology/resources/config/topology.properties +++ b/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-topology/resources/config/topology.properties @@ -28,3 +28,6 @@ # See the License for the specific language governing permissions and # limitations under the License. #------------------------------------------------------------------------------- +cadi_loglevel=DEBUG +cadi_prop_files=/share/etc/certs/org.onap.oof.props +aaf.user.roles=/share/etc/certs/AAFUserRoles.properties \ No newline at end of file diff --git a/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-topology/templates/deployment.yaml b/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-topology/templates/deployment.yaml index 02f398301f..2b36b296cd 100644 --- a/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-topology/templates/deployment.yaml +++ b/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-topology/templates/deployment.yaml @@ -34,6 +34,17 @@ spec: - name: {{ include "common.name" . }} image: "{{ include "common.repository" . }}/{{ .Values.image }}" imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + env: + - name: JAVA_TRUSTSTORE + value: /share/etc/certs/{{ .Values.global.truststoreFile }} + - name: SSL_KEYSTORE + value: /share/etc/certs/{{ .Values.global.keystoreFile }} + - name: JAVA_TRUSTSTORE_PASSWORD + value: {{ .Values.global.truststorePassword }} + - name: SSL_KEYSTORE_PASSWORD + value: {{ .Values.global.keystorePassword }} + - name: AUTHENTICATION + value: {{ .Values.global.authentication }} ports: - containerPort: {{ .Values.service.internalPort }} # disable liveness probe when breakpoints set in debugger @@ -56,7 +67,11 @@ spec: - name: {{ include "common.fullname" . }}-logs mountPath: /share/debug-logs - name: {{ include "common.fullname" . }}-config - mountPath: /share/etc/config + mountPath: /share/etc/config + - name: {{ include "common.fullname" . }}-certs + mountPath: /share/etc/certs + - name: {{ include "common.fullname" . }}-certs + mountPath: /opt/app/cmso/src/main/resources/aaf resources: {{ include "common.resources" . | indent 12 }} {{- if .Values.nodeSelector }} @@ -80,5 +95,8 @@ spec: path: topology.properties - name: {{ include "common.fullname" . }}-logs emptyDir: {} + - name: {{ include "common.fullname" . }}-certs + secret: + secretName: {{ .Release.Name }}-{{ .Values.global.commonConfigPrefix }}-certs imagePullSecrets: - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/oof/charts/oof-cmso/resources/certs/AAFUserRoles.properties b/kubernetes/oof/charts/oof-cmso/resources/certs/AAFUserRoles.properties new file mode 100644 index 0000000000..e7fc221a20 --- /dev/null +++ b/kubernetes/oof/charts/oof-cmso/resources/certs/AAFUserRoles.properties @@ -0,0 +1 @@ +/**=org.onap.oof.access|*|get ALL \ No newline at end of file diff --git a/kubernetes/oof/charts/oof-cmso/resources/certs/org.onap.oof.cred.props b/kubernetes/oof/charts/oof-cmso/resources/certs/org.onap.oof.cred.props new file mode 100644 index 0000000000..b56c500ffd --- /dev/null +++ b/kubernetes/oof/charts/oof-cmso/resources/certs/org.onap.oof.cred.props @@ -0,0 +1,22 @@ + # ------------------------------------------------------------------------- + # Copyright (c) 2019 AT&T 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. + # + # ------------------------------------------------------------------------- + # + +aaf_id=oof@oof.onap.org +aaf_password=demo123456! +cadi_keyfile=/share/etc/certs/org.onap.oof.keyfile +cadi_truststore=/share/etc/certs//truststoreONAPall.jks diff --git a/kubernetes/oof/charts/oof-cmso/resources/certs/org.onap.oof.jks b/kubernetes/oof/charts/oof-cmso/resources/certs/org.onap.oof.jks new file mode 100644 index 0000000000..535abaa92b Binary files /dev/null and b/kubernetes/oof/charts/oof-cmso/resources/certs/org.onap.oof.jks differ diff --git a/kubernetes/oof/charts/oof-cmso/resources/certs/org.onap.oof.keyfile b/kubernetes/oof/charts/oof-cmso/resources/certs/org.onap.oof.keyfile new file mode 100644 index 0000000000..f85a567981 --- /dev/null +++ b/kubernetes/oof/charts/oof-cmso/resources/certs/org.onap.oof.keyfile @@ -0,0 +1,27 @@ +liD-IR8Y1MHqPDTUqq3AaTtqnWn5jCpfIRBlyi6xY4A0fbQz8ZPlTZPHkshRt0dHdST3R7TIvTyQ +JpTCeBNBu2df3vBbUzsN0rIpPG9TGjzmE7cRu4V4kfefSqsIj-S7OTAaWaWpwGWJYLLCB2sQALkS +f68VWdupUEw3g9jqCU1QzjKOnLGvhlp6Qrc1xG4Z5Ar8WERw-C3DqTWUKANoEvjWkvH2rAywzj93 +pmspvd5fQfH1rp1ACNvnPrRb_oYNfwPrNpE7Sb4LvM1muoiKMDF64IDO0TkxhjHZ9wpJgVsnowby +qmokqf39dMRRk3S1IEpOiBGyLS_885JDj_XJKYRQsjvkTzjpFJ7wE2-HDZEVWCITvtS9-Xorm5TI +3iU4rjMDew5fkBnjoKuSOS7Lksva4ouZOCiUkDos1jAJ5XMDEQm4BcPHtcW6PpC602-qRcgnNjjP +wOPdF7hCm27ZTai3lAtNGByR7oBr9r5Uma-soORFvg8drV8Rgh0lax-poFVhoEH7RhKPIzYpSco9 +jnpURzi_epTjAhjjup-erTv2GAIllKsSEHZLbfsFWlNUZTOx58PSB0jBN5m_8HxTyNm0zsm0Cb7U +KsjPduQ5ZblsfRIJwqpOBXoof7WerKReMZSOdgjZUNueiuEImVH9_SYOdKZhkluSi4yfEtme7CCP +kZ2JhdiT5km3SeonalhU2MUsx60krxyQ1mnjI4jS9QagUME4mujdvM_L7mtjcPZVSfXUn49whakE +J-NQV6q2iZgN2IxsT_uCnlZYwnE5i-IbQkQAEu13m6ETsMmf0cwPnKaSwRhb8G48EkJhTL-GP9Z0 +-EsIKT7lQt7kfX-mmNoEirTg9gQAaN3uxLmdHvXpeJdlETnnaLYYJJ3h-SL0e_5Yz2SpdsEwZ3Bk +PtR-QvlYKDhG1nhPOna65ctCzn81PZOUP3lsO6MSTOK6D6Taxfh1TYEBAvzCP0BfFBodw4lSglFP +I5IfdiJmomTGARa36nC_O5YzH_jBWLQrgd2gxI5H5bB-5zqzu79SGX9o2_LRVY_LVV0BmI3xSYOI +vziYYC1XyTY6blfdiOM5a5KjraErxSTEFZVFrsx4OQ_dLA0woVtixawrIy1rgfQr49U1oIRe8BgN +j3eis_UQAbPbmdbEe1qtXnvi6T7trHskzt6K-vTgo5ITJkr-F2Sds_QgNdaFBGuES6X5RwRGlbHT +Tl_M8Ja_1K-RMNKJRssoRTKstpwnrhk9IcoSwYcLykbDLgeC0mhSMHOOuWv1RGRaZdzObc5YA1eB +idQmzy5xAHzNxPHHrB-fpjFJRYv_QZY9qZcGvP58d6bHO0upxbj-BBt9zfc7Qt0JLU6EAdYbW5TI +2v4JImikrx6KvtoK8vcjJMTDAanTVB31J65tat0rq9wYKxUdjBJLzkT3psYs_DRtYQc0i02YTD7t +dWya0-3p1Yrt0em3XGb8JAh2PA3BsQKmvKAOc054wf_B8n8saxSFw1WQL30vU5c4-Z_p53HfaUYd +Qg7DZskzgwBRy48sLJNCrn81RtxXfQP1XtPEZs-AAlTUslHoUdoQ1cwrYEgkNT1cjk6sLI_oKSK- +dDICBnlYLrZRBS3sH8K38WaIh1WRY6vbGVDs1tUectUpng_-Khavd0Crw7D_CE6T7Rnfcn0pnTV- +HW1PIXejFsONQn-2c3a9HZ-v6Hg4JL6UWm-qgBPC5118ymO0LfmrviAFAC6Wt3WFiNzrvx9Jggus +lE0qvLVfkQVZXAy-hSPHlYZmtxk5voVsf60qPoDN2-NdpWz62M9PrXd_A03YGxzt0G6J4VXExRES +xqLeGNGB496AfX_vEub97sR8xcbbUXsyt12uVnygifGyND60coikaKrMktv2OLOLEl8AudLp0ZNA +oOoYJZqfUnQqaLt0dNmNa5OtzYjf7f6bYX0V8XLTHlFqZ6QzqYGFMPNhDYjqtet6d--Q8t7_5S5C +RfXP8Wh8CjbEh2_rsr9rvy1nhM_Cptxc0BFXcS5Dt_R4vjd2G4B_LEC4Hy1s_rZThzUVxRCl \ No newline at end of file diff --git a/kubernetes/oof/charts/oof-cmso/resources/certs/org.onap.oof.location.props b/kubernetes/oof/charts/oof-cmso/resources/certs/org.onap.oof.location.props new file mode 100644 index 0000000000..7e154c4665 --- /dev/null +++ b/kubernetes/oof/charts/oof-cmso/resources/certs/org.onap.oof.location.props @@ -0,0 +1,20 @@ + # ------------------------------------------------------------------------- + # Copyright (c) 2019 AT&T 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. + # + # ------------------------------------------------------------------------- + # + +cadi_latitude=0.00 +cadi_longitude=0.00 diff --git a/kubernetes/oof/charts/oof-cmso/resources/certs/org.onap.oof.props b/kubernetes/oof/charts/oof-cmso/resources/certs/org.onap.oof.props new file mode 100644 index 0000000000..c96e7f7b04 --- /dev/null +++ b/kubernetes/oof/charts/oof-cmso/resources/certs/org.onap.oof.props @@ -0,0 +1,26 @@ + # ------------------------------------------------------------------------- + # Copyright (c) 2019 AT&T 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. + # + # ------------------------------------------------------------------------- + # + +aaf_id=oof@oof.onap.org +aaf_locate_url=https://aaf-locate:8095 +aaf_url=https://AAF_LOCATE_URL/AAF_NS.service:2.1 +cadi_etc_dir=/share/etc/certs/ +cadi_latitude=0.00 +cadi_longitude=0.00 +cadi_prop_files=/share/etc/certs/org.onap.oof.location.props:/share/etc/certs/org.onap.oof.cred.props +cm_url=https://AAF_LOCATE_URL/AAF_NS.cm:2.1 diff --git a/kubernetes/oof/charts/oof-cmso/resources/certs/truststoreONAPall.jks b/kubernetes/oof/charts/oof-cmso/resources/certs/truststoreONAPall.jks new file mode 100644 index 0000000000..ff844b109d Binary files /dev/null and b/kubernetes/oof/charts/oof-cmso/resources/certs/truststoreONAPall.jks differ diff --git a/kubernetes/oof/charts/oof-cmso/resources/log/filebeat/filebeat.yml b/kubernetes/oof/charts/oof-cmso/resources/log/filebeat/filebeat.yml new file mode 100644 index 0000000000..50586783e9 --- /dev/null +++ b/kubernetes/oof/charts/oof-cmso/resources/log/filebeat/filebeat.yml @@ -0,0 +1,55 @@ +# 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. + +filebeat.prospectors: +#it is mandatory, in our case it's log +- input_type: log + #This is the canolical path as mentioned in logback.xml, *.* means it will monitor all files in the directory. + paths: + - /var/log/onap/*/*/*/*.log + - /var/log/onap/*/*/*.log + - /var/log/onap/*/*.log + #Files older than this should be ignored.In our case it will be 48 hours i.e. 2 days. It is a helping flag for clean_inactive + ignore_older: 48h + # Remove the registry entry for a file that is more than the specified time. In our case it will be 96 hours, i.e. 4 days. It will help to keep registry records with in limit + clean_inactive: 96h + + +# Name of the registry file. If a relative path is used, it is considered relative to the +# data path. Else full qualified file name. +#filebeat.registry_file: ${path.data}/registry + + +output.logstash: + #List of logstash server ip addresses with port number. + #But, in our case, this will be the loadbalancer IP address. + #For the below property to work the loadbalancer or logstash should expose 5044 port to listen the filebeat events or port in the property should be changed appropriately. + hosts: ["{{.Values.config.log.logstashServiceName}}.{{.Release.Namespace}}:{{.Values.config.log.logstashPort}}"] + #If enable will do load balancing among availabe Logstash, automatically. + loadbalance: true + + #The list of root certificates for server verifications. + #If certificate_authorities is empty or not set, the trusted + #certificate authorities of the host system are used. + #ssl.certificate_authorities: $ssl.certificate_authorities + + #The path to the certificate for SSL client authentication. If the certificate is not specified, + #client authentication is not available. + #ssl.certificate: $ssl.certificate + + #The client certificate key used for client authentication. + #ssl.key: $ssl.key + + #The passphrase used to decrypt an encrypted key stored in the configured key file + #ssl.key_passphrase: $ssl.key_passphrase diff --git a/kubernetes/oof/charts/oof-cmso/templates/configmap.yaml b/kubernetes/oof/charts/oof-cmso/templates/configmap.yaml new file mode 100644 index 0000000000..f906fac23e --- /dev/null +++ b/kubernetes/oof/charts/oof-cmso/templates/configmap.yaml @@ -0,0 +1,27 @@ +# Copyright © 2017 Amdocs, Bell Canada +# Modifications Copyright © 2018 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. + +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ .Release.Name }}-cmso-filebeat-configmap + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +data: +{{ tpl (.Files.Glob "resources/log/filebeat/*").AsConfig . | indent 2 }} diff --git a/kubernetes/oof/charts/oof-cmso/templates/secret.yaml b/kubernetes/oof/charts/oof-cmso/templates/secret.yaml new file mode 100644 index 0000000000..a742914c49 --- /dev/null +++ b/kubernetes/oof/charts/oof-cmso/templates/secret.yaml @@ -0,0 +1,27 @@ +# 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. + +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "common.fullname" . }}-certs + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +type: Opaque +data: +{{ tpl (.Files.Glob "resources/certs/*").AsSecrets . | indent 2 }} diff --git a/kubernetes/oof/charts/oof-cmso/values.yaml b/kubernetes/oof/charts/oof-cmso/values.yaml index 3c5edb3754..c4985df5a1 100644 --- a/kubernetes/oof/charts/oof-cmso/values.yaml +++ b/kubernetes/oof/charts/oof-cmso/values.yaml @@ -32,4 +32,19 @@ mariadb-galera: mysqlDatabase: cmso externalConfig: | [mysqld] - lower_case_table_names = 1 \ No newline at end of file + lower_case_table_names = 1 + +global: + commonConfigPrefix: "oof-cmso" + truststoreFile: "truststoreONAPall.jks" + keystoreFile: "org.onap.oof.jks" + loggingRepository: docker.elastic.co + loggingImage: beats/filebeat:5.5.0 + keystorePassword: N{$tSp*U)RQzjqE;)%4z;Pv[ + truststorePassword: + authentication: aaf-auth + +config: + log: + logstashServiceName: log-ls + logstashPort: 5044 \ No newline at end of file -- cgit 1.2.3-korg