From a1b6b0e69832048ced833960ea0bf7fb1454dc92 Mon Sep 17 00:00:00 2001 From: Steve Alphonse Siani Date: Fri, 25 Jan 2019 15:23:58 -0500 Subject: Create Helm chart for BlueprintsProcessor Change-Id: I9d832dd125b895199950bfba8162ea2cc86d9d7c Issue-ID: CCSDK-952 Signed-off-by: Steve Alphonse Siani --- kubernetes/common/blueprints-processor/Chart.yaml | 18 +++ .../common/blueprints-processor/requirements.yaml | 21 ++++ .../resources/config/application.properties | 34 ++++++ .../resources/config/logback.xml | 44 +++++++ .../blueprints-processor/templates/configmap.yaml | 21 ++++ .../blueprints-processor/templates/deployment.yaml | 109 ++++++++++++++++++ .../blueprints-processor/templates/secrets.yaml | 27 +++++ .../blueprints-processor/templates/service.yaml | 45 ++++++++ kubernetes/common/blueprints-processor/values.yaml | 126 +++++++++++++++++++++ 9 files changed, 445 insertions(+) create mode 100755 kubernetes/common/blueprints-processor/Chart.yaml create mode 100755 kubernetes/common/blueprints-processor/requirements.yaml create mode 100755 kubernetes/common/blueprints-processor/resources/config/application.properties create mode 100755 kubernetes/common/blueprints-processor/resources/config/logback.xml create mode 100755 kubernetes/common/blueprints-processor/templates/configmap.yaml create mode 100755 kubernetes/common/blueprints-processor/templates/deployment.yaml create mode 100755 kubernetes/common/blueprints-processor/templates/secrets.yaml create mode 100755 kubernetes/common/blueprints-processor/templates/service.yaml create mode 100755 kubernetes/common/blueprints-processor/values.yaml (limited to 'kubernetes/common') diff --git a/kubernetes/common/blueprints-processor/Chart.yaml b/kubernetes/common/blueprints-processor/Chart.yaml new file mode 100755 index 0000000000..a10c688fb2 --- /dev/null +++ b/kubernetes/common/blueprints-processor/Chart.yaml @@ -0,0 +1,18 @@ +# Copyright (c) 2019 IBM, 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. + +apiVersion: v1 +description: Blueprints Processor Micro Service +name: blueprints-processor +version: 3.0.0 \ No newline at end of file diff --git a/kubernetes/common/blueprints-processor/requirements.yaml b/kubernetes/common/blueprints-processor/requirements.yaml new file mode 100755 index 0000000000..6f520322f5 --- /dev/null +++ b/kubernetes/common/blueprints-processor/requirements.yaml @@ -0,0 +1,21 @@ +# Copyright (c) 2019 IBM, 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. + +dependencies: + - name: mariadb-galera + version: ~3.0.0 + repository: file://../mariadb-galera/ + - name: common + version: ~3.0.0 + repository: '@local' \ No newline at end of file diff --git a/kubernetes/common/blueprints-processor/resources/config/application.properties b/kubernetes/common/blueprints-processor/resources/config/application.properties new file mode 100755 index 0000000000..9d1c957b8f --- /dev/null +++ b/kubernetes/common/blueprints-processor/resources/config/application.properties @@ -0,0 +1,34 @@ +# Copyright (c) 2019 IBM, 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. +#logging.level.web=DEBUG +appName={{.Values.config.applicationName}} +ms_name={{.Values.config.msName}} +appVersion={{.Values.config.bundleVersion}} +blueprintsprocessor.grpcEnable={{.Values.config.grpcEnabled}} +blueprintsprocessor.httpPort={{.Values.service.http.internalPort}} +blueprintsprocessor.grpcPort={{.Values.service.grpc.internalPort}} +#Blueprint Processor File Execution and Handling Properties +blueprintsprocessor.blueprintDeployPath=/opt/app/onap/blueprints/deploy +blueprintsprocessor.blueprintArchivePath=/opt/app/onap/blueprints/archive +#Primary Database Configuration +blueprintsprocessor.db.primary.url=jdbc:mysql://blueprints-processor-db:3306/sdnctl +blueprintsprocessor.db.primary.username=sdnctl +blueprintsprocessor.db.primary.password=sdnctl +blueprintsprocessor.db.primary.driverClassName=org.mariadb.jdbc.Driver +blueprintsprocessor.db.primary.hibernateHbm2ddlAuto=update +blueprintsprocessor.db.primary.hibernateDDLAuto=update +blueprintsprocessor.db.primary.hibernateNamingStrategy=org.hibernate.cfg.ImprovedNamingStrategy +blueprintsprocessor.db.primary.hibernateDialect=org.hibernate.dialect.MySQL5InnoDBDialect +# Web server config +server.port=8080 \ No newline at end of file diff --git a/kubernetes/common/blueprints-processor/resources/config/logback.xml b/kubernetes/common/blueprints-processor/resources/config/logback.xml new file mode 100755 index 0000000000..b73db7145f --- /dev/null +++ b/kubernetes/common/blueprints-processor/resources/config/logback.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + ${defaultPattern} + + + + + + + + + + + + + + + diff --git a/kubernetes/common/blueprints-processor/templates/configmap.yaml b/kubernetes/common/blueprints-processor/templates/configmap.yaml new file mode 100755 index 0000000000..873acee237 --- /dev/null +++ b/kubernetes/common/blueprints-processor/templates/configmap.yaml @@ -0,0 +1,21 @@ +# Copyright (c) 2019 IBM, 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. + +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-configmap + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/*").AsConfig . | indent 2 }} diff --git a/kubernetes/common/blueprints-processor/templates/deployment.yaml b/kubernetes/common/blueprints-processor/templates/deployment.yaml new file mode 100755 index 0000000000..5629913826 --- /dev/null +++ b/kubernetes/common/blueprints-processor/templates/deployment.yaml @@ -0,0 +1,109 @@ +# Copyright (c) 2019 IBM, 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. + +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + replicas: {{ .Values.replicaCount }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + spec: + initContainers: + - command: + - /root/ready.py + args: + - --container-name + - {{ index .Values "mariadb-galera" "nameOverride" }} + env: + - name: NAMESPACE + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.namespace + image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + name: {{ include "common.name" . }}-readiness + containers: + - name: {{ include "common.name" . }} + image: "{{ include "common.repository" . }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + env: + - name: APP_CONFIG_HOME + value: {{ .Values.config.appConfigDir }} + ports: + - containerPort: {{ .Values.service.http.internalPort }} + {{ if .Values.config.grpcEnabled }} + - containerPort: {{ .Values.service.grpc.internalPort }} + {{ end }} + # disable liveness probe when breakpoints set in debugger + # so K8s doesn't restart unresponsive container + {{ if .Values.liveness.enabled }} + livenessProbe: + httpGet: + path: /api/v1/execution-service/ping + port: {{ .Values.service.http.internalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end }} + readinessProbe: + httpGet: + path: /api/v1/execution-service/ping + port: {{ .Values.service.http.internalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + volumeMounts: + - mountPath: /etc/localtime + name: localtime + readOnly: true + - mountPath: {{ .Values.config.appConfigDir }}/application.properties + name: {{ include "common.fullname" . }}-config + subPath: application.properties + - mountPath: {{ .Values.config.appConfigDir }}/logback.xml + name: {{ include "common.fullname" . }}-config + subPath: logback.xml + resources: +{{ include "common.resources" . | indent 12 }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 10 }} + {{- end -}} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 10 }} + {{- end }} + volumes: + - name: localtime + hostPath: + path: /etc/localtime + - name: {{ include "common.fullname" . }}-config + configMap: + name: {{ include "common.fullname" . }}-configmap + items: + - key: application.properties + path: application.properties + - key: logback.xml + path: logback.xml + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/common/blueprints-processor/templates/secrets.yaml b/kubernetes/common/blueprints-processor/templates/secrets.yaml new file mode 100755 index 0000000000..f21363d087 --- /dev/null +++ b/kubernetes/common/blueprints-processor/templates/secrets.yaml @@ -0,0 +1,27 @@ +# Copyright (c) 2019 IBM, 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. + +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.fullname" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +type: Opaque +data: + db-root-password: {{ index .Values "mariadb-galera" "config" "mariadbRootPassword" | b64enc | quote }} diff --git a/kubernetes/common/blueprints-processor/templates/service.yaml b/kubernetes/common/blueprints-processor/templates/service.yaml new file mode 100755 index 0000000000..4c1c32c1ed --- /dev/null +++ b/kubernetes/common/blueprints-processor/templates/service.yaml @@ -0,0 +1,45 @@ +# Copyright (c) 2019 IBM, 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. + +apiVersion: v1 +kind: Service +metadata: + name: {{ include "common.servicename" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.http.externalPort }} + targetPort: {{ .Values.service.http.internalPort }} + {{- if eq .Values.service.type "NodePort"}} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + {{- end}} + name: {{ .Values.service.portName | default "http" }} + {{- if .Values.config.grpcEnabled}} + - port: {{ .Values.service.grpc.externalPort }} + targetPort: {{ .Values.service.grpc.internalPort }} + {{- if eq .Values.service.type "NodePort"}} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + {{- end}} + name: {{ .Values.service.portName | default "http" }} + {{- end}} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} \ No newline at end of file diff --git a/kubernetes/common/blueprints-processor/values.yaml b/kubernetes/common/blueprints-processor/values.yaml new file mode 100755 index 0000000000..2edcc8a4ec --- /dev/null +++ b/kubernetes/common/blueprints-processor/values.yaml @@ -0,0 +1,126 @@ +# Copyright (c) 2019 IBM, Bell Canada +# +# Modifications Copyright (c) 2019 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. + +################################################################# +# Global configuration defaults. +################################################################# +global: + # Change to an unused port prefix range to prevent port conflicts + # with other instances running within the same k8s cluster + nodePortPrefix: 302 + + # image repositories + repository: nexus3.onap.org:10001 + + # readiness check + readinessRepository: oomk8s + readinessImage: readiness-check:2.0.0 + + # image pull policy + pullPolicy: Always + + persistence: + mountPath: /dockerdata-nfs + +################################################################# +# Application configuration defaults. +################################################################# +# application image +repository: nexus3.onap.org:10001 +image: onap/ccsdk-blueprintsprocessor:0.4.1 +pullPolicy: Always + +# flag to enable debugging - application support required +debugEnabled: false + +# application configuration +config: + applicationName: BlueprintsProcessor + msName: "org.onap.ccsdk.apps.blueprintsprocessor" + bundleVersion: "1.0.0" + appConfigDir: /opt/app/onap/config + grpcEnabled: false + stickySelectorKey: + envContext: DEV + +mariadb-galera: + config: + userName: sdnctl + userPassword: sdnctl + mariadbRootPassword: sdnctl + mysqlDatabase: sdnctl + nameOverride: blueprints-processor-db + service: + name: blueprints-processor-db + portName: bp-db + replicaCount: 1 + persistence: + enabled: true + mountSubPath: blueprints-processor/data + +# default number of instances +replicaCount: 1 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: true + +readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + +service: + type: ClusterIP + portName: blueprints-processor + http: + internalPort: 8080 + externalPort: 8080 + grpc: + internalPort: 9111 + externalPort: 9111 + +persistence: + 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 + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # + # Example: + # Configure resource requests and limits + # ref: http://kubernetes.io/docs/user-guide/compute-resources/ + # Minimum memory for development is 2 CPU cores and 4GB memory + # Minimum memory for production is 4 CPU cores and 8GB memory +#resources: +# limits: +# cpu: 2 +# memory: 4Gi +# requests: +# cpu: 2 +# memory: 4Gi -- cgit 1.2.3-korg