added repo

This commit is contained in:
Your Name
2026-08-26 03:39:42 +05:30
parent 45c25a95af
commit b8575bb8b9
6889 changed files with 1217125 additions and 0 deletions
@@ -0,0 +1,3 @@
# Cluster-based Custom Values
This folder contains the custom `values.yaml` files organized based on specific cluster names. Each subdirectory corresponds to a particular cluster and holds the configurations for the applications and tools deployed within that cluster.
@@ -0,0 +1,50 @@
fullnameOverride: "alloy-datascience-prd"
alloy:
configMap:
configFile: datascience.alloy
clustering:
enabled: true
extraPorts:
- name: "otlp-grpc"
port: 4317
targetPort: 4317
protocol: "TCP"
- name: "otlp-http"
port: 4318
targetPort: 4318
protocol: "TCP"
resources:
requests:
cpu: 7
memory: 55Gi
configReloader:
enabled: true
serviceAccount:
annotations: {
iam.gke.io/gcp-service-account: sa-dsci-sre-grafna-obs-stk-prd@meesho-datascience-prd-0622.iam.gserviceaccount.com
}
controller:
# Must be one of 'daemonset', 'deployment', or 'statefulset'.
type: 'deployment'
nodeSelector:
cloud.google.com/compute-class: "alloy"
tolerations:
- key: "cloud.google.com/compute-class"
operator: "Equal"
value: "alloy"
effect: "NoSchedule"
autoscaling:
enabled: true
minReplicas: 4
maxReplicas: 50
targetCPUUtilizationPercentage: 80
targetMemoryUtilizationPercentage: 80
@@ -0,0 +1,674 @@
## Aurva Data Plane
## Ref: https://github.com/aurva-io/aurva-charts.git
postgresql:
enabled: true
fullnameOverride: "aurva-dataplane-database"
volumePermissions:
## @param volumePermissions.enabled Enable init container that changes the owner and group of the persistent volume
##
enabled: true
global:
storageClass: pd-standard-retain
postgresql:
auth:
postgresPassword: "aurva"
database: "controller"
# Add toleration to make sure where this postgres db pod should reside (Applicable for production workloads): For more detail ref: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/
primary:
extendedConfiguration: |
max_connections = 300
# #PLACEHOLDER##
# tolerations:
# - effect: NoSchedule
# key: cloud.google.com/compute-class
# operator: Equal
# value: datascience-devops
# # -- Select nodes to deploy which matches the following labels
# nodeSelector: ##PLACEHOLDER##
# cloud.google.com/compute-class: datascience-devops
# -- Provide a name in place of `aurva`
# namespaceOverride: aurva-dataplane
##########################################################
# Global Configs
##########################################################
global:
aurva_controller:
enabled: true
aurva_fastdet:
enabled: false
aurva_pii_analyzer:
enabled: true
aurva_ocr:
enabled: true
aurva_collector:
enabled: true
deploymentAnnotations: {}
priorityClassName: ""
##########################################################
# Aurva Controller
##########################################################
aurva_controller:
# -- Additional labels for aurva-controller
additionalLabels:
bu: "datascience"
team: "datascience-devops"
service: "aurva-datascience-prd"
env: "prd"
priority: "p0"
type: "aurva_controller"
# -- Annotations on aurva-controller
annotations: {}
# "key": "value"
revisionHistoryLimit: 3
# -- no of replicas for aurva controller
replicas: 10
# -- Additional label added on pod which is used in Service's Label Selector
podLabels: {}
# -- Additional Pod Annotations added on pod created by this Deployment
additionalPodAnnotations: {}
# "key": "value"
# -- Secrets used to pull image
imagePullSecrets: ""
image:
# Image of the app container
repository: asia-south1-docker.pkg.dev/aurva-gcp/aurva-controller/aurva-controller
tag: "v3.18.2"
pullPolicy: IfNotPresent
# Environment variables to be passed to the app container
env: []
# -- If want to mount Envs from configmap or secret
envFrom:
- type: secret
name: aurva-controller-secrets
# - type: configmap
# name: proxy-datasource-config
# -- Resources to be defined for pod
resources:
limits:
memory: 2Gi
cpu: 2
requests:
memory: 1Gi
cpu: 1
aurvaFastdet:
image:
repository: asia-south1-docker.pkg.dev/aurva-gcp/aurva-fastdet/aurva-fastdet
tag: "v2.30.13"
pullPolicy: IfNotPresent
envFrom: []
env: []
resources:
limits:
cpu: 0.5
memory: 512Mi
requests:
cpu: 0.5
memory: 512Mi
nodeSelector: ##PLACEHOLDER##
cloud.google.com/compute-class: datascience-devops
# -- Taint tolerations for nodes
##PLACEHOLDER##
tolerations:
- effect: NoSchedule
key: cloud.google.com/compute-class
operator: Equal
value: datascience-devops
# -- Pod affinity and pod anti-affinity allow you to specify rules about how pods should be placed relative to other pods.
affinity:
# nodeAffinity:
# requiredDuringSchedulingIgnoredDuringExecution:
# nodeSelectorTerms:
# - matchExpressions:
# - key: disktype
# operator: In
# values:
# - ssd
# -- [DNS configuration]
dnsConfig: {}
# -- Alternative DNS policy for application controller pods
dnsPolicy: "ClusterFirst"
secret:
name: "aurva-controller-secrets"
# -- Additional Labels on secrets
additionalLabels:
# key: value
# -- Annotations on secrets
annotations:
# key: value
config:
#variables
COMPANY_ID: "65eeb832-67ba-40fb-b95a-30ca9eaa3409"
COMMAND_URL: "command.aurva-prd.meeshogcp.in:80"
DEPLOYMENT_TYPE: "kubernetes"
PG_USERNAME: "postgres"
PG_PASSWORD: "aurva"
PG_DBNAME: "controller"
FLUSHER_WORKER_POOL_SIZE: "1000"
FLUSHER_BATCH_SIZE: "30000"
UNIQUENESS_IDENTIFIER: "k8s-datascience-prd-ase1" #Recommendation: should be equal to cluster name
PROVIDER_ACCOUNT_ID: "meesho-datascience-prd-0622" # GCP PROJECT ID (not Number)
REGION: "asia-southeast1" #eg: asia-south1
ENVIRONMENT: "prod"
OCR_ENABLED: "true"
MONITORING_ENABLED: "false"
HYBRID_ONLY_MODE: "false"
FORCE_TLS: "false"
FASTDET_FLAG : "true"
AADHAAR_ENHANCER: "0"
WORKSPACE_EVENT_TRACKING_ENABLED: "false"
ACCESS_IQ_ENABLED: "true"
GRPC_ENFORCE_ALPN_ENABLED: "false"
ENABLE_FASTDET: "true"
FASTDET_MAX_BATCH_SIZE: "100"
HEARTBEAT_INTERVAL: "5m"
#pii data
PII_BUCKET_NAME: "gcs-infra-devop-aurva-datascience-prd"
PII_LOG_BUCKET_REGION: "asia-southeast1"
PII_LOG_CRON: "*/5 * * * *"
ENABLE_PII_LOG: "true"
PII_EVIDENCE_UPLOAD_MAX_BLOCKING_TASKS: "50000"
PII_EVIDENCE_UPLOAD_MAX_CONCURRENT_TASKS: "500"
PII_EVIDENCE_MAX_CACHE_WEIGHT: "100"
QUOTA_CLEANUP_CRON: "0 0 * * *"
ENABLE_PII_QUOTA: "true"
MAX_PII_EVIDENCES_PER_KEY_PER_WINDOW: "3"
PII_QUOTA_SYNC_CRON: "*/2 * * * *"
QUOTA_WINDOW_HOURS: "24"
#constants
SKIP_NAMESPACES: "contour-internal-1-datascience-prd,contour-internal-0-datascience-prd,contour-external-datascience-prd"
CLOUD_PROVIDER: "gcp"
LOG_ENV: "production"
RDS_SCANNER_AVAILABILITY : "false"
REDSHIFT_SCANNER_AVAILABILITY : "false"
S3_SCANNER_AVAILABILITY : "false"
DYNAMO_SCANNER_AVAILABILITY: "false"
DOCDB_SCANNER_AVAILABILITY: "false"
OPENSEARCH_SCANNER_AVAILABILITY: "false"
CLOUDSQL_SCANNER_AVAILABILITY: "true"
BIGQUERY_SCANNER_AVAILABILITY: "true"
AWS_SNAPSHOT_SCANNER_AVAILABILITY: "false"
CLOUDSTORAGE_SCANNER_AVAILABILITY: "true"
KEYSPACES_SCANNER_AVAILABILITY: "false"
ALLOYDB_SCANNER_AVAILABILITY: "true"
BIGTABLE_SCANNER_AVAILABILITY: "true"
GCP_BACKUP_AVAILABILITY: "true"
EGRESS_MODE_ONLY: "false"
SENTRY_DSN: "https://fd6738e1ee4a9a9c1f079d09953b43b1@sentry.aurva.io/4"
serviceAccount:
# -- Create a service account for the aurva controller
create: true
# -- Service account name
name: aurva-controller-sa
# -- Annotations applied to created service account
annotations:
iam.gke.io/gcp-service-account: sa-datascience-prd-aurva-contr@meesho-datascience-prd-0622.iam.gserviceaccount.com
# eks.amazonaws.com/role-arn: arn:aws:iam::<account-id>:role/<role-name>
# -- Labels applied to created service account
labels: {}
autoscaling:
enabled: true
minReplicas: 10
maxReplicas: 15
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: 70
##########################################################
# Aurva OCR
##########################################################
aurva_ocr:
# -- Additional labels for aurva-controller
additionalLabels:
bu: "datascience"
team: "datascience-devops"
service: "aurva-datascience-prd"
env: "prd"
priority: "p0"
type: "aurva_ocr"
# -- Annotations on aurva-controller
annotations: {}
# "key": "value"
revisionHistoryLimit: 3
# -- no of replicas for aurva controller
replicas: 1
# -- Additional label added on pod which is used in Service's Label Selector
podLabels: {}
# -- Additional Pod Annotations added on pod created by this Deployment
additionalPodAnnotations: {}
# "key": "value"
# -- Secrets used to pull image
imagePullSecrets: ""
# Image of the app container
image:
repository: asia-south1-docker.pkg.dev/aurva-gcp/aurva-ocr/aurva-ocr
tag: "v3.15.11"
pullPolicy: IfNotPresent
# Environment variables to be passed to the app container
env: []
# -- If want to mount Envs from configmap or secret
envFrom:
aurva-ocr:
type: secret
name: aurva-ocr-secrets
# -- Resources to be defined for pod
resources:
limits:
memory: 2Gi
cpu: 1
requests:
memory: 2Gi
cpu: 1
# -- Select nodes to deploy which matches the following labels
nodeSelector: ##PLACEHOLDER##
cloud.google.com/compute-class: datascience-devops
##PLACEHOLDER##
# -- Taint tolerations for nodes
tolerations:
- effect: NoSchedule
key: cloud.google.com/compute-class
operator: Equal
value: datascience-devops
# -- Pod affinity and pod anti-affinity allow you to specify rules about how pods should be placed relative to other pods.
affinity:
# nodeAffinity:
# requiredDuringSchedulingIgnoredDuringExecution:
# nodeSelectorTerms:
# - matchExpressions:
# - key: disktype
# operator: In
# values:
# - ssd
# -- [DNS configuration]
dnsConfig: {}
# -- Alternative DNS policy for application controller pods
dnsPolicy: "ClusterFirst"
secret:
name: "aurva-ocr-secrets"
# -- Additional Labels on secrets
additionalLabels:
# key: value
# -- Annotations on secrets
annotations:
# key: value
config:
PG_USERNAME: "postgres"
PG_PASSWORD: "aurva"
PG_DBNAME: "controller"
OCR_TIME_LIMIT: "1"
COMPANY_ID: "65eeb832-67ba-40fb-b95a-30ca9eaa3409"
UNIQUENESS_IDENTIFIER: "k8s-datascience-prd-ase1"
DEPLOYMENT_TYPE: "kubernetes"
serviceAccount:
# -- Create a service account for the aurva controller
create: true
# -- Service account name
name: aurva-ocr-sa
# -- Annotations applied to created service account
annotations:
# eks.amazonaws.com/role-arn: arn:aws:iam::<account-id>:role/<role-name>
# iam.gke.io/gcp-service-account: service-account@gcp.iam.gserviceaccount.com
# -- Labels applied to created service account
labels: {}
##########################################################
# Aurva Collector
##########################################################
aurva_collector:
# -- Additional labels for aurva-analyzer
additionalLabels:
bu: "datascience"
team: "datascience-devops"
service: "aurva-datascience-prd"
env: "prd"
priority: "p0"
type: "aurva_collector"
# -- Annotations on aurva-analyzer
annotations: {}
# "key": "value"
# -- Additional label added on pod which is used in Service's Label Selector
podLabels: {}
# -- Additional Pod Annotations added on pod created by this Deployment
additionalPodAnnotations: {}
# "key": "value"
# -- Secrets used to pull image
imagePullSecrets: ""
# Image of the app container
image:
repository: asia-south1-docker.pkg.dev/aurva-gcp/aurva-collector/aurva-collector
tag: "v3.18.2"
pullPolicy: IfNotPresent
# Environment variables to be passed to the app container
env: []
# -- If want to mount Envs from configmap or secret
envFrom:
aurva-controller:
type: secret
name: aurva-collector-secrets
resources:
limits:
cpu: 800m
memory: 800Mi
requests:
cpu: 200m
memory: 512Mi
podSecurityContext: {}
securityContext:
privileged: true
capabilities:
add:
# For kernel v5.8 and above we don't need CAP_SYS_ADMIN or CAP_SYS_RESOURCE
# we just need CAP_BPF and CAP_PERFMON. This has been tested on our EKS node
# which is on kernel v5.10.x
# When SSL Tracing is required we need CAP_SYS_ADMIN and CAP_SYS_PTRACE
# on top of the previous capabilities
# So finally these are the 4 possible combinations for capabilies
# 1. Newer Kernels without SSL
# - BPF
# - PERFMON
# 2. Newer Kernels with SSL
- SYS_ADMIN
- SYS_PTRACE
# 3. Older Kernels without SSL
# - SYS_ADMIN
# - SYS_RESOURCE
# 4. Older Kernels with SSL
# - SYS_ADMIN
# - SYS_RESOURCE
# - SYS_PTRACE
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
volumes:
- name: debugfs
mountPath: /sys/kernel/debug
hostPath: /sys/kernel/debug
- name: vmlinux
mountPath: /sys/kernel/btf/vmlinux
hostPath: /sys/kernel/btf/vmlinux
- name: procfs
mountPath: /host/proc
hostPath: /proc
- name: bpffs
mountPath: /sys/fs/bpf
hostPath: /sys/fs/bpf
# -- Taint tolerations for nodes
tolerations:
# - effect: NoSchedule
# key: cloud.google.com/compute-class
# operator: Equal
# value: megatetra
- operator: Exists
# -- Pod affinity and pod anti-affinity allow you to specify rules about how pods should be placed relative to other pods.
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: cloud.google.com/compute-class
operator: NotIn
values:
- vmstorage
- vmselect
- vmagent
- vminsert
- contour-internal-0
- contour-internal-1
- contour-external
- alloy
- preprod-spot-16
dnsPolicy: "ClusterFirst"
secret:
name: "aurva-collector-secrets"
# -- Additional Labels on secrets
additionalLabels:
# key: value
# -- Annotations on secrets
annotations:
# key: value
config:
# variables
COMPANY_ID: "65eeb832-67ba-40fb-b95a-30ca9eaa3409"
UNIQUENESS_IDENTIFIER: "k8s-datascience-prd-ase1"
DEPLOYMENT_TYPE: "kubernetes"
TRACE_INTERNAL_SVC: "true"
TRACE_INTERNAL_SVC_HTTP: "true"
INTERNAL_SVC_SAMPLE_INTERVAL: "10m"
LOGS_TTL: "1h"
TRACE_HTTP2: "true"
TRACE_SSL: "false"
TRACE_PSQL: "false"
TRACE_SQLSERVER: "false"
TRACE_MYSQL: "false"
TRACE_EGRESS: "true"
TRACE_GO_TLS: "false"
TRACE_ML_SERVICES: "false"
# constants
LOG_ENV: production
SENTRY_DSN: "https://fd6738e1ee4a9a9c1f079d09953b43b1@sentry.aurva.io/4"
MONITORING_ENABLED: "false"
ENABLE_INGRESS_INFORMER: "false"
ENABLE_SERVICE_INFORMER: "false"
ENABLE_ISTIO_INFORMER: "false"
EXCLUDED_PII_REGEX_TYPES: "ip_address,us_bank_number,us_driver_license,us_itin,us_passport,us_routing,us_mbi,ssn"
AGGREGATOR_MAX_CONNECTIONS: "1000"
serviceAccount:
# -- Create a service account for the aurva controller
create: true
# -- Service account name
name: aurva-collector-sa
# -- Annotations applied to created service account
annotations:
# eks.amazonaws.com/role-arn: arn:aws:iam::<account-id>:role/<role-name>
# -- Labels applied to created service account
labels: {}
##########################################################
# Aurva PII Analyzer
##########################################################
aurva_pii_analyzer:
# -- Additional labels for aurva-controller
additionalLabels:
bu: "datascience"
team: "datascience-devops"
service: "aurva-datascience-prd"
env: "prd"
priority: "p0"
type: "aurva_pii_analyzer"
# -- Annotations on aurva-controller
annotations: {}
# "key": "value"
revisionHistoryLimit: 3
# -- no of replicas for aurva controller
replicas: 3
# -- Additional label added on pod which is used in Service's Label Selector
podLabels: {}
# -- Additional Pod Annotations added on pod created by this Deployment
additionalPodAnnotations: {}
# "key": "value"
# -- Secrets used to pull image
imagePullSecrets: ""
##PLACEHOLDER##
nodeSelector:
cloud.google.com/compute-class: datascience-devops
# Image of the app container
image:
repository: asia-south1-docker.pkg.dev/aurva-gcp/aurva-piianalyzer/aurva-piianalyzer
tag: "v3.15.11"
pullPolicy: IfNotPresent
# Environment variables to be passed to the app container
env: []
# -- If want to mount Envs from configmap or secret
envFrom:
aurva-pii-analyzer:
type: secret
name: aurva-pii-analyzer-secrets
# -- Resources to be defined for pod
resources:
limits:
memory: 4Gi
cpu: 4
requests:
memory: 2Gi
cpu: 2
nodeSelector: ##PLACEHOLDER##
cloud.google.com/compute-class: datascience-devops
##PLACEHOLDER##
# -- Taint tolerations for nodes
tolerations:
- effect: NoSchedule
key: cloud.google.com/compute-class
operator: Equal
value: datascience-devops
# -- Pod affinity and pod anti-affinity allow you to specify rules about how pods should be placed relative to other pods.
affinity:
# nodeAffinity:
# requiredDuringSchedulingIgnoredDuringExecution:
# nodeSelectorTerms:
# - matchExpressions:
# - key: disktype
# operator: In
# values:
# - ssd
# -- [DNS configuration]
dnsConfig: {}
# -- Alternative DNS policy for application controller pods
dnsPolicy: "ClusterFirst"
secret:
name: "aurva-pii-analyzer-secrets"
# -- Additional Labels on secrets
additionalLabels:
# key: value
# -- Annotations on secrets
annotations:
# key: value
config:
PG_USERNAME: "postgres"
PG_PASSWORD: "aurva"
PG_DBNAME: "controller"
SCHEDULER_TIME: "1"
SUPPORTED_REGION: "US"
COMPANY_ID: "65eeb832-67ba-40fb-b95a-30ca9eaa3409"
UNIQUENESS_IDENTIFIER: "k8s-datascience-prd-ase1"
DEPLOYMENT_TYPE: "kubernetes"
serviceAccount:
# -- Create a service account for the aurva controller
create: true
# -- Service account name
name: aurva-pii-analyzer-sa
# -- Annotations applied to created service account
annotations:
# eks.amazonaws.com/role-arn: arn:aws:iam::<account-id>:role/<role-name>
# -- Labels applied to created service account
labels: {}
autoscaling:
enabled: true
minReplicas: 2
maxReplicas: 3
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: 70
@@ -0,0 +1,129 @@
global:
logLevel: 2
rbac:
create: true
priorityClassName: "high-priority"
installCRDs: false
crds:
enabled: true
keep: true
# Cert-manager Controller
replicaCount: 1
image:
repository: asia-south1-docker.pkg.dev/meesho-devops-admin-0622/admin/devops/cert-manager/cert-manager-controller
tag: v1.20.1
pullPolicy: IfNotPresent
nodeSelector:
cloud.google.com/compute-class: datascience-devops
tolerations:
- key: "cloud.google.com/compute-class"
operator: "Equal"
value: "datascience-devops"
effect: "NoSchedule"
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 500m
memory: 512Mi
# Webhook Configuration
webhook:
replicaCount: 1
image:
repository: asia-south1-docker.pkg.dev/meesho-devops-admin-0622/admin/devops/cert-manager/cert-manager-webhook
tag: v1.20.1
pullPolicy: IfNotPresent
nodeSelector:
cloud.google.com/compute-class: datascience-devops
tolerations:
- key: "cloud.google.com/compute-class"
operator: "Equal"
value: "datascience-devops"
effect: "NoSchedule"
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 250m
memory: 256Mi
# CA Injector Configuration
cainjector:
enabled: true
replicaCount: 1
image:
repository: asia-south1-docker.pkg.dev/meesho-devops-admin-0622/admin/devops/cert-manager/cert-manager-cainjector
tag: v1.20.1
pullPolicy: IfNotPresent
nodeSelector:
cloud.google.com/compute-class: datascience-devops
tolerations:
- key: "cloud.google.com/compute-class"
operator: "Equal"
value: "datascience-devops"
effect: "NoSchedule"
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 250m
memory: 256Mi
# ACME Solver Configuration
acmesolver:
image:
repository: asia-south1-docker.pkg.dev/meesho-devops-admin-0622/admin/devops/cert-manager/cert-manager-acmesolver
tag: v1.20.1
pullPolicy: IfNotPresent
# Startup API Check
startupapicheck:
enabled: true
timeout: 1m
backoffLimit: 4
image:
repository: asia-south1-docker.pkg.dev/meesho-devops-admin-0622/admin/devops/cert-manager/cert-manager-startupapicheck
tag: v1.20.1
pullPolicy: IfNotPresent
nodeSelector:
cloud.google.com/compute-class: datascience-devops
tolerations:
- key: "cloud.google.com/compute-class"
operator: "Equal"
value: "datascience-devops"
effect: "NoSchedule"
resources:
requests:
cpu: 10m
memory: 32Mi
limits:
cpu: 50m
memory: 64Mi
# Prometheus Monitoring
prometheus:
enabled: true
servicemonitor:
enabled: false
interval: 60s
scrapeTimeout: 30s
labels:
prometheus: cert-manager
@@ -0,0 +1,23 @@
apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
name: c3-highcpu-44-compute-class
spec:
activeMigration:
optimizeRulePriority: true
nodePoolAutoCreation:
enabled: true
nodePoolConfig:
labels:
dedicated: megaduo
serviceAccount: sa-dsci-shared-nodepool-prd@meesho-dsci-as1-prd-0622.iam.gserviceaccount.com
priorities:
- location:
zones:
- asia-south1-a
machineType: c3-highcpu-44
maxPodsPerNode: 18
spot: false
storage:
bootDiskType: pd-ssd
whenUnsatisfiable: DoNotScaleUp
@@ -0,0 +1,23 @@
apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
name: c3d-highcpu-30-compute-class
spec:
activeMigration:
optimizeRulePriority: true
nodePoolAutoCreation:
enabled: true
nodePoolConfig:
labels:
dedicated: mlp-c3d-highcpu-30-v1
serviceAccount: sa-dsci-shared-nodepool-prd@meesho-dsci-as1-prd-0622.iam.gserviceaccount.com
priorities:
- location:
zones:
- asia-south1-a
machineType: c3d-highcpu-30
maxPodsPerNode: 18
spot: false
storage:
bootDiskType: pd-ssd
whenUnsatisfiable: DoNotScaleUp
@@ -0,0 +1,23 @@
apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
name: c4a-highcpu-16-compute-class
spec:
activeMigration:
optimizeRulePriority: true
nodePoolAutoCreation:
enabled: true
nodePoolConfig:
labels:
dedicated: rust-onboard
serviceAccount: sa-dsci-shared-nodepool-prd@meesho-dsci-as1-prd-0622.iam.gserviceaccount.com
priorities:
- location:
zones:
- asia-south1-a
machineType: c4a-highcpu-16
maxPodsPerNode: 18
spot: false
storage:
bootDiskType: pd-ssd
whenUnsatisfiable: DoNotScaleUp
@@ -0,0 +1,28 @@
apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
name: contour-internal-0-arm
spec:
nodePoolConfig:
serviceAccount: sa-dsci-shared-nodepool-prd@meesho-dsci-as1-prd-0622.iam.gserviceaccount.com
priorityDefaults:
location:
zones: ['asia-south1-a']
activeMigration:
optimizeRulePriority: true
nodePoolAutoCreation:
enabled: true
priorities:
- machineType: n4d-highcpu-8
maxPodsPerNode: 16
spot: false
storage:
bootDiskSize: 30
bootDiskType: hyperdisk-balanced
- machineType: c4d-highcpu-8
maxPodsPerNode: 16
spot: false
storage:
bootDiskSize: 30
bootDiskType: hyperdisk-balanced
whenUnsatisfiable: DoNotScaleUp
@@ -0,0 +1,28 @@
apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
name: contour-internal-1-arm
spec:
nodePoolConfig:
serviceAccount: sa-dsci-shared-nodepool-prd@meesho-dsci-as1-prd-0622.iam.gserviceaccount.com
priorityDefaults:
location:
zones: ['asia-south1-a']
activeMigration:
optimizeRulePriority: true
nodePoolAutoCreation:
enabled: true
priorities:
- machineType: n4d-highcpu-16
maxPodsPerNode: 16
spot: false
storage:
bootDiskSize: 30
bootDiskType: hyperdisk-balanced
- machineType: c4d-highcpu-16
maxPodsPerNode: 16
spot: false
storage:
bootDiskSize: 30
bootDiskType: hyperdisk-balanced
whenUnsatisfiable: DoNotScaleUp
@@ -0,0 +1,22 @@
apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
name: contour-internal-dataproc-arm
spec:
nodePoolConfig:
serviceAccount: sa-dsci-shared-nodepool-prd@meesho-dsci-as1-prd-0622.iam.gserviceaccount.com
priorityDefaults:
location:
zones: ['asia-south1-a']
activeMigration:
optimizeRulePriority: true
nodePoolAutoCreation:
enabled: true
priorities:
- machineType: c4d-highcpu-16
maxPodsPerNode: 16
spot: false
storage:
bootDiskSize: 30
bootDiskType: hyperdisk-balanced
whenUnsatisfiable: DoNotScaleUp
@@ -0,0 +1,28 @@
apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
name: contour-internal-intra-0-arm
spec:
nodePoolConfig:
serviceAccount: sa-dsci-shared-nodepool-prd@meesho-dsci-as1-prd-0622.iam.gserviceaccount.com
priorityDefaults:
location:
zones: ['asia-south1-a']
activeMigration:
optimizeRulePriority: true
nodePoolAutoCreation:
enabled: true
priorities:
- machineType: n4d-highcpu-16
maxPodsPerNode: 16
spot: false
storage:
bootDiskSize: 30
bootDiskType: hyperdisk-balanced
- machineType: c4d-highcpu-16
maxPodsPerNode: 16
spot: false
storage:
bootDiskSize: 30
bootDiskType: hyperdisk-balanced
whenUnsatisfiable: DoNotScaleUp
@@ -0,0 +1,28 @@
apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
name: contour-internal-intra-1-arm
spec:
nodePoolConfig:
serviceAccount: sa-dsci-shared-nodepool-prd@meesho-dsci-as1-prd-0622.iam.gserviceaccount.com
priorityDefaults:
location:
zones: ['asia-south1-a']
activeMigration:
optimizeRulePriority: true
nodePoolAutoCreation:
enabled: true
priorities:
- machineType: n4d-highcpu-32
maxPodsPerNode: 16
spot: false
storage:
bootDiskSize: 30
bootDiskType: hyperdisk-balanced
- machineType: c4d-highcpu-32
maxPodsPerNode: 16
spot: false
storage:
bootDiskSize: 30
bootDiskType: hyperdisk-balanced
whenUnsatisfiable: DoNotScaleUp
@@ -0,0 +1,28 @@
apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
name: contour-shared-arm
spec:
nodePoolConfig:
serviceAccount: sa-dsci-shared-nodepool-prd@meesho-dsci-as1-prd-0622.iam.gserviceaccount.com
priorityDefaults:
location:
zones: ['asia-south1-a']
activeMigration:
optimizeRulePriority: true
nodePoolAutoCreation:
enabled: true
priorities:
- machineType: n4d-highcpu-16
maxPodsPerNode: 16
spot: false
storage:
bootDiskSize: 30
bootDiskType: hyperdisk-balanced
- machineType: c4d-highcpu-16
maxPodsPerNode: 16
spot: false
storage:
bootDiskSize: 30
bootDiskType: hyperdisk-balanced
whenUnsatisfiable: DoNotScaleUp
@@ -0,0 +1,34 @@
apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
name: datascience-devops
spec:
nodePoolConfig:
serviceAccount: sa-dsci-shared-nodepool-prd@meesho-dsci-as1-prd-0622.iam.gserviceaccount.com
priorityDefaults:
location:
zones: ['asia-south1-a']
activeMigration:
optimizeRulePriority: false
nodePoolAutoCreation:
enabled: true
priorities:
- machineType: n4-standard-4
maxPodsPerNode: 32
spot: false
storage:
bootDiskSize: 60
bootDiskType: hyperdisk-balanced
- machineType: c4-standard-4
spot: false
maxPodsPerNode: 32
storage:
bootDiskSize: 60
bootDiskType: hyperdisk-balanced
- machineType: e2-standard-4
spot: false
maxPodsPerNode: 32
storage:
bootDiskSize: 60
bootDiskType: pd-balanced
whenUnsatisfiable: DoNotScaleUp
@@ -0,0 +1,49 @@
apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
name: g2-standard-16-l4-compute-class
spec:
activeMigration:
optimizeRulePriority: true
nodePoolAutoCreation:
enabled: true
nodePoolConfig:
serviceAccount: gke-gpu-node-sa@meesho-dsci-as1-prd-0622.iam.gserviceaccount.com
priorities:
- gpu:
count: 1
driverVersion: default
type: nvidia-l4
location:
zones:
- asia-south1-a
machineType: g2-standard-16
maxPodsPerNode: 18
spot: false
storage:
bootDiskType: pd-ssd
- gpu:
count: 1
driverVersion: default
type: nvidia-l4
location:
zones:
- asia-south1-b
machineType: g2-standard-16
maxPodsPerNode: 18
spot: false
storage:
bootDiskType: pd-ssd
- gpu:
count: 1
driverVersion: default
type: nvidia-l4
location:
zones:
- asia-south1-c
machineType: g2-standard-16
maxPodsPerNode: 18
spot: false
storage:
bootDiskType: pd-ssd
whenUnsatisfiable: DoNotScaleUp
@@ -0,0 +1,49 @@
apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
name: g2-standard-4-l4-compute-class
spec:
activeMigration:
optimizeRulePriority: true
nodePoolAutoCreation:
enabled: true
nodePoolConfig:
serviceAccount: gke-gpu-node-sa@meesho-dsci-as1-prd-0622.iam.gserviceaccount.com
priorities:
- gpu:
count: 1
driverVersion: default
type: nvidia-l4
location:
zones:
- asia-south1-a
machineType: g2-standard-4
maxPodsPerNode: 18
spot: false
storage:
bootDiskType: pd-ssd
- gpu:
count: 1
driverVersion: default
type: nvidia-l4
location:
zones:
- asia-south1-b
machineType: g2-standard-4
maxPodsPerNode: 18
spot: false
storage:
bootDiskType: pd-ssd
- gpu:
count: 1
driverVersion: default
type: nvidia-l4
location:
zones:
- asia-south1-c
machineType: g2-standard-4
maxPodsPerNode: 18
spot: false
storage:
bootDiskType: pd-ssd
whenUnsatisfiable: DoNotScaleUp
@@ -0,0 +1,52 @@
apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
name: g2-standard-8-l4-300gb-compute-class
spec:
activeMigration:
optimizeRulePriority: true
nodePoolAutoCreation:
enabled: true
nodePoolConfig:
serviceAccount: gke-gpu-node-sa@meesho-dsci-as1-prd-0622.iam.gserviceaccount.com
priorities:
- gpu:
count: 1
driverVersion: default
type: nvidia-l4
location:
zones:
- asia-south1-a
machineType: g2-standard-8
maxPodsPerNode: 18
spot: false
storage:
bootDiskSize: 300
bootDiskType: pd-ssd
- gpu:
count: 1
driverVersion: default
type: nvidia-l4
location:
zones:
- asia-south1-b
machineType: g2-standard-8
maxPodsPerNode: 18
spot: false
storage:
bootDiskSize: 300
bootDiskType: pd-ssd
- gpu:
count: 1
driverVersion: default
type: nvidia-l4
location:
zones:
- asia-south1-c
machineType: g2-standard-8
maxPodsPerNode: 18
spot: false
storage:
bootDiskSize: 300
bootDiskType: pd-ssd
whenUnsatisfiable: DoNotScaleUp
@@ -0,0 +1,49 @@
apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
name: g2-standard-8-l4-compute-class
spec:
activeMigration:
optimizeRulePriority: true
nodePoolAutoCreation:
enabled: true
nodePoolConfig:
serviceAccount: gke-gpu-node-sa@meesho-dsci-as1-prd-0622.iam.gserviceaccount.com
priorities:
- gpu:
count: 1
driverVersion: default
type: nvidia-l4
location:
zones:
- asia-south1-a
machineType: g2-standard-8
maxPodsPerNode: 18
spot: false
storage:
bootDiskType: pd-ssd
- gpu:
count: 1
driverVersion: default
type: nvidia-l4
location:
zones:
- asia-south1-b
machineType: g2-standard-8
maxPodsPerNode: 18
spot: false
storage:
bootDiskType: pd-ssd
- gpu:
count: 1
driverVersion: default
type: nvidia-l4
location:
zones:
- asia-south1-c
machineType: g2-standard-8
maxPodsPerNode: 18
spot: false
storage:
bootDiskType: pd-ssd
whenUnsatisfiable: DoNotScaleUp
@@ -0,0 +1,25 @@
apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
name: n2d-standard-48-4lssd-compute-class
spec:
activeMigration:
optimizeRulePriority: true
nodePoolAutoCreation:
enabled: true
nodePoolConfig:
labels:
dedicated: n2d-standard-48-4lssd
serviceAccount: sa-dsci-shared-nodepool-prd@meesho-dsci-as1-prd-0622.iam.gserviceaccount.com
priorities:
- localStorage:
ssdCount: 4
location:
zones:
- asia-south1-a
machineType: n2d-standard-48
maxPodsPerNode: 18
spot: false
storage:
bootDiskType: pd-ssd
whenUnsatisfiable: DoNotScaleUp
@@ -0,0 +1,20 @@
daemonSet:
namespace: prd-conntrack-adjuster
conntrack:
max: 2097152
hashsize: 524288
sleepInterval: 30
nodeAffinity:
enabled: true
nodeSelectorTerms:
- matchExpressions:
- key: cloud.google.com/compute-class
operator: In
values:
- "contour-internal-0"
- "contour-internal-1-c4d"
- "contour-internal-0-c4d"
- "contour-intra-1"
- "megaquad"
@@ -0,0 +1,17 @@
# ClusterIssuer override for k8s-datascience-prd-ase1 (prd datascience cluster, ase1a zone).
# ClusterIssuer is a cluster-scoped resource — this file pins the issuer
# identity for this cluster so the name is auditable per-cluster.
#
# Must match the `issuerRef.name` in consuming Certificate CRs (see
# devops-helm-charts/2.0.0/templates/proxyless-grpc-cert.yaml).
issuerName: contour-datascience-prd-ca-issuer
rootCASecretName: contour-datascience-ca
externalSecret:
enabled: true
vaultPath: meesho/devops/contour/root-ca
refreshInterval: "0"
secretStoreRef:
name: vault-backend
namespace: cert-manager-datascience-prd
@@ -0,0 +1,28 @@
cronJob:
image:
repository: asia-south1-docker.pkg.dev/meesho-devops-admin-0622/admin/contour-cert-checker
tag: v1.1
schedule: "* 12 * * *"
args: ["--cluster=k8s-datascience-prd-ase1"]
resources:
requests:
memory: "50Mi"
cpu: "50m"
limits:
memory: "100Mi"
cpu: "100m"
nodeSelector:
cloud.google.com/compute-class: datascience-devops
tolerations:
- effect: NoSchedule
key: cloud.google.com/compute-class
operator: Equal
value: datascience-devops
backoffLimit: 3
historyLimit:
successfulJobs: 7
failedJobs: 7
rbac:
namespace: contour-cert-checker-ns
serviceAccountName: contour-cert-checker-sa
@@ -0,0 +1,118 @@
configInline:
enableExternalNameService: true
timeouts:
connection-idle-timeout: 65s
connection-shutdown-grace-period: 60s
max-connection-duration: 600s
disablePermitInsecure: false
tls:
fallback-certificate: {}
accesslog-format: envoy
accesslog-level: disabled
contour:
tlsExistingSecret: "contourcert"
enabled: true
replicaCount: 3
podLabels:
bu: datascience
team: datascience-devops
env: prd
manageCRDs: true
resources:
requests:
cpu: 500m
memory: 3Gi
tolerations:
- effect: NoSchedule
key: cloud.google.com/compute-class
operator: Equal
value: contour-shared-arm
nodeSelector:
cloud.google.com/compute-class: contour-shared-arm
service:
tcpLB: true
type: ClusterIP
ports:
xds: 8001
metrics: 8000
ingressClass:
name: "contour-internal-0"
create: true
debug: false
podAnnotations:
prometheus.io/path: /metrics
prometheus.io/port: '8000'
prometheus.io/scrape: 'true'
envoy:
tlsExistingSecret: "envoycert"
enabled: true
podLabels:
bu: datascience
team: datascience-devops
env: prd
updateStrategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 5%
maxUnavailable: 0
kind: deployment
tolerations:
- effect: NoSchedule
key: cloud.google.com/compute-class
operator: Equal
value: contour-internal-0-arm
nodeSelector:
cloud.google.com/compute-class: contour-internal-0-arm
logLevel: error
extraArgs:
- '--concurrency 6'
autoscaling:
behavior:
scaleDown:
policies:
- periodSeconds: 60
type: Pods
value: 2
selectPolicy: Min
stabilizationWindowSeconds: 300
scaleUp:
policies:
- periodSeconds: 15
type: Percent
value: 100
selectPolicy: Max
stabilizationWindowSeconds: 60
enabled: true
minReplicas: 3
maxReplicas: 250
targetCPU: "60"
targetMemory: "60"
podAnnotations:
prometheus.io/path: /stats/prometheus
prometheus.io/port: '8002'
prometheus.io/scrape: 'true'
resources:
requests:
cpu: 6
memory: 10Gi
limits:
cpu: 6
memory: 12Gi
service:
tcpLB: true
export:
enabled: true
targetPorts:
http: http
https: https
type: ClusterIP
annotations:
cloud.google.com/neg: '{"exposed_ports": {"80":{"name": "envoy-int0-dsci-prd"}}}'
ports:
http: 80
https: 443
grpc: 8080 ## only when tcpLB is true it will be used
useHostPort: false
defaultBackend:
enabled: false
@@ -0,0 +1,118 @@
configInline:
enableExternalNameService: true
timeouts:
connection-idle-timeout: 65s
connection-shutdown-grace-period: 400s
max-connection-duration: 540s
disablePermitInsecure: false
tls:
fallback-certificate: {}
accesslog-format: envoy
accesslog-level: disabled
contour:
tlsExistingSecret: "contourcert"
enabled: true
updateStrategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 10%
maxUnavailable: 0
replicaCount: 3
podLabels:
bu: datascience
team: datascience-devops
env: prd
manageCRDs: true
resources:
requests:
cpu: 8
memory: 10Gi
tolerations:
- effect: NoSchedule
key: cloud.google.com/compute-class
operator: Equal
value: contour-shared-arm
nodeSelector:
cloud.google.com/compute-class: contour-shared-arm
service:
tcpLB: true
type: ClusterIP
ports:
xds: 8001
metrics: 8000
ingressClass:
name: "contour-internal-1"
create: true
debug: false
podAnnotations:
prometheus.io/path: /metrics
prometheus.io/port: '8000'
prometheus.io/scrape: 'true'
envoy:
tlsExistingSecret: "envoycert"
enabled: true
podLabels:
bu: datascience
team: datascience-devops
env: prd
kind: deployment
tolerations:
- effect: NoSchedule
key: cloud.google.com/compute-class
operator: Equal
value: contour-internal-1-arm
nodeSelector:
cloud.google.com/compute-class: contour-internal-1-arm
logLevel: error
extraArgs:
- '--concurrency 14'
terminationGracePeriodSeconds: 500
autoscaling:
behavior:
scaleDown:
policies:
- periodSeconds: 500
type: Pods
value: 2
selectPolicy: Min
stabilizationWindowSeconds: 600
scaleUp:
policies:
- periodSeconds: 15
type: Percent
value: 50
selectPolicy: Max
stabilizationWindowSeconds: 60
enabled: true
minReplicas: 3
maxReplicas: 250
targetCPU: "25"
targetMemory: "60"
podAnnotations:
prometheus.io/path: /stats/prometheus
prometheus.io/port: '8002'
prometheus.io/scrape: 'true'
resources:
requests:
cpu: 14
memory: 8Gi
limits:
cpu: 14
memory: 27Gi
service:
tcpLB: true
export:
enabled: true
targetPorts:
http: http
https: https
type: ClusterIP
annotations:
cloud.google.com/neg: '{"exposed_ports": {"80":{"name": "envoy-int1-dsci-prd"}}}'
ports:
http: 80
https: 443
grpc: 8080 ## only when tcpLB is true it will be used
useHostPort: false
defaultBackend:
enabled: false
@@ -0,0 +1,112 @@
configInline:
enableExternalNameService: true
timeouts:
connection-idle-timeout: 65s
connection-shutdown-grace-period: 60s
max-connection-duration: 600s
disablePermitInsecure: false
tls:
fallback-certificate: {}
accesslog-format: envoy
accesslog-level: disabled
contour:
enabled: true
replicaCount: 3
podLabels:
bu: datascience
team: datascience-devops
env: prd
manageCRDs: true
resources:
requests:
cpu: 500m
memory: 3Gi
tolerations:
- effect: NoSchedule
key: cloud.google.com/compute-class
operator: Equal
value: contour-shared-arm
nodeSelector:
cloud.google.com/compute-class: contour-shared-arm
service:
type: ClusterIP
ports:
xds: 8001
metrics: 8000
ingressClass:
name: "contour-internal-dataproc"
create: true
debug: false
podAnnotations:
prometheus.io/path: /metrics
prometheus.io/port: '8000'
prometheus.io/scrape: 'true'
envoy:
enabled: true
podLabels:
bu: datascience
team: datascience-devops
env: prd
updateStrategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 5%
maxUnavailable: 0
kind: deployment
tolerations:
- effect: NoSchedule
key: cloud.google.com/compute-class
operator: Equal
value: contour-internal-dataproc-arm
nodeSelector:
cloud.google.com/compute-class: contour-internal-dataproc-arm
logLevel: error
autoscaling:
behavior:
scaleDown:
policies:
- periodSeconds: 60
type: Pods
value: 2
selectPolicy: Min
stabilizationWindowSeconds: 300
scaleUp:
policies:
- periodSeconds: 15
type: Percent
value: 100
selectPolicy: Max
stabilizationWindowSeconds: 60
enabled: true
minReplicas: 3
maxReplicas: 250
targetCPU: "60"
targetMemory: "60"
podAnnotations:
prometheus.io/path: /stats/prometheus
prometheus.io/port: '8002'
prometheus.io/scrape: 'true'
extraArgs:
- '--concurrency 14'
resources:
requests:
cpu: 14
memory: 8Gi
limits:
cpu: 14
memory: 27Gi
service:
tcpLB: true
export:
enabled: false
targetPorts:
http: http
https: https
type: ClusterIP
ports:
http: 80
https: 443
grpc: 8080 ## only when tcpLB is true it will be used
useHostPort: false
defaultBackend:
enabled: false
@@ -0,0 +1,114 @@
configInline:
enableExternalNameService: true
timeouts:
connection-idle-timeout: 65s
connection-shutdown-grace-period: 60s
max-connection-duration: 600s
disablePermitInsecure: false
tls:
fallback-certificate: {}
accesslog-format: envoy
accesslog-level: disabled
contour:
tlsExistingSecret: "contourcert"
enabled: true
replicaCount: 3
podLabels:
bu: datascience
team: datascience-devops
env: prd
manageCRDs: true
resources:
requests:
cpu: 500m
memory: 3Gi
tolerations:
- effect: NoSchedule
key: cloud.google.com/compute-class
operator: Equal
value: contour-shared-arm
nodeSelector:
cloud.google.com/compute-class: contour-shared-arm
service:
type: ClusterIP
ports:
xds: 8001
metrics: 8000
ingressClass:
name: "contour-internal-intra-0"
create: true
debug: false
podAnnotations:
prometheus.io/path: /metrics
prometheus.io/port: '8000'
prometheus.io/scrape: 'true'
envoy:
tlsExistingSecret: "envoycert"
enabled: true
podLabels:
bu: datascience
team: datascience-devops
env: prd
updateStrategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 5%
maxUnavailable: 0
kind: deployment
tolerations:
- effect: NoSchedule
key: cloud.google.com/compute-class
operator: Equal
value: contour-internal-intra-0-arm
nodeSelector:
cloud.google.com/compute-class: contour-internal-intra-0-arm
logLevel: error
autoscaling:
behavior:
scaleDown:
policies:
- periodSeconds: 60
type: Pods
value: 2
selectPolicy: Min
stabilizationWindowSeconds: 300
scaleUp:
policies:
- periodSeconds: 15
type: Percent
value: 100
selectPolicy: Max
stabilizationWindowSeconds: 60
enabled: true
minReplicas: 3
maxReplicas: 250
targetCPU: "60"
targetMemory: "60"
podAnnotations:
prometheus.io/path: /stats/prometheus
prometheus.io/port: '8002'
prometheus.io/scrape: 'true'
extraArgs:
- '--concurrency 14'
resources:
requests:
cpu: 14
memory: 8Gi
limits:
cpu: 14
memory: 27Gi
service:
tcpLB: false
export:
enabled: false
targetPorts:
http: http
https: https
type: ClusterIP
ports:
http: 80
https: 443
grpc: 8080 ## only when tcpLB is true it will be used
useHostPort: false
defaultBackend:
enabled: false
@@ -0,0 +1,115 @@
configInline:
enableExternalNameService: true
timeouts:
connection-idle-timeout: 65s
connection-shutdown-grace-period: 400s
max-connection-duration: 540s
disablePermitInsecure: false
tls:
fallback-certificate: {}
accesslog-format: envoy
accesslog-level: disabled
contour:
tlsExistingSecret: "contourcert"
enabled: true
updateStrategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 10%
maxUnavailable: 0
replicaCount: 3
podLabels:
bu: datascience
team: datascience-devops
env: prd
manageCRDs: true
resources:
requests:
cpu: 8
memory: 10Gi
tolerations:
- effect: NoSchedule
key: cloud.google.com/compute-class
operator: Equal
value: contour-shared-arm
nodeSelector:
cloud.google.com/compute-class: contour-shared-arm
service:
type: ClusterIP
ports:
xds: 8001
metrics: 8000
ingressClass:
name: "contour-internal-intra-1"
create: true
debug: false
podAnnotations:
prometheus.io/path: /metrics
prometheus.io/port: '8000'
prometheus.io/scrape: 'true'
envoy:
tlsExistingSecret: "envoycert"
enabled: true
podLabels:
bu: datascience
team: datascience-devops
env: prd
kind: deployment
tolerations:
- effect: NoSchedule
key: cloud.google.com/compute-class
operator: Equal
value: contour-internal-intra-1-arm
nodeSelector:
cloud.google.com/compute-class: contour-internal-intra-1-arm
logLevel: error
terminationGracePeriodSeconds: 500
autoscaling:
behavior:
scaleDown:
policies:
- periodSeconds: 60
type: Pods
value: 2
selectPolicy: Min
stabilizationWindowSeconds: 300
scaleUp:
policies:
- periodSeconds: 15
type: Percent
value: 100
selectPolicy: Max
stabilizationWindowSeconds: 60
enabled: true
minReplicas: 3
maxReplicas: 250
targetCPU: "60"
targetMemory: "60"
podAnnotations:
prometheus.io/path: /stats/prometheus
prometheus.io/port: '8002'
prometheus.io/scrape: 'true'
extraArgs:
- '--concurrency 20'
resources:
requests:
cpu: 20
memory: 12Gi
limits:
cpu: 30
memory: 57Gi
service:
tcpLB: false
export:
enabled: false
targetPorts:
http: http
https: https
type: ClusterIP
ports:
http: 80
https: 443
grpc: 8080 ## only when tcpLB is true it will be used
useHostPort: false
defaultBackend:
enabled: false
@@ -0,0 +1,28 @@
replicaCount: 40
communicationType: "intra"
labels:
bu: datascience
team: datascience-devops
env: prd
clusterIP: 10.137.16.2
resources:
limits:
cpu: 100m
memory: 128Mi
requests:
cpu: 100m
memory: 128Mi
tolerations:
- key: "cloud.google.com/compute-class"
operator: "Equal"
value: "datascience-devops"
effect: "NoSchedule"
nodeSelector:
cloud.google.com/compute-class: datascience-devops
kubernetes.io/os: linux
@@ -0,0 +1,52 @@
fullnameOverride: "coroot-node-agent-datascience-prd"
priorityClassName: "low-priority"
scrape: "false" # disable scraping for now
resources:
requests:
cpu: "300m"
memory: "1Gi"
limits:
cpu: "500m"
memory: "1.5Gi"
tolerations:
- operator: Exists
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: p-datascience-contour-ext
operator: NotIn
values:
- dedicated
- key: p-datascience-contour-int-0
operator: NotIn
values:
- dedicated
- key: p-datascience-contour-int-1
operator: NotIn
values:
- dedicated
- key: p-datascience-contour-int
operator: NotIn
values:
- dedicated
- key: node_pool
operator: NotIn
values:
- np-datascience-default-prd-ase1
- key: cloud.google.com/compute-class
operator: NotIn
values:
- vmstorage
- vmselect
- vmagent
- vminsert
- alloy
- contour-internal-0
- contour-internal-1
- contour-external
@@ -0,0 +1,61 @@
external-secrets:
replicaCount: 1
concurrent: 8
resources:
requests:
cpu: 100m
memory: 256Mi
# -- If set, install and upgrade CRDs through helm chart.
installCRDs: true
crds:
# -- If true, create CRDs for Cluster External Secret.
createClusterExternalSecret: true
# -- If true, create CRDs for Cluster Secret Store.
createClusterSecretStore: true
metrics:
service:
# -- Enable if you use another monitoring tool than Prometheus to scrape the metrics
enabled: false
# -- Metrics service port to scrape
port: 8080
# -- Annotations to add to Pod
podAnnotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8080"
prometheus.io/path: "/metrics"
tolerations:
- effect: NoSchedule
key: cloud.google.com/compute-class
operator: Equal
value: datascience-devops
nodeSelector:
cloud.google.com/compute-class: datascience-devops
certController:
tolerations:
- effect: NoSchedule
key: cloud.google.com/compute-class
operator: Equal
value: datascience-devops
nodeSelector:
cloud.google.com/compute-class: datascience-devops
podAnnotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8080"
prometheus.io/path: "/metrics"
webhook:
tolerations:
- effect: NoSchedule
key: cloud.google.com/compute-class
operator: Equal
value: datascience-devops
nodeSelector:
cloud.google.com/compute-class: datascience-devops
podAnnotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8080"
prometheus.io/path: "/metrics"
@@ -0,0 +1,62 @@
# Default values for flagger.
image:
repository: asia-south1-docker.pkg.dev/meesho-devops-admin-0622/admin/flagger
tag: rollout-service-v2.0.0
# accepted values are debug, info, warning, error (defaults to info)
logLevel: info
podAnnotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8080"
appmesh.k8s.aws/sidecarInjectorWebhook: disabled
crd:
# crd.create: `true` if custom resource definitions should be created
create: false
resources:
limits:
memory: "1024Mi"
cpu: "2"
requests:
memory: "512Mi"
cpu: "500m"
nodeSelector:
cloud.google.com/compute-class: datascience-devops
tolerations:
- effect: NoSchedule
key: cloud.google.com/compute-class
operator: Equal
value: datascience-devops
prometheus:
install: false
image: docker.io/prom/prometheus:v2.39.1
pullSecret:
retention: 2h
securityContext:
enabled: false
context:
readOnlyRootFilesystem: true
runAsUser: 10001
podDisruptionBudget:
enabled: false
minAvailable: 1
podLabels:
env: prd
team: datascience-devops
bu: infra
env:
- name: ROLLOUT_SERVICE_URL
value: "http://prd-datascience-rollout-service.prd-datascience-rollout-service.svc.cluster.local"
rolloutService:
enabled: true
apps:
@@ -0,0 +1,731 @@
nameOverride: ""
fullnameOverride: ""
# DaemonSet, Deployment or StatefulSet
kind: "DaemonSet"
# azureblob, cloudwatch, elasticsearch7, elasticsearch8, gcs, graylog , kafka, kafka2, kinesis, opensearch
variant: gcs
# # Only applicable for Deployment or StatefulSet
# replicaCount: 1
image:
repository: "asia-south1-docker.pkg.dev/meesho-devops-admin-0622/admin/sre/fluentd-v2"
pullPolicy: "Always"
tag: "edge-debian"
## Optional array of imagePullSecrets containing private registry credentials
## Ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
imagePullSecrets: []
serviceAccount:
create: true
annotations: {
iam.gke.io/gcp-service-account: sa-dsci-dssre-fluentd-prd@meesho-datascience-prd-0622.iam.gserviceaccount.com
}
name: null
rbac:
create: true
# from Kubernetes 1.25, PSP is deprecated
# See: https://kubernetes.io/blog/2022/08/23/kubernetes-v1-25-release/#pod-security-changes
# We automatically disable PSP if Kubernetes version is 1.25 or higher
podSecurityPolicy:
enabled: true
annotations: {}
## Security Context policies for controller pods
## See https://kubernetes.io/docs/tasks/administer-cluster/sysctl-cluster/ for
## notes on enabling and using sysctls
##
podSecurityContext: {}
# seLinuxOptions:
# type: "spc_t"
securityContext: {}
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
# Configure the livecycle
# Ref: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/
lifecycle: {}
# preStop:
# exec:
# command: ["/bin/sh", "-c", "sleep 20"]
# Configure the livenessProbe
# Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/
#livenessProbe:
# httpGet:
# path: /metrics
# port: metrics
# initialDelaySeconds: 0
# periodSeconds: 10
# timeoutSeconds: 1
# successThreshold: 1
# failureThreshold: 3
# Configure the readinessProbe
# Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/
#readinessProbe:
# httpGet:
# path: /metrics
# port: metrics
# initialDelaySeconds: 0
# periodSeconds: 10
# timeoutSeconds: 1
# successThreshold: 1
# failureThreshold: 3
resources:
requests:
cpu: 100m
memory: 50Mi
limits:
memory: 2000Mi
cpu: 2000m
## only available if kind is Deployment
autoscaling:
enabled: false
minReplicas: 1
maxReplicas: 100
targetCPUUtilizationPercentage: 80
# targetMemoryUtilizationPercentage: 80
## see https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/#autoscaling-on-multiple-metrics-and-custom-metrics
customRules: []
# - type: Pods
# pods:
# metric:
# name: packets-per-second
# target:
# type: AverageValue
# averageValue: 1k
## see https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-configurable-scaling-behavior
# behavior:
# scaleDown:
# policies:
# - type: Pods
# value: 4
# periodSeconds: 60
# - type: Percent
# value: 10
# periodSeconds: 60
priorityClassName: "system-node-critical"
nodeSelector: {}
## Node tolerations for server scheduling to nodes with taints
## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
##
tolerations:
- operator: Exists
## Affinity and anti-affinity
## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
##
affinity: {}
## Annotations to be added to fluentd DaemonSet/Deployment
##
annotations: {}
## Labels to be added to fluentd DaemonSet/Deployment
##
labels:
bu: datascience
team: sre
type: fluentd
service: fluentd-datascience-prd
priority: p0
env: prd
## Annotations to be added to fluentd pods
##
podAnnotations: {}
## Labels to be added to fluentd pods
##
podLabels:
bu: datascience
team: sre
type: fluentd
service: fluentd-datascience-prd
priority: p0
env: prd
## How long (in seconds) a pods needs to be stable before progressing the deployment
##
minReadySeconds:
## How long (in seconds) a pod may take to exit (useful with lifecycle hooks to ensure lb deregistration is done)
##
terminationGracePeriodSeconds:
## Deployment strategy / DaemonSet updateStrategy
##
updateStrategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 25%
maxSurge: 0
## Additional environment variables to set for fluentd pods
## Additional environment variables to set for fluentd pods
env:
- name: APP_NAME
value: namespace_name
- name: SUB_SYSTEM
value: container_name
# - name: FLUENTD_CONF
# value: "../../etc/fluent/fluent.conf"
- name: APP_NAME_SYSTEMD
value: systemd
- name: SUB_SYSTEM_SYSTEMD
value: kubelet.service
- name: ENDPOINT
value: ingress.coralogixsg.com
- name: LOG_LEVEL
value: error
- name: TZ
value: "Asia/Kolkata"
- name: K8S_NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
externalSecret:
secretStoreRef:
name: vault-backend
path: meesho/prd/cntr/devop/coralogix-keys
# externalSecret:
# enabled: true
# key: dev/devops/coralogix
# secretStoreRef:
# name: vault-backend
envFrom:
- secretRef:
name: integrations-privatekey
- secretRef:
name: es-password
initContainers: []
## Name of the configMap containing a custom fluentd.conf configuration file to use instead of the default.
# mainConfigMapNameOverride: ""
## Name of the configMap containing files to be placed under /etc/fluent/config.d/
## NOTE: This will replace ALL default files in the aforementioned path!
# extraFilesConfigMapNameOverride: ""
mountVarLogDirectory: true
mountDockerContainersDirectory: true
volumes: []
# - name: varlog
# hostPath:
# path: /var/log
# - name: varlibdockercontainers
# hostPath:
# path: /var/lib/docker/containers
# - name: etcfluentd-main
# configMap:
# name: fluentd-main
# defaultMode: 0777
# - name: etcfluentd-config
# configMap:
# name: fluentd-config
# defaultMode: 0777
volumeMounts: []
# - name: varlog
# mountPath: /var/log
# - name: varlibdockercontainers
# mountPath: /var/lib/docker/containers
# readOnly: true
# - name: etcfluentd-main
# mountPath: /etc/fluent
# - name: etcfluentd-config
# mountPath: /etc/fluent/config.d/
## Only available if kind is StatefulSet
## Fluentd persistence
##
persistence:
enabled: false
storageClass: ""
accessMode: ReadWriteOnce
size: 10Gi
## Fluentd service
##
service:
enabled: true
type: "ClusterIP"
annotations: {}
# loadBalancerIP:
# externalTrafficPolicy: Local
ports: []
# - name: "forwarder"
# protocol: TCP
# containerPort: 24224
## Prometheus Monitoring
##
metrics:
serviceMonitor:
enabled: false
additionalLabels:
release: prometheus-operator
namespace: ""
namespaceSelector: {}
## metric relabel configs to apply to samples before ingestion.
##
metricRelabelings: []
# - sourceLabels: [__name__]
# separator: ;
# regex: ^fluentd_output_status_buffer_(oldest|newest)_.+
# replacement: $1
# action: drop
## relabel configs to apply to samples after ingestion.
##
relabelings: []
# - sourceLabels: [__meta_kubernetes_pod_node_name]
# separator: ;
# regex: ^(.*)$
# targetLabel: nodename
# replacement: $1
# action: replace
## Additional serviceMonitor config
##
# jobLabel: fluentd
# scrapeInterval: 30s
# scrapeTimeout: 5s
# honorLabels: true
prometheusRule:
enabled: false
additionalLabels: {}
namespace: ""
rules: []
# - alert: FluentdDown
# expr: up{job="fluentd"} == 0
# for: 5m
# labels:
# context: fluentd
# severity: warning
# annotations:
# summary: "Fluentd Down"
# description: "{{ $labels.pod }} on {{ $labels.nodename }} is down"
# - alert: FluentdScrapeMissing
# expr: absent(up{job="fluentd"} == 1)
# for: 15m
# labels:
# context: fluentd
# severity: warning
# annotations:
# summary: "Fluentd Scrape Missing"
# description: "Fluentd instance has disappeared from Prometheus target discovery"
## Grafana Monitoring Dashboard
##
dashboards:
enabled: "true"
namespace: ""
labels:
grafana_dashboard: '"1"'
## Fluentd list of plugins to install
##
plugins: []
# - fluent-plugin-out-http
## Add fluentd config files from K8s configMaps
##
configMapConfigs:
- fluentd-prometheus-conf
# - fluentd-systemd-conf
## Fluentd configurations:
##
fileConfigs:
01_sources.conf: |-
<source>
@type systemd
path /var/log/journal
tag sys-log
read_from_head true
</source>
<source>
@id fluentd-containers.log
@type tail
encoding utf-8
from_encoding "utf-8"
path /var/log/containers/*.log
pos_file /var/log/containers.log.pos
exclude_path ["/var/log/containers/*telegraf*.log","/var/log/containers/*opentelemetry*.log","/var/log/containers/*fluentbit*.log","/var/log/containers/*gke-metrics*.log","/var/log/containers/*event-exporter-gke*.log","/var/log/containers/*metadata-server*.log","/var/log/containers/*metrics-server*.log","/var/log/containers/*filestore-node*.log"]
path_key filename
tag raw.containers.*
read_from_head true
<parse>
@type multi_format
<pattern>
format json
time_key time
time_format %Y-%m-%dT%H:%M:%S.%NZ
keep_time_key true
</pattern>
<pattern>
format /^(?<time>.+) (?<stream>stdout|stderr) [^ ]* (?<log>.*)$/
time_format %Y-%m-%dT%H:%M:%S.%N%:z
keep_time_key true
</pattern>
<pattern>
format /^(?<log>fsp\s+.+)$/
ignorecase false
multiline false
</pattern>
</parse>
</source>
<match raw.containers.**>
@id raw.containers
@type detect_exceptions
remove_tag_prefix raw
message log
stream stream
multiline_flush_interval 5
max_bytes 500000
max_lines 1000
</match>
<filter containers.**>
@type kubernetes_metadata
</filter>
<filter containers.**>
@type record_transformer
enable_ruby true
<record>
container_id ${record.dig("docker", "container_id")}
</record>
</filter>
<match containers.**>
@type rewrite_tag_filter
<rule>
key $.kubernetes.namespace_name
pattern ^(.+)$
tag $1.${tag}
</rule>
</match>
02_filters.conf: |-
03_dispatch.conf: |-
<match {kube**,**coredns**,**external-secrets**,**keda**,**gke-mcs**,sys-log,**victoriametrics**}>
@type "relabel"
@label @NOCONCATDISPATCH
</match>
<match {**prd**,**int**}>
@type "relabel"
@label @CONCATDISPATCH
</match>
<label @CONCATDISPATCH>
<filter {**prd**,**int**}>
@type concat
key log
stream_identity_key container_id
multiline_start_regexp /^.+\d{2}\:\d{2}\:\d{2}\.\d{3}/
separator "\n"
flush_interval 30
timeout_label @DISPATCH
</filter>
<match **>
@type "relabel"
@label @DISPATCH
</match>
</label>
<label @DISPATCH>
<match {**prd**}>
@type copy
<store>
@type "gcs"
bucket "gcs-infr-dvps-meesho-logs-prd"
path "datascience/${tag[0]}/dt=%d.%m.%Y/hr=%H/${tag[5]}"
time_slice_format %Y%m%d%H
object_key_format "%{path}/%{time_slice}_%{index}.%{file_extension}"
store_as "gzip"
<format>
@type "json"
localtime true
</format>
<buffer tag,time>
timekey 30m
@type "file"
path "/tmp/td-agent/buffer/"
flush_thread_count 8
timekey_wait 10m
chunk_limit_size 50m
flush_at_shutdown true
</buffer>
</store>
<store>
@type "relabel"
@label @PRD
</store>
</match>
<match {**int**}>
@type copy
<store>
@type "relabel"
@label @PREPROD
</store>
</match>
</label>
<label @PRD>
<filter {**prd**}>
@type grep
<regexp>
key log
pattern /ERROR|WARN|error|warn/
</regexp>
</filter>
<filter {**prd**} >
@type parser
key_name log
reserve_time true
reserve_data true
<parse>
@type multi_format
<pattern>
format regexp
expression /(?<timestamp>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{3}) - \[(?<log_level>[A-Z\s]{1,6})\] - \[(?<logger>[^\]]+):(?<method>[^\]:]+)?:(?<line_number>\d+)?\] - \[(?<pid>\d+)?, (?<thread>[^\]]+)?\] - \((?<x3_trace_id>[^,]*)?,(?<x3_span_id>[^)]*)?\)\|\((?<trace_id>[^,]*)?,(?<span_id>[^)]*)?\) - \[(?<user_id>[^\]]*)?\] - \((?<extras>[^)]*)?\) - (?<log>[^\n]*)\n?(?<throwable>[^|]*)$/
</pattern>
<pattern>
format /^(?<log>.*)$/
</pattern>
</parse>
</filter>
<filter {**prd**}>
@type record_transformer
enable_ruby true
auto_typecast true
renew_record true
<record>
log_level ${record.dig("log_level")}
logger ${record.dig("logger")}
method ${record.dig("method")}
line_number ${record.dig("line_number")}
pid ${record.dig("pid")}
thread ${record.dig("thread")}
x3_trace_id ${record.dig("x3_trace_id")}
x3_span_id ${record.dig("x3_span_id")}
trace_id ${record.dig("trace_id")}
span_id ${record.dig("span_id")}
user_id ${record.dig("user_id")}
extras ${record.dig("extras")}
message ${record.dig("log")}
throwable ${record.dig("throwable")}
application_name ${record.dig("kubernetes", "namespace_name")}
service_name ${record.dig("kubernetes", "container_name")}
host ${record.dig("kubernetes", "host")}
pod_name ${record.dig("kubernetes", "pod_name")}
pod_ip ${record.dig("kubernetes", "pod_ip")}
</record>
</filter>
<filter {**prd**}>
@type prometheus
<metric>
name fluentd_log_count_total
type counter
desc Total number of log entries processed by Fluentd (prd namespace breakdown)
<labels>
application_name $.application_name
log_level $.log_level
pod_name $.pod_name
</labels>
</metric>
</filter>
<match {**prd**}>
@type elasticsearch
host eck-observability-prd-es-hot-warm.eck-observability-prd.svc.clusterset.local
port 9200
scheme http
compression_level best_speed
ssl_verify false
emit_error_for_missing_id true
id_key request_id
user elastic
password "#{ENV['ECK_ES_PASSWORD']}"
index_name gcp-prd
reload_on_failure true
reconnect_on_error true
include_timestamp true
request_timeout 60s
</match>
</label>
<label @NOCONCATDISPATCH>
<filter sys-log >
@type record_transformer
enable_ruby true
auto_typecast true
renew_record true
renew_time_key ${record.dig("SYSLOG_TIMESTAMP")}
<record>
cluster_name "datascience-prd"
application_name "systemd"
node_name ${record.dig("_HOSTNAME")}
text ${record.to_json}
</record>
</filter>
<filter {kube**,**coredns**,**external-secrets**,**keda**,**gke-mcs**,**victoriametrics**}>
@type record_transformer
enable_ruby true
auto_typecast true
renew_record true
<record>
application_name ${record.dig("kubernetes", "namespace_name")}
service_name ${record.dig("kubernetes", "container_name")}
host ${record.dig("kubernetes", "host")}
pod_name ${record.dig("kubernetes", "pod_name")}
pod_ip ${record.dig("kubernetes", "pod_ip")}
text ${record.dig("log")}
</record>
</filter>
<match {**gke-mcs**}>
@type elasticsearch
host eck-observability-prd-es-hot-warm.eck-observability-prd.svc.clusterset.local
port 9200
scheme http
compression_level best_speed
ssl_verify false
emit_error_for_missing_id true
id_key request_id
user elastic
index_name gke-mcs
password "#{ENV['ECK_ES_PASSWORD']}"
reload_on_failure true
reconnect_on_error true
include_timestamp true
request_timeout 60s
</match>
<match {**kube-events**,**kube-system**,**external-secrets**,**keda**,sys-log,**victoriametrics**}>
@type elasticsearch
host eck-observability-prd-es-hot-warm.eck-observability-prd.svc.clusterset.local
port 9200
scheme http
compression_level best_speed
ssl_verify false
emit_error_for_missing_id true
id_key request_id
user elastic
index_name gcp-kubeevents
password "#{ENV['ECK_ES_PASSWORD']}"
reload_on_failure true
reconnect_on_error true
include_timestamp true
request_timeout 60s
</match>
<match **>
@type elasticsearch
host eck-observability-prd-es-hot-warm.eck-observability-prd.svc.clusterset.local
port 9200
scheme http
compression_level best_speed
ssl_verify false
emit_error_for_missing_id true
id_key request_id
user elastic
index_name gcp-prd
password "#{ENV['ECK_ES_PASSWORD']}"
reload_on_failure true
reconnect_on_error true
include_timestamp true
request_timeout 60s
</match>
</label>
<label @PREPROD>
<filter {**int**}>
@type grep
<regexp>
key log
pattern /INFO|ERROR|WARN|info|error|warn/
</regexp>
</filter>
<filter {**int**} >
@type parser
key_name log
reserve_time true
reserve_data true
<parse>
@type multi_format
<pattern>
format regexp
expression /(?<timestamp>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{3}) - \[(?<log_level>[A-Z\s]{1,6})\] - \[(?<logger>[^\]]+):(?<method>[^\]:]+)?:(?<line_number>\d+)?\] - \[(?<pid>\d+)?, (?<thread>[^\]]+)?\] - \((?<x3_trace_id>[^,]*)?,(?<x3_span_id>[^)]*)?\)\|\((?<trace_id>[^,]*)?,(?<span_id>[^)]*)?\) - \[(?<user_id>[^\]]*)?\] - \((?<extras>[^)]*)?\) - (?<log>[^\n]*)\n?(?<throwable>[^|]*)$/
</pattern>
<pattern>
format /^(?<log>.*)$/
</pattern>
</parse>
</filter>
<filter {**int**}>
@type record_transformer
enable_ruby true
auto_typecast true
renew_record true
<record>
log_level ${record.dig("log_level")}
logger ${record.dig("logger")}
method ${record.dig("method")}
line_number ${record.dig("line_number")}
pid ${record.dig("pid")}
thread ${record.dig("thread")}
x3_trace_id ${record.dig("x3_trace_id")}
x3_span_id ${record.dig("x3_span_id")}
trace_id ${record.dig("trace_id")}
span_id ${record.dig("span_id")}
user_id ${record.dig("user_id")}
extras ${record.dig("extras")}
message ${record.dig("log")}
throwable ${record.dig("throwable")}
application_name ${record.dig("kubernetes", "namespace_name")}
service_name ${record.dig("kubernetes", "container_name")}
host ${record.dig("kubernetes", "host")}
pod_name ${record.dig("kubernetes", "pod_name")}
pod_ip ${record.dig("kubernetes", "pod_ip")}
</record>
</filter>
<match {**int**}>
@type elasticsearch
host eck-observability-prd-es-hot-warm.eck-observability-prd.svc.clusterset.local
port 9200
scheme http
compression_level best_speed
ssl_verify false
emit_error_for_missing_id true
id_key request_id
user elastic
index_name gcp-int
password "#{ENV['ECK_ES_PASSWORD']}"
reload_on_failure true
reconnect_on_error true
include_timestamp true
request_timeout 60s
</match>
</label>
04_outputs.conf: |-
@@ -0,0 +1,26 @@
ingress-nginx:
controller:
metrics:
enabled: true
podAnnotations:
prometheus.io/port: "10254"
prometheus.io/scrape: "true"
autoscaling:
enabled: true
minReplicas: 3
maxReplicas: 6
targetCPUUtilizationPercentage: 60
targetMemoryUtilizationPercentage: 60
ingressClassResource:
name: nginx-internal
service:
type: ClusterIP
annotations:
cloud.google.com/neg: '{"exposed_ports": {"80":{"name": "nginx-dsci-int-prd"}}}'
nodeSelector:
cloud.google.com/compute-class: nginx-internal
tolerations:
- key: "cloud.google.com/compute-class"
operator: "Equal"
value: "nginx-internal"
effect: "NoSchedule"
@@ -0,0 +1,46 @@
keda:
operator:
replicaCount: 2
metricsServer:
replicaCount: 2
nodeSelector:
cloud.google.com/compute-class: datascience-devops
tolerations:
- key: "cloud.google.com/compute-class"
operator: "Equal"
value: "datascience-devops"
effect: "NoSchedule"
podLabels:
bu: "datascience"
team: "datascience-devops"
metricsAdapter:
bu: "datascience"
team: "datascience-devops"
resources:
# -- Manage [resource request & limits] of KEDA operator pod
operator:
limits:
cpu: 1
memory: 1000Mi
requests:
cpu: 500m
memory: 450Mi
# -- Manage [resource request & limits] of KEDA metrics apiserver pod
metricServer:
limits:
cpu: 1
memory: 1000Mi
requests:
cpu: 300m
memory: 200Mi
# -- Manage [resource request & limits] of KEDA admission webhooks pod
webhooks:
limits:
cpu: 100m
memory: 180Mi
requests:
cpu: 60m
memory: 120Mi
env:
- name: KEDA_SCALEDOBJECT_CTRL_MAX_RECONCILES
value: '25'
@@ -0,0 +1,2 @@
stubDomains: >-
{"clusterset.local":["169.254.169.254"],"prd.meesho.int.svc.cluster.local":["10.137.16.2"],"prd.mrouter.int.svc.cluster.local":["10.137.16.2"],"mq-server.meeshoint.in.svc.cluster.local":["10.137.16.2"]}
@@ -0,0 +1,149 @@
fullnameOverride: kube-events-datascience-prd
operator:
enabled: true
image:
repository: kubesphere/kube-events-operator
tag: "" # If unset use v+ .Chart.appVersion
pullPolicy: IfNotPresent
configReloader:
image: jimmidyson/configmap-reload:v0.7.1
affinity: {}
nodeSelector:
cloud.google.com/compute-class: datascience-devops
tolerations:
- effect: NoSchedule
key: cloud.google.com/compute-class
value: datascience-devops
operator: Equal
resources:
limits:
cpu: 200m
memory: 200Mi
requests:
cpu: 20m
memory: 20Mi
# Additional volumes on the Deployment definition.
volumes: []
# Additional volumeMounts on the Deployment definition.
volumeMounts: []
serviceAccount:
create: true
name: ""
# If true, just clean up cr but not crd
cleanupAllCustomResources: false
kubectlImage: docker.io/bitnami/kubectl:1.14.1
exporter:
enabled: true
image:
repository: kubesphere/kube-events-exporter
tag: "" # If unset use v+ .Chart.appVersion
pullPolicy: IfNotPresent
affinity: {}
nodeSelector:
cloud.google.com/compute-class: datascience-devops
tolerations:
- effect: NoSchedule
key: cloud.google.com/compute-class
value: datascience-devops
operator: Equal
resources:
limits:
cpu: 200m
memory: 500Mi
requests:
cpu: 20m
memory: 50Mi
# Additional volumes on the output Deployment definition.
volumes: []
# Additional volumeMounts on the output Deployment definition.
volumeMounts: []
sinks:
stdout:
enabled: true
additionalWebhooks: []
# - url:
# service:
# namespace:
# name:
# port:
# path:
# Configure fluentbit(operated by https://github.com/fluent/fluent-operator) to collect events logs of exporter.
# These will be applied only when exporter.stdout.enabled=true and fluentbit.enabled=true.
fluentbit:
enabled: false
# Set this to containerd or crio if you want fluentbit to collect CRI format logs.
# If not set, it will be auto detected.
containerRuntime: ""
input:
enabled: true
tail:
refreshIntervalSeconds: 10
memBufLimit: 5MB
skipLongLines: true
dbSync: Normal
filter:
enabled: true
additionalFilters: []
output:
enabled: true
opensearch:
host: opensearch-cluster-data.kubesphere-logging-system.svc
port: 9200
logstashPrefix: ks-whizard-events
suppressTypeName: true
logstashFormat: true
generateID: true
ruler:
enabled: false
replicas: 2
image:
repository: kubesphere/kube-events-ruler
tag: "" # If unset use v+ .Chart.appVersion
pullPolicy: IfNotPresent
affinity: {}
nodeSelector:
cloud.google.com/compute-class: datascience-devops
tolerations:
- effect: NoSchedule
key: cloud.google.com/compute-class
value: datascience-devops
operator: Equal
resources:
limits:
cpu: 500m
memory: 500Mi
requests:
cpu: 50m
memory: 50Mi
# Additional volumes on the output Deployment definition.
volumes: []
# Additional volumeMounts on the output Deployment definition.
volumeMounts: []
ruleNamespaceSelector: {}
ruleSelector: {}
sinks:
alertmanagers:
- namespace: kubesphere-monitoring-system
name: alertmanager-operated
# webhooks:
# - type:
# url:
# service:
# namespace:
# name:
# port:
# path:
## 'stdout' sink type can be either 'notification' or 'alert'
# stdout:
# type: notification
rule:
createDefaults: true
overrideDefaults: false
# Set timezone env variable to be set in containers
timezone: "Asia/Kolkata"
@@ -0,0 +1,478 @@
# Default values for kube-state-metrics.
prometheusScrape: true
image:
registry: asia-south1-docker.pkg.dev
repository: meesho-devops-admin-0622/admin/sre/kube-state-metrics
# If unset use v + .Charts.appVersion
tag: v2.9.2
sha: ""
pullPolicy: IfNotPresent
fullnameOverride: kube-state-metrics-datascience-prd
dedicatedValue: false
imagePullSecrets: []
# - name: "image-pull-secret"
ingress:
enabled: false
ingressClassName: internal
annotations:
nginx.ingress.kubernetes.io/force-ssl-redirect: "false"
nginx.ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/ssl-redirect: "false"
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: 'true'
extraLabels: {}
hosts:
- name: clustermetrics-datascience-prd.meesho.com
path: /
port: http
tls: []
# - secretName: vmagent-ingress-tls
# hosts:
# - vmagent.local
# 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
# -- pathType is only for k8s >= 1.1=
pathType: Prefix
global:
# To help compatibility with other charts which use global.imagePullSecrets.
# Allow either an array of {name: pullSecret} maps (k8s-style), or an array of strings (more common helm-style).
# global:
# imagePullSecrets:
# - name: pullSecret1
# - name: pullSecret2
# or
# global:
# imagePullSecrets:
# - pullSecret1
# - pullSecret2
imagePullSecrets: []
#
# Allow parent charts to override registry hostname
imageRegistry: ""
# If set to true, this will deploy kube-state-metrics as a StatefulSet and the data
# will be automatically sharded across <.Values.replicas> pods using the built-in
# autodiscovery feature: https://github.com/kubernetes/kube-state-metrics#automated-sharding
# This is an experimental feature and there are no stability guarantees.
autosharding:
enabled: false
replicas: 2
# List of additional cli arguments to configure kube-state-metrics
# for example: --enable-gzip-encoding, --log-file, etc.
# all the possible args can be found here: https://github.com/kubernetes/kube-state-metrics/blob/master/docs/cli-arguments.md
extraArgs: []
service:
port: 8080
# Default to clusterIP for backward compatibility
type: ClusterIP
nodePort: 0
loadBalancerIP: ""
# Only allow access to the loadBalancerIP from these IPs
loadBalancerSourceRanges: []
clusterIP: ""
annotations: {}
## Additional labels to add to all resources
customLabels:
bu: "datascience"
team: "datascience-sre"
service: "kube-state-metrics-datascience-prd"
env: "prd"
priority: "p0"
type: "exporter"
# app: kube-state-metrics
## Override selector labels
selectorOverride: {}
## set to true to add the release label so scraping of the servicemonitor with kube-prometheus-stack works out of the box
releaseLabel: false
hostNetwork: false
rbac:
# If true, create & use RBAC resources
create: true
# Set to a rolename to use existing role - skipping role creating - but still doing serviceaccount and rolebinding to it, rolename set here.
# useExistingRole: your-existing-role
# If set to false - Run without Cluteradmin privs needed - ONLY works if namespace is also set (if useExistingRole is set this name is used as ClusterRole or Role to bind to)
useClusterRole: true
# Add permissions for CustomResources' apiGroups in Role/ClusterRole. Should be used in conjunction with Custom Resource State Metrics configuration
# Example:
# - apiGroups: ["monitoring.coreos.com"]
# resources: ["prometheuses"]
# verbs: ["list", "watch"]
extraRules: []
# Configure kube-rbac-proxy. When enabled, creates one kube-rbac-proxy container per exposed HTTP endpoint (metrics and telemetry if enabled).
# The requests are served through the same service but requests are then HTTPS.
kubeRBACProxy:
enabled: false
image:
registry: quay.io
repository: brancz/kube-rbac-proxy
tag: v0.14.0
sha: ""
pullPolicy: IfNotPresent
# List of additional cli arguments to configure kube-rbac-prxy
# for example: --tls-cipher-suites, --log-file, etc.
# all the possible args can be found here: https://github.com/brancz/kube-rbac-proxy#usage
extraArgs: []
## Specify security settings for a Container
## Allows overrides and additional options compared to (Pod) securityContext
## Ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container
containerSecurityContext: {}
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# limits:
# cpu: 100m
# memory: 64Mi
# requests:
# cpu: 10m
# memory: 32Mi
## volumeMounts enables mounting custom volumes in rbac-proxy containers
## Useful for TLS certificates and keys
volumeMounts: []
# - mountPath: /etc/tls
# name: kube-rbac-proxy-tls
# readOnly: true
serviceAccount:
# Specifies whether a ServiceAccount should be created, require rbac true
create: true
# The name of the ServiceAccount to use.
# If not set and create is true, a name is generated using the fullname template
name:
# Reference to one or more secrets to be used when pulling images
# ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
imagePullSecrets: []
# ServiceAccount annotations.
# Use case: AWS EKS IAM roles for service accounts
# ref: https://docs.aws.amazon.com/eks/latest/userguide/specify-service-account-role.html
annotations: {}
prometheus:
monitor:
enabled: false
annotations: {}
additionalLabels: {}
namespace: ""
jobLabel: ""
targetLabels: []
podTargetLabels: []
interval: ""
## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.
##
sampleLimit: 0
## TargetLimit defines a limit on the number of scraped targets that will be accepted.
##
targetLimit: 0
## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
##
labelLimit: 0
## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
##
labelNameLengthLimit: 0
## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
##
labelValueLengthLimit: 0
scrapeTimeout: ""
proxyUrl: ""
selectorOverride: {}
honorLabels: false
metricRelabelings: []
relabelings: []
scheme: ""
## File to read bearer token for scraping targets
bearerTokenFile: ""
## Secret to mount to read bearer token for scraping targets. The secret needs
## to be in the same namespace as the service monitor and accessible by the
## Prometheus Operator
bearerTokenSecret: {}
# name: secret-name
# key: key-name
tlsConfig: {}
## Specify if a Pod Security Policy for kube-state-metrics must be created
## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/
##
podSecurityPolicy:
enabled: false
annotations: {}
## Specify pod annotations
## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/#apparmor
## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/#seccomp
## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/#sysctl
##
# seccomp.security.alpha.kubernetes.io/allowedProfileNames: '*'
# seccomp.security.alpha.kubernetes.io/defaultProfileName: 'docker/default'
# apparmor.security.beta.kubernetes.io/defaultProfileName: 'runtime/default'
additionalVolumes: []
## Configure network policy for kube-state-metrics
networkPolicy:
enabled: false
# networkPolicy.flavor -- Flavor of the network policy to use.
# Can be:
# * kubernetes for networking.k8s.io/v1/NetworkPolicy
# * cilium for cilium.io/v2/CiliumNetworkPolicy
flavor: kubernetes
## Configure the cilium network policy kube-apiserver selector
# cilium:
# kubeApiServerSelector:
# - toEntities:
# - kube-apiserver
# egress:
# - {}
# ingress:
# - {}
# podSelector:
# matchLabels:
# app.kubernetes.io/name: kube-state-metrics
securityContext:
enabled: true
runAsGroup: 65534
runAsUser: 65534
fsGroup: 65534
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
## Specify security settings for a Container
## Allows overrides and additional options compared to (Pod) securityContext
## Ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container
containerSecurityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
## Node labels for pod assignment
## Ref: https://kubernetes.io/docs/user-guide/node-selection/
nodeSelector:
cloud.google.com/compute-class: "vmselect"
## Affinity settings for pod assignment
## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
affinity: {}
## Tolerations for pod assignment
## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
tolerations:
- key: "cloud.google.com/compute-class"
operator: "Equal"
value: "vmselect"
effect: "NoSchedule"
## Topology spread constraints for pod assignment
## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
topologySpreadConstraints:
- maxSkew: 1
topologyKey: topology.kubernetes.io/zone
whenUnsatisfiable: DoNotSchedule
labelSelector:
matchLabels:
type: exporter
- maxSkew: 1
topologyKey: kubernetes.io/hostname
whenUnsatisfiable: DoNotSchedule
labelSelector:
matchLabels:
type: exporter
# Annotations to be added to the deployment/statefulset
annotations:
kubernetes.io/psp: eks.privileged
# Annotations to be added to the pod
podAnnotations: {}
## Assign a PriorityClassName to pods if set
# priorityClassName: ""
# Ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
podDisruptionBudget: {}
# Comma-separated list of metrics to be exposed.
# This list comprises of exact metric names and/or regex patterns.
# The allowlist and denylist are mutually exclusive.
metricAllowlist: []
# Comma-separated list of metrics not to be enabled.
# This list comprises of exact metric names and/or regex patterns.
# The allowlist and denylist are mutually exclusive.
metricDenylist: []
# Comma-separated list of additional Kubernetes label keys that will be used in the resource's
# labels metric. By default the metric contains only name and namespace labels.
# To include additional labels, provide a list of resource names in their plural form and Kubernetes
# label keys you would like to allow for them (Example: '=namespaces=[k8s-label-1,k8s-label-n,...],pods=[app],...)'.
# A single '*' can be provided per resource instead to allow any labels, but that has
# severe performance implications (Example: '=pods=[*]').
metricLabelsAllowlist:
- pods=[*]
- nodes=[*]
- deployments=[*]
- statefulsets=[*]
- persistentvolumeclaims=[*]
- persistentvolumes=[*]
- ingresses=[*]
- namespaces=[*]
- horizontalpodautoscalers=[*]
# - namespaces=[k8s-label-1,k8s-label-n]
# Comma-separated list of Kubernetes annotations keys that will be used in the resource'
# labels metric. By default the metric contains only name and namespace labels.
# To include additional annotations provide a list of resource names in their plural form and Kubernetes
# annotation keys you would like to allow for them (Example: '=namespaces=[kubernetes.io/team,...],pods=[kubernetes.io/team],...)'.
# A single '*' can be provided per resource instead to allow any annotations, but that has
# severe performance implications (Example: '=pods=[*]').
metricAnnotationsAllowList: []
# - pods=[k8s-annotation-1,k8s-annotation-n]
# Available collectors for kube-state-metrics.
# By default, all available resources are enabled, comment out to disable.
collectors:
- 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
# Enabling kubeconfig will pass the --kubeconfig argument to the container
kubeconfig:
enabled: false
# base64 encoded kube-config file
secret:
# Enabling support for customResourceState, will create a configMap including your config that will be read from kube-state-metrics
customResourceState:
enabled: false
# Add (Cluster)Role permissions to list/watch the customResources defined in the config to rbac.extraRules
config: {}
# Enable only the release namespace for collecting resources. By default all namespaces are collected.
# If releaseNamespace and namespaces are both set a merged list will be collected.
releaseNamespace: false
# Comma-separated list(string) or yaml list of namespaces to be enabled for collecting resources. By default all namespaces are collected.
namespaces: ""
# Comma-separated list of namespaces not to be enabled. If namespaces and namespaces-denylist are both set,
# only namespaces that are excluded in namespaces-denylist will be used.
namespacesDenylist: ""
## Override the deployment namespace
##
namespaceOverride: ""
resources:
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# limits:
# cpu: 100m
# memory: 64Mi
requests:
cpu: 17m
memory: 1.5Gi
## Provide a k8s version to define apiGroups for podSecurityPolicy Cluster Role.
## For example: kubeTargetVersionOverride: 1.14.9
##
kubeTargetVersionOverride: ""
# Enable self metrics configuration for service and Service Monitor
# Default values for telemetry configuration can be overridden
# If you set telemetryNodePort, you must also set service.type to NodePort
selfMonitor:
enabled: true
# telemetryHost: 0.0.0.0
telemetryPort: 8081
# telemetryNodePort: 0
# Enable vertical pod autoscaler support for kube-state-metrics
verticalPodAutoscaler:
enabled: false
# List of resources that the vertical pod autoscaler can control. Defaults to cpu and memory
controlledResources: []
# Define the max allowed resources for the pod
maxAllowed: {}
# cpu: 200m
# memory: 100Mi
# Define the min allowed resources for the pod
minAllowed: {}
# cpu: 200m
# memory: 100Mi
# updatePolicy:
# Specifies whether recommended updates are applied when a Pod is started and whether recommended updates
# are applied during the life of a Pod. Possible values are "Off", "Initial", "Recreate", and "Auto".
# updateMode: Auto
# volumeMounts are used to add custom volume mounts to deployment.
# See example below
volumeMounts: []
# - mountPath: /etc/config
# name: config-volume
# volumes are used to add custom volumes to deployment
# See example below
volumes: []
# - configMap:
# name: cm-for-volume
# name: config-volume
@@ -0,0 +1,117 @@
fullnameOverride: "kubectl-mcp-server"
replicas: 1
image:
# In-house hardened build (helm-templates/kubectl-mcp-server/docker/) —
# NOT the upstream Docker Hub image. 266→18 HIGH/CRIT vulns, non-root,
# multi-stage slim base, kubectl v1.33.12 / helm v3.21.0.
repository: asia-south1-docker.pkg.dev/meesho-devops-admin-0622/prd/devop/kubectl-mcp-server
tag: "v2"
pullPolicy: IfNotPresent
labels:
bu: infra
team: devops
service: kubectl-mcp-server
env: prd
serviceAccount:
create: true
annotations: {}
rbac:
create: true
podAnnotations: {}
podSecurityContext: {}
securityContext:
runAsNonRoot: true
runAsUser: 1000
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
priorityClassName: ""
nodeSelector:
cloud.google.com/compute-class: "datascience-devops"
tolerations:
- key: "cloud.google.com/compute-class"
operator: "Equal"
value: "datascience-devops"
effect: NoSchedule
affinity: {}
resources:
requests:
cpu: 250m
memory: 512Mi
limits:
cpu: 1000m
memory: 1Gi
mcp:
mode: single
transport: http
host: "0.0.0.0"
port: 8000
auth:
allowAnonymous: false
externalSecrets:
enabled: true
refreshInterval: "150s"
secretStoreRef:
name: vault-backend
kind: ClusterSecretStore
dataFrom:
secretKey: "meesho/prd/cntr/devop/kubectl-mcp-server-datascience"
# tcpSocket on purpose — streamable-http transport exposes only /mcp,
# there is no /health route (see chart values.yaml note).
livenessProbe:
tcpSocket:
port: 8000
initialDelaySeconds: 30
periodSeconds: 30
timeoutSeconds: 5
failureThreshold: 3
readinessProbe:
tcpSocket:
port: 8000
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 3
service:
port: 8000
type: ClusterIP
# Contour standard (2.0.0-style): renders HTTPProxy parent/child + -intra
# instead of a networking.k8s.io Ingress.
createContourGateway: true
ingress:
enabled: true
ingressClassName: contour-internal-1
servicePortNumber: 8000
hosts:
- host: kubectl-mcp-server-datascience.prd.meesho.int
paths:
- path: /
pathType: Prefix
annotations: {}
slowStart:
enabled: false
window: "120s"
aggression: 1
minPercent: 10
@@ -0,0 +1,442 @@
# Copyright 2017 The Kubernetes Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# General configuration shared across resources
app:
# Mode determines if chart should deploy a full Dashboard with all containers or just the API.
# - dashboard - deploys all the containers
# - api - deploys just the API
mode: 'dashboard'
image:
pullPolicy: IfNotPresent
pullSecrets: []
scheduling:
# Node labels for pod assignment
# Ref: https://kubernetes.io/docs/user-guide/node-selection/
nodeSelector: {}
security:
# Allow overriding csrfKey used by API/Auth containers.
# It has to be base64 encoded random 256 bytes string.
# If empty, it will be autogenerated.
csrfKey: ~
# SecurityContext to be added to pods
# To disable set the following configuration to null:
# securityContext: null
securityContext:
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
# ContainerSecurityContext to be added to containers
# To disable set the following configuration to null:
# containerSecurityContext: null
containerSecurityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
runAsUser: 1001
runAsGroup: 2001
capabilities:
drop: ["ALL"]
# Pod Disruption Budget configuration
# Ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
podDisruptionBudget:
enabled: false
minAvailable: 0
maxUnavailable: 0
networkPolicy:
enabled: false
ingressDenyAll: false
# Raw network policy spec that overrides predefined spec
# Example:
# spec:
# egress:
# - ports:
# - port: 123
spec: {}
# Common labels & annotations shared across all deployed resources
labels: {}
annotations: {}
# Common priority class used for all deployed resources
priorityClassName: null
settings:
## Global dashboard settings
global:
# # Cluster name that appears in the browser window title if it is set
# clusterName: ""
# # Max number of items that can be displayed on each list page
# itemsPerPage: 10
# # Max number of labels that are displayed by default on most views.
# labelsLimit: 3
# # Number of seconds between every auto-refresh of logs
# logsAutoRefreshTimeInterval: 5
# # Number of seconds between every auto-refresh of every resource. Set 0 to disable
# resourceAutoRefreshTimeInterval: 10
# # Hide all access denied warnings in the notification panel
# disableAccessDeniedNotifications: false
# # Hide all namespaces option in namespace selection dropdown to avoid accidental selection in large clusters thus preventing OOM errors
# hideAllNamespaces: false
# # Namespace that should be selected by default after logging in.
# defaultNamespace: default
# # List of namespaces that should be presented to user without namespace list privileges.
# namespaceFallbackList:
# - default
## Pinned resources that will be displayed in dashboard's menu
pinnedResources: []
# - kind: customresourcedefinition
# # Fully qualified name of a CRD
# name: prometheus.monitoring.coreos.com
# # Display name
# displayName: Prometheus
# # Is this CRD namespaced?
# namespaced: true
ingress:
enabled: false
hosts:
# Keep 'localhost' host only if you want to access Dashboard using 'kubectl port-forward ...' on:
# https://localhost:8443
- localhost
# - kubernetes.dashboard.domain.com
ingressClassName: internal-nginx
# Use only if your ingress controllers support default ingress classes.
# If set to true ingressClassName will be ignored and not added to the Ingress resources.
# It should fall back to using IngressClass marked as the default.
useDefaultIngressClass: false
# This will append our Ingress with annotations required by our default configuration.
# nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
# nginx.ingress.kubernetes.io/ssl-passthrough: "true"
# nginx.ingress.kubernetes.io/ssl-redirect: "true"
useDefaultAnnotations: true
pathType: ImplementationSpecific
# If path is not the default (/), rewrite-target annotation will be added to the Ingress.
# It allows serving Kubernetes Dashboard on a sub-path. Make sure that the configured path
# does not conflict with gateway route configuration.
path: /
issuer:
name: selfsigned
# Scope determines what kind of issuer annotation will be used on ingress resource
# - default - adds 'cert-manager.io/issuer'
# - cluster - adds 'cert-manager.io/cluster-issuer'
# - disabled - disables cert-manager annotations
scope: default
tls:
enabled: true
# If provided it will override autogenerated secret name
secretName: ""
labels: {}
annotations: {}
# Use the following toleration if Dashboard can be deployed on a tainted control-plane nodes
# - key: node-role.kubernetes.io/control-plane
# effect: NoSchedule
tolerations: []
affinity: {}
auth:
role: auth
image:
repository: docker.io/kubernetesui/dashboard-auth
tag: 1.2.2
scaling:
replicas: 1
revisionHistoryLimit: 10
containers:
ports:
- name: auth
containerPort: 8000
protocol: TCP
args: []
env: []
volumeMounts:
- mountPath: /tmp
name: tmp-volume
# TODO: Validate configuration
resources:
requests:
cpu: 100m
memory: 200Mi
limits:
cpu: 250m
memory: 400Mi
automountServiceAccountToken: true
volumes:
# Create on-disk volume to store exec logs (required)
- name: tmp-volume
emptyDir: {}
nodeSelector: {}
# Labels & annotations for Auth related resources
labels: {}
annotations: {}
serviceLabels: {}
serviceAnnotations: {}
# API deployment configuration
api:
role: api
image:
repository: docker.io/kubernetesui/dashboard-api
tag: 1.10.1
scaling:
replicas: 1
revisionHistoryLimit: 10
containers:
ports:
- name: api
containerPort: 8000
protocol: TCP
# Additional container arguments
# Full list of arguments: https://github.com/kubernetes/dashboard/blob/master/docs/common/arguments.md
# args:
# - --system-banner="Welcome to the Kubernetes Dashboard"
args: []
# Additional container environment variables
# env:
# - name: SOME_VAR
# value: 'some value'
env: []
# Additional volume mounts
# - mountPath: /kubeconfig
# name: dashboard-kubeconfig
# readOnly: true
volumeMounts:
# Create volume mount to store exec logs (required)
- mountPath: /tmp
name: tmp-volume
# TODO: Validate configuration
resources:
requests:
cpu: 100m
memory: 200Mi
limits:
cpu: 250m
memory: 400Mi
automountServiceAccountToken: true
# Additional volumes
# - name: dashboard-kubeconfig
# secret:
# defaultMode: 420
# secretName: dashboard-kubeconfig
volumes:
# Create on-disk volume to store exec logs (required)
- name: tmp-volume
emptyDir: {}
nodeSelector: {}
# Labels & annotations for API related resources
labels: {}
annotations: {}
serviceLabels: {}
serviceAnnotations: {}
# WEB UI deployment configuration
web:
role: web
image:
repository: docker.io/kubernetesui/dashboard-web
tag: 1.6.0
scaling:
replicas: 1
revisionHistoryLimit: 10
containers:
ports:
- name: web
containerPort: 8000
protocol: TCP
# Additional container arguments
# Full list of arguments: https://github.com/kubernetes/dashboard/blob/master/docs/common/arguments.md
# args:
# - --system-banner="Welcome to the Kubernetes Dashboard"
args: []
# Additional container environment variables
# env:
# - name: SOME_VAR
# value: 'some value'
env: []
# Additional volume mounts
# - mountPath: /kubeconfig
# name: dashboard-kubeconfig
# readOnly: true
volumeMounts:
# Create volume mount to store logs (required)
- mountPath: /tmp
name: tmp-volume
# TODO: Validate configuration
resources:
requests:
cpu: 100m
memory: 200Mi
limits:
cpu: 250m
memory: 400Mi
automountServiceAccountToken: true
# Additional volumes
# - name: dashboard-kubeconfig
# secret:
# defaultMode: 420
# secretName: dashboard-kubeconfig
volumes:
# Create on-disk volume to store exec logs (required)
- name: tmp-volume
emptyDir: {}
nodeSelector: {}
# Labels & annotations for WEB UI related resources
labels: {}
annotations: {}
serviceLabels: {}
serviceAnnotations: {}
### Metrics Scraper
### Container to scrape, store, and retrieve a window of time from the Metrics Server.
### refs: https://github.com/kubernetes/dashboard/tree/master/modules/metrics-scraper
metricsScraper:
enabled: true
role: metrics-scraper
image:
repository: docker.io/kubernetesui/dashboard-metrics-scraper
tag: 1.2.1
scaling:
replicas: 1
revisionHistoryLimit: 10
containers:
ports:
- containerPort: 8000
protocol: TCP
args: []
# Additional container environment variables
# env:
# - name: SOME_VAR
# value: 'some value'
env: []
# Additional volume mounts
# - mountPath: /kubeconfig
# name: dashboard-kubeconfig
# readOnly: true
volumeMounts:
# Create volume mount to store logs (required)
- mountPath: /tmp
name: tmp-volume
# TODO: Validate configuration
resources:
requests:
cpu: 100m
memory: 200Mi
limits:
cpu: 250m
memory: 400Mi
livenessProbe:
httpGet:
scheme: HTTP
path: /
port: 8000
initialDelaySeconds: 30
timeoutSeconds: 30
automountServiceAccountToken: true
# Additional volumes
# - name: dashboard-kubeconfig
# secret:
# defaultMode: 420
# secretName: dashboard-kubeconfig
volumes:
- name: tmp-volume
emptyDir: {}
nodeSelector: {}
# Labels & annotations for Metrics Scraper related resources
labels: {}
annotations: {}
serviceLabels: {}
serviceAnnotations: {}
## Optional Metrics Server sub-chart configuration
## Enable this if you don't already have metrics-server enabled on your cluster and
## want to use it with dashboard metrics-scraper
## refs:
## - https://github.com/kubernetes-sigs/metrics-server
## - https://github.com/kubernetes-sigs/metrics-server/tree/master/charts/metrics-server
metrics-server:
enabled: false
args:
- --kubelet-preferred-address-types=InternalIP
- --kubelet-insecure-tls
## Required Kong sub-chart with DBless configuration to act as a gateway
## for our all containers.
kong:
enabled: false
admin:
tls:
enabled: false
## Configuration reference: https://docs.konghq.com/gateway/3.6.x/reference/configuration
env:
dns_order: LAST,A,CNAME,AAAA,SRV
plugins: 'off'
nginx_worker_processes: 1
ingressController:
enabled: false
manager:
enabled: false
dblessConfig:
configMap: kong-dbless-config
proxy:
type: ClusterIP
http:
enabled: true
## Optional Cert Manager sub-chart configuration
## Enable this if you don't already have cert-manager enabled on your cluster.
cert-manager:
enabled: false
installCRDs: true
## Optional Nginx Ingress sub-chart configuration
## Enable this if you don't already have nginx-ingress enabled on your cluster.
nginx:
enabled: false
controller:
electionID: ingress-controller-leader
ingressClassResource:
name: internal-nginx
default: false
controllerValue: k8s.io/internal-ingress-nginx
service:
type: ClusterIP
## Extra configurations:
## - manifests
## - predefined roles
## - prometheus
## - etc...
extras:
# Extra Kubernetes manifests to be deployed
# manifests:
# - apiVersion: v1
# kind: ConfigMap
# metadata:
# name: additional-configmap
# data:
# mykey: myvalue
manifests: []
serviceMonitor:
# Whether to create a Prometheus Operator service monitor.
enabled: false
# Here labels can be added to the serviceMonitor
labels: {}
# Here annotations can be added to the serviceMonitor
annotations: {}
# metrics.serviceMonitor.metricRelabelings Specify Metric Relabelings to add to the scrape endpoint
# ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#relabelconfig
metricRelabelings: []
# metrics.serviceMonitor.relabelings [array] Prometheus relabeling rules
relabelings: []
# ServiceMonitor connection scheme. Defaults to HTTPS.
scheme: https
# ServiceMonitor connection tlsConfig. Defaults to {insecureSkipVerify:true}.
tlsConfig:
insecureSkipVerify: true
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,40 @@
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: protect-critical-namespaces
spec:
validationFailureAction: Enforce
background: false
rules:
- name: deny-deletion-of-critical-namespaces
match:
any:
- resources:
kinds:
- Namespace
names:
- keda-datascience-prd
- contour-internal-0-datascience-prd
- contour-internal-0-datascience-prd-intra
- contour-external-datascience-prd
- external-secrets-datascience-prd
- flagger-datascience-prd
- victoriametrics
- kube-system
- monitoring
- telegraf-operator
- loadtester
- opentelemetry
- fluentd
- kube-events
- observability
- contour-cert-checker-ns
- aurva-dataplane
validate:
message: "Deletion of critical namespaces is not allowed."
deny:
conditions:
any:
- key: "{{request.operation}}"
operator: Equals
value: DELETE
@@ -0,0 +1,29 @@
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: restrict-minimum-replicas-selected-ns
spec:
validationFailureAction: Enforce
background: false
rules:
- name: min-replicas-deployments-statefulsets
match:
resources:
kinds:
- Deployment
- StatefulSet
- Deployment/scale
- StatefulSet/scale
names:
- coredns
namespaces:
- kube-system
operations:
- CREATE
- UPDATE
validate:
message: "Deployments and StatefulSets must have at least 5 replicas in this namespace."
anyPattern:
# Case 1: replicas explicitly set and >= 5
- spec:
replicas: ">=5"
@@ -0,0 +1,116 @@
replicaCount: 1
Namespace: loadtester
image:
repository: asia-south1-docker.pkg.dev/meesho-devops-admin-0622/dev/devops/flagger-loadtester
tag: 0.30.0
pullPolicy: IfNotPresent
pullSecret:
podLabels:
bu: datascience
team: datascience-shared
podAnnotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8080"
podPriorityClassName: ""
logLevel: info
cmd:
timeout: 1h
namespaceRegexp: ""
nameOverride: "loadtester"
fullnameOverride: ""
env: []
service:
type: ClusterIP
port: 80
resources:
requests:
cpu: 10m
memory: 64Mi
volumes: []
volumeMounts: []
nodeSelector:
cloud.google.com/compute-class: datascience-devops
tolerations:
- key: "cloud.google.com/compute-class"
operator: "Equal"
value: "datascience-devops"
effect: "NoSchedule"
affinity: {}
ingress:
slowStart:
enabled: false
enabled: true
ingressClassName: contour-internal-1
servicePort: http
hosts:
- host: datascience-flagger-loadtester.prd.meesho.int
paths:
- pathType: ImplementationSpecific
path: /
createContourGateway: true
contourResponseTimeout: false
rbac:
# rbac.create: `true` if rbac resources should be created
create: true
# rbac.scope: `cluster` to create cluster-scope rbac resources (ClusterRole/ClusterRoleBinding)
# otherwise, namespace-scope rbac resources will be created (Role/RoleBinding)
scope:
# rbac.rules: array of rules to apply to the role. example:
# rules:
# - apiGroups: [""]
# resources: ["pods"]
# verbs: ["list", "get"]
rules: []
# name of an existing service account to use - if not creating rbac resources
serviceAccountName: ""
# App Mesh virtual node settings (to be used for AppMesh v1beta1)
meshName: ""
#backends:
# - app1.namespace
# - app2.namespace
# App Mesh virtual node settings (to be used for AppMesh v1beta2)
appmesh:
enabled: false
backends:
- podinfo
- podinfo-canary
#Istio virtual service and gatway settings. TLS secrets should be in namespace before enbaled it. ( secret format loadtester.fullname )
istio:
enabled: false
host: flagger-loadtester.flagger
gateway:
enabled: false
tls:
enabled: false
httpsRedirect: false
# when enabled, it will add a security context for the loadtester pod
securityContext:
enabled: false
context:
readOnlyRootFilesystem: true
runAsUser: 100
runAsGroup: 101
podDisruptionBudget:
enabled: false
minAvailable: 1
@@ -0,0 +1,281 @@
global:
domain: "coralogixsg.com"
defaultApplicationName: "default"
defaultSubsystemName: "nodes"
# Old endpoint based configuration,
# please use domain instead.
traces:
endpoint: ""
metrics:
endpoint: ""
logs:
endpoint: ""
# set distribution to openshift for openshift clusters
distribution: ""
# Opentelemetry collector configuration
dedicatedValue: false
schedulerName: default-scheduler
labels:
bu: "datascience"
team: "sre"
service: "opentelemetry-datascience-prd"
env: "prd"
priority: "p0"
type: "opentelemetry"
arch: "any"
runpod: "ondemand"
externalSecret:
enabled: false
key: prd/admin/coralogix-keys
secretStoreRef:
name: vault-backend
image:
# If you want to use the core image `otel/opentelemetry-collector`, you also need to change `command.name` value to `otelcol`.
repository: asia-south1-docker.pkg.dev/meesho-devops-admin-0622/admin/sre/opentelemetry-collector-contrib
# repository: otel/opentelemetry-collector-contrib
pullPolicy: IfNotPresent
# Overrides the image tag whose default is the chart appVersion.
tag: "0.87.0"
# When digest is set to a non-empty value, images will be pulled by digest (regardless of tag value).
digest: ""
mode: daemonset
rollout:
rollingUpdate:
# When 'mode: daemonset', maxSurge cannot be used when hostPort is set for any of the ports
# maxSurge: 25%
maxUnavailable: 1
strategy: RollingUpdate
serviceAccount:
# Specifies whether a service account should be created
create: true
# Annotations to add to the service account
annotations: {}
# The name of the service account to use.
# If not set and create is true, a name is generated using the fullname template
name: ""
hostNetwork: true
dnsPolicy: "ClusterFirstWithHostNet"
fullnameOverride: opentelemetry-datascience-prd
presets:
logsCollection:
enabled: false
storeCheckpoints: false
maxRecombineLogSize: 1048576
extraFilelogOperators: []
# - type: recombine
# combine_field: body
# source_identifier: attributes["log.file.path"]
# is_first_entry: body matches "^(YOUR-LOGS-REGEX)"
kubernetesAttributes:
enabled: false
hostMetrics:
enabled: false
kubeletMetrics:
enabled: false
extraEnvs:
- name: OTEL_RESOURCE_ATTRIBUTES
value: "k8s.node.name=$(K8S_NODE_NAME)"
- name: KUBE_NODE_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: spec.nodeName
config:
extensions: {}
# zpages:
# endpoint: localhost:55679
# pprof:
# endpoint: localhost:1777
exporters:
loadbalancing:
routing_key: "traceID"
protocol:
otlp:
timeout: 4s
tls:
insecure: true
sending_queue:
enabled: true
queue_size: 6000
num_consumers: 200
resolver:
dns:
hostname: opentelemetry-admin-prd.opentelemetry.svc.clusterset.local
# coralogix:
# timeout: "30s"
# private_key: "${CORALOGIX_PRIVATE_KEY}"
# domain: "{{.Values.global.domain}}"
# traces:
# endpoint: "{{ .Values.global.traces.endpoint }}"
# metrics:
# endpoint: "{{ .Values.global.metrics.endpoint }}"
# logs:
# endpoint: "{{ .Values.global.logs.endpoint }}"
# application_name_attributes:
# - "k8s.namespace.name"
# - "service.namespace"
# subsystem_name_attributes:
# - "k8s.deployment.name"
# - "k8s.statefulset.name"
# - "k8s.daemonset.name"
# - "k8s.cronjob.name"
# - "k8s.job.name"
# - "k8s.container.name"
# - "k8s.node.name"
# - "service.name"
# application_name: "{{.Values.global.defaultApplicationName }}"
# subsystem_name: "{{.Values.global.defaultSubsystemName }}"
processors:
k8sattributes:
filter:
node_from_env_var: KUBE_NODE_NAME
extract:
metadata:
- "k8s.namespace.name"
- "k8s.deployment.name"
- "k8s.statefulset.name"
- "k8s.daemonset.name"
- "k8s.cronjob.name"
- "k8s.job.name"
- "k8s.pod.name"
- "k8s.node.name"
memory_limiter: null # Will get the k8s resource limits
resourcedetection/env:
detectors: ["system","env"]
timeout: 2s
override: false
# spanmetrics:
# metrics_exporter: coralogix
# dimensions:
# - name: "k8s.deployment.name"
# - name: "k8s.statefulset.name"
# - name: "k8s.daemonset.name"
# - name: "k8s.cronjob.name"
# - name: "k8s.job.name"
# - name: "k8s.container.name"
# - name: "k8s.node.name"
# - name: "k8s.namespace.name"
receivers:
otlp:
protocols:
grpc:
endpoint: ${MY_POD_IP}:4317
http:
endpoint: ${MY_POD_IP}:4318
zipkin:
endpoint: ${MY_POD_IP}:9411
jaeger:
protocols:
grpc:
endpoint: ${MY_POD_IP}:14250
thrift_http:
endpoint: ${MY_POD_IP}:14268
thrift_compact:
endpoint: ${MY_POD_IP}:6831
thrift_binary:
endpoint: ${MY_POD_IP}:6832
prometheus:
config:
scrape_configs:
- job_name: opentelemetry-collector
scrape_interval: 30s
static_configs:
- targets:
- ${MY_POD_IP}:8888
service:
extensions:
# - zpages
# - pprof
- health_check
# - memory_ballast
telemetry:
metrics:
address: ${env:MY_POD_IP}:8888
pipelines:
traces:
exporters:
- loadbalancing
processors:
- memory_limiter
# - spanmetrics
- batch
receivers:
- otlp
metrics: null
logs: null
tolerations:
- operator: Exists
resources:
requests:
cpu: 100m
memory: 200Mi
limits:
cpu: 1
memory: 2G
ports:
jaeger-binary:
enabled: true
containerPort: 6832
servicePort: 6832
hostPort: 6832
protocol: TCP
# In order to enable podMonitor, following part must be enabled in order to expose the required port:
# metrics:
# enabled: true
# podMonitor:
# enabled: true
# prometheusRule:
# enabled: true
# defaultRules:
# enabled: true
# Annotations to be added to pod
podAnnotations:
otel.io/path: "/metrics"
otel.io/scrape: "true"
otel.io/port: "8888"
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: p-datascience-contour-ext
operator: NotIn
values:
- dedicated
- key: p-datascience-contour-int-0
operator: NotIn
values:
- dedicated
- key: p-datascience-contour-int-1
operator: NotIn
values:
- dedicated
- key: p-datascience-contour-int
operator: NotIn
values:
- dedicated
- key: node_pool
operator: NotIn
values:
- np-datascience-default-prd-ase1
- key: cloud.google.com/compute-class
operator: NotIn
values:
- vmstorage
- vmselect
- vmagent
- vminsert
@@ -0,0 +1,134 @@
fullnameOverride: opentelemetry-datascience-prd
mode: daemonset
# priorityClassName: "system-node-critical"
# Removing since dataengg pods are going into pending state
config:
exporters:
loadbalancing:
routing_key: "traceID"
protocol:
otlp:
timeout: 5s
tls:
insecure: true
sending_queue:
num_consumers: 500
queue_size: 50000
resolver:
dns:
hostname: opentelemetry-admin-prd-headless.opentelemetry.svc.clusterset.local
processors: {}
receivers:
otlp:
protocols:
grpc:
endpoint: ${env:MY_POD_IP}:4317
http:
endpoint: ${env:MY_POD_IP}:4318
service:
telemetry:
metrics:
level: detailed
readers:
- pull:
exporter:
prometheus:
host: '0.0.0.0'
port: 8888
extensions:
- health_check
pipelines:
logs: null
metrics: null
traces:
exporters:
- loadbalancing
processors: []
receivers:
- otlp
image:
repository: asia-south1-docker.pkg.dev/meesho-devops-admin-0622/admin/sre/opentelemetry-collector-contrib
tag: "0.111.0"
tolerations:
- operator: Exists
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: p-datascience-contour-ext
operator: NotIn
values:
- dedicated
- key: p-datascience-contour-int-0
operator: NotIn
values:
- dedicated
- key: p-datascience-contour-int-1
operator: NotIn
values:
- dedicated
- key: p-datascience-contour-int
operator: NotIn
values:
- dedicated
- key: node_pool
operator: NotIn
values:
- np-datascience-default-prd-ase1
- key: cloud.google.com/compute-class
operator: NotIn
values:
- vmstorage
- vmselect
- vmagent
- vminsert
- alloy
- contour-internal-0
- contour-internal-1
- contour-external
extraEnvs:
- name: K8S_NODE_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: spec.nodeName
- name: OTEL_RESOURCE_ATTRIBUTES
value: "k8s.node.name=$(K8S_NODE_NAME)"
ports:
metrics:
enabled: true
resources:
requests:
cpu: 100m
memory: 124Mi
limits:
cpu: 200m
memory: 256Mi
podAnnotations:
otel.io/path: "/metrics"
otel.io/scrape: "true"
otel.io/port: "8888"
podLabels:
bu: "datascience"
team: "sre"
service: "opentelemetry-datascience-prd"
env: "prd"
priority: "p0"
type: "opentelemetry"
arch: "any"
runpod: "ondemand"
rollout:
rollingUpdate:
maxUnavailable: 10%
@@ -0,0 +1,82 @@
# Default values for hello-world.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
priorityClass:
name: "low-priority"
image:
repository: nginx
tag: "1.14.2"
pullPolicy: IfNotPresent
# Overrides the image tag whose default is the chart appVersion.
nameOverride: ""
fullnameOverride: "paused-container-datascience-prd"
extraLabels:
team: "devops"
bu: "datascience"
env: "prd"
service: "paused-container-datascience-prd"
priority: "p3"
type: "tools"
topologySpreadConstraints: []
# - labelSelector:
# matchLabels:
# cloud.google.com/compute-class: vminsert
# maxSkew: 1
# topologyKey: topology.kubernetes.io/hostname
# whenUnsatisfiable: DoNotSchedule
affinity:
podAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: type
operator: In
values:
- vmselect
- vminsert
- tools
topologyKey: topology.kubernetes.io/zone
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: type
operator: In
values:
- vmselect
- vminsert
- tools
topologyKey: kubernetes.io/hostname
namespaceSelector: {}
serviceAccount:
# Specifies whether a service account should be created
create: true
# Annotations to add to the service account
annotations: {}
# The name of the service account to use.
# If not set and create is true, a name is generated using the fullname template
name: ""
service:
type: ClusterIP
port: 80
deployments:
- nodepool: vminsert
bu: datascience
cpuRequest: 1
memoryRequest: 1Gi
replicaCount: 3
- nodepool: vmselect
bu: datascience
cpuRequest: 1
memoryRequest: 1Gi
replicaCount: 3
@@ -0,0 +1,496 @@
# Default values for prometheus-node-exporter.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
image:
registry: quay.io
repository: prometheus/node-exporter
# Overrides the image tag whose default is {{ printf "v%s" .Chart.AppVersion }}
tag: ""
pullPolicy: IfNotPresent
digest: ""
imagePullSecrets: []
# - name: "image-pull-secret"
nameOverride: ""
fullnameOverride: ""
# Number of old history to retain to allow rollback
# Default Kubernetes value is set to 10
revisionHistoryLimit: 10
global:
# To help compatibility with other charts which use global.imagePullSecrets.
# Allow either an array of {name: pullSecret} maps (k8s-style), or an array of strings (more common helm-style).
# global:
# imagePullSecrets:
# - name: pullSecret1
# - name: pullSecret2
# or
# global:
# imagePullSecrets:
# - pullSecret1
# - pullSecret2
imagePullSecrets: []
#
# Allow parent charts to override registry hostname
imageRegistry: ""
# Configure kube-rbac-proxy. When enabled, creates a kube-rbac-proxy to protect the node-exporter http endpoint.
# The requests are served through the same service but requests are HTTPS.
kubeRBACProxy:
enabled: false
image:
registry: quay.io
repository: brancz/kube-rbac-proxy
tag: v0.14.0
sha: ""
pullPolicy: IfNotPresent
# List of additional cli arguments to configure kube-rbac-prxy
# for example: --tls-cipher-suites, --log-file, etc.
# all the possible args can be found here: https://github.com/brancz/kube-rbac-proxy#usage
extraArgs: []
## Specify security settings for a Container
## Allows overrides and additional options compared to (Pod) securityContext
## Ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container
containerSecurityContext: {}
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# limits:
# cpu: 100m
# memory: 64Mi
# requests:
# cpu: 10m
# memory: 32Mi
service:
enabled: true
type: ClusterIP
port: 9100
targetPort: 9100
nodePort:
portName: metrics
listenOnAllInterfaces: true
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "9100"
prometheus.io/path: "/metrics"
ipDualStack:
enabled: false
ipFamilies: ["IPv6", "IPv4"]
ipFamilyPolicy: "PreferDualStack"
# Set a NetworkPolicy with:
# ingress only on service.port
# no egress permitted
networkPolicy:
enabled: false
# Additional environment variables that will be passed to the daemonset
env: {}
## env:
## VARIABLE: value
prometheus:
monitor:
enabled: false
additionalLabels: {}
namespace: ""
jobLabel: ""
# List of pod labels to add to node exporter metrics
# https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#servicemonitor
podTargetLabels: []
scheme: http
basicAuth: {}
bearerTokenFile:
tlsConfig: {}
## proxyUrl: URL of a proxy that should be used for scraping.
##
proxyUrl: ""
## Override serviceMonitor selector
##
selectorOverride: {}
## Attach node metadata to discovered targets. Requires Prometheus v2.35.0 and above.
##
attachMetadata:
node: false
relabelings: []
metricRelabelings: []
interval: ""
scrapeTimeout: 10s
## prometheus.monitor.apiVersion ApiVersion for the serviceMonitor Resource(defaults to "monitoring.coreos.com/v1")
apiVersion: ""
## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.
##
sampleLimit: 0
## TargetLimit defines a limit on the number of scraped targets that will be accepted.
##
targetLimit: 0
## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
##
labelLimit: 0
## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
##
labelNameLengthLimit: 0
## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
##
labelValueLengthLimit: 0
# PodMonitor defines monitoring for a set of pods.
# ref. https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#monitoring.coreos.com/v1.PodMonitor
# Using a PodMonitor may be preferred in some environments where there is very large number
# of Node Exporter endpoints (1000+) behind a single service.
# The PodMonitor is disabled by default. When switching from ServiceMonitor to PodMonitor,
# the time series resulting from the configuration through PodMonitor may have different labels.
# For instance, there will not be the service label any longer which might
# affect PromQL queries selecting that label.
podMonitor:
enabled: false
# Namespace in which to deploy the pod monitor. Defaults to the release namespace.
namespace: ""
# Additional labels, e.g. setting a label for pod monitor selector as set in prometheus
additionalLabels: {}
# release: kube-prometheus-stack
# PodTargetLabels transfers labels of the Kubernetes Pod onto the target.
podTargetLabels: []
# apiVersion defaults to monitoring.coreos.com/v1.
apiVersion: ""
# Override pod selector to select pod objects.
selectorOverride: {}
# Attach node metadata to discovered targets. Requires Prometheus v2.35.0 and above.
attachMetadata:
node: false
# The label to use to retrieve the job name from. Defaults to label app.kubernetes.io/name.
jobLabel: ""
# Scheme/protocol to use for scraping.
scheme: "http"
# Path to scrape metrics at.
path: "/metrics"
# BasicAuth allow an endpoint to authenticate over basic authentication.
# More info: https://prometheus.io/docs/operating/configuration/#endpoint
basicAuth: {}
# Secret to mount to read bearer token for scraping targets.
# The secret needs to be in the same namespace as the pod monitor and accessible by the Prometheus Operator.
# https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.24/#secretkeyselector-v1-core
bearerTokenSecret: {}
# TLS configuration to use when scraping the endpoint.
tlsConfig: {}
# Authorization section for this endpoint.
# https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#monitoring.coreos.com/v1.SafeAuthorization
authorization: {}
# OAuth2 for the URL. Only valid in Prometheus versions 2.27.0 and newer.
# https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#monitoring.coreos.com/v1.OAuth2
oauth2: {}
# ProxyURL eg http://proxyserver:2195. Directs scrapes through proxy to this endpoint.
proxyUrl: ""
# Interval at which endpoints should be scraped. If not specified Prometheus global scrape interval is used.
interval: ""
# Timeout after which the scrape is ended. If not specified, the Prometheus global scrape interval is used.
scrapeTimeout: ""
# HonorTimestamps controls whether Prometheus respects the timestamps present in scraped data.
honorTimestamps: true
# HonorLabels chooses the metrics labels on collisions with target labels.
honorLabels: true
# Whether to enable HTTP2. Default false.
enableHttp2: ""
# Drop pods that are not running. (Failed, Succeeded).
# Enabled by default. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase
filterRunning: ""
# FollowRedirects configures whether scrape requests follow HTTP 3xx redirects. Default false.
followRedirects: ""
# Optional HTTP URL parameters
params: {}
# RelabelConfigs to apply to samples before scraping. Prometheus Operator automatically adds
# relabelings for a few standard Kubernetes fields. The original scrape jobs name
# is available via the __tmp_prometheus_job_name label.
# More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config
relabelings: []
# MetricRelabelConfigs to apply to samples before ingestion.
metricRelabelings: []
# SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.
sampleLimit: 0
# TargetLimit defines a limit on the number of scraped targets that will be accepted.
targetLimit: 0
# Per-scrape limit on number of labels that will be accepted for a sample.
# Only valid in Prometheus versions 2.27.0 and newer.
labelLimit: 0
# Per-scrape limit on length of labels name that will be accepted for a sample.
# Only valid in Prometheus versions 2.27.0 and newer.
labelNameLengthLimit: 0
# Per-scrape limit on length of labels value that will be accepted for a sample.
# Only valid in Prometheus versions 2.27.0 and newer.
labelValueLengthLimit: 0
## Customize the updateStrategy if set
updateStrategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
resources:
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
limits:
cpu: 200m
memory: 50Mi
requests:
cpu: 100m
memory: 30Mi
serviceAccount:
# Specifies whether a ServiceAccount should be created
create: true
# The name of the ServiceAccount to use.
# If not set and create is true, a name is generated using the fullname template
name:
annotations: {}
# annotations: {
# iam.gke.io/gcp-service-account: node-exporter-dataengg-prd@meesho-dataengg-prd-0622.iam.gserviceaccount.com
# }
imagePullSecrets: []
automountServiceAccountToken: false
securityContext:
fsGroup: 65534
runAsGroup: 65534
runAsNonRoot: true
runAsUser: 65534
containerSecurityContext:
readOnlyRootFilesystem: true
# capabilities:
# add:
# - SYS_TIME
rbac:
## If true, create & use RBAC resources
##
create: true
## If true, create & use Pod Security Policy resources
## https://kubernetes.io/docs/concepts/policy/pod-security-policy/
pspEnabled: true
pspAnnotations: {}
# for deployments that have node_exporter deployed outside of the cluster, list
# their addresses here
endpoints: []
# Expose the service to the host network
hostNetwork: true
# Share the host process ID namespace
hostPID: true
# Mount the node's root file system (/) at /host/root in the container
hostRootFsMount:
enabled: true
# Defines how new mounts in existing mounts on the node or in the container
# are propagated to the container or node, respectively. Possible values are
# None, HostToContainer, and Bidirectional. If this field is omitted, then
# None is used. More information on:
# https://kubernetes.io/docs/concepts/storage/volumes/#mount-propagation
mountPropagation: HostToContainer
## Assign a group of affinity scheduling rules
##
affinity: {}
# nodeAffinity:
# requiredDuringSchedulingIgnoredDuringExecution:
# nodeSelectorTerms:
# - matchFields:
# - key: metadata.name
# operator: In
# values:
# - target-host-name
# Annotations to be added to node exporter pods
podAnnotations:
# Fix for very slow GKE cluster upgrades
cluster-autoscaler.kubernetes.io/safe-to-evict: "true"
prometheus.io/scrape: "true"
prometheus.io/port: "9100"
prometheus.io/path: "/metrics"
# Extra labels to be added to node exporter pods
podLabels:
bu: "datascience"
team: "datascience-sre"
service: "node-exporter-datascience-prd"
env: "prd"
priority: "p0"
type: "exporter"
# Annotations to be added to node exporter daemonset
daemonsetAnnotations:
prometheus.io/scrape: "true"
prometheus.io/port: "9100"
prometheus.io/path: "/metrics"
## set to true to add the release label so scraping of the servicemonitor with kube-prometheus-stack works out of the box
releaseLabel: false
# Custom DNS configuration to be added to prometheus-node-exporter pods
dnsConfig: {}
# nameservers:
# - 1.2.3.4
# searches:
# - ns1.svc.cluster-domain.example
# - my.dns.search.suffix
# options:
# - name: ndots
# value: "2"
# - name: edns0
## Assign a nodeSelector if operating a hybrid cluster
##
nodeSelector: {}
# kubernetes.io/os: linux
# kubernetes.io/arch: amd64
tolerations:
- operator: Exists
## Assign a PriorityClassName to pods if set
priorityClassName: "system-node-critical"
## Additional container arguments
##
extraArgs: []
# - --collector.diskstats.ignored-devices=^(ram|loop|fd|(h|s|v)d[a-z]|nvme\\d+n\\d+p)\\d+$
# - --collector.textfile.directory=/run/prometheus
## Additional mounts from the host to node-exporter container
##
extraHostVolumeMounts: []
# - name: <mountName>
# hostPath: <hostPath>
# mountPath: <mountPath>
# readOnly: true|false
# mountPropagation: None|HostToContainer|Bidirectional
## Additional configmaps to be mounted.
##
configmaps: []
# - name: <configMapName>
# mountPath: <mountPath>
secrets: []
# - name: <secretName>
# mountPath: <mountPatch>
## Override the deployment namespace
##
namespaceOverride: "monitoring"
## Additional containers for export metrics to text file
##
sidecars: []
## - name: nvidia-dcgm-exporter
## image: nvidia/dcgm-exporter:1.4.3
## Volume for sidecar containers
##
sidecarVolumeMount: []
## - name: collector-textfiles
## mountPath: /run/prometheus
## readOnly: false
## Additional mounts from the host to sidecar containers
##
sidecarHostVolumeMounts: []
# - name: <mountName>
# hostPath: <hostPath>
# mountPath: <mountPath>
# readOnly: true|false
# mountPropagation: None|HostToContainer|Bidirectional
## Additional InitContainers to initialize the pod
##
extraInitContainers: []
## Liveness probe
##
livenessProbe:
failureThreshold: 3
httpGet:
httpHeaders: []
scheme: http
initialDelaySeconds: 0
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
## Readiness probe
##
readinessProbe:
failureThreshold: 3
httpGet:
httpHeaders: []
scheme: http
initialDelaySeconds: 0
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
# Enable vertical pod autoscaler support for prometheus-node-exporter
verticalPodAutoscaler:
enabled: false
# Recommender responsible for generating recommendation for the object.
# List should be empty (then the default recommender will generate the recommendation)
# or contain exactly one recommender.
# recommenders:
# - name: custom-recommender-performance
# List of resources that the vertical pod autoscaler can control. Defaults to cpu and memory
controlledResources: []
# Specifies which resource values should be controlled: RequestsOnly or RequestsAndLimits.
# controlledValues: RequestsAndLimits
# Define the max allowed resources for the pod
maxAllowed: {}
# cpu: 200m
# memory: 100Mi
# Define the min allowed resources for the pod
minAllowed: {}
# cpu: 200m
# memory: 100Mi
# updatePolicy:
# Specifies minimal number of replicas which need to be alive for VPA Updater to attempt pod eviction
# minReplicas: 1
# Specifies whether recommended updates are applied when a Pod is started and whether recommended updates
# are applied during the life of a Pod. Possible values are "Off", "Initial", "Recreate", and "Auto".
# updateMode: Auto
# Extra manifests to deploy as an array
extraManifests: []
# - |
# apiVersion: v1
# kind: ConfigMap
# metadata:
# name: prometheus-extra
# data:
# extra-data: "value"
@@ -0,0 +1,170 @@
# Provide a name in place of prometheus-stackdriver-exporter for `app:` labels
nameOverride: "stackdriver-exporter-datascience-prd"
# Provide a name to substitute for the full names of resources
fullnameOverride: "stackdriver-exporter-datascience-prd"
# Number of exporters to run
replicaCount: 1
# Restart policy for container
restartPolicy: Always
image:
repository: prometheuscommunity/stackdriver-exporter
# if not set appVersion field from Chart.yaml is used
tag: ""
pullPolicy: IfNotPresent
## Optionally specify an array of imagePullSecrets.
## Secrets must be manually created in the namespace.
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
##
# pullSecrets:
# - myDockerConfigJsonSecretName
resources:
requests:
cpu: 500m
memory: 512Mi
# limits:
# cpu: 100m
# memory: 128Mi
securityContext: {}
containerSecurityContext: {}
service:
type: ClusterIP
httpPort: 9255
annotations: {}
## Additional labels to add to all resources
customLabels:
bu: "datascience"
team: "datascience-sre"
service: "stackdriver-exporter-datascience-prd"
env: "prd"
priority: "p0"
type: "exporter"
# app: prometheus-stackdriver-exporter
secret:
labels: {}
stackdriver:
# The Google Project ID to gather metrics for
projectId: "meesho-datascience-prd-0622"
# An existing secret which contains credentials.json
serviceAccountSecret: ""
# Provide custom key for the existing secret to load credentials.json from
serviceAccountSecretKey: ""
# A service account key JSON file. Must be provided when no existing secret is used, in this case a new secret will be created holding this service account
serviceAccountKey: ""
# Max number of retries that should be attempted on 503 errors from Stackdriver
maxRetries: 0
# How long should Stackdriver_exporter wait for a result from the Stackdriver API
httpTimeout: 10s
# Max time between each request in an exp backoff scenario
maxBackoff: 5s
# The amount of jitter to introduce in an exp backoff scenario
backoffJitter: 1s
# The HTTP statuses that should trigger a retry
retryStatuses: 503
# Drop metrics from attached projects and fetch `project_id` only
dropDelegatedProjects: false
metrics:
# The prefixes to gather metrics for, we default to just CPU metrics.
typePrefixes: 'bigtable.googleapis.com/client,bigtable.googleapis.com/cluster,bigtable.googleapis.com/disk,bigtable.googleapis.com/replication,bigtable.googleapis.com/server,bigtable.googleapis.com/table,cloudsql.googleapis.com/database,logging.googleapis.com/user,run.googleapis.com/,logging.googleapis.com/user/node_drain_metric,compute.googleapis.com/guest/system/uptime,compute.googleapis.com/instance'
# The filters to refine the metrics query by using Filter objects that Google provides.
# Filter objects: project, group.id, resource.type, resource.labels.[KEY], metric.type, metric.labels.[KEY]
# https://cloud.google.com/monitoring/api/v3/filters
filters: []
# - 'pubsub.googleapis.com/subscription:resource.labels.subscription_id=monitoring.regex.full_match("us-west4.*my-team.*")'
# The frequency to request
interval: '5m'
# How far into the past to offset
offset: '0s'
# Offset for the Google Stackdriver Monitoring Metrics interval into the past by the ingest delay from the metric's metadata.
ingestDelay: false
# If enabled will treat all DELTA metrics as an in-memory counter instead of a gauge.
aggregateDeltas: false
# How long should a delta metric continue to be exported after GCP stops producing a metric
aggregateDeltasTTL: '30m'
web:
# Port to listen on
listenAddress: ':9255'
# Path under which to expose metrics.
path: /metrics
## Pod affinity
##
affinity: {}
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "9255"
prometheus.io/path: "/metrics"
## Pod extra arguments
##
extraArgs: {}
## Node labels for stackdriver-exporter pod assignment
## Ref: https://kubernetes.io/docs/user-guide/node-selection/
##
nodeSelector:
cloud.google.com/compute-class: vmselect
## Node tolerations for stackdriver-exporter scheduling to nodes with taints
## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
##
tolerations:
- key: "cloud.google.com/compute-class"
operator: "Equal"
value: "vmselect"
effect: "NoSchedule"
## Service Account
##
serviceAccount:
# Specifies whether a ServiceAccount should be created
create: true
# The name of the ServiceAccount to use.
# If not set and create is false, 'default' is used
# If not set and create is true, a name is generated using the fullname template
name:
annotations: {
iam.gke.io/gcp-service-account: sa-dsci-dssre-stackdriver-prd@meesho-datascience-prd-0622.iam.gserviceaccount.com
}
# Enable this if you're using https://github.com/coreos/prometheus-operator
serviceMonitor:
enabled: false
namespace: monitoring
# additionalLabels is the set of additional labels to add to the ServiceMonitor
additionalLabels: {}
# How long until a scrape request times out.
scrapeTimeout: '10s'
# fallback to the prometheus default unless specified
interval: 10s
# Defaults to what's used if you follow CoreOS [Prometheus Install Instructions](https://github.com/helm/charts/tree/master/stable/prometheus-operator#tldr)
honorLabels: true
# Whether Prometheus should use the timestamps of the metrics exposed by stackdriver-exporter
honorTimestamps: true
# MetricRelabelConfigs to apply to samples before ingestion https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#relabelconfig
metricRelabelings: []
# RelabelConfigs to apply to samples before scraping. https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#relabelconfig
relabelings: []
## Custom PrometheusRules to be defined
## ref: https://github.com/coreos/prometheus-operator#customresourcedefinitions
prometheusRule:
enabled: false
additionalLabels: {}
namespace: ""
rules: []
@@ -0,0 +1,150 @@
replicaCount: 3
image:
repository: quay.io/influxdb/telegraf-operator
pullPolicy: IfNotPresent
sidecarImage: "asia-south1-docker.pkg.dev/meesho-devops-admin-0622/admin/sre/telegraf:1.24.4"
dedicatedValue: false
schedulerName: default-scheduler
classes:
secretName: "telegraf-operator-classes"
default: "infra"
data:
infra: |
[[inputs.mem]]
[[outputs.file]]
files = ["stdout"]
[[outputs.prometheus_client]]
listen = ":9273"
metric_version = 2
path = "/metrics"
expiration_interval = "60s"
export_timestamp = false
[agent]
interval = "10s"
round_interval = true
metric_batch_size = 1000
metric_buffer_limit = 40000
collection_jitter = "0s"
flush_interval = "30s"
flush_jitter = "0s"
precision = ""
debug = true
hostname = ""
omit_hostname = true
[[aggregators.basicstats]]
period = "60s"
grace = "10s"
delay = "30s"
drop_original = false
stats = ["count", "min", "max", "mean", "sum"]
[[aggregators.histogram]]
period = "60s"
grace = "10s"
delay = "30s"
drop_original = false
[[aggregators.histogram.config]]
buckets = [5.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 80.0, 100.0, 120.0, 150.0, 175.0, 200.0, 225.0, 250.0, 275.0, 300.0, 350.0, 400.0, 450.0, 500.0, 600.0, 700.0, 800.0, 900.0, 1000.0, 1200.0, 1500.0, 2000.0, 5000.0, 10000.0, 12500.0, 15000.0, 20000.0, 25000.0, 30000.0]
measurement_name = "CONTROLLER"
[[aggregators.histogram.config]]
buckets = [5.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 80.0, 100.0, 120.0, 150.0, 175.0, 200.0, 225.0, 250.0, 275.0, 300.0, 350.0, 400.0, 450.0, 500.0, 600.0, 700.0, 800.0, 900.0, 1000.0, 1200.0, 1500.0, 2000.0, 5000.0, 10000.0, 12500.0, 15000.0, 20000.0, 25000.0, 30000.0]
measurement_name = "RDS"
[[aggregators.histogram.config]]
buckets = [1.0, 2.0, 3.0, 4.0, 5.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 80.0, 100.0, 120.0, 150.0, 175.0, 200.0, 225.0, 250.0, 275.0, 300.0, 350.0, 400.0, 450.0, 500.0, 600.0, 700.0, 800.0, 900.0, 1000.0, 1200.0, 1500.0, 2000.0, 5000.0, 10000.0, 12500.0, 15000.0, 20000.0, 25000.0, 30000.0]
measurement_name = "REDIS"
[[aggregators.histogram.config]]
buckets = [0.0, 5.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 80.0, 100.0, 120.0, 150.0, 175.0, 200.0, 225.0, 250.0, 275.0, 300.0, 350.0, 400.0, 450.0, 500.0, 600.0, 700.0, 800.0, 900.0,1000.0, 1200.0, 1500.0, 2000.0, 5000.0, 10000.0, 12500.0, 15000.0, 20000.0, 25000.0, 30000.0]
measurement_name = "HBASE"
[[aggregators.histogram.config]]
buckets = [0.0, 5.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 80.0, 100.0, 120.0, 150.0, 175.0, 200.0, 225.0, 250.0, 275.0, 300.0, 350.0, 400.0, 450.0, 500.0, 600.0, 700.0, 800.0, 900.0,1000.0, 1200.0, 1500.0, 2000.0, 5000.0, 10000.0, 12500.0, 15000.0, 20000.0, 25000.0, 30000.0]
measurement_name = "HTTP"
[[aggregators.histogram.config]]
buckets = [0.0, 5.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 80.0, 100.0, 120.0, 150.0, 175.0, 200.0, 225.0, 250.0, 275.0, 300.0, 350.0, 400.0, 450.0, 500.0, 600.0, 700.0, 800.0, 900.0,1000.0, 1200.0, 1500.0, 2000.0, 5000.0, 10000.0, 12500.0, 15000.0, 20000.0, 25000.0, 30000.0]
measurement_name = "METHOD"
[[aggregators.histogram.config]]
buckets = [0.0, 5.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 80.0, 100.0, 120.0, 150.0, 175.0, 200.0, 225.0, 250.0, 275.0, 300.0, 350.0, 400.0, 450.0, 500.0, 600.0, 700.0, 800.0, 900.0,1000.0, 1200.0, 1500.0, 2000.0, 5000.0, 10000.0, 12500.0, 15000.0, 20000.0, 25000.0, 30000.0]
measurement_name = "QUERY_EXECUTION_LATENCY"
[[aggregators.histogram.config]]
buckets = [0.0, 5.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 80.0, 100.0, 120.0, 150.0, 175.0, 200.0, 225.0, 250.0, 275.0, 300.0, 350.0, 400.0, 450.0, 500.0, 600.0, 700.0, 800.0, 900.0,1000.0, 1200.0, 1500.0, 2000.0, 5000.0, 10000.0, 12500.0, 15000.0, 20000.0, 25000.0, 30000.0]
measurement_name = "DOWN_STREAM_LATENCY"
[[aggregators.histogram.config]]
buckets = [0.0, 5.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 80.0, 100.0, 120.0, 150.0, 175.0, 200.0, 225.0, 250.0, 275.0, 300.0, 350.0, 400.0, 450.0, 500.0, 600.0, 700.0, 800.0, 900.0,1000.0, 1200.0, 1500.0, 2000.0, 5000.0, 10000.0, 12500.0, 15000.0, 20000.0, 25000.0, 30000.0]
measurement_name = "API_LATENCY"
[[inputs.socket_listener]]
service_address = "udp://:8094"
read_buffer_size = "16MB"
[[inputs.statsd]]
protocol = "udp"
service_address = ":8125"
delete_gauges = false
delete_counters = false
percentiles = [50.0, 90.0, 99.0, 99.9, 99.95, 100.0]
datadog_extensions = true
allowed_pending_messages = 100000
certManager:
enable: false
imagePullSecrets: []
nameOverride: ""
fullnameOverride: ""
serviceAccount:
# Annotations to add to the service account
annotations: {}
podSecurityContext: {}
# fsGroup: 2000
securityContext: {}
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
resources:
limits:
cpu: 200m
memory: 256Mi
requests:
cpu: 50m
memory: 64Mi
sidecarResources:
requests:
cpu: 200m
memory: 200Mi
topologySpreadConstraints:
- maxSkew: 1
topologyKey: topology.kubernetes.io/zone
whenUnsatisfiable: ScheduleAnyway
labelSelector:
matchLabels:
type: exporter
- maxSkew: 1
topologyKey: kubernetes.io/hostname
whenUnsatisfiable: DoNotSchedule
labelSelector:
matchLabels:
type: exporter
labels:
bu: "datascience"
team: "datascience-sre"
service: "telegraf-operator-datascience-prd"
env: "prd"
priority: "p0"
type: "exporter"
nodeSelector:
cloud.google.com/compute-class: "vmselect"
tolerations:
- key: "cloud.google.com/compute-class"
operator: "Equal"
value: "vmselect"
effect: "NoSchedule"
affinity: {}
requireAnnotationsForSecret: false
# allow hot reload ; disabled by default to support versions of telegraf
# that do not support hot-reload and --watch-config flag
hotReload: false
@@ -0,0 +1,295 @@
# Default values for victoria-metrics-agent.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 2
fullnameOverride: vmagent-datascience-prd-dr
# vmagent scraping configuration:
# https://github.com/VictoriaMetrics/VictoriaMetrics/blob/master/docs/vmagent.md#how-to-collect-metrics-in-prometheus-format
# use existing configmap if specified
# otherwise .config values will be used
configMap: "vmagent-datascience-prd-dr-config" # Use same name as in fullnameOverride-config
dedicatedValue: false
topologySpreadConstraints:
- maxSkew: 1
topologyKey: topology.kubernetes.io/zone
whenUnsatisfiable: ScheduleAnyway
labelSelector:
matchLabels:
type: vmagent-dr
- maxSkew: 1
topologyKey: kubernetes.io/hostname
whenUnsatisfiable: DoNotSchedule
labelSelector:
matchLabels:
type: vmagent-dr
# ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/
deployment:
enabled: true
minReadySeconds: 30
progressDeadlineSeconds: 60
# ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy
strategy: {}
# rollingUpdate:
# maxSurge: 25%
# maxUnavailable: 25%
# type: RollingUpdate
# ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/
statefulset:
enabled: false
# -- create cluster of vmagents. See https://docs.victoriametrics.com/vmagent.html#scraping-big-number-of-targets
# available since 1.77.2 version https://github.com/VictoriaMetrics/VictoriaMetrics/releases/tag/v1.77.2
clusterMode: false
# -- replication factor for vmagent in cluster mode
replicationFactor: 1
# ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies
updateStrategy: {}
# type: RollingUpdate
image:
repository: asia-south1-docker.pkg.dev/meesho-devops-admin-0622/admin/sre/vmagent
tag: v1.93.7-cluster # rewrites Chart.AppVersion
pullPolicy: IfNotPresent
imagePullSecrets: []
nameOverride: ""
containerWorkingDir: "/"
rbac:
create: true
# Note: The PSP will only be deployed, if Kubernetes (<1.25) supports the resource.
pspEnabled: true
annotations: {}
extraLabels: {}
# -- if true and `rbac.enabled`, will deploy a Role/Rolebinding instead of a ClusterRole/ClusterRoleBinding
namespaced: false
serviceAccount:
# Specifies whether a service account should be created
create: true
# Annotations to add to the service account
annotations: {
iam.gke.io/gcp-service-account: sa-dsci-dssre-vmagent-prd@meesho-datascience-prd-0622.iam.gserviceaccount.com
}
# The name of the service account to use.
# If not set and create is true, a name is generated using the fullname template
name:
## See `kubectl explain poddisruptionbudget.spec` for more
## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
podDisruptionBudget:
enabled: false
# minAvailable: 1
# maxUnavailable: 1
labels: {}
# WARN: need to specify at least one remote write url or one multi tenant url
# remoteWriteUrls: []
remoteWriteUrls:
- https://vminsert-infra-prd-dr.meeshogcp.in/insert/100/prometheus/api/v1/write
# - http://vminsert-infra-prd-dr.victoriametrics.svc.clusterset.local:8480/insert/100/prometheus/api/v1/write
# - http://prometheus:8480/insert/0/prometheus
multiTenantUrls: []
# multiTenantUrls:
# - http://vm-insert-az1:8480
# - http://vm-insert-az2:8480
extraArgs:
envflag.enable: "true"
envflag.prefix: VM_
loggerFormat: json
promscrape.config.strictParse: false
promscrape.maxScrapeSize: 1000000000
promscrape.minResponseSizeForStreamParse: 1000000
loggerTimezone: "Asia/Kolkata"
# Uncomment and specify the port if you want to support any of the protocols:
# https://victoriametrics.github.io/vmagent.html#features
# graphiteListenAddr: ":2003"
# influxListenAddr: ":8189"
# opentsdbHTTPListenAddr: ":4242"
# opentsdbListenAddr: ":4242"
# -- Additional environment variables (ex.: secret tokens, flags) https://github.com/VictoriaMetrics/VictoriaMetrics#environment-variables
env:
[]
# - name: VM_remoteWrite_basicAuth_password
# valueFrom:
# secretKeyRef:
# name: auth_secret
# key: password
# extra Labels for Pods, Deployment and Statefulset
extraLabels:
bu: "datascience"
team: "datascience-sre"
service: "vmagent-datascience-prd"
env: "prd"
priority: "p0"
type: "vmagent-dr"
# extra Labels for Pods only
podLabels: {}
# Additional hostPath mounts
extraHostPathMounts:
[]
# - name: certs-dir
# mountPath: /etc/kubernetes/certs
# subPath: ""
# hostPath: /etc/kubernetes/certs
# readOnly: true
# Extra Volumes for the pod
extraVolumes:
[]
# - name: example
# configMap:
# name: example
# Extra Volume Mounts for the container
extraVolumeMounts:
[]
# - name: example
# mountPath: /example
extraContainers: []
# - name: config-reloader
# image: reloader-image
podSecurityContext:
{}
# fsGroup: 2000
securityContext:
{}
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
enabled: true
annotations: {}
# cloud.google.com/neg: '{"exposed_ports": {"8429":{"name": "vmagent-datascience-prd"}}}'
extraLabels: {}
clusterIP: ""
## Ref: https://kubernetes.io/docs/user-guide/services/#external-ips
##
externalIPs: []
loadBalancerIP: ""
loadBalancerSourceRanges: []
servicePort: 8429
# nodePort: 30000
type: ClusterIP
# Ref: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip
# externalTrafficPolicy: "local"
# healthCheckNodePort: 0
ingress:
enabled: true
ingressClassName: contour-internal-1
annotations: {}
# nginx.ingress.kubernetes.io/force-ssl-redirect: "false"
# nginx.ingress.kubernetes.io/rewrite-target: /
# nginx.ingress.kubernetes.io/ssl-redirect: "false"
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: 'true'
extraLabels: {}
hosts:
- name: vmagent-datascience-prd-dr.meeshogcp.in
path: /
port: http
tls: []
# - secretName: vmagent-ingress-tls
# hosts:
# - vmagent.local
# 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
# -- pathType is only for k8s >= 1.1=
pathType: Prefix
resources:
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# limits:
# cpu: 100m
# memory: 128Mi
requests:
cpu: 10
memory: 10Gi
# Annotations to be added to the deployment
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8429"
# Annotations to be added to pod
podAnnotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8429"
nodeSelector:
cloud.google.com/compute-class: "vmagent-dr"
tolerations:
- key: "cloud.google.com/compute-class"
operator: "Equal"
value: "vmagent-dr"
effect: "NoSchedule"
affinity: {}
# -- priority class to be assigned to the pod(s)
priorityClassName: ""
serviceMonitor:
enabled: false
extraLabels: {}
annotations: {}
relabelings: []
# interval: 15s
# scrapeTimeout: 5s
# -- Commented. HTTP scheme to use for scraping.
# scheme: https
# -- Commented. TLS configuration to use when scraping the endpoint
# tlsConfig:
# insecureSkipVerify: true
persistence:
enabled: false
# storageClassName: default
accessModes:
- ReadWriteOnce
size: 10Gi
annotations: {}
extraLabels: {}
existingClaim: ""
# -- Bind Persistent Volume by labels. Must match all labels of targeted PV.
matchLabels: {}
# -- Extra scrape configs that will be appended to `config`
extraScrapeConfigs: []
# Add extra specs dynamically to this chart
extraObjects: []
@@ -0,0 +1,272 @@
# Default values for victoria-metrics-agent.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 1
fullnameOverride: vmagent-datascience-prd-fb
# vmagent scraping configuration:
# https://github.com/VictoriaMetrics/VictoriaMetrics/blob/master/docs/vmagent.md#how-to-collect-metrics-in-prometheus-format
# use existing configmap if specified
# otherwise .config values will be used
configMap: "vmagent-datascience-prd-fb-config" # Use same name as in fullnameOverride-config
dedicatedValue: false
# Remove topology spread constraints
topologySpreadConstraints: []
# Modify deployment strategy
deployment:
enabled: true
# Remove HPA
horizontalPodAutoscaler:
enabled: false
# ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/
statefulset:
enabled: false
# -- create cluster of vmagents. See https://docs.victoriametrics.com/vmagent.html#scraping-big-number-of-targets
# available since 1.77.2 version https://github.com/VictoriaMetrics/VictoriaMetrics/releases/tag/v1.77.2
clusterMode: false
# -- replication factor for vmagent in cluster mode
replicationFactor: 1
# ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies
updateStrategy: {}
# type: RollingUpdate
image:
repository: asia-south1-docker.pkg.dev/meesho-devops-admin-0622/admin/sre/vmagent
tag: v1.93.7-cluster # rewrites Chart.AppVersion
pullPolicy: IfNotPresent
imagePullSecrets: []
nameOverride: ""
containerWorkingDir: "/"
rbac:
create: true
# Note: The PSP will only be deployed, if Kubernetes (<1.25) supports the resource.
pspEnabled: true
annotations: {}
extraLabels: {}
# -- if true and `rbac.enabled`, will deploy a Role/Rolebinding instead of a ClusterRole/ClusterRoleBinding
namespaced: false
serviceAccount:
# Specifies whether a service account should be created
create: true
# Annotations to add to the service account
annotations: {
iam.gke.io/gcp-service-account: sa-infr-sre-vmagent-prd@meesho-admin-prd-0622.iam.gserviceaccount.com
}
# The name of the service account to use.
# If not set and create is true, a name is generated using the fullname template
name:
# Remove pod disruption budget
podDisruptionBudget:
enabled: false
# WARN: need to specify at least one remote write url or one multi tenant url
# remoteWriteUrls: []
remoteWriteUrls:
# - https://vminsert-prd-datascience.meeshogcp.in/insert/100/prometheus/api/v1/write
# - http://vmsinglenode-infra-prd.victoriametrics.svc.clusterset.local:8428/api/v1/write
- https://vmsinglenode-infra-prd.meeshogcp.in/api/v1/write
# - http://prometheus:8480/insert/0/prometheus
multiTenantUrls: []
# multiTenantUrls:
# - http://vm-insert-az1:8480
# - http://vm-insert-az2:8480
extraArgs:
envflag.enable: "true"
envflag.prefix: VM_
loggerFormat: json
promscrape.config.strictParse: false
promscrape.maxScrapeSize: 1000000000
promscrape.minResponseSizeForStreamParse: 1000000
loggerTimezone: "Asia/Kolkata"
# Uncomment and specify the port if you want to support any of the protocols:
# https://victoriametrics.github.io/vmagent.html#features
# graphiteListenAddr: ":2003"
# influxListenAddr: ":8189"
# opentsdbHTTPListenAddr: ":4242"
# opentsdbListenAddr: ":4242"
# -- Additional environment variables (ex.: secret tokens, flags) https://github.com/VictoriaMetrics/VictoriaMetrics#environment-variables
env:
[]
# - name: VM_remoteWrite_basicAuth_password
# valueFrom:
# secretKeyRef:
# name: auth_secret
# key: password
# extra Labels for Pods, Deployment and Statefulset
extraLabels:
bu: "datascience-fb"
team: "sre"
service: "vmagent-datascience-prd-fb"
env: "prd"
priority: "p0"
type: "vmagent-fb"
# extra Labels for Pods only
podLabels: {}
# Additional hostPath mounts
extraHostPathMounts:
[]
# - name: certs-dir
# mountPath: /etc/kubernetes/certs
# subPath: ""
# hostPath: /etc/kubernetes/certs
# readOnly: true
# Extra Volumes for the pod
extraVolumes:
[]
# - name: example
# configMap:
# name: example
# Extra Volume Mounts for the container
extraVolumeMounts:
[]
# - name: example
# mountPath: /example
extraContainers: []
# - name: config-reloader
# image: reloader-image
podSecurityContext:
{}
# fsGroup: 2000
securityContext:
{}
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
enabled: true
annotations: {}
# cloud.google.com/neg: '{"exposed_ports": {"8429":{"name": "vmagent-datascience-prd"}}}'
extraLabels: {}
clusterIP: ""
## Ref: https://kubernetes.io/docs/user-guide/services/#external-ips
##
externalIPs: []
loadBalancerIP: ""
loadBalancerSourceRanges: []
servicePort: 8429
# nodePort: 30000
type: ClusterIP
# Ref: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip
# externalTrafficPolicy: "local"
# healthCheckNodePort: 0
ingress:
enabled: true
ingressClassName: nginx-internal
annotations:
nginx.ingress.kubernetes.io/force-ssl-redirect: "false"
nginx.ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/ssl-redirect: "false"
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: 'true'
extraLabels: {}
hosts:
- name: vmagent-datascience-prd-fb.meeshogcp.in
path: /
port: http
tls: []
# - secretName: vmagent-ingress-tls
# hosts:
# - vmagent.local
# 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
# -- pathType is only for k8s >= 1.1=
pathType: Prefix
# Modify resources
resources:
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
requests:
cpu: 2
memory: 5Gi
# Annotations to be added to the deployment
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8429"
# Annotations to be added to pod
podAnnotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8429"
nodeSelector:
cloud.google.com/compute-class: "vmselect"
tolerations:
- key: "cloud.google.com/compute-class"
operator: "Equal"
value: "vmselect"
effect: "NoSchedule"
affinity: {}
# -- priority class to be assigned to the pod(s)
priorityClassName: ""
serviceMonitor:
enabled: false
extraLabels: {}
annotations: {}
relabelings: []
# interval: 15s
# scrapeTimeout: 5s
# -- Commented. HTTP scheme to use for scraping.
# scheme: https
# -- Commented. TLS configuration to use when scraping the endpoint
# tlsConfig:
# insecureSkipVerify: true
persistence:
enabled: false
# storageClassName: default
accessModes:
- ReadWriteOnce
size: 10Gi
annotations: {}
extraLabels: {}
existingClaim: ""
# -- Bind Persistent Volume by labels. Must match all labels of targeted PV.
matchLabels: {}
# -- Extra scrape configs that will be appended to `config`
extraScrapeConfigs: []
# Add extra specs dynamically to this chart
extraObjects: []
@@ -0,0 +1,295 @@
# Default values for victoria-metrics-agent.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 2
fullnameOverride: vmagent-datascience-prd
# vmagent scraping configuration:
# https://github.com/VictoriaMetrics/VictoriaMetrics/blob/master/docs/vmagent.md#how-to-collect-metrics-in-prometheus-format
# use existing configmap if specified
# otherwise .config values will be used
configMap: "vmagent-datascience-prd-config" # Use same name as in fullnameOverride-config
dedicatedValue: false
topologySpreadConstraints:
- maxSkew: 1
topologyKey: topology.kubernetes.io/zone
whenUnsatisfiable: ScheduleAnyway
labelSelector:
matchLabels:
type: vmagent
- maxSkew: 1
topologyKey: kubernetes.io/hostname
whenUnsatisfiable: DoNotSchedule
labelSelector:
matchLabels:
type: vmagent
# ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/
deployment:
enabled: true
minReadySeconds: 30
progressDeadlineSeconds: 60
# ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy
strategy: {}
# rollingUpdate:
# maxSurge: 25%
# maxUnavailable: 25%
# type: RollingUpdate
# ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/
statefulset:
enabled: false
# -- create cluster of vmagents. See https://docs.victoriametrics.com/vmagent.html#scraping-big-number-of-targets
# available since 1.77.2 version https://github.com/VictoriaMetrics/VictoriaMetrics/releases/tag/v1.77.2
clusterMode: false
# -- replication factor for vmagent in cluster mode
replicationFactor: 1
# ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies
updateStrategy: {}
# type: RollingUpdate
image:
repository: asia-south1-docker.pkg.dev/meesho-devops-admin-0622/admin/sre/vmagent
tag: v1.93.7-cluster # rewrites Chart.AppVersion
pullPolicy: IfNotPresent
imagePullSecrets: []
nameOverride: ""
containerWorkingDir: "/"
rbac:
create: true
# Note: The PSP will only be deployed, if Kubernetes (<1.25) supports the resource.
pspEnabled: true
annotations: {}
extraLabels: {}
# -- if true and `rbac.enabled`, will deploy a Role/Rolebinding instead of a ClusterRole/ClusterRoleBinding
namespaced: false
serviceAccount:
# Specifies whether a service account should be created
create: true
# Annotations to add to the service account
annotations: {
iam.gke.io/gcp-service-account: sa-dsci-sre-vmagnt-prd-mds@meesho-datascience-prd-0622.iam.gserviceaccount.com
}
# The name of the service account to use.
# If not set and create is true, a name is generated using the fullname template
name:
## See `kubectl explain poddisruptionbudget.spec` for more
## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
podDisruptionBudget:
enabled: false
# minAvailable: 1
# maxUnavailable: 1
labels: {}
# WARN: need to specify at least one remote write url or one multi tenant url
# remoteWriteUrls: []
remoteWriteUrls:
# - https://vminsert-prd-datascience.meeshogcp.in/insert/multitenant/prometheus/api/v1/write
- http://vminsert-datascience-prd.victoriametrics.svc.cluster.local:8480/insert/multitenant/prometheus/api/v1/write
# - http://prometheus:8480/insert/0/prometheus
multiTenantUrls: []
# multiTenantUrls:
# - http://vm-insert-az1:8480
# - http://vm-insert-az2:8480
extraArgs:
envflag.enable: "true"
envflag.prefix: VM_
loggerFormat: json
promscrape.config.strictParse: false
promscrape.maxScrapeSize: 1000000000
promscrape.minResponseSizeForStreamParse: 1000000
loggerTimezone: "Asia/Kolkata"
# Uncomment and specify the port if you want to support any of the protocols:
# https://victoriametrics.github.io/vmagent.html#features
# graphiteListenAddr: ":2003"
# influxListenAddr: ":8189"
# opentsdbHTTPListenAddr: ":4242"
# opentsdbListenAddr: ":4242"
# -- Additional environment variables (ex.: secret tokens, flags) https://github.com/VictoriaMetrics/VictoriaMetrics#environment-variables
env:
[]
# - name: VM_remoteWrite_basicAuth_password
# valueFrom:
# secretKeyRef:
# name: auth_secret
# key: password
# extra Labels for Pods, Deployment and Statefulset
extraLabels:
bu: "datascience"
team: "datascience-sre"
service: "vmagent-datascience-prd"
env: "prd"
priority: "p0"
type: "vmagent"
# extra Labels for Pods only
podLabels: {}
# Additional hostPath mounts
extraHostPathMounts:
[]
# - name: certs-dir
# mountPath: /etc/kubernetes/certs
# subPath: ""
# hostPath: /etc/kubernetes/certs
# readOnly: true
# Extra Volumes for the pod
extraVolumes:
[]
# - name: example
# configMap:
# name: example
# Extra Volume Mounts for the container
extraVolumeMounts:
[]
# - name: example
# mountPath: /example
extraContainers: []
# - name: config-reloader
# image: reloader-image
podSecurityContext:
{}
# fsGroup: 2000
securityContext:
{}
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
enabled: true
annotations: {}
# cloud.google.com/neg: '{"exposed_ports": {"8429":{"name": "vmagent-datascience-prd"}}}'
extraLabels: {}
clusterIP: ""
## Ref: https://kubernetes.io/docs/user-guide/services/#external-ips
##
externalIPs: []
loadBalancerIP: ""
loadBalancerSourceRanges: []
servicePort: 8429
# nodePort: 30000
type: ClusterIP
# Ref: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip
# externalTrafficPolicy: "local"
# healthCheckNodePort: 0
ingress:
enabled: true
ingressClassName: contour-internal-1
annotations: {}
# nginx.ingress.kubernetes.io/force-ssl-redirect: "false"
# nginx.ingress.kubernetes.io/rewrite-target: /
# nginx.ingress.kubernetes.io/ssl-redirect: "false"
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: 'true'
extraLabels: {}
hosts:
- name: vmagent-datascience-prd.meeshogcp.in
path: /
port: http
tls: []
# - secretName: vmagent-ingress-tls
# hosts:
# - vmagent.local
# 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
# -- pathType is only for k8s >= 1.1=
pathType: Prefix
resources:
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# limits:
# cpu: 100m
# memory: 128Mi
requests:
cpu: 40
memory: 80Gi
# Annotations to be added to the deployment
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8429"
# Annotations to be added to pod
podAnnotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8429"
nodeSelector:
cloud.google.com/compute-class: "vmagent-mds"
tolerations:
- key: "cloud.google.com/compute-class"
operator: "Equal"
value: "vmagent-mds"
effect: "NoSchedule"
affinity: {}
# -- priority class to be assigned to the pod(s)
priorityClassName: ""
serviceMonitor:
enabled: false
extraLabels: {}
annotations: {}
relabelings: []
# interval: 15s
# scrapeTimeout: 5s
# -- Commented. HTTP scheme to use for scraping.
# scheme: https
# -- Commented. TLS configuration to use when scraping the endpoint
# tlsConfig:
# insecureSkipVerify: true
persistence:
enabled: false
# storageClassName: default
accessModes:
- ReadWriteOnce
size: 10Gi
annotations: {}
extraLabels: {}
existingClaim: ""
# -- Bind Persistent Volume by labels. Must match all labels of targeted PV.
matchLabels: {}
# -- Extra scrape configs that will be appended to `config`
extraScrapeConfigs: []
# Add extra specs dynamically to this chart
extraObjects: []
@@ -0,0 +1,304 @@
serviceAccount:
# Specifies whether a service account should be created
create: true
# Annotations to add to the service account
annotations: {}
# The name of the service account to use.
# If not set and create is true, a name is generated using the fullname template
name:
# mount API token to pod directly
automountToken: true
imagePullSecrets: []
dedicatedValue: false
schedulerName: default-scheduler
rbac:
create: true
# Note: The PSP will only be deployed, if Kubernetes (<1.25) supports the resource.
pspEnabled: true
namespaced: false
extraLabels: {}
annotations: {}
topologySpreadConstraints:
- maxSkew: 1
topologyKey: topology.kubernetes.io/zone
whenUnsatisfiable: ScheduleAnyway
labelSelector:
matchLabels:
type: vmalert-dr
- maxSkew: 1
topologyKey: kubernetes.io/hostname
whenUnsatisfiable: DoNotSchedule
labelSelector:
matchLabels:
type: vmalert-dr
alertmanager:
enabled: false
server:
enabled: true
name: vmalert
image:
repository: victoriametrics/vmalert
tag: "" # rewrites Chart.AppVersion
pullPolicy: IfNotPresent
nameOverride: ""
fullnameOverride: vmalert-datascience-prd-dr
configMap: ""
## See `kubectl explain poddisruptionbudget.spec` for more
## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
podDisruptionBudget:
enabled: false
# minAvailable: 1
# maxUnavailable: 1
labels: {}
# -- Additional environment variables (ex.: secret tokens, flags) https://github.com/VictoriaMetrics/VictoriaMetrics#environment-variables
env:
[]
# - name: VM_remoteWrite_basicAuth_password
# valueFrom:
# secretKeyRef:
# name: auth_secret
# key: password
replicaCount: 2
# deployment strategy, set to standard k8s default
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
# specifies the minimum number of seconds for which a newly created Pod should be ready without any of its containers crashing/terminating
# 0 is the standard k8s default
minReadySeconds: 0
# vmalert reads metrics from source, next section represents its configuration. It can be any service which supports
# MetricsQL or PromQL.
datasource:
url: "http://vmselect-infra-prd-dr.victoriametrics.svc.clusterset.local:8481/select/100/prometheus"
# -- Basic auth for datasource
basicAuth:
username: ""
password: ""
# -- Auth based on Bearer token for datasource
bearer:
# -- Token with Bearer token. You can use one of token or tokenFile. You don't need to add "Bearer" prefix string
token: ""
# -- Token Auth file with Bearer token. You can use one of token or tokenFile
tokenFile: ""
remote:
write:
url: "http://vminsert-infra-prd-dr.victoriametrics.svc.clusterset.local:8480/insert/100/prometheus/"
# -- Basic auth for remote write
basicAuth:
username: ""
password: ""
# -- Auth based on Bearer token for remote write
bearer:
# -- Token with Bearer token. You can use one of token or tokenFile. You don't need to add "Bearer" prefix string
token: ""
# -- Token Auth file with Bearer token. You can use one of token or tokenFile
tokenFile: ""
read:
url: "http://vmselect-infra-prd-dr.victoriametrics.svc.clusterset.local:8481/select/100/prometheus"
# -- Basic auth for remote read
basicAuth:
username: ""
password: ""
# -- Auth based on Bearer token for remote read
bearer:
# -- Token with Bearer token. You can use one of token or tokenFile. You don't need to add "Bearer" prefix string
token: ""
# -- Token Auth file with Bearer token. You can use one of token or tokenFile
tokenFile: ""
# -- Notifier to use for alerts.
# Multiple notifiers can be enabled by using `notifiers` section
notifier:
alertmanager:
url: "http://alertmanager-infra-prd.alertmanager.svc.clusterset.local:9093"
# -- Basic auth for alertmanager
basicAuth:
username: ""
password: ""
# -- Auth based on Bearer token for alertmanager
bearer:
# -- Token with Bearer token. You can use one of token or tokenFile. You don't need to add "Bearer" prefix string
token: ""
# -- Token Auth file with Bearer token. You can use one of token or tokenFile
tokenFile: ""
# -- Additional notifiers to use for alerts
notifiers: []
# - alertmanager:
# url: "http://devops-p-alertmanager-01b.meeshoint.in:9093"
# basicAuth:
# username: ""
# password: ""
# bearer:
# token: ""
# tokenFile: ""
# - alertmanager:
# url: "https://prd-infra-alertmanager.meesho.com"
# basicAuth:
# username: ""
# password: ""
# bearer:
# token: ""
# tokenFile: ""
extraArgs:
envflag.enable: "true"
envflag.prefix: VM_
loggerFormat: json
rule: "/config/vm-alerts-config/datascience/**/*.yaml"
loggerTimezone: "Asia/Kolkata"
# Additional hostPath mounts
extraHostPathMounts:
[]
# - name: certs-dir
# mountPath: /etc/kubernetes/certs
# subPath: ""
# hostPath: /etc/kubernetes/certs
# readOnly: true
# Extra Volumes for the pod
extraVolumes:
[]
# Extra Volume Mounts for the container
extraVolumeMounts:
[]
extraContainers:
[]
#- name: config-reloader
# image: reloader-image
service:
annotations: {}
labels: {}
clusterIP: ""
## Ref: https://kubernetes.io/docs/user-guide/services/#external-ips
##
externalIPs: []
loadBalancerIP: ""
loadBalancerSourceRanges: []
servicePort: 8880
# nodePort: 30000
type: ClusterIP
# Ref: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip
# externalTrafficPolicy: "local"
# healthCheckNodePort: 0
ingress:
enabled: true
annotations: {}
ingressClassName: nginx-internal
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: 'true'
extraLabels: {}
hosts:
- name: vmalert-datascience-prd-dr.meeshogcp.in
path: /
port: http
tls: []
# - secretName: vmselect-ingress-tls
# hosts:
# - vmselect.local
# 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
# -- pathType is only for k8s >= 1.1=
pathType: Prefix
podSecurityContext: {}
# fsGroup: 2000
securityContext:
{}
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
resources:
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# limits:
# cpu: 100m
# memory: 128Mi
requests:
cpu: 500m
memory: 1Gi
# Annotations to be added to the deployment
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8880"
# labels to be added to the deployment, pods and other resources
labels:
bu: "infra"
team: "sre"
service: "vmalert-datascience-prd-dr"
env: "prd"
priority: "p0"
type: "vmalert-dr"
# Annotations to be added to pod
podAnnotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8880"
podLabels: {}
nodeSelector:
cloud.google.com/compute-class: "vmagent-dr"
priorityClassName: ""
tolerations:
- key: "cloud.google.com/compute-class"
operator: "Equal"
value: "vmagent-dr"
effect: "NoSchedule"
affinity: {}
# vmalert alert rules configuration configuration:
# use existing configmap if specified
# otherwise .config values will be used
config:
alerts:
groups: []
serviceMonitor:
enabled: false
extraLabels: {}
annotations: {}
relabelings: []
# interval: 15s
# scrapeTimeout: 5s
# -- Commented. HTTP scheme to use for scraping.
# scheme: https
# -- Commented. TLS configuration to use when scraping the endpoint
# tlsConfig:
# insecureSkipVerify: true
@@ -0,0 +1,340 @@
serviceAccount:
# Specifies whether a service account should be created
create: true
# Annotations to add to the service account
annotations: {}
# The name of the service account to use.
# If not set and create is true, a name is generated using the fullname template
name:
# mount API token to pod directly
automountToken: true
imagePullSecrets: []
dedicatedValue: false
schedulerName: default-scheduler
rbac:
create: true
# Note: The PSP will only be deployed, if Kubernetes (<1.25) supports the resource.
pspEnabled: true
namespaced: false
extraLabels: {}
annotations: {}
topologySpreadConstraints:
- maxSkew: 1
topologyKey: topology.kubernetes.io/zone
whenUnsatisfiable: ScheduleAnyway
labelSelector:
matchLabels:
type: vmalert
- maxSkew: 1
topologyKey: kubernetes.io/hostname
whenUnsatisfiable: DoNotSchedule
labelSelector:
matchLabels:
type: vmalert
alertmanager:
enabled: false
server:
enabled: true
name: vmalert
image:
repository: victoriametrics/vmalert
tag: "" # rewrites Chart.AppVersion
pullPolicy: IfNotPresent
nameOverride: ""
fullnameOverride: vmalert-stateful-secured-datascience-prd
configMap: ""
## See `kubectl explain poddisruptionbudget.spec` for more
## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
podDisruptionBudget:
enabled: false
# minAvailable: 1
# maxUnavailable: 1
labels: {}
# -- Additional environment variables (ex.: secret tokens, flags) https://github.com/VictoriaMetrics/VictoriaMetrics#environment-variables
env:
[]
# - name: VM_remoteWrite_basicAuth_password
# valueFrom:
# secretKeyRef:
# name: auth_secret
# key: password
replicaCount: 1
# deployment strategy, set to standard k8s default
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
# specifies the minimum number of seconds for which a newly created Pod should be ready without any of its containers crashing/terminating
# 0 is the standard k8s default
minReadySeconds: 0
# vmalert reads metrics from source, next section represents its configuration. It can be any service which supports
# MetricsQL or PromQL.
datasource:
url: "http://vmselect-datascience-prd-proxy.victoriametrics.svc.cluster.local:8481/select/200/prometheus"
# -- Basic auth for datasource
basicAuth:
username: ""
password: ""
# -- Auth based on Bearer token for datasource
bearer:
# -- Token with Bearer token. You can use one of token or tokenFile. You don't need to add "Bearer" prefix string
token: ""
# -- Token Auth file with Bearer token. You can use one of token or tokenFile
tokenFile: ""
remote:
write:
url: "http://vm-insert-datascience-prd.victoriametrics.svc.cluster.local:8480/insert/200/prometheus/"
# -- Basic auth for remote write
basicAuth:
username: ""
password: ""
# -- Auth based on Bearer token for remote write
bearer:
# -- Token with Bearer token. You can use one of token or tokenFile. You don't need to add "Bearer" prefix string
token: ""
# -- Token Auth file with Bearer token. You can use one of token or tokenFile
tokenFile: ""
read:
url: "http://vmselect-datascience-prd-proxy.victoriametrics.svc.cluster.local:8481/select/200/prometheus"
# -- Basic auth for remote read
basicAuth:
username: ""
password: ""
# -- Auth based on Bearer token for remote read
bearer:
# -- Token with Bearer token. You can use one of token or tokenFile. You don't need to add "Bearer" prefix string
token: ""
# -- Token Auth file with Bearer token. You can use one of token or tokenFile
tokenFile: ""
# -- Notifier to use for alerts.
# Multiple notifiers can be enabled by using `notifiers` section
notifier:
alertmanager:
url: "http://alertmanager-infra-prd.alertmanager.svc.clusterset.local:9093"
# -- Basic auth for alertmanager
basicAuth:
username: ""
password: ""
# -- Auth based on Bearer token for alertmanager
bearer:
# -- Token with Bearer token. You can use one of token or tokenFile. You don't need to add "Bearer" prefix string
token: ""
# -- Token Auth file with Bearer token. You can use one of token or tokenFile
tokenFile: ""
# -- Additional notifiers to use for alerts
notifiers: []
# - alertmanager:
# url: "http://devops-p-alertmanager-01b.meeshoint.in:9093"
# basicAuth:
# username: ""
# password: ""
# bearer:
# token: ""
# tokenFile: ""
# - alertmanager:
# url: "https://prd-infra-alertmanager.meesho.com"
# basicAuth:
# username: ""
# password: ""
# bearer:
# token: ""
# tokenFile: ""
extraArgs:
envflag.enable: "true"
envflag.prefix: VM_
loggerFormat: json
rule: "/alert-rules/vm-alerts-config/configmap/sensitive/datascience/**/*.yaml"
evaluationInterval: 60s
configCheckInterval: 10s
loggerTimezone: "Asia/Kolkata"
# Additional hostPath mounts
extraHostPathMounts:
[]
# - name: certs-dir
# mountPath: /etc/kubernetes/certs
# subPath: ""
# hostPath: /etc/kubernetes/certs
# readOnly: true
# Extra Volumes for the pod
extraVolumes:
[]
# Extra Volume Mounts for the container
extraVolumeMounts:
[]
extraContainers:
[]
#- name: config-reloader
# image: reloader-image
service:
annotations: {}
labels: null # Set to null to prevent default values.yaml labels from being merged
clusterIP: ""
## Ref: https://kubernetes.io/docs/user-guide/services/#external-ips
##
externalIPs: []
loadBalancerIP: ""
loadBalancerSourceRanges: []
servicePort: 8880
# nodePort: 30000
type: ClusterIP
# Ref: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip
# externalTrafficPolicy: "local"
# healthCheckNodePort: 0
ingress:
enabled: false
annotations: {}
ingressClassName: nginx-internal
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: 'true'
extraLabels: {}
hosts:
- name: vmalert-datascience-prd-stateful.meeshogcp.in
path: /
port: http
tls: []
# - secretName: vmselect-ingress-tls
# hosts:
# - vmselect.local
# 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
# -- pathType is only for k8s >= 1.1=
pathType: Prefix
podSecurityContext: {}
# fsGroup: 2000
securityContext:
{}
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
resources:
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# limits:
# cpu: 100m
# memory: 128Mi
requests:
cpu: 500m
memory: 1Gi
# Annotations to be added to the deployment
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8880"
# labels to be added to the deployment, pods and other resources
labels:
bu: "datascience"
team: "sre"
service: "vmalert-stateful-secured-datascience-prd"
env: "prd"
priority: "p0"
type: "vmalert"
# Annotations to be added to pod
podAnnotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8880"
cluster-autoscaler.kubernetes.io/safe-to-evict: 'false'
podLabels: {}
nodeSelector:
cloud.google.com/compute-class: "vmselect"
priorityClassName: ""
tolerations:
- key: "cloud.google.com/compute-class"
operator: "Equal"
value: "vmselect"
effect: "NoSchedule"
affinity: {}
# vmalert alert rules configuration configuration:
# use existing configmap if specified
# otherwise .config values will be used
config:
alerts:
groups: []
# -- Persistent Volume configuration for alert rules
persistentVolume:
# -- Create/use Persistent Volume Claim for alert rules. Empty dir if false
enabled: true
# -- Override Persistent Volume Claim name
name: ""
# -- Array of access modes. Must match those of existing PV or dynamic provisioner. Details are [here](https://kubernetes.io/docs/concepts/storage/persistent-volumes/)
accessModes:
- ReadWriteMany
# -- Persistent volume annotations
annotations: {}
# -- PVC extra labels
extraLabels: {}
# -- StorageClass to use for persistent volume. Requires server.persistentVolume.enabled: true. If defined, PVC created automatically
storageClassName: "pulse-nfs-sc-secured-prd"
# -- Existing Claim name. If defined, PVC must be created manually before volume will be bound
existingClaim: ""
# -- Mount path. Alert rules Persistent Volume mount root path.
mountPath: /alert-rules
# -- Mount subpath
subPath: ""
# -- Size of the volume. Better to set the same as resource limit memory property.
size: 10Gi
serviceMonitor:
enabled: false
extraLabels: {}
annotations: {}
relabelings: []
# interval: 15s
# scrapeTimeout: 5s
# -- Commented. HTTP scheme to use for scraping.
# scheme: https
# -- Commented. TLS configuration to use when scraping the endpoint
# tlsConfig:
# insecureSkipVerify: true
@@ -0,0 +1,305 @@
serviceAccount:
# Specifies whether a service account should be created
create: true
# Annotations to add to the service account
annotations: {}
# The name of the service account to use.
# If not set and create is true, a name is generated using the fullname template
name:
# mount API token to pod directly
automountToken: true
imagePullSecrets: []
dedicatedValue: false
schedulerName: default-scheduler
rbac:
create: true
# Note: The PSP will only be deployed, if Kubernetes (<1.25) supports the resource.
pspEnabled: true
namespaced: false
extraLabels: {}
annotations: {}
topologySpreadConstraints:
- maxSkew: 1
topologyKey: topology.kubernetes.io/zone
whenUnsatisfiable: ScheduleAnyway
labelSelector:
matchLabels:
type: vmalert
- maxSkew: 1
topologyKey: kubernetes.io/hostname
whenUnsatisfiable: DoNotSchedule
labelSelector:
matchLabels:
type: vmalert
alertmanager:
enabled: false
server:
enabled: true
name: vmalert-secured
image:
repository: victoriametrics/vmalert
tag: "" # rewrites Chart.AppVersion
pullPolicy: IfNotPresent
nameOverride: ""
fullnameOverride: vmalert-secured-datascience-prd
configMap: ""
## See `kubectl explain poddisruptionbudget.spec` for more
## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
podDisruptionBudget:
enabled: false
# minAvailable: 1
# maxUnavailable: 1
labels: {}
# -- Additional environment variables (ex.: secret tokens, flags) https://github.com/VictoriaMetrics/VictoriaMetrics#environment-variables
env:
[]
# - name: VM_remoteWrite_basicAuth_password
# valueFrom:
# secretKeyRef:
# name: auth_secret
# key: password
replicaCount: 1
# deployment strategy, set to standard k8s default
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
# specifies the minimum number of seconds for which a newly created Pod should be ready without any of its containers crashing/terminating
# 0 is the standard k8s default
minReadySeconds: 0
# vmalert reads metrics from source, next section represents its configuration. It can be any service which supports
# MetricsQL or PromQL.
datasource:
url: "http://vmselect-datascience-prd-proxy.victoriametrics.svc.cluster.local:8481/select/200/prometheus"
# -- Basic auth for datasource
basicAuth:
username: ""
password: ""
# -- Auth based on Bearer token for datasource
bearer:
# -- Token with Bearer token. You can use one of token or tokenFile. You don't need to add "Bearer" prefix string
token: ""
# -- Token Auth file with Bearer token. You can use one of token or tokenFile
tokenFile: ""
remote:
write:
url: "http://vminsert-datascience-prd.victoriametrics.svc.cluster.local:8480/insert/200/prometheus/"
# -- Basic auth for remote write
basicAuth:
username: ""
password: ""
# -- Auth based on Bearer token for remote write
bearer:
# -- Token with Bearer token. You can use one of token or tokenFile. You don't need to add "Bearer" prefix string
token: ""
# -- Token Auth file with Bearer token. You can use one of token or tokenFile
tokenFile: ""
read:
url: "http://vmselect-datascience-prd-proxy.victoriametrics.svc.cluster.local:8481/select/200/prometheus"
# -- Basic auth for remote read
basicAuth:
username: ""
password: ""
# -- Auth based on Bearer token for remote read
bearer:
# -- Token with Bearer token. You can use one of token or tokenFile. You don't need to add "Bearer" prefix string
token: ""
# -- Token Auth file with Bearer token. You can use one of token or tokenFile
tokenFile: ""
# -- Notifier to use for alerts.
# Multiple notifiers can be enabled by using `notifiers` section
notifier:
alertmanager:
url: "http://alertmanager-infra-prd.alertmanager.svc.clusterset.local:9093"
# -- Basic auth for alertmanager
basicAuth:
username: ""
password: ""
# -- Auth based on Bearer token for alertmanager
bearer:
# -- Token with Bearer token. You can use one of token or tokenFile. You don't need to add "Bearer" prefix string
token: ""
# -- Token Auth file with Bearer token. You can use one of token or tokenFile
tokenFile: ""
# -- Additional notifiers to use for alerts
notifiers: []
# - alertmanager:
# url: "http://devops-p-alertmanager-01b.meeshoint.in:9093"
# basicAuth:
# username: ""
# password: ""
# bearer:
# token: ""
# tokenFile: ""
# - alertmanager:
# url: "https://prd-infra-alertmanager.meesho.com"
# basicAuth:
# username: ""
# password: ""
# bearer:
# token: ""
# tokenFile: ""
extraArgs:
envflag.enable: "true"
envflag.prefix: VM_
loggerFormat: json
rule: "/config/vm-alerts-config1/sensitive/datascience/**/*.yaml"
loggerTimezone: "Asia/Kolkata"
# Additional hostPath mounts
extraHostPathMounts:
[]
# - name: certs-dir
# mountPath: /etc/kubernetes/certs
# subPath: ""
# hostPath: /etc/kubernetes/certs
# readOnly: true
# Extra Volumes for the pod
extraVolumes:
[]
# Extra Volume Mounts for the container
extraVolumeMounts:
[]
extraContainers:
[]
#- name: config-reloader
# image: reloader-image
service:
annotations: {}
labels: {}
clusterIP: ""
## Ref: https://kubernetes.io/docs/user-guide/services/#external-ips
##
externalIPs: []
loadBalancerIP: ""
loadBalancerSourceRanges: []
servicePort: 8880
# nodePort: 30000
type: ClusterIP
# Ref: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip
# externalTrafficPolicy: "local"
# healthCheckNodePort: 0
ingress:
enabled: true
annotations: {}
ingressClassName: nginx-internal
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: 'true'
extraLabels: {}
hosts:
- name: vmalert-secured-datascience-prd.meeshogcp.in
path: /
port: http
tls: []
# - secretName: vmselect-ingress-tls
# hosts:
# - vmselect.local
# 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
# -- pathType is only for k8s >= 1.1=
pathType: Prefix
podSecurityContext: {}
# fsGroup: 2000
securityContext:
{}
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
resources:
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# limits:
# cpu: 100m
# memory: 128Mi
requests:
cpu: 500m
memory: 1Gi
# Annotations to be added to the deployment
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8880"
# labels to be added to the deployment, pods and other resources
labels:
bu: "infra"
team: "sre"
service: "vmalert-secured-datascience-prd"
env: "prd"
priority: "p0"
type: "vmalert"
# Annotations to be added to pod
podAnnotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8880"
cluster-autoscaler.kubernetes.io/safe-to-evict: 'false'
podLabels: {}
nodeSelector:
cloud.google.com/compute-class: "vmselect"
priorityClassName: ""
tolerations:
- key: "cloud.google.com/compute-class"
operator: "Equal"
value: "vmselect"
effect: "NoSchedule"
affinity: {}
# vmalert alert rules configuration configuration:
# use existing configmap if specified
# otherwise .config values will be used
config:
alerts:
groups: []
serviceMonitor:
enabled: false
extraLabels: {}
annotations: {}
relabelings: []
# interval: 15s
# scrapeTimeout: 5s
# -- Commented. HTTP scheme to use for scraping.
# scheme: https
# -- Commented. TLS configuration to use when scraping the endpoint
# tlsConfig:
# insecureSkipVerify: true
@@ -0,0 +1,340 @@
serviceAccount:
# Specifies whether a service account should be created
create: true
# Annotations to add to the service account
annotations: {}
# The name of the service account to use.
# If not set and create is true, a name is generated using the fullname template
name:
# mount API token to pod directly
automountToken: true
imagePullSecrets: []
dedicatedValue: false
schedulerName: default-scheduler
rbac:
create: true
# Note: The PSP will only be deployed, if Kubernetes (<1.25) supports the resource.
pspEnabled: true
namespaced: false
extraLabels: {}
annotations: {}
topologySpreadConstraints:
- maxSkew: 1
topologyKey: topology.kubernetes.io/zone
whenUnsatisfiable: ScheduleAnyway
labelSelector:
matchLabels:
type: vmalert
- maxSkew: 1
topologyKey: kubernetes.io/hostname
whenUnsatisfiable: DoNotSchedule
labelSelector:
matchLabels:
type: vmalert
alertmanager:
enabled: false
server:
enabled: true
name: vmalert
image:
repository: victoriametrics/vmalert
tag: "" # rewrites Chart.AppVersion
pullPolicy: IfNotPresent
nameOverride: ""
fullnameOverride: vmalert-datascience-prd-stateful
configMap: ""
## See `kubectl explain poddisruptionbudget.spec` for more
## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
podDisruptionBudget:
enabled: false
# minAvailable: 1
# maxUnavailable: 1
labels: {}
# -- Additional environment variables (ex.: secret tokens, flags) https://github.com/VictoriaMetrics/VictoriaMetrics#environment-variables
env:
[]
# - name: VM_remoteWrite_basicAuth_password
# valueFrom:
# secretKeyRef:
# name: auth_secret
# key: password
replicaCount: 1
# deployment strategy, set to standard k8s default
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
# specifies the minimum number of seconds for which a newly created Pod should be ready without any of its containers crashing/terminating
# 0 is the standard k8s default
minReadySeconds: 0
# vmalert reads metrics from source, next section represents its configuration. It can be any service which supports
# MetricsQL or PromQL.
datasource:
url: "http://vmselect-datascience-prd-proxy.victoriametrics.svc.cluster.local:8481/select/100/prometheus"
# -- Basic auth for datasource
basicAuth:
username: ""
password: ""
# -- Auth based on Bearer token for datasource
bearer:
# -- Token with Bearer token. You can use one of token or tokenFile. You don't need to add "Bearer" prefix string
token: ""
# -- Token Auth file with Bearer token. You can use one of token or tokenFile
tokenFile: ""
remote:
write:
url: "http://vm-insert-datascience-prd.victoriametrics.svc.cluster.local:8480/insert/100/prometheus/"
# -- Basic auth for remote write
basicAuth:
username: ""
password: ""
# -- Auth based on Bearer token for remote write
bearer:
# -- Token with Bearer token. You can use one of token or tokenFile. You don't need to add "Bearer" prefix string
token: ""
# -- Token Auth file with Bearer token. You can use one of token or tokenFile
tokenFile: ""
read:
url: "http://vmselect-datascience-prd-proxy.victoriametrics.svc.cluster.local:8481/select/100/prometheus"
# -- Basic auth for remote read
basicAuth:
username: ""
password: ""
# -- Auth based on Bearer token for remote read
bearer:
# -- Token with Bearer token. You can use one of token or tokenFile. You don't need to add "Bearer" prefix string
token: ""
# -- Token Auth file with Bearer token. You can use one of token or tokenFile
tokenFile: ""
# -- Notifier to use for alerts.
# Multiple notifiers can be enabled by using `notifiers` section
notifier:
alertmanager:
url: "http://alertmanager-infra-prd.alertmanager.svc.clusterset.local:9093"
# -- Basic auth for alertmanager
basicAuth:
username: ""
password: ""
# -- Auth based on Bearer token for alertmanager
bearer:
# -- Token with Bearer token. You can use one of token or tokenFile. You don't need to add "Bearer" prefix string
token: ""
# -- Token Auth file with Bearer token. You can use one of token or tokenFile
tokenFile: ""
# -- Additional notifiers to use for alerts
notifiers: []
# - alertmanager:
# url: "http://devops-p-alertmanager-01b.meeshoint.in:9093"
# basicAuth:
# username: ""
# password: ""
# bearer:
# token: ""
# tokenFile: ""
# - alertmanager:
# url: "https://prd-infra-alertmanager.meesho.com"
# basicAuth:
# username: ""
# password: ""
# bearer:
# token: ""
# tokenFile: ""
extraArgs:
envflag.enable: "true"
envflag.prefix: VM_
loggerFormat: json
rule: "/alert-rules/vm-alerts-config/configmap/datascience/**/*.yaml"
evaluationInterval: 60s
configCheckInterval: 10s
loggerTimezone: "Asia/Kolkata"
# Additional hostPath mounts
extraHostPathMounts:
[]
# - name: certs-dir
# mountPath: /etc/kubernetes/certs
# subPath: ""
# hostPath: /etc/kubernetes/certs
# readOnly: true
# Extra Volumes for the pod
extraVolumes:
[]
# Extra Volume Mounts for the container
extraVolumeMounts:
[]
extraContainers:
[]
#- name: config-reloader
# image: reloader-image
service:
annotations: {}
labels: null # Set to null to prevent default values.yaml labels from being merged
clusterIP: ""
## Ref: https://kubernetes.io/docs/user-guide/services/#external-ips
##
externalIPs: []
loadBalancerIP: ""
loadBalancerSourceRanges: []
servicePort: 8880
# nodePort: 30000
type: ClusterIP
# Ref: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip
# externalTrafficPolicy: "local"
# healthCheckNodePort: 0
ingress:
enabled: true
annotations: {}
ingressClassName: nginx-internal
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: 'true'
extraLabels: {}
hosts:
- name: vmalert-datascience-prd-stateful.meeshogcp.in
path: /
port: http
tls: []
# - secretName: vmselect-ingress-tls
# hosts:
# - vmselect.local
# 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
# -- pathType is only for k8s >= 1.1=
pathType: Prefix
podSecurityContext: {}
# fsGroup: 2000
securityContext:
{}
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
resources:
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# limits:
# cpu: 100m
# memory: 128Mi
requests:
cpu: 500m
memory: 1Gi
# Annotations to be added to the deployment
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8880"
# labels to be added to the deployment, pods and other resources
labels:
bu: "datascience"
team: "sre"
service: "vmalert-datascience-prd-stateful"
env: "prd"
priority: "p0"
type: "vmalert"
# Annotations to be added to pod
podAnnotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8880"
cluster-autoscaler.kubernetes.io/safe-to-evict: 'false'
podLabels: {}
nodeSelector:
cloud.google.com/compute-class: "vmselect"
priorityClassName: ""
tolerations:
- key: "cloud.google.com/compute-class"
operator: "Equal"
value: "vmselect"
effect: "NoSchedule"
affinity: {}
# vmalert alert rules configuration configuration:
# use existing configmap if specified
# otherwise .config values will be used
config:
alerts:
groups: []
# -- Persistent Volume configuration for alert rules
persistentVolume:
# -- Create/use Persistent Volume Claim for alert rules. Empty dir if false
enabled: true
# -- Override Persistent Volume Claim name
name: ""
# -- Array of access modes. Must match those of existing PV or dynamic provisioner. Details are [here](https://kubernetes.io/docs/concepts/storage/persistent-volumes/)
accessModes:
- ReadWriteMany
# -- Persistent volume annotations
annotations: {}
# -- PVC extra labels
extraLabels: {}
# -- StorageClass to use for persistent volume. Requires server.persistentVolume.enabled: true. If defined, PVC created automatically
storageClassName: "pulse-nfs-sc-prd"
# -- Existing Claim name. If defined, PVC must be created manually before volume will be bound
existingClaim: ""
# -- Mount path. Alert rules Persistent Volume mount root path.
mountPath: /alert-rules
# -- Mount subpath
subPath: ""
# -- Size of the volume. Better to set the same as resource limit memory property.
size: 10Gi
serviceMonitor:
enabled: false
extraLabels: {}
annotations: {}
relabelings: []
# interval: 15s
# scrapeTimeout: 5s
# -- Commented. HTTP scheme to use for scraping.
# scheme: https
# -- Commented. TLS configuration to use when scraping the endpoint
# tlsConfig:
# insecureSkipVerify: true
@@ -0,0 +1,305 @@
serviceAccount:
# Specifies whether a service account should be created
create: true
# Annotations to add to the service account
annotations: {}
# The name of the service account to use.
# If not set and create is true, a name is generated using the fullname template
name:
# mount API token to pod directly
automountToken: true
imagePullSecrets: []
dedicatedValue: false
schedulerName: default-scheduler
rbac:
create: true
# Note: The PSP will only be deployed, if Kubernetes (<1.25) supports the resource.
pspEnabled: true
namespaced: false
extraLabels: {}
annotations: {}
topologySpreadConstraints:
- maxSkew: 1
topologyKey: topology.kubernetes.io/zone
whenUnsatisfiable: ScheduleAnyway
labelSelector:
matchLabels:
type: vmalert
- maxSkew: 1
topologyKey: kubernetes.io/hostname
whenUnsatisfiable: DoNotSchedule
labelSelector:
matchLabels:
type: vmalert
alertmanager:
enabled: false
server:
enabled: true
name: vmalert
image:
repository: victoriametrics/vmalert
tag: "" # rewrites Chart.AppVersion
pullPolicy: IfNotPresent
nameOverride: ""
fullnameOverride: vmalert-datascience-prd
configMap: ""
## See `kubectl explain poddisruptionbudget.spec` for more
## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
podDisruptionBudget:
enabled: false
# minAvailable: 1
# maxUnavailable: 1
labels: {}
# -- Additional environment variables (ex.: secret tokens, flags) https://github.com/VictoriaMetrics/VictoriaMetrics#environment-variables
env:
[]
# - name: VM_remoteWrite_basicAuth_password
# valueFrom:
# secretKeyRef:
# name: auth_secret
# key: password
replicaCount: 1
# deployment strategy, set to standard k8s default
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
# specifies the minimum number of seconds for which a newly created Pod should be ready without any of its containers crashing/terminating
# 0 is the standard k8s default
minReadySeconds: 0
# vmalert reads metrics from source, next section represents its configuration. It can be any service which supports
# MetricsQL or PromQL.
datasource:
url: "http://vmselect-datascience-prd-proxy.victoriametrics.svc.cluster.local:8481/select/100/prometheus"
# -- Basic auth for datasource
basicAuth:
username: ""
password: ""
# -- Auth based on Bearer token for datasource
bearer:
# -- Token with Bearer token. You can use one of token or tokenFile. You don't need to add "Bearer" prefix string
token: ""
# -- Token Auth file with Bearer token. You can use one of token or tokenFile
tokenFile: ""
remote:
write:
url: "http://vminsert-datascience-prd.victoriametrics.svc.cluster.local:8480/insert/100/prometheus/"
# -- Basic auth for remote write
basicAuth:
username: ""
password: ""
# -- Auth based on Bearer token for remote write
bearer:
# -- Token with Bearer token. You can use one of token or tokenFile. You don't need to add "Bearer" prefix string
token: ""
# -- Token Auth file with Bearer token. You can use one of token or tokenFile
tokenFile: ""
read:
url: "http://vmselect-datascience-prd-proxy.victoriametrics.svc.cluster.local:8481/select/100/prometheus"
# -- Basic auth for remote read
basicAuth:
username: ""
password: ""
# -- Auth based on Bearer token for remote read
bearer:
# -- Token with Bearer token. You can use one of token or tokenFile. You don't need to add "Bearer" prefix string
token: ""
# -- Token Auth file with Bearer token. You can use one of token or tokenFile
tokenFile: ""
# -- Notifier to use for alerts.
# Multiple notifiers can be enabled by using `notifiers` section
notifier:
alertmanager:
url: "http://alertmanager-infra-prd.alertmanager.svc.clusterset.local:9093"
# -- Basic auth for alertmanager
basicAuth:
username: ""
password: ""
# -- Auth based on Bearer token for alertmanager
bearer:
# -- Token with Bearer token. You can use one of token or tokenFile. You don't need to add "Bearer" prefix string
token: ""
# -- Token Auth file with Bearer token. You can use one of token or tokenFile
tokenFile: ""
# -- Additional notifiers to use for alerts
notifiers: []
# - alertmanager:
# url: "http://devops-p-alertmanager-01b.meeshoint.in:9093"
# basicAuth:
# username: ""
# password: ""
# bearer:
# token: ""
# tokenFile: ""
# - alertmanager:
# url: "https://prd-infra-alertmanager.meesho.com"
# basicAuth:
# username: ""
# password: ""
# bearer:
# token: ""
# tokenFile: ""
extraArgs:
envflag.enable: "true"
envflag.prefix: VM_
loggerFormat: json
rule: "/config/vm-alerts-config1/datascience/**/*.yaml"
loggerTimezone: "Asia/Kolkata"
# Additional hostPath mounts
extraHostPathMounts:
[]
# - name: certs-dir
# mountPath: /etc/kubernetes/certs
# subPath: ""
# hostPath: /etc/kubernetes/certs
# readOnly: true
# Extra Volumes for the pod
extraVolumes:
[]
# Extra Volume Mounts for the container
extraVolumeMounts:
[]
extraContainers:
[]
#- name: config-reloader
# image: reloader-image
service:
annotations: {}
labels: {}
clusterIP: ""
## Ref: https://kubernetes.io/docs/user-guide/services/#external-ips
##
externalIPs: []
loadBalancerIP: ""
loadBalancerSourceRanges: []
servicePort: 8880
# nodePort: 30000
type: ClusterIP
# Ref: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip
# externalTrafficPolicy: "local"
# healthCheckNodePort: 0
ingress:
enabled: true
annotations: {}
ingressClassName: nginx-internal
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: 'true'
extraLabels: {}
hosts:
- name: vmalert-datascience-prd.meeshogcp.in
path: /
port: http
tls: []
# - secretName: vmselect-ingress-tls
# hosts:
# - vmselect.local
# 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
# -- pathType is only for k8s >= 1.1=
pathType: Prefix
podSecurityContext: {}
# fsGroup: 2000
securityContext:
{}
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
resources:
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# limits:
# cpu: 100m
# memory: 128Mi
requests:
cpu: 500m
memory: 1Gi
# Annotations to be added to the deployment
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8880"
# labels to be added to the deployment, pods and other resources
labels:
bu: "infra"
team: "sre"
service: "vmalert-datascience-prd"
env: "prd"
priority: "p0"
type: "vmalert"
# Annotations to be added to pod
podAnnotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8880"
cluster-autoscaler.kubernetes.io/safe-to-evict: 'false'
podLabels: {}
nodeSelector:
cloud.google.com/compute-class: "vmselect"
priorityClassName: ""
tolerations:
- key: "cloud.google.com/compute-class"
operator: "Equal"
value: "vmselect"
effect: "NoSchedule"
affinity: {}
# vmalert alert rules configuration configuration:
# use existing configmap if specified
# otherwise .config values will be used
config:
alerts:
groups: []
serviceMonitor:
enabled: false
extraLabels: {}
annotations: {}
relabelings: []
# interval: 15s
# scrapeTimeout: 5s
# -- Commented. HTTP scheme to use for scraping.
# scheme: https
# -- Commented. TLS configuration to use when scraping the endpoint
# tlsConfig:
# insecureSkipVerify: true
@@ -0,0 +1,234 @@
vmselect:
enabled: false
vmstorage:
enabled: false
fullnameOverride: vmstorage-datascience-prd
replicaCount: 5
dedicatedValue: false
# schedulerName: default-scheduler
vminsert:
# -- Enable deployment of vminsert component. Deployment is used
enabled: true
# -- vminsert container name
name: vminsert
strategy: {}
# rollingUpdate:
# maxSurge: 25%
# maxUnavailable: 25%
# type: RollingUpdate
image:
# -- Image repository
repository: asia-south1-docker.pkg.dev/meesho-devops-admin-0622/admin/sre/vminsert
# -- Image tag
tag: v1.93.7-cluster
# -- Image pull policy
pullPolicy: IfNotPresent
# -- Name of Priority Class
priorityClassName: "high-priority"
# -- Overrides the full name of vminsert component
fullnameOverride: vminsert-datascience-prd
# Extra command line arguments for vminsert component
extraArgs:
envflag.enable: "true"
envflag.prefix: VM_
loggerFormat: json
maxLabelsPerTimeseries: 40
replicationFactor: 1
loggerTimezone: "Asia/Kolkata"
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8480"
extraLabels:
bu: "datascience"
team: "datascience-sre"
service: "vminsert-datascience-prd"
env: "prd"
priority: "p0"
type: "vminsert"
# arch: "arm64"
# runpod: "ondemand"
# -- Additional environment variables (ex.: secret tokens, flags) https://github.com/VictoriaMetrics/VictoriaMetrics#environment-variables
env: []
# -- Suppress rendering `--storageNode` FQDNs based on `vmstorage.replicaCount` value. If true suppress rendering `--storageNodes`, they can be re-defined in extraArgs
suppresStorageFQDNsRender: false
automountServiceAccountToken: true
# Readiness & Liveness probes
probe:
readiness:
initialDelaySeconds: 5
periodSeconds: 15
timeoutSeconds: 5
failureThreshold: 3
liveness:
initialDelaySeconds: 5
periodSeconds: 15
timeoutSeconds: 5
failureThreshold: 3
# Horizontal Pod Autoscaling
horizontalPodAutoscaler:
# -- Use HPA for vminsert component
enabled: true
# -- Maximum replicas for HPA to use to to scale the vminsert component
maxReplicas: 30
# -- Minimum replicas for HPA to use to scale the vminsert component
minReplicas: 7
# -- Metric for HPA to use to scale the vminsert component
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 40
# Extra Volumes for the pod
extraVolumes:
[]
# - name: example
# configMap:
# name: example
# Extra Volume Mounts for the container
extraVolumeMounts:
[]
# - name: example
# mountPath: /example
extraContainers:
[]
# - name: config-reloader
# image: reloader-image
initContainers:
[]
# - name: example
# image: example-image
podDisruptionBudget:
# -- See `kubectl explain poddisruptionbudget.spec` for more. Ref: [https://kubernetes.io/docs/tasks/run-application/configure-pdb/](https://kubernetes.io/docs/tasks/run-application/configure-pdb/)
enabled: false
# minAvailable: 1
# maxUnavailable: 1
labels: {}
# -- Array of tolerations object. Ref: [https://kubernetes.io/docs/concepts/configuration/assign-pod-node/](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/)
tolerations:
- key: "cloud.google.com/compute-class"
operator: "Equal"
value: "vminsert-mds"
effect: "NoSchedule"
# -- Pod's node selector. Ref: [https://kubernetes.io/docs/user-guide/node-selection/](https://kubernetes.io/docs/user-guide/node-selection/)
nodeSelector:
cloud.google.com/compute-class: "vminsert-mds"
# -- Pod affinity
affinity: {}
topologySpreadConstraints:
- maxSkew: 1
topologyKey: topology.kubernetes.io/zone
whenUnsatisfiable: ScheduleAnyway
labelSelector:
matchLabels:
type: vminsert
- maxSkew: 1
topologyKey: kubernetes.io/hostname
whenUnsatisfiable: DoNotSchedule
labelSelector:
matchLabels:
type: vminsert
# -- Pod's annotations
podAnnotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8480"
# -- Count of vminsert pods
replicaCount: 2
# -- Container workdir
containerWorkingDir: ""
# -- Resource object
resources:
# limits:
# cpu: 50m
# memory: 64Mi
requests:
cpu: 10
memory: 10Gi
# -- Pod's security context. Ref: [https://kubernetes.io/docs/tasks/configure-pod-container/security-context/](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/)
securityContext: {}
podSecurityContext: {}
service:
# -- Service annotations
annotations: {}
# -- Service labels
labels: {}
# -- Service ClusterIP
clusterIP: ""
# -- Service External IPs. Ref: [https://kubernetes.io/docs/user-guide/services/#external-ips]( https://kubernetes.io/docs/user-guide/services/#external-ips)
externalIPs: []
# -- Extra service ports
extraServicePorts: []
# -- Service load balancer IP
loadBalancerIP: ""
# -- Load balancer source range
loadBalancerSourceRanges: []
# -- Service port
servicePort: 8480
# -- Target port
targetPort: http
# -- Service type
type: NodePort
# -- Enable UDP port. used if you have "spec.opentsdbListenAddr" specified
# -- Make sure that service is not type "LoadBalancer", as it requires "MixedProtocolLBService" feature gate. ref: https://kubernetes.io/docs/reference/command-line-tools-reference/feature-gates/
udp: false
ingress:
# -- Enable deployment of ingress for vminsert component
enabled: true
# -- Ingress annotations
annotations:
# nginx.ingress.kubernetes.io/force-ssl-redirect: "false"
# nginx.ingress.kubernetes.io/ssl-redirect: "false"
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: 'true'
extraLabels: {}
# -- Array of host objects
hosts:
- name: vminsert-datascience-prd.meeshogcp.in
path: /
port: http
# -- Array of TLS objects
tls: []
# - secretName: vminsert-ingress-tls
# hosts:
# - vminsert.local
# 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: contour-internal-0
# -- pathType is only for k8s >= 1.1=
pathType: Prefix
serviceMonitor:
# -- Enable deployment of Service Monitor for vminsert component. This is Prometheus operator object
enabled: false
# -- Target namespace of ServiceMonitor manifest
namespace: ""
# -- Service Monitor labels
extraLabels: {}
# -- Service Monitor annotations
annotations: {}
# Commented. Prometheus scare interval for vminsert component
# interval: 15s
# Commented. Prometheus pre-scrape timeout for vminsert component
# scrapeTimeout: 5s
# -- Commented. HTTP scheme to use for scraping.
# scheme: https
# -- Commented. TLS configuration to use when scraping the endpoint
# tlsConfig:
# insecureSkipVerify: true
# -- Service Monitor relabelings
relabelings: []
@@ -0,0 +1,293 @@
vminsert:
enabled: false
vmstorage:
enabled: false
fullnameOverride: vmstorage-datascience-prd
replicaCount: 5
dedicatedValue: false
vmselect:
# -- Enable deployment of vmselect component. Can be deployed as Deployment(default) or StatefulSet
enabled: true
# -- Vmselect container name
name: vmselect
strategy: {}
# rollingUpdate:
# maxSurge: 25%
# maxUnavailable: 25%
# type: RollingUpdate
#extraVMSelects: []
image:
# -- Image repository
repository: asia-south1-docker.pkg.dev/meesho-devops-admin-0622/admin/sre/vmselect
# -- Image tag
tag: v1.93.7-cluster
# -- Image pull policy
pullPolicy: IfNotPresent
# -- Name of Priority Class
priorityClassName: "high-priority"
# -- Overrides the full name of vmselect component
fullnameOverride: vmselect-datascience-prd
# -- Suppress rendering `--storageNode` FQDNs based on `vmstorage.replicaCount` value. If true suppress rendering `--storageNodes`, they can be re-defined in extraArgs
suppresStorageFQDNsRender: false
automountServiceAccountToken: true
# Extra command line arguments for vmselect component
splitService: True
extraArgs:
envflag.enable: "true"
envflag.prefix: VM_
loggerFormat: json
clusternativeListenAddr: ":8401"
dedup.minScrapeInterval: 60s
search.maxSamplesPerQuery: "1000000000000"
search.maxQueryDuration: 300s
search.maxQueueDuration: 60s
search.maxSeries: "10000000000"
search.maxExportSeries: "1000000000"
search.maxUniqueTimeseries: "1000000000000"
search.maxQueryLen: "1000000"
loggerTimezone: "Asia/Kolkata"
search.maxConcurrentRequests: 150
clusternative.maxConcurrentRequests: 256
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8481"
extraLabels:
bu: "datascience"
team: "datascience-sre"
service: "vmselect-datascience-prd"
env: "prd"
priority: "p0"
type: "vmselect"
# arch: "arm64"
# runpod: "ondemand"
# -- Additional environment variables (ex.: secret tokens, flags) https://github.com/VictoriaMetrics/VictoriaMetrics#environment-variables
env: []
# Readiness & Liveness probes
probe:
readiness:
initialDelaySeconds: 5
periodSeconds: 15
timeoutSeconds: 5
failureThreshold: 3
liveness:
initialDelaySeconds: 5
periodSeconds: 15
timeoutSeconds: 5
failureThreshold: 3
horizontalPodAutoscaler:
# -- Use HPA for vmselect component
enabled: true
# -- Maximum replicas for HPA to use to to scale the vmselect component
maxReplicas: 30
# -- Minimum replicas for HPA to use to scale the vmselect component
minReplicas: 15
# -- Metric for HPA to use to scale the vmselect component
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 40
# Additional hostPath mounts
extraHostPathMounts:
[]
# - name: certs-dir
# mountPath: /etc/kubernetes/certs
# subPath: ""
# hostPath: /etc/kubernetes/certs
# readOnly: true
# Extra Volumes for the pod
extraVolumes:
[]
# - name: example
# configMap:
# name: example
# Extra Volume Mounts for the container
extraVolumeMounts:
[]
# - name: example
# mountPath: /example
extraContainers:
[]
# - name: config-reloader
# image: reloader-image
initContainers:
[]
# - name: example
# image: example-image
podDisruptionBudget:
# -- See `kubectl explain poddisruptionbudget.spec` for more. Ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
enabled: true
minAvailable: 1
# maxUnavailable: 1
labels: {}
nodeSelector:
cloud.google.com/compute-class: "vmselect"
tolerations:
- key: "cloud.google.com/compute-class"
operator: "Equal"
value: "vmselect"
effect: "NoSchedule"
# -- Pod affinity
affinity: {}
# -- Pod topologySpreadConstraints
topologySpreadConstraints:
- maxSkew: 1
topologyKey: topology.kubernetes.io/zone
whenUnsatisfiable: ScheduleAnyway
labelSelector:
matchLabels:
type: vmselect
- maxSkew: 1
topologyKey: kubernetes.io/hostname
whenUnsatisfiable: ScheduleAnyway
labelSelector:
matchLabels:
type: vmselect
# -- Pod's annotations
podAnnotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8481"
# -- Count of vmselect pods
replicaCount: 2
# -- Container workdir
containerWorkingDir: ""
# -- Resource object
resources:
# limits:
# cpu: 50m
# memory: 64Mi
requests:
cpu: 20
memory: 31Gi
# -- Pod's security context. Ref: [https://kubernetes.io/docs/tasks/configure-pod-container/security-context/](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
securityContext: {}
podSecurityContext: {}
# -- Cache root folder
cacheMountPath: /cache
service:
# -- Service annotations
annotations:
io.cilium/global-service: "true"
# -- Service labels
labels: {}
# -- Service ClusterIP
clusterIP: ""
# -- Service External IPs. Ref: [https://kubernetes.io/docs/user-guide/services/#external-ips](https://kubernetes.io/docs/user-guide/services/#external-ips)
externalIPs: []
# -- Extra service ports
extraServicePorts: []
# -- Service load balacner IP
loadBalancerIP: ""
# -- Load balancer source range
loadBalancerSourceRanges: []
# -- Service port
servicePort: 8481
# -- Target port
targetPort: http
# -- Service type
type: ClusterIP
ingress:
# -- Enable deployment of ingress for vmselect component
enabled: true
# -- Ingress annotations
annotations:
nginx.ingress.kubernetes.io/force-ssl-redirect: "false"
nginx.ingress.kubernetes.io/ssl-redirect: "false"
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: 'true'
ingressClassName: contour-internal-0
extraLabels: {}
# -- Array of host objects
hosts:
- name: vmselect-datascience.prd.meesho.int
path: /
port: http
# -- Array of TLS objects
tls: []
# - secretName: vmselect-ingress-tls
# hosts:
# - vmselect.local
# 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
# -- pathType is only for k8s >= 1.1=
pathType: Prefix
statefulSet:
# -- Deploy StatefulSet instead of Deployment for vmselect. Useful if you want to keep cache data.
enabled: false
# -- Deploy order policy for StatefulSet pods
podManagementPolicy: OrderedReady
## Headless service for statefulset
service:
# -- Headless service annotations
annotations: {}
# -- Headless service labels
labels: {}
# -- Headless service port
servicePort: 8481
persistentVolume:
# -- Create/use Persistent Volume Claim for vmselect component. Empty dir if false. If true, vmselect will create/use a Persistent Volume Claim
enabled: false
# -- Array of access mode. Must match those of existing PV or dynamic provisioner. Ref: [http://kubernetes.io/docs/user-guide/persistent-volumes/](http://kubernetes.io/docs/user-guide/persistent-volumes/)
accessModes:
- ReadWriteOnce
# -- Persistent volume annotations
annotations: {}
# -- Persistent volume labels
labels: {}
# -- Existing Claim name. Requires vmselect.persistentVolume.enabled: true. If defined, PVC must be created manually before volume will be bound
existingClaim: ""
## Vmselect data Persistent Volume mount root path
##
# -- Size of the volume. Better to set the same as resource limit memory property
size: 2Gi
# -- Mount subpath
subPath: ""
serviceMonitor:
# -- Enable deployment of Service Monitor for vmselect component. This is Prometheus operator object
enabled: false
# -- Target namespace of ServiceMonitor manifest
namespace: ""
# -- Service Monitor labels
extraLabels: {}
# -- Service Monitor annotations
annotations: {}
# Commented. Prometheus scare interval for vmselect component
# interval: 15s
# Commented. Prometheus pre-scrape timeout for vmselect component
# scrapeTimeout: 5s
# -- Commented. HTTP scheme to use for scraping.
# scheme: https
# -- Commented. TLS configuration to use when scraping the endpoint
# tlsConfig:
# insecureSkipVerify: true
# -- Service Monitor relabelings
relabelings: []
@@ -0,0 +1,316 @@
vminsert:
enabled: false
vmselect:
enabled: false
serviceAccount:
create: true
# name:
extraLabels: {}
annotations:
eks.amazonaws.com/role-arn: arn:aws:iam::847438129436:role/eks-s3-vmbackup-role
# mount API token to pod directly
automountToken: true
dedicatedValue: false
# schedulerName: default-scheduler
vmstorage:
# -- Enable deployment of vmstorage component. StatefulSet is used
enabled: true
# -- vmstorage container name
name: vmstorage
image:
# -- Image repository
repository: asia-south1-docker.pkg.dev/meesho-devops-admin-0622/admin/sre/vmstorage
# -- Image tag
tag: v1.93.7-cluster
# -- Image pull policy
pullPolicy: IfNotPresent
# -- Name of Priority Class
priorityClassName: ""
# -- Overrides the full name of vmstorage component
fullnameOverride: vmstorage-datascience-prd
automountServiceAccountToken: true
# -- Additional environment variables (ex.: secret tokens, flags) https://github.com/VictoriaMetrics/VictoriaMetrics#environment-variables
env: []
# -- Data retention period. Supported values 1w, 1d, number without measurement means month, e.g. 2 = 2month
retentionPeriod: 90d
# Additional vmstorage container arguments. Extra command line arguments for vmstorage component
extraArgs:
envflag.enable: "true"
envflag.prefix: VM_
loggerFormat: json
search.maxUniqueTimeseries: "30000000"
dedup.minScrapeInterval: 60s
loggerTimezone: "Asia/Kolkata"
# Additional hostPath mounts
extraHostPathMounts:
[]
# - name: certs-dir
# mountPath: /etc/kubernetes/certs
# subPath: ""
# hostPath: /etc/kubernetes/certs
# readOnly: true
# Extra Volumes for the pod
extraVolumes:
[]
# - name: example
# configMap:
# name: example
# Extra Volume Mounts for the container
extraVolumeMounts:
[]
# - name: example
# mountPath: /example
extraContainers:
[]
# - name: config-reloader
# image: reloader-image
extraSecretMounts:
[]
# - name: secret
# mountPath: /etc/credentials
# subPath: ""
# readOnly: true
initContainers:
[]
# - name: vmrestore
# image: victoriametrics/vmrestore:latest
# volumeMounts:
# - mountPath: /storage
# name: vmstorage-volume
# - mountPath: /etc/vm/creds
# name: secret-remote-storage-keys
# readOnly: true
# args:
# - -storageDataPath=/storage
# - -src=s3://your_bucket/folder/latest
# - -credsFilePath=/etc/vm/creds/credentials
# -- See `kubectl explain poddisruptionbudget.spec` for more. Ref: [https://kubernetes.io/docs/tasks/run-application/configure-pdb/](https://kubernetes.io/docs/tasks/run-application/configure-pdb/)
podDisruptionBudget:
enabled: false
# minAvailable: 1
# maxUnavailable: 1
labels: {}
# -- Array of tolerations object. Node tolerations for server scheduling to nodes with taints. Ref: [https://kubernetes.io/docs/concepts/configuration/assign-pod-node/](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/)
##
tolerations:
- key: "cloud.google.com/compute-class"
operator: "Equal"
value: "vmstorage-sale-24aug"
effect: "NoSchedule"
# -- Pod's node selector. Ref: [https://kubernetes.io/docs/user-guide/node-selection/](https://kubernetes.io/docs/user-guide/node-selection/)
nodeSelector:
cloud.google.com/compute-class: "vmstorage-sale-24aug"
# -- Pod affinity
affinity: {}
topologySpreadConstraints:
- maxSkew: 1
topologyKey: topology.kubernetes.io/zone
whenUnsatisfiable: ScheduleAnyway
labelSelector:
matchLabels:
type: vmstorage
- maxSkew: 1
topologyKey: kubernetes.io/hostname
whenUnsatisfiable: DoNotSchedule
labelSelector:
matchLabels:
type: vmstorage
## Use an alternate scheduler, e.g. "stork".
## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/
##
# schedulerName:
persistentVolume:
# -- Create/use Persistent Volume Claim for vmstorage component. Empty dir if false. If true, vmstorage will create/use a Persistent Volume Claim
enabled: true
# -- Array of access modes. Must match those of existing PV or dynamic provisioner. Ref: [http://kubernetes.io/docs/user-guide/persistent-volumes/](http://kubernetes.io/docs/user-guide/persistent-volumes/)
accessModes:
- ReadWriteOnce
# -- Persistent volume annotations
annotations: {}
# -- Persistent volume labels
labels: {}
# -- Storage class name. Will be empty if not setted
storageClass: pd-standard-retain
# -- Existing Claim name. Requires vmstorage.persistentVolume.enabled: true. If defined, PVC must be created manually before volume will be bound
existingClaim: ""
# -- Data root path. Vmstorage data Persistent Volume mount root path
mountPath: /storage
# -- Size of the volume. Better to set the same as resource limit memory property
size: 250Gi
# -- Mount subpath
subPath: ""
# -- Pod's annotations
podAnnotations:
prometheus.io/port: "8482"
prometheus.io/scrape: "true"
annotations:
prometheus.io/port: "8482"
prometheus.io/scrape: "true"
extraLabels:
bu: "datascience"
team: "datascience-sre"
service: "vmstorage-datascience-prd"
env: "prd"
priority: "p0"
type: "vmstorage"
# arch: "arm64"
# runpod: "ondemand"
# -- Count of vmstorage pods
replicaCount: 5
# -- Container workdir
containerWorkingDir: ""
# -- Deploy order policy for StatefulSet pods
podManagementPolicy: OrderedReady
# -- Resource object. Ref: [https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/)
resources:
# limits:
# cpu: 500m
# memory: 512Mi
requests:
cpu: 24
memory: 330Gi
# -- Pod's security context. Ref: [https://kubernetes.io/docs/tasks/configure-pod-container/security-context/](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/)
securityContext: {}
podSecurityContext: {}
service:
# -- Service annotations
annotations: {}
# -- Service labels
labels: {}
# -- Service port
servicePort: 8482
# -- Port for accepting connections from vminsert
vminsertPort: 8400
# -- Port for accepting connections from vmstorage
vmstoragePort: 8401
# -- Extra service ports
extraServicePorts: []
# -- Pod's termination grace period in seconds
terminationGracePeriodSeconds: 60
probe:
readiness:
httpGet:
path: /health
port: http
initialDelaySeconds: 5
periodSeconds: 15
timeoutSeconds: 5
failureThreshold: 3
liveness:
tcpSocket:
port: http
initialDelaySeconds: 30
periodSeconds: 30
timeoutSeconds: 5
failureThreshold: 10
vmbackupmanager:
# -- enable automatic creation of backup via vmbackupmanager. vmbackupmanager is part of Enterprise packages
enable: false
# -- should be true and means that you have the legal right to run a backup manager
# that can either be a signed contract or an email with confirmation to run the service in a trial period
# # https://victoriametrics.com/legal/eula/
eula: true
image:
# -- vmbackupmanager image repository
repository: asia-south1-docker.pkg.dev/meesho-devops-admin-0622/admin/sre/vmbackupmanager
# -- vmbackupmanager image tag
tag: v1.93.7-cluster
# -- disable hourly backups
disableHourly: true
# -- disable daily backups
disableDaily: false
# -- disable weekly backups
disableWeekly: true
# -- disable monthly backups
disableMonthly: true
# -- backup destination at S3, GCS or local filesystem. Pod name will be included to path!
destination: "s3://prd-datascience-vmbackup"
# -- backups' retention settings
retention:
# -- keep last N hourly backups. 0 means delete all existing hourly backups. Specify -1 to turn off
keepLastHourly: 0
# -- keep last N daily backups. 0 means delete all existing daily backups. Specify -1 to turn off
keepLastDaily: 30
# -- keep last N weekly backups. 0 means delete all existing weekly backups. Specify -1 to turn off
keepLastWeekly: 0
# -- keep last N monthly backups. 0 means delete all existing monthly backups. Specify -1 to turn off
keepLastMonthly: 0
extraArgs:
envflag.enable: "true"
envflag.prefix: VM_
loggerFormat: json
concurrency: 15
loggerTimezone: "Asia/Kolkata"
# -- Allows to enable restore options for pod.
# Read more: https://docs.victoriametrics.com/vmbackupmanager.html#restore-commands
restore:
onStart:
enabled: false
resources: {}
# -- Additional environment variables (ex.: secret tokens, flags) https://github.com/VictoriaMetrics/VictoriaMetrics#environment-variables
env: []
readinessProbe:
httpGet:
path: /health
port: manager-http
initialDelaySeconds: 5
periodSeconds: 15
timeoutSeconds: 5
failureThreshold: 3
livenessProbe:
tcpSocket:
port: manager-http
initialDelaySeconds: 30
periodSeconds: 30
timeoutSeconds: 5
failureThreshold: 10
extraSecretMounts:
[]
# - name: secret
# mountPath: /etc/credentials
# subPath: ""
# readOnly: true
serviceMonitor:
# -- Enable deployment of Service Monitor for vmstorage component. This is Prometheus operator object
enabled: false
# -- Target namespace of ServiceMonitor manifest
namespace: ""
# -- Service Monitor labels
extraLabels: {}
# -- Service Monitor annotations
annotations: {}
# Commented. Prometheus scare interval for vmstorage component
# interval: 15s
# Commented. Prometheus pre-scrape timeout for vmstorage component
# scrapeTimeout: 5s
# -- Commented. HTTP scheme to use for scraping.
# scheme: https
# -- Commented. TLS configuration to use when scraping the endpoint
# tlsConfig:
# insecureSkipVerify: true
# -- Service Monitor relabelings
relabelings: []
@@ -0,0 +1,485 @@
# -- Meesho orginazation specific fields for victoria-metrics-agent chart.
custom:
configFileFolderPath: "configmap"
scrapeConfigFileName: "datascience-scrape.yaml"
# Default values for victoria-metrics-agent.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
global:
# -- Image pull secrets, that can be shared across multiple helm charts
imagePullSecrets: []
image:
# -- Image registry, that can be shared across multiple helm charts
registry: ""
# -- Openshift security context compatibility configuration
compatibility:
openshift:
adaptSecurityContext: "auto"
cluster:
# -- K8s cluster domain suffix, uses for building storage pods' FQDN. Details are [here](https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/)
dnsDomain: cluster.local.
# -- Replica count
replicaCount: 2
# -- Specify pod lifecycle
lifecycle: {}
# -- Use an alternate scheduler, e.g. "stork". Check details [here](https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/)
schedulerName: ""
# -- VMAgent mode: daemonSet, deployment, statefulSet
mode: deployment
# -- [K8s DaemonSet](https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/) specific variables
daemonSet:
spec: {}
# -- [K8s Deployment](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/) specific variables
deployment:
spec:
minReadySeconds: 1200
progressDeadlineSeconds: 1800
# -- Deployment strategy. Check [here](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy) for details
strategy: {}
# rollingUpdate:
# maxSurge: 25%
# maxUnavailable: 25%
# type: RollingUpdate
# -- [K8s StatefulSet](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/) specific variables
statefulSet:
# -- create cluster of vmagents. Check [here](https://docs.victoriametrics.com/victoriametrics/vmagent/#scraping-big-number-of-targets)
# available since [v1.77.2](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/tag/v1.77.2)
clusterMode: true
# -- replication factor for vmagent in cluster mode
replicationFactor: 1
spec:
# -- StatefulSet update strategy. Check [here](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies) for details.
updateStrategy: {}
# type: RollingUpdate
image:
# -- Image registry
registry: ""
# -- Image repository
repository: asia-south1-docker.pkg.dev/meesho-devops-admin-0622/admin/sre/vmagent
# -- Image tag, set to `Chart.AppVersion` by default
tag: v1.133.0 # rewrites Chart.AppVersion
# -- Variant of the image to use.
# e.g. enterprise, scratch
variant: ""
# -- Image pull policy
pullPolicy: IfNotPresent
# -- Image pull secrets
imagePullSecrets: []
# -- Add additional DNS entries to pods hosts file. Check [official documentation](https://kubernetes.io/docs/tasks/network/customize-hosts-file-for-pods/)
hostAliases: []
# - ip: 192.168.1.1
# hostNames:
# - test.example.com
# - another.example.net
# -- Override chart name
nameOverride: ""
# -- Override resources fullname
fullnameOverride: "vm-agent-datascience-prd"
# -- Container working directory
containerWorkingDir: "/"
rbac:
# -- Enables Role/RoleBinding creation
create: true
# -- Role/RoleBinding annotations
annotations: {}
# -- Role/RoleBinding labels
extraLabels: {}
# -- If true and `rbac.enabled`, will deploy a Role/RoleBinding instead of a ClusterRole/ClusterRoleBinding
namespaced: false
# -- additional rules for a role
extraRules: []
serviceAccount:
# -- Specifies whether a service account should be created
create: true
# -- Annotations to add to the service account
annotations: {
iam.gke.io/gcp-service-account: sa-dsci-sre-vmagnt-prd-mds@meesho-datascience-prd-0622.iam.gserviceaccount.com
}
# -- The name of the service account to use.
# If not set and create is true, a name is generated using the fullname template
name:
# -- mount API token to pod directly
automountToken: true
# -- See `kubectl explain poddisruptionbudget.spec` for more or check [official documentation](https://kubernetes.io/docs/tasks/run-application/configure-pdb/)
podDisruptionBudget:
enabled: false
# minAvailable: 1
# maxUnavailable: 1
labels: {}
# -- Generates `remoteWrite.*` flags and config maps with value content for values, that are of type list of map.
# Each item should contain `url` param to pass validation.
remoteWrite:
- url: http://vm-insert-datascience-prd.victoriametrics.svc.cluster.local:8480/insert/multitenant/prometheus/api/v1/write
disableOnDiskQueue: false
dropSamplesOnOverload: false
- url: http://prd-census-server-datascience.prd-census-server-datascience.svc.cluster.local/api/v1/write
disableOnDiskQueue: true
dropSamplesOnOverload: true
# urlRelabelConfig:
# - action: keep
# source_labels: [env]
# regex: "dev"
# -- VMAgent extra command line arguments
extraArgs:
envflag.enable: true
envflag.prefix: VM_
loggerFormat: json
httpListenAddr: :8429
promscrape.config.strictParse: false # default is true
promscrape.maxScrapeSize: 1000000000 # default is 167772160
promscrape.minResponseSizeForStreamParse: 1000000
loggerTimezone: "Asia/Kolkata"
# promscrape.suppressScrapeErrors: true # default is false
# Uncomment and specify the port if you want to support any of the protocols:
# https://docs.victoriametrics.com/victoriametrics/vmagent/#features
# graphiteListenAddr: ":2003"
# influxListenAddr: ":8189"
# opentsdbHTTPListenAddr: ":4242"
# opentsdbListenAddr: ":4242"
# -- Additional environment variables (ex.: secret tokens, flags). Check [here](https://docs.victoriametrics.com/victoriametrics/#environment-variables) for more details.
env:
- name: GOGC
value: "200"
# - name: VM_remoteWrite_basicAuth_password
# valueFrom:
# secretKeyRef:
# name: auth-secret
# key: password
# -- Specify alternative source for env variables
envFrom:
[]
#- configMapRef:
# name: special-config
# -- Extra labels for Deployment and Statefulset
extraLabels:
bu: "datascience"
team: "datascience-sre"
service: "vm-agent-datascience-prd"
env: "prd"
priority: "p0"
type: "vmagent"
# -- Extra labels for Pods only
podLabels:
bu: "datascience"
team: "datascience-sre"
service: "vm-agent-datascience-prd"
env: "prd"
priority: "p0"
type: "vmagent"
# -- Extra selector labels common for pod and service
selectorLabels: {}
# -- Additional hostPath mounts
extraHostPathMounts:
[]
# - name: certs-dir
# mountPath: /etc/kubernetes/certs
# subPath: ""
# hostPath: /etc/kubernetes/certs
# readOnly: true
# -- Extra Volumes for the pod
extraVolumes:
[]
# - name: example
# configMap:
# name: example
# -- Extra Volume Mounts for the container
extraVolumeMounts:
[]
# - name: example
# mountPath: /example
# -- Extra containers to run in a pod with vmagent
extraContainers: []
# - name: config-reloader
# image: reloader-image
# -- Init containers for vmagent
initContainers:
[]
# - name: example
# image: example-image
# -- Security context to be added to pod
podSecurityContext:
enabled: true
# fsGroup: 2000
# -- Security context to be added to pod's containers
securityContext:
enabled: true
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
# -- Enable agent service
enabled: true
# -- Service annotations
annotations: {}
# -- Service labels
extraLabels: {}
# -- Service ClusterIP
clusterIP: ""
# -- Service external IPs. Check [here](https://kubernetes.io/docs/concepts/services-networking/service/#external-ips) for details
externalIPs: []
# -- Service load balancer IP
loadBalancerIP: ""
# -- Load balancer source range
loadBalancerSourceRanges: []
# -- Service port
servicePort: 8429
# -- Target port
targetPort: http
# nodePort: 30000
# -- Service type
type: ClusterIP
# -- Service IP family policy. Check [here](https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services) for details.
ipFamilyPolicy: ""
# -- List of service IP families. Check [here](https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services) for details.
ipFamilies: []
# -- Service external traffic policy. Check [here](https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip) for details
externalTrafficPolicy: ""
# -- Service internal traffic policy. Check [here](https://kubernetes.io/docs/concepts/services-networking/service/#internal-traffic-policy) for details
internalTrafficPolicy: ""
# -- Health check node port for a service. Check [here](https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip) for details
healthCheckNodePort: ""
# -- Traffic Distribution. Check [Traffic distribution](https://kubernetes.io/docs/concepts/services-networking/service/#traffic-distribution)
trafficDistribution: ""
# -- Extra selector labels common for service only
selectorLabels: {}
ingress:
# -- Enable deployment of ingress for agent
enabled: false
# -- Ingress annotations
annotations:
nginx.ingress.kubernetes.io/force-ssl-redirect: "false"
nginx.ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/ssl-redirect: "false"
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: 'true'
# -- Ingress extra labels
extraLabels: {}
# -- Array of host objects
hosts:
- name: vm-agent-datascience-prd.meeshogcp.in
path:
- /
port: http
# -- Array of TLS objects
tls: []
# - secretName: vmagent-ingress-tls
# hosts:
# - vmagent.local
# -- Ingress controller class name
ingressClassName: "nginx-internal"
# -- Ingress path type
pathType: Prefix
# -- Resource object. Details are [here](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/)
resources:
requests:
cpu: 70
memory: 135Gi
# -- Annotations to be added to the deployment
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8429"
# -- Annotations to be added to pod
podAnnotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8429"
# -- Pod's node selector. Details are [here](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector)
nodeSelector:
cloud.google.com/compute-class: "vmagent-n4d"
# -- Node tolerations for server scheduling to nodes with taints. Details are [here](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/)
tolerations:
- key: "cloud.google.com/compute-class"
operator: "Equal"
value: "vmagent-n4d"
effect: "NoSchedule"
# -- Pod topologySpreadConstraints
topologySpreadConstraints:
- maxSkew: 1
topologyKey: topology.kubernetes.io/zone
whenUnsatisfiable: ScheduleAnyway
labelSelector:
matchLabels:
type: vmagent
- maxSkew: 1
topologyKey: kubernetes.io/hostname
whenUnsatisfiable: DoNotSchedule
labelSelector:
matchLabels:
type: vmagent
# -- Pod affinity
affinity: {}
# -- VMAgent [scraping configuration](https://docs.victoriametrics.com/victoriametrics/vmagent/#how-to-collect-metrics-in-prometheus-format)
# use existing configmap if specified
# otherwise .config values will be used
configMap: "vm-agent-datascience-prd"
# -- Priority class to be assigned to the pod(s)
priorityClassName: ""
# -- Enable the host network
hostNetwork: false
serviceMonitor:
# -- Enable deployment of Service Monitor for server component. This is Prometheus operator object
enabled: false
# -- Service Monitor labels
extraLabels: {}
# -- Service Monitor annotations
annotations: {}
# -- Service Monitor relabelings
relabelings: []
# -- Basic auth params for Service Monitor
basicAuth: {}
# -- Service Monitor metricRelabelings
metricRelabelings: []
# -- Service Monitor targetPort
targetPort: http
# interval: 15s
# scrapeTimeout: 5s
# -- Commented. HTTP scheme to use for scraping.
# scheme: https
# -- Commented. TLS configuration to use when scraping the endpoint
# tlsConfig:
# insecureSkipVerify: true
# -- Empty dir configuration for a case, when persistence is disabled
emptyDir: {}
persistentVolume:
# -- Create/use Persistent Volume Claim for server component. Empty dir if false
enabled: false
# -- Override Persistent Volume Claim name
name: ""
# -- StorageClass to use for persistent volume. Requires server.persistentVolume.enabled: true. If defined, PVC created automatically
storageClassName: ""
# -- Array of access modes. Must match those of existing PV or dynamic provisioner. Details are [here](https://kubernetes.io/docs/concepts/storage/persistent-volumes/)
accessModes:
- ReadWriteOnce
# -- Size of the volume. Should be calculated based on the logs you send and retention policy you set.
size: 10Gi
# -- Persistent volume annotations
annotations: {}
# -- Persistent volume additional labels
extraLabels: {}
# -- Existing Claim name. If defined, PVC must be created manually before volume will be bound
existingClaim: ""
# -- Bind Persistent Volume by labels. Must match all labels of targeted PV.
matchLabels: {}
# -- Horizontal Pod Autoscaling.
# Note that it is not intended to be used for vmagents which perform scraping.
# In order to scale scraping vmagents check [here](https://docs.victoriametrics.com/victoriametrics/vmagent/#scraping-big-number-of-targets)
horizontalPodAutoscaling:
# -- Use HPA for vmagent
enabled: false
# -- Maximum replicas for HPA to use to to scale vmagent
maxReplicas: 10
# -- Minimum replicas for HPA to use to scale vmagent
minReplicas: 1
# -- Metric for HPA to use to scale vmagent
metrics: []
# -- VMAgent scrape configuration
config: {}
# -- Extra scrape configs that will be appended to `config`
extraScrapeConfigs: []
probe:
# -- Readiness probe
readiness:
httpGet: {}
initialDelaySeconds: 5
periodSeconds: 15
# -- Liveness probe
liveness:
tcpSocket: {}
initialDelaySeconds: 5
periodSeconds: 15
timeoutSeconds: 5
# -- Startup probe
startup: {}
# -- Add extra specs dynamically to this chart
extraObjects: []
allowedMetricsEndpoints:
- /metrics
# -- Enterprise license key configuration for VictoriaMetrics enterprise.
# Required only for VictoriaMetrics enterprise. Check docs [here](https://docs.victoriametrics.com/victoriametrics/enterprise/),
# for more information, visit [site](https://victoriametrics.com/products/enterprise/).
# Request a trial license [here](https://victoriametrics.com/products/enterprise/trial/)
# Supported starting from VictoriaMetrics v1.94.0
license:
# -- License key
key: ""
# -- Use existing secret with license key
secret:
# -- Existing secret name
name: ""
# -- Key in secret with license key
key: ""
@@ -0,0 +1,411 @@
# Default values for victoria-metrics.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
global:
# -- Image pull secrets, that can be shared across multiple helm charts
imagePullSecrets: []
image:
# -- Image registry, that can be shared across multiple helm charts
registry: ""
vm:
# -- Image tag for all vm charts
tag: ""
# -- Openshift security context compatibility configuration
compatibility:
openshift:
adaptSecurityContext: "auto"
# -- k8s cluster domain suffix, uses for building storage pods' FQDN. Details are [here](https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/)
cluster:
dnsDomain: cluster.local.
# -- Print information after deployment
printNotes: true
# -- use SRV discovery for storageNode and selectNode flags for enterprise version
autoDiscovery: false
common:
# -- common for all components image configuration
image:
tag: ""
serviceAccount:
# -- Specifies whether a service account should be created
create: true
# -- The name of the service account to use.
# If not set and create is true, a name is generated using the fullname template
name:
# -- Service account labels
extraLabels: {}
# -- Service account annotations
annotations: {}
# -- mount API token to pod directly
automountToken: true
# -- Override chart name
nameOverride: ""
extraSecrets:
[]
# - name: secret-remote-storage-keys
# annotations: []
# labels: []
# data: |
# credentials: b64_encoded_str
# -- Add extra specs dynamically to this chart
extraObjects: []
vmselect:
# -- Enable deployment of vmselect component. Can be deployed as Deployment(default) or StatefulSet
enabled: false
vminsert:
# -- Enable deployment of vminsert component. Deployment is used
enabled: true
# -- IDs of vmstorage nodes to exclude from writing
excludeStorageIDs: []
# -- Override default `app` label name
name: vminsert
# -- VMInsert strategy
strategy: {}
# rollingUpdate:
# maxSurge: 25%
# maxUnavailable: 25%
# type: RollingUpdate
image:
# -- Image registry
registry: ""
# -- Image repository
repository: asia-south1-docker.pkg.dev/meesho-devops-admin-0622/admin/sre/vminsert
# -- Image tag
# override Chart.AppVersion
tag: v1.107.0-cluster
# -- Variant of the image to use.
# e.g. cluster, enterprise-cluster
variant: cluster
# -- Image pull policy
pullPolicy: IfNotPresent
# -- Specify pod lifecycle
lifecycle: {}
ports:
# -- VMInsert http port name
name: "http"
# -- Name of Priority Class
priorityClassName: ""
# -- Overrides the full name of vminsert component
fullnameOverride: vm-insert-datascience-prd
# -- Extra command line arguments for vminsert component
extraArgs:
envflag.enable: true
envflag.prefix: VM_
loggerFormat: json
httpListenAddr: :8480
maxLabelsPerTimeseries: 40
replicationFactor: 1
loggerTimezone: "Asia/Kolkata"
storageNode:
- "vm-storage-datascience-prd-0.vm-storage-datascience-prd.victoriametrics.svc:8400"
- "vm-storage-datascience-prd-1.vm-storage-datascience-prd.victoriametrics.svc:8400"
- "vm-storage-datascience-prd-2.vm-storage-datascience-prd.victoriametrics.svc:8400"
- "vm-storage-datascience-prd-3.vm-storage-datascience-prd.victoriametrics.svc:8400"
- "vm-storage-datascience-prd-4.vm-storage-datascience-prd.victoriametrics.svc:8400"
# -- StatefulSet/Deployment annotations
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8480"
# -- StatefulSet/Deployment additional labels
extraLabels:
bu: "datascience"
team: "datascience-sre"
service: "vm-insert-datascience-prd"
env: "prd"
priority: "p0"
type: "vminsert"
# -- Pod's additional labels
podLabels:
bu: "datascience"
team: "datascience-sre"
service: "vm-insert-datascience-prd"
env: "prd"
priority: "p0"
type: "vminsert"
terminationGracePeriodSeconds: 30
# -- Additional environment variables (ex.: secret tokens, flags). Check [here](https://docs.victoriametrics.com/victoriametrics/#environment-variables) for details.
env: []
# -- Specify alternative source for env variables
envFrom: []
#- configMapRef:
# name: special-config
# -- Suppress rendering `--storageNode` FQDNs based on `vmstorage.replicaCount` value. If true suppress rendering `--storageNodes`, they can be re-defined in extraArgs
suppressStorageFQDNsRender: false
# -- Readiness & Liveness probes
probe:
# -- VMInsert readiness probe
readiness:
httpGet: {}
initialDelaySeconds: 5
periodSeconds: 15
timeoutSeconds: 5
failureThreshold: 3
# -- VMInsert liveness probe
liveness:
tcpSocket: {}
initialDelaySeconds: 5
periodSeconds: 15
timeoutSeconds: 5
failureThreshold: 3
# -- VMInsert startup probe
startup: {}
# -- Relabel configuration
relabel:
enabled: false
config: []
# -- Use existing configmap if specified
# otherwise .config values will be used. Relabel config **should** reside under `relabel.yml` key
configMap: ""
# Horizontal Pod Autoscaling
horizontalPodAutoscaler:
# -- Use HPA for vminsert component
enabled: true
# -- Maximum replicas for HPA to use to to scale the vminsert component
maxReplicas: 30
# -- Minimum replicas for HPA to use to scale the vminsert component
minReplicas: 7
# -- Metric for HPA to use to scale the vminsert component
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 40
# -- Behavior settings for scaling by the HPA
behavior: {}
# -- Extra Volumes for the pod
extraVolumes:
[]
# - name: example
# configMap:
# name: example
# -- Extra Volume Mounts for the container
extraVolumeMounts:
[]
# - name: example
# mountPath: /example
# -- Extra containers to run in a pod with vminsert
extraContainers:
[]
# - name: config-reloader
# image: reloader-image
# -- Init containers for vminsert
initContainers:
[]
# - name: example
# image: example-image
# -- See `kubectl explain poddisruptionbudget.spec` for more. Details are [here](https://kubernetes.io/docs/tasks/run-application/configure-pdb/)
podDisruptionBudget:
enabled: false
# minAvailable: 1
# maxUnavailable: 1
labels: {}
# -- Array of tolerations object. Details are [here](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/)
tolerations:
- key: "cloud.google.com/compute-class"
operator: "Equal"
value: "vminsert-mds"
effect: "NoSchedule"
# -- Pod's node selector. Details are [here](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector)
nodeSelector:
cloud.google.com/compute-class: "vminsert-mds"
# -- Pod affinity
affinity: {}
# -- Pod topologySpreadConstraints
topologySpreadConstraints:
- maxSkew: 1
topologyKey: topology.kubernetes.io/zone
whenUnsatisfiable: ScheduleAnyway
labelSelector:
matchLabels:
type: vminsert
- maxSkew: 1
topologyKey: kubernetes.io/hostname
whenUnsatisfiable: DoNotSchedule
labelSelector:
matchLabels:
type: vminsert
# -- Pod's annotations
podAnnotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8480"
# -- Count of vminsert pods
replicaCount: 2
# -- Container workdir
containerWorkingDir: ""
# -- Resource object. Details are [here](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/)
resources:
# limits:
# cpu: 50m
# memory: 64Mi
requests:
cpu: 14
memory: 10Gi
# -- Pod's security context. Details are [here](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/)
securityContext:
enabled: false
# -- Pod's security context. Details are [here](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/)
podSecurityContext:
enabled: false
service:
# -- Create VMInsert service
enabled: true
# -- Service annotations
annotations: {}
# -- Service labels
labels: {}
# -- Service ClusterIP
clusterIP: ""
# -- Service external IPs. Details are [here]( https://kubernetes.io/docs/concepts/services-networking/service/#external-ips)
externalIPs: []
# -- Extra service ports
extraPorts: []
# -- Service load balancer IP
loadBalancerIP: ""
# -- Load balancer source range
loadBalancerSourceRanges: []
# -- Service port
servicePort: 8480
# -- Target port
targetPort: http
# -- Service type
type: ClusterIP
# -- Enable UDP port. used if you have `spec.opentsdbListenAddr` specified
# Make sure that service is not type `LoadBalancer`, as it requires `MixedProtocolLBService` feature gate. Check [here](https://kubernetes.io/docs/reference/command-line-tools-reference/feature-gates/) for details
udp: false
# -- Health check node port for a service. Check [here](https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip) for details
healthCheckNodePort: ""
# -- Service external traffic policy. Check [here](https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip) for details
externalTrafficPolicy: ""
# -- Service IP family policy. Check [here](https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services) for details.
ipFamilyPolicy: ""
# -- List of service IP families. Check [here](https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services) for details.
ipFamilies: []
# -- Traffic Distribution. Check [Traffic distribution](https://kubernetes.io/docs/concepts/services-networking/service/#traffic-distribution)
trafficDistribution: ""
ingress:
# -- Enable deployment of ingress for vminsert component
enabled: false
# -- Ingress annotations
annotations:
nginx.ingress.kubernetes.io/force-ssl-redirect: "false"
nginx.ingress.kubernetes.io/ssl-redirect: "false"
# -- Ingress extra labels
extraLabels: {}
# -- Array of host objects
hosts:
- name: vm-insert-datascience-prd.meeshogcp.in
path: /
port: http
# -- Array of TLS objects
tls: []
# - secretName: vminsert-ingress-tls
# hosts:
# - vminsert.local
# -- Ingress controller class name
ingressClassName: nginx-internal
# -- Ingress path type
pathType: Prefix
route:
# -- Enable deployment of HTTPRoute for insert component
enabled: false
# -- HTTPRoute annotations
annotations: {}
# -- HTTPRoute extra labels
labels: {}
# -- HTTPGateway objects refs
parentRefs: []
# -- Array of hostnames
hostnames: []
# -- Extra rules to prepend to route. This is useful when working with annotation based services.
extraRules: []
# -- Filters for a default rule in HTTPRoute
filters: []
# -- Matches for a default rule in HTTPRoute
matches:
- path:
type: PathPrefix
value: '{{ dig "extraArgs" "http.pathPrefix" "/insert" .Values.vminsert }}'
serviceMonitor:
# -- Enable deployment of Service Monitor for vminsert component. This is Prometheus operator object
enabled: false
# -- Target namespace of ServiceMonitor manifest
namespace: ""
# -- Service Monitor labels
extraLabels: {}
# -- Service Monitor annotations
annotations: {}
# -- Basic auth params for Service Monitor
basicAuth: {}
# Commented. Prometheus scare interval for vminsert component
# interval: 15s
# Commented. Prometheus pre-scrape timeout for vminsert component
# scrapeTimeout: 5s
# -- Commented. HTTP scheme to use for scraping.
# scheme: https
# -- Commented. TLS configuration to use when scraping the endpoint
# tlsConfig:
# insecureSkipVerify: true
# -- Service Monitor relabelings
relabelings: []
# -- Service Monitor metricRelabelings
metricRelabelings: []
vmauth:
# -- Enable deployment of vmauth component.
enabled: false
vmstorage:
# -- Enable deployment of vmstorage component. StatefulSet is used
enabled: false
# -- Enterprise license key configuration for VictoriaMetrics enterprise.
# Required only for VictoriaMetrics enterprise. Check docs [here](https://docs.victoriametrics.com/victoriametrics/enterprise/),
# for more information, visit [site](https://victoriametrics.com/products/enterprise/).
# Request a trial license [here](https://victoriametrics.com/products/enterprise/trial/)
# Supported starting from VictoriaMetrics v1.94.0
license:
# -- License key
key: ""
# -- Use existing secret with license key
secret:
# -- Existing secret name
name: ""
# -- Key in secret with license key
key: ""
@@ -0,0 +1,445 @@
# Default values for victoria-metrics.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
global:
# -- Image pull secrets, that can be shared across multiple helm charts
imagePullSecrets: []
image:
# -- Image registry, that can be shared across multiple helm charts
registry: ""
vm:
# -- Image tag for all vm charts
tag: ""
# -- Openshift security context compatibility configuration
compatibility:
openshift:
adaptSecurityContext: "auto"
# -- k8s cluster domain suffix, uses for building storage pods' FQDN. Details are [here](https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/)
cluster:
dnsDomain: cluster.local.
# -- Print information after deployment
printNotes: true
# -- use SRV discovery for storageNode and selectNode flags for enterprise version
autoDiscovery: false
common:
# -- common for all components image configuration
image:
tag: ""
serviceAccount:
# -- Specifies whether a service account should be created
create: true
# -- The name of the service account to use.
# If not set and create is true, a name is generated using the fullname template
name:
# -- Service account labels
extraLabels: {}
# -- Service account annotations
annotations: {}
# -- mount API token to pod directly
automountToken: true
# -- Override chart name
nameOverride: ""
extraSecrets:
[]
# - name: secret-remote-storage-keys
# annotations: []
# labels: []
# data: |
# credentials: b64_encoded_str
# -- Add extra specs dynamically to this chart
extraObjects: []
vmselect:
# -- Enable deployment of vmselect component. Can be deployed as Deployment(default) or StatefulSet
enabled: true
splitService: true
externalService:
enabled: true
name: vmselect-datascience-prd-proxy
# -- Override default `app` label name
clusternativeService:
enabled: false
name: ""
image:
# -- Image registry
registry: ""
# -- Image repository
repository: asia-south1-docker.pkg.dev/meesho-devops-admin-0622/admin/sre/vmselect
# override Chart.AppVersion
tag: v1.133.0-cluster
# -- Image pull policy
pullPolicy: IfNotPresent
# -- Variant of the image to use.
# e.g. cluster, enterprise-cluster
variant: cluster
# -- Specify pod lifecycle
lifecycle: {}
ports:
# -- VMSelect http port name
name: "http"
# -- Name of Priority Class
priorityClassName: ""
# -- Overrides the full name of vmselect component
fullnameOverride: vm-select-datascience-prd
# -- Suppress rendering `--storageNode` FQDNs based on `vmstorage.replicaCount` value. If true suppress rendering `--storageNodes`, they can be re-defined in extraArgs
suppressStorageFQDNsRender: false
# -- Pod's termination grace period in seconds
terminationGracePeriodSeconds: 60
# -- Extra command line arguments for vmselect component
extraArgs:
envflag.enable: true
envflag.prefix: VM_
loggerFormat: json
httpListenAddr: :8481
clusternativeListenAddr: ":8401"
dedup.minScrapeInterval: 60s
search.maxSamplesPerQuery: "1000000000000"
search.maxQueryDuration: 300s
search.maxQueueDuration: 60s
search.maxSeries: "10000000000"
search.maxExportSeries: "1000000000"
search.maxUniqueTimeseries: "1000000000000"
search.maxQueryLen: "1000000"
loggerTimezone: "Asia/Kolkata"
storageNode:
- "vm-storage-datascience-prd-0.vm-storage-datascience-prd.victoriametrics.svc:8401"
- "vm-storage-datascience-prd-1.vm-storage-datascience-prd.victoriametrics.svc:8401"
- "vm-storage-datascience-prd-2.vm-storage-datascience-prd.victoriametrics.svc:8401"
- "vm-storage-datascience-prd-3.vm-storage-datascience-prd.victoriametrics.svc:8401"
- "vm-storage-datascience-prd-4.vm-storage-datascience-prd.victoriametrics.svc:8401"
# -- StatefulSet/Deployment annotations
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8481"
# -- StatefulSet/Deployment additional labels
extraLabels:
bu: "datascience"
team: "datascience-sre"
service: "vm-select-datascience-prd"
env: "prd"
priority: "p0"
type: "vmselect"
# -- Pod's additional labels
podLabels:
bu: "datascience"
team: "datascience-sre"
service: "vm-select-datascience-prd"
env: "prd"
priority: "p0"
type: "vmselect"
# -- Additional environment variables (ex.: secret tokens, flags). Check [here](https://docs.victoriametrics.com/victoriametrics/#environment-variables) for details.
env: []
# -- Specify alternative source for env variables
envFrom: []
#- configMapRef:
# name: special-config
# -- Readiness & Liveness probes
probe:
# -- VMSelect readiness probe
readiness:
httpGet: {}
initialDelaySeconds: 5
periodSeconds: 15
timeoutSeconds: 5
failureThreshold: 3
# -- VMSelect liveness probe
liveness:
tcpSocket: {}
initialDelaySeconds: 5
periodSeconds: 15
timeoutSeconds: 5
failureThreshold: 3
# -- VMSelect startup probe
startup: {}
horizontalPodAutoscaler:
# -- Use HPA for vmselect component
enabled: true
# -- Maximum replicas for HPA to use to to scale the vmselect component
maxReplicas: 40
# -- Minimum replicas for HPA to use to scale the vmselect component
minReplicas: 10
# -- Metric for HPA to use to scale the vmselect component
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 40
# -- Behavior settings for scaling by the HPA
behavior: {}
# -- Additional hostPath mounts
extraHostPathMounts:
[]
# - name: certs-dir
# mountPath: /etc/kubernetes/certs
# subPath: ""
# hostPath: /etc/kubernetes/certs
# readOnly: true
# -- Extra Volumes for the pod
extraVolumes:
[]
# - name: example
# configMap:
# name: example
# -- Extra Volume Mounts for the container
extraVolumeMounts:
[]
# - name: example
# mountPath: /example
# -- Extra containers to run in a pod with vmselect
extraContainers:
[]
# - name: config-reloader
# image: reloader-image
# -- Init containers for vmselect
initContainers:
[]
# - name: example
# image: example-image
# -- See `kubectl explain poddisruptionbudget.spec` for more. Details are [here](https://kubernetes.io/docs/tasks/run-application/configure-pdb/)
podDisruptionBudget:
# -- See `kubectl explain poddisruptionbudget.spec` for more. Details are [here](https://kubernetes.io/docs/tasks/run-application/configure-pdb/)
enabled: true
minAvailable: 1
# maxUnavailable: 1
labels: {}
# -- Array of tolerations object. Details are [here](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/)
tolerations:
- key: "cloud.google.com/compute-class"
operator: "Equal"
value: "vmselect"
effect: "NoSchedule"
# -- Pod's node selector. Details are [here](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector)
nodeSelector:
cloud.google.com/compute-class: "vmselect"
# -- Pod affinity
affinity: {}
# -- Pod topologySpreadConstraints
topologySpreadConstraints:
- maxSkew: 1
topologyKey: topology.kubernetes.io/zone
whenUnsatisfiable: ScheduleAnyway
labelSelector:
matchLabels:
type: vmselect
- maxSkew: 1
topologyKey: kubernetes.io/hostname
whenUnsatisfiable: ScheduleAnyway
labelSelector:
matchLabels:
type: vmselect
# -- Pod's annotations
podAnnotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8481"
# -- Count of vmselect pods
replicaCount: 2
# -- Container workdir
containerWorkingDir: ""
# -- Resource object. Details are [here](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/)
resources:
# limits:
# cpu: 50m
# memory: 64Mi
requests:
cpu: 38
memory: 70Gi
# -- Pod's security context. Details are [here](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/)
securityContext:
enabled: false
# -- Pod's security context. Details are [here](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/)
podSecurityContext:
enabled: false
# -- Cache root folder
cacheMountPath: /cache
service:
# -- Create VMSelect service
enabled: true
# -- Service annotations
annotations: {}
# -- Service labels
labels: {}
# -- Service ClusterIP
clusterIP: ""
# -- Service external IPs. Details are [here](https://kubernetes.io/docs/concepts/services-networking/service/#external-ips)
externalIPs: []
# -- Extra service ports
extraPorts: []
# -- Service load balancer IP
loadBalancerIP: ""
# -- Load balancer source range
loadBalancerSourceRanges: []
# -- Service port
servicePort: 8481
# -- Target port
targetPort: http
# -- Service type
type: ClusterIP
# -- Health check node port for a service. Check [here](https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip) for details
healthCheckNodePort: ""
# -- Service external traffic policy. Check [here](https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip) for details
externalTrafficPolicy: ""
# -- Service IP family policy. Check [here](https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services) for details.
ipFamilyPolicy: ""
# -- List of service IP families. Check [here](https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services) for details.
ipFamilies: []
# -- Traffic Distribution. Check [Traffic distribution](https://kubernetes.io/docs/concepts/services-networking/service/#traffic-distribution)
trafficDistribution: ""
ingress:
# -- Enable deployment of ingress for vmselect component
enabled: false
# -- Ingress annotations
annotations: {}
# -- Ingress extra labels
extraLabels: {}
# -- Array of host objects
hosts:
- name: vm-select-datascience.prd.meesho.int
path: /
port: http
# -- Array of TLS objects
tls: []
# - secretName: vmselect-ingress-tls
# hosts:
# - vmselect.local
# -- Ingress controller class name
ingressClassName: contour-internal-0
# -- Ingress path type
pathType: Prefix
route:
# -- Enable deployment of HTTPRoute for select component
enabled: false
# -- HTTPRoute annotations
annotations: {}
# -- HTTPRoute extra labels
labels: {}
# -- HTTPGateway objects refs
parentRefs: []
# -- Array of hostnames
hostnames: []
# -- Extra rules to prepend to route. This is useful when working with annotation based services.
extraRules: []
# -- Filters for a default rule in HTTPRoute
filters: []
# -- Matches for a default rule in HTTPRoute
matches:
- path:
type: PathPrefix
value: '{{ dig "extraArgs" "http.pathPrefix" "/select" .Values.vmselect }}'
# -- vmselect mode: deployment, daemonSet
mode: deployment
# -- [K8s Deployment](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/) specific variables
deployment:
spec:
# -- VMSelect strategy
strategy: {}
# rollingUpdate:
# maxSurge: 25%
# maxUnavailable: 25%
# type: RollingUpdate
# -- [K8s StatefulSet](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/) specific variables
statefulSet:
enabled: false
spec:
# -- Deploy order policy for StatefulSet pods
podManagementPolicy: OrderedReady
# -- Empty dir configuration if persistence is disabled
emptyDir: {}
persistentVolume:
# -- Create/use Persistent Volume Claim for vmselect component. Empty dir if false. If true, vmselect will create/use a Persistent Volume Claim
enabled: false
# -- Override Persistent Volume Claim name
name: ""
# -- Array of access mode. Must match those of existing PV or dynamic provisioner. Details are [here](https://kubernetes.io/docs/concepts/storage/persistent-volumes/)
accessModes:
- ReadWriteOnce
# -- Persistent volume annotations
annotations: {}
# -- Persistent volume extra labels
extraLabels: {}
# -- Existing Claim name. Requires vmselect.persistentVolume.enabled: true. If defined, PVC must be created manually before volume will be bound
existingClaim: ""
# -- Size of the volume. Better to set the same as resource limit memory property
size: 2Gi
# -- Mount subpath
subPath: ""
serviceMonitor:
# -- Enable deployment of Service Monitor for vmselect component. This is Prometheus operator object
enabled: false
# -- Target namespace of ServiceMonitor manifest
namespace: ""
# -- Service Monitor labels
extraLabels: {}
# -- Service Monitor annotations
annotations: {}
# -- Basic auth params for Service Monitor
basicAuth: {}
# Commented. Prometheus scare interval for vmselect component
# interval: 15s
# Commented. Prometheus pre-scrape timeout for vmselect component
# scrapeTimeout: 5s
# -- Commented. HTTP scheme to use for scraping.
# scheme: https
# -- Commented. TLS configuration to use when scraping the endpoint
# tlsConfig:
# insecureSkipVerify: true
# -- Service Monitor relabelings
relabelings: []
# -- Service Monitor metricRelabelings
metricRelabelings: []
vminsert:
# -- Enable deployment of vminsert component. Deployment is used
enabled: false
vmauth:
# -- Enable deployment of vmauth component.
enabled: false
vmstorage:
# -- Enable deployment of vmstorage component. StatefulSet is used
enabled: false
@@ -0,0 +1,363 @@
# Default values for victoria-metrics.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
global:
# -- Image pull secrets, that can be shared across multiple helm charts
imagePullSecrets: []
image:
# -- Image registry, that can be shared across multiple helm charts
registry: ""
vm:
# -- Image tag for all vm charts
tag: ""
# -- Openshift security context compatibility configuration
compatibility:
openshift:
adaptSecurityContext: "auto"
# -- k8s cluster domain suffix, uses for building storage pods' FQDN. Details are [here](https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/)
cluster:
dnsDomain: cluster.local.
# -- Print information after deployment
printNotes: true
# -- use SRV discovery for storageNode and selectNode flags for enterprise version
autoDiscovery: false
common:
# -- common for all components image configuration
image:
tag: ""
serviceAccount:
# -- Specifies whether a service account should be created
create: true
# -- The name of the service account to use.
# If not set and create is true, a name is generated using the fullname template
name:
# -- Service account labels
extraLabels: {}
# -- Service account annotations
annotations: {}
# -- mount API token to pod directly
automountToken: true
# -- Override chart name
nameOverride: ""
extraSecrets:
[]
# - name: secret-remote-storage-keys
# annotations: []
# labels: []
# data: |
# credentials: b64_encoded_str
# -- Add extra specs dynamically to this chart
extraObjects: []
vmselect:
enabled: false
vminsert:
enabled: false
vmauth:
enabled: false
vmstorage:
# -- Enable deployment of vmstorage component. StatefulSet is used
enabled: true
# -- Override default `app` label name
name: vmstorage
image:
# -- Image registry
registry: ""
# -- Image repository
repository: asia-south1-docker.pkg.dev/meesho-devops-admin-0622/admin/sre/vmstorage
# -- Image tag
tag: v1.133.0-cluster
# -- Variant of the image to use. e.g. cluster, enterprise-cluster
variant: cluster
# -- Image pull policy
pullPolicy: IfNotPresent
# -- Specify pod lifecycle
lifecycle: {}
ports:
# -- VMStorage http port name
name: "http"
# -- Name of Priority Class
priorityClassName: ""
# -- Overrides the full name of vmstorage component
fullnameOverride: vm-storage-datascience-prd
# -- Additional environment variables (ex.: secret tokens, flags). Check https://docs.victoriametrics.com/victoriametrics/#environment-variables for details
env: []
# -- Specify alternative source for env variables
envFrom: []
# -- Data retention period. Possible units character: h(ours), d(ays), w(eeks), y(ears), if no unit character specified - month. The minimum retention period is 24h.
retentionPeriod: 90d
# Additional vmstorage container arguments. Extra command line arguments for vmstorage component
extraArgs:
envflag.enable: true
envflag.prefix: VM_
loggerFormat: json
search.maxUniqueTimeseries: "30000000"
httpListenAddr: :8482
loggerTimezone: "Asia/Kolkata"
dedup.minScrapeInterval: 60s
# Additional hostPath mounts
extraHostPathMounts:
[]
# - name: certs-dir
# mountPath: /etc/kubernetes/certs
# subPath: ""
# hostPath: /etc/kubernetes/certs
# readOnly: true
# Extra Volumes for the pod
extraVolumes:
[]
# - name: example
# configMap:
# name: example
# Extra Volume Mounts for the container
extraVolumeMounts:
[]
# - name: example
# mountPath: /example
extraContainers:
[]
# - name: config-reloader
# image: reloader-image
extraSecretMounts:
[]
# - name: secret
# mountPath: /etc/credentials
# subPath: ""
# readOnly: true
initContainers:
[]
# - name: vmrestore
# image: victoriametrics/vmrestore:latest
# volumeMounts:
# - mountPath: /storage
# name: vmstorage-volume
# - mountPath: /etc/vm/creds
# name: secret-remote-storage-keys
# readOnly: true
# args:
# - -storageDataPath=/storage
# - -src=s3://your_bucket/folder/latest
# - -credsFilePath=/etc/vm/creds/credentials
# -- See `kubectl explain poddisruptionbudget.spec` for more. Ref: [https://kubernetes.io/docs/tasks/run-application/configure-pdb/](https://kubernetes.io/docs/tasks/run-application/configure-pdb/)
podDisruptionBudget:
enabled: false
# minAvailable: 1
# maxUnavailable: 1
labels: {}
# -- Array of tolerations object. Node tolerations for server scheduling to nodes with taints. Ref: [https://kubernetes.io/docs/concepts/configuration/assign-pod-node/](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/)
##
tolerations:
- key: "cloud.google.com/compute-class"
operator: "Equal"
value: "vmstorage-n4d"
effect: "NoSchedule"
# -- Pod's node selector. Ref: [https://kubernetes.io/docs/user-guide/node-selection/](https://kubernetes.io/docs/user-guide/node-selection/)
nodeSelector:
cloud.google.com/compute-class: "vmstorage-n4d"
# -- Pod affinity
affinity: {}
topologySpreadConstraints:
- maxSkew: 1
topologyKey: topology.kubernetes.io/zone
whenUnsatisfiable: ScheduleAnyway
labelSelector:
matchLabels:
type: vmstorage
- maxSkew: 1
topologyKey: kubernetes.io/hostname
whenUnsatisfiable: DoNotSchedule
labelSelector:
matchLabels:
type: vmstorage
# -- Use an alternate scheduler, e.g. "stork". Check https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ for details
# schedulerName:
# -- Empty dir configuration if persistence is disabled
emptyDir: {}
persistentVolume:
# -- Create/use Persistent Volume Claim for vmstorage component. Empty dir if false. If true, vmstorage will create/use a Persistent Volume Claim
enabled: true
# -- Override Persistent Volume Claim name
name: vmstack-storage-volume
# -- Array of access modes. Must match those of existing PV or dynamic provisioner. Details are https://kubernetes.io/docs/concepts/storage/persistent-volumes/
accessModes:
- ReadWriteOnce
# -- Persistent volume annotations
annotations: {}
# -- Persistent volume extra labels
extraLabels: {}
# -- Storage class name. Will be empty if not set
storageClassName: hyperdisk-balanced
# -- Existing Claim name. Requires vmstorage.persistentVolume.enabled: true. If defined, PVC must be created manually before volume will be bound
existingClaim: ""
# -- Data root path. Vmstorage data Persistent Volume mount root path
mountPath: /storage
# -- Size of the volume
size: 8134Gi
# -- Mount subpath
subPath: ""
# -- Pod's annotations
podAnnotations:
prometheus.io/port: "8482"
prometheus.io/scrape: "true"
# -- StatefulSet/Deployment annotations
annotations:
prometheus.io/port: "8482"
prometheus.io/scrape: "true"
# -- StatefulSet/Deployment additional labels
extraLabels:
bu: "datascience"
team: "datascience-sre"
service: "vm-storage-datascience-prd"
env: "prd"
priority: "p0"
type: "vmstorage"
# arch: "arm64"
# runpod: "ondemand"
# -- Pod's additional labels
podLabels:
bu: "datascience"
team: "datascience-sre"
service: "vm-storage-datascience-prd"
env: "prd"
priority: "p0"
type: "vmstorage"
# -- Count of vmstorage pods
replicaCount: 5
# -- Container workdir
containerWorkingDir: ""
# -- Deploy order policy for StatefulSet pods
podManagementPolicy: OrderedReady
# -- Resource object. Details are https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
resources:
# limits:
# cpu: 500m
# memory: 512Mi
requests:
cpu: 42
memory: 330Gi
# -- Pod's security context. Details are https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
securityContext:
enabled: false
# -- Pod's security context. Details are https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
podSecurityContext:
enabled: false
service:
enabled: true
# -- Service annotations
annotations: {}
# -- Service ClusterIP
clusterIP: None
# -- Service type
type: ClusterIP
# -- Service labels
labels: {}
# -- Service port
servicePort: 8482
# -- Port for accepting connections from vminsert
vminsertPort: 8400
# -- Port for accepting connections from vmselect
vmselectPort: 8401
# -- Extra service ports
extraPorts: []
# -- Health check node port for a service. Check https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip for details
healthCheckNodePort: ""
# -- Service external traffic policy. Check https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip for details
externalTrafficPolicy: ""
# -- Service IP family policy. Check https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services for details
ipFamilyPolicy: ""
# -- List of service IP families. Check https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services for details
ipFamilies: []
# -- Traffic Distribution. Check https://kubernetes.io/docs/concepts/services-networking/service/#traffic-distribution
trafficDistribution: ""
# -- Pod's termination grace period in seconds
terminationGracePeriodSeconds: 60
minReadySeconds: 5
# -- Readiness probes
probe:
# -- VMStorage readiness probe
readiness:
httpGet:
path: /health
port: http
initialDelaySeconds: 5
periodSeconds: 15
timeoutSeconds: 5
failureThreshold: 3
liveness:
tcpSocket:
port: http
initialDelaySeconds: 30
periodSeconds: 30
timeoutSeconds: 5
failureThreshold: 10
# -- VMStorage startup probe
startup: {}
horizontalPodAutoscaler:
# -- Use HPA for vmstorage component
enabled: false
# -- Maximum replicas for HPA to use to to scale the vmstorage component
maxReplicas: 10
# -- Minimum replicas for HPA to use to scale the vmstorage component
minReplicas: 2
# -- Metric for HPA to use to scale the vmstorage component
metrics: []
# -- Behavior settings for scaling by the HPA
behavior:
scaleDown:
selectPolicy: Disabled
vmbackupmanager:
# -- Enable automatic creation of backup via vmbackupmanager. vmbackupmanager is part of Enterprise packages
enabled: false
# -- Enterprise license key configuration for VictoriaMetrics enterprise.
# Required only for VictoriaMetrics enterprise. Check docs [here](https://docs.victoriametrics.com/victoriametrics/enterprise/),
# for more information, visit [site](https://victoriametrics.com/products/enterprise/).
# Request a trial license [here](https://victoriametrics.com/products/enterprise/trial/)
# Supported starting from VictoriaMetrics v1.94.0
license:
# -- License key
key: ""
# -- Use existing secret with license key
secret:
# -- Existing secret name
name: ""
# -- Key in secret with license key
key: ""