Commit 67f59f3c by Guangbo Chen

Bump datadog to v1.33.0

parent 46abca71
apiVersion: v1
name: datadog
version: 1.21.0
appVersion: 6.9.0
version: 1.33.0
appVersion: 6.13.0
description: DataDog Agent
keywords:
- monitoring
......@@ -16,7 +17,11 @@ maintainers:
email: haissam@datadoghq.com
- name: irabinovitch
email: ilan@datadoghq.com
- name: xvello
email: xavier.vello@datadoghq.com
- name: charlyf
email: charly@datadoghq.com
- name: mfpierre
email: pierre.margueritte@datadoghq.com
- name: clamoriniere
email: cedric.lamoriniere@datadoghq.com
- name: xlucas
email: xavier.lucas@datadoghq.com
approvers:
- hkaj
- irabinovitch
- xvello
- charlyf
- mfpierre
- clamoriniere
- xlucas
reviewers:
- hkaj
- irabinovitch
- xvello
- charlyf
- mfpierre
- clamoriniere
- xlucas
# Datadog
[Datadog](https://www.datadoghq.com/) is a hosted infrastructure monitoring platform.
[Datadog](https://www.datadoghq.com/) is a hosted infrastructure monitoring platform. This chart adds the Datadog Agent to all nodes in your cluster via a DaemonSet. It also optionally depends on the [kube-state-metrics chart](https://github.com/kubernetes/charts/tree/master/stable/kube-state-metrics). For more information about monitoring Kubernetes with Datadog, please refer to the [Datadog documentation website](https://docs.datadoghq.com/agent/basic_agent_usage/kubernetes/).
## Introduction
Datadog [offers two variants](https://hub.docker.com/r/datadog/agent/tags/), switch to a `-jmx` tag if you need to run JMX/java integrations. The chart also supports running [the standalone dogstatsd image](https://hub.docker.com/r/datadog/dogstatsd/tags/).
This chart adds the Datadog Agent to all nodes in your cluster via a DaemonSet. It also optionally depends on the [kube-state-metrics chart](https://github.com/kubernetes/charts/tree/master/stable/kube-state-metrics). For more information about monitoring Kubernetes with Datadog, please refer to the [Datadog documentation website](https://docs.datadoghq.com/agent/basic_agent_usage/kubernetes/).
See the [Datadog JMX integration](https://docs.datadoghq.com/integrations/java/) to learn more.
For more details of the datadog-agent v6 environment configurations, please reference the [docs](https://github.com/DataDog/datadog-agent/tree/master/Dockerfiles/agent) here.
## Prerequisites
Kubernetes 1.4+ or OpenShift 3.4+, note that:
* the Datadog Agent supports Kubernetes 1.3+
* The Datadog chart's defaults are tailored to Kubernetes 1.7.6+, see [Datadog Agent legacy Kubernetes versions documentation](https://github.com/DataDog/datadog-agent/tree/master/Dockerfiles/agent#legacy-kubernetes-versions) for adjustments you might need to make for older versions
## Quick start
By default, the Datadog Agent runs in a DaemonSet. It can alternatively run inside a Deployment for special use cases.
**Note:** simultaneous DaemonSet + Deployment installation within a single release will be deprecated in a future version, requiring two releases to achieve this.
### Installing the Datadog Chart
To install the chart with the release name `<RELEASE_NAME>`, retrieve your Datadog API key from your [Agent Installation Instructions](https://app.datadoghq.com/account/settings#agent/kubernetes) and run:
```bash
helm install --name <RELEASE_NAME> \
--set datadog.apiKey=<DATADOG_API_KEY> stable/datadog
```
By default, this Chart creates a Secret and puts an API key in that Secret.
However, you can use manually created secret by setting the `datadog.apiKeyExistingSecret` value. After a few minutes, you should see hosts and metrics being reported in Datadog.
labels:
io.cattle.role: cluster # options are cluster/project
questions:
#image configurations
- variable: defaultImage
default: "true"
default: true
description: "Use default Datadog image or specify a custom one"
label: Use Default Datadog Image
type: boolean
......@@ -9,33 +11,33 @@ questions:
group: "Container Images"
subquestions:
- variable: image.repository
default: "datadog/agent"
default: "ranchercharts/datadog-agent"
description: "Datadog image name"
type: string
label: Datadog Image Name
- variable: image.tag
default: "6.9.0"
default: "6.13.0"
description: "Datadog Image Tag"
type: string
label: Datadog Image Tag
- variable: clusterAgent.image.repository
default: "datadog/cluster-agent"
default: "ranchercharts/datadog-cluster-agent"
description: "Datadog clusterAgent image name"
type: string
label: Datadog ClusterAgent Image Name
- variable: clusterAgent.image.tag
default: "1.1.0"
default: "1.3.2"
description: "Datadog ClusterAgent Image Tag"
type: string
label: Datadog ClusterAgent Image Tag
- variable: kubeStateMetrics.image.repository
default: "quay.io/coreos/kube-state-metrics"
- variable: kube-state-metrics.image.repository
default: "ranchercharts/coreos-kube-state-metrics"
description: "KubeState image name"
type: string
label: KubeState Image Name
show_if: "kubeStateMetrics.enabled=true&&defaultImage=false"
- variable: kubeStateMetrics.image.tag
default: "v1.4.0"
- variable: kube-state-metrics.image.tag
default: "v1.7.2"
description: "KubeState Image Tag"
type: string
label: KubeState Image Tag
......@@ -153,7 +155,7 @@ questions:
type: string
label: Extract Node Labels As Tags
group: "Datadog Tagging"
#daemonset configurations
# DaemonSet configurations
- variable: daemonset.rkeETCDControlPlane
default: true
description: "Configure Datadog Agent pods with the required tolerations to be deployed on the RKE etcd and control plane."
......
dependencies:
- name: kube-state-metrics
repository: https://kubernetes-charts.storage.googleapis.com/
version: 0.13.1
digest: sha256:4eeef86887d04fc0fadad89d23d9aba59aac95bdf70b3122046bcdb3fde8a10d
generated: 2019-02-11T11:42:33.861791+08:00
version: 2.2.3
digest: sha256:28fd41002af09316b9f614d320ea4171db39a144b595c68f616c546dd5292709
generated: "2019-08-13T09:53:34.977562+02:00"
dependencies:
- name: kube-state-metrics
version: 0.13.1
version: ~2.2.3
repository: https://kubernetes-charts.storage.googleapis.com/
condition: kubeStateMetrics.enabled
......@@ -44,13 +44,13 @@ Create an application key at https://app.datadoghq.com/account/settings#api
{{- end }}
{{- end }}
{{- if not .Values.clusterAgent.token }}
{{- if and (not .Values.clusterAgent.token) (not .Values.clusterAgent.tokenExistingSecret) }}
##############################################################################
#### INFO: You did not set a clusterAgent.token ####
##############################################################################
Because you enabled the Cluster Agent but did not provide a token, a random token was generated.
Because you enabled the Cluster Agent but did not either provide a token or a reference to an existing token via '{{ .Values.clusterAgent.tokenExistingSecret }}', a random token was generated.
This token is used to secure the communication between the Agents and the Cluster Agent.
Make sure to recreate all pods on upgrade (with the --recreate-pods flag) to ensure all
......@@ -64,6 +64,23 @@ agents use the same shared token.
The datadog agent is listening on port 8126.
{{- end }}
{{- if (and (.Values.daemonset.enabled) (.Values.deployment.enabled)) }}
#################################################################
#### WARNING: Deprecation notice ####
#################################################################
Simultaneous DaemonSet + Deployment installation within a single
release will be deprecated in a future version. You will still be
able to run both as separate releases with separate value files.
Running as a Deployment is not necessary for event collection
anymore, thanks to the leader election feature.
We encourage you to migrate to a single DaemonSet, or split your
chart if your use case still requires a separate Deployment.
{{- end }}
{{- if .Values.datadog.autoconf }}
#################################################################
......@@ -72,7 +89,7 @@ The datadog agent is listening on port 8126.
The autoconf value is deprecated, Autodiscovery templates can now
be safely moved to the confd value. As a temporary measure, both
values were merged into the {{ template "datadog.confd.fullname" . }} configmap,
values were merged into the {{ template "datadog.fullname" . }}-confd configmap,
but this will be removed in a future chart release.
Please note that duplicate file names may have conflicted during
the merge. In that case, the confd entry will take precedence.
......
......@@ -9,6 +9,7 @@ Expand the name of the chart.
{{/*
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).
And depending on the resources the name is completed with an extension.
If release name contains chart name it will be used as a full name.
*/}}
{{- define "datadog.fullname" -}}
......@@ -25,6 +26,13 @@ If release name contains chart name it will be used as a full name.
{{- end -}}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "datadog.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Return secret name to be used based on provided values.
*/}}
{{- define "datadog.apiSecretName" -}}
......@@ -41,27 +49,14 @@ Return secret name to be used based on provided values.
{{- end -}}
{{/*
Create a default fully qualified confd name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
*/}}
{{- define "datadog.confd.fullname" -}}
{{- printf "%s-datadog-confd" .Release.Name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Create a default fully qualified checksd name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
Return secret name to be used based on provided values.
*/}}
{{- define "datadog.checksd.fullname" -}}
{{- printf "%s-datadog-checksd" .Release.Name | trunc 63 | trimSuffix "-" -}}
{{- define "clusterAgent.tokenSecretName" -}}
{{- if not .Values.clusterAgent.tokenExistingSecret -}}
{{- include "datadog.fullname" . -}}-cluster-agent
{{- else -}}
{{- .Values.clusterAgent.tokenExistingSecret -}}
{{- end -}}
{{/*
Create a default fully qualified cluster-agent name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
*/}}
{{- define "datadog.clusterAgent.fullname" -}}
{{- printf "%s-cluster-agent" .Release.Name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
......
......@@ -10,12 +10,11 @@ metadata:
release: {{ .Release.Name | quote }}
spec:
service:
name: {{ template "datadog.clusterAgent.fullname" . }}-metrics-api
name: {{ template "datadog.fullname" . }}-cluster-agent-metrics-api
namespace: {{ .Release.Namespace }}
version: v1beta1
insecureSkipTLSVerify: true
group: external.metrics.k8s.io
groupPriorityMinimum: 100
versionPriority: 100
priority: 100
{{- end -}}
{{- if and .Values.clusterAgent.enabled .Values.clusterAgent.clusterChecks.enabled .Values.clusterchecksDeployment.enabled -}}
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: {{ template "datadog.fullname" . }}-clusterchecks
labels:
app: "{{ template "datadog.fullname" . }}"
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
release: {{ .Release.Name | quote }}
heritage: {{ .Release.Service | quote }}
spec:
replicas: {{ .Values.clusterchecksDeployment.replicas }}
template:
metadata:
labels:
app: {{ template "datadog.fullname" . }}-clusterchecks
name: {{ template "datadog.fullname" . }}-clusterchecks
spec:
{{- if .Values.clusterchecksDeployment.rbac.dedicated }}
serviceAccountName: {{ if .Values.rbac.create }}{{ template "datadog.fullname" . }}-cluster-checks{{ else }}"{{ .Values.clusterchecksDeployment.rbac.serviceAccountName }}"{{ end }}
{{- else }}
serviceAccountName: {{ if .Values.rbac.create }}{{ template "datadog.fullname" . }}{{ else }}"{{ .Values.rbac.serviceAccountName }}"{{ end }}
{{- end }}
containers:
- name: {{ default .Chart.Name .Values.datadog.name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
env:
- name: DD_API_KEY
valueFrom:
secretKeyRef:
name: {{ template "datadog.apiSecretName" . }}
key: api-key
- name: DD_EXTRA_CONFIG_PROVIDERS
value: "clusterchecks"
- {name: DD_HEALTH_PORT, value: "5555"}
# Cluster checks
- name: DD_CLUSTER_AGENT_KUBERNETES_SERVICE_NAME
value: {{ template "datadog.fullname" . }}-cluster-agent
- name: DD_CLUSTER_AGENT_AUTH_TOKEN
valueFrom:
secretKeyRef:
name: {{ template "clusterAgent.tokenSecretName" . }}
key: token
- name: DD_CLUSTER_AGENT_ENABLED
value: {{ .Values.clusterAgent.enabled | quote }}
- {name: DD_EXTRA_CONFIG_PROVIDERS, value: "clusterchecks"}
# Remove unused features
- {name: DD_APM_ENABLED, value: "false"}
- {name: DD_PROCESS_AGENT_ENABLED, value: "false"}
- {name: DD_LOGS_ENABLED, value: "false"}
# Safely run alongside the daemonset
- {name: DD_ENABLE_METADATA_COLLECTION, value: "false"}
- name: DD_HOSTNAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
{{- if .Values.clusterchecksDeployment.env }}
{{ toYaml .Values.clusterchecksDeployment.env | indent 10 }}
{{- end }}
resources:
{{ toYaml .Values.clusterchecksDeployment.resources | indent 10 }}
volumeMounts:
- {name: s6-run, mountPath: /var/run/s6}
- {name: remove-corechecks, mountPath: /etc/datadog-agent/conf.d}
{{- if .Values.clusterchecksDeployment.livenessProbe }}
livenessProbe:
{{ toYaml .Values.clusterchecksDeployment.livenessProbe | indent 10 }}
{{- else }}
livenessProbe:
httpGet:
path: /health
port: 5555
initialDelaySeconds: 15
periodSeconds: 15
timeoutSeconds: 5
successThreshold: 1
failureThreshold: 6
{{- end }}
volumes:
- {name: s6-run, emptyDir: {}}
- {name: remove-corechecks, emptyDir: {}}
affinity:
{{- if .Values.clusterchecksDeployment.affinity }}
{{ toYaml .Values.clusterchecksDeployment.affinity | indent 8 }}
{{- else }}
# Ensure we only run one worker per node, to avoid name collisions
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchLabels:
app: {{ template "datadog.fullname" . }}-clusterchecks
topologyKey: kubernetes.io/hostname
{{- end }}
{{- if .Values.clusterchecksDeployment.nodeSelector }}
nodeSelector:
{{ toYaml .Values.clusterchecksDeployment.nodeSelector | indent 8 }}
{{- end }}
{{- if .Values.clusterchecksDeployment.tolerations }}
tolerations:
{{ toYaml .Values.clusterchecksDeployment.tolerations | indent 8 }}
{{- end }}
{{ end }}
{{- if .Values.rbac.create -}}
{{- if and .Values.rbac.create .Values.clusterAgent.enabled .Values.clusterAgent.clusterChecks.enabled .Values.clusterchecksDeployment.enabled -}}
apiVersion: {{ template "rbac.apiVersion" . }}
kind: ClusterRoleBinding
metadata:
......@@ -7,13 +7,23 @@ metadata:
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
release: {{ .Release.Name | quote }}
heritage: {{ .Release.Service | quote }}
name: {{ template "datadog.fullname" . }}
name: {{ template "datadog.fullname" . }}-cluster-checks
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: {{ template "datadog.fullname" . }}
subjects:
- kind: ServiceAccount
name: {{ template "datadog.fullname" . }}
name: {{ template "datadog.fullname" . }}-cluster-checks
namespace: {{ .Release.Namespace }}
---
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
app: "{{ template "datadog.fullname" . }}"
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
heritage: {{ .Release.Service | quote }}
release: {{ .Release.Name | quote }}
name: {{ template "datadog.fullname" . }}-cluster-checks
{{- end -}}
{{- if and .Values.rbac.create .Values.clusterAgent.enabled .Values.clusterAgent.metricsProvider.enabled -}}
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
app: "{{ template "datadog.fullname" . }}"
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
release: {{ .Release.Name | quote }}
heritage: {{ .Release.Service | quote }}
name: {{ template "datadog.clusterAgent.fullname" . }}:system:auth-delegator
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: system:auth-delegator
subjects:
- kind: ServiceAccount
name: {{ template "datadog.clusterAgent.fullname" . }}
namespace: {{ .Release.Namespace }}
{{- end -}}
{{- if and .Values.rbac.create .Values.clusterAgent.enabled -}}
apiVersion: {{ template "rbac.apiVersion" . }}
kind: ClusterRoleBinding
metadata:
labels:
app: "{{ template "datadog.fullname" . }}"
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
release: {{ .Release.Name | quote }}
heritage: {{ .Release.Service | quote }}
name: {{ template "datadog.clusterAgent.fullname" . }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: {{ template "datadog.clusterAgent.fullname" . }}
subjects:
- kind: ServiceAccount
name: {{ template "datadog.clusterAgent.fullname" . }}
namespace: {{ .Release.Namespace }}
{{- end -}}
......@@ -7,7 +7,7 @@ metadata:
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
heritage: {{ .Release.Service | quote }}
release: {{ .Release.Name | quote }}
name: {{ template "datadog.clusterAgent.fullname" . }}
name: {{ template "datadog.fullname" . }}-cluster-agent
rules:
- apiGroups:
- ""
......@@ -70,4 +70,53 @@ rules:
- "/healthz"
verbs:
- get
---
apiVersion: {{ template "rbac.apiVersion" . }}
kind: ClusterRoleBinding
metadata:
labels:
app: "{{ template "datadog.fullname" . }}"
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
release: {{ .Release.Name | quote }}
heritage: {{ .Release.Service | quote }}
name: {{ template "datadog.fullname" . }}-cluster-agent
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: {{ template "datadog.fullname" . }}-cluster-agent
subjects:
- kind: ServiceAccount
name: {{ template "datadog.fullname" . }}-cluster-agent
namespace: {{ .Release.Namespace }}
---
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
app: "{{ template "datadog.fullname" . }}"
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
heritage: {{ .Release.Service | quote }}
release: {{ .Release.Name | quote }}
name: {{ template "datadog.fullname" . }}-cluster-agent
{{- end }}
{{- if and .Values.rbac.create .Values.clusterAgent.enabled .Values.clusterAgent.metricsProvider.enabled }}
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
app: "{{ template "datadog.fullname" . }}"
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
release: {{ .Release.Name | quote }}
heritage: {{ .Release.Service | quote }}
name: {{ template "datadog.fullname" . }}-cluster-agent:system:auth-delegator
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: system:auth-delegator
subjects:
- kind: ServiceAccount
name: {{ template "datadog.fullname" . }}-cluster-agent
namespace: {{ .Release.Namespace }}
{{- end -}}
{{- if not .Values.clusterAgent.tokenExistingSecret }}
{{- if .Values.clusterAgent.enabled -}}
apiVersion: v1
kind: Secret
metadata:
name: {{ template "datadog.clusterAgent.fullname" . }}
name: {{ template "datadog.fullname" . }}-cluster-agent
labels:
app: "{{ template "datadog.fullname" . }}"
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
......@@ -16,3 +18,5 @@ data:
token: {{ randAlphaNum 32 | b64enc | quote }}
{{ end }}
{{- end }}
{{ end }}
\ No newline at end of file
{{- if .Values.clusterAgent.enabled -}}
apiVersion: v1
kind: Service
metadata:
name: {{ template "datadog.clusterAgent.fullname" . }}
labels:
app: "{{ template "datadog.fullname" . }}"
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
release: {{ .Release.Name | quote }}
heritage: {{ .Release.Service | quote }}
spec:
type: ClusterIP
selector:
app: {{ template "datadog.clusterAgent.fullname" . }}
ports:
- port: 5005
name: agentport
protocol: TCP
{{ end }}
{{- if .Values.clusterAgent.enabled -}}
apiVersion: v1
kind: Service
metadata:
name: {{ template "datadog.fullname" . }}-cluster-agent
labels:
app: "{{ template "datadog.fullname" . }}"
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
release: {{ .Release.Name | quote }}
heritage: {{ .Release.Service | quote }}
spec:
type: ClusterIP
selector:
app: {{ template "datadog.fullname" . }}-cluster-agent
ports:
- port: 5005
name: agentport
protocol: TCP
{{ end }}
{{- if and .Values.clusterAgent.enabled .Values.clusterAgent.metricsProvider.enabled -}}
---
apiVersion: v1
kind: Service
metadata:
name: {{ template "datadog.clusterAgent.fullname" . }}-metrics-api
name: {{ template "datadog.fullname" . }}-cluster-agent-metrics-api
labels:
app: "{{ template "datadog.fullname" . }}"
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
......@@ -11,7 +32,7 @@ metadata:
spec:
type: ClusterIP
selector:
app: {{ template "datadog.clusterAgent.fullname" . }}
app: {{ template "datadog.fullname" . }}-cluster-agent
ports:
- port: 443
name: metricsapi
......
{{- if and .Values.rbac.create .Values.clusterAgent.enabled .Values.clusterAgent.metricsProvider.enabled -}}
apiVersion: {{ template "rbac.apiVersion" . }}
kind: RoleBinding
metadata:
labels:
app: "{{ template "datadog.fullname" . }}"
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
release: {{ .Release.Name | quote }}
heritage: {{ .Release.Service | quote }}
name: "{{ template "datadog.clusterAgent.fullname" . }}"
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: extension-apiserver-authentication-reader
subjects:
- kind: ServiceAccount
name: {{ template "datadog.clusterAgent.fullname" . }}
namespace: {{ .Release.Namespace }}
{{- end -}}
{{- if not .Values.datadog.apiKeyExistingSecret }}
apiVersion: v1
kind: Secret
metadata:
name: {{ template "datadog.fullname" . }}
labels:
app: "{{ template "datadog.fullname" . }}"
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
release: {{ .Release.Name | quote }}
heritage: {{ .Release.Service | quote }}
type: Opaque
data:
api-key: {{ default "MISSING" .Values.datadog.apiKey | b64enc | quote }}
{{- end }}
......@@ -2,7 +2,7 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ template "datadog.checksd.fullname" . }}
name: {{ template "datadog.fullname" . }}-checksd
labels:
app: "{{ template "datadog.fullname" . }}"
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
......
{{- if and .Values.rbac.create .Values.clusterAgent.enabled -}}
{{- if .Values.clusterAgent.confd }}
apiVersion: v1
kind: ServiceAccount
kind: ConfigMap
metadata:
name: {{ template "datadog.fullname" . }}-cluster-agent-confd
labels:
app: "{{ template "datadog.fullname" . }}"
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
heritage: {{ .Release.Service | quote }}
release: {{ .Release.Name | quote }}
name: {{ template "datadog.clusterAgent.fullname" . }}
heritage: {{ .Release.Service | quote }}
annotations:
checksum/confd-config: {{ tpl (toYaml .Values.clusterAgent.confd) . | sha256sum }}
data:
{{ tpl (toYaml .Values.clusterAgent.confd) . | indent 2 }}
{{- end -}}
......@@ -2,7 +2,7 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ template "datadog.clusterAgent.fullname" . }}
name: {{ template "datadog.fullname" . }}-cluster-agent
labels:
app: "{{ template "datadog.fullname" . }}"
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
......@@ -12,13 +12,34 @@ spec:
replicas: {{ .Values.clusterAgent.replicas }}
selector:
matchLabels:
app: {{ template "datadog.clusterAgent.fullname" . }}
app: {{ template "datadog.fullname" . }}-cluster-agent
template:
metadata:
labels:
app: {{ template "datadog.clusterAgent.fullname" . }}
name: {{ template "datadog.clusterAgent.fullname" . }}
app: {{ template "datadog.fullname" . }}-cluster-agent
name: {{ template "datadog.fullname" . }}-cluster-agent
annotations:
ad.datadoghq.com/{{ .Values.clusterAgent.containerName }}.check_names: '["prometheus"]'
ad.datadoghq.com/{{ .Values.clusterAgent.containerName }}.init_configs: '[{}]'
ad.datadoghq.com/{{ .Values.clusterAgent.containerName }}.instances: |
[{
"prometheus_url": "http://%%host%%:5000/metrics",
"namespace": "datadog.cluster_agent",
"metrics": [
"go_goroutines", "go_memstats_*", "process_*",
"api_requests",
"datadog_requests", "external_metrics",
"cluster_checks_*"
]
}]
{{- if .Values.clusterAgent.podAnnotations }}
{{ toYaml .Values.clusterAgent.podAnnotations | indent 8 }}
{{- end }}
spec:
{{- if .Values.clusterAgent.priorityClassName }}
priorityClassName: "{{ .Values.clusterAgent.priorityClassName }}"
{{- end }}
{{- if .Values.clusterAgent.image.pullSecrets }}
imagePullSecrets:
{{ toYaml .Values.clusterAgent.image.pullSecrets | indent 8 }}
......@@ -28,7 +49,7 @@ spec:
image: "{{ .Values.clusterAgent.image.repository }}:{{ .Values.clusterAgent.image.tag }}"
imagePullPolicy: {{ .Values.clusterAgent.image.pullPolicy }}
resources:
{{ toYaml .Values.clusterAgent.resources | indent 12 }}
{{ toYaml .Values.clusterAgent.resources | indent 10 }}
ports:
- containerPort: 5005
name: agentport
......@@ -53,6 +74,18 @@ spec:
name: {{ template "datadog.appKeySecretName" . }}
key: app-key
{{- end }}
{{- if .Values.clusterAgent.clusterChecks.enabled }}
- name: DD_CLUSTER_CHECKS_ENABLED
value: {{ .Values.clusterAgent.clusterChecks.enabled | quote }}
- name: DD_EXTRA_CONFIG_PROVIDERS
value: "kube_services"
- name: DD_EXTRA_LISTENERS
value: "kube_services"
{{- end }}
{{- if .Values.datadog.clusterName }}
- name: DD_CLUSTER_NAME
value: {{ .Values.datadog.clusterName | quote }}
{{- end }}
{{- if .Values.datadog.site }}
- name: DD_SITE
value: {{ .Values.datadog.site | quote }}
......@@ -70,17 +103,20 @@ spec:
{{- if .Values.datadog.leaderLeaseDuration }}
- name: DD_LEADER_LEASE_DURATION
value: {{ .Values.datadog.leaderLeaseDuration | quote }}
{{- else if .Values.clusterAgent.clusterChecks.enabled }}
- name: DD_LEADER_LEASE_DURATION
value: "15"
{{- end }}
{{- if .Values.datadog.collectEvents }}
- name: DD_COLLECT_KUBERNETES_EVENTS
value: {{ .Values.datadog.collectEvents | quote}}
- name: DD_CLUSTER_AGENT_KUBERNETES_SERVICE_NAME
value: {{ template "datadog.clusterAgent.fullname" . }}
value: {{ template "datadog.fullname" . }}-cluster-agent
{{- end }}
- name: DD_CLUSTER_AGENT_AUTH_TOKEN
valueFrom:
secretKeyRef:
name: {{ template "datadog.clusterAgent.fullname" . }}
name: {{ template "clusterAgent.tokenSecretName" . }}
key: token
- name: DD_KUBE_RESOURCES_NAMESPACE
value: {{ .Release.Namespace }}
......@@ -107,6 +143,16 @@ spec:
path: /healthz
scheme: HTTPS
{{- end }}
{{- if .Values.clusterAgent.confd }}
volumeMounts:
- name: confd
mountPath: /conf.d
readOnly: true
volumes:
- name: confd
configMap:
name: {{ template "datadog.fullname" . }}-cluster-agent-confd
{{- end }}
{{- if .Values.clusterAgent.tolerations }}
tolerations:
{{ toYaml .Values.clusterAgent.tolerations | indent 8 }}
......@@ -115,5 +161,5 @@ spec:
affinity:
{{ toYaml .Values.clusterAgent.affinity | indent 8 }}
{{- end }}
serviceAccountName: {{ if .Values.rbac.create }}{{ template "datadog.clusterAgent.fullname" . }}{{ else }}"{{ .Values.rbac.serviceAccountName }}"{{ end }}
serviceAccountName: {{ if .Values.rbac.create }}{{ template "datadog.fullname" . }}-cluster-agent{{ else }}"{{ .Values.rbac.serviceAccountName }}"{{ end }}
{{ end }}
......@@ -2,7 +2,7 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ template "datadog.confd.fullname" . }}
name: {{ template "datadog.fullname" . }}-confd
labels:
app: "{{ template "datadog.fullname" . }}"
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
......@@ -18,8 +18,8 @@ override duplicates
*/}}
{{- if .Values.datadog.autoconf }}
{{ tpl (toYaml .Values.datadog.autoconf) . | indent 2 }}
{{- end -}}
{{- end }}
{{- if .Values.datadog.confd }}
{{ tpl (toYaml .Values.datadog.confd) . | indent 2 }}
{{- end -}}
{{- end }}
{{- end -}}
{{- define "container-agent" -}}
- name: agent
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
command: ["agent", "start"]
resources:
{{ toYaml .Values.daemonset.containers.agent.resources | indent 4 }}
ports:
- containerPort: 8125
{{- if .Values.daemonset.useHostPort }}
hostPort: 8125
{{- end }}
name: dogstatsdport
protocol: UDP
env:
{{- include "containers-common-env" . | nindent 4 }}
{{- if .Values.datadog.clusterName }}
- name: DD_CLUSTER_NAME
value: {{ .Values.datadog.clusterName | quote }}
{{- end }}
{{- if .Values.datadog.site }}
- name: DD_SITE
value: {{ .Values.datadog.site | quote }}
{{- end }}
{{- if .Values.datadog.dd_url }}
- name: DD_DD_URL
value: {{ .Values.datadog.dd_url | quote }}
{{- end }}
{{- if .Values.datadog.logLevel }}
- name: DD_LOG_LEVEL
value: {{ .Values.daemonset.containers.agent.logLevel | default .Values.datadog.logLevel | quote }}
{{- end }}
{{- if .Values.datadog.nonLocalTraffic }}
- name: DD_DOGSTATSD_NON_LOCAL_TRAFFIC
value: {{ .Values.datadog.nonLocalTraffic | quote }}
{{- end }}
{{- if .Values.datadog.dogstatsdOriginDetection }}
- name: DD_DOGSTATSD_ORIGIN_DETECTION
value: {{ .Values.datadog.dogstatsdOriginDetection | quote }}
{{- end }}
{{- if .Values.datadog.acInclude }}
- name: DD_AC_INCLUDE
value: {{ .Values.datadog.acInclude | quote }}
{{- end }}
{{- if .Values.datadog.acExclude }}
- name: DD_AC_EXCLUDE
value: {{ .Values.datadog.acExclude | quote }}
{{- end }}
{{- if not .Values.clusterAgent.enabled }}
{{- if .Values.datadog.leaderElection }}
- name: DD_LEADER_ELECTION
value: {{ .Values.datadog.leaderElection | quote}}
{{- end }}
{{- if .Values.datadog.leaderLeaseDuration }}
- name: DD_LEADER_LEASE_DURATION
value: {{ .Values.datadog.leaderLeaseDuration | quote }}
{{- end }}
{{- if .Values.datadog.collectEvents }}
- name: DD_COLLECT_KUBERNETES_EVENTS
value: {{.Values.datadog.collectEvents | quote}}
{{- end }}
{{- else }}
- name: DD_CLUSTER_AGENT_ENABLED
value: {{ .Values.clusterAgent.enabled | quote }}
- name: DD_CLUSTER_AGENT_KUBERNETES_SERVICE_NAME
value: {{ template "datadog.fullname" . }}-cluster-agent
- name: DD_CLUSTER_AGENT_AUTH_TOKEN
valueFrom:
secretKeyRef:
name: {{ template "clusterAgent.tokenSecretName" . }}
key: token
{{- end }}
{{- if .Values.datadog.podLabelsAsTags }}
- name: DD_KUBERNETES_POD_LABELS_AS_TAGS
value: '{{ toJson .Values.datadog.podLabelsAsTags }}'
{{- end }}
{{- if .Values.datadog.podAnnotationsAsTags }}
- name: DD_KUBERNETES_POD_ANNOTATIONS_AS_TAGS
value: '{{ toJson .Values.datadog.podAnnotationsAsTags }}'
{{- end }}
{{- if .Values.datadog.logsEnabled }}
- name: DD_LOGS_ENABLED
value: {{.Values.datadog.logsEnabled | quote}}
{{- end }}
{{- if .Values.datadog.logsConfigContainerCollectAll }}
- name: DD_LOGS_CONFIG_CONTAINER_COLLECT_ALL
value: {{.Values.datadog.logsConfigContainerCollectAll | quote}}
{{- end }}
{{- if .Values.datadog.criSocketPath }}
- name: DD_CRI_SOCKET_PATH
value: {{ .Values.datadog.criSocketPath | quote }}
{{- end }}
{{- if not .Values.datadog.livenessProbe }}
- name: DD_HEALTH_PORT
value: "5555"
{{- end }}
{{- if .Values.datadog.useDogStatsDSocketVolume }}
- name: DD_DOGSTATSD_SOCKET
value: {{ default "/var/run/datadog/dsd.socket" .Values.datadog.dogStatsDSocketPath | quote }}
{{- end }}
{{- if and .Values.clusterAgent.clusterChecks.enabled (not .Values.clusterchecksDeployment.enabled) }}
- name: DD_EXTRA_CONFIG_PROVIDERS
value: "clusterchecks"
{{- end }}
{{- if .Values.daemonset.containers.agent.env }}
{{ toYaml .Values.daemonset.containers.agent.env | indent 4 }}
{{- end }}
volumeMounts:
- name: config
mountPath: /etc/datadog-agent
{{- if .Values.datadog.useCriSocketVolume }}
- name: runtimesocket
mountPath: {{ default "/var/run/docker.sock" .Values.datadog.criSocketPath | quote }}
readOnly: true
{{- end }}
{{- if .Values.datadog.useDogStatsDSocketVolume }}
- name: dsdsocket
mountPath: "/var/run/datadog"
{{- end }}
- name: procdir
mountPath: /host/proc
readOnly: true
- name: cgroups
mountPath: /host/sys/fs/cgroup
readOnly: true
{{- if .Values.datadog.logsEnabled }}
- name: pointerdir
mountPath: /opt/datadog-agent/run
- name: logpodpath
mountPath: /var/log/pods
readOnly: true
{{- if .Values.datadog.containerLogsPath }}
- name: logcontainerpath
mountPath: {{ .Values.datadog.containerLogsPath | quote }}
readOnly: true
{{- end }}
{{- end }}
{{- if .Values.datadog.volumeMounts }}
{{ toYaml .Values.datadog.volumeMounts | indent 4 }}
{{- end }}
{{- if .Values.datadog.livenessProbe }}
livenessProbe:
{{ toYaml .Values.datadog.livenessProbe | indent 4 }}
{{- else }}
livenessProbe:
httpGet:
path: /health
port: 5555
initialDelaySeconds: 15
periodSeconds: 15
timeoutSeconds: 5
successThreshold: 1
failureThreshold: 6
{{- end }}
{{- end -}}
{{- define "container-agents" -}}
- name: {{ default .Chart.Name .Values.datadog.name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
resources:
{{ toYaml .Values.datadog.resources | indent 4 }}
ports:
- containerPort: 8125
{{- if .Values.daemonset.useHostPort }}
hostPort: 8125
{{- end }}
name: dogstatsdport
protocol: UDP
{{- if .Values.datadog.apmEnabled }}
- containerPort: 8126
{{- if .Values.daemonset.useHostPort }}
hostPort: 8126
{{- end }}
name: traceport
protocol: TCP
{{- end }}
env:
- name: DD_API_KEY
valueFrom:
secretKeyRef:
name: {{ template "datadog.apiSecretName" . }}
key: api-key
{{- if .Values.datadog.clusterName }}
- name: DD_CLUSTER_NAME
value: {{ .Values.datadog.clusterName | quote }}
{{- end }}
{{- if .Values.datadog.site }}
- name: DD_SITE
value: {{ .Values.datadog.site | quote }}
{{- end }}
{{- if .Values.datadog.dd_url }}
- name: DD_DD_URL
value: {{ .Values.datadog.dd_url | quote }}
{{- end }}
{{- if .Values.datadog.logLevel }}
- name: DD_LOG_LEVEL
value: {{ .Values.datadog.logLevel | quote }}
{{- end }}
{{- if .Values.datadog.nonLocalTraffic }}
- name: DD_DOGSTATSD_NON_LOCAL_TRAFFIC
value: {{ .Values.datadog.nonLocalTraffic | quote }}
{{- end }}
{{- if .Values.datadog.dogstatsdOriginDetection }}
- name: DD_DOGSTATSD_ORIGIN_DETECTION
value: {{ .Values.datadog.dogstatsdOriginDetection | quote }}
{{- end }}
{{- if .Values.datadog.tags }}
- name: DD_TAGS
value: {{ .Values.datadog.tags | quote }}
{{- end }}
{{- if .Values.datadog.apmEnabled }}
- name: DD_APM_ENABLED
value: {{ .Values.datadog.apmEnabled | quote }}
{{- end }}
{{- if .Values.datadog.processAgentEnabled }}
- name: DD_PROCESS_AGENT_ENABLED
value: {{ .Values.datadog.processAgentEnabled | quote }}
{{- end }}
{{- if .Values.datadog.hostname }}
- name: DD_HOSTNAME
value: {{ .Values.datadog.hostname | quote }}
{{- end }}
{{- if .Values.datadog.acInclude }}
- name: DD_AC_INCLUDE
value: {{ .Values.datadog.acInclude | quote }}
{{- end }}
{{- if .Values.datadog.acExclude }}
- name: DD_AC_EXCLUDE
value: {{ .Values.datadog.acExclude | quote }}
{{- end }}
{{- if not .Values.clusterAgent.enabled }}
{{- if .Values.datadog.leaderElection }}
- name: DD_LEADER_ELECTION
value: {{ .Values.datadog.leaderElection | quote}}
{{- end }}
{{- if .Values.datadog.leaderLeaseDuration }}
- name: DD_LEADER_LEASE_DURATION
value: {{ .Values.datadog.leaderLeaseDuration | quote }}
{{- end }}
{{- if .Values.datadog.collectEvents }}
- name: DD_COLLECT_KUBERNETES_EVENTS
value: {{.Values.datadog.collectEvents | quote}}
{{- end }}
{{- else }}
- name: DD_CLUSTER_AGENT_ENABLED
value: {{ .Values.clusterAgent.enabled | quote }}
- name: DD_CLUSTER_AGENT_KUBERNETES_SERVICE_NAME
value: {{ template "datadog.fullname" . }}-cluster-agent
- name: DD_CLUSTER_AGENT_AUTH_TOKEN
valueFrom:
secretKeyRef:
name: {{ template "clusterAgent.tokenSecretName" . }}
key: token
{{- end }}
- name: KUBERNETES
value: "yes"
{{- if .Values.datadog.podLabelsAsTags }}
- name: DD_KUBERNETES_POD_LABELS_AS_TAGS
value: '{{ toJson .Values.datadog.podLabelsAsTags }}'
{{- end }}
{{- if .Values.datadog.podAnnotationsAsTags }}
- name: DD_KUBERNETES_POD_ANNOTATIONS_AS_TAGS
value: '{{ toJson .Values.datadog.podAnnotationsAsTags }}'
{{- end }}
{{- if semverCompare "^1.7-0" .Capabilities.KubeVersion.GitVersion }}
- name: DD_KUBERNETES_KUBELET_HOST
valueFrom:
fieldRef:
fieldPath: status.hostIP
{{- end }}
{{- if .Values.datadog.logsEnabled }}
- name: DD_LOGS_ENABLED
value: {{.Values.datadog.logsEnabled | quote}}
{{- end }}
{{- if .Values.datadog.logsConfigContainerCollectAll }}
- name: DD_LOGS_CONFIG_CONTAINER_COLLECT_ALL
value: {{.Values.datadog.logsConfigContainerCollectAll | quote}}
{{- end }}
{{- if .Values.datadog.criSocketPath }}
- name: DD_CRI_SOCKET_PATH
value: {{ .Values.datadog.criSocketPath | quote }}
{{- end }}
{{- if not .Values.datadog.livenessProbe }}
- name: DD_HEALTH_PORT
value: "5555"
{{- end }}
{{- if .Values.datadog.useDogStatsDSocketVolume }}
- name: DD_DOGSTATSD_SOCKET
value: {{ default "/var/run/datadog/dsd.socket" .Values.datadog.dogStatsDSocketPath | quote }}
{{- end }}
{{- if and .Values.clusterAgent.clusterChecks.enabled (not .Values.clusterchecksDeployment.enabled) }}
- name: DD_EXTRA_CONFIG_PROVIDERS
value: "clusterchecks"
{{- end }}
{{- if .Values.datadog.env }}
{{ toYaml .Values.datadog.env | indent 4 }}
{{- end }}
volumeMounts:
{{- if .Values.datadog.useCriSocketVolume }}
- name: runtimesocket
mountPath: {{ default "/var/run/docker.sock" .Values.datadog.criSocketPath | quote }}
readOnly: true
{{- end }}
{{- if .Values.datadog.useDogStatsDSocketVolume }}
- name: dsdsocket
mountPath: "/var/run/datadog"
{{- end }}
- name: procdir
mountPath: /host/proc
readOnly: true
- name: cgroups
mountPath: /host/sys/fs/cgroup
readOnly: true
- name: s6-run
mountPath: /var/run/s6
{{- if (or (.Values.datadog.confd) (.Values.datadog.autoconf)) }}
- name: confd
mountPath: /conf.d
readOnly: true
{{- end }}
{{- if .Values.datadog.checksd }}
- name: checksd
mountPath: /checks.d
readOnly: true
{{- end }}
{{- if .Values.datadog.logsEnabled }}
- name: pointerdir
mountPath: /opt/datadog-agent/run
- name: logpodpath
mountPath: /var/log/pods
readOnly: true
{{- if .Values.datadog.containerLogsPath }}
- name: logcontainerpath
mountPath: {{ .Values.datadog.containerLogsPath | quote }}
readOnly: true
{{- end }}
{{- end }}
{{- if .Values.datadog.processAgentEnabled }}
- name: passwd
mountPath: /etc/passwd
readOnly: true
{{- end }}
{{- if .Values.daemonset.useConfigMap }}
- name: {{ template "datadog.fullname" . }}-datadog-yaml
mountPath: /etc/datadog-agent/datadog.yaml
subPath: datadog.yaml
{{- end }}
{{- if .Values.datadog.volumeMounts }}
{{ toYaml .Values.datadog.volumeMounts | indent 4 }}
{{- end }}
{{- if .Values.datadog.livenessProbe }}
livenessProbe:
{{ toYaml .Values.datadog.livenessProbe | indent 4 }}
{{- else }}
livenessProbe:
httpGet:
path: /health
port: 5555
initialDelaySeconds: 15
periodSeconds: 15
timeoutSeconds: 5
successThreshold: 1
failureThreshold: 6
{{- end }}
{{- end -}}
{{- define "container-process-agent" -}}
- name: process-agent
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
command: ["process-agent", "-config=/etc/datadog-agent/datadog.yaml"]
resources:
{{ toYaml .Values.daemonset.containers.processAgent.resources | indent 4 }}
env:
{{- include "containers-common-env" . | nindent 4 }}
- name: DD_PROCESS_AGENT_ENABLED
value: {{ .Values.datadog.processAgentEnabled | quote }}
- name: DD_LOG_LEVEL
value: {{ .Values.daemonset.containers.processAgent.logLevel | default .Values.datadog.logLevel | quote }}
{{- if .Values.daemonset.containers.processAgent.env }}
{{ toYaml .Values.daemonset.containers.processAgent.env | indent 4 }}
{{- end }}
volumeMounts:
- name: cgroups
mountPath: /host/sys/fs/cgroup
readOnly: true
- name: config
mountPath: /etc/datadog-agent
- name: passwd
mountPath: /etc/passwd
- name: procdir
mountPath: /host/proc
readOnly: true
{{- if .Values.datadog.useCriSocketVolume }}
- name: runtimesocket
mountPath: {{ default "/var/run/docker.sock" .Values.datadog.criSocketPath | quote }}
readOnly: true
{{- end }}
{{- end -}}
{{- define "container-trace-agent" -}}
- name: trace-agent
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
command: ["trace-agent", "--config=/etc/datadog-agent/datadog.yaml"]
resources:
{{ toYaml .Values.daemonset.containers.traceAgent.resources | indent 4 }}
ports:
- containerPort: 8126
{{- if .Values.daemonset.useHostPort }}
hostPort: 8126
{{- end }}
name: traceport
protocol: TCP
env:
{{- include "containers-common-env" . | nindent 4 }}
- name: DD_APM_ENABLED
value: {{ .Values.datadog.apmEnabled | quote }}
- name: DD_LOG_LEVEL
value: {{ .Values.daemonset.containers.traceAgent.logLevel | default .Values.datadog.logLevel | quote }}
{{- if .Values.daemonset.containers.traceAgent.env }}
{{ toYaml .Values.daemonset.containers.traceAgent.env | indent 4 }}
{{- end }}
volumeMounts:
- name: config
mountPath: /etc/datadog-agent
livenessProbe:
tcpSocket:
port: 8126
initialDelaySeconds: 15
periodSeconds: 15
timeoutSeconds: 5
{{- end -}}
# The purpose of this template is to define a minimal set of environment
# variables required to operate dedicated containers in the daemonset.
{{- define "containers-common-env" -}}
- name: DD_API_KEY
valueFrom:
secretKeyRef:
name: {{ template "datadog.apiSecretName" . }}
key: api-key
{{- if semverCompare "^1.7-0" .Capabilities.KubeVersion.GitVersion }}
- name: DD_KUBERNETES_KUBELET_HOST
valueFrom:
fieldRef:
fieldPath: status.hostIP
{{- end }}
{{- if .Values.datadog.hostname }}
- name: DD_HOSTNAME
value: {{ .Values.datadog.hostname | quote }}
{{- end }}
{{- if .Values.datadog.tags }}
- name: DD_TAGS
value: {{ .Values.datadog.tags | quote }}
{{- end }}
- name: KUBERNETES
value: "yes"
{{- end -}}
{{- define "containers-init" -}}
- name: init-volume
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
command: ["bash", "-c"]
args:
- cp -r /etc/datadog-agent /opt
volumeMounts:
- name: config
mountPath: /opt/datadog-agent
- name: init-config
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
command: ["bash", "-c"]
args:
- for script in $(find /etc/cont-init.d/ -type f -name '*.sh' | sort) ; do bash $script ; done
volumeMounts:
- name: config
mountPath: /etc/datadog-agent
{{- if (or (.Values.datadog.confd) (.Values.datadog.autoconf)) }}
- name: confd
mountPath: /conf.d
readOnly: true
{{- end }}
{{- if .Values.datadog.checksd }}
- name: checksd
mountPath: /checks.d
readOnly: true
{{- end }}
- name: procdir
mountPath: /host/proc
readOnly: true
{{- if .Values.datadog.useCriSocketVolume }}
- name: runtimesocket
mountPath: {{ default "/var/run/docker.sock" .Values.datadog.criSocketPath | quote }}
readOnly: true
{{- end }}
env:
{{- include "containers-common-env" . | nindent 4 }}
{{- if .Values.datadog.env }}
{{ toYaml .Values.datadog.env | nindent 4 }}
{{- end }}
{{- end -}}
{{- if .Values.daemonset.useConfigMap }}
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ template "datadog.fullname" . }}-datadog-yaml
labels:
app: "{{ template "datadog.fullname" . }}"
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
release: {{ .Release.Name | quote }}
heritage: {{ .Release.Service | quote }}
annotations:
data:
datadog.yaml: |
## Provides autodetected defaults, for kubernetes environments,
## please see datadog.yaml.example for all supported options
# Autodiscovery for Kubernetes
listeners:
- name: kubelet
config_providers:
- name: kubelet
polling: true
# Enable APM by setting the DD_APM_ENABLED envvar to true, or override this configuration
apm_config:
enabled: false
apm_non_local_traffic: true
# Use java cgroup memory awareness
jmx_use_cgroup_memory_limit: true
{{- end }}
{{- if .Values.deployment.enabled }}
{{- if (or (.Values.datadog.apiKeyExistingSecret) (.Values.datadog.apiKey)) }}
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: {{ template "datadog.fullname" . }}
labels:
app: "{{ template "datadog.fullname" . }}"
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
release: {{ .Release.Name | quote }}
heritage: {{ .Release.Service | quote }}
spec:
replicas: {{ .Values.deployment.replicas }}
template:
metadata:
labels:
app: {{ template "datadog.fullname" . }}
type: deployment
name: {{ template "datadog.fullname" . }}
annotations:
checksum/autoconf-config: {{ tpl (toYaml .Values.datadog.autoconf) . | sha256sum }}
checksum/confd-config: {{ tpl (toYaml .Values.datadog.confd) . | sha256sum }}
checksum/checksd-config: {{ tpl (toYaml .Values.datadog.checksd) . | sha256sum }}
spec:
{{- if .Values.datadog.securityContext }}
securityContext:
{{ toYaml .Values.datadog.securityContext | indent 8 }}
{{- end }}
{{- if .Values.image.pullSecrets }}
imagePullSecrets:
{{ toYaml .Values.image.pullSecrets | indent 8 }}
{{- end }}
{{- if .Values.deployment.priorityClassName }}
priorityClassName: {{ .Values.deployment.priorityClassName }}
{{- end }}
containers:
- name: {{ default .Chart.Name .Values.datadog.name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
resources:
{{ toYaml .Values.datadog.resources | indent 10 }}
ports:
- containerPort: 8125
name: dogstatsdport
protocol: UDP
{{- if .Values.datadog.apmEnabled }}
- containerPort: 8126
name: traceport
protocol: TCP
{{- end }}
env:
- name: DD_API_KEY
valueFrom:
secretKeyRef:
name: {{ template "datadog.apiSecretName" . }}
key: api-key
{{- if .Values.datadog.site }}
- name: DD_SITE
value: {{ .Values.datadog.site | quote }}
{{- end }}
{{- if .Values.datadog.dd_url }}
- name: DD_DD_URL
value: {{ .Values.datadog.dd_url | quote }}
{{- end }}
{{- if .Values.datadog.logLevel }}
- name: DD_LOG_LEVEL
value: {{ .Values.datadog.logLevel | quote }}
{{- end }}
{{- if .Values.datadog.nonLocalTraffic }}
- name: DD_DOGSTATSD_NON_LOCAL_TRAFFIC
value: {{ .Values.datadog.nonLocalTraffic | quote }}
{{- end }}
{{- if .Values.datadog.dogstatsdOriginDetection }}
- name: DD_DOGSTATSD_ORIGIN_DETECTION
value: {{ .Values.datadog.dogstatsdOriginDetection | quote }}
{{- end }}
{{- if .Values.datadog.tags }}
- name: DD_TAGS
value: {{ .Values.datadog.tags | quote }}
{{- end }}
{{- if .Values.datadog.apmEnabled }}
- name: DD_APM_ENABLED
value: {{ .Values.datadog.apmEnabled | quote }}
{{- end }}
- name: KUBERNETES
value: "yes"
{{- if .Values.datadog.collectEvents }}
- name: KUBERNETES_COLLECT_EVENTS
value: "yes"
{{- end }}
{{- if .Values.datadog.criSocketPath }}
- name: DD_CRI_SOCKET_PATH
value: {{ .Values.datadog.criSocketPath | quote }}
{{- end }}
{{- if .Values.datadog.useDogStatsDSocketVolume }}
- name: DD_DOGSTATSD_SOCKET
value: {{ default "/var/run/datadog/dsd.socket" .Values.datadog.dogStatsDSocketPath | quote }}
{{- end }}
{{- if .Values.datadog.env }}
{{ toYaml .Values.datadog.env | indent 10 }}
{{- end }}
volumeMounts:
{{- if .Values.datadog.useCriSocketVolume }}
- name: runtimesocket
mountPath: {{ default "/var/run/docker.sock" .Values.datadog.criSocketPath | quote }}
readOnly: true
{{- end }}
{{- if .Values.datadog.useDogStatsDSocketVolume }}
- name: dsdsocket
mountPath: "/var/run/datadog"
{{- end }}
- name: procdir
mountPath: /host/proc
readOnly: true
- name: cgroups
mountPath: /host/sys/fs/cgroup
readOnly: true
{{- if (or (.Values.datadog.confd) (.Values.datadog.autoconf)) }}
- name: confd
mountPath: /conf.d
readOnly: true
{{- end }}
{{- if .Values.datadog.checksd }}
- name: checksd
mountPath: /checks.d
readOnly: true
{{- end }}
{{- if .Values.datadog.volumeMounts }}
{{ toYaml .Values.datadog.volumeMounts | indent 10 }}
{{- end }}
{{- if .Values.datadog.livenessProbe }}
livenessProbe:
{{ toYaml .Values.datadog.livenessProbe | indent 10 }}
{{- else }}
livenessProbe:
exec:
command:
- ./probe.sh
initialDelaySeconds: 15
periodSeconds: 5
failureThreshold: 6
{{- end }}
volumes:
{{- if .Values.datadog.useCriSocketVolume }}
- hostPath:
path: {{ default "/var/run/docker.sock" .Values.datadog.criSocketPath | quote }}
name: runtimesocket
{{- end }}
{{- if .Values.datadog.useDogStatsDSocketVolume }}
- hostPath:
path: "/var/run/datadog/"
name: dsdsocket
{{- end }}
- hostPath:
path: /proc
name: procdir
- hostPath:
path: /sys/fs/cgroup
name: cgroups
{{- if (or (.Values.datadog.confd) (.Values.datadog.autoconf)) }}
- name: confd
configMap:
name: {{ template "datadog.fullname" . }}-confd
{{- end }}
{{- if .Values.datadog.checksd }}
- name: checksd
configMap:
name: {{ template "datadog.fullname" . }}-checksd
{{- end }}
{{- if .Values.datadog.volumes }}
{{ toYaml .Values.datadog.volumes | indent 8 }}
{{- end }}
{{- if .Values.deployment.tolerations }}
tolerations:
{{ toYaml .Values.deployment.tolerations | indent 8 }}
{{- end }}
{{- if .Values.deployment.affinity }}
affinity:
{{ toYaml .Values.deployment.affinity | indent 8 }}
{{- end }}
serviceAccountName: {{ if .Values.rbac.create }}{{ template "datadog.fullname" . }}{{ else }}"{{ .Values.rbac.serviceAccountName }}"{{ end }}
{{ end }}
{{ end }}
{{- if and .Values.rbac.create .Values.clusterAgent.enabled .Values.clusterAgent.metricsProvider.enabled -}}
apiVersion: {{ template "rbac.apiVersion" . }}
kind: ClusterRoleBinding
metadata:
labels:
app: "{{ template "datadog.fullname" . }}"
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
release: {{ .Release.Name | quote }}
heritage: {{ .Release.Service | quote }}
name: {{ template "datadog.clusterAgent.fullname" . }}-external-metrics-reader
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: {{ template "datadog.clusterAgent.fullname" . }}-external-metrics-reader
subjects:
- kind: ServiceAccount
name: horizontal-pod-autoscaler
namespace: kube-system
{{- end -}}
......@@ -7,7 +7,7 @@ metadata:
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
heritage: {{ .Release.Service | quote }}
release: {{ .Release.Name | quote }}
name: {{ template "datadog.clusterAgent.fullname" . }}-external-metrics-reader
name: {{ template "datadog.fullname" . }}-cluster-agent-external-metrics-reader
rules:
- apiGroups:
- "external.metrics.k8s.io"
......@@ -17,4 +17,40 @@ rules:
- list
- get
- watch
---
apiVersion: {{ template "rbac.apiVersion" . }}
kind: ClusterRoleBinding
metadata:
labels:
app: "{{ template "datadog.fullname" . }}"
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
release: {{ .Release.Name | quote }}
heritage: {{ .Release.Service | quote }}
name: {{ template "datadog.fullname" . }}-cluster-agent-external-metrics-reader
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: {{ template "datadog.fullname" . }}-cluster-agent-external-metrics-reader
subjects:
- kind: ServiceAccount
name: horizontal-pod-autoscaler
namespace: kube-system
---
apiVersion: {{ template "rbac.apiVersion" . }}
kind: RoleBinding
metadata:
labels:
app: "{{ template "datadog.fullname" . }}"
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
release: {{ .Release.Name | quote }}
heritage: {{ .Release.Service | quote }}
name: "{{ template "datadog.fullname" . }}-cluster-agent"
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: extension-apiserver-authentication-reader
subjects:
- kind: ServiceAccount
name: {{ template "datadog.fullname" . }}-cluster-agent
namespace: {{ .Release.Namespace }}
{{- end -}}
......@@ -63,6 +63,10 @@ rules:
verbs:
- get
{{- end }}
- nonResourceURLs:
- "/metrics"
verbs:
- get
- apiGroups: # Kubelet connectivity
- ""
resources:
......@@ -71,4 +75,40 @@ rules:
- nodes/proxy
verbs:
- get
- apiGroups: # leader election check
- ""
resources:
- endpoints
verbs:
- get
---
{{- if not .Values.clusterchecksDeployment.rbac.dedicated }}
apiVersion: {{ template "rbac.apiVersion" . }}
kind: ClusterRoleBinding
metadata:
labels:
app: "{{ template "datadog.fullname" . }}"
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
release: {{ .Release.Name | quote }}
heritage: {{ .Release.Service | quote }}
name: {{ template "datadog.fullname" . }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: {{ template "datadog.fullname" . }}
subjects:
- kind: ServiceAccount
name: {{ template "datadog.fullname" . }}
namespace: {{ .Release.Namespace }}
{{- end }}
---
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
app: "{{ template "datadog.fullname" . }}"
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
heritage: {{ .Release.Service | quote }}
release: {{ .Release.Name | quote }}
name: {{ template "datadog.fullname" . }}
{{- end -}}
# API Key
{{- if not .Values.datadog.apiKeyExistingSecret }}
apiVersion: v1
kind: Secret
metadata:
name: {{ template "datadog.fullname" . }}
labels:
app: "{{ template "datadog.fullname" . }}"
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
release: {{ .Release.Name | quote }}
heritage: {{ .Release.Service | quote }}
type: Opaque
data:
api-key: {{ default "MISSING" .Values.datadog.apiKey | b64enc | quote }}
{{- end }}
# APP Key
{{- if not .Values.datadog.appKeyExistingSecret }}
{{- if and .Values.clusterAgent.enabled .Values.clusterAgent.metricsProvider.enabled }}
---
apiVersion: v1
kind: Secret
metadata:
......
{{ if .Values.deployment.enabled }}
apiVersion: v1
kind: Service
metadata:
name: {{ template "datadog.fullname" . }}
labels:
app: "{{ template "datadog.fullname" . }}"
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
release: {{ .Release.Name | quote }}
heritage: {{ .Release.Service | quote }}
{{- if .Values.deployment.service.annotations }}
annotations:
{{ toYaml .Values.deployment.service.annotations | indent 4 }}
{{- end }}
spec:
type: {{ .Values.deployment.service.type }}
selector:
app: {{ template "datadog.fullname" . }}
type: deployment
ports:
- port: 8125
name: dogstatsdport
protocol: UDP
{{- if .Values.deployment.dogstatsdNodePort }}
nodePort: {{ .Values.deployment.dogstatsdNodePort }}
{{- end }}
{{- if .Values.datadog.apmEnabled }}
- port: 8126
name: traceport
protocol: TCP
{{- if .Values.deployment.traceNodePort }}
nodePort: {{ .Values.deployment.traceNodePort }}
{{- end }}
{{- end }}
{{ end }}
# You need to use that account for your dd-agent DaemonSet
{{ if .Values.rbac.create -}}
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
app: "{{ template "datadog.fullname" . }}"
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
heritage: {{ .Release.Service | quote }}
release: {{ .Release.Name | quote }}
name: {{ template "datadog.fullname" . }}
{{- end -}}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment