[DO-1600] test deploy prometheus in cloud-prod (!91)
[DO-1600] Co-authored-by: denis.patrakeev <denis.patrakeev@avroid.tech> Reviewed-on: https://git.avroid.tech/K8s/k8s-configs/pulls/91
This commit is contained in:
@@ -0,0 +1,51 @@
|
|||||||
|
---
|
||||||
|
apiVersion: argoproj.io/v1alpha1
|
||||||
|
kind: Application
|
||||||
|
metadata:
|
||||||
|
name: cloud-prometheus
|
||||||
|
namespace: argocd
|
||||||
|
finalizers:
|
||||||
|
- resources-finalizer.argocd.argoproj.io
|
||||||
|
spec:
|
||||||
|
project: cloud-prometheus
|
||||||
|
destination:
|
||||||
|
server: https://kubernetes.default.svc
|
||||||
|
namespace: cloud-prod
|
||||||
|
sources:
|
||||||
|
- repoURL: https://git.avroid.tech/K8s/k8s-configs.git
|
||||||
|
targetRevision: master
|
||||||
|
ref: values
|
||||||
|
- repoURL: https://nexus.avroid.tech/repository/devops-helm-proxy-helm/
|
||||||
|
chart: "prometheus-community/prometheus"
|
||||||
|
targetRevision: 27.5.1
|
||||||
|
helm:
|
||||||
|
valueFiles:
|
||||||
|
- $values/clusters/k8s-avroid-office.prod.local/namespaces/cloud-prod/monitoring/prometheus/values-override.yaml
|
||||||
|
syncPolicy:
|
||||||
|
automated:
|
||||||
|
prune: true
|
||||||
|
selfHeal: true
|
||||||
|
syncOptions:
|
||||||
|
- ApplyOutOfSyncOnly=true
|
||||||
|
- CreateNamespace=true
|
||||||
|
---
|
||||||
|
apiVersion: argoproj.io/v1alpha1
|
||||||
|
kind: AppProject
|
||||||
|
metadata:
|
||||||
|
name: cloud-prometheus
|
||||||
|
namespace: argocd
|
||||||
|
# Finalizer that ensures that project is not deleted until it is not referenced by any application
|
||||||
|
finalizers:
|
||||||
|
- resources-finalizer.argocd.argoproj.io
|
||||||
|
spec:
|
||||||
|
sourceRepos:
|
||||||
|
- https://git.avroid.tech/K8s/k8s-configs.git
|
||||||
|
- https://nexus.avroid.tech/repository/devops-helm-proxy-helm/
|
||||||
|
# Only permit applications to deploy to the guestbook namespace in the same cluster
|
||||||
|
destinations:
|
||||||
|
- namespace: cloud-prod
|
||||||
|
server: https://kubernetes.default.svc
|
||||||
|
# Deny all cluster-scoped resources from being created, except for Namespace
|
||||||
|
clusterResourceWhitelist:
|
||||||
|
- group: ''
|
||||||
|
kind: Namespace
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
---
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: NetworkPolicy
|
||||||
|
metadata:
|
||||||
|
name: cloud-prometheus-in
|
||||||
|
namespace: cloud-prod
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/managed-by: argocd
|
||||||
|
spec:
|
||||||
|
podSelector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/name: prometheus
|
||||||
|
policyTypes:
|
||||||
|
- Ingress
|
||||||
|
ingress:
|
||||||
|
- from:
|
||||||
|
- namespaceSelector:
|
||||||
|
matchLabels:
|
||||||
|
kubernetes.io/metadata.name: ingress-nginx
|
||||||
|
---
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: NetworkPolicy
|
||||||
|
metadata:
|
||||||
|
name: cloud-prometheus-out
|
||||||
|
namespace: cloud-prod
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/managed-by: argocd
|
||||||
|
spec:
|
||||||
|
podSelector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/name: prometheus
|
||||||
|
policyTypes:
|
||||||
|
- Egress
|
||||||
|
ingress: []
|
||||||
|
egress:
|
||||||
|
- ports:
|
||||||
|
- port: 443
|
||||||
|
protocol: TCP
|
||||||
|
- port: 80
|
||||||
|
protocol: TCP
|
||||||
|
- to:
|
||||||
|
- podSelector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/name: prometheus-redis-exporter
|
||||||
|
- to:
|
||||||
|
- podSelector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/name: prometheus-postgres-exporter
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/managed-by: argocd
|
||||||
|
name: prometheus-secret
|
||||||
|
namespace: cloud-prod
|
||||||
|
annotations:
|
||||||
|
vault.security.banzaicloud.io/vault-addr: "https://vault.avroid.tech"
|
||||||
|
vault.security.banzaicloud.io/vault-role: "cloud-prod"
|
||||||
|
vault.security.banzaicloud.io/vault-skip-verify: "false"
|
||||||
|
vault.security.banzaicloud.io/vault-path: "avroid-office"
|
||||||
|
type: Opaque
|
||||||
|
stringData:
|
||||||
|
consul.secret: dmF1bHQ6dGVhbS1kZXZvcHMvZGF0YS9zZXJ2aWNlcy9tb25pdG9yaW5nL2s4cy9jbG91ZC1wcm9kL3Byb21ldGhldXMjY29uc3VsLnNlY3JldA==
|
||||||
@@ -0,0 +1,275 @@
|
|||||||
|
# yaml-language-server: $schema=values.schema.json
|
||||||
|
# Default values for prometheus.
|
||||||
|
# This is a YAML-formatted file.
|
||||||
|
# Declare variables to be passed into your templates.
|
||||||
|
|
||||||
|
rbac:
|
||||||
|
create: false
|
||||||
|
|
||||||
|
## Define serviceAccount names for components. Defaults to component's fully qualified name.
|
||||||
|
##
|
||||||
|
serviceAccounts:
|
||||||
|
server:
|
||||||
|
create: false
|
||||||
|
name: "vault"
|
||||||
|
|
||||||
|
## Opt out of automounting Kubernetes API credentials.
|
||||||
|
## It will be overriden by server.automountServiceAccountToken value, if set.
|
||||||
|
automountServiceAccountToken: true
|
||||||
|
|
||||||
|
## Monitors ConfigMap changes and POSTs to a URL
|
||||||
|
## Ref: https://github.com/prometheus-operator/prometheus-operator/tree/main/cmd/prometheus-config-reloader
|
||||||
|
##
|
||||||
|
configmapReload:
|
||||||
|
prometheus:
|
||||||
|
## If false, the configmap-reload container will not be deployed
|
||||||
|
##
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
server:
|
||||||
|
## Prometheus server container name
|
||||||
|
##
|
||||||
|
name: server
|
||||||
|
|
||||||
|
## Opt out of automounting Kubernetes API credentials.
|
||||||
|
## If set it will override serviceAccounts.server.automountServiceAccountToken value for ServiceAccount.
|
||||||
|
automountServiceAccountToken: true
|
||||||
|
|
||||||
|
## Prometheus server container image
|
||||||
|
##
|
||||||
|
image:
|
||||||
|
repository: harbor.avroid.tech/quay-proxy/prometheus/prometheus
|
||||||
|
|
||||||
|
## External URL which can access prometheus
|
||||||
|
## Maybe same with Ingress host name
|
||||||
|
baseURL: "cloud-k8s-prometheus.avroid.tech"
|
||||||
|
|
||||||
|
## Additional server container environment variables
|
||||||
|
##
|
||||||
|
## You specify this manually like you would a raw deployment manifest.
|
||||||
|
## This means you can bind in environment variables from secrets.
|
||||||
|
##
|
||||||
|
## e.g. static environment variable:
|
||||||
|
## - name: DEMO_GREETING
|
||||||
|
## value: "Hello from the environment"
|
||||||
|
##
|
||||||
|
## e.g. secret environment variable:
|
||||||
|
## - name: USERNAME
|
||||||
|
## valueFrom:
|
||||||
|
## secretKeyRef:
|
||||||
|
## name: mysecret
|
||||||
|
## key: username
|
||||||
|
env:
|
||||||
|
- name: CONSUL_SECRET
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: prometheus-secret
|
||||||
|
key: consul.secret
|
||||||
|
|
||||||
|
ingress:
|
||||||
|
## If true, Prometheus server Ingress will be created
|
||||||
|
##
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
# For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName
|
||||||
|
# See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress
|
||||||
|
ingressClassName: nginx
|
||||||
|
|
||||||
|
## Prometheus server Ingress annotations
|
||||||
|
##
|
||||||
|
annotations:
|
||||||
|
kubernetes.io/ingress.class: nginx
|
||||||
|
|
||||||
|
## Prometheus server Ingress hostnames with optional path (passed through tpl)
|
||||||
|
## Must be provided if Ingress is enabled
|
||||||
|
##
|
||||||
|
hosts:
|
||||||
|
- cloud-k8s-prometheus.avroid.tech
|
||||||
|
|
||||||
|
path: /
|
||||||
|
|
||||||
|
# pathType is only for k8s >= 1.18
|
||||||
|
pathType: Prefix
|
||||||
|
|
||||||
|
## Node labels for Prometheus server pod assignment
|
||||||
|
## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
|
||||||
|
##
|
||||||
|
nodeSelector:
|
||||||
|
node-role.kubernetes.io/worker: ""
|
||||||
|
|
||||||
|
persistentVolume:
|
||||||
|
## If true, Prometheus server will create/use a Persistent Volume Claim
|
||||||
|
## If false, use emptyDir
|
||||||
|
##
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
emptyDir:
|
||||||
|
## Prometheus server emptyDir volume size limit
|
||||||
|
##
|
||||||
|
sizeLimit: "1Gi"
|
||||||
|
|
||||||
|
## Annotations to be added to Prometheus server pods
|
||||||
|
##
|
||||||
|
podAnnotations:
|
||||||
|
vault.security.banzaicloud.io/vault-addr: "https://vault.avroid.tech"
|
||||||
|
vault.security.banzaicloud.io/vault-role: "cloud-prod"
|
||||||
|
vault.security.banzaicloud.io/vault-skip-verify: "false"
|
||||||
|
vault.security.banzaicloud.io/vault-path: "avroid-office"
|
||||||
|
vault.security.banzaicloud.io/run-as-non-root: "true"
|
||||||
|
vault.security.banzaicloud.io/run-as-user: "65534"
|
||||||
|
vault.security.banzaicloud.io/run-as-group: "65534"
|
||||||
|
|
||||||
|
## Use a StatefulSet if replicaCount needs to be greater than 1 (see below)
|
||||||
|
##
|
||||||
|
replicaCount: 1
|
||||||
|
|
||||||
|
## Annotations to be added to deployment
|
||||||
|
##
|
||||||
|
deploymentAnnotations:
|
||||||
|
vault.security.banzaicloud.io/vault-addr: "https://vault.avroid.tech"
|
||||||
|
vault.security.banzaicloud.io/vault-role: "cloud-prod"
|
||||||
|
vault.security.banzaicloud.io/vault-skip-verify: "false"
|
||||||
|
vault.security.banzaicloud.io/vault-path: "avroid-office"
|
||||||
|
vault.security.banzaicloud.io/run-as-non-root: "true"
|
||||||
|
vault.security.banzaicloud.io/run-as-user: "65534"
|
||||||
|
vault.security.banzaicloud.io/run-as-group: "65534"
|
||||||
|
|
||||||
|
## Prometheus server resource requests and limits
|
||||||
|
## Ref: http://kubernetes.io/docs/user-guide/compute-resources/
|
||||||
|
##
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: 500m
|
||||||
|
memory: 512Mi
|
||||||
|
limits:
|
||||||
|
cpu: 750m
|
||||||
|
memory: 768Mi
|
||||||
|
|
||||||
|
## Prometheus' data retention size. Supported units: B, KB, MB, GB, TB, PB, EB.
|
||||||
|
##
|
||||||
|
retentionSize: "512MB"
|
||||||
|
|
||||||
|
## Prometheus server ConfigMap entries
|
||||||
|
##
|
||||||
|
serverFiles:
|
||||||
|
prometheus.yml:
|
||||||
|
rule_files:
|
||||||
|
- /etc/config/recording_rules.yml
|
||||||
|
- /etc/config/alerting_rules.yml
|
||||||
|
## Below two files are DEPRECATED will be removed from this default values file
|
||||||
|
- /etc/config/rules
|
||||||
|
- /etc/config/alerts
|
||||||
|
|
||||||
|
scrape_configs:
|
||||||
|
- job_name: prometheus
|
||||||
|
static_configs:
|
||||||
|
- targets:
|
||||||
|
- localhost:9090
|
||||||
|
|
||||||
|
# adds additional scrape configs to prometheus.yml
|
||||||
|
# must be a string so you have to add a | after extraScrapeConfigs:
|
||||||
|
# example adds prometheus-blackbox-exporter scrape config
|
||||||
|
extraScrapeConfigs:
|
||||||
|
- job_name: 'postgres_exporter'
|
||||||
|
consul_sd_configs:
|
||||||
|
- server: consul.avroid.tech
|
||||||
|
scheme: https
|
||||||
|
datacenter: "avroid-office"
|
||||||
|
tags: [ k8s_postgres_exporter ]
|
||||||
|
services: [ monitoring_k8s_postgres_exporter ]
|
||||||
|
authorization:
|
||||||
|
credentials: "${CONSUL_SECRET}"
|
||||||
|
relabel_configs:
|
||||||
|
- source_labels: [ __meta_consul_service_metadata_metrics_path ]
|
||||||
|
target_label: __metrics_path__
|
||||||
|
- source_labels: [ __meta_consul_service_metadata_job_name ]
|
||||||
|
target_label: job
|
||||||
|
- source_labels: [ __meta_consul_service_metadata_auth_module ]
|
||||||
|
target_label: __param_auth_module
|
||||||
|
- source_labels: [ __meta_consul_service_metadata_ssl_mode ]
|
||||||
|
target_label: __param_sslmode
|
||||||
|
- source_labels: [ __address__,__meta_consul_service_metadata_db_name ]
|
||||||
|
separator: "/"
|
||||||
|
target_label: __param_target
|
||||||
|
- source_labels: [ __meta_consul_node ]
|
||||||
|
target_label: instance
|
||||||
|
regex: "([^:]+).*"
|
||||||
|
replacement: '${1}'
|
||||||
|
- target_label: __address__
|
||||||
|
replacement: cloud-postgres-exporter-prometheus-postgres-exporter:9187
|
||||||
|
- job_name: 'redis_exporter'
|
||||||
|
consul_sd_configs:
|
||||||
|
- server: consul.avroid.tech
|
||||||
|
scheme: https
|
||||||
|
datacenter: "avroid-office"
|
||||||
|
tags: [ k8s_redis_exporter ]
|
||||||
|
services: [ monitoring_k8s_redis_exporter ]
|
||||||
|
authorization:
|
||||||
|
credentials: "${CONSUL_SECRET}"
|
||||||
|
relabel_configs:
|
||||||
|
- source_labels: [ __meta_consul_service_metadata_metrics_path ]
|
||||||
|
target_label: __metrics_path__
|
||||||
|
- source_labels: [ __meta_consul_service_metadata_job_name ]
|
||||||
|
target_label: job
|
||||||
|
- source_labels: [ __address__ ]
|
||||||
|
target_label: __param_target
|
||||||
|
- source_labels: [ __meta_consul_node ]
|
||||||
|
target_label: instance
|
||||||
|
regex: "([^:]+).*"
|
||||||
|
replacement: '${1}'
|
||||||
|
- target_label: __address__
|
||||||
|
replacement: cloud-redis-exporter-prometheus-redis-exporter:9121
|
||||||
|
- job_name: 'patroni_exporter'
|
||||||
|
consul_sd_configs:
|
||||||
|
- server: consul.avroid.tech
|
||||||
|
scheme: https
|
||||||
|
datacenter: "avroid-office"
|
||||||
|
tags: [ k8s_patroni_exporter ]
|
||||||
|
services: [ monitoring_k8s_patroni_exporter ]
|
||||||
|
authorization:
|
||||||
|
credentials: "${CONSUL_SECRET}"
|
||||||
|
relabel_configs:
|
||||||
|
- source_labels: [ __meta_consul_service_metadata_metrics_path ]
|
||||||
|
target_label: __metrics_path__
|
||||||
|
- source_labels: [ __meta_consul_service_metadata_job_name ]
|
||||||
|
target_label: job
|
||||||
|
- source_labels: [ __address__ ]
|
||||||
|
target_label: __param_target
|
||||||
|
- source_labels: [ __meta_consul_node ]
|
||||||
|
target_label: instance
|
||||||
|
regex: "([^:]+).*"
|
||||||
|
replacement: '${1}'
|
||||||
|
|
||||||
|
# Configuration of subcharts defined in Chart.yaml
|
||||||
|
|
||||||
|
## alertmanager sub-chart configurable values
|
||||||
|
## Please see https://github.com/prometheus-community/helm-charts/tree/main/charts/alertmanager
|
||||||
|
##
|
||||||
|
alertmanager:
|
||||||
|
## If false, alertmanager will not be installed
|
||||||
|
##
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
## kube-state-metrics sub-chart configurable values
|
||||||
|
## Please see https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-state-metrics
|
||||||
|
##
|
||||||
|
kube-state-metrics:
|
||||||
|
## If false, kube-state-metrics sub-chart will not be installed
|
||||||
|
##
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
## prometheus-node-exporter sub-chart configurable values
|
||||||
|
## Please see https://github.com/prometheus-community/helm-charts/tree/main/charts/prometheus-node-exporter
|
||||||
|
##
|
||||||
|
prometheus-node-exporter:
|
||||||
|
## If false, node-exporter will not be installed
|
||||||
|
##
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
## prometheus-pushgateway sub-chart configurable values
|
||||||
|
## Please see https://github.com/prometheus-community/helm-charts/tree/main/charts/prometheus-pushgateway
|
||||||
|
##
|
||||||
|
prometheus-pushgateway:
|
||||||
|
## If false, pushgateway will not be installed
|
||||||
|
##
|
||||||
|
enabled: false
|
||||||
Reference in New Issue
Block a user