Fix node exporter integration with Prometheus 65/82865/2
authorSrivahni <srivahni.chivukula@intel.com>
Fri, 22 Mar 2019 21:33:38 +0000 (14:33 -0700)
committerSrivahni <srivahni.chivukula@intel.com>
Fri, 22 Mar 2019 21:34:48 +0000 (14:34 -0700)
Change-Id: I05fe6c74bccad6dd2fd515dcda4d4efe7e9a50dd
Issue-ID: ONAPARC-440
Signed-off-by: Srivahni Chivukula <srivahni.chivukula@intel.com>
17 files changed:
vnfs/DAaaS/collection/charts/prometheus-node-exporter/.helmignore [new file with mode: 0755]
vnfs/DAaaS/collection/charts/prometheus-node-exporter/Chart.yaml [new file with mode: 0755]
vnfs/DAaaS/collection/charts/prometheus-node-exporter/OWNERS [new file with mode: 0755]
vnfs/DAaaS/collection/charts/prometheus-node-exporter/README.md [new file with mode: 0755]
vnfs/DAaaS/collection/charts/prometheus-node-exporter/templates/NOTES.txt [new file with mode: 0755]
vnfs/DAaaS/collection/charts/prometheus-node-exporter/templates/_helpers.tpl [new file with mode: 0755]
vnfs/DAaaS/collection/charts/prometheus-node-exporter/templates/daemonset.yaml [new file with mode: 0755]
vnfs/DAaaS/collection/charts/prometheus-node-exporter/templates/endpoints.yaml [new file with mode: 0755]
vnfs/DAaaS/collection/charts/prometheus-node-exporter/templates/monitor.yaml [new file with mode: 0755]
vnfs/DAaaS/collection/charts/prometheus-node-exporter/templates/psp-clusterrole.yaml [new file with mode: 0755]
vnfs/DAaaS/collection/charts/prometheus-node-exporter/templates/psp-clusterrolebinding.yaml [new file with mode: 0755]
vnfs/DAaaS/collection/charts/prometheus-node-exporter/templates/psp.yaml [new file with mode: 0755]
vnfs/DAaaS/collection/charts/prometheus-node-exporter/templates/service.yaml [new file with mode: 0755]
vnfs/DAaaS/collection/charts/prometheus-node-exporter/templates/serviceaccount.yaml [new file with mode: 0755]
vnfs/DAaaS/collection/charts/prometheus-node-exporter/values.yaml [new file with mode: 0755]
vnfs/DAaaS/collection/charts/prometheus-operator/values.yaml
vnfs/DAaaS/collection/charts/prometheus/values.yaml

diff --git a/vnfs/DAaaS/collection/charts/prometheus-node-exporter/.helmignore b/vnfs/DAaaS/collection/charts/prometheus-node-exporter/.helmignore
new file mode 100755 (executable)
index 0000000..f0c1319
--- /dev/null
@@ -0,0 +1,21 @@
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*~
+# Various IDEs
+.project
+.idea/
+*.tmproj
diff --git a/vnfs/DAaaS/collection/charts/prometheus-node-exporter/Chart.yaml b/vnfs/DAaaS/collection/charts/prometheus-node-exporter/Chart.yaml
new file mode 100755 (executable)
index 0000000..2e45b3a
--- /dev/null
@@ -0,0 +1,15 @@
+apiVersion: v1
+appVersion: 0.17.0
+description: A Helm chart for prometheus node-exporter
+home: https://github.com/prometheus/node_exporter/
+keywords:
+- node-exporter
+- prometheus
+- exporter
+maintainers:
+- email: gianrubio@gmail.com
+  name: gianrubio
+name: prometheus-node-exporter
+sources:
+- https://github.com/prometheus/node_exporter/
+version: 1.3.2
diff --git a/vnfs/DAaaS/collection/charts/prometheus-node-exporter/OWNERS b/vnfs/DAaaS/collection/charts/prometheus-node-exporter/OWNERS
new file mode 100755 (executable)
index 0000000..fe9b2c3
--- /dev/null
@@ -0,0 +1,4 @@
+approvers:
+- gianrubio
+reviewers:
+- gianrubio
\ No newline at end of file
diff --git a/vnfs/DAaaS/collection/charts/prometheus-node-exporter/README.md b/vnfs/DAaaS/collection/charts/prometheus-node-exporter/README.md
new file mode 100755 (executable)
index 0000000..b9b5010
--- /dev/null
@@ -0,0 +1,80 @@
+# Prometheus Node Exporter
+
+* Installs prometheus [node exporter](https://github.com/prometheus/node_exporter)
+
+## TL;DR;
+
+```console
+$ helm install stable/prometheus-node-exporter
+```
+
+## Introduction
+
+This chart bootstraps a prometheus [node exporter](http://github.com/prometheus/node_exporter) deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
+
+## Installing the Chart
+
+To install the chart with the release name `my-release`:
+
+```console
+$ helm install --name my-release stable/prometheus-node-exporter
+```
+
+The command deploys node exporter on the Kubernetes cluster in the default configuration. The [configuration](#configuration) section lists the parameters that can be configured during installation.
+
+## Uninstalling the Chart
+
+To uninstall/delete the `my-release` deployment:
+
+```console
+$ helm delete my-release
+```
+
+The command removes all the Kubernetes components associated with the chart and deletes the release.
+
+## Configuration
+
+The following table lists the configurable parameters of the Node Exporter chart and their default values.
+
+|             Parameter             |                                                          Description                                                          |                 Default                 |     |
+| --------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | --------------------------------------- | --- |
+| `image.repository`                | Image repository                                                                                                              | `quay.io/prometheus/node-exporter`      |     |
+| `image.tag`                       | Image tag                                                                                                                     | `v0.16.0`                               |     |
+| `image.pullPolicy`                | Image pull policy                                                                                                             | `IfNotPresent`                          |     |
+| `extraArgs`                       | Additional container arguments                                                                                                | `[]`                                    |     |
+| `extraHostVolumeMounts`           | Additional host volume mounts                                                                                                 | {}                                      |     |
+| `podLabels`                       | Additional labels to be added to pods                                                                                         | {}                                      |     |
+| `rbac.create`                     | If true, create & use RBAC resources                                                                                          | `true`                                  |     |
+| `rbac.pspEnabled`                 | Specifies whether a PodSecurityPolicy should be created.                                                                      | `true`                                  |     |
+| `resources`                       | CPU/Memory resource requests/limits                                                                                           | `{}`                                    |     |
+| `service.type`                    | Service type                                                                                                                  | `ClusterIP`                             |     |
+| `service.port`                    | The service port                                                                                                              | `9100`                                  |     |
+| `service.targetPort`              | The target port of the container                                                                                              | `9100`                                  |     |
+| `service.nodePort`                | The node port of the service                                                                                                  |                                         |     |
+| `service.annotations`             | Kubernetes service annotations                                                                                                | `{prometheus.io/scrape: "true"}`        |     |
+| `serviceAccount.create`           | Specifies whether a service account should be created.                                                                        | `true`                                  |     |
+| `serviceAccount.name`             | Service account to be used. If not set and `serviceAccount.create` is `true`, a name is generated using the fullname template |                                         |     |
+| `serviceAccount.imagePullSecrets` | Specify image pull secrets                                                                                                    | `[]`                                    |     |
+| `securityContext`                 | SecurityContext                                                                                                               | `{"runAsNonRoot": true, "runAsUser": 65534}` |     |
+| `affinity`                        | A group of affinity scheduling rules for pod assignment                                                                       | `{}`                                    |     |
+| `nodeSelector`                    | Node labels for pod assignment                                                                                                | `{}`                                    |     |
+| `tolerations`                     | List of node taints to tolerate                                                                                               | `- effect: NoSchedule operator: Exists` |     |
+| `priorityClassName`               | Name of Priority Class to assign pods                                                                                         | `nil`                                   |     |
+| `endpoints`            | list of addresses that have node exporter deployed outside of the cluster                                                                | `[]`                                    |     |
+| `prometheus.monitor.enabled` | Set this to `true` to create ServiceMonitor for Prometheus operator | `false` | |
+| `prometheus.monitor.additionalLabels` | Additional labels that can be used so ServiceMonitor will be discovered by Prometheus | `{}` | |
+| `prometheus.monitor.namespace` | namespace where servicemonitor resource should be created | `the same namespace as prometheus node exporter` | |
+
+Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
+
+```console
+$ helm install --name my-release \
+  --set serviceAccount.name=node-exporter  \
+    stable/prometheus-node-exporter
+```
+
+Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example,
+
+```console
+$ helm install --name my-release -f values.yaml stable/prometheus-node-exporter
+```
diff --git a/vnfs/DAaaS/collection/charts/prometheus-node-exporter/templates/NOTES.txt b/vnfs/DAaaS/collection/charts/prometheus-node-exporter/templates/NOTES.txt
new file mode 100755 (executable)
index 0000000..4902798
--- /dev/null
@@ -0,0 +1,15 @@
+1. Get the application URL by running these commands:
+{{- if contains "NodePort" .Values.service.type }}
+  export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "prometheus-node-exporter.fullname" . }})
+  export NODE_IP=$(kubectl get nodes --namespace {{ .Release.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 {{ template "prometheus-node-exporter.fullname" . }}'
+  export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "prometheus-node-exporter.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
+  echo http://$SERVICE_IP:{{ .Values.service.port }}
+{{- else if contains "ClusterIP" .Values.service.type }}
+  export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app={{ template "prometheus-node-exporter.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:80
+{{- end }}
diff --git a/vnfs/DAaaS/collection/charts/prometheus-node-exporter/templates/_helpers.tpl b/vnfs/DAaaS/collection/charts/prometheus-node-exporter/templates/_helpers.tpl
new file mode 100755 (executable)
index 0000000..4f0e2df
--- /dev/null
@@ -0,0 +1,55 @@
+{{/* vim: set filetype=mustache: */}}
+{{/*
+Expand the name of the chart.
+*/}}
+{{- define "prometheus-node-exporter.name" -}}
+{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+{{/*
+Create a default fully qualified app name.
+We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
+If release name contains chart name it will be used as a full name.
+*/}}
+{{- define "prometheus-node-exporter.fullname" -}}
+{{- if .Values.fullnameOverride -}}
+{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- $name := default .Chart.Name .Values.nameOverride -}}
+{{- if contains $name .Release.Name -}}
+{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+{{- end -}}
+{{- end -}}
+
+{{/* Generate basic labels */}}
+{{- define "prometheus-node-exporter.labels" }}
+app: {{ template "prometheus-node-exporter.name" . }}
+heritage: {{.Release.Service }}
+release: {{.Release.Name }}
+chart: {{ template "prometheus-node-exporter.chart" . }}
+{{- if .Values.podLabels}}
+{{ toYaml .Values.podLabels }}
+{{- end }}
+{{- end }}
+
+{{/*
+Create chart name and version as used by the chart label.
+*/}}
+{{- define "prometheus-node-exporter.chart" -}}
+{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+
+{{/*
+Create the name of the service account to use
+*/}}
+{{- define "prometheus-node-exporter.serviceAccountName" -}}
+{{- if .Values.serviceAccount.create -}}
+    {{ default (include "prometheus-node-exporter.fullname" .) .Values.serviceAccount.name }}
+{{- else -}}
+    {{ default "default" .Values.serviceAccount.name }}
+{{- end -}}
+{{- end -}}
diff --git a/vnfs/DAaaS/collection/charts/prometheus-node-exporter/templates/daemonset.yaml b/vnfs/DAaaS/collection/charts/prometheus-node-exporter/templates/daemonset.yaml
new file mode 100755 (executable)
index 0000000..dfb15f1
--- /dev/null
@@ -0,0 +1,98 @@
+apiVersion: extensions/v1beta1
+kind: DaemonSet
+metadata:
+  name: {{ template "prometheus-node-exporter.fullname" . }}
+  labels: {{ include "prometheus-node-exporter.labels" . | indent 4 }}
+spec:
+  selector:
+    matchLabels:
+      app: {{ template "prometheus-node-exporter.name" . }}
+      release: {{ .Release.Name }}
+  updateStrategy:
+    type: RollingUpdate
+    rollingUpdate:
+      maxUnavailable: 1
+  template:
+    metadata:
+      labels: {{ include "prometheus-node-exporter.labels" . | indent 8 }}
+    spec:
+{{- if and .Values.rbac.create .Values.serviceAccount.create }}
+      serviceAccountName: {{ template "prometheus-node-exporter.serviceAccountName" . }}
+{{- end }}
+{{- if .Values.securityContext }}
+      securityContext:
+{{ toYaml .Values.securityContext | indent 8 }}
+{{- end }}
+{{- if .Values.priorityClassName }}
+      priorityClassName: {{ .Values.priorityClassName }}
+{{- end }}
+      containers:
+        - name: node-exporter
+          image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
+          imagePullPolicy: {{ .Values.image.pullPolicy }}
+          args:
+            - --path.procfs=/host/proc
+            - --path.sysfs=/host/sys
+            - --web.listen-address=0.0.0.0:{{ .Values.service.port }}
+{{- if .Values.extraArgs }}
+{{ toYaml .Values.extraArgs | indent 12 }}
+{{- end }}
+          ports:
+            - name: metrics
+              containerPort: {{ .Values.service.targetPort }}
+              protocol: TCP
+          livenessProbe:
+            httpGet:
+              path: /
+              port: {{ .Values.service.port }}
+          readinessProbe:
+            httpGet:
+              path: /
+              port: {{ .Values.service.port }}
+          resources:
+{{ toYaml .Values.resources | indent 12 }}
+          volumeMounts:
+            - name: proc
+              mountPath: /host/proc
+              readOnly:  true
+            - name: sys
+              mountPath: /host/sys
+              readOnly: true
+            {{- if .Values.extraHostVolumeMounts }}
+            {{- range $_, $mount := .Values.extraHostVolumeMounts }}
+            - name: {{ $mount.name }}
+              mountPath: {{ $mount.mountPath }}
+              readOnly: {{ $mount.readOnly }}
+            {{- if $mount.mountPropagation }}
+              mountPropagation: {{ $mount.mountPropagation }}
+            {{- end }}
+            {{- end }}
+            {{- end }}
+      hostNetwork: true
+      hostPID: true
+{{- if .Values.affinity }}
+      affinity:
+{{ toYaml .Values.affinity | indent 8 }}
+{{- end }}
+{{- if .Values.nodeSelector }}
+      nodeSelector:
+{{ toYaml .Values.nodeSelector | indent 8 }}
+{{- end }}
+    {{- with .Values.tolerations }}
+      tolerations:
+{{ toYaml . | indent 8 }}
+    {{- end }}
+      volumes:
+        - name: proc
+          hostPath:
+            path: /proc
+        - name: sys
+          hostPath:
+            path: /sys
+        {{- if .Values.extraHostVolumeMounts }}
+        {{- range $_, $mount := .Values.extraHostVolumeMounts }}
+        - name: {{ $mount.name }}
+          hostPath:
+            path: {{ $mount.hostPath }}
+        {{- end }}
+        {{- end }}
\ No newline at end of file
diff --git a/vnfs/DAaaS/collection/charts/prometheus-node-exporter/templates/endpoints.yaml b/vnfs/DAaaS/collection/charts/prometheus-node-exporter/templates/endpoints.yaml
new file mode 100755 (executable)
index 0000000..4c5c75f
--- /dev/null
@@ -0,0 +1,17 @@
+{{- if .Values.endpoints }}
+apiVersion: v1
+kind: Endpoints
+metadata:
+  name: {{ template "prometheus-node-exporter.fullname" . }}
+  labels:
+{{ include "prometheus-node-exporter.labels" . | indent 4 }}
+subsets:
+  - addresses:
+      {{- range .Values.endpoints }}
+      - ip: {{ . }}
+      {{- end }}
+    ports:
+      - name: metrics
+        port: 9100
+        protocol: TCP
+{{- end }}
\ No newline at end of file
diff --git a/vnfs/DAaaS/collection/charts/prometheus-node-exporter/templates/monitor.yaml b/vnfs/DAaaS/collection/charts/prometheus-node-exporter/templates/monitor.yaml
new file mode 100755 (executable)
index 0000000..9c723e6
--- /dev/null
@@ -0,0 +1,17 @@
+{{- if .Values.prometheus.monitor.enabled }}
+apiVersion: monitoring.coreos.com/v1
+kind: ServiceMonitor
+metadata:
+  name: {{ template "prometheus-node-exporter.fullname" . }}
+  labels: {{ include "prometheus-node-exporter.labels" . | indent 4 }}
+  {{- if .Values.prometheus.monitor.additionalLabels }}
+{{ toYaml .Values.prometheus.monitor.additionalLabels | indent 4 }}
+  {{- end }}
+spec:
+  selector:
+    matchLabels:
+      app: {{ template "prometheus-node-exporter.name" . }}
+      release: {{ .Release.Name }}
+  endpoints:
+    - port: metrics
+{{- end }}
diff --git a/vnfs/DAaaS/collection/charts/prometheus-node-exporter/templates/psp-clusterrole.yaml b/vnfs/DAaaS/collection/charts/prometheus-node-exporter/templates/psp-clusterrole.yaml
new file mode 100755 (executable)
index 0000000..3d0a636
--- /dev/null
@@ -0,0 +1,15 @@
+{{- if .Values.rbac.create }}
+{{- if .Values.rbac.pspEnabled }}
+kind: ClusterRole
+apiVersion: rbac.authorization.k8s.io/v1beta1
+metadata:
+  labels: {{ include "prometheus-node-exporter.labels" . | indent 4 }}
+  name: psp-{{ template "prometheus-node-exporter.fullname" . }}
+rules:
+- apiGroups: ['extensions']
+  resources: ['podsecuritypolicies']
+  verbs:     ['use']
+  resourceNames:
+  - {{ template "prometheus-node-exporter.fullname" . }}
+{{- end }}
+{{- end }}
diff --git a/vnfs/DAaaS/collection/charts/prometheus-node-exporter/templates/psp-clusterrolebinding.yaml b/vnfs/DAaaS/collection/charts/prometheus-node-exporter/templates/psp-clusterrolebinding.yaml
new file mode 100755 (executable)
index 0000000..50f7a14
--- /dev/null
@@ -0,0 +1,17 @@
+{{- if .Values.rbac.create }}
+{{- if .Values.rbac.pspEnabled }}
+apiVersion: rbac.authorization.k8s.io/v1beta1
+kind: ClusterRoleBinding
+metadata:
+  labels: {{ include "prometheus-node-exporter.labels" . | indent 4 }}
+  name: psp-{{ template "prometheus-node-exporter.fullname" . }}
+roleRef:
+  apiGroup: rbac.authorization.k8s.io
+  kind: ClusterRole
+  name: psp-{{ template "prometheus-node-exporter.fullname" . }}
+subjects:
+  - kind: ServiceAccount
+    name: {{ template "prometheus-node-exporter.fullname" . }}
+    namespace: {{ .Release.Namespace }}
+{{- end }}
+{{- end }}
diff --git a/vnfs/DAaaS/collection/charts/prometheus-node-exporter/templates/psp.yaml b/vnfs/DAaaS/collection/charts/prometheus-node-exporter/templates/psp.yaml
new file mode 100755 (executable)
index 0000000..1fa6f28
--- /dev/null
@@ -0,0 +1,51 @@
+{{- if .Values.rbac.create }}
+{{- if .Values.rbac.pspEnabled }}
+apiVersion: extensions/v1beta1
+kind: PodSecurityPolicy
+metadata:
+  labels: {{ include "prometheus-node-exporter.labels" . | indent 4 }}
+  name: {{ template "prometheus-node-exporter.fullname" . }}
+spec:
+  privileged: false
+  # Required to prevent escalations to root.
+  # allowPrivilegeEscalation: false
+  # This is redundant with non-root + disallow privilege escalation,
+  # but we can provide it for defense in depth.
+  #requiredDropCapabilities:
+  #  - ALL
+  # Allow core volume types.
+  volumes:
+    - 'configMap'
+    - 'emptyDir'
+    - 'projected'
+    - 'secret'
+    - 'downwardAPI'
+    - 'persistentVolumeClaim'
+    - 'hostPath'
+  hostNetwork: true
+  hostIPC: false
+  hostPID: true
+  hostPorts:
+    - min: 0
+      max: 65535
+  runAsUser:
+    # Permits the container to run with root privileges as well.
+    rule: 'RunAsAny'
+  seLinux:
+    # This policy assumes the nodes are using AppArmor rather than SELinux.
+    rule: 'RunAsAny'
+  supplementalGroups:
+    rule: 'MustRunAs'
+    ranges:
+      # Forbid adding the root group.
+      - min: 0
+        max: 65535
+  fsGroup:
+    rule: 'MustRunAs'
+    ranges:
+      # Forbid adding the root group.
+      - min: 0
+        max: 65535
+  readOnlyRootFilesystem: false
+{{- end }}
+{{- end }}
diff --git a/vnfs/DAaaS/collection/charts/prometheus-node-exporter/templates/service.yaml b/vnfs/DAaaS/collection/charts/prometheus-node-exporter/templates/service.yaml
new file mode 100755 (executable)
index 0000000..cffe547
--- /dev/null
@@ -0,0 +1,22 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: {{ template "prometheus-node-exporter.fullname" . }}
+{{- if .Values.service.annotations }}
+  annotations:
+{{ toYaml .Values.service.annotations | indent 4 }}
+{{- end }}
+  labels: {{ include "prometheus-node-exporter.labels" . | indent 4 }}
+spec:
+  type: {{ .Values.service.type }}
+  ports:
+    - port: {{ .Values.service.port }}
+    {{- if ( and (eq .Values.service.type "NodePort" ) (not (empty .Values.service.nodePort)) ) }}
+      nodePort: {{ .Values.service.nodePort }}
+    {{- end }}
+      targetPort: {{ .Values.service.targetPort }}
+      protocol: TCP
+      name: metrics
+  selector:
+    app: {{ template "prometheus-node-exporter.name" . }}
+    release: {{ .Release.Name }}
diff --git a/vnfs/DAaaS/collection/charts/prometheus-node-exporter/templates/serviceaccount.yaml b/vnfs/DAaaS/collection/charts/prometheus-node-exporter/templates/serviceaccount.yaml
new file mode 100755 (executable)
index 0000000..b70745a
--- /dev/null
@@ -0,0 +1,15 @@
+{{- if .Values.rbac.create -}}
+{{- if .Values.serviceAccount.create -}}
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+  name: {{ template "prometheus-node-exporter.serviceAccountName" . }}
+  labels:
+    app: {{ template "prometheus-node-exporter.name" . }}
+    chart: {{ template "prometheus-node-exporter.chart" . }}    
+    release: "{{ .Release.Name }}"
+    heritage: "{{ .Release.Service }}"
+imagePullSecrets: 
+{{ toYaml .Values.serviceAccount.imagePullSecrets | indent 2 }}
+{{- end -}}
+{{- end -}}
\ No newline at end of file
diff --git a/vnfs/DAaaS/collection/charts/prometheus-node-exporter/values.yaml b/vnfs/DAaaS/collection/charts/prometheus-node-exporter/values.yaml
new file mode 100755 (executable)
index 0000000..14bcfc5
--- /dev/null
@@ -0,0 +1,96 @@
+# Default values for prometheus-node-exporter.
+# This is a YAML-formatted file.
+# Declare variables to be passed into your templates.
+image:
+  repository: quay.io/prometheus/node-exporter
+  tag: v0.17.0
+  pullPolicy: IfNotPresent
+
+service:
+  type: ClusterIP
+  port: 9100
+  targetPort: 9100
+  nodePort:
+  annotations:
+    prometheus.io/scrape: "true"
+
+prometheus:
+  monitor:
+    enabled: false
+    additionalLabels: {}
+    namespace: ""
+
+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:'.
+  # limits:
+  #   cpu: 200m
+  #    memory: 50Mi
+  # requests:
+  #   cpu: 100m
+  #   memory: 30Mi
+
+serviceAccount:
+  # Specifies whether a ServiceAccount should be created
+  create: true
+  # The name of the ServiceAccount to use.
+  # If not set and create is true, a name is generated using the fullname template
+  name:
+  imagePullSecrets: []
+
+securityContext:
+  runAsNonRoot: true
+  runAsUser: 65534
+
+rbac:
+  ## If true, create & use RBAC resources
+  ##
+  create: true
+  ## If true, create & use Pod Security Policy resources
+  ## https://kubernetes.io/docs/concepts/policy/pod-security-policy/
+  pspEnabled: true
+
+# for deployments that have node_exporter deployed outside of the cluster, list
+# their addresses here
+endpoints: []
+
+## Assign a group of affinity scheduling rules
+##
+affinity: {}
+#   nodeAffinity:
+#     requiredDuringSchedulingIgnoredDuringExecution:
+#       nodeSelectorTerms:
+#         - matchFields:
+#             - key: metadata.name
+#               operator: In
+#               values:
+#                 - target-host-name
+
+## Assign a nodeSelector if operating a hybrid cluster
+##
+nodeSelector: {}
+#   beta.kubernetes.io/arch: amd64
+#   beta.kubernetes.io/os: linux
+
+tolerations:
+  - effect: NoSchedule
+    operator: Exists
+
+## Assign a PriorityClassName to pods if set
+# priorityClassName: ""
+
+## Additional container arguments
+##
+extraArgs: {}
+#   - --collector.diskstats.ignored-devices=^(ram|loop|fd|(h|s|v)d[a-z]|nvme\\d+n\\d+p)\\d+$
+
+## Additional mounts from the host
+##
+extraHostVolumeMounts: {}
+#  - name: <mountName>
+#    hostPath: <hostPath>
+#    mountPath: <mountPath>
+#    readOnly: true|false
+#    mountPropagation: None|HostToContainer|Bidirectional
index 9dc01cc..fc0bc24 100644 (file)
@@ -528,7 +528,7 @@ kube-state-metrics:
 ## Deploy node exporter as a daemonset to all nodes
 ##
 nodeExporter:
-  enabled: true
+  enabled: false 
 
   ## Use the value configured in prometheus-node-exporter.podLabels
   ##
index 1a5fc94..08a0775 100644 (file)
@@ -13,6 +13,16 @@ prometheus:
         - port: collectd-prometheus
           interval: 10s
           path: /metrics
+    - name: service-monitor-node-exporter
+      additionalLabels:
+        collector: prometheus-node-exporter
+      jobLabel: node-exporter
+      selector:
+        matchLabels:
+          app: prometheus-node-exporter
+      endpoints:
+        - port: metrics
+          interval: 30s
  
   service:
     annotations: {}