added repo
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
apiVersion: v1
|
||||
description: Stackdriver exporter for Prometheus
|
||||
name: prometheus-stackdriver-exporter
|
||||
version: 4.12.2
|
||||
appVersion: v0.18.0
|
||||
home: https://www.stackdriver.com/
|
||||
sources:
|
||||
- https://github.com/prometheus-community/stackdriver_exporter
|
||||
- https://github.com/prometheus-community/helm-charts/tree/main/charts/prometheus-stackdriver-exporter
|
||||
keywords:
|
||||
- metrics
|
||||
- stackdriver
|
||||
- monitoring
|
||||
maintainers:
|
||||
- name: rpahli
|
||||
email: pahli88@googlemail.com
|
||||
url: https://github.com/rpahli
|
||||
@@ -0,0 +1,153 @@
|
||||
# Stackdriver Exporter
|
||||
|
||||
Prometheus exporter for Stackdriver, allowing for Google Cloud metrics.
|
||||
You must have appropriate IAM permissions for this exporter to work.
|
||||
If you are passing in an IAM key then you must have:
|
||||
|
||||
* monitoring.metricDescriptors.list
|
||||
* monitoring.timeSeries.list
|
||||
|
||||
These are contained within `roles/monitoring.viewer`.
|
||||
If you're using legacy access scopes, then you must have `https://www.googleapis.com/auth/monitoring.read`.
|
||||
|
||||
Learn more: <https://github.com/prometheus-community/stackdriver_exporter>
|
||||
|
||||
This chart creates a Stackdriver-Exporter deployment on a
|
||||
[Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh)
|
||||
package manager.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
* Kubernetes 1.8+ with Beta APIs enabled
|
||||
|
||||
## Usage
|
||||
|
||||
The chart is distributed as an [OCI Artifact](https://helm.sh/docs/topics/registries/) as well as via a traditional [Helm Repository](https://helm.sh/docs/topics/chart_repository/).
|
||||
|
||||
* OCI Artifact: `oci://ghcr.io/prometheus-community/charts/prometheus-stackdriver-exporter`
|
||||
* Helm Repository: `https://prometheus-community.github.io/helm-charts` with chart `prometheus-stackdriver-exporter`
|
||||
|
||||
The installation instructions use the OCI registry. Refer to the [`helm repo`]([`helm repo`](https://helm.sh/docs/helm/helm_repo/)) command documentation for information on installing charts via the traditional repository.
|
||||
|
||||
### Install Chart
|
||||
|
||||
```console
|
||||
# Helm 3
|
||||
$ helm install [RELEASE_NAME] oci://ghcr.io/prometheus-community/charts/prometheus-stackdriver-exporter --set stackdriver.projectId=google-project-name
|
||||
|
||||
# Helm 2
|
||||
$ helm install --name [RELEASE_NAME] oci://ghcr.io/prometheus-community/charts/prometheus-stackdriver-exporter --set stackdriver.projectId=google-project-name
|
||||
```
|
||||
|
||||
The command deploys Stackdriver-Exporter on the Kubernetes cluster using the default configuration.
|
||||
|
||||
_See [configuration](#configuration) below._
|
||||
|
||||
_See [helm install](https://helm.sh/docs/helm/helm_install/) for command documentation._
|
||||
|
||||
### Uninstall Chart
|
||||
|
||||
```console
|
||||
# Helm 3
|
||||
$ helm uninstall [RELEASE_NAME]
|
||||
|
||||
# Helm 2
|
||||
# helm delete --purge [RELEASE_NAME]
|
||||
```
|
||||
|
||||
This removes all the Kubernetes components associated with the chart and deletes the release.
|
||||
|
||||
_See [helm uninstall](https://helm.sh/docs/helm/helm_uninstall/) for command documentation._
|
||||
|
||||
### Upgrading Chart
|
||||
|
||||
```console
|
||||
# Helm 3 or 2
|
||||
$ helm upgrade [RELEASE_NAME] [CHART] --install
|
||||
```
|
||||
|
||||
_See [helm upgrade](https://helm.sh/docs/helm/helm_upgrade/) for command documentation._
|
||||
|
||||
#### Upgrading an existing Release to a new major version
|
||||
|
||||
A major chart version change (like v1.2.3 -> v2.0.0) indicates that there is an incompatible breaking change needing manual actions.
|
||||
|
||||
##### 3.x to 4.x
|
||||
|
||||
The Helm parameter `stackdriver.metrics.filters` is changed to support multiple values instead of a single value. If you are using this parameter, please adjust.
|
||||
|
||||
```console
|
||||
stackdriver:
|
||||
metrics:
|
||||
filters:
|
||||
- filter-1
|
||||
- filter-2
|
||||
```
|
||||
|
||||
##### 2.x to 3.x
|
||||
|
||||
Due to a change in deployment labels, **removal** of its deployment needs to done manually prior to upgrading:
|
||||
|
||||
```console
|
||||
kubectl delete deployments.apps -l app=prometheus-stackdriver-exporter --cascade=orphan
|
||||
```
|
||||
|
||||
If this is not done, when upgrading via helm (even with `helm upgrade --force`) an error will occur indicating that the deployment cannot be modified:
|
||||
|
||||
```console
|
||||
invalid: spec.selector: Invalid value: v1.LabelSelector{MatchLabels:map[string]string{"app.kubernetes.io/instance":"example", "app.kubernetes.io/name":"prometheus-stackdriver-exporter"}, MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable
|
||||
```
|
||||
|
||||
Since chart version 3.x, [Kubernetes recommended labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/common-labels/) have been **added**.
|
||||
|
||||
The following labels are now **removed** in all manifests (including labels used as selector for `Deployment` kind):
|
||||
|
||||
```yaml
|
||||
...
|
||||
metadata:
|
||||
labels:
|
||||
app: prometheus-stackdriver-exporter
|
||||
chart: prometheus-stackdriver-exporter-2.X.X
|
||||
heritage: Helm
|
||||
release: example
|
||||
...
|
||||
spec:
|
||||
...
|
||||
selector:
|
||||
matchLabels:
|
||||
app: prometheus-stackdriver-exporter
|
||||
release: example
|
||||
...
|
||||
```
|
||||
|
||||
If you use your own custom [ServiceMonitor](https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#servicemonitor) or [PodMonitor](https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#podmonitor), please ensure to upgrade their `selector` fields accordingly to the new labels.
|
||||
|
||||
##### 1.x to 2.x
|
||||
|
||||
Since chart version 2.0.0, the exporter is configured via flags/arguments instead of environment variables due to a [breaking change in the exporter](https://github.com/prometheus-community/stackdriver_exporter/pull/142).
|
||||
|
||||
If you already use `.Values.extraArgs` you might want to check for conflicting command arguments.
|
||||
|
||||
## Configuration
|
||||
|
||||
See [Customizing the Chart Before Installing](https://helm.sh/docs/intro/using_helm/#customizing-the-chart-before-installing).
|
||||
To see all configurable options with detailed comments, visit the chart's [values.yaml](./values.yaml), or run these configuration commands:
|
||||
|
||||
```console
|
||||
# Helm 2
|
||||
$ helm inspect values oci://ghcr.io/prometheus-community/charts/prometheus-stackdriver-exporter
|
||||
|
||||
# Helm 3
|
||||
$ helm show values oci://ghcr.io/prometheus-community/charts/prometheus-stackdriver-exporter
|
||||
```
|
||||
|
||||
> **Tip**: You can use the default [values.yaml](values.yaml), as long as you provide a value for stackdriver.projectId
|
||||
|
||||
## Google Storage Metrics
|
||||
|
||||
In order to get metrics for GCS you need to ensure the metrics interval is >
|
||||
24h. You can read more information about this in [this bug
|
||||
report](https://github.com/frodenas/stackdriver_exporter/issues/14).
|
||||
|
||||
The easiest way to do this is to create two separate exporters with different
|
||||
prefixes and intervals, to ensure you gather all appropriate metrics.
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
annotations:
|
||||
foo.io/bar: qux
|
||||
foo.io/baz: quux
|
||||
|
||||
stackdriver:
|
||||
serviceAccountKey: |
|
||||
{
|
||||
"type": "service_account",
|
||||
"project_id": "dummy-acc",
|
||||
"private_key_id": "00000000000000000000000000000000000",
|
||||
"private_key": "",
|
||||
"client_email": "dummy@dummy-acc.iam.gserviceaccount.com",
|
||||
"client_id": "0000000000000000000000000",
|
||||
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
|
||||
"token_uri": "https://oauth2.googleapis.com/token",
|
||||
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
|
||||
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/dummy%dummy-acc.iam.gserviceaccount.com"
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
stackdriver:
|
||||
serviceAccountKey: |
|
||||
{
|
||||
"type": "service_account",
|
||||
"project_id": "dummy-acc",
|
||||
"private_key_id": "00000000000000000000000000000000000",
|
||||
"private_key": "",
|
||||
"client_email": "dummy@dummy-acc.iam.gserviceaccount.com",
|
||||
"client_id": "0000000000000000000000000",
|
||||
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
|
||||
"token_uri": "https://oauth2.googleapis.com/token",
|
||||
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
|
||||
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/dummy%dummy-acc.iam.gserviceaccount.com"
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
# Test values for extraVolumes and extraVolumeMounts
|
||||
extraVolumes:
|
||||
- name: test-volume
|
||||
emptyDir: {}
|
||||
|
||||
extraVolumeMounts:
|
||||
- name: test-volume
|
||||
mountPath: /test-volume
|
||||
|
||||
stackdriver:
|
||||
serviceAccountKey: |
|
||||
{
|
||||
"type": "service_account",
|
||||
"project_id": "dummy-acc",
|
||||
"private_key_id": "00000000000000000000000000000000000",
|
||||
"private_key": "",
|
||||
"client_email": "dummy@dummy-acc.iam.gserviceaccount.com",
|
||||
"client_id": "0000000000000000000000000",
|
||||
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
|
||||
"token_uri": "https://oauth2.googleapis.com/token",
|
||||
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
|
||||
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/dummy%dummy-acc.iam.gserviceaccount.com"
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
{{- if eq (printf "%s" .Values.stackdriver.projectId) "FALSE" }}
|
||||
######################################################################################
|
||||
#### ERROR: You did not set stackdriver.projectId in your `helm install' call. ####
|
||||
######################################################################################
|
||||
|
||||
This deployment will be incomplete until you set an appropriate Google Cloud
|
||||
Project ID so we know where to gather metrics from. You can do this by:
|
||||
|
||||
helm upgrade {{ .Release.Name }} \
|
||||
--set stackdriver.projectId=project-id stable/stackdriver-exporter
|
||||
{{- end }}
|
||||
|
||||
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 "stackdriver-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{{ .Values.web.path }}
|
||||
{{- 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 "stackdriver-exporter.fullname" . }}'
|
||||
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "stackdriver-exporter.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
|
||||
echo http://$SERVICE_IP:{{ .Values.service.httpPort }}{{ .Values.web.path }}
|
||||
{{- else if contains "ClusterIP" .Values.service.type }}
|
||||
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app={{ template "stackdriver-exporter.fullname" . }}" -o jsonpath="{.items[0].metadata.name}")
|
||||
echo "Visit http://127.0.0.1:{{ .Values.service.httpPort }}{{ .Values.web.path }} to use your application"
|
||||
kubectl port-forward $POD_NAME {{ .Values.service.httpPort }}:{{ .Values.service.httpPort }} --namespace {{ .Release.Namespace }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,68 @@
|
||||
{{/* vim: set filetype=mustache: */}}
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "stackdriver-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 "stackdriver-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 -}}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "stackdriver-exporter.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create the name of the service account to use
|
||||
*/}}
|
||||
{{- define "stackdriver-exporter.serviceAccountName" -}}
|
||||
{{- if .Values.serviceAccount.create -}}
|
||||
{{ default (include "stackdriver-exporter.fullname" .) .Values.serviceAccount.name }}
|
||||
{{- else -}}
|
||||
{{ default "default" .Values.serviceAccount.name }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Generate basic labels
|
||||
*/}}
|
||||
{{- define "stackdriver-exporter.labels" }}
|
||||
helm.sh/chart: {{ template "stackdriver-exporter.chart" . }}
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
app.kubernetes.io/component: metrics
|
||||
app.kubernetes.io/part-of: {{ template "stackdriver-exporter.name" . }}
|
||||
{{- include "stackdriver-exporter.selectorLabels" . }}
|
||||
{{- if .Chart.AppVersion }}
|
||||
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||
{{- end }}
|
||||
{{- if .Values.customLabels }}
|
||||
{{ toYaml .Values.customLabels }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Selector labels
|
||||
*/}}
|
||||
{{- define "stackdriver-exporter.selectorLabels" }}
|
||||
app.kubernetes.io/name: {{ include "stackdriver-exporter.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,162 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ template "stackdriver-exporter.fullname" . }}
|
||||
labels:
|
||||
{{- include "stackdriver-exporter.labels" . | indent 4 }}
|
||||
{{- with .Values.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
replicas: {{ .Values.replicaCount }}
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "stackdriver-exporter.selectorLabels" . | indent 6 }}
|
||||
strategy:
|
||||
rollingUpdate:
|
||||
maxSurge: 1
|
||||
maxUnavailable: 0
|
||||
type: RollingUpdate
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
{{- include "stackdriver-exporter.labels" . | indent 8 }}
|
||||
{{- with .Values.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- if .Values.securityContext }}
|
||||
securityContext:
|
||||
{{- toYaml .Values.securityContext | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.affinity }}
|
||||
affinity:
|
||||
{{- toYaml .Values.affinity | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.image.pullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- range .Values.image.pullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if .Values.priorityClassName }}
|
||||
priorityClassName: {{ .Values.priorityClassName }}
|
||||
{{- end }}
|
||||
serviceAccount: {{ template "stackdriver-exporter.serviceAccountName" . }}
|
||||
serviceAccountName: {{ template "stackdriver-exporter.serviceAccountName" . }}
|
||||
restartPolicy: {{ .Values.restartPolicy }}
|
||||
volumes:
|
||||
{{- if .Values.stackdriver.serviceAccountSecret }}
|
||||
- name: stackdriver-service-account
|
||||
secret:
|
||||
secretName: {{ .Values.stackdriver.serviceAccountSecret | quote }}
|
||||
{{- if and (.Values.stackdriver.serviceAccountSecret) (.Values.stackdriver.serviceAccountSecretKey) }}
|
||||
items:
|
||||
- key: {{ .Values.stackdriver.serviceAccountSecretKey | quote }}
|
||||
path: credentials.json
|
||||
{{- end }}
|
||||
{{- else if .Values.stackdriver.serviceAccountKey }}
|
||||
- name: stackdriver-service-account
|
||||
secret:
|
||||
secretName: {{ template "stackdriver-exporter.fullname" . }}
|
||||
{{- end}}
|
||||
{{- if .Values.extraVolumes }}
|
||||
{{- toYaml .Values.extraVolumes | nindent 8 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: {{ .Chart.Name }}
|
||||
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
command: ["stackdriver_exporter"]
|
||||
volumeMounts:
|
||||
{{- if or .Values.stackdriver.serviceAccountSecret .Values.stackdriver.serviceAccountKey }}
|
||||
- name: stackdriver-service-account
|
||||
mountPath: /etc/secrets/service-account/
|
||||
{{- end}}
|
||||
{{- if .Values.extraVolumeMounts }}
|
||||
{{- toYaml .Values.extraVolumeMounts | nindent 12 }}
|
||||
{{- end }}
|
||||
args:
|
||||
{{- if .Values.stackdriver.projectIds }}
|
||||
{{- range .Values.stackdriver.projectIds }}
|
||||
- --google.project-ids={{ . }}
|
||||
{{- end }}
|
||||
{{- else }}
|
||||
- --google.project-id={{ .Values.stackdriver.projectId }}
|
||||
{{- end }}
|
||||
{{- if .Values.stackdriver.projectFilters }}
|
||||
- --google.projects.filter='{{ .Values.stackdriver.projectFilters }}'
|
||||
{{- end }}
|
||||
- --monitoring.metrics-interval={{ .Values.stackdriver.metrics.interval }}
|
||||
- --monitoring.metrics-offset={{ .Values.stackdriver.metrics.offset }}
|
||||
{{- if .Values.stackdriver.metrics.prefixes }}
|
||||
{{- range .Values.stackdriver.metrics.prefixes }}
|
||||
- --monitoring.metrics-prefixes={{ . }}
|
||||
{{- end }}
|
||||
{{- else }}
|
||||
- --monitoring.metrics-type-prefixes={{ .Values.stackdriver.metrics.typePrefixes | replace " " "" }}
|
||||
{{- end }}
|
||||
{{- range .Values.stackdriver.metrics.filters }}
|
||||
- --monitoring.filters={{ . }}
|
||||
{{- end }}
|
||||
- --stackdriver.backoff-jitter={{ .Values.stackdriver.backoffJitter }}
|
||||
- --stackdriver.http-timeout={{ .Values.stackdriver.httpTimeout }}
|
||||
- --stackdriver.max-backoff={{ .Values.stackdriver.maxBackoff }}
|
||||
- --stackdriver.max-retries={{ .Values.stackdriver.maxRetries }}
|
||||
- --stackdriver.retry-statuses={{ .Values.stackdriver.retryStatuses }}
|
||||
- --web.listen-address={{ .Values.web.listenAddress }}
|
||||
- --web.telemetry-path={{ .Values.web.telemetryPath }}
|
||||
- --web.stackdriver-telemetry-path={{ .Values.web.stackdriverTelemetryPath }}
|
||||
{{- if .Values.stackdriver.dropDelegatedProjects }}
|
||||
- --monitoring.drop-delegated-projects
|
||||
{{- end }}
|
||||
{{- if .Values.stackdriver.metrics.ingestDelay }}
|
||||
- --monitoring.metrics-ingest-delay
|
||||
{{- end }}
|
||||
{{- if .Values.stackdriver.metrics.aggregateDeltas }}
|
||||
- --monitoring.aggregate-deltas
|
||||
- --monitoring.aggregate-deltas-ttl={{ .Values.stackdriver.metrics.aggregateDeltasTTL }}
|
||||
{{- end }}
|
||||
{{- if .Values.extraArgs }}
|
||||
{{- range $key, $value := .Values.extraArgs }}
|
||||
{{- if $value }}
|
||||
- --{{ $key }}={{ $value }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if or .Values.stackdriver.serviceAccountSecret .Values.stackdriver.serviceAccountKey .Values.extraEnv }}
|
||||
env:
|
||||
{{- if or .Values.stackdriver.serviceAccountSecret .Values.stackdriver.serviceAccountKey }}
|
||||
- name: GOOGLE_APPLICATION_CREDENTIALS
|
||||
value: /etc/secrets/service-account/credentials.json
|
||||
{{- end }}
|
||||
{{- with .Values.extraEnv }}
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
resources:
|
||||
{{- toYaml .Values.resources | nindent 12 }}
|
||||
ports:
|
||||
- containerPort: {{ .Values.service.httpPort }}
|
||||
name: http
|
||||
livenessProbe:
|
||||
{{- toYaml .Values.livenessProbe | nindent 12 }}
|
||||
readinessProbe:
|
||||
{{- toYaml .Values.readinessProbe | nindent 12 }}
|
||||
{{- if .Values.containerSecurityContext }}
|
||||
securityContext:
|
||||
{{- toYaml .Values.containerSecurityContext | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.extraContainers }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{- toYaml .Values.nodeSelector | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.tolerations }}
|
||||
tolerations:
|
||||
{{- toYaml .Values.tolerations | nindent 8 }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,20 @@
|
||||
{{- if .Values.prometheusRule.enabled }}
|
||||
apiVersion: monitoring.coreos.com/v1
|
||||
kind: PrometheusRule
|
||||
metadata:
|
||||
name: {{ template "stackdriver-exporter.fullname" . }}
|
||||
{{- with .Values.prometheusRule.namespace }}
|
||||
namespace: {{ . }}
|
||||
{{- end }}
|
||||
labels:
|
||||
{{- include "stackdriver-exporter.labels" . | indent 4 }}
|
||||
{{- with .Values.prometheusRule.additionalLabels -}}
|
||||
{{- toYaml . | nindent 4 -}}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- with .Values.prometheusRule.rules }}
|
||||
groups:
|
||||
- name: {{ template "stackdriver-exporter.name" $ }}
|
||||
rules: {{ toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,14 @@
|
||||
{{- if .Values.stackdriver.serviceAccountKey -}}
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: {{ template "stackdriver-exporter.fullname" . }}
|
||||
labels:
|
||||
{{- include "stackdriver-exporter.labels" . | indent 4 }}
|
||||
{{- if .Values.secret.labels }}
|
||||
{{- toYaml .Values.secret.labels | nindent 4 }}
|
||||
{{- end }}
|
||||
type: Opaque
|
||||
data:
|
||||
credentials.json: {{ .Values.stackdriver.serviceAccountKey | b64enc | quote }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,18 @@
|
||||
kind: Service
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
name: {{ template "stackdriver-exporter.fullname" . }}
|
||||
labels:
|
||||
{{- include "stackdriver-exporter.labels" . | indent 4 }}
|
||||
{{- if .Values.service.annotations }}
|
||||
annotations:
|
||||
{{- toYaml .Values.service.annotations | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
type: {{ .Values.service.type }}
|
||||
ports:
|
||||
- name: http
|
||||
port: {{ .Values.service.httpPort }}
|
||||
protocol: TCP
|
||||
selector:
|
||||
{{- include "stackdriver-exporter.selectorLabels" . | indent 4 }}
|
||||
@@ -0,0 +1,11 @@
|
||||
{{- if .Values.serviceAccount.create }}
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
labels:
|
||||
{{- include "stackdriver-exporter.labels" . | indent 4 }}
|
||||
name: {{ template "stackdriver-exporter.serviceAccountName" . }}
|
||||
{{- with .Values.serviceAccount.annotations }}
|
||||
annotations: {{- tpl (toYaml .) $ | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
@@ -0,0 +1,60 @@
|
||||
{{- if .Values.serviceMonitor.enabled }}
|
||||
apiVersion: monitoring.coreos.com/v1
|
||||
kind: ServiceMonitor
|
||||
metadata:
|
||||
name: {{ template "stackdriver-exporter.fullname" . }}
|
||||
{{- if .Values.serviceMonitor.namespace }}
|
||||
namespace: {{ .Values.serviceMonitor.namespace }}
|
||||
{{- end }}
|
||||
labels:
|
||||
{{- include "stackdriver-exporter.labels" . | indent 4 }}
|
||||
{{- if .Values.serviceMonitor.additionalLabels }}
|
||||
{{- toYaml .Values.serviceMonitor.additionalLabels | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- if .Values.serviceMonitor.scrapeClass }}
|
||||
scrapeClass: {{ .Values.serviceMonitor.scrapeClass }}
|
||||
{{- end }}
|
||||
endpoints:
|
||||
- port: http
|
||||
path: {{ .Values.web.telemetryPath }}
|
||||
{{- if .Values.serviceMonitor.interval }}
|
||||
interval: {{ .Values.serviceMonitor.interval }}
|
||||
{{- end }}
|
||||
{{- if .Values.serviceMonitor.scrapeTimeout }}
|
||||
scrapeTimeout: {{ .Values.serviceMonitor.scrapeTimeout }}
|
||||
{{- end }}
|
||||
honorLabels: {{ .Values.serviceMonitor.honorLabels }}
|
||||
honorTimestamps: {{ .Values.serviceMonitor.honorTimestamps }}
|
||||
{{- if .Values.serviceMonitor.metricRelabelings }}
|
||||
metricRelabelings:
|
||||
{{- toYaml .Values.serviceMonitor.metricRelabelings | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- if .Values.serviceMonitor.relabelings }}
|
||||
relabelings:
|
||||
{{- toYaml .Values.serviceMonitor.relabelings | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- if ne .Values.web.telemetryPath .Values.web.stackdriverTelemetryPath }}
|
||||
- port: http
|
||||
path: {{ .Values.web.stackdriverTelemetryPath }}
|
||||
{{- if .Values.serviceMonitor.interval }}
|
||||
interval: {{ .Values.serviceMonitor.interval }}
|
||||
{{- end }}
|
||||
{{- if .Values.serviceMonitor.scrapeTimeout }}
|
||||
scrapeTimeout: {{ .Values.serviceMonitor.scrapeTimeout }}
|
||||
{{- end }}
|
||||
honorLabels: {{ .Values.serviceMonitor.honorLabels }}
|
||||
honorTimestamps: {{ .Values.serviceMonitor.honorTimestamps }}
|
||||
{{- if .Values.serviceMonitor.metricRelabelings }}
|
||||
metricRelabelings:
|
||||
{{- toYaml .Values.serviceMonitor.metricRelabelings | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- if .Values.serviceMonitor.relabelings }}
|
||||
relabelings:
|
||||
{{- toYaml .Values.serviceMonitor.relabelings | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "stackdriver-exporter.selectorLabels" . | indent 6 }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,216 @@
|
||||
# Provide a name in place of prometheus-stackdriver-exporter for `app:` labels
|
||||
nameOverride: ""
|
||||
|
||||
# Provide a name to substitute for the full names of resources
|
||||
fullnameOverride: ""
|
||||
|
||||
# Number of exporters to run
|
||||
replicaCount: 1
|
||||
|
||||
# Restart policy for container
|
||||
restartPolicy: Always
|
||||
|
||||
image:
|
||||
repository: prometheuscommunity/stackdriver-exporter
|
||||
# if not set appVersion field from Chart.yaml is used
|
||||
tag: ""
|
||||
pullPolicy: IfNotPresent
|
||||
|
||||
## Optionally specify an array of imagePullSecrets.
|
||||
## Secrets must be manually created in the namespace.
|
||||
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
|
||||
##
|
||||
# pullSecrets:
|
||||
# - myDockerConfigJsonSecretName
|
||||
|
||||
resources: {}
|
||||
# requests:
|
||||
# cpu: 100m
|
||||
# memory: 128Mi
|
||||
# limits:
|
||||
# cpu: 100m
|
||||
# memory: 128Mi
|
||||
|
||||
securityContext: {}
|
||||
|
||||
containerSecurityContext: {}
|
||||
|
||||
## Liveness probe
|
||||
##
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /
|
||||
port: http
|
||||
scheme: HTTP
|
||||
initialDelaySeconds: 30
|
||||
timeoutSeconds: 10
|
||||
|
||||
## Readiness probe
|
||||
##
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /
|
||||
port: http
|
||||
scheme: HTTP
|
||||
initialDelaySeconds: 10
|
||||
timeoutSeconds: 10
|
||||
|
||||
service:
|
||||
type: ClusterIP
|
||||
httpPort: 9255
|
||||
annotations: {}
|
||||
|
||||
## Additional labels to add to all resources
|
||||
customLabels: {}
|
||||
# app: prometheus-stackdriver-exporter
|
||||
|
||||
secret:
|
||||
labels: {}
|
||||
|
||||
stackdriver:
|
||||
# DEPRECATED - The Google Project ID to gather metrics for
|
||||
projectId: "FALSE"
|
||||
# The Google Project IDs to gather metrics for (requires 0.17.0+)
|
||||
projectIds: []
|
||||
# filter for selecting google projects
|
||||
projectFilters: ""
|
||||
# - "google-project-id"
|
||||
# An existing secret which contains credentials.json
|
||||
serviceAccountSecret: ""
|
||||
# Provide custom key for the existing secret to load credentials.json from
|
||||
serviceAccountSecretKey: ""
|
||||
# A service account key JSON file. Must be provided when no existing secret is used, in this case a new secret will be created holding this service account
|
||||
serviceAccountKey: ""
|
||||
# Max number of retries that should be attempted on 503 errors from Stackdriver
|
||||
maxRetries: 0
|
||||
# How long should Stackdriver_exporter wait for a result from the Stackdriver API
|
||||
httpTimeout: 10s
|
||||
# Max time between each request in an exp backoff scenario
|
||||
maxBackoff: 5s
|
||||
# The amount of jitter to introduce in an exp backoff scenario
|
||||
backoffJitter: 1s
|
||||
# The HTTP statuses that should trigger a retry
|
||||
retryStatuses: 503
|
||||
# Drop metrics from attached projects and fetch `project_id` only
|
||||
dropDelegatedProjects: false
|
||||
metrics:
|
||||
# DEPRECATED - The prefixes to gather metrics for, we default to just CPU metrics.
|
||||
typePrefixes: 'compute.googleapis.com/instance/cpu'
|
||||
# The prefixes to gather metrics for (requires 0.17.0+)
|
||||
prefixes: []
|
||||
# - 'compute.googleapis.com/instance/cpu'
|
||||
# The filters to refine the metrics query by using Filter objects that Google provides.
|
||||
# Filter objects: project, group.id, resource.type, resource.labels.[KEY], metric.type, metric.labels.[KEY]
|
||||
# https://cloud.google.com/monitoring/api/v3/filters
|
||||
filters: []
|
||||
# - 'pubsub.googleapis.com/subscription:resource.labels.subscription_id=monitoring.regex.full_match("us-west4.*my-team.*")'
|
||||
# The frequency to request
|
||||
interval: '5m'
|
||||
# How far into the past to offset
|
||||
offset: '0s'
|
||||
# Offset for the Google Stackdriver Monitoring Metrics interval into the past by the ingest delay from the metric's metadata.
|
||||
ingestDelay: false
|
||||
# If enabled will treat all DELTA metrics as an in-memory counter instead of a gauge.
|
||||
aggregateDeltas: false
|
||||
# How long should a delta metric continue to be exported after GCP stops producing a metric
|
||||
aggregateDeltasTTL: '30m'
|
||||
|
||||
web:
|
||||
# Port to listen on
|
||||
listenAddress: ':9255'
|
||||
# Path under which to expose Stackdriver metrics.
|
||||
stackdriverTelemetryPath: /metrics
|
||||
# Path under which to expose Prometheus metrics
|
||||
telemetryPath: /metrics
|
||||
|
||||
## Pod affinity
|
||||
##
|
||||
affinity: {}
|
||||
|
||||
annotations: {}
|
||||
|
||||
## Pod extra arguments
|
||||
##
|
||||
extraArgs: {}
|
||||
|
||||
## Extra environment variables
|
||||
##
|
||||
extraEnv: []
|
||||
# - name: GOMAXPROCS
|
||||
# value: "2"
|
||||
|
||||
# Additional containers to add to the pod
|
||||
extraContainers: []
|
||||
|
||||
## Additional volumes to mount
|
||||
##
|
||||
extraVolumes: []
|
||||
# - name: custom-ca
|
||||
# secret:
|
||||
# secretName: custom-ca
|
||||
|
||||
## Additional volume mounts for the container
|
||||
##
|
||||
extraVolumeMounts: []
|
||||
# - name: custom-ca
|
||||
# mountPath: /etc/ssl/certs/ca-certificates.crt
|
||||
# subPath: ca.crt
|
||||
|
||||
## Node labels for stackdriver-exporter pod assignment
|
||||
## Ref: https://kubernetes.io/docs/user-guide/node-selection/
|
||||
##
|
||||
nodeSelector: {}
|
||||
|
||||
## Node tolerations for stackdriver-exporter scheduling to nodes with taints
|
||||
## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
|
||||
##
|
||||
tolerations: []
|
||||
# - key: "key"
|
||||
# operator: "Equal|Exists"
|
||||
# value: "value"
|
||||
# effect: "NoSchedule|PreferNoSchedule|NoExecute(1.6 only)"
|
||||
|
||||
## Pod priority class
|
||||
##
|
||||
priorityClassName: ""
|
||||
|
||||
## Service Account
|
||||
##
|
||||
serviceAccount:
|
||||
# Specifies whether a ServiceAccount should be created
|
||||
create: false
|
||||
# The name of the ServiceAccount to use.
|
||||
# If not set and create is false, 'default' is used
|
||||
# If not set and create is true, a name is generated using the fullname template
|
||||
name:
|
||||
# Annotations to add to the service account. Keys and values can be templated, as an example: "{{ .Values.foo }}: {{ .Values.bar }}"
|
||||
annotations: {}
|
||||
|
||||
# Enable this if you're using https://github.com/coreos/prometheus-operator
|
||||
serviceMonitor:
|
||||
enabled: false
|
||||
namespace: monitoring
|
||||
# scrapeClass
|
||||
scrapeClass:
|
||||
# additionalLabels is the set of additional labels to add to the ServiceMonitor
|
||||
additionalLabels: {}
|
||||
# How long until a scrape request times out.
|
||||
scrapeTimeout: '10s'
|
||||
# fallback to the prometheus default unless specified
|
||||
interval: 10s
|
||||
# Defaults to what's used if you follow CoreOS [Prometheus Install Instructions](https://github.com/helm/charts/tree/master/stable/prometheus-operator#tldr)
|
||||
honorLabels: true
|
||||
# Whether Prometheus should use the timestamps of the metrics exposed by stackdriver-exporter
|
||||
honorTimestamps: true
|
||||
# MetricRelabelConfigs to apply to samples before ingestion https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#relabelconfig
|
||||
metricRelabelings: []
|
||||
# RelabelConfigs to apply to samples before scraping. https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#relabelconfig
|
||||
relabelings: []
|
||||
|
||||
## Custom PrometheusRules to be defined
|
||||
## ref: https://github.com/coreos/prometheus-operator#customresourcedefinitions
|
||||
prometheusRule:
|
||||
enabled: false
|
||||
additionalLabels: {}
|
||||
namespace: ""
|
||||
rules: []
|
||||
Reference in New Issue
Block a user