Перейти к основному содержимому
Версия: 2.0.x

kube-prometheus-stack — values

Файл values для чарта kube-prometheus-stack.

kube-prometheus-stack-values.yaml
# Стабильное имя monitoring resources.
fullnameOverride: selena-monitoring

# CRD Prometheus Operator.
crds:
# true ставит ServiceMonitor/PodMonitor/PrometheusRule CRD вместе с chart.
enabled: true

# Prometheus server.
prometheus:
# Спецификация Prometheus instance.
prometheusSpec:
# Сколько хранить metrics history.
retention: 15d
# --- prod tuning: resources/scheduling Prometheus (масштабируется с числом series) ---
resources:
requests:
cpu: "500m"
memory: "2Gi"
limits:
cpu: "2"
memory: "4Gi"
# tolerations:
# - key: "{node_taint_key}"
# operator: "Equal"
# value: "{node_taint_value}"
# effect: "NoSchedule"
# nodeSelector:
# "{node_label_key}": "{node_label_value}"
# affinity: {}
# false позволяет Prometheus видеть ServiceMonitor из Selena namespaces.
serviceMonitorSelectorNilUsesHelmValues: false
# false позволяет Prometheus видеть PodMonitor из Selena namespaces.
podMonitorSelectorNilUsesHelmValues: false
# false позволяет Prometheus видеть PrometheusRule из Selena namespaces.
ruleSelectorNilUsesHelmValues: false
# false позволяет Prometheus видеть Probe из Selena namespaces.
probeSelectorNilUsesHelmValues: false
# false позволяет Prometheus видеть ScrapeConfig из Selena namespaces.
scrapeConfigSelectorNilUsesHelmValues: false
# {} разрешает искать ServiceMonitor во всех namespaces.
serviceMonitorNamespaceSelector: {}
# {} разрешает искать PodMonitor во всех namespaces.
podMonitorNamespaceSelector: {}
# {} разрешает искать PrometheusRule во всех namespaces.
ruleNamespaceSelector: {}
# {} разрешает искать Probe во всех namespaces.
probeNamespaceSelector: {}
# {} разрешает искать ScrapeConfig во всех namespaces.
scrapeConfigNamespaceSelector: {}
# Persistent storage Prometheus.
storageSpec:
# PVC template для Prometheus TSDB.
volumeClaimTemplate:
# PVC spec.
spec:
# StorageClass кластера.
storageClassName: "{storage_class}"
# Запрашиваемые ресурсы PVC.
resources:
# Запрошенный размер диска.
requests:
# Размер Prometheus TSDB для bundled minimal profile.
storage: 64Gi

# Alertmanager.
alertmanager:
# Спецификация Alertmanager instance.
alertmanagerSpec:
# --- prod tuning: resources/scheduling Alertmanager ---
resources:
requests:
cpu: "50m"
memory: "128Mi"
limits:
cpu: "200m"
memory: "256Mi"
# tolerations:
# - key: "{node_taint_key}"
# operator: "Equal"
# value: "{node_taint_value}"
# effect: "NoSchedule"
# nodeSelector:
# "{node_label_key}": "{node_label_value}"
# affinity: {}
# Persistent storage Alertmanager.
storage:
# PVC template для Alertmanager data.
volumeClaimTemplate:
# PVC spec.
spec:
# StorageClass кластера.
storageClassName: "{storage_class}"
# Запрашиваемые ресурсы PVC.
resources:
# Запрошенный размер диска.
requests:
# Размер Alertmanager PVC для bundled minimal profile.
storage: 8Gi

# Grafana UI.
grafana:
# Стабильное имя Grafana resources.
fullnameOverride: selena-grafana
# --- prod tuning: resources/scheduling Grafana ---
resources:
requests:
cpu: "100m"
memory: "256Mi"
limits:
cpu: "500m"
memory: "512Mi"
# tolerations:
# - key: "{node_taint_key}"
# operator: "Equal"
# value: "{node_taint_value}"
# effect: "NoSchedule"
# nodeSelector:
# "{node_label_key}": "{node_label_value}"
# affinity: {}
# Recreate избегает одновременного монтирования одного RWO PVC двумя pod-ами.
deploymentStrategy:
# Strategy deployment-а Grafana.
type: Recreate
# Local admin user Grafana.
admin:
# Secret с admin username/password.
existingSecret: selena-grafana-admin
# Key внутри Secret с admin username.
userKey: admin-user
# Key внутри Secret с admin password.
passwordKey: admin-password
# Secret env vars для Grafana.
envValueFrom:
# OAuth client secret нельзя хранить в ConfigMap.
GF_AUTH_GENERIC_OAUTH_CLIENT_SECRET:
# Key берется из Kubernetes Secret.
secretKeyRef:
# Secret с Keycloak client secret для client `grafana`.
name: selena-grafana-keycloak-client
# Key внутри Secret.
key: client-secret
# Persistent storage Grafana.
persistence:
# true сохраняет dashboards/settings между restart-ами.
enabled: true
# StorageClass кластера.
storageClassName: "{storage_class}"
# Размер PVC Grafana.
size: 16Gi
# Grafana INI config.
grafana.ini:
# Public server URL.
server:
# Public root URL Grafana; должен совпадать с Keycloak redirect/logout URLs.
root_url: "{grafana_public_url}/"
# User defaults.
users:
# true автоматически добавляет OAuth users в default org.
auto_assign_org: true
# Базовая роль; strict role mapping ниже запретит вход без Grafana role.
auto_assign_org_role: Viewer
# Общие настройки auth.
auth:
# true убирает local login form, чтобы вход был только через Keycloak.
disable_login_form: true
# true сразу отправляет пользователя в Keycloak OAuth flow.
oauth_auto_login: true
# Local basic auth.
auth.basic:
# false запрещает basic auth в UI.
enabled: false
# Anonymous auth.
auth.anonymous:
# false запрещает анонимный доступ.
enabled: false
# Generic OAuth provider Keycloak.
auth.generic_oauth:
# true включает вход через Keycloak.
enabled: true
# Имя provider-а на стороне Grafana.
name: Keycloak
# true разрешает создавать Grafana user при первом OAuth login.
allow_sign_up: true
# Keycloak client id для Grafana.
client_id: grafana
# Grafana подставляет secret из env; это не shell placeholder.
client_secret: $__env{GF_AUTH_GENERIC_OAUTH_CLIENT_SECRET}
# OIDC scopes, которые Grafana запрашивает у Keycloak.
scopes: openid profile email
# Browser authorization endpoint Keycloak.
auth_url: "{keycloak_public_url}/realms/selena/protocol/openid-connect/auth"
# Token endpoint Keycloak.
token_url: "{keycloak_public_url}/realms/selena/protocol/openid-connect/token"
# UserInfo endpoint Keycloak.
api_url: "{keycloak_public_url}/realms/selena/protocol/openid-connect/userinfo"
# Logout redirect с client_id и post_logout_redirect_uri.
signout_redirect_url: "{keycloak_public_url}/realms/selena/protocol/openid-connect/logout?client_id=grafana&post_logout_redirect_uri={grafana_login_url_encoded}"
# true включает PKCE для OAuth code flow.
use_pkce: true
# Mapping Keycloak realm roles в Grafana org role.
role_attribute_path: contains(realm_access.roles[*], 'grafana_admin') && 'Admin' || contains(realm_access.roles[*], 'grafana_viewer') && 'Viewer' || ''
# true запрещает вход пользователю без grafana_admin/grafana_viewer.
role_attribute_strict: true
# Claim email из Keycloak.
email_attribute_path: email
# Claim username из Keycloak.
login_attribute_path: preferred_username
# Claim display name из Keycloak.
name_attribute_path: name

# Selena dashboards, поставляемые вместе с chart.
selenaDashboards:
# true устанавливает Selena dashboards ConfigMaps.
enabled: true
# Default folder в Grafana.
folder: Selena
# Список dashboard ConfigMaps.
items:
# Platform overview dashboard.
- name: selena-platform-overview-dashboard
# JSON dashboard file внутри chart.
file: dashboards/selena-platform-overview.json
# Folder dashboard-а в Grafana.
folder: Selena
# Engine dashboard.
- name: selena-engine-dashboard
# JSON dashboard file внутри chart.
file: dashboards/selena-engine-dashboard.json
# Folder dashboard-а в Grafana.
folder: Selena Engine

# --- prod tuning: Prometheus Operator (новый top-level блок) ---
prometheusOperator:
resources:
requests:
cpu: "100m"
memory: "128Mi"
limits:
cpu: "200m"
memory: "256Mi"
# tolerations:
# - key: "{node_taint_key}"
# operator: "Equal"
# value: "{node_taint_value}"
# effect: "NoSchedule"
# nodeSelector:
# "{node_label_key}": "{node_label_value}"
# affinity: {}

# node-exporter — DaemonSet, должен идти на ВСЕ узлы (включая tainted), поэтому
# не задавайте ему nodeSelector. При необходимости расширьте его tolerations:
# prometheus-node-exporter:
# resources:
# requests: { cpu: "50m", memory: "64Mi" }
# limits: { cpu: "200m", memory: "128Mi" }
# tolerations:
# - operator: "Exists"