[POLICY] Enable prometheus integration for policy fwk 35/127835/6
authorRashmi Pujar <rashmi.pujar1@bell.ca>
Wed, 16 Mar 2022 01:58:57 +0000 (21:58 -0400)
committerRashmi Pujar <rashmi.pujar1@bell.ca>
Mon, 21 Mar 2022 01:29:40 +0000 (01:29 +0000)
1. Define serviceMonitor for policy components
2. Changes to common serviceMonitor tpl file to include
tls params in authentication config, and to provide ability
to overrride labels.

Issue-ID: POLICY-3779
Signed-off-by: Rashmi Pujar <rashmi.pujar1@bell.ca>
Change-Id: I79441958698271d9118efb78cfd121433e201ebd

kubernetes/common/common/templates/_serviceMonitor.tpl
kubernetes/policy/components/policy-apex-pdp/templates/serviceMonitor.yaml [new file with mode: 0644]
kubernetes/policy/components/policy-apex-pdp/values.yaml
kubernetes/policy/components/policy-api/templates/serviceMonitor.yaml [new file with mode: 0644]
kubernetes/policy/components/policy-api/values.yaml
kubernetes/policy/components/policy-distribution/templates/serviceMonitor.yaml [new file with mode: 0644]
kubernetes/policy/components/policy-distribution/values.yaml
kubernetes/policy/components/policy-pap/templates/serviceMonitor.yaml [new file with mode: 0644]
kubernetes/policy/components/policy-pap/values.yaml
kubernetes/policy/components/policy-xacml-pdp/templates/serviceMonitor.yaml [new file with mode: 0644]
kubernetes/policy/components/policy-xacml-pdp/values.yaml

index eb6c047..81d7a74 100644 (file)
@@ -110,8 +110,12 @@ namespace: {{ $dot.Values.metrics.serviceMonitor.namespace }}
 {{- else }}
 namespace: {{ include "common.namespace" $dot }}
 {{- end }}
+{{- if $dot.Values.metrics.serviceMonitor.labels }}
+labels: {{- include "common.tplValue" ( dict "value" $dot.Values.metrics.serviceMonitor.labels "context" $dot) | nindent 2 }}
+{{- else }}
 labels: {{- include "common.labels" (dict "labels" $labels "dot" $dot) | nindent 2 }}
 {{- end -}}
+{{- end -}}
 
 {{/*
     Create service monitor template
@@ -133,14 +137,31 @@ spec:
     {{- else }}
     port: metrics
     {{- end }}
+    {{- if $dot.Values.metrics.serviceMonitor.isHttps }}
+    scheme: https
+    {{- if $dot.Values.metrics.serviceMonitor.tlsConfig }}
+    tlsConfig: {{- include "common.tplValue" ( dict "value" $dot.Values.metrics.serviceMonitor.tlsConfig "context" $dot) | nindent 6 }}
+    {{- else }}
+    tlsConfig:
+      insecureSkipVerify: true
+    {{- end }}
+    {{- end }}
     {{- if $dot.Values.metrics.serviceMonitor.basicAuth.enabled }}
     basicAuth:
       username:
         key: {{ $dot.Values.metrics.serviceMonitor.basicAuth.externalSecretUserKey }}
+        {{- if $dot.Values.metrics.serviceMonitor.basicAuth.externalSecretNameSuffix }}
+        name: {{ include "common.release" . }}-{{ $dot.Values.metrics.serviceMonitor.basicAuth.externalSecretNameSuffix }}
+        {{- else }}
         name: {{ $dot.Values.metrics.serviceMonitor.basicAuth.externalSecretName }}
+        {{- end }}
       password:
         key: {{ $dot.Values.metrics.serviceMonitor.basicAuth.externalSecretPasswordKey }}
+        {{- if $dot.Values.metrics.serviceMonitor.basicAuth.externalSecretNameSuffix }}
+        name: {{ include "common.release" . }}-{{ $dot.Values.metrics.serviceMonitor.basicAuth.externalSecretNameSuffix }}
+        {{- else }}
         name: {{ $dot.Values.metrics.serviceMonitor.basicAuth.externalSecretName }}
+        {{- end }}
     {{- end }}
     {{- if $dot.Values.metrics.serviceMonitor.interval }}
     interval: {{ $dot.Values.metrics.serviceMonitor.interval }}
diff --git a/kubernetes/policy/components/policy-apex-pdp/templates/serviceMonitor.yaml b/kubernetes/policy/components/policy-apex-pdp/templates/serviceMonitor.yaml
new file mode 100644 (file)
index 0000000..dbf6a7c
--- /dev/null
@@ -0,0 +1,23 @@
+{{/*
+# ============LICENSE_START=======================================================
+#  Copyright (c) 2022 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 48e6802..7bb430a 100755 (executable)
@@ -139,3 +139,27 @@ serviceAccount:
   nameOverride: policy-apex-pdp
   roles:
     - read
+
+prometheus:
+  enabled: true
+
+metrics:
+  serviceMonitor:
+    # Override the labels based on the Prometheus config parameter: serviceMonitorSelector.
+    # The default operator for prometheus enforces the below label.
+    labels:
+      release: prometheus
+    enabled: true
+    port: policy-apex-pdp
+    interval: 60s
+    isHttps: true
+    basicAuth:
+      enabled: true
+      externalSecretNameSuffix: policy-apex-pdp-restserver-creds
+      externalSecretUserKey: login
+      externalSecretPasswordKey: password
+    selector:
+      app: '{{ include "common.name" . }}'
+      chart: '{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}'
+      release: '{{ include "common.release" . }}'
+      heritage: '{{ .Release.Service }}'
diff --git a/kubernetes/policy/components/policy-api/templates/serviceMonitor.yaml b/kubernetes/policy/components/policy-api/templates/serviceMonitor.yaml
new file mode 100644 (file)
index 0000000..dbf6a7c
--- /dev/null
@@ -0,0 +1,23 @@
+{{/*
+# ============LICENSE_START=======================================================
+#  Copyright (c) 2022 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 e037c64..4dfdcae 100755 (executable)
@@ -149,3 +149,27 @@ serviceAccount:
   nameOverride: policy-api
   roles:
     - read
+
+prometheus:
+  enabled: true
+
+metrics:
+  serviceMonitor:
+    # Override the labels based on the Prometheus config parameter: serviceMonitorSelector.
+    # The default operator for prometheus enforces the below label.
+    labels:
+      release: prometheus
+    enabled: true
+    port: policy-api
+    interval: 60s
+    isHttps: true
+    basicAuth:
+      enabled: true
+      externalSecretNameSuffix: policy-api-user-creds
+      externalSecretUserKey: login
+      externalSecretPasswordKey: password
+    selector:
+      app: '{{ include "common.name" . }}'
+      chart: '{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}'
+      release: '{{ include "common.release" . }}'
+      heritage: '{{ .Release.Service }}'
diff --git a/kubernetes/policy/components/policy-distribution/templates/serviceMonitor.yaml b/kubernetes/policy/components/policy-distribution/templates/serviceMonitor.yaml
new file mode 100644 (file)
index 0000000..dbf6a7c
--- /dev/null
@@ -0,0 +1,23 @@
+{{/*
+# ============LICENSE_START=======================================================
+#  Copyright (c) 2022 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 42caed4..e8f8ad6 100755 (executable)
@@ -161,3 +161,27 @@ serviceAccount:
   nameOverride: policy-distribution
   roles:
     - read
+
+prometheus:
+  enabled: true
+
+metrics:
+  serviceMonitor:
+    # Override the labels based on the Prometheus config parameter: serviceMonitorSelector.
+    # The default operator for prometheus enforces the below label.
+    labels:
+      release: prometheus
+    enabled: true
+    port: policy-distribution
+    interval: 60s
+    isHttps: true
+    basicAuth:
+      enabled: true
+      externalSecretNameSuffix: policy-distribution-restserver-creds
+      externalSecretUserKey: login
+      externalSecretPasswordKey: password
+    selector:
+      app: '{{ include "common.name" . }}'
+      chart: '{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}'
+      release: '{{ include "common.release" . }}'
+      heritage: '{{ .Release.Service }}'
diff --git a/kubernetes/policy/components/policy-pap/templates/serviceMonitor.yaml b/kubernetes/policy/components/policy-pap/templates/serviceMonitor.yaml
new file mode 100644 (file)
index 0000000..dbf6a7c
--- /dev/null
@@ -0,0 +1,23 @@
+{{/*
+# ============LICENSE_START=======================================================
+#  Copyright (c) 2022 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 a31de71..3ef2356 100755 (executable)
@@ -175,3 +175,22 @@ serviceAccount:
   nameOverride: policy-pap
   roles:
     - read
+
+prometheus:
+  enabled: true
+
+metrics:
+  serviceMonitor:
+    # Override the labels based on the Prometheus config parameter: serviceMonitorSelector.
+    # The default operator for prometheus enforces the below label.
+    labels:
+      release: prometheus
+    enabled: true
+    port: http-api
+    interval: 60s
+    isHttps: true
+    basicAuth:
+      enabled: true
+      externalSecretNameSuffix: policy-pap-user-creds
+      externalSecretUserKey: login
+      externalSecretPasswordKey: password
diff --git a/kubernetes/policy/components/policy-xacml-pdp/templates/serviceMonitor.yaml b/kubernetes/policy/components/policy-xacml-pdp/templates/serviceMonitor.yaml
new file mode 100644 (file)
index 0000000..dbf6a7c
--- /dev/null
@@ -0,0 +1,23 @@
+{{/*
+# ============LICENSE_START=======================================================
+#  Copyright (c) 2022 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 718c222..e0d8b79 100755 (executable)
@@ -158,3 +158,27 @@ serviceAccount:
   nameOverride: policy-xacml-pdp
   roles:
     - read
+
+prometheus:
+  enabled: true
+
+metrics:
+  serviceMonitor:
+    # Override the labels based on the Prometheus config parameter: serviceMonitorSelector.
+    # The default operator for prometheus enforces the below label.
+    labels:
+      release: prometheus
+    enabled: true
+    port: policy-xacml-pdp
+    interval: 60s
+    isHttps: true
+    basicAuth:
+      enabled: true
+      externalSecretNameSuffix: policy-xacml-pdp-restserver-creds
+      externalSecretUserKey: login
+      externalSecretPasswordKey: password
+    selector:
+      app: '{{ include "common.name" . }}'
+      chart: '{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}'
+      release: '{{ include "common.release" . }}'
+      heritage: '{{ .Release.Service }}'