[CPS] Fix issues in the ncmp-dmi-plugin charts 11/124311/11
authorRenu Kumari <renu.kumari@bell.ca>
Thu, 16 Sep 2021 19:36:23 +0000 (15:36 -0400)
committerRenu Kumari <renu.kumari@bell.ca>
Fri, 24 Sep 2021 02:17:54 +0000 (22:17 -0400)
- added serviceMonitor and removed annotation for prometheus scraping
- changed readiness dependency from core-db to core app
- removed unused environment variables
- make cps-core and sdnc url configurable
- Added rolling restart in ncmp-dmi-plugin

Issue-ID: CPS-669
Signed-off-by: Renu Kumari <renu.kumari@bell.ca>
Change-Id: Ia4c3ccdac32a97d75b98ce4cbadaf74c5493f06c

kubernetes/cps/components/ncmp-dmi-plugin/resources/config/application-helm.yml
kubernetes/cps/components/ncmp-dmi-plugin/resources/config/logback.xml [deleted file]
kubernetes/cps/components/ncmp-dmi-plugin/templates/NOTES.txt [deleted file]
kubernetes/cps/components/ncmp-dmi-plugin/templates/deployment.yaml
kubernetes/cps/components/ncmp-dmi-plugin/templates/serviceMonitor.yaml [new file with mode: 0644]
kubernetes/cps/components/ncmp-dmi-plugin/values.yaml
kubernetes/cps/values.yaml

index d388823..2e50188 100644 (file)
 # ============LICENSE_END=========================================================
 */}}
 
-server:
-  port: 8080
+dmi:
+  service:
+    name: {{ .Values.config.dmiServiceName }}
 
 cps-core:
-  baseUrl: http://${CPS_CORE_HOST:cps}:${CPS_CORE_PORT:8080}
-  dmiRegistrationUrl : /cps-ncmp/api/ncmp-dmi/v1/ch
+  baseUrl: {{ .Values.config.cpsCore.url }}
   auth:
     username: ${CPS_CORE_USERNAME}
     password: ${CPS_CORE_PASSWORD}
 
 sdnc:
-  baseUrl: http://${SDNC_HOST:sdnc}:${SDNC_PORT:8181}
-  topologyId: ${SDNC_TOPOLOGY_ID:topology-netconf}
+  baseUrl: {{ .Values.config.sdnc.url }}
+  topologyId: {{ .Values.config.sdnc.topologyId }}
   auth:
     username: ${SDNC_USERNAME}
     password: ${SDNC_PASSWORD}
diff --git a/kubernetes/cps/components/ncmp-dmi-plugin/resources/config/logback.xml b/kubernetes/cps/components/ncmp-dmi-plugin/resources/config/logback.xml
deleted file mode 100644 (file)
index 2a62c86..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-<!--
-  ============LICENSE_START=======================================================
-   Copyright (C) 2021 Nordix Foundation
-  ================================================================================
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-  SPDX-License-Identifier: Apache-2.0
-  ============LICENSE_END=========================================================
--->
-
-<configuration scan="true" scanPeriod="30 seconds" debug="false">
-
-    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-        <encoder>
-            <pattern>%d - %highlight(%-5level) [%-20.20thread] %cyan(%logger{36}) - %msg%n</pattern>
-        </encoder>
-    </appender>
-    <appender name="AsyncSysOut" class="ch.qos.logback.classic.AsyncAppender">
-        <appender-ref ref="STDOUT" />
-    </appender>
-
-    <root level="INFO">
-        <appender-ref ref="AsyncSysOut" />
-    </root>
-
-</configuration>
-
diff --git a/kubernetes/cps/components/ncmp-dmi-plugin/templates/NOTES.txt b/kubernetes/cps/components/ncmp-dmi-plugin/templates/NOTES.txt
deleted file mode 100644 (file)
index 66f5302..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-# ============LICENSE_START=======================================================
-# Copyright (C) 2021 Nordix Foundation
-# ================================================================================
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#       http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# SPDX-License-Identifier: Apache-2.0
-# ============LICENSE_END=========================================================
-
-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.fullname" . }})
-  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.fullname" . }}'
-  export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
-  export SERVICE_PORT=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.fullname" . }} -o jsonpath='{.spec.ports[0].port}')
-  echo http://$SERVICE_IP:$SERVICE_PORT
-{{- else if contains "ClusterIP" .Values.service.type }}
-  export POD_NAME=$(kubectl get pods --namespace {{ include "common.namespace" . }} -l "app={{ template "common.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
-  export POD_PORT=$(kubectl get pods --namespace {{ include "common.namespace" . }} -l "app={{ template "common.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].spec.containers[0].ports[0].containerPort}")
-  echo "Visit http://127.0.0.1:8080 to use your application"
-  kubectl port-forward $POD_NAME 8080:$POD_PORT
-{{- end }}
index d2fd5c9..3d154db 100644 (file)
@@ -23,18 +23,18 @@ kind: Deployment
 metadata: {{- include "common.resourceMetadata" . | nindent 2 }}
 spec:
   replicas: {{ .Values.replicaCount }}
+  minReadySeconds: {{ index .Values.minReadySeconds }}
+  strategy:
+    type: {{ index .Values.updateStrategy.type }}
+    rollingUpdate:
+      maxUnavailable: {{ index .Values.updateStrategy.maxUnavailable }}
+      maxSurge: {{ index .Values.updateStrategy.maxSurge }}
   selector: {{- include "common.selectors" . | nindent 4 }}
   template:
     metadata:
       labels:
         app.kubernetes.io/name: {{ include "common.name" . }}
         app.kubernetes.io/instance: {{ include "common.release" . }}
-      {{- if .Values.prometheus.enabled }}
-      annotations:
-        prometheus.io/scrape: "true"
-        prometheus.io/path: 'manage/prometheus'
-        prometheus.io/port: {{ .Values.managementPort | quote }}
-      {{- end }}
     spec:
       {{ include "common.podSecurityContext" . | indent 6 | trim}}
       serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . ) }}
@@ -49,17 +49,17 @@ spec:
           - "cd /config-input && for PFILE in `find . -not -type d | grep -v -F ..`; do envsubst <${PFILE} >/config/${PFILE}; done"
         env:
           - name: DMI_PLUGIN_USERNAME
-            {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "user-creds" "key" "login") | indent 12 }}
+            {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "app-user-creds" "key" "login") | indent 12 }}
           - name: DMI_PLUGIN_PASSWORD
-            {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "user-creds" "key" "password") | indent 12 }}
+            {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "app-user-creds" "key" "password") | indent 12 }}
           - name: SDNC_USERNAME
             {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "sdnc-creds" "key" "login") | indent 12 }}
           - name: SDNC_PASSWORD
             {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "sdnc-creds" "key" "password") | indent 12 }}
           - name: CPS_CORE_USERNAME
-            {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "core-creds" "key" "login") | indent 12 }}
+            {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "cps-core-creds" "key" "login") | indent 12 }}
           - name: CPS_CORE_PASSWORD
-            {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "core-creds" "key" "password") | indent 12 }}
+            {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "cps-core-creds" "key" "password") | indent 12 }}
         volumeMounts:
           - mountPath: /config-input
             name: init-data-input
@@ -101,9 +101,6 @@ spec:
           - mountPath: /app/resources/application-helm.yml
             subPath: application-helm.yml
             name: init-data
-          - mountPath: /app/resources/logback.xml
-            subPath: logback.xml
-            name: init-data
           - mountPath: /tmp
             name: init-temp
       volumes:
diff --git a/kubernetes/cps/components/ncmp-dmi-plugin/templates/serviceMonitor.yaml b/kubernetes/cps/components/ncmp-dmi-plugin/templates/serviceMonitor.yaml
new file mode 100644 (file)
index 0000000..a49a662
--- /dev/null
@@ -0,0 +1,23 @@
+{{/*
+# ============LICENSE_START=======================================================
+#  Copyright (c) 2021 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.
+#
+#  SPDX-License-Identifier: Apache-2.0
+# ============LICENSE_END=========================================================
+*/}}
+
+{{- if .Values.prometheus.enabled }}
+{{ include "common.serviceMonitor" . }}
+{{- end }}
\ No newline at end of file
index d616195..3f40a79 100644 (file)
@@ -20,7 +20,7 @@
 # Secrets.
 #################################################################
 secrets:
-  - uid: user-creds
+  - uid: app-user-creds
     type: basicAuth
     externalSecret: '{{ tpl (default "" .Values.config.appUserExternalSecret) . }}'
     login: '{{ .Values.config.appUserName }}'
@@ -29,14 +29,14 @@ secrets:
   - uid: sdnc-creds
     type: basicAuth
     externalSecret: '{{ tpl (default "" .Values.config.odlCredsExternalSecret) . }}'
-    login: '{{ .Values.config.sdncUser }}'
-    password: '{{ .Values.config.sdncPassword }}'
+    login: '{{ .Values.config.sdnc.username }}'
+    password: '{{ .Values.config.sdnc.password }}'
     passwordPolicy: required
-  - uid: core-creds
+  - uid: cps-core-creds
     type: basicAuth
-    externalSecret: '{{ tpl (default "" .Values.config.coreCredsExternalSecret) . }}'
-    login: '{{ .Values.config.coreUser }}'
-    password: '{{ .Values.config.corePassword }}'
+    externalSecret: '{{ tpl (default "" .Values.config.cpsCore.credsExternalSecret) . }}'
+    login: '{{ .Values.config.cpsCore.username }}'
+    password: '{{ .Values.config.cpsCore.password }}'
     passwordPolicy: generate
 
 #################################################################
@@ -53,11 +53,10 @@ managementPort: &mgt_port 8081
 
 prometheus:
   enabled: true
-  interval: 60s
 
 service:
   type: ClusterIP
-  name: ncmp-dmi-plugin
+  name: &svc_name ncmp-dmi-plugin
   ports:
     - name: &port http
       port: *svc_port
@@ -65,6 +64,18 @@ service:
       port: *mgt_port
       targetPort: *mgt_port
 
+metrics:
+  serviceMonitor:
+    enabled: true
+    port: management
+      ## specify target port if name is not given to the port in the service definition
+      ##
+    # targetPort: 8080
+    path: /manage/prometheus
+    interval: 60s
+    basicAuth:
+      enabled: false
+
 pullPolicy: IfNotPresent
 # flag to enable debugging - application support required
 debugEnabled: false
@@ -112,7 +123,7 @@ ingress:
   service:
     - baseaddr: "ncmp-dmi-plugin"
       path: "/"
-      name: "ncmp-dmi-plugin"
+      name: *svc_name
       port: *svc_port
 
 serviceAccount:
@@ -132,14 +143,20 @@ config:
 
   # REST API basic authentication credentials (passsword is generated if not provided)
   appUserName: ncmpuser
+  #appUserPassword:
   spring:
     profile: helm
-  #appUserPassword:
 
-  sdncUser: admin
-  sdncPassword: Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
-
-  coreUser: cpsuser
+  dmiServiceName: http://*svc_name:*svc_port
+  sdnc:
+    url: http://sdnc:8181
+    username: admin
+    password: Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
+    topologyId: topology-netconf
+  cpsCore:
+    url: http://cps-core:8080
+    username: cpsuser
+    #password:
 
 # Any new property can be added in the env by setting in overrides in the format mentioned below
 # All the added properties must be in "key: value" format insead of yaml.
@@ -155,3 +172,9 @@ logging:
 readinessCheck:
   wait_for:
     - cps-core
+
+minReadySeconds: 10
+updateStrategy:
+  type: RollingUpdate
+  maxUnavailable: 0
+  maxSurge: 1
index 28f904a..6093fa7 100755 (executable)
@@ -54,5 +54,6 @@ cps-temporal:
 ncmp-dmi-plugin:
   enabled: true
   config:
-    coreCredsExternalSecret: *core-creds-secret
     appUserExternalSecret: *dmi-plugin-creds-secret
+    cpsCore:
+      credsExternalSecret: *core-creds-secret