From ef3be802c6cf1e2d6e90705c741bf415d78f0e1c Mon Sep 17 00:00:00 2001 From: sdjo Date: Tue, 8 Oct 2024 17:10:19 +0900 Subject: [PATCH] prometheus, nfs-provisioner add --- .../1.configuration/init_add_ns.yaml | 101 ++ .../3.deploy/sample-deploy.yaml | 38 + .../nfs-provisioner/4.postSettings/sc-vm.yaml | 15 + .../1_configuration/init.yaml | 13 + .../1_configuration/pvc.yaml | 17 + .../2_config/default.yaml | 24 + .../3_deploy/deploy.yaml | 99 ++ .../prometheusAlertManager/3_deploy/ing.yaml | 26 + .../1_configuration/init.yaml | 313 ++++ .../1_configuration/pvc.yaml | 20 + .../cm_prometheus-rulefiles-default.yaml | 194 +++ .../prometheus_2.54.1/2_config/default.yaml | 354 +++++ .../prometheus_2.54.1/3_deploy/daemonset.yaml | 115 ++ .../prometheus_2.54.1/3_deploy/deploy.yaml | 267 ++++ .../prometheus_2.54.1/3_deploy/ing.yaml | 25 + .../prometheus_2.54.1/3_deploy/service.yaml | 106 ++ on-premise/prometheus_2.54.1/create.md | 6 + on-premise/prometheus_2.54.1/imageList.txt | 6 + .../prometheus_2.54.1/kustomization.yaml | 4 + .../prometheus_all_2.54.1.yaml | 1352 +++++++++++++++++ 20 files changed, 3095 insertions(+) create mode 100644 on-premise/nfs-provisioner/1.configuration/init_add_ns.yaml create mode 100644 on-premise/nfs-provisioner/3.deploy/sample-deploy.yaml create mode 100644 on-premise/nfs-provisioner/4.postSettings/sc-vm.yaml create mode 100644 on-premise/prometheusAlertManager/1_configuration/init.yaml create mode 100644 on-premise/prometheusAlertManager/1_configuration/pvc.yaml create mode 100644 on-premise/prometheusAlertManager/2_config/default.yaml create mode 100644 on-premise/prometheusAlertManager/3_deploy/deploy.yaml create mode 100644 on-premise/prometheusAlertManager/3_deploy/ing.yaml create mode 100644 on-premise/prometheus_2.54.1/1_configuration/init.yaml create mode 100644 on-premise/prometheus_2.54.1/1_configuration/pvc.yaml create mode 100644 on-premise/prometheus_2.54.1/2_config/cm_prometheus-rulefiles-default.yaml create mode 100644 on-premise/prometheus_2.54.1/2_config/default.yaml create mode 100644 on-premise/prometheus_2.54.1/3_deploy/daemonset.yaml create mode 100644 on-premise/prometheus_2.54.1/3_deploy/deploy.yaml create mode 100644 on-premise/prometheus_2.54.1/3_deploy/ing.yaml create mode 100644 on-premise/prometheus_2.54.1/3_deploy/service.yaml create mode 100644 on-premise/prometheus_2.54.1/create.md create mode 100644 on-premise/prometheus_2.54.1/imageList.txt create mode 100644 on-premise/prometheus_2.54.1/kustomization.yaml create mode 100644 on-premise/prometheus_2.54.1/prometheus_all_2.54.1.yaml diff --git a/on-premise/nfs-provisioner/1.configuration/init_add_ns.yaml b/on-premise/nfs-provisioner/1.configuration/init_add_ns.yaml new file mode 100644 index 0000000..1aa45f5 --- /dev/null +++ b/on-premise/nfs-provisioner/1.configuration/init_add_ns.yaml @@ -0,0 +1,101 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + name: provision + name: nfs-pod-provisioner-sa + namespace: kube-system +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + labels: + name: provision + name: nfs-pod-provisioner-otherRoles + namespace: kube-system +rules: +- apiGroups: + - "" + resources: + - endpoints + verbs: + - get + - list + - watch + - create + - update + - patch +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + name: provision + name: nfs-provisioner-clusterRole +rules: +- apiGroups: + - "" + resources: + - persistentvolumes + verbs: + - get + - list + - watch + - create + - delete +- apiGroups: + - "" + resources: + - persistentvolumeclaims + verbs: + - get + - list + - watch + - update +- apiGroups: + - storage.k8s.io + resources: + - storageclasses + verbs: + - get + - list + - watch +- apiGroups: + - "" + resources: + - events + verbs: + - create + - update + - patch +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + labels: + name: provision + name: nfs-pod-provisioner-otherRoles + namespace: kube-system +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: nfs-pod-provisioner-otherRoles +subjects: +- kind: ServiceAccount + name: nfs-pod-provisioner-sa + namespace: kube-system +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + labels: + name: provision + name: nfs-provisioner-rolebinding +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: nfs-provisioner-clusterRole +subjects: +- kind: ServiceAccount + name: nfs-pod-provisioner-sa + namespace: kube-system diff --git a/on-premise/nfs-provisioner/3.deploy/sample-deploy.yaml b/on-premise/nfs-provisioner/3.deploy/sample-deploy.yaml new file mode 100644 index 0000000..89ca377 --- /dev/null +++ b/on-premise/nfs-provisioner/3.deploy/sample-deploy.yaml @@ -0,0 +1,38 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: vm-nfs + namespace: kube-system + labels: + name: provision +spec: + replicas: 1 + selector: + matchLabels: + app: vm-nfs + strategy: + type: Recreate + template: + metadata: + labels: + app: vm-nfs + spec: + serviceAccountName: nfs-pod-provisioner-sa + containers: + - name: nfs-client-provisioner + image: k8s.gcr.io/sig-storage/nfs-subdir-external-provisioner:v4.0.2 # provisioner를 구성하는 image + volumeMounts: + - name: nfs-provisioner + mountPath: /persistentvolumes + env: + - name: PROVISIONER_NAME + value: vm-nfs # SC에서 provisioner의 이름으로 사용 + - name: NFS_SERVER + value: 192.168.0.211 + - name: NFS_PATH + value: /nfs # nfs 연결 주소 + volumes: + - name: nfs-provisioner + nfs: + server: 192.168.0.211 + path: /nfs diff --git a/on-premise/nfs-provisioner/4.postSettings/sc-vm.yaml b/on-premise/nfs-provisioner/4.postSettings/sc-vm.yaml new file mode 100644 index 0000000..db6954a --- /dev/null +++ b/on-premise/nfs-provisioner/4.postSettings/sc-vm.yaml @@ -0,0 +1,15 @@ +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + name: vm-nfs # pvc에서 사용할 SC Name + annotations: + storageclass.kubernetes.io/is-default-class: "true" + labels: + name: provision +provisioner: vm-nfs # provisioner에서 생성한 PROVISIONER_NAME +parameters: + #pathPattern: "${.PVC.namespace}/${.PVC.annotations.nfs.io/storage-path}" # waits for nfs.io/storage-path annotation, if not specified will accept as empty string. + onDelete: Retain + #onDelete: delete + archiveOnDelete: "false" +reclaimPolicy: Retain diff --git a/on-premise/prometheusAlertManager/1_configuration/init.yaml b/on-premise/prometheusAlertManager/1_configuration/init.yaml new file mode 100644 index 0000000..a97cd7d --- /dev/null +++ b/on-premise/prometheusAlertManager/1_configuration/init.yaml @@ -0,0 +1,13 @@ +# Source: prometheus/charts/alertmanager/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: prometheus-alertmanager + labels: + helm.sh/chart: alertmanager-1.12.0 + app.kubernetes.io/name: alertmanager + app.kubernetes.io/instance: prometheus + app.kubernetes.io/version: "v0.27.0" + app.kubernetes.io/managed-by: Helm + namespace: monitoring +automountServiceAccountToken: true \ No newline at end of file diff --git a/on-premise/prometheusAlertManager/1_configuration/pvc.yaml b/on-premise/prometheusAlertManager/1_configuration/pvc.yaml new file mode 100644 index 0000000..20d56e2 --- /dev/null +++ b/on-premise/prometheusAlertManager/1_configuration/pvc.yaml @@ -0,0 +1,17 @@ +# Source: prometheus/templates/pvc.yaml +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + labels: + app.kubernetes.io/component: server + app.kubernetes.io/name: prometheus + app.kubernetes.io/instance: prometheus + app.kubernetes.io/part-of: prometheus + name: prometheus-alert + namespace: monitoring +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: "2Gi" \ No newline at end of file diff --git a/on-premise/prometheusAlertManager/2_config/default.yaml b/on-premise/prometheusAlertManager/2_config/default.yaml new file mode 100644 index 0000000..dc3517c --- /dev/null +++ b/on-premise/prometheusAlertManager/2_config/default.yaml @@ -0,0 +1,24 @@ +# Source: prometheus/charts/alertmanager/templates/configmap.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: prometheus-alertmanager + labels: + helm.sh/chart: alertmanager-1.12.0 + app.kubernetes.io/name: alertmanager + app.kubernetes.io/instance: prometheus + app.kubernetes.io/version: "v0.27.0" + app.kubernetes.io/managed-by: Helm + namespace: monitoring +data: + alertmanager.yml: | + global: {} + receivers: + - name: default-receiver + route: + group_interval: 5m + group_wait: 10s + receiver: default-receiver + repeat_interval: 3h + templates: + - /etc/alertmanager/*.tmpl \ No newline at end of file diff --git a/on-premise/prometheusAlertManager/3_deploy/deploy.yaml b/on-premise/prometheusAlertManager/3_deploy/deploy.yaml new file mode 100644 index 0000000..1df7d6a --- /dev/null +++ b/on-premise/prometheusAlertManager/3_deploy/deploy.yaml @@ -0,0 +1,99 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app.kubernetes.io/instance: prometheus + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: alertmanager + app.kubernetes.io/version: v0.27.0 + helm.sh/chart: alertmanager-1.12.0 + name: prometheus-alertmanager + namespace: monitoring +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/instance: prometheus + app.kubernetes.io/name: alertmanager + template: + metadata: + labels: + app.kubernetes.io/instance: prometheus + app.kubernetes.io/name: alertmanager + spec: + automountServiceAccountToken: true + containers: + - args: + - --storage.path=/alertmanager + - --config.file=/etc/alertmanager/alertmanager.yml + env: + - name: POD_IP + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: status.podIP + image: quay.io/prometheus/alertmanager:v0.27.0 + imagePullPolicy: IfNotPresent + livenessProbe: + httpGet: + path: / + port: http + name: alertmanager + ports: + - containerPort: 9093 + name: http + protocol: TCP + readinessProbe: + httpGet: + path: / + port: http + resources: + limits: + cpu: 200m + memory: 512Mi + securityContext: + runAsGroup: 65534 + runAsNonRoot: true + runAsUser: 65534 + volumeMounts: + - mountPath: /etc/alertmanager + name: config + - mountPath: /alertmanager + name: storage + securityContext: + fsGroup: 65534 + runAsGroup: 65534 + runAsNonRoot: true + runAsUser: 65534 + serviceAccountName: prometheus-alertmanager + volumes: + - configMap: + defaultMode: 420 + name: prometheus-alertmanager + name: config + - name: storage + persistentVolumeClaim: + claimName: prometheus-alert +--- +# Source: prometheus/charts/alertmanager/templates/services.yaml +apiVersion: v1 +kind: Service +metadata: + name: prometheus-alertmanager + labels: + helm.sh/chart: alertmanager-1.12.0 + app.kubernetes.io/name: alertmanager + app.kubernetes.io/instance: prometheus + app.kubernetes.io/version: "v0.27.0" + app.kubernetes.io/managed-by: Helm + namespace: monitoring +spec: + type: ClusterIP + ports: + - port: 9093 + targetPort: http + protocol: TCP + name: http + selector: + app.kubernetes.io/name: alertmanager + app.kubernetes.io/instance: prometheus \ No newline at end of file diff --git a/on-premise/prometheusAlertManager/3_deploy/ing.yaml b/on-premise/prometheusAlertManager/3_deploy/ing.yaml new file mode 100644 index 0000000..9ffec75 --- /dev/null +++ b/on-premise/prometheusAlertManager/3_deploy/ing.yaml @@ -0,0 +1,26 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: ing-alertmanager + namespace: monitoring + annotations: + # 인증 방법 설정: basic auth + nginx.ingress.kubernetes.io/auth-type: basic + # basic auth 사용자가 들어있는 secret 설정 + nginx.ingress.kubernetes.io/auth-secret: basic-auth + # 인증 요청시 나오는 메세지 설정 + nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required - admin' +spec: + ingressClassName: nginx + rules: + - host: alert.icurfer.com + http: + paths: + - backend: + service: + name: prometheus-alertmanager + port: + number: 9093 + path: / + pathType: Prefix + diff --git a/on-premise/prometheus_2.54.1/1_configuration/init.yaml b/on-premise/prometheus_2.54.1/1_configuration/init.yaml new file mode 100644 index 0000000..f48b167 --- /dev/null +++ b/on-premise/prometheus_2.54.1/1_configuration/init.yaml @@ -0,0 +1,313 @@ +# Source: prometheus/charts/kube-state-metrics/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +automountServiceAccountToken: true +metadata: + labels: + helm.sh/chart: kube-state-metrics-5.25.1 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: metrics + app.kubernetes.io/part-of: kube-state-metrics + app.kubernetes.io/name: kube-state-metrics + app.kubernetes.io/instance: prometheus + app.kubernetes.io/version: "2.13.0" + name: prometheus-kube-state-metrics + namespace: monitoring +--- +# Source: prometheus/charts/prometheus-node-exporter/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: prometheus-prometheus-node-exporter + namespace: monitoring + labels: + helm.sh/chart: prometheus-node-exporter-4.39.0 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: metrics + app.kubernetes.io/part-of: prometheus-node-exporter + app.kubernetes.io/name: prometheus-node-exporter + app.kubernetes.io/instance: prometheus + app.kubernetes.io/version: "1.8.2" +automountServiceAccountToken: false +--- +# Source: prometheus/charts/prometheus-pushgateway/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + helm.sh/chart: prometheus-pushgateway-2.14.0 + app.kubernetes.io/name: prometheus-pushgateway + app.kubernetes.io/instance: prometheus + app.kubernetes.io/version: "v1.9.0" + app.kubernetes.io/managed-by: Helm + name: prometheus-prometheus-pushgateway + namespace: monitoring +automountServiceAccountToken: true +--- +# Source: prometheus/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + app.kubernetes.io/component: server + app.kubernetes.io/name: prometheus + app.kubernetes.io/instance: prometheus + app.kubernetes.io/version: v2.54.1 + helm.sh/chart: prometheus-25.27.0 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/part-of: prometheus + name: prometheus-server + namespace: monitoring + annotations: + {} +--- +# Source: prometheus/charts/kube-state-metrics/templates/role.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + helm.sh/chart: kube-state-metrics-5.25.1 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: metrics + app.kubernetes.io/part-of: kube-state-metrics + app.kubernetes.io/name: kube-state-metrics + app.kubernetes.io/instance: prometheus + app.kubernetes.io/version: "2.13.0" + name: prometheus-kube-state-metrics +rules: + +- apiGroups: ["certificates.k8s.io"] + resources: + - certificatesigningrequests + verbs: ["list", "watch"] + +- apiGroups: [""] + resources: + - configmaps + verbs: ["list", "watch"] + +- apiGroups: ["batch"] + resources: + - cronjobs + verbs: ["list", "watch"] + +- apiGroups: ["extensions", "apps"] + resources: + - daemonsets + verbs: ["list", "watch"] + +- apiGroups: ["extensions", "apps"] + resources: + - deployments + verbs: ["list", "watch"] + +- apiGroups: [""] + resources: + - endpoints + verbs: ["list", "watch"] + +- apiGroups: ["autoscaling"] + resources: + - horizontalpodautoscalers + verbs: ["list", "watch"] + +- apiGroups: ["extensions", "networking.k8s.io"] + resources: + - ingresses + verbs: ["list", "watch"] + +- apiGroups: ["batch"] + resources: + - jobs + verbs: ["list", "watch"] + +- apiGroups: ["coordination.k8s.io"] + resources: + - leases + verbs: ["list", "watch"] + +- apiGroups: [""] + resources: + - limitranges + verbs: ["list", "watch"] + +- apiGroups: ["admissionregistration.k8s.io"] + resources: + - mutatingwebhookconfigurations + verbs: ["list", "watch"] + +- apiGroups: [""] + resources: + - namespaces + verbs: ["list", "watch"] + +- apiGroups: ["networking.k8s.io"] + resources: + - networkpolicies + verbs: ["list", "watch"] + +- apiGroups: [""] + resources: + - nodes + verbs: ["list", "watch"] + +- apiGroups: [""] + resources: + - persistentvolumeclaims + verbs: ["list", "watch"] + +- apiGroups: [""] + resources: + - persistentvolumes + verbs: ["list", "watch"] + +- apiGroups: ["policy"] + resources: + - poddisruptionbudgets + verbs: ["list", "watch"] + +- apiGroups: [""] + resources: + - pods + verbs: ["list", "watch"] + +- apiGroups: ["extensions", "apps"] + resources: + - replicasets + verbs: ["list", "watch"] + +- apiGroups: [""] + resources: + - replicationcontrollers + verbs: ["list", "watch"] + +- apiGroups: [""] + resources: + - resourcequotas + verbs: ["list", "watch"] + +- apiGroups: [""] + resources: + - secrets + verbs: ["list", "watch"] + +- apiGroups: [""] + resources: + - services + verbs: ["list", "watch"] + +- apiGroups: ["apps"] + resources: + - statefulsets + verbs: ["list", "watch"] + +- apiGroups: ["storage.k8s.io"] + resources: + - storageclasses + verbs: ["list", "watch"] + +- apiGroups: ["admissionregistration.k8s.io"] + resources: + - validatingwebhookconfigurations + verbs: ["list", "watch"] + +- apiGroups: ["storage.k8s.io"] + resources: + - volumeattachments + verbs: ["list", "watch"] +--- +# Source: prometheus/templates/clusterrole.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app.kubernetes.io/component: server + app.kubernetes.io/name: prometheus + app.kubernetes.io/instance: prometheus + app.kubernetes.io/version: v2.54.1 + helm.sh/chart: prometheus-25.27.0 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/part-of: prometheus + name: prometheus-server +rules: + - apiGroups: + - "" + resources: + - nodes + - nodes/proxy + - nodes/metrics + - services + - endpoints + - pods + - ingresses + - configmaps + verbs: + - get + - list + - watch + - apiGroups: + - "extensions" + - "networking.k8s.io" + resources: + - ingresses/status + - ingresses + verbs: + - get + - list + - watch + - apiGroups: + - "discovery.k8s.io" + resources: + - endpointslices + verbs: + - get + - list + - watch + - nonResourceURLs: + - "/metrics" + verbs: + - get +--- +# Source: prometheus/charts/kube-state-metrics/templates/clusterrolebinding.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + labels: + helm.sh/chart: kube-state-metrics-5.25.1 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: metrics + app.kubernetes.io/part-of: kube-state-metrics + app.kubernetes.io/name: kube-state-metrics + app.kubernetes.io/instance: prometheus + app.kubernetes.io/version: "2.13.0" + name: prometheus-kube-state-metrics +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: prometheus-kube-state-metrics +subjects: +- kind: ServiceAccount + name: prometheus-kube-state-metrics + namespace: monitoring +--- +# Source: prometheus/templates/clusterrolebinding.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + labels: + app.kubernetes.io/component: server + app.kubernetes.io/name: prometheus + app.kubernetes.io/instance: prometheus + app.kubernetes.io/version: v2.54.1 + helm.sh/chart: prometheus-25.27.0 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/part-of: prometheus + name: prometheus-server +subjects: + - kind: ServiceAccount + name: prometheus-server + namespace: monitoring +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: prometheus-server \ No newline at end of file diff --git a/on-premise/prometheus_2.54.1/1_configuration/pvc.yaml b/on-premise/prometheus_2.54.1/1_configuration/pvc.yaml new file mode 100644 index 0000000..c0f3987 --- /dev/null +++ b/on-premise/prometheus_2.54.1/1_configuration/pvc.yaml @@ -0,0 +1,20 @@ +# Source: prometheus/templates/pvc.yaml +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + labels: + app.kubernetes.io/component: server + app.kubernetes.io/name: prometheus + app.kubernetes.io/instance: prometheus + app.kubernetes.io/version: v2.54.1 + helm.sh/chart: prometheus-25.27.0 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/part-of: prometheus + name: prometheus-server + namespace: monitoring +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: "8Gi" \ No newline at end of file diff --git a/on-premise/prometheus_2.54.1/2_config/cm_prometheus-rulefiles-default.yaml b/on-premise/prometheus_2.54.1/2_config/cm_prometheus-rulefiles-default.yaml new file mode 100644 index 0000000..7a186f9 --- /dev/null +++ b/on-premise/prometheus_2.54.1/2_config/cm_prometheus-rulefiles-default.yaml @@ -0,0 +1,194 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: prometheus-rulefiles + namespace: monitoring +data: + # Awesome Prometheus alerts + ################################################################################ + # Basic resource monitoring prometheus self-monitoring + ################################################################################ + prometheus-self-monitoring.yaml: | + groups: + - name: prometheus-self-monitoring + rules: + - alert: Watchdog + annotations: + description: | + This is an alert meant to ensure that the entire alerting pipeline is functional. + This alert is always firing, therefore it should always be firing in Alertmanager + and always fire against a receiver. There are integrations with various notification + mechanisms that send a notification when this alert is not firing. For example the + "DeadMansSnitch" integration in PagerDuty. + runbook_url: https://runbooks.prometheus-operator.dev/runbooks/general/watchdog + summary: An alert that should always be firing to certify that Alertmanager + is working properly. + expr: vector(1) + labels: + severity: none + # Awesome Prometheus alerts + ################################################################################ + # Basic resource monitoring host and hardware (node-export) + ################################################################################ + prometheus-host-hardware.yaml: | + groups: + - name: prometheus-host-hardware + rules: + - alert: HostOutOfMemory (1.2.01) + expr: node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100 < 10 + for: 2m + labels: + severity: warning + annotations: + summary: Host out of memory (instance {{ $labels.instance }}) + description: "Node memory is filling up (< 10% left)\n VALUE = {{ $value }}\n LABELS = {{ $labels }}" + - alert: HostOutOfDiskSpace (1.2.07) + expr: (node_filesystem_avail_bytes * 100) / node_filesystem_size_bytes < 10 and ON (instance, device, mountpoint) node_filesystem_readonly == 0 + for: 2m + labels: + severity: warning + annotations: + summary: Host out of disk space (instance {{ $labels.instance }}) + description: "Disk is almost full (< 10% left)\n VALUE = {{ $value }}\n LABELS = {{ $labels }}" + # Please add ignored mountpoints in node_exporter parameters like + # "--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|run)($|/)". + # Same rule using "node_filesystem_free_bytes" will fire when disk fills for non-root users. + - alert: HostHighCpuLoad (1.2.13) + expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[2m])) * 100) > 80 + for: 0m + labels: + severity: warning + annotations: + summary: Host high CPU load (instance {{ $labels.instance }}) + description: "CPU load is > 80%\n VALUE = {{ $value }}\n LABELS = {{ $labels }}" + - alert: HostOomKillDetected (1.2.24) + expr: increase(node_vmstat_oom_kill[1m]) > 0 + for: 0m + labels: + severity: warning + annotations: + summary: Host OOM kill detected (instance {{ $labels.instance }}) + description: "OOM kill detected\n VALUE = {{ $value }}\n LABELS = {{ $labels }}" + # Awesome Prometheus alerts + ################################################################################ + # Basic resource monitoring docker container (google/cAdvisor) + ################################################################################ + Prometheus-docker-containers.yaml: | + groups: + - name: prometheus-docker-containers + rules: + # This rule can be very noisy in dynamic infra with legitimate container start/stop/deployment. + - alert: ContainerKilled (1.3.1) + expr: time() - container_last_seen > 60 + for: 0m + labels: + severity: warning + annotations: + summary: Container killed (instance {{ $labels.instance }}) + description: "A container has disappeared\n VALUE = {{ $value }}\n LABELS = {{ $labels }}" + # This rule can be very noisy in dynamic infra with legitimate container start/stop/deployment. + - alert: ContainerCpuUsage (1.3.3) + expr: (sum(rate(container_cpu_usage_seconds_total{name!=""}[3m])) BY (instance, name) * 100) > 80 + for: 2m + labels: + severity: warning + annotations: + summary: Container CPU usage (instance {{ $labels.instance }}) + description: "Container CPU usage is above 80%\n VALUE = {{ $value }}\n LABELS = {{ $labels }}" + # See https://medium.com/faun/how-much-is-too-much-the-linux-oomkiller-and-used-memory-d32186f29c9d + - alert: ContainerMemoryUsage (1.3.4) + expr: (sum(container_memory_working_set_bytes{name!=""}) BY (instance, name) / sum(container_spec_memory_limit_bytes > 0) BY (instance, name) * 100) > 80 + for: 2m + labels: + severity: warning + annotations: + summary: Container Memory usage (instance {{ $labels.instance }}) + description: "Container Memory usage is above 80%\n VALUE = {{ $value }}\n LABELS = {{ $labels }}" + # Awesome Prometheus alerts + ################################################################################ + # Orchestrators kubernetes (kube-state-metrics) + ################################################################################ + prometheus-kubernetes.yaml: | + groups: + - name: prometheus-kubernetes + rules: + - alert: KubernetesNodeReady (5.1.01) + expr: kube_node_status_condition{condition="Ready",status="true"} == 0 + for: 10m + labels: + severity: critical + annotations: + summary: Kubernetes Node ready (instance {{ $labels.instance }}) + description: "Node {{ $labels.node }} has been unready for a long time\n VALUE = {{ $value }}\n LABELS = {{ $labels }}" + - alert: KubernetesOutOfDisk (5.1.04) + expr: kube_node_status_condition{condition="OutOfDisk",status="true"} == 1 + for: 2m + labels: + severity: critical + annotations: + summary: Kubernetes out of disk (instance {{ $labels.instance }}) + description: "{{ $labels.node }} has OutOfDisk condition\n VALUE = {{ $value }}\n LABELS = {{ $labels }}" + - alert: KubernetesContainerOomKiller (5.1.06) + expr: (kube_pod_container_status_restarts_total - kube_pod_container_status_restarts_total offset 10m >= 1) and ignoring (reason) min_over_time(kube_pod_container_status_last_terminated_reason{reason="OOMKilled"}[10m]) == 1 + for: 0m + labels: + severity: warning + annotations: + summary: Kubernetes container oom killer (instance {{ $labels.instance }}) + description: "Container {{ $labels.container }} in pod {{ $labels.namespace }}/{{ $labels.pod }} has been OOMKilled {{ $value }} times in the last 10 minutes.\n VALUE = {{ $value }}\n LABELS = {{ $labels }}" + - alert: KubernetesVolumeOutOfDiskSpace (5.1.10) + expr: kubelet_volume_stats_available_bytes / kubelet_volume_stats_capacity_bytes * 100 < 10 + for: 2m + labels: + severity: warning + annotations: + summary: Kubernetes Volume out of disk space (instance {{ $labels.instance }}) + description: "Volume is almost full (< 10% left)\n VALUE = {{ $value }}\n LABELS = {{ $labels }}" + - alert: KubernetesPersistentvolumeError (5.1.12) + expr: kube_persistentvolume_status_phase{phase=~"Failed|Pending", job="kube-state-metrics"} > 0 + for: 0m + labels: + severity: critical + annotations: + summary: Kubernetes PersistentVolume error (instance {{ $labels.instance }}) + description: "Persistent volume is in bad state\n VALUE = {{ $value }}\n LABELS = {{ $labels }}" + - alert: KubernetesHpaScaleCapability (5.1.16) + expr: kube_horizontalpodautoscaler_status_desired_replicas >= kube_horizontalpodautoscaler_spec_max_replicas + for: 2m + labels: + severity: info + annotations: + summary: Kubernetes HPA scale capability (instance {{ $labels.instance }}) + description: "The maximum number of desired Pods has been hit\n VALUE = {{ $value }}\n LABELS = {{ $labels }}" + - alert: KubernetesPodNotHealthy (5.1.17) + expr: min_over_time(sum by (namespace, pod) (kube_pod_status_phase{phase=~"Pending|Unknown|Failed"})[15m:1m]) > 0 + for: 0m + labels: + severity: critical + annotations: + summary: Kubernetes Pod not healthy (instance {{ $labels.instance }}) + description: "Pod has been in a non-ready state for longer than 15 minutes.\n VALUE = {{ $value }}\n LABELS = {{ $labels }}" + - alert: KubernetesPodCrashLooping (5.1.18) + expr: increase(kube_pod_container_status_restarts_total[1m]) > 3 + for: 2m + labels: + severity: warning + annotations: + summary: Kubernetes pod crash looping (instance {{ $labels.instance }}) + description: "Pod {{ $labels.pod }} is crash looping\n VALUE = {{ $value }}\n LABELS = {{ $labels }}" + - alert: KubernetesApiServerErrors (5.1.29) + expr: sum(rate(apiserver_request_total{job="apiserver",code=~"^(?:5..)$"}[1m])) / sum(rate(apiserver_request_total{job="apiserver"}[1m])) * 100 > 3 + for: 2m + labels: + severity: critical + annotations: + summary: Kubernetes API server errors (instance {{ $labels.instance }}) + description: "Kubernetes API server is experiencing high error rate\n VALUE = {{ $value }}\n LABELS = {{ $labels }}" + - alert: KubernetesClientCertificateExpiresSoon (5.1.32) + expr: apiserver_client_certificate_expiration_seconds_count{job="apiserver"} > 0 and histogram_quantile(0.01, sum by (job, le) (rate(apiserver_client_certificate_expiration_seconds_bucket{job="apiserver"}[5m]))) < 24*60*60 + for: 0m + labels: + severity: critical + annotations: + summary: Kubernetes client certificate expires soon (instance {{ $labels.instance }}) + description: "A client certificate used to authenticate to the apiserver is expiring in less than 24.0 hours.\n VALUE = {{ $value }}\n LABELS = {{ $labels }}" \ No newline at end of file diff --git a/on-premise/prometheus_2.54.1/2_config/default.yaml b/on-premise/prometheus_2.54.1/2_config/default.yaml new file mode 100644 index 0000000..fd9debb --- /dev/null +++ b/on-premise/prometheus_2.54.1/2_config/default.yaml @@ -0,0 +1,354 @@ +# Source: prometheus/templates/cm.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + labels: + app.kubernetes.io/component: server + app.kubernetes.io/name: prometheus + app.kubernetes.io/instance: prometheus + app.kubernetes.io/version: v2.54.1 + helm.sh/chart: prometheus-25.27.0 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/part-of: prometheus + name: prometheus-server + namespace: monitoring +data: + allow-snippet-annotations: "false" + alerting_rules.yml: | + {} + alerts: | + {} + prometheus.yml: | + global: + evaluation_interval: 1m + scrape_interval: 1m + scrape_timeout: 10s + rule_files: + - /etc/config/recording_rules.yml + - /etc/config/alerting_rules.yml + - /etc/config/rules + - /etc/config/alerts + scrape_configs: + - job_name: prometheus + static_configs: + - targets: + - localhost:9090 + - bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token + job_name: kubernetes-apiservers + kubernetes_sd_configs: + - role: endpoints + relabel_configs: + - action: keep + regex: default;kubernetes;https + source_labels: + - __meta_kubernetes_namespace + - __meta_kubernetes_service_name + - __meta_kubernetes_endpoint_port_name + scheme: https + tls_config: + ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + insecure_skip_verify: true + - bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token + job_name: kubernetes-nodes + kubernetes_sd_configs: + - role: node + relabel_configs: + - action: labelmap + regex: __meta_kubernetes_node_label_(.+) + - replacement: kubernetes.default.svc:443 + target_label: __address__ + - regex: (.+) + replacement: /api/v1/nodes/$1/proxy/metrics + source_labels: + - __meta_kubernetes_node_name + target_label: __metrics_path__ + scheme: https + tls_config: + ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + insecure_skip_verify: true + - bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token + job_name: kubernetes-nodes-cadvisor + kubernetes_sd_configs: + - role: node + relabel_configs: + - action: labelmap + regex: __meta_kubernetes_node_label_(.+) + - replacement: kubernetes.default.svc:443 + target_label: __address__ + - regex: (.+) + replacement: /api/v1/nodes/$1/proxy/metrics/cadvisor + source_labels: + - __meta_kubernetes_node_name + target_label: __metrics_path__ + scheme: https + tls_config: + ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + insecure_skip_verify: true + - honor_labels: true + job_name: kubernetes-service-endpoints + kubernetes_sd_configs: + - role: endpoints + relabel_configs: + - action: keep + regex: true + source_labels: + - __meta_kubernetes_service_annotation_prometheus_io_scrape + - action: drop + regex: true + source_labels: + - __meta_kubernetes_service_annotation_prometheus_io_scrape_slow + - action: replace + regex: (https?) + source_labels: + - __meta_kubernetes_service_annotation_prometheus_io_scheme + target_label: __scheme__ + - action: replace + regex: (.+) + source_labels: + - __meta_kubernetes_service_annotation_prometheus_io_path + target_label: __metrics_path__ + - action: replace + regex: (.+?)(?::\d+)?;(\d+) + replacement: $1:$2 + source_labels: + - __address__ + - __meta_kubernetes_service_annotation_prometheus_io_port + target_label: __address__ + - action: labelmap + regex: __meta_kubernetes_service_annotation_prometheus_io_param_(.+) + replacement: __param_$1 + - action: labelmap + regex: __meta_kubernetes_service_label_(.+) + - action: replace + source_labels: + - __meta_kubernetes_namespace + target_label: namespace + - action: replace + source_labels: + - __meta_kubernetes_service_name + target_label: service + - action: replace + source_labels: + - __meta_kubernetes_pod_node_name + target_label: node + - honor_labels: true + job_name: kubernetes-service-endpoints-slow + kubernetes_sd_configs: + - role: endpoints + relabel_configs: + - action: keep + regex: true + source_labels: + - __meta_kubernetes_service_annotation_prometheus_io_scrape_slow + - action: replace + regex: (https?) + source_labels: + - __meta_kubernetes_service_annotation_prometheus_io_scheme + target_label: __scheme__ + - action: replace + regex: (.+) + source_labels: + - __meta_kubernetes_service_annotation_prometheus_io_path + target_label: __metrics_path__ + - action: replace + regex: (.+?)(?::\d+)?;(\d+) + replacement: $1:$2 + source_labels: + - __address__ + - __meta_kubernetes_service_annotation_prometheus_io_port + target_label: __address__ + - action: labelmap + regex: __meta_kubernetes_service_annotation_prometheus_io_param_(.+) + replacement: __param_$1 + - action: labelmap + regex: __meta_kubernetes_service_label_(.+) + - action: replace + source_labels: + - __meta_kubernetes_namespace + target_label: namespace + - action: replace + source_labels: + - __meta_kubernetes_service_name + target_label: service + - action: replace + source_labels: + - __meta_kubernetes_pod_node_name + target_label: node + scrape_interval: 5m + scrape_timeout: 30s + - honor_labels: true + job_name: prometheus-pushgateway + kubernetes_sd_configs: + - role: service + relabel_configs: + - action: keep + regex: pushgateway + source_labels: + - __meta_kubernetes_service_annotation_prometheus_io_probe + - honor_labels: true + job_name: kubernetes-services + kubernetes_sd_configs: + - role: service + metrics_path: /probe + params: + module: + - http_2xx + relabel_configs: + - action: keep + regex: true + source_labels: + - __meta_kubernetes_service_annotation_prometheus_io_probe + - source_labels: + - __address__ + target_label: __param_target + - replacement: blackbox + target_label: __address__ + - source_labels: + - __param_target + target_label: instance + - action: labelmap + regex: __meta_kubernetes_service_label_(.+) + - source_labels: + - __meta_kubernetes_namespace + target_label: namespace + - source_labels: + - __meta_kubernetes_service_name + target_label: service + - honor_labels: true + job_name: kubernetes-pods + kubernetes_sd_configs: + - role: pod + relabel_configs: + - action: keep + regex: true + source_labels: + - __meta_kubernetes_pod_annotation_prometheus_io_scrape + - action: drop + regex: true + source_labels: + - __meta_kubernetes_pod_annotation_prometheus_io_scrape_slow + - action: replace + regex: (https?) + source_labels: + - __meta_kubernetes_pod_annotation_prometheus_io_scheme + target_label: __scheme__ + - action: replace + regex: (.+) + source_labels: + - __meta_kubernetes_pod_annotation_prometheus_io_path + target_label: __metrics_path__ + - action: replace + regex: (\d+);(([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}) + replacement: '[$2]:$1' + source_labels: + - __meta_kubernetes_pod_annotation_prometheus_io_port + - __meta_kubernetes_pod_ip + target_label: __address__ + - action: replace + regex: (\d+);((([0-9]+?)(\.|$)){4}) + replacement: $2:$1 + source_labels: + - __meta_kubernetes_pod_annotation_prometheus_io_port + - __meta_kubernetes_pod_ip + target_label: __address__ + - action: labelmap + regex: __meta_kubernetes_pod_annotation_prometheus_io_param_(.+) + replacement: __param_$1 + - action: labelmap + regex: __meta_kubernetes_pod_label_(.+) + - action: replace + source_labels: + - __meta_kubernetes_namespace + target_label: namespace + - action: replace + source_labels: + - __meta_kubernetes_pod_name + target_label: pod + - action: drop + regex: Pending|Succeeded|Failed|Completed + source_labels: + - __meta_kubernetes_pod_phase + - action: replace + source_labels: + - __meta_kubernetes_pod_node_name + target_label: node + - honor_labels: true + job_name: kubernetes-pods-slow + kubernetes_sd_configs: + - role: pod + relabel_configs: + - action: keep + regex: true + source_labels: + - __meta_kubernetes_pod_annotation_prometheus_io_scrape_slow + - action: replace + regex: (https?) + source_labels: + - __meta_kubernetes_pod_annotation_prometheus_io_scheme + target_label: __scheme__ + - action: replace + regex: (.+) + source_labels: + - __meta_kubernetes_pod_annotation_prometheus_io_path + target_label: __metrics_path__ + - action: replace + regex: (\d+);(([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}) + replacement: '[$2]:$1' + source_labels: + - __meta_kubernetes_pod_annotation_prometheus_io_port + - __meta_kubernetes_pod_ip + target_label: __address__ + - action: replace + regex: (\d+);((([0-9]+?)(\.|$)){4}) + replacement: $2:$1 + source_labels: + - __meta_kubernetes_pod_annotation_prometheus_io_port + - __meta_kubernetes_pod_ip + target_label: __address__ + - action: labelmap + regex: __meta_kubernetes_pod_annotation_prometheus_io_param_(.+) + replacement: __param_$1 + - action: labelmap + regex: __meta_kubernetes_pod_label_(.+) + - action: replace + source_labels: + - __meta_kubernetes_namespace + target_label: namespace + - action: replace + source_labels: + - __meta_kubernetes_pod_name + target_label: pod + - action: drop + regex: Pending|Succeeded|Failed|Completed + source_labels: + - __meta_kubernetes_pod_phase + - action: replace + source_labels: + - __meta_kubernetes_pod_node_name + target_label: node + scrape_interval: 5m + scrape_timeout: 30s + alerting: + alertmanagers: + - kubernetes_sd_configs: + - role: pod + tls_config: + ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token + relabel_configs: + - source_labels: [__meta_kubernetes_namespace] + regex: monitoring + action: keep + - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_instance] + regex: prometheus + action: keep + - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_name] + regex: alertmanager + action: keep + - source_labels: [__meta_kubernetes_pod_container_port_number] + regex: "9093" + action: keep + recording_rules.yml: | + {} + rules: | + {} \ No newline at end of file diff --git a/on-premise/prometheus_2.54.1/3_deploy/daemonset.yaml b/on-premise/prometheus_2.54.1/3_deploy/daemonset.yaml new file mode 100644 index 0000000..01da4c1 --- /dev/null +++ b/on-premise/prometheus_2.54.1/3_deploy/daemonset.yaml @@ -0,0 +1,115 @@ +# Source: prometheus/charts/prometheus-node-exporter/templates/daemonset.yaml +apiVersion: apps/v1 +kind: DaemonSet +metadata: + name: prometheus-prometheus-node-exporter + namespace: monitoring + labels: + helm.sh/chart: prometheus-node-exporter-4.39.0 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: metrics + app.kubernetes.io/part-of: prometheus-node-exporter + app.kubernetes.io/name: prometheus-node-exporter + app.kubernetes.io/instance: prometheus + app.kubernetes.io/version: "1.8.2" +spec: + selector: + matchLabels: + app.kubernetes.io/name: prometheus-node-exporter + app.kubernetes.io/instance: prometheus + revisionHistoryLimit: 10 + updateStrategy: + rollingUpdate: + maxUnavailable: 1 + type: RollingUpdate + template: + metadata: + annotations: + cluster-autoscaler.kubernetes.io/safe-to-evict: "true" + labels: + helm.sh/chart: prometheus-node-exporter-4.39.0 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: metrics + app.kubernetes.io/part-of: prometheus-node-exporter + app.kubernetes.io/name: prometheus-node-exporter + app.kubernetes.io/instance: prometheus + app.kubernetes.io/version: "1.8.2" + spec: + automountServiceAccountToken: false + securityContext: + fsGroup: 65534 + runAsGroup: 65534 + runAsNonRoot: true + runAsUser: 65534 + serviceAccountName: prometheus-prometheus-node-exporter + containers: + - name: node-exporter + image: quay.io/prometheus/node-exporter:v1.8.2 + imagePullPolicy: IfNotPresent + args: + - --path.procfs=/host/proc + - --path.sysfs=/host/sys + - --path.rootfs=/host/root + - --path.udev.data=/host/root/run/udev/data + - --web.listen-address=[$(HOST_IP)]:9100 + securityContext: + allowPrivilegeEscalation: false + readOnlyRootFilesystem: true + env: + - name: HOST_IP + value: 0.0.0.0 + ports: + - name: metrics + containerPort: 9100 + protocol: TCP + livenessProbe: + failureThreshold: 3 + httpGet: + httpHeaders: + path: / + port: 9100 + scheme: HTTP + initialDelaySeconds: 0 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + readinessProbe: + failureThreshold: 3 + httpGet: + httpHeaders: + path: / + port: 9100 + scheme: HTTP + initialDelaySeconds: 0 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + volumeMounts: + - name: proc + mountPath: /host/proc + readOnly: true + - name: sys + mountPath: /host/sys + readOnly: true + - name: root + mountPath: /host/root + mountPropagation: HostToContainer + readOnly: true + hostNetwork: true + hostPID: true + hostIPC: false + nodeSelector: + kubernetes.io/os: linux + tolerations: + - effect: NoSchedule + operator: Exists + volumes: + - name: proc + hostPath: + path: /proc + - name: sys + hostPath: + path: /sys + - name: root + hostPath: + path: / \ No newline at end of file diff --git a/on-premise/prometheus_2.54.1/3_deploy/deploy.yaml b/on-premise/prometheus_2.54.1/3_deploy/deploy.yaml new file mode 100644 index 0000000..1f949ea --- /dev/null +++ b/on-premise/prometheus_2.54.1/3_deploy/deploy.yaml @@ -0,0 +1,267 @@ +# Source: prometheus/charts/kube-state-metrics/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: prometheus-kube-state-metrics + namespace: monitoring + labels: + helm.sh/chart: kube-state-metrics-5.25.1 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: metrics + app.kubernetes.io/part-of: kube-state-metrics + app.kubernetes.io/name: kube-state-metrics + app.kubernetes.io/instance: prometheus + app.kubernetes.io/version: "2.13.0" +spec: + selector: + matchLabels: + app.kubernetes.io/name: kube-state-metrics + app.kubernetes.io/instance: prometheus + replicas: 1 + strategy: + type: RollingUpdate + revisionHistoryLimit: 10 + template: + metadata: + labels: + helm.sh/chart: kube-state-metrics-5.25.1 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: metrics + app.kubernetes.io/part-of: kube-state-metrics + app.kubernetes.io/name: kube-state-metrics + app.kubernetes.io/instance: prometheus + app.kubernetes.io/version: "2.13.0" + spec: + automountServiceAccountToken: true + hostNetwork: false + serviceAccountName: prometheus-kube-state-metrics + securityContext: + fsGroup: 65534 + runAsGroup: 65534 + runAsNonRoot: true + runAsUser: 65534 + seccompProfile: + type: RuntimeDefault + containers: + - name: kube-state-metrics + args: + - --port=8080 + - --resources=certificatesigningrequests,configmaps,cronjobs,daemonsets,deployments,endpoints,horizontalpodautoscalers,ingresses,jobs,leases,limitranges,mutatingwebhookconfigurations,namespaces,networkpolicies,nodes,persistentvolumeclaims,persistentvolumes,poddisruptionbudgets,pods,replicasets,replicationcontrollers,resourcequotas,secrets,services,statefulsets,storageclasses,validatingwebhookconfigurations,volumeattachments + imagePullPolicy: IfNotPresent + image: registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.13.0 + ports: + - containerPort: 8080 + name: "http" + livenessProbe: + failureThreshold: 3 + httpGet: + httpHeaders: + path: /livez + port: 8080 + scheme: HTTP + initialDelaySeconds: 5 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + readinessProbe: + failureThreshold: 3 + httpGet: + httpHeaders: + path: /readyz + port: 8080 + scheme: HTTP + initialDelaySeconds: 5 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + resources: + {} + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true +--- +# Source: prometheus/charts/prometheus-pushgateway/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + helm.sh/chart: prometheus-pushgateway-2.14.0 + app.kubernetes.io/name: prometheus-pushgateway + app.kubernetes.io/instance: prometheus + app.kubernetes.io/version: "v1.9.0" + app.kubernetes.io/managed-by: Helm + name: prometheus-prometheus-pushgateway + namespace: monitoring +spec: + replicas: 1 + strategy: + type: Recreate + selector: + matchLabels: + app.kubernetes.io/name: prometheus-pushgateway + app.kubernetes.io/instance: prometheus + template: + metadata: + labels: + helm.sh/chart: prometheus-pushgateway-2.14.0 + app.kubernetes.io/name: prometheus-pushgateway + app.kubernetes.io/instance: prometheus + app.kubernetes.io/version: "v1.9.0" + app.kubernetes.io/managed-by: Helm + spec: + serviceAccountName: prometheus-prometheus-pushgateway + automountServiceAccountToken: true + containers: + - name: pushgateway + image: "quay.io/prometheus/pushgateway:v1.9.0" + imagePullPolicy: IfNotPresent + ports: + - name: metrics + containerPort: 9091 + protocol: TCP + livenessProbe: + httpGet: + path: /-/healthy + port: 9091 + initialDelaySeconds: 10 + timeoutSeconds: 10 + readinessProbe: + httpGet: + path: /-/ready + port: 9091 + initialDelaySeconds: 10 + timeoutSeconds: 10 + volumeMounts: + - name: storage-volume + mountPath: "/data" + subPath: "" + securityContext: + fsGroup: 65534 + runAsNonRoot: true + runAsUser: 65534 + volumes: + - name: storage-volume + emptyDir: {} +--- +# Source: prometheus/templates/deploy.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app.kubernetes.io/component: server + app.kubernetes.io/name: prometheus + app.kubernetes.io/instance: prometheus + app.kubernetes.io/version: v2.54.1 + helm.sh/chart: prometheus-25.27.0 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/part-of: prometheus + name: prometheus-server + namespace: monitoring +spec: + selector: + matchLabels: + app.kubernetes.io/component: server + app.kubernetes.io/name: prometheus + app.kubernetes.io/instance: prometheus + replicas: 1 + revisionHistoryLimit: 10 + strategy: + type: Recreate + rollingUpdate: null + template: + metadata: + labels: + app.kubernetes.io/component: server + app.kubernetes.io/name: prometheus + app.kubernetes.io/instance: prometheus + app.kubernetes.io/version: v2.54.1 + helm.sh/chart: prometheus-25.27.0 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/part-of: prometheus + spec: + enableServiceLinks: true + serviceAccountName: prometheus-server + containers: + - name: prometheus-server-configmap-reload + image: "quay.io/prometheus-operator/prometheus-config-reloader:v0.76.0" + imagePullPolicy: "IfNotPresent" + args: + - --watched-dir=/etc/config + - --listen-address=0.0.0.0:8080 + - --reload-url=http://127.0.0.1:9090/-/reload + ports: + - containerPort: 8080 + name: metrics + livenessProbe: + httpGet: + path: /healthz + port: metrics + scheme: HTTP + initialDelaySeconds: 2 + periodSeconds: 10 + readinessProbe: + httpGet: + path: /healthz + port: metrics + scheme: HTTP + periodSeconds: 10 + volumeMounts: + - name: config-volume + mountPath: /etc/config + readOnly: true + + - name: prometheus-server + image: "quay.io/prometheus/prometheus:v2.54.1" + imagePullPolicy: "IfNotPresent" + args: + - --storage.tsdb.retention.time=15d + - --config.file=/etc/config/prometheus.yml + - --storage.tsdb.path=/data + - --web.console.libraries=/etc/prometheus/console_libraries + - --web.console.templates=/etc/prometheus/consoles + - --web.enable-lifecycle + ports: + - containerPort: 9090 + readinessProbe: + httpGet: + path: /-/ready + port: 9090 + scheme: HTTP + initialDelaySeconds: 30 + periodSeconds: 5 + timeoutSeconds: 4 + failureThreshold: 3 + successThreshold: 1 + livenessProbe: + httpGet: + path: /-/healthy + port: 9090 + scheme: HTTP + initialDelaySeconds: 30 + periodSeconds: 15 + timeoutSeconds: 10 + failureThreshold: 3 + successThreshold: 1 + volumeMounts: + - name: config-volume + mountPath: /etc/config + - name: storage-volume + mountPath: /data + subPath: "" + dnsPolicy: ClusterFirst + securityContext: + fsGroup: 65534 + runAsGroup: 65534 + runAsNonRoot: true + runAsUser: 65534 + terminationGracePeriodSeconds: 300 + volumes: + - name: config-volume + configMap: + name: prometheus-server + - name: storage-volume + persistentVolumeClaim: + claimName: prometheus-server \ No newline at end of file diff --git a/on-premise/prometheus_2.54.1/3_deploy/ing.yaml b/on-premise/prometheus_2.54.1/3_deploy/ing.yaml new file mode 100644 index 0000000..d0d37bc --- /dev/null +++ b/on-premise/prometheus_2.54.1/3_deploy/ing.yaml @@ -0,0 +1,25 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: ing-prometheus + namespace: monitoring + annotations: + # 인증 방법 설정: basic auth + nginx.ingress.kubernetes.io/auth-type: basic + # basic auth 사용자가 들어있는 secret 설정 + nginx.ingress.kubernetes.io/auth-secret: basic-auth + # 인증 요청시 나오는 메세지 설정 + nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required - admin' +spec: + ingressClassName: nginx + rules: + - host: prometheus.icurfer.com + http: + paths: + - backend: + service: + name: prometheus-prometheus-server + port: + number: 80 + path: / + pathType: Prefix \ No newline at end of file diff --git a/on-premise/prometheus_2.54.1/3_deploy/service.yaml b/on-premise/prometheus_2.54.1/3_deploy/service.yaml new file mode 100644 index 0000000..7c2d817 --- /dev/null +++ b/on-premise/prometheus_2.54.1/3_deploy/service.yaml @@ -0,0 +1,106 @@ +# Source: prometheus/charts/kube-state-metrics/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: prometheus-kube-state-metrics + namespace: monitoring + labels: + helm.sh/chart: kube-state-metrics-5.25.1 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: metrics + app.kubernetes.io/part-of: kube-state-metrics + app.kubernetes.io/name: kube-state-metrics + app.kubernetes.io/instance: prometheus + app.kubernetes.io/version: "2.13.0" + annotations: + prometheus.io/scrape: 'true' +spec: + type: "ClusterIP" + ports: + - name: "http" + protocol: TCP + port: 8080 + targetPort: 8080 + + selector: + app.kubernetes.io/name: kube-state-metrics + app.kubernetes.io/instance: prometheus +--- +# Source: prometheus/charts/prometheus-node-exporter/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: prometheus-prometheus-node-exporter + namespace: monitoring + labels: + helm.sh/chart: prometheus-node-exporter-4.39.0 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: metrics + app.kubernetes.io/part-of: prometheus-node-exporter + app.kubernetes.io/name: prometheus-node-exporter + app.kubernetes.io/instance: prometheus + app.kubernetes.io/version: "1.8.2" + annotations: + prometheus.io/scrape: "true" +spec: + type: ClusterIP + ports: + - port: 9100 + targetPort: 9100 + protocol: TCP + name: metrics + selector: + app.kubernetes.io/name: prometheus-node-exporter + app.kubernetes.io/instance: prometheus +--- +# Source: prometheus/charts/prometheus-pushgateway/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + annotations: + prometheus.io/probe: pushgateway + labels: + helm.sh/chart: prometheus-pushgateway-2.14.0 + app.kubernetes.io/name: prometheus-pushgateway + app.kubernetes.io/instance: prometheus + app.kubernetes.io/version: "v1.9.0" + app.kubernetes.io/managed-by: Helm + name: prometheus-prometheus-pushgateway + namespace: monitoring +spec: + type: ClusterIP + ports: + - port: 9091 + targetPort: 9091 + protocol: TCP + name: http + selector: + app.kubernetes.io/name: prometheus-pushgateway + app.kubernetes.io/instance: prometheus +--- +# Source: prometheus/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + labels: + app.kubernetes.io/component: server + app.kubernetes.io/name: prometheus + app.kubernetes.io/instance: prometheus + app.kubernetes.io/version: v2.54.1 + helm.sh/chart: prometheus-25.27.0 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/part-of: prometheus + name: prometheus-server + namespace: monitoring +spec: + ports: + - name: http + port: 80 + protocol: TCP + targetPort: 9090 + selector: + app.kubernetes.io/component: server + app.kubernetes.io/name: prometheus + app.kubernetes.io/instance: prometheus + sessionAffinity: None + type: "ClusterIP" \ No newline at end of file diff --git a/on-premise/prometheus_2.54.1/create.md b/on-premise/prometheus_2.54.1/create.md new file mode 100644 index 0000000..8f3096e --- /dev/null +++ b/on-premise/prometheus_2.54.1/create.md @@ -0,0 +1,6 @@ +helm repo add prometheus-community https://prometheus-community.github.io/helm-charts +helm search repo prometheus-community +helm pull prometheus-community/prometheus --untar +helm template . > demo.yaml + +다음 kustomize로 네임스페이스 추가. \ No newline at end of file diff --git a/on-premise/prometheus_2.54.1/imageList.txt b/on-premise/prometheus_2.54.1/imageList.txt new file mode 100644 index 0000000..af702ff --- /dev/null +++ b/on-premise/prometheus_2.54.1/imageList.txt @@ -0,0 +1,6 @@ +"quay.io/prometheus/alertmanager:v0.27.0", +"quay.io/prometheus/node-exporter:v1.8.2", +"quay.io/prometheus-operator/prometheus-config-reloader:v0.76.0", +"quay.io/prometheus/prometheus:v2.54.1", +"quay.io/prometheus/pushgateway:v1.9.0", +"registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.13.0", \ No newline at end of file diff --git a/on-premise/prometheus_2.54.1/kustomization.yaml b/on-premise/prometheus_2.54.1/kustomization.yaml new file mode 100644 index 0000000..750c294 --- /dev/null +++ b/on-premise/prometheus_2.54.1/kustomization.yaml @@ -0,0 +1,4 @@ +namespace: monitoring + +resources: + - prometheus_all_2.54.1.yaml diff --git a/on-premise/prometheus_2.54.1/prometheus_all_2.54.1.yaml b/on-premise/prometheus_2.54.1/prometheus_all_2.54.1.yaml new file mode 100644 index 0000000..7e93990 --- /dev/null +++ b/on-premise/prometheus_2.54.1/prometheus_all_2.54.1.yaml @@ -0,0 +1,1352 @@ +--- +# Source: prometheus/charts/alertmanager/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: release-name-alertmanager + labels: + helm.sh/chart: alertmanager-1.12.0 + app.kubernetes.io/name: alertmanager + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "v0.27.0" + app.kubernetes.io/managed-by: Helm + namespace: default +automountServiceAccountToken: true +--- +# Source: prometheus/charts/kube-state-metrics/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +automountServiceAccountToken: true +metadata: + labels: + helm.sh/chart: kube-state-metrics-5.25.1 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: metrics + app.kubernetes.io/part-of: kube-state-metrics + app.kubernetes.io/name: kube-state-metrics + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "2.13.0" + name: release-name-kube-state-metrics + namespace: default +--- +# Source: prometheus/charts/prometheus-node-exporter/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: release-name-prometheus-node-exporter + namespace: default + labels: + helm.sh/chart: prometheus-node-exporter-4.39.0 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: metrics + app.kubernetes.io/part-of: prometheus-node-exporter + app.kubernetes.io/name: prometheus-node-exporter + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "1.8.2" +automountServiceAccountToken: false +--- +# Source: prometheus/charts/prometheus-pushgateway/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + helm.sh/chart: prometheus-pushgateway-2.14.0 + app.kubernetes.io/name: prometheus-pushgateway + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "v1.9.0" + app.kubernetes.io/managed-by: Helm + name: release-name-prometheus-pushgateway + namespace: default +automountServiceAccountToken: true +--- +# Source: prometheus/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + app.kubernetes.io/component: server + app.kubernetes.io/name: prometheus + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: v2.54.1 + helm.sh/chart: prometheus-25.27.0 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/part-of: prometheus + name: release-name-prometheus-server + namespace: default + annotations: + {} +--- +# Source: prometheus/charts/alertmanager/templates/configmap.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: release-name-alertmanager + labels: + helm.sh/chart: alertmanager-1.12.0 + app.kubernetes.io/name: alertmanager + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "v0.27.0" + app.kubernetes.io/managed-by: Helm + namespace: default +data: + alertmanager.yml: | + global: {} + receivers: + - name: default-receiver + route: + group_interval: 5m + group_wait: 10s + receiver: default-receiver + repeat_interval: 3h + templates: + - /etc/alertmanager/*.tmpl +--- +# Source: prometheus/templates/cm.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + labels: + app.kubernetes.io/component: server + app.kubernetes.io/name: prometheus + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: v2.54.1 + helm.sh/chart: prometheus-25.27.0 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/part-of: prometheus + name: release-name-prometheus-server + namespace: default +data: + allow-snippet-annotations: "false" + alerting_rules.yml: | + {} + alerts: | + {} + prometheus.yml: | + global: + evaluation_interval: 1m + scrape_interval: 1m + scrape_timeout: 10s + rule_files: + - /etc/config/recording_rules.yml + - /etc/config/alerting_rules.yml + - /etc/config/rules + - /etc/config/alerts + scrape_configs: + - job_name: prometheus + static_configs: + - targets: + - localhost:9090 + - bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token + job_name: kubernetes-apiservers + kubernetes_sd_configs: + - role: endpoints + relabel_configs: + - action: keep + regex: default;kubernetes;https + source_labels: + - __meta_kubernetes_namespace + - __meta_kubernetes_service_name + - __meta_kubernetes_endpoint_port_name + scheme: https + tls_config: + ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + insecure_skip_verify: true + - bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token + job_name: kubernetes-nodes + kubernetes_sd_configs: + - role: node + relabel_configs: + - action: labelmap + regex: __meta_kubernetes_node_label_(.+) + - replacement: kubernetes.default.svc:443 + target_label: __address__ + - regex: (.+) + replacement: /api/v1/nodes/$1/proxy/metrics + source_labels: + - __meta_kubernetes_node_name + target_label: __metrics_path__ + scheme: https + tls_config: + ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + insecure_skip_verify: true + - bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token + job_name: kubernetes-nodes-cadvisor + kubernetes_sd_configs: + - role: node + relabel_configs: + - action: labelmap + regex: __meta_kubernetes_node_label_(.+) + - replacement: kubernetes.default.svc:443 + target_label: __address__ + - regex: (.+) + replacement: /api/v1/nodes/$1/proxy/metrics/cadvisor + source_labels: + - __meta_kubernetes_node_name + target_label: __metrics_path__ + scheme: https + tls_config: + ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + insecure_skip_verify: true + - honor_labels: true + job_name: kubernetes-service-endpoints + kubernetes_sd_configs: + - role: endpoints + relabel_configs: + - action: keep + regex: true + source_labels: + - __meta_kubernetes_service_annotation_prometheus_io_scrape + - action: drop + regex: true + source_labels: + - __meta_kubernetes_service_annotation_prometheus_io_scrape_slow + - action: replace + regex: (https?) + source_labels: + - __meta_kubernetes_service_annotation_prometheus_io_scheme + target_label: __scheme__ + - action: replace + regex: (.+) + source_labels: + - __meta_kubernetes_service_annotation_prometheus_io_path + target_label: __metrics_path__ + - action: replace + regex: (.+?)(?::\d+)?;(\d+) + replacement: $1:$2 + source_labels: + - __address__ + - __meta_kubernetes_service_annotation_prometheus_io_port + target_label: __address__ + - action: labelmap + regex: __meta_kubernetes_service_annotation_prometheus_io_param_(.+) + replacement: __param_$1 + - action: labelmap + regex: __meta_kubernetes_service_label_(.+) + - action: replace + source_labels: + - __meta_kubernetes_namespace + target_label: namespace + - action: replace + source_labels: + - __meta_kubernetes_service_name + target_label: service + - action: replace + source_labels: + - __meta_kubernetes_pod_node_name + target_label: node + - honor_labels: true + job_name: kubernetes-service-endpoints-slow + kubernetes_sd_configs: + - role: endpoints + relabel_configs: + - action: keep + regex: true + source_labels: + - __meta_kubernetes_service_annotation_prometheus_io_scrape_slow + - action: replace + regex: (https?) + source_labels: + - __meta_kubernetes_service_annotation_prometheus_io_scheme + target_label: __scheme__ + - action: replace + regex: (.+) + source_labels: + - __meta_kubernetes_service_annotation_prometheus_io_path + target_label: __metrics_path__ + - action: replace + regex: (.+?)(?::\d+)?;(\d+) + replacement: $1:$2 + source_labels: + - __address__ + - __meta_kubernetes_service_annotation_prometheus_io_port + target_label: __address__ + - action: labelmap + regex: __meta_kubernetes_service_annotation_prometheus_io_param_(.+) + replacement: __param_$1 + - action: labelmap + regex: __meta_kubernetes_service_label_(.+) + - action: replace + source_labels: + - __meta_kubernetes_namespace + target_label: namespace + - action: replace + source_labels: + - __meta_kubernetes_service_name + target_label: service + - action: replace + source_labels: + - __meta_kubernetes_pod_node_name + target_label: node + scrape_interval: 5m + scrape_timeout: 30s + - honor_labels: true + job_name: prometheus-pushgateway + kubernetes_sd_configs: + - role: service + relabel_configs: + - action: keep + regex: pushgateway + source_labels: + - __meta_kubernetes_service_annotation_prometheus_io_probe + - honor_labels: true + job_name: kubernetes-services + kubernetes_sd_configs: + - role: service + metrics_path: /probe + params: + module: + - http_2xx + relabel_configs: + - action: keep + regex: true + source_labels: + - __meta_kubernetes_service_annotation_prometheus_io_probe + - source_labels: + - __address__ + target_label: __param_target + - replacement: blackbox + target_label: __address__ + - source_labels: + - __param_target + target_label: instance + - action: labelmap + regex: __meta_kubernetes_service_label_(.+) + - source_labels: + - __meta_kubernetes_namespace + target_label: namespace + - source_labels: + - __meta_kubernetes_service_name + target_label: service + - honor_labels: true + job_name: kubernetes-pods + kubernetes_sd_configs: + - role: pod + relabel_configs: + - action: keep + regex: true + source_labels: + - __meta_kubernetes_pod_annotation_prometheus_io_scrape + - action: drop + regex: true + source_labels: + - __meta_kubernetes_pod_annotation_prometheus_io_scrape_slow + - action: replace + regex: (https?) + source_labels: + - __meta_kubernetes_pod_annotation_prometheus_io_scheme + target_label: __scheme__ + - action: replace + regex: (.+) + source_labels: + - __meta_kubernetes_pod_annotation_prometheus_io_path + target_label: __metrics_path__ + - action: replace + regex: (\d+);(([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}) + replacement: '[$2]:$1' + source_labels: + - __meta_kubernetes_pod_annotation_prometheus_io_port + - __meta_kubernetes_pod_ip + target_label: __address__ + - action: replace + regex: (\d+);((([0-9]+?)(\.|$)){4}) + replacement: $2:$1 + source_labels: + - __meta_kubernetes_pod_annotation_prometheus_io_port + - __meta_kubernetes_pod_ip + target_label: __address__ + - action: labelmap + regex: __meta_kubernetes_pod_annotation_prometheus_io_param_(.+) + replacement: __param_$1 + - action: labelmap + regex: __meta_kubernetes_pod_label_(.+) + - action: replace + source_labels: + - __meta_kubernetes_namespace + target_label: namespace + - action: replace + source_labels: + - __meta_kubernetes_pod_name + target_label: pod + - action: drop + regex: Pending|Succeeded|Failed|Completed + source_labels: + - __meta_kubernetes_pod_phase + - action: replace + source_labels: + - __meta_kubernetes_pod_node_name + target_label: node + - honor_labels: true + job_name: kubernetes-pods-slow + kubernetes_sd_configs: + - role: pod + relabel_configs: + - action: keep + regex: true + source_labels: + - __meta_kubernetes_pod_annotation_prometheus_io_scrape_slow + - action: replace + regex: (https?) + source_labels: + - __meta_kubernetes_pod_annotation_prometheus_io_scheme + target_label: __scheme__ + - action: replace + regex: (.+) + source_labels: + - __meta_kubernetes_pod_annotation_prometheus_io_path + target_label: __metrics_path__ + - action: replace + regex: (\d+);(([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}) + replacement: '[$2]:$1' + source_labels: + - __meta_kubernetes_pod_annotation_prometheus_io_port + - __meta_kubernetes_pod_ip + target_label: __address__ + - action: replace + regex: (\d+);((([0-9]+?)(\.|$)){4}) + replacement: $2:$1 + source_labels: + - __meta_kubernetes_pod_annotation_prometheus_io_port + - __meta_kubernetes_pod_ip + target_label: __address__ + - action: labelmap + regex: __meta_kubernetes_pod_annotation_prometheus_io_param_(.+) + replacement: __param_$1 + - action: labelmap + regex: __meta_kubernetes_pod_label_(.+) + - action: replace + source_labels: + - __meta_kubernetes_namespace + target_label: namespace + - action: replace + source_labels: + - __meta_kubernetes_pod_name + target_label: pod + - action: drop + regex: Pending|Succeeded|Failed|Completed + source_labels: + - __meta_kubernetes_pod_phase + - action: replace + source_labels: + - __meta_kubernetes_pod_node_name + target_label: node + scrape_interval: 5m + scrape_timeout: 30s + alerting: + alertmanagers: + - kubernetes_sd_configs: + - role: pod + tls_config: + ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token + relabel_configs: + - source_labels: [__meta_kubernetes_namespace] + regex: default + action: keep + - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_instance] + regex: release-name + action: keep + - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_name] + regex: alertmanager + action: keep + - source_labels: [__meta_kubernetes_pod_container_port_number] + regex: "9093" + action: keep + recording_rules.yml: | + {} + rules: | + {} +--- +# Source: prometheus/templates/pvc.yaml +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + labels: + app.kubernetes.io/component: server + app.kubernetes.io/name: prometheus + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: v2.54.1 + helm.sh/chart: prometheus-25.27.0 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/part-of: prometheus + name: release-name-prometheus-server + namespace: default +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: "8Gi" +--- +# Source: prometheus/charts/kube-state-metrics/templates/role.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + helm.sh/chart: kube-state-metrics-5.25.1 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: metrics + app.kubernetes.io/part-of: kube-state-metrics + app.kubernetes.io/name: kube-state-metrics + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "2.13.0" + name: release-name-kube-state-metrics +rules: + +- apiGroups: ["certificates.k8s.io"] + resources: + - certificatesigningrequests + verbs: ["list", "watch"] + +- apiGroups: [""] + resources: + - configmaps + verbs: ["list", "watch"] + +- apiGroups: ["batch"] + resources: + - cronjobs + verbs: ["list", "watch"] + +- apiGroups: ["extensions", "apps"] + resources: + - daemonsets + verbs: ["list", "watch"] + +- apiGroups: ["extensions", "apps"] + resources: + - deployments + verbs: ["list", "watch"] + +- apiGroups: [""] + resources: + - endpoints + verbs: ["list", "watch"] + +- apiGroups: ["autoscaling"] + resources: + - horizontalpodautoscalers + verbs: ["list", "watch"] + +- apiGroups: ["extensions", "networking.k8s.io"] + resources: + - ingresses + verbs: ["list", "watch"] + +- apiGroups: ["batch"] + resources: + - jobs + verbs: ["list", "watch"] + +- apiGroups: ["coordination.k8s.io"] + resources: + - leases + verbs: ["list", "watch"] + +- apiGroups: [""] + resources: + - limitranges + verbs: ["list", "watch"] + +- apiGroups: ["admissionregistration.k8s.io"] + resources: + - mutatingwebhookconfigurations + verbs: ["list", "watch"] + +- apiGroups: [""] + resources: + - namespaces + verbs: ["list", "watch"] + +- apiGroups: ["networking.k8s.io"] + resources: + - networkpolicies + verbs: ["list", "watch"] + +- apiGroups: [""] + resources: + - nodes + verbs: ["list", "watch"] + +- apiGroups: [""] + resources: + - persistentvolumeclaims + verbs: ["list", "watch"] + +- apiGroups: [""] + resources: + - persistentvolumes + verbs: ["list", "watch"] + +- apiGroups: ["policy"] + resources: + - poddisruptionbudgets + verbs: ["list", "watch"] + +- apiGroups: [""] + resources: + - pods + verbs: ["list", "watch"] + +- apiGroups: ["extensions", "apps"] + resources: + - replicasets + verbs: ["list", "watch"] + +- apiGroups: [""] + resources: + - replicationcontrollers + verbs: ["list", "watch"] + +- apiGroups: [""] + resources: + - resourcequotas + verbs: ["list", "watch"] + +- apiGroups: [""] + resources: + - secrets + verbs: ["list", "watch"] + +- apiGroups: [""] + resources: + - services + verbs: ["list", "watch"] + +- apiGroups: ["apps"] + resources: + - statefulsets + verbs: ["list", "watch"] + +- apiGroups: ["storage.k8s.io"] + resources: + - storageclasses + verbs: ["list", "watch"] + +- apiGroups: ["admissionregistration.k8s.io"] + resources: + - validatingwebhookconfigurations + verbs: ["list", "watch"] + +- apiGroups: ["storage.k8s.io"] + resources: + - volumeattachments + verbs: ["list", "watch"] +--- +# Source: prometheus/templates/clusterrole.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app.kubernetes.io/component: server + app.kubernetes.io/name: prometheus + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: v2.54.1 + helm.sh/chart: prometheus-25.27.0 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/part-of: prometheus + name: release-name-prometheus-server +rules: + - apiGroups: + - "" + resources: + - nodes + - nodes/proxy + - nodes/metrics + - services + - endpoints + - pods + - ingresses + - configmaps + verbs: + - get + - list + - watch + - apiGroups: + - "extensions" + - "networking.k8s.io" + resources: + - ingresses/status + - ingresses + verbs: + - get + - list + - watch + - apiGroups: + - "discovery.k8s.io" + resources: + - endpointslices + verbs: + - get + - list + - watch + - nonResourceURLs: + - "/metrics" + verbs: + - get +--- +# Source: prometheus/charts/kube-state-metrics/templates/clusterrolebinding.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + labels: + helm.sh/chart: kube-state-metrics-5.25.1 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: metrics + app.kubernetes.io/part-of: kube-state-metrics + app.kubernetes.io/name: kube-state-metrics + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "2.13.0" + name: release-name-kube-state-metrics +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: release-name-kube-state-metrics +subjects: +- kind: ServiceAccount + name: release-name-kube-state-metrics + namespace: default +--- +# Source: prometheus/templates/clusterrolebinding.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + labels: + app.kubernetes.io/component: server + app.kubernetes.io/name: prometheus + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: v2.54.1 + helm.sh/chart: prometheus-25.27.0 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/part-of: prometheus + name: release-name-prometheus-server +subjects: + - kind: ServiceAccount + name: release-name-prometheus-server + namespace: default +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: release-name-prometheus-server +--- +# Source: prometheus/charts/alertmanager/templates/services.yaml +apiVersion: v1 +kind: Service +metadata: + name: release-name-alertmanager + labels: + helm.sh/chart: alertmanager-1.12.0 + app.kubernetes.io/name: alertmanager + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "v0.27.0" + app.kubernetes.io/managed-by: Helm + namespace: default +spec: + type: ClusterIP + ports: + - port: 9093 + targetPort: http + protocol: TCP + name: http + selector: + app.kubernetes.io/name: alertmanager + app.kubernetes.io/instance: release-name +--- +# Source: prometheus/charts/alertmanager/templates/services.yaml +apiVersion: v1 +kind: Service +metadata: + name: release-name-alertmanager-headless + labels: + helm.sh/chart: alertmanager-1.12.0 + app.kubernetes.io/name: alertmanager + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "v0.27.0" + app.kubernetes.io/managed-by: Helm + namespace: default +spec: + clusterIP: None + ports: + - port: 9093 + targetPort: http + protocol: TCP + name: http + selector: + app.kubernetes.io/name: alertmanager + app.kubernetes.io/instance: release-name +--- +# Source: prometheus/charts/kube-state-metrics/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: release-name-kube-state-metrics + namespace: default + labels: + helm.sh/chart: kube-state-metrics-5.25.1 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: metrics + app.kubernetes.io/part-of: kube-state-metrics + app.kubernetes.io/name: kube-state-metrics + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "2.13.0" + annotations: + prometheus.io/scrape: 'true' +spec: + type: "ClusterIP" + ports: + - name: "http" + protocol: TCP + port: 8080 + targetPort: 8080 + + selector: + app.kubernetes.io/name: kube-state-metrics + app.kubernetes.io/instance: release-name +--- +# Source: prometheus/charts/prometheus-node-exporter/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: release-name-prometheus-node-exporter + namespace: default + labels: + helm.sh/chart: prometheus-node-exporter-4.39.0 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: metrics + app.kubernetes.io/part-of: prometheus-node-exporter + app.kubernetes.io/name: prometheus-node-exporter + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "1.8.2" + annotations: + prometheus.io/scrape: "true" +spec: + type: ClusterIP + ports: + - port: 9100 + targetPort: 9100 + protocol: TCP + name: metrics + selector: + app.kubernetes.io/name: prometheus-node-exporter + app.kubernetes.io/instance: release-name +--- +# Source: prometheus/charts/prometheus-pushgateway/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + annotations: + prometheus.io/probe: pushgateway + labels: + helm.sh/chart: prometheus-pushgateway-2.14.0 + app.kubernetes.io/name: prometheus-pushgateway + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "v1.9.0" + app.kubernetes.io/managed-by: Helm + name: release-name-prometheus-pushgateway + namespace: default +spec: + type: ClusterIP + ports: + - port: 9091 + targetPort: 9091 + protocol: TCP + name: http + selector: + app.kubernetes.io/name: prometheus-pushgateway + app.kubernetes.io/instance: release-name +--- +# Source: prometheus/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + labels: + app.kubernetes.io/component: server + app.kubernetes.io/name: prometheus + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: v2.54.1 + helm.sh/chart: prometheus-25.27.0 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/part-of: prometheus + name: release-name-prometheus-server + namespace: default +spec: + ports: + - name: http + port: 80 + protocol: TCP + targetPort: 9090 + selector: + app.kubernetes.io/component: server + app.kubernetes.io/name: prometheus + app.kubernetes.io/instance: release-name + sessionAffinity: None + type: "ClusterIP" +--- +# Source: prometheus/charts/prometheus-node-exporter/templates/daemonset.yaml +apiVersion: apps/v1 +kind: DaemonSet +metadata: + name: release-name-prometheus-node-exporter + namespace: default + labels: + helm.sh/chart: prometheus-node-exporter-4.39.0 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: metrics + app.kubernetes.io/part-of: prometheus-node-exporter + app.kubernetes.io/name: prometheus-node-exporter + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "1.8.2" +spec: + selector: + matchLabels: + app.kubernetes.io/name: prometheus-node-exporter + app.kubernetes.io/instance: release-name + revisionHistoryLimit: 10 + updateStrategy: + rollingUpdate: + maxUnavailable: 1 + type: RollingUpdate + template: + metadata: + annotations: + cluster-autoscaler.kubernetes.io/safe-to-evict: "true" + labels: + helm.sh/chart: prometheus-node-exporter-4.39.0 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: metrics + app.kubernetes.io/part-of: prometheus-node-exporter + app.kubernetes.io/name: prometheus-node-exporter + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "1.8.2" + spec: + automountServiceAccountToken: false + securityContext: + fsGroup: 65534 + runAsGroup: 65534 + runAsNonRoot: true + runAsUser: 65534 + serviceAccountName: release-name-prometheus-node-exporter + containers: + - name: node-exporter + image: quay.io/prometheus/node-exporter:v1.8.2 + imagePullPolicy: IfNotPresent + args: + - --path.procfs=/host/proc + - --path.sysfs=/host/sys + - --path.rootfs=/host/root + - --path.udev.data=/host/root/run/udev/data + - --web.listen-address=[$(HOST_IP)]:9100 + securityContext: + allowPrivilegeEscalation: false + readOnlyRootFilesystem: true + env: + - name: HOST_IP + value: 0.0.0.0 + ports: + - name: metrics + containerPort: 9100 + protocol: TCP + livenessProbe: + failureThreshold: 3 + httpGet: + httpHeaders: + path: / + port: 9100 + scheme: HTTP + initialDelaySeconds: 0 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + readinessProbe: + failureThreshold: 3 + httpGet: + httpHeaders: + path: / + port: 9100 + scheme: HTTP + initialDelaySeconds: 0 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + volumeMounts: + - name: proc + mountPath: /host/proc + readOnly: true + - name: sys + mountPath: /host/sys + readOnly: true + - name: root + mountPath: /host/root + mountPropagation: HostToContainer + readOnly: true + hostNetwork: true + hostPID: true + hostIPC: false + nodeSelector: + kubernetes.io/os: linux + tolerations: + - effect: NoSchedule + operator: Exists + volumes: + - name: proc + hostPath: + path: /proc + - name: sys + hostPath: + path: /sys + - name: root + hostPath: + path: / +--- +# Source: prometheus/charts/kube-state-metrics/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: release-name-kube-state-metrics + namespace: default + labels: + helm.sh/chart: kube-state-metrics-5.25.1 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: metrics + app.kubernetes.io/part-of: kube-state-metrics + app.kubernetes.io/name: kube-state-metrics + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "2.13.0" +spec: + selector: + matchLabels: + app.kubernetes.io/name: kube-state-metrics + app.kubernetes.io/instance: release-name + replicas: 1 + strategy: + type: RollingUpdate + revisionHistoryLimit: 10 + template: + metadata: + labels: + helm.sh/chart: kube-state-metrics-5.25.1 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: metrics + app.kubernetes.io/part-of: kube-state-metrics + app.kubernetes.io/name: kube-state-metrics + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "2.13.0" + spec: + automountServiceAccountToken: true + hostNetwork: false + serviceAccountName: release-name-kube-state-metrics + securityContext: + fsGroup: 65534 + runAsGroup: 65534 + runAsNonRoot: true + runAsUser: 65534 + seccompProfile: + type: RuntimeDefault + containers: + - name: kube-state-metrics + args: + - --port=8080 + - --resources=certificatesigningrequests,configmaps,cronjobs,daemonsets,deployments,endpoints,horizontalpodautoscalers,ingresses,jobs,leases,limitranges,mutatingwebhookconfigurations,namespaces,networkpolicies,nodes,persistentvolumeclaims,persistentvolumes,poddisruptionbudgets,pods,replicasets,replicationcontrollers,resourcequotas,secrets,services,statefulsets,storageclasses,validatingwebhookconfigurations,volumeattachments + imagePullPolicy: IfNotPresent + image: registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.13.0 + ports: + - containerPort: 8080 + name: "http" + livenessProbe: + failureThreshold: 3 + httpGet: + httpHeaders: + path: /livez + port: 8080 + scheme: HTTP + initialDelaySeconds: 5 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + readinessProbe: + failureThreshold: 3 + httpGet: + httpHeaders: + path: /readyz + port: 8080 + scheme: HTTP + initialDelaySeconds: 5 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + resources: + {} + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true +--- +# Source: prometheus/charts/prometheus-pushgateway/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + helm.sh/chart: prometheus-pushgateway-2.14.0 + app.kubernetes.io/name: prometheus-pushgateway + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "v1.9.0" + app.kubernetes.io/managed-by: Helm + name: release-name-prometheus-pushgateway + namespace: default +spec: + replicas: 1 + strategy: + type: Recreate + selector: + matchLabels: + app.kubernetes.io/name: prometheus-pushgateway + app.kubernetes.io/instance: release-name + template: + metadata: + labels: + helm.sh/chart: prometheus-pushgateway-2.14.0 + app.kubernetes.io/name: prometheus-pushgateway + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "v1.9.0" + app.kubernetes.io/managed-by: Helm + spec: + serviceAccountName: release-name-prometheus-pushgateway + automountServiceAccountToken: true + containers: + - name: pushgateway + image: "quay.io/prometheus/pushgateway:v1.9.0" + imagePullPolicy: IfNotPresent + ports: + - name: metrics + containerPort: 9091 + protocol: TCP + livenessProbe: + httpGet: + path: /-/healthy + port: 9091 + initialDelaySeconds: 10 + timeoutSeconds: 10 + readinessProbe: + httpGet: + path: /-/ready + port: 9091 + initialDelaySeconds: 10 + timeoutSeconds: 10 + volumeMounts: + - name: storage-volume + mountPath: "/data" + subPath: "" + securityContext: + fsGroup: 65534 + runAsNonRoot: true + runAsUser: 65534 + volumes: + - name: storage-volume + emptyDir: {} +--- +# Source: prometheus/templates/deploy.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app.kubernetes.io/component: server + app.kubernetes.io/name: prometheus + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: v2.54.1 + helm.sh/chart: prometheus-25.27.0 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/part-of: prometheus + name: release-name-prometheus-server + namespace: default +spec: + selector: + matchLabels: + app.kubernetes.io/component: server + app.kubernetes.io/name: prometheus + app.kubernetes.io/instance: release-name + replicas: 1 + revisionHistoryLimit: 10 + strategy: + type: Recreate + rollingUpdate: null + template: + metadata: + labels: + app.kubernetes.io/component: server + app.kubernetes.io/name: prometheus + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: v2.54.1 + helm.sh/chart: prometheus-25.27.0 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/part-of: prometheus + spec: + enableServiceLinks: true + serviceAccountName: release-name-prometheus-server + containers: + - name: prometheus-server-configmap-reload + image: "quay.io/prometheus-operator/prometheus-config-reloader:v0.76.0" + imagePullPolicy: "IfNotPresent" + args: + - --watched-dir=/etc/config + - --listen-address=0.0.0.0:8080 + - --reload-url=http://127.0.0.1:9090/-/reload + ports: + - containerPort: 8080 + name: metrics + livenessProbe: + httpGet: + path: /healthz + port: metrics + scheme: HTTP + initialDelaySeconds: 2 + periodSeconds: 10 + readinessProbe: + httpGet: + path: /healthz + port: metrics + scheme: HTTP + periodSeconds: 10 + volumeMounts: + - name: config-volume + mountPath: /etc/config + readOnly: true + + - name: prometheus-server + image: "quay.io/prometheus/prometheus:v2.54.1" + imagePullPolicy: "IfNotPresent" + args: + - --storage.tsdb.retention.time=15d + - --config.file=/etc/config/prometheus.yml + - --storage.tsdb.path=/data + - --web.console.libraries=/etc/prometheus/console_libraries + - --web.console.templates=/etc/prometheus/consoles + - --web.enable-lifecycle + ports: + - containerPort: 9090 + readinessProbe: + httpGet: + path: /-/ready + port: 9090 + scheme: HTTP + initialDelaySeconds: 30 + periodSeconds: 5 + timeoutSeconds: 4 + failureThreshold: 3 + successThreshold: 1 + livenessProbe: + httpGet: + path: /-/healthy + port: 9090 + scheme: HTTP + initialDelaySeconds: 30 + periodSeconds: 15 + timeoutSeconds: 10 + failureThreshold: 3 + successThreshold: 1 + volumeMounts: + - name: config-volume + mountPath: /etc/config + - name: storage-volume + mountPath: /data + subPath: "" + dnsPolicy: ClusterFirst + securityContext: + fsGroup: 65534 + runAsGroup: 65534 + runAsNonRoot: true + runAsUser: 65534 + terminationGracePeriodSeconds: 300 + volumes: + - name: config-volume + configMap: + name: release-name-prometheus-server + - name: storage-volume + persistentVolumeClaim: + claimName: release-name-prometheus-server +--- +# Source: prometheus/charts/alertmanager/templates/statefulset.yaml +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: release-name-alertmanager + labels: + helm.sh/chart: alertmanager-1.12.0 + app.kubernetes.io/name: alertmanager + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "v0.27.0" + app.kubernetes.io/managed-by: Helm + namespace: default +spec: + replicas: 1 + minReadySeconds: 0 + revisionHistoryLimit: 10 + selector: + matchLabels: + app.kubernetes.io/name: alertmanager + app.kubernetes.io/instance: release-name + serviceName: release-name-alertmanager-headless + template: + metadata: + labels: + app.kubernetes.io/name: alertmanager + app.kubernetes.io/instance: release-name + annotations: + checksum/config: d937c8e2a43c0e7939a20fb9844ebd86361017ea06300ae9397042c78e0ed13b + spec: + automountServiceAccountToken: true + serviceAccountName: release-name-alertmanager + securityContext: + fsGroup: 65534 + runAsGroup: 65534 + runAsNonRoot: true + runAsUser: 65534 + containers: + - name: alertmanager + securityContext: + runAsGroup: 65534 + runAsNonRoot: true + runAsUser: 65534 + image: "quay.io/prometheus/alertmanager:v0.27.0" + imagePullPolicy: IfNotPresent + env: + - name: POD_IP + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: status.podIP + args: + - --storage.path=/alertmanager + - --config.file=/etc/alertmanager/alertmanager.yml + ports: + - name: http + containerPort: 9093 + protocol: TCP + livenessProbe: + httpGet: + path: / + port: http + readinessProbe: + httpGet: + path: / + port: http + resources: + {} + volumeMounts: + - name: config + mountPath: /etc/alertmanager + - name: storage + mountPath: /alertmanager + volumes: + - name: config + configMap: + name: release-name-alertmanager + volumeClaimTemplates: + - metadata: + name: storage + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 2Gi