diff --git a/stable/wavefront/.helmignore b/stable/wavefront/.helmignore new file mode 100644 index 0000000000..46fd899656 --- /dev/null +++ b/stable/wavefront/.helmignore @@ -0,0 +1,23 @@ +# 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 +# OWNERS file for Kubernetes +OWNERS diff --git a/stable/wavefront/Chart.yaml b/stable/wavefront/Chart.yaml new file mode 100644 index 0000000000..9b401f17fc --- /dev/null +++ b/stable/wavefront/Chart.yaml @@ -0,0 +1,21 @@ +apiVersion: v1 +name: wavefront +description: Wavefront Kubernetes collector +appVersion: 0.9.7 +version: 1.0.0 +keywords: +- metric +- monitoring +- observability +- alerting +home: https://www.wavefront.com +sources: +- https://github.com/wavefrontHQ/wavefront-kubernetes-collector +- https://github.com/wavefrontHQ/java/tree/master/proxy +maintainers: +- name: vikramraman + email: rvikram@vmware.com +- name: puckpuck + email: pierre@wavefront.com +- name: krisclarkdev + email: clarkk@vmware.com diff --git a/stable/wavefront/OWNERS b/stable/wavefront/OWNERS new file mode 100644 index 0000000000..3f9c7c810f --- /dev/null +++ b/stable/wavefront/OWNERS @@ -0,0 +1,8 @@ +approvers: +- vikramraman +- puckpuck +- krisclarkdev +reviewers: +- vikramraman +- puckpuck +- krisclarkdev diff --git a/stable/wavefront/README.md b/stable/wavefront/README.md new file mode 100644 index 0000000000..9d01eda2e4 --- /dev/null +++ b/stable/wavefront/README.md @@ -0,0 +1,20 @@ +# Wavefront Kubenetes collector + +[Wavefront](https://wavefront.com) is a cloud-native monitoring and analytics platform that provides +three dimensional microservices observability with metrics, histograms and OpenTracing-compatible distributed tracing. + +## Introduction + +This chart will deploy the Wavefront Kubernetes collector and Wavefront Proxy to your +Kubernetes cluster. You can use this chart to install multiple Wavefront Proxy releases, +though only one Wavefront Kubernetes collector per cluster should be used. + +You can learn more about the Wavefront and Kubernetes integration [here](https://docs.wavefront.com/wavefront_kubernetes.html) + +## Configuration + +The [values.yaml](./values.yaml) file contains information about all configuration +options for this chart. + +The **requried** options are `clusterName`, `wavefront.url` and `wavefront.token`. +You will need to provide values for those options for a successful installation of the chart. diff --git a/stable/wavefront/requirements.lock b/stable/wavefront/requirements.lock new file mode 100644 index 0000000000..97d58d90dd --- /dev/null +++ b/stable/wavefront/requirements.lock @@ -0,0 +1,6 @@ +dependencies: +- name: kube-state-metrics + repository: https://kubernetes-charts.storage.googleapis.com/ + version: 0.13.0 +digest: sha256:a009e6781117de69f26b9ac1e72267407f5f598642fd20043b88ad815915391c +generated: 2019-01-17T23:00:41.957053-05:00 diff --git a/stable/wavefront/requirements.yaml b/stable/wavefront/requirements.yaml new file mode 100644 index 0000000000..173d06d00a --- /dev/null +++ b/stable/wavefront/requirements.yaml @@ -0,0 +1,5 @@ +dependencies: + - name: kube-state-metrics + version: ^0.8.0 + repository: https://kubernetes-charts.storage.googleapis.com/ + condition: kubeStateMetrics.enabled diff --git a/stable/wavefront/templates/NOTES.txt b/stable/wavefront/templates/NOTES.txt new file mode 100644 index 0000000000..d3739e4b97 --- /dev/null +++ b/stable/wavefront/templates/NOTES.txt @@ -0,0 +1,55 @@ +{{- $validClusterName := and (.Values.clusterName) (ne .Values.clusterName "KUBERNETES_CLUSTER_NAME") -}} +{{- $validUrl := and (.Values.wavefront.url) (ne .Values.wavefront.url "https://YOUR_CLUSTER.wavefront.com") -}} +{{- $validToken := and (.Values.wavefront.token) (ne .Values.wavefront.token "YOUR_API_TOKEN") -}} + +{{- if not $validClusterName }} + +##### ERROR: +You must set the value for 'clusterName' to uniquely identify this Kubernetes cluster in Wavefront. +##### +{{- end }} + +{{- if .Values.collector.useProxy }} + {{- if and (not .Values.proxy.enabled) (not .Values.collector.proxyAddress) }} + +##### ERROR: +Collector is set to use proxy but `proxy.enabled` is not true and `collector.proxyAddress` is not provided. +##### + {{- end }} +{{- else }} + {{- if or (not $validUrl) (not $validToken) }} + +##### ERROR: +Collector is set to use direct ingestion API but `wavefront.url` or `wavefront.token` are not specified. +##### + {{- end }} +{{- end }} + +{{- if .Values.proxy.enabled }} + {{- if or (not $validUrl) (not $validToken) }} + +##### ERROR: +Proxy is enabled but `wavefront.url` or `wavefront.token` are not specified. +##### + {{- end }} +{{- end }} + + +{{- if or (not $validUrl) (not $validToken) }} + +You did not specify a valid URL or Token for Wavefront. +If you do not have a Wavefront instance you can get a free trial here + +https://www.wavefront.com/sign-up + +If you already have access to Wavefront please specify your URL and Token then try again. +{{- end }} + + +Wavefront is setup and configured to collect metrics from your Kubernetes cluster. You +should see metrics flowing within a few minutes. + +You can visit this dashboard in Wavefront to see your Kubernetes metrics: + +{{ .Values.wavefront.url }}/dashboard/integration-kubernetes-main + diff --git a/stable/wavefront/templates/_helpers.tpl b/stable/wavefront/templates/_helpers.tpl new file mode 100644 index 0000000000..f41c7f95b4 --- /dev/null +++ b/stable/wavefront/templates/_helpers.tpl @@ -0,0 +1,67 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Expand the name of the chart. +*/}} +{{- define "wavefront.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "wavefront.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | 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 "wavefront.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 a name for Wavefront Collector +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +*/}} +{{- define "wavefront.collector.fullname" -}} +{{- printf "%s-collector" (include "wavefront.fullname" .) | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create a name for Wavefront Proxy +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +*/}} +{{- define "wavefront.proxy.fullname" -}} +{{- printf "%s-proxy" (include "wavefront.fullname" .) | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create the name of the service account to use +*/}} +{{- define "wavefront.collector.serviceAccountName" -}} +{{- if .Values.serviceAccount.create -}} + {{ default (include "wavefront.collector.fullname" .) .Values.serviceAccount.name }} +{{- else -}} + {{ default "default" .Values.serviceAccount.name }} +{{- end -}} +{{- end -}} + +{{/* +Create template used as options for Wavefront sink in collector +*/}} +{{- define "wavefront.collector.sinkOptions" -}} +{{- printf "&clusterName=%s&includeLabels=%t&includeContainers=%t&prefix=%s" .Values.clusterName (default .Values.collector.includeLabels true) (default .Values.collector.includeContainers true) (default .Values.collector.prefix "kubernetes.") -}} +{{- end -}} + diff --git a/stable/wavefront/templates/api-token-secret.yaml b/stable/wavefront/templates/api-token-secret.yaml new file mode 100644 index 0000000000..f15534d647 --- /dev/null +++ b/stable/wavefront/templates/api-token-secret.yaml @@ -0,0 +1,15 @@ +{{- if .Values.wavefront.token }} +apiVersion: v1 +kind: Secret +metadata: + labels: + app.kubernetes.io/name : {{ template "wavefront.fullname" . }} + helm.sh/chart: {{ template "wavefront.chart" . }} + app.kubernetes.io/managed-by: {{ .Release.Service | quote }} + app.kubernetes.io.instance: {{ .Release.Name | quote }} + app.kubernetes.io/component: collector + name: {{ template "wavefront.fullname" . }} +type: Opaque +data: + api-token: {{ .Values.wavefront.token | b64enc | quote }} +{{- end }} diff --git a/stable/wavefront/templates/collector-cluster-role.yaml b/stable/wavefront/templates/collector-cluster-role.yaml new file mode 100644 index 0000000000..36f821d51a --- /dev/null +++ b/stable/wavefront/templates/collector-cluster-role.yaml @@ -0,0 +1,37 @@ +{{- if and .Values.rbac.create .Values.collector.enabled }} +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app.kubernetes.io/name : {{ template "wavefront.fullname" . }} + helm.sh/chart: {{ template "wavefront.chart" . }} + app.kubernetes.io/managed-by: {{ .Release.Service | quote }} + app.kubernetes.io.instance: {{ .Release.Name | quote }} + app.kubernetes.io/component: collector + kubernetes.io/bootstrapping: rbac-defaults + annotations: + rbac.authorization.kubernetes.io/autoupdate: "true" + name: {{ template "wavefront.collector.fullname" . }} +rules: +- apiGroups: + - "" + resources: + - events + - namespaces + - nodes + - nodes/stats + - pods + - services + verbs: + - get + - list + - watch +- apiGroups: + - extensions + resources: + - deployments + verbs: + - get + - list + - watch +{{- end }} diff --git a/stable/wavefront/templates/collector-config.yaml b/stable/wavefront/templates/collector-config.yaml new file mode 100644 index 0000000000..28a7738f2b --- /dev/null +++ b/stable/wavefront/templates/collector-config.yaml @@ -0,0 +1,14 @@ +{{- if and .Values.collector.discovery.enabled .Values.collector.discovery.config }} +apiVersion: v1 +kind: ConfigMap +metadata: + labels: + app.kubernetes.io/name : {{ template "wavefront.fullname" . }} + helm.sh/chart: {{ template "wavefront.chart" . }} + app.kubernetes.io/managed-by: {{ .Release.Service | quote }} + app.kubernetes.io.instance: {{ .Release.Name | quote }} + app.kubernetes.io/component: collector + name: {{ template "wavefront.collector.fullname" . }}-config +data: +{{ tpl (toYaml .Values.collector.discovery.config) . | indent 2 }} +{{- end }} diff --git a/stable/wavefront/templates/collector-deployment.yaml b/stable/wavefront/templates/collector-deployment.yaml new file mode 100644 index 0000000000..2c9a396302 --- /dev/null +++ b/stable/wavefront/templates/collector-deployment.yaml @@ -0,0 +1,84 @@ +{{- if .Values.collector.enabled }} +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app.kubernetes.io/name : {{ template "wavefront.fullname" . }} + helm.sh/chart: {{ template "wavefront.chart" . }} + app.kubernetes.io/managed-by: {{ .Release.Service | quote }} + app.kubernetes.io.instance: {{ .Release.Name | quote }} + app.kubernetes.io/component: collector + name: {{ template "wavefront.collector.fullname" . }} +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name : {{ template "wavefront.fullname" .}} + app.kubernetes.io/component: collector + template: + metadata: + labels: + app.kubernetes.io/name : {{ template "wavefront.fullname" .}} + app.kubernetes.io/component: collector + spec: + serviceAccountName: {{ template "wavefront.collector.serviceAccountName" . }} + containers: + - name: wavefront-collector + image: {{ .Values.collector.image.repository }}:{{ .Values.collector.image.tag }} + imagePullPolicy: {{ .Values.collector.image.pullPolicy }} + command: + - /wavefront-collector + - --source={{ .Values.collector.kubernetesSource | default "kubernetes.summary_api:''" }} + {{- if and (.Values.kubeStateMetrics.enabled) (not .Values.collector.discovery.enabled) }} + - --source=prometheus:''?url=http://{{ .Release.Name }}-kube-state-metrics:{{ index .Values "kube-state-metrics" "service" "port" }}/metrics + {{- end }} + {{- if .Values.collector.useProxy }} + {{- if .Values.collector.proxyAddress }} + - --sink=wavefront:?proxyAddress={{ .Values.collector.proxyAddress }}{{ template "wavefront.collector.sinkOptions" . }} + {{- else }} + - --sink=wavefront:?proxyAddress={{ template "wavefront.proxy.fullname" . }}:{{ .Values.proxy.port }}{{ template "wavefront.collector.sinkOptions" . }} + {{- end }} + {{- else }} + - --sink=wavefront:?server={{ .Values.wavefront.url }}&token={{ .Values.wavefront.token }}{{ template "wavefront.collector.sinkOptions" . }} + {{- end }} + - --enable-discovery={{ .Values.collector.discovery.enabled }} + {{- if and .Values.collector.discovery.enabled .Values.collector.discovery.config }} + - --discovery-config=/etc/collector/config.yaml + {{- end }} + {{- if .Values.collector.maxProcs }} + - --max-procs={{ .Values.collector.maxProcs }} + {{- end }} + {{- if .Values.collector.interval }} + - --metric-resolution={{ .Values.collector.interval }} + {{- end }} + {{- if .Values.collector.sinkDelay }} + - --sink-export-data-timeout={{ .Values.collector.sinkDelay }} + {{- end }} + {{- if .Values.collector.logVerbosity }} + - --v={{ .Values.collector.logVerbosity }} + {{- end }} + resources: +{{ toYaml .Values.collector.resources | indent 10 }} + volumeMounts: + {{- if and .Values.collector.discovery.enabled .Values.collector.discovery.config }} + - name: config + mountPath: /etc/collector/ + readOnly: true + {{- end }} + {{- if not .Values.openshift.enabled }} + - name: ssl-certs + mountPath: /etc/ssl/certs + readOnly: true + {{- end }} + volumes: + {{- if and .Values.collector.discovery.enabled .Values.collector.discovery.config }} + - name: config + configMap: + name: {{ template "wavefront.collector.fullname" . }}-config + {{- end }} + {{- if not .Values.openshift.enabled }} + - name: ssl-certs + hostPath: + path: /etc/ssl/certs + {{- end }} +{{- end }} diff --git a/stable/wavefront/templates/collector-rbac.yaml b/stable/wavefront/templates/collector-rbac.yaml new file mode 100644 index 0000000000..cc13046a72 --- /dev/null +++ b/stable/wavefront/templates/collector-rbac.yaml @@ -0,0 +1,20 @@ +{{- if and .Values.rbac.create .Values.collector.enabled }} +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + labels: + app.kubernetes.io/name : {{ template "wavefront.fullname" . }} + helm.sh/chart: {{ template "wavefront.chart" . }} + app.kubernetes.io/managed-by: {{ .Release.Service | quote }} + app.kubernetes.io.instance: {{ .Release.Name | quote }} + app.kubernetes.io/component: collector + name: {{ template "wavefront.collector.fullname" . }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: {{ template "wavefront.collector.fullname" . }} +subjects: +- kind: ServiceAccount + name: {{ template "wavefront.collector.serviceAccountName" . }} + namespace: {{ .Release.Namespace }} +{{- end }} diff --git a/stable/wavefront/templates/collector-service-account.yaml b/stable/wavefront/templates/collector-service-account.yaml new file mode 100644 index 0000000000..fb9bd79bf7 --- /dev/null +++ b/stable/wavefront/templates/collector-service-account.yaml @@ -0,0 +1,13 @@ +{{- if and .Values.serviceAccount.create .Values.collector.enabled }} +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + app.kubernetes.io/name : {{ template "wavefront.fullname" . }} + helm.sh/chart: {{ template "wavefront.chart" . }} + app.kubernetes.io/managed-by: {{ .Release.Service | quote }} + app.kubernetes.io.instance: {{ .Release.Name | quote }} + app.kubernetes.io/component: collector + name: {{ template "wavefront.collector.serviceAccountName" . }} + namespace: {{ .Release.Namespace }} +{{- end }} diff --git a/stable/wavefront/templates/proxy-deployment.yaml b/stable/wavefront/templates/proxy-deployment.yaml new file mode 100644 index 0000000000..158a4572cb --- /dev/null +++ b/stable/wavefront/templates/proxy-deployment.yaml @@ -0,0 +1,85 @@ +{{- if .Values.proxy.enabled }} +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app.kubernetes.io/name : {{ template "wavefront.fullname" . }} + helm.sh/chart: {{ template "wavefront.chart" . }} + app.kubernetes.io/managed-by: {{ .Release.Service | quote }} + app.kubernetes.io.instance: {{ .Release.Name | quote }} + app.kubernetes.io/component: proxy + name: {{ template "wavefront.proxy.fullname" . }} +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name : {{ template "wavefront.fullname" .}} + app.kubernetes.io/component: proxy + template: + metadata: + labels: + app.kubernetes.io/name : {{ template "wavefront.fullname" .}} + app.kubernetes.io/component: proxy + spec: + containers: + - name: wavefront-proxy + image: {{ .Values.proxy.image.repository }}:{{ .Values.proxy.image.tag }} + imagePullPolicy: {{ .Values.proxy.image.pullPolicy }} + env: + - name: WAVEFRONT_URL + value: {{ .Values.wavefront.url }}/api + - name: WAVEFRONT_TOKEN + valueFrom: + secretKeyRef: + name: {{ template "wavefront.fullname" . }} + key: api-token + - name: WAVEFRONT_PROXY_ARGS + value: {{ .Values.proxy.args }} + {{- if .Values.proxy.tracePort }} --traceListenerPorts {{ .Values.proxy.tracePort }}{{- end -}} + {{- if .Values.proxy.jaegerPort }} --traceJaegerListenerPorts {{ .Values.proxy.jaegerPort }}{{- end -}} + {{- if .Values.proxy.zipkinPort }} --traceZipkinListenerPorts {{ .Values.proxy.zipkinPort }}{{- end -}} + {{- if .Values.proxy.traceSamplingRate }} --traceSamplingRate {{ .Values.proxy.traceSamplingRate }}{{- end -}} + {{- if .Values.proxy.traceSamplingDuration }} --traceSamplingDuration {{ .Values.proxy.traceSamplingDuration }}{{- end -}} + {{- if .Values.proxy.preprocessor }} --preprocessorConfigFile /etc/wavefront/wavefront-proxy/preprocessor/rules.yaml{{- end -}} + {{- if .Values.proxy.heap }} + - name: JAVA_HEAP_USAGE + value: {{ .Values.proxy.heap | quote }} + {{- end }} + ports: + - containerPort: {{ .Values.proxy.port }} + protocol: TCP + {{- if .Values.proxy.tracePort }} + - containerPort: {{ .Values.proxy.tracePort }} + protocol: TCP + {{- end }} + {{- if .Values.proxy.jaegerPort }} + - containerPort: {{ .Values.proxy.jaegerPort }} + protocol: TCP + {{- end }} + {{- if .Values.proxy.zipkinPort }} + - containerPort: {{ .Values.proxy.zipkinPort }} + protocol: TCP + {{- end }} + securityContext: + privileged: false + volumeMounts: + {{- if .Values.proxy.preprocessor }} + - name: preprocessor + mountPath: /etc/wavefront/wavefront-proxy/preprocessor + {{- end }} + {{- if .Values.openshift.enabled }} + - name: spool + mountPath: /var/spool/wavefront-proxy + {{- end }} + volumes: + {{- if .Values.proxy.preprocessor }} + - name: preprocessor + configMap: + name: {{ template "wavefront.proxy.fullname" . }}-preprocessor + {{- end }} + {{- if .Values.openshift.enabled }} + - name: spool + persistentVolumeClaim: + claimName: {{ .Values.openshift.pvcName | quote }} + {{- end }} +{{- end }} diff --git a/stable/wavefront/templates/proxy-preprocessor-config.yaml b/stable/wavefront/templates/proxy-preprocessor-config.yaml new file mode 100644 index 0000000000..9094c56f94 --- /dev/null +++ b/stable/wavefront/templates/proxy-preprocessor-config.yaml @@ -0,0 +1,14 @@ +{{- if .Values.proxy.preprocessor }} +apiVersion: v1 +kind: ConfigMap +metadata: + labels: + app.kubernetes.io/name : {{ template "wavefront.fullname" . }} + helm.sh/chart: {{ template "wavefront.chart" . }} + app.kubernetes.io/managed-by: {{ .Release.Service | quote }} + app.kubernetes.io.instance: {{ .Release.Name | quote }} + app.kubernetes.io/component: proxy + name: {{ template "wavefront.proxy.fullname" . }}-preprocessor +data: +{{ tpl (toYaml .Values.proxy.preprocessor) . | indent 2 }} +{{- end }} diff --git a/stable/wavefront/templates/proxy-service.yaml b/stable/wavefront/templates/proxy-service.yaml new file mode 100644 index 0000000000..591d4528ac --- /dev/null +++ b/stable/wavefront/templates/proxy-service.yaml @@ -0,0 +1,35 @@ +{{- if .Values.proxy.enabled }} +apiVersion: v1 +kind: Service +metadata: + labels: + app.kubernetes.io/name : {{ template "wavefront.fullname" . }} + helm.sh/chart: {{ template "wavefront.chart" . }} + app.kubernetes.io/managed-by: {{ .Release.Service | quote }} + app.kubernetes.io.instance: {{ .Release.Name | quote }} + app.kubernetes.io/component: proxy + name: {{ template "wavefront.proxy.fullname" . }} +spec: + ports: + - name: wavefront + port: {{ .Values.proxy.port }} + protocol: TCP + {{- if .Values.proxy.tracePort }} + - name: wavefront-trace + port: {{ .Values.proxy.tracePort }} + protocol: TCP + {{- end }} + {{- if .Values.proxy.jaegerPort }} + - name: jaeger + port: {{ .Values.proxy.jaegerPort }} + protocol: TCP + {{- end }} + {{- if .Values.proxy.zipkinPort }} + - name: zipkin + port: {{ .Values.proxy.zipkinPort }} + protocol: TCP + {{- end }} + selector: + app.kubernetes.io/name : {{ template "wavefront.fullname" .}} + app.kubernetes.io/component: proxy +{{ end }} diff --git a/stable/wavefront/values.yaml b/stable/wavefront/values.yaml new file mode 100644 index 0000000000..d2e1d43a50 --- /dev/null +++ b/stable/wavefront/values.yaml @@ -0,0 +1,194 @@ +## Default values for Wavefront + +## This is a unique name for the cluster +## All metrics will receive a `cluster` tag with this value +## Required +clusterName: KUBERNETES_CLUSTER_NAME + + +## Wavefront URL (cluster) and API Token +## Required +wavefront: + url: https://YOUR_CLUSTER.wavefront.com + token: YOUR_API_TOKEN + + +## Wavefront Collector is responsible to get all Kubernetes metrics from your cluster. +## It will capture Kubernetes resources metrics available from the kubelets, +## as well as auto-discovery capabilities. +collector: + enabled: true + image: + repository: wavefronthq/wavefront-kubernetes-collector + tag: 0.9.7 + pullPolicy: IfNotPresent + + ## If set to true, metrics will be sent to Wavefront via a Wavefront Proxy. + ## When true you must either specify a value for `collector.proxyAddress` or set `proxy.enabled` to true + ## If set to false, metrics will be sent to Wavefront via the Direct Ingestion API + useProxy: true + + ## Can be used to specify a specific address for the Wavefront Proxy + ## The proxy can be anywhere network reachable including outside of the cluster + ## Required if `collector.useProxy` is true and `proxy.enabled` is false + # proxyAddress: wavefront-proxy:2878 + + ## This is the Kubelet summary api endpoint and options. + ## Ref: https://github.com/wavefrontHQ/wavefront-kubernetes-collector/blob/master/docs/configuration.md#kubernetes-source + # kubernetesSource: kubernetes.summary_api:'' + ## If using Openshift (see below to enable) use the following for kubernetesSource + # kubernetesSource: kubernetes.summary_api:${MASTER_URL}?useServiceAccount=true&kubeletHttps=true&kubeletPort=10250 + + ## If set to true, any Kubernetes labels will be applied to metrics as tags. Defaults to false. + includeLabels: true + + ## If set to true, all container metrics will be sent to Wavefront. + ## When set to false, container level metrics are skipped (pod level and above are still sent to Wavefront). Defaults to true. + # includeContainers: true + + ## The global prefix to be added for Kubernetes metrics. Defaults to `kubernetes.`. + ## This does not apply to other sources. Use source level prefixes for sources other than the Kubernetes source. + # prefix: kubernetes. + + ## max number of CPUs that can be used simultaneously. Less than 1 for default (number of cores) + # maxProcs: 0 + + ## The resolution at which the collector will retain metrics. (default 1m) + # interval: 1m + + ## Timeout for exporting data (default 20s) + # sinkDelay: 20s + + ## log level. Uses V logs (glog) + # logVerbosity: 0 + + ## Discovery capabilities of Wavefront Collector + discovery: + enabled: true + + ## Rules based discovery collection configuration + ## Ref: https://github.com/wavefrontHQ/wavefront-kubernetes-collector/blob/master/docs/discovery.md#rules-based-discovery + # config: + # config.yaml: | + # global: + # discovery_interval: 10m + # prom_configs: + # - name: kube-dns-discovery + # labels: + # k8s-app: kube-dns + # port: 10055 + # path: /metrics + # scheme: http + # source: kube-dns + # prefix: kube.dns. + # tags: + # env: prod + # collector: wavefront-collector + + ## Wavefront Collector resource requests and limits + ## Make sure to keep requests and limits equal to keep the pods in the Guaranteed QoS class + ## Ref: http://kubernetes.io/docs/user-guide/compute-resources/ + resources: + requests: + cpu: 200m + memory: 256Mi + limits: + cpu: 200m + memory: 256Mi + + +## Wavefront Proxy is a metrics forwarder that is used to relay metrics to the Wavefront SaaS service. +## It can receive metrics from the Wavefront Collector as well as other metrics collection services +## within your cluster. The proxy also supports preprocessor rules to allow you to further filter +## and enhance your metric names, and tags. Should network connectivity fall between the proxy and +## Wavefront SaaS service, the proxy will buffer metrics, which will be flushed when connectivity resumes. +## Ref: https://docs.wavefront.com/proxies.html +proxy: + enabled: true + image: + repository: wavefronthq/proxy + tag: 4.35 + pullPolicy: IfNotPresent + + ## The port number the proxy will listen on for metrics in Wavefront data format. + ## This is usually 2878 + port: 2878 + + ## The port nubmer the proxy will listen on for tracing spans in Wavefront trace data format. + ## This is usually 30000 + # tracePort: 30000 + + ## The port nubmer the proxy will listen on for tracing spans in Jaeger data format. + ## This is usually 30001 + # jaegerPort: 30001 + + ## The port nubmer the proxy will listen on for tracing spans in Zipkin data format. + ## This is usually 9411 + # zipkinPort: 9411 + + ## Sampling rate to apply to tracing spans sent to the proxy. + ## This rate is applied to all data formats the proxy is listening on. + ## Value should be between 0.0 and 1.0. Default is 1.0 + # traceSamplingRate: 0.25 + + ## When this is set to a value greater than 0, + ## spans that are greater than or equal to this value will be sampled. + # traceSamplingDuration: 500 + + ## Any configuration property can be passed to the proxy via command line args in + ## in the format: `-- `. Multiple properties can be specified + ## separated by whitespace. + ## Ref: https://docs.wavefront.com/proxies_configuring.html + # args: + + ## Proxy is a Java application. By default Java will consume upto 4G of heap memory. + ## This can be used to override the default. Uses the `-Xmx` command line option for java + # heap: 1024m + + ## Preprocessor rules is a powerful way to apply filtering or to enhance metrics as they flow + ## through the proxy. You can configure the rules here. By default a rule to drop Kubernetes + ## generated labels is applied to remove unecessary and often noisy tags. + ## Ref: https://docs.wavefront.com/proxies_preprocessor_rules.html + preprocessor: + rules.yaml: | + '2878': + - rule : drop-generated-label-tags + action : dropTag + tag : label\.(controller-revision-hash|pod-template-.*|.*kubernetes\.io.*) + # - rule : add-cluster-tag + # action : addTag + # tag : cluster + # value : {{ .Values.clusterName | quote }} + + +## Specifies whether RBAC resources should be created +rbac: + create: true + + +## Specifies whether a ServiceAccount should be created +serviceAccount: + 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: + + +## kube-state-metrics are used to get metrics about the state of the Kubernetes scheduler +## If enabled the kube-state-metrics chart will be installed as a subchart and the collector +## will be configured to capture metrics. +kubeStateMetrics: + enabled: true + + +## Openshift integration can be enabled here +## If enabled is true, you must specify `collector.kubernetesSource` to be a valid +## summary api endpoint within your Openshift environment. +openshift: + enabled: false + + ## Wavefront proxy requires a persistent volume claim for its metrics buffers in Openshift + ## If `proxy.enabled` is true, this must be set to the name of a persistent volume claim + ## that the proxy can use for its buffers. + # pvcName: wavefront-storage