otelcollector/deploy/addon-chart/azure-monitor-metrics-addon/templates/ama-metrics-daemonset.yaml (520 lines of code) (raw):

{{- $arcExtensionSettings := include "arc-extension-settings" . | fromYaml }} apiVersion: apps/v1 kind: DaemonSet metadata: name: ama-metrics-node namespace: kube-system labels: component: ama-metrics spec: selector: matchLabels: dsName: ama-metrics-node updateStrategy: type: RollingUpdate rollingUpdate: maxUnavailable: 50% template: metadata: labels: dsName: ama-metrics-node kubernetes.azure.com/managedby: aks annotations: agentVersion: "0.0.0.1" schema-versions: "v1" spec: priorityClassName: system-node-critical serviceAccountName: ama-metrics-serviceaccount containers: - name: prometheus-collector image: "{{ .Values.AzureMonitorMetrics.ImageRegistry }}{{ .Values.AzureMonitorMetrics.ImageRepository }}:{{ .Values.AzureMonitorMetrics.ImageTag }}" # image: "mcr.microsoft.com/azuremonitor/containerinsights/cidev/prometheus-collector/images:6.8.11-rashmi-upgrades-04-24-05-13-2024-9cabda9d" imagePullPolicy: IfNotPresent resources: limits: cpu: {{ .Values.AzureMonitorMetrics.DsCPULimitLinux }} memory: {{ .Values.AzureMonitorMetrics.DsMemoryLimitLinux }} requests: cpu: {{ .Values.AzureMonitorMetrics.DsCPURequestLinux }} memory: {{ .Values.AzureMonitorMetrics.DsMemoryRequestLinux }} {{- if $arcExtensionSettings.isProxyEnabled }} envFrom: - secretRef: name: ama-metrics-proxy-config {{- end }} env: - name: CLUSTER {{- if $arcExtensionSettings.isArcExtension }} value: "{{ $arcExtensionSettings.resourceId }}" {{- else }} value: "{{ .Values.global.commonGlobals.Customer.AzureResourceID }}" {{- end }} - name: AKSREGION {{- if $arcExtensionSettings.isArcExtension }} value: "{{ $arcExtensionSettings.region }}" {{- else }} value: "{{ .Values.global.commonGlobals.Region }}" {{- end }} - name: MAC value: "true" - name: AZMON_COLLECT_ENV value: "false" - name: customEnvironment {{- if .Values.AzureMonitorMetrics.isArcACluster }} value: "arcautonomous" {{- else if $arcExtensionSettings.isArcExtension }} value: "{{ $arcExtensionSettings.cloudEnvironment }}" {{- else }} value: "{{ lower .Values.global.commonGlobals.CloudEnvironment }}" {{- end }} - name: OMS_TLD value: "opinsights.azure.com" {{- if eq .Values.AzureMonitorMetrics.isArcACluster true }} - name: customRegionalEndpoint value: {{ required "customRegionalEndpoint is required in Arc Autonomous" .Values.AzureMonitorMetrics.arcAutonomousSettings.customRegionalEndpoint | toString | trim | quote }} - name: customGlobalEndpoint value: {{ required "customGlobalEndpoint is required in Arc Autonomous" .Values.AzureMonitorMetrics.arcAutonomousSettings.customGlobalEndpoint | toString | trim | quote }} - name: customResourceEndpoint value: {{ required "customResourceEndpoint is required in Arc Autonomous" .Values.AzureMonitorMetrics.arcAutonomousSettings.customResourceEndpoint | toString | trim | quote }} {{- end }} - name: CONTROLLER_TYPE value: "DaemonSet" - name: NODE_IP valueFrom: fieldRef: fieldPath: status.hostIP - name: NODE_NAME valueFrom: fieldRef: fieldPath: spec.nodeName - name: POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: CONTAINER_CPU_LIMIT valueFrom: resourceFieldRef: containerName: prometheus-collector resource: limits.cpu divisor: 1m - name: CONTAINER_MEMORY_LIMIT valueFrom: resourceFieldRef: containerName: prometheus-collector resource: limits.memory divisor: 1Mi - name: KUBE_STATE_NAME value: ama-metrics-ksm - name: NODE_EXPORTER_NAME value: "" # Replace this with the node exporter shipped out of box with AKS - name: NODE_EXPORTER_TARGETPORT {{- if $arcExtensionSettings.isArcExtension }} value: "{{ $arcExtensionSettings.nodeExporterTargetPort }}" {{- else }} value: "19100" {{- end }} {{- if .Values.AzureMonitorMetrics }} {{- if .Values.AzureMonitorMetrics.KubeStateMetrics }} - name: KUBE_STATE_VERSION value: "{{ .Values.AzureMonitorMetrics.KubeStateMetrics.ImageRegistry }}{{ .Values.AzureMonitorMetrics.KubeStateMetrics.ImageRepository }}:{{ .Values.AzureMonitorMetrics.KubeStateMetrics.ImageTag }}" {{- end }} {{- end }} - name: NODE_EXPORTER_VERSION value: {{ $arcExtensionSettings.nodeExporterVersion }} - name: AGENT_VERSION value: {{ .Values.AzureMonitorMetrics.ImageTag }} - name: MODE value: "advanced" # only supported mode is 'advanced', any other value will be the default/non-advance mode - name: WINMODE value: "advanced" # WINDOWS: only supported mode is 'advanced', any other value will be the default/non-advance mode - name: MINIMAL_INGESTION_PROFILE value: "true" # only supported value is the string "true" - name: APPMONITORING_AUTOINSTRUMENTATION_ENABLED value: "{{ .Values.AzureMonitorMetrics.IsAppMonitoringAutoInstrumentationEnabled }}" - name: APPMONITORING_OPENTELEMETRYMETRICS_ENABLED value: "{{ .Values.AzureMonitorMetrics.IsAppMonitoringOpenTelemetryMetricsEnabled }}" - name: APPMONITORING_OPENTELEMETRYMETRICS_PORT value: "{{ .Values.AzureMonitorMetrics.OpenTelemetryMetricsPort }}" securityContext: privileged: false capabilities: drop: - ALL add: - DAC_OVERRIDE volumeMounts: - mountPath: /etc/config/settings name: settings-vol-config readOnly: true - mountPath: /etc/prometheus/certs name: ama-metrics-tls-secret-volume readOnly: true - mountPath: /etc/config/settings/prometheus name: prometheus-config-vol readOnly: true - name: host-log-containers readOnly: true mountPath: /var/log/containers - name: host-log-pods readOnly: true mountPath: /var/log/pods {{- if $arcExtensionSettings.mountMarinerCerts }} - mountPath: /anchors/mariner name: anchors-mariner readOnly: true {{- end }} {{- if $arcExtensionSettings.mountUbuntuCerts }} - mountPath: /anchors/ubuntu name: anchors-ubuntu readOnly: true {{- end }} {{- if $arcExtensionSettings.isArcExtension }} - mountPath: /anchors/proxy name: ama-metrics-proxy-cert readOnly: true {{- end }} livenessProbe: httpGet: path: /health port: 8080 initialDelaySeconds: 60 periodSeconds: 15 timeoutSeconds: 5 failureThreshold: 3 {{- if $arcExtensionSettings.isArcExtension }} - name: arc-msi-adapter imagePullPolicy: IfNotPresent env: - name: TOKEN_NAMESPACE value: "azure-arc" - name: LIVENESS_PROBE_PORT value: "9999" {{- .Values.Azure.Identity.MSIAdapterYaml | nindent 10 }} {{- else }} - name: addon-token-adapter command: - /addon-token-adapter args: - --secret-namespace=kube-system - --secret-name=aad-msi-auth-token - --token-server-listening-port=7777 - --health-server-listening-port=9999 image: "{{ .Values.AzureMonitorMetrics.AddonTokenAdapter.ImageRegistry }}{{ .Values.AzureMonitorMetrics.AddonTokenAdapter.ImageRepository }}:{{ .Values.AzureMonitorMetrics.AddonTokenAdapter.ImageTag }}" imagePullPolicy: IfNotPresent env: - name: AZMON_COLLECT_ENV value: "false" livenessProbe: httpGet: path: /healthz port: 9999 initialDelaySeconds: 10 periodSeconds: 60 resources: limits: cpu: 500m memory: 500Mi requests: cpu: 20m memory: 30Mi securityContext: capabilities: drop: - ALL add: - NET_ADMIN - NET_RAW {{- end }} affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/os operator: In values: - linux - key: type operator: NotIn values: - virtual-kubelet {{- if not $arcExtensionSettings.isArcExtension }} - key: kubernetes.azure.com/cluster operator: Exists {{- end }} tolerations: - key: CriticalAddonsOnly operator: Exists {{- if eq (default .Values.tolerationsOnlyForControlPlane false) false }} - operator: "Exists" effect: "NoSchedule" - operator: "Exists" effect: "NoExecute" - operator: "Exists" effect: "PreferNoSchedule" {{- end }} - key: "node-role.kubernetes.io/control-plane" operator: "Exists" effect: "NoSchedule" - key: "node-role.kubernetes.io/control-plane" operator: "Exists" effect: "NoExecute" - key: "node-role.kubernetes.io/control-plane" operator: "Exists" effect: "PreferNoSchedule" - key: "node-role.kubernetes.io/master" operator: "Exists" effect: "NoSchedule" - key: "node-role.kubernetes.io/master" operator: "Exists" effect: "NoExecute" - key: "node-role.kubernetes.io/master" operator: "Exists" effect: "PreferNoSchedule" volumes: - name: settings-vol-config configMap: name: ama-metrics-settings-configmap optional: true - name: ama-metrics-tls-secret-volume secret: secretName: ama-metrics-mtls-secret optional: true - name: prometheus-config-vol configMap: name: ama-metrics-prometheus-config-node optional: true - name: host-log-containers hostPath: path: /var/log/containers - name: host-log-pods hostPath: path: /var/log/pods {{- if $arcExtensionSettings.mountMarinerCerts }} - name: anchors-mariner hostPath: path: /etc/pki/ca-trust/source/anchors/ type: DirectoryOrCreate {{- end }} {{- if $arcExtensionSettings.mountUbuntuCerts }} - name: anchors-ubuntu hostPath: path: /usr/local/share/ca-certificates/ type: DirectoryOrCreate {{- end }} {{- if $arcExtensionSettings.isArcExtension }} - name: ama-metrics-proxy-cert secret: secretName: ama-metrics-proxy-cert optional: true {{- end }} {{- if not $arcExtensionSettings.isArcExtension }} --- apiVersion: apps/v1 kind: DaemonSet metadata: name: ama-metrics-win-node namespace: kube-system labels: component: ama-metrics spec: selector: matchLabels: dsName: ama-metrics-win-node updateStrategy: type: RollingUpdate rollingUpdate: maxUnavailable: 50% template: metadata: labels: dsName: ama-metrics-win-node kubernetes.azure.com/managedby: aks annotations: agentVersion: "0.0.0.1" schema-versions: "v1" spec: priorityClassName: system-node-critical serviceAccountName: ama-metrics-serviceaccount containers: - name: prometheus-collector image: "{{ .Values.AzureMonitorMetrics.ImageRegistry }}{{ .Values.AzureMonitorMetrics.ImageRepository }}:{{ .Values.AzureMonitorMetrics.ImageTagWin }}" imagePullPolicy: IfNotPresent resources: limits: cpu: {{ .Values.AzureMonitorMetrics.DsCPULimitWindows }} memory: {{ .Values.AzureMonitorMetrics.DsMemoryLimitWindows }} env: - name: CLUSTER value: "{{ .Values.global.commonGlobals.Customer.AzureResourceID }}" - name: AKSREGION value: "{{ .Values.global.commonGlobals.Region }}" - name: MAC value: "true" - name: AZMON_COLLECT_ENV value: "false" - name: customEnvironment value: "{{ .Values.global.commonGlobals.CloudEnvironment }}" - name: OMS_TLD value: "opinsights.azure.com" - name: CONTROLLER_TYPE value: "DaemonSet" - name: NODE_IP valueFrom: fieldRef: fieldPath: status.hostIP - name: NODE_NAME valueFrom: fieldRef: fieldPath: spec.nodeName - name: POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: CONTAINER_CPU_LIMIT valueFrom: resourceFieldRef: containerName: prometheus-collector resource: limits.cpu divisor: 1m - name: CONTAINER_MEMORY_LIMIT valueFrom: resourceFieldRef: containerName: prometheus-collector resource: limits.memory divisor: 1Mi - name: KUBE_STATE_NAME value: ama-metrics-ksm - name: NODE_EXPORTER_NAME value: "" # Replace this with the node exporter shipped out of box with AKS - name: NODE_EXPORTER_TARGETPORT value: "19100" {{- if .Values.AzureMonitorMetrics }} {{- if .Values.AzureMonitorMetrics.KubeStateMetrics }} - name: KUBE_STATE_VERSION value: "{{ .Values.AzureMonitorMetrics.KubeStateMetrics.ImageRegistry }}{{ .Values.AzureMonitorMetrics.KubeStateMetrics.ImageRepository }}:{{ .Values.AzureMonitorMetrics.KubeStateMetrics.ImageTagWin }}" {{- end }} {{- end }} - name: NODE_EXPORTER_VERSION value: "v1.6.0" # Replace this with the version shipped by default - name: AGENT_VERSION value: {{ .Values.AzureMonitorMetrics.ImageTag }} - name: MODE value: "advanced" # only supported mode is 'advanced', any other value will be the default/non-advance mode - name: WINMODE value: "advanced" # WINDOWS: only supported mode is 'advanced', any other value will be the default/non-advance mode - name: MINIMAL_INGESTION_PROFILE value: "true" # only supported value is the string "true" - name: APPMONITORING_AUTOINSTRUMENTATION_ENABLED value: "{{ .Values.AzureMonitorMetrics.IsAppMonitoringAutoInstrumentationEnabled }}" - name: APPMONITORING_OPENTELEMETRYMETRICS_ENABLED value: "{{ .Values.AzureMonitorMetrics.IsAppMonitoringOpenTelemetryMetricsEnabled }}" - name: APPMONITORING_OPENTELEMETRYMETRICS_PORT value: "{{ .Values.AzureMonitorMetrics.OpenTelemetryMetricsPort }}" securityContext: privileged: false capabilities: drop: - ALL add: - DAC_OVERRIDE volumeMounts: - mountPath: /etc/config/settings name: settings-vol-config readOnly: true - mountPath: /etc/config/settings/prometheus name: prometheus-config-vol readOnly: true - mountPath: /etc/prometheus/certs name: ama-metrics-tls-secret-volume readOnly: true - name: host-log-containers readOnly: true mountPath: /var/log/containers - name: host-log-pods readOnly: true mountPath: /var/log/pods livenessProbe: httpGet: path: /health port: 8080 initialDelaySeconds: 300 periodSeconds: 60 timeoutSeconds: 60 failureThreshold: 3 - name: addon-token-adapter-win command: - addon-token-adapter-win args: - --secret-namespace=kube-system - --secret-name=aad-msi-auth-token - --token-server-listening-port=7777 - --health-server-listening-port=9999 image: "{{ .Values.AzureMonitorMetrics.AddonTokenAdapter.ImageRegistry }}{{ .Values.AzureMonitorMetrics.AddonTokenAdapter.ImageRepositoryWin }}:{{ .Values.AzureMonitorMetrics.AddonTokenAdapter.ImageTagWin }}" imagePullPolicy: IfNotPresent livenessProbe: httpGet: path: /healthz port: 9999 initialDelaySeconds: 10 periodSeconds: 60 resources: limits: memory: 500Mi requests: cpu: 100m memory: 100Mi securityContext: capabilities: drop: - ALL add: - NET_ADMIN affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - labelSelector: matchExpressions: - key: kubernetes.io/os operator: In values: - windows - key: type operator: NotIn values: - virtual-kubelet tolerations: - key: CriticalAddonsOnly operator: Exists - operator: "Exists" effect: NoExecute - operator: "Exists" effect: NoSchedule volumes: - name: settings-vol-config configMap: name: ama-metrics-settings-configmap optional: true - name: prometheus-config-vol configMap: name: ama-metrics-prometheus-config-node-windows optional: true - name: host-log-containers hostPath: path: /var/log/containers - name: host-log-pods hostPath: path: /var/log/pods - name: ama-metrics-tls-secret-volume secret: secretName: ama-metrics-mtls-secret optional: true {{- end }}