{{with .Values -}} --- ### ### Prometheus ### --- kind: ConfigMap apiVersion: v1 metadata: name: linkerd-prometheus-config namespace: {{.Namespace}} labels: {{.ControllerComponentLabel}}: prometheus {{.ControllerNamespaceLabel}}: {{.Namespace}} annotations: {{.CreatedByAnnotation}}: {{.CliVersion}} data: prometheus.yml: |- global: scrape_interval: 10s scrape_timeout: 10s evaluation_interval: 10s rule_files: - /etc/prometheus/*_rules.yml scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] - job_name: 'grafana' kubernetes_sd_configs: - role: pod namespaces: names: ['{{.Namespace}}'] relabel_configs: - source_labels: - __meta_kubernetes_pod_container_name action: keep regex: ^grafana$ - job_name: 'linkerd-controller' kubernetes_sd_configs: - role: pod namespaces: names: ['{{.Namespace}}'] relabel_configs: - source_labels: - __meta_kubernetes_pod_label_linkerd_io_control_plane_component - __meta_kubernetes_pod_container_port_name action: keep regex: (.*);admin-http$ - source_labels: [__meta_kubernetes_pod_container_name] action: replace target_label: component - job_name: 'linkerd-proxy' kubernetes_sd_configs: - role: pod relabel_configs: - source_labels: - __meta_kubernetes_pod_container_name - __meta_kubernetes_pod_container_port_name - __meta_kubernetes_pod_label_linkerd_io_control_plane_ns action: keep regex: ^{{.ProxyContainerName}};linkerd-admin;{{.Namespace}}$ - source_labels: [__meta_kubernetes_namespace] action: replace target_label: namespace - source_labels: [__meta_kubernetes_pod_name] action: replace target_label: pod # special case k8s' "job" label, to not interfere with prometheus' "job" # label # __meta_kubernetes_pod_label_linkerd_io_proxy_job=foo => # k8s_job=foo - source_labels: [__meta_kubernetes_pod_label_linkerd_io_proxy_job] action: replace target_label: k8s_job # drop __meta_kubernetes_pod_label_linkerd_io_proxy_job - action: labeldrop regex: __meta_kubernetes_pod_label_linkerd_io_proxy_job # __meta_kubernetes_pod_label_linkerd_io_proxy_deployment=foo => # deployment=foo - action: labelmap regex: __meta_kubernetes_pod_label_linkerd_io_proxy_(.+) # drop all labels that we just made copies of in the previous labelmap - action: labeldrop regex: __meta_kubernetes_pod_label_linkerd_io_proxy_(.+) # __meta_kubernetes_pod_label_linkerd_io_foo=bar => # foo=bar - action: labelmap regex: __meta_kubernetes_pod_label_linkerd_io_(.+) --- kind: Service apiVersion: v1 metadata: name: linkerd-prometheus namespace: {{.Namespace}} labels: {{.ControllerComponentLabel}}: prometheus {{.ControllerNamespaceLabel}}: {{.Namespace}} annotations: {{.CreatedByAnnotation}}: {{.CliVersion}} spec: type: ClusterIP selector: {{.ControllerComponentLabel}}: prometheus ports: - name: admin-http port: 9090 targetPort: 9090 --- kind: Deployment apiVersion: extensions/v1beta1 metadata: name: linkerd-prometheus namespace: {{.Namespace}} labels: {{.ControllerComponentLabel}}: prometheus {{.ControllerNamespaceLabel}}: {{.Namespace}} annotations: {{.CreatedByAnnotation}}: {{.CliVersion}} spec: replicas: 1 template: metadata: labels: {{.ControllerComponentLabel}}: prometheus annotations: {{.CreatedByAnnotation}}: {{.CliVersion}} spec: serviceAccountName: linkerd-prometheus volumes: - name: data emptyDir: {} - name: prometheus-config configMap: name: linkerd-prometheus-config containers: - name: prometheus ports: - name: admin-http containerPort: 9090 volumeMounts: - name: data mountPath: /data - name: prometheus-config mountPath: /etc/prometheus readOnly: true image: {{.PrometheusImage}} imagePullPolicy: {{.ImagePullPolicy}} args: - "--storage.tsdb.path=/data" - "--storage.tsdb.retention.time=6h" - "--config.file=/etc/prometheus/prometheus.yml" - "--log.level={{.PrometheusLogLevel}}" readinessProbe: httpGet: path: /-/ready port: 9090 initialDelaySeconds: 30 timeoutSeconds: 30 livenessProbe: httpGet: path: /-/healthy port: 9090 initialDelaySeconds: 30 timeoutSeconds: 30 {{ with .PrometheusResources -}} {{- template "resources" . }} {{ end -}} securityContext: runAsUser: 65534 {{- end}}