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,388 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "vmalert.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Maintainer - Akshay Gupta
Tolerations and nodeSelector via Resources Requests.
*/}}
{{- define "meesho.server.getCpu" -}}
{{- $cpu := toString .Values.server.resources.requests.cpu -}}
{{- if contains "m" $cpu -}}
{{- $cpu := trimAll "m" $cpu | float64 -}}
{{- $cpu := $cpu | float64 -}}
{{- printf "%f" $cpu -}}
{{- else -}}
{{- $cpu := mulf $cpu 1000.000 -}}
{{- printf "%f" $cpu -}}
{{- end -}}
{{- end -}}
{{- define "meesho.server.getMem" -}}
{{- $mem := toString .Values.server.resources.requests.memory -}}
{{- if contains "Mi" $mem -}}
{{- $mem := trimAll "Mi" $mem | float64 -}}
{{- printf "%f" $mem -}}
{{- else if contains "Gi" $mem -}}
{{- $mem := trimAll "Gi" $mem | float64 -}}
{{- $mem := mulf $mem 1024.000 -}}
{{- printf "%f" $mem -}}
{{- end -}}
{{- end -}}
{{- define "meesho.server.getRatio" -}}
{{- $cpu := (include "meesho.server.getCpu" .) -}}
{{- $mem := (include "meesho.server.getMem" .) -}}
{{- $ratio := divf $mem $cpu -}}
{{- if gt $ratio 4.00 -}}
{{- printf "1to8" -}}
{{- else if gt $ratio 2.00 -}}
{{- printf "1to4" -}}
{{- else -}}
{{- printf "1to2" -}}
{{- end -}}
{{- end -}}
{{- define "meesho.server.dedicatedValue" -}}
{{- if (index .Values.server.labels "arch") -}}
{{- if (index .Values.server.labels "runpod") -}}
{{- $cpu := (include "meesho.server.getCpu" .) -}}
{{- $mem := (include "meesho.server.getMem" .) -}}
{{- $ratio := (include "meesho.server.getRatio" .) -}}
{{- $arch := .Values.server.labels.arch -}}
{{- $runPod := .Values.server.labels.runpod -}}
{{- printf "%s-%s-%s" $ratio $arch $runPod -}}
{{- else -}}
{{- printf "missing-runpod-label" -}}
{{- end -}}
{{- else -}}
{{- printf "missing-arch-label" -}}
{{- end -}}
{{/*- printf "%s-%s-%s-%s-%s" $ratio $arch $runPod $cpu $mem -*/}}
{{- end -}}
{{/*
Maintainer - Akshay Gupta
Tolerations and nodeSelector via Resources Requests.
*/}}
{{- define "meesho.alertmanager.getCpu" -}}
{{- $cpu := toString .Values.alertmanager.resources.requests.cpu -}}
{{- if contains "m" $cpu -}}
{{- $cpu := trimAll "m" $cpu | float64 -}}
{{- $cpu := $cpu | float64 -}}
{{- printf "%f" $cpu -}}
{{- else -}}
{{- $cpu := mulf $cpu 1000.000 -}}
{{- printf "%f" $cpu -}}
{{- end -}}
{{- end -}}
{{- define "meesho.alertmanager.getMem" -}}
{{- $mem := toString .Values.alertmanager.resources.requests.memory -}}
{{- if contains "Mi" $mem -}}
{{- $mem := trimAll "Mi" $mem | float64 -}}
{{- printf "%f" $mem -}}
{{- else if contains "Gi" $mem -}}
{{- $mem := trimAll "Gi" $mem | float64 -}}
{{- $mem := mulf $mem 1024.000 -}}
{{- printf "%f" $mem -}}
{{- end -}}
{{- end -}}
{{- define "meesho.alertmanager.getRatio" -}}
{{- $cpu := (include "meesho.alertmanager.getCpu" .) -}}
{{- $mem := (include "meesho.alertmanager.getMem" .) -}}
{{- $ratio := divf $mem $cpu -}}
{{- if gt $ratio 4.00 -}}
{{- printf "1to8" -}}
{{- else if gt $ratio 2.00 -}}
{{- printf "1to4" -}}
{{- else -}}
{{- printf "1to2" -}}
{{- end -}}
{{- end -}}
{{- define "meesho.alertmanager.dedicatedValue" -}}
{{- if (index .Values.alertmanager.labels "arch") -}}
{{- if (index .Values.alertmanager.labels "runpod") -}}
{{- $cpu := (include "meesho.alertmanager.getCpu" .) -}}
{{- $mem := (include "meesho.alertmanager.getMem" .) -}}
{{- $ratio := (include "meesho.alertmanager.getRatio" .) -}}
{{- $arch := .Values.alertmanager.labels.arch -}}
{{- $runPod := .Values.alertmanager.labels.runpod -}}
{{- printf "%s-%s-%s" $ratio $arch $runPod -}}
{{- else -}}
{{- printf "missing-runpod-label" -}}
{{- end -}}
{{- else -}}
{{- printf "missing-arch-label" -}}
{{- end -}}
{{/*- printf "%s-%s-%s-%s-%s" $ratio $arch $runPod $cpu $mem -*/}}
{{- end -}}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "vmalert.fullname" -}}
{{- if .Values.fullnameOverride -}}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- if contains $name .Release.Name -}}
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "vmalert.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Create unified labels for vmalert components
*/}}
{{- define "vmalert.common.matchLabels" -}}
app.kubernetes.io/name: {{ include "vmalert.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end -}}
{{- define "vmalert.common.metaLabels" -}}
helm.sh/chart: {{ include "vmalert.chart" . }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end -}}
{{- define "vmalert.server.labels" -}}
{{- toYaml .Values.server.labels | nindent 0 }}
{{ include "vmalert.server.matchLabels" . }}
{{ include "vmalert.common.metaLabels" . }}
{{- end -}}
{{- define "vmalert.server.matchLabels" -}}
app: {{ .Values.server.name }}
{{ include "vmalert.common.matchLabels" . }}
{{- end -}}
{{/*
Create a fully qualified server name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
*/}}
{{- define "vmalert.server.fullname" -}}
{{- if .Values.server.fullnameOverride -}}
{{- .Values.server.fullnameOverride | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- if contains $name .Release.Name -}}
{{- printf "%s-%s" .Release.Name .Values.server.name | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- printf "%s-%s-%s" .Release.Name $name .Values.server.name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- define "vmalert.server.configname" -}}
{{- if .Values.server.configMap -}}
{{- .Values.server.configMap -}}
{{- else -}}
{{- include "vmalert.server.fullname" . -}}-alert-rules-config
{{- end -}}
{{- end -}}
{{/*
Create the name of the service account to use
*/}}
{{- define "vmalert.serviceAccountName" -}}
{{- if .Values.serviceAccount.create -}}
{{ default (include "vmalert.fullname" .) .Values.serviceAccount.name }}
{{- else -}}
{{ default "default" .Values.serviceAccount.name }}
{{- end -}}
{{- end -}}
{{- define "vmalert.alertmanager.labels" -}}
{{- toYaml .Values.alertmanager.labels | nindent 0 }}
{{ include "vmalert.alertmanager.matchLabels" . }}
{{ include "vmalert.common.metaLabels" . }}
{{- end -}}
{{- define "vmalert.alertmanager.matchLabels" -}}
app: alertmanager
{{ include "vmalert.common.matchLabels" . }}
{{- end -}}
{{/*
Create a fully qualified server name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
*/}}
{{- define "vmalert.alertmanager.fullname" -}}
{{- if .Values.alertmanager.fullnameOverride -}}
{{- .Values.alertmanager.fullnameOverride | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- if contains $name .Release.Name -}}
{{- printf "%s-%s" .Release.Name .Values.alertmanager.name | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- printf "%s-%s-%s" .Release.Name $name .Values.alertmanager.name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- define "vmalert.alertmanager.configname" -}}
{{- if .Values.alertmanager.configMap -}}
{{- .Values.alertmanager.configMap -}}
{{- else -}}
{{- include "vmalert.alertmanager.fullname" . -}}-alertmanager-config
{{- end -}}
{{- end -}}
{{- define "vmalert.alertmanager.url" -}}
{{- if .Values.alertmanager.enabled -}}
http://{{- include "vmalert.alertmanager.fullname" . -}}:9093
{{- else -}}
{{- .Values.server.notifier.alertmanager.url -}}
{{- end -}}
{{- end -}}
{{- define "vmalert.alertmanager.urls" -}}
{{- $urls := list -}}
{{- with (include "vmalert.alertmanager.url" .) -}}
{{- $urls = append $urls . -}}
{{- end -}}
{{- range .Values.server.notifiers }}
{{- if not (eq .alertmanager.url "") -}}
{{- $urls = append $urls .alertmanager.url -}}
{{- end -}}
{{- end -}}
{{- join "," $urls }}
{{- end -}}
{{- define "vmalert.alertmanager.passwords" -}}
{{- $password := list -}}
{{- if .Values.alertmanager.enabled -}}
{{- $password = append $password "" -}}
{{- end -}}
{{- $notifiers := append .Values.server.notifiers .Values.server.notifier }}
{{- range $notifiers }}
{{- if not (eq .alertmanager.url "") -}}
{{- if and .alertmanager.basicAuth .alertmanager.basicAuth.password -}}
{{- $password = append $password .alertmanager.basicAuth.password -}}
{{- else -}}
{{- $password = append $password "" -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{ include "_vmalert.optionalPrintList" $password }}
{{- end -}}
{{- define "vmalert.alertmanager.usernames" -}}
{{- $usernames := list -}}
{{- if .Values.alertmanager.enabled -}}
{{- $usernames = append $usernames "" -}}
{{- end -}}
{{- $notifiers := append .Values.server.notifiers .Values.server.notifier }}
{{- range $notifiers }}
{{- if not (eq .alertmanager.url "") -}}
{{- if and .alertmanager.basicAuth .alertmanager.basicAuth.username -}}
{{- $usernames = append $usernames .alertmanager.basicAuth.username -}}
{{- else -}}
{{- $usernames = append $usernames "" -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{ include "_vmalert.optionalPrintList" $usernames }}
{{- end -}}
{{- define "vmalert.alertmanager.bearerTokens" -}}
{{- $tokens := list -}}
{{- if .Values.alertmanager.enabled -}}
{{- $tokens = append $tokens "" -}}
{{- end -}}
{{- $notifiers := append .Values.server.notifiers .Values.server.notifier }}
{{- range $notifiers }}
{{- if not (eq .alertmanager.url "") -}}
{{- if and .alertmanager.bearer .alertmanager.bearer.token -}}
{{- $tokens = append $tokens .alertmanager.bearer.token -}}
{{- else -}}
{{- $tokens = append $tokens "" -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{ include "_vmalert.optionalPrintList" $tokens }}
{{- end -}}
{{- define "vmalert.alertmanager.bearerTokenFiles" -}}
{{- $files := list -}}
{{- if .Values.alertmanager.enabled -}}
{{- $files = append $files "" -}}
{{- end -}}
{{- $notifiers := append .Values.server.notifiers .Values.server.notifier }}
{{- range $notifiers }}
{{- if not (eq .alertmanager.url "") -}}
{{- if and .alertmanager.bearer .alertmanager.bearer.tokenFile -}}
{{- $files = append $files .alertmanager.bearer.tokenFile -}}
{{- else -}}
{{- $files = append $files "" -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{ include "_vmalert.optionalPrintList" $files }}
{{- end -}}
{{- define "_vmalert.optionalPrintList" }}
{{- $str := join "," . -}}
{{- $cleared := $str | replace "," "" | trim -}}
{{- if eq $cleared "" -}}
{{ $cleared }}
{{- else -}}
{{ $str }}
{{- end -}}
{{- end -}}
{{/*
Return the appropriate apiVersion for ingress.
*/}}
{{- define "vmalert.ingress.apiVersion" -}}
{{- if and (.Capabilities.APIVersions.Has "networking.k8s.io/v1") -}}
{{- print "networking.k8s.io/v1" -}}
{{- else if .Capabilities.APIVersions.Has "networking.k8s.io/v1beta1" -}}
{{- print "networking.k8s.io/v1beta1" -}}
{{- else -}}
{{- print "extensions/v1beta1" -}}
{{- end -}}
{{- end -}}
{{/*
Return if ingress is stable.
*/}}
{{- define "vmalert.ingress.isStable" -}}
{{- eq (include "vmalert.ingress.apiVersion" .) "networking.k8s.io/v1" -}}
{{- end -}}
{{/*
Return if ingress supports ingressClassName.
*/}}
{{- define "vmalert.ingress.supportsIngressClassName" -}}
{{- or (eq (include "vmalert.ingress.isStable" .) "true") (and (eq (include "vmalert.ingress.apiVersion" .) "networking.k8s.io/v1beta1")) -}}
{{- end -}}
{{/*
Return if ingress supports pathType.
*/}}
{{- define "vmalert.ingress.supportsPathType" -}}
{{- or (eq (include "vmalert.ingress.isStable" .) "true") (and (eq (include "vmalert.ingress.apiVersion" .) "networking.k8s.io/v1beta1")) -}}
{{- end -}}
@@ -0,0 +1,16 @@
{{- if and .Values.alertmanager.enabled (eq .Values.alertmanager.configMap "") }}
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ include "vmalert.alertmanager.configname" .}}
namespace: {{.Release.Namespace}}
labels: {{- include "vmalert.alertmanager.labels" . | nindent 4}}
data:
alertmanager.yaml: |
{{ toYaml .Values.alertmanager.config | nindent 4 }}
{{- range $key, $value := .Values.alertmanager.templates }}
{{ $key }}: |-
{{- $value | nindent 4 }}
{{- end }}
{{- end }}
@@ -0,0 +1,143 @@
{{- if .Values.alertmanager.enabled -}}
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "vmalert.alertmanager.fullname" . }}
namespace: {{ .Release.Namespace }}
labels:
{{- include "vmalert.alertmanager.labels" . | nindent 4 }}
spec:
replicas: 1
selector:
matchLabels:
{{- include "vmalert.alertmanager.matchLabels" . | nindent 6 }}
{{- if .Values.alertmanager.persistentVolume.enabled }}
strategy:
# Must be "Recreate" when we have a persistent volume
type: Recreate
{{- end }}
template:
metadata:
labels:
{{- include "vmalert.alertmanager.labels" . | nindent 8 }}
{{- range $key, $value := .Values.alertmanager.podMetadata.labels }}
{{ $key }}: {{ $value | quote }}
{{- end }}
annotations:
checksum/config: {{ include (print $.Template.BasePath "/alertmanager-configmap.yaml") . | sha256sum }}
{{- range $key, $value := .Values.alertmanager.podMetadata.annotations }}
{{ $key }}: {{ $value | quote }}
{{- end }}
spec:
{{- with .Values.alertmanager.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
serviceAccountName: {{ template "vmalert.serviceAccountName" . }}
automountServiceAccountToken: {{ .Values.serviceAccount.automountToken }}
{{- with .Values.alertmanager.securityContext }}
securityContext:
{{- toYaml .| nindent 8 }}
{{- end }}
containers:
- name: {{ template "vmalert.name" . }}-alertmanager
securityContext:
{{- toYaml .Values.alertmanager.podSecurityContext | nindent 12 }}
image: "{{ .Values.alertmanager.image }}:{{ .Values.alertmanager.tag }}"
args:
- --config.file=/config/alertmanager.yaml
{{ if .Values.alertmanager.persistentVolume.enabled }}
- {{ printf "%s=%s" "--storage.path" .Values.alertmanager.persistentVolume.mountPath | quote}}
{{- else}}
- --storage.path=/data
{{- end}}
- --data.retention={{ .Values.alertmanager.retention }}
- --web.listen-address=0.0.0.0:9093
- --cluster.advertise-address=$(POD_IP):6783
{{ if .Values.alertmanager.baseURL }}
- --web.external-url={{ .Values.alertmanager.baseURL }}
{{- end }}
{{ if .Values.alertmanager.baseURLPrefix }}
- --web.route-prefix={{ .Values.alertmanager.baseURLPrefix }}
{{- end }}
{{- range $key, $value := .Values.alertmanager.extraArgs }}
- --{{ $key }}={{ $value }}
{{- end }}
ports:
- name: web
containerPort: 9093
env:
- name: POD_IP
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.podIP
readinessProbe:
httpGet:
{{ if .Values.alertmanager.baseURLPrefix }}
path: {{ .Values.alertmanager.baseURLPrefix }}/-/ready
{{- else}}
path: /-/ready
{{- end }}
port: web
livenessProbe:
httpGet:
{{ if .Values.alertmanager.baseURLPrefix }}
path: {{ .Values.alertmanager.baseURLPrefix }}/-/healthy
{{- else}}
path: /-/healthy
{{- end }}
port: web
volumeMounts:
- name: storage
{{- if .Values.alertmanager.persistentVolume.enabled }}
mountPath: {{ .Values.alertmanager.persistentVolume.mountPath }}
{{- else }}
mountPath: /data
{{- end }}
- name: config
mountPath: /config
readOnly: true
resources:
{{- toYaml .Values.alertmanager.resources | nindent 12 }}
{{- if .Values.alertmanager.priorityClassName }}
priorityClassName: {{ .Values.alertmanager.priorityClassName | quote }}
{{- end }}
{{- with .Values.server.affinity }}
affinity:
{{ toYaml . | nindent 8 }}
{{- end }}
{{- if .Values.schedulerName }}
schedulerName: "{{ .Values.schedulerName }}"
{{- end }}
nodeSelector:
{{- if .Values.dedicatedValue }}
dedicated: {{ include "meesho.alertmanager.dedicatedValue" . }}
{{- else }}
{{- with .Values.alertmanager.nodeSelector }}
{{ toYaml . | nindent 8 }}
{{- end }}
{{- end }}
tolerations:
{{- if .Values.dedicatedValue }}
- key: "dedicated"
operator: "Equal"
value: {{ include "meesho.alertmanager.dedicatedValue" . }}
effect: "NoSchedule"
{{- else }}
{{- with .Values.alertmanager.tolerations }}
{{ toYaml . | nindent 8 }}
{{- end }}
{{- end }}
volumes:
- name: storage
{{- if .Values.alertmanager.persistentVolume.enabled }}
persistentVolumeClaim:
claimName: {{ if .Values.alertmanager.persistentVolume.existingClaim }}{{ .Values.alertmanager.persistentVolume.existingClaim }}{{- else }}{{ include "vmalert.alertmanager.fullname" . }}{{- end }}
{{- else }}
emptyDir: {}
{{- end }}
- name: config
configMap:
name: {{ include "vmalert.alertmanager.configname" . }}
{{- end -}}
@@ -0,0 +1,50 @@
{{- if and .Values.alertmanager.enabled .Values.alertmanager.ingress.enabled }}
{{- $ingressApiIsStable := eq (include "vmalert.ingress.isStable" .) "true" -}}
{{- $ingressSupportsIngressClassName := eq (include "vmalert.ingress.supportsIngressClassName" .) "true" -}}
{{- $ingressSupportsPathType := eq (include "vmalert.ingress.supportsPathType" .) "true" -}}
{{- $servicePort := .Values.alertmanager.service.port -}}
{{- $ingressPathType := .Values.alertmanager.ingress.pathType -}}
apiVersion: {{ include "vmalert.ingress.apiVersion" . }}
kind: Ingress
metadata:
{{- with .Values.alertmanager.ingress.annotations }}
annotations:
{{ toYaml .| indent 4 }}
{{- end }}
labels:
{{- include "vmalert.alertmanager.labels" . | nindent 4 }}
{{ with .Values.alertmanager.ingress.extraLabels }}
{{ toYaml . | indent 4 }}
{{ end }}
name: {{ template "vmalert.alertmanager.fullname" . }}
namespace: {{ .Release.Namespace }}
spec:
{{- if and $ingressSupportsIngressClassName .Values.alertmanager.ingress.ingressClassName }}
ingressClassName: {{ .Values.alertmanager.ingress.ingressClassName }}
{{- end }}
rules:
{{- $serviceName := include "vmalert.alertmanager.fullname" . }}
{{- range .Values.alertmanager.ingress.hosts }}
- host: {{ .name }}
http:
paths:
- path: {{ .path }}
{{- if $ingressSupportsPathType }}
pathType: {{ $ingressPathType }}
{{- end }}
backend:
{{- if $ingressApiIsStable }}
service:
name: {{ $serviceName }}
port:
number: {{ $servicePort }}
{{- else }}
serviceName: {{ $serviceName }}
servicePort: {{ .port | default "http"}}
{{- end }}
{{- end -}}
{{- if .Values.alertmanager.ingress.tls }}
tls:
{{ toYaml .Values.alertmanager.ingress.tls | indent 4 }}
{{- end -}}
{{- end -}}
@@ -0,0 +1,26 @@
{{- if .Values.alertmanager.enabled -}}
{{- if and .Values.alertmanager.persistentVolume.enabled (not .Values.alertmanager.persistentVolume.existingClaim)}}
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: {{ include "vmalert.alertmanager.fullname" . }}
namespace: {{ .Release.Namespace }}
labels:
{{- include "vmalert.alertmanager.labels" . | nindent 4 }}
{{- with .Values.alertmanager.persistentVolume.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
accessModes:
{{- range .Values.alertmanager.persistentVolume.accessModes }}
- {{ . | quote }}
{{- end }}
resources:
requests:
storage: {{ .Values.alertmanager.persistentVolume.size | quote }}
{{- if .Values.alertmanager.persistentVolume.storageClass }}
storageClassName: {{ .Values.alertmanager.persistentVolume.storageClass }}
{{- end -}}
{{- end -}}
{{- end -}}
@@ -0,0 +1,21 @@
{{- if .Values.alertmanager.enabled -}}
apiVersion: v1
kind: Service
metadata:
namespace: {{ .Release.Namespace }}
{{- with .Values.alertmanager.service.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
labels:
{{- include "vmalert.alertmanager.labels" . | nindent 4 }}
name: {{ template "vmalert.alertmanager.fullname" . }}
spec:
ports:
- name: web
port: 9093
targetPort: web
protocol: TCP
selector:
{{- include "vmalert.alertmanager.matchLabels" . | nindent 4 }}
{{- end }}
@@ -0,0 +1,24 @@
{{- if and .Values.rbac.create (not .Values.rbac.namespaced) }}
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: {{ template "vmalert.server.fullname" . }}-clusterrolebinding
namespace: {{ .Release.Namespace }}
labels:
{{- include "vmalert.server.labels" . | nindent 4 }}
{{- with .Values.rbac.extraLabels }}
{{ toYaml . | indent 4}}
{{- end }}
{{- with .Values.rbac.annotations }}
annotations:
{{ toYaml . | indent 4 }}
{{- end }}
subjects:
- kind: ServiceAccount
name: {{ include "vmalert.serviceAccountName" . }}
namespace: {{ .Release.Namespace }}
roleRef:
kind: ClusterRole
name: {{ template "vmalert.server.fullname" . }}-clusterrole
apiGroup: rbac.authorization.k8s.io
{{- end -}}
@@ -0,0 +1,42 @@
{{- if and .Values.rbac.pspEnabled (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") }}
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
name: {{ template "vmalert.server.fullname" . }}
labels:
{{- include "vmalert.server.labels" . | nindent 4 }}
{{- with .Values.rbac.extraLabels }}
{{ toYaml . | indent 4}}
{{- end }}
annotations:
seccomp.security.alpha.kubernetes.io/allowedProfileNames: 'docker/default'
seccomp.security.alpha.kubernetes.io/defaultProfileName: 'docker/default'
{{- with .Values.rbac.annotations }}
{{ toYaml . | indent 4}}
{{- end }}
spec:
privileged: false
allowPrivilegeEscalation: false
requiredDropCapabilities:
# Default set from Docker, with DAC_OVERRIDE and CHOWN
- ALL
volumes:
- 'configMap'
- 'emptyDir'
- 'projected'
- 'secret'
- 'downwardAPI'
- 'persistentVolumeClaim'
hostNetwork: false
hostIPC: false
hostPID: false
runAsUser:
rule: 'RunAsAny'
seLinux:
rule: 'RunAsAny'
supplementalGroups:
rule: 'RunAsAny'
fsGroup:
rule: 'RunAsAny'
readOnlyRootFilesystem: false
{{- end }}
@@ -0,0 +1,25 @@
{{- if .Values.rbac.create -}}
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: {{ template "vmalert.server.fullname" . }}
namespace: {{ .Release.Namespace }}
labels:
{{- include "vmalert.server.labels" . | nindent 4 }}
{{- with .Values.rbac.extraLabels }}
{{ toYaml . | indent 4}}
{{- end }}
{{- with .Values.rbac.annotations }}
annotations:
{{ toYaml . | indent 4 }}
{{- end }}
{{- if and .Values.rbac.pspEnabled (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") }}
rules:
- apiGroups: ['extensions']
resources: ['podsecuritypolicies']
verbs: ['use']
resourceNames: [{{ template "vmalert.server.fullname" . }}]
{{- else }}
rules: []
{{- end }}
{{- end }}
@@ -0,0 +1,24 @@
{{- if .Values.rbac.create -}}
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: {{ template "vmalert.server.fullname" . }}
namespace: {{ .Release.Namespace }}
labels:
{{- include "vmalert.server.labels" . | nindent 4 }}
{{- with .Values.rbac.extraLabels }}
{{ toYaml . | indent 4}}
{{- end }}
{{- with .Values.rbac.annotations }}
annotations:
{{ toYaml . | indent 4 }}
{{- end }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: {{ template "vmalert.server.fullname" . }}
subjects:
- kind: ServiceAccount
name: {{ include "vmalert.serviceAccountName" . }}
namespace: {{ .Release.Namespace }}
{{- end -}}
@@ -0,0 +1,11 @@
{{- if eq .Values.server.configMap "" }}
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ include "vmalert.server.configname" . }}
namespace: {{ .Release.Namespace }}
labels: {{- include "vmalert.server.labels" . | nindent 4 }}
data:
alert-rules.yaml: |
{{ toYaml .Values.server.config.alerts | nindent 4 }}
{{- end }}
@@ -0,0 +1,224 @@
{{- if and .Values.server.enabled -}}
{{- if not .Values.server.extraArgs.rule }}
{{- if and (eq .Values.server.configMap "") (eq (len .Values.server.config.alerts.groups) 0) -}}
{{- fail "at least one item in `.server.config.alerts.groups` or `.server.extraArgs.rule` must be set " -}}
{{- end -}}
{{- end -}}
{{- if (eq (include "vmalert.alertmanager.urls" . ) "") -}}
{{- fail "alert manager URL must be specified. Please fill server.notifier.alertmanager.url or server.notifiers or enable Alertmanager in values file" -}}
{{- end -}}
{{- if eq .Values.server.datasource.url "" -}}
{{- fail "server.datasource.url datasource URL must be specified" -}}
{{- end -}}
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "vmalert.server.fullname" . }}
namespace: {{ .Release.Namespace }}
labels:
{{- include "vmalert.server.labels" . | nindent 4 }}
{{- with .Values.server.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
minReadySeconds: {{ .Values.server.minReadySeconds }}
replicas: {{ .Values.server.replicaCount }}
selector:
matchLabels:
{{- include "vmalert.server.matchLabels" . | nindent 6 }}
{{- with .Values.server.strategy }}
strategy:
{{- toYaml . | nindent 4 }}
{{- end }}
template:
metadata:
labels:
{{- include "vmalert.server.labels" . | nindent 8 }}
{{- range $key, $value := .Values.server.podLabels }}
{{ $key }}: {{ $value | quote }}
{{- end }}
annotations:
checksum/config: {{ include (print $.Template.BasePath "/server-alerts-configmap.yaml") . | sha256sum }}
{{- range $key, $value := .Values.server.podAnnotations }}
{{ $key }}: {{ $value | quote }}
{{- end }}
spec:
{{- if .Values.topologySpreadConstraints }}
topologySpreadConstraints:
{{ toYaml .Values.topologySpreadConstraints | indent 8 }}
{{- end }}
{{- with .Values.server.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
serviceAccountName: {{ template "vmalert.serviceAccountName" . }}
securityContext:
{{- toYaml .Values.server.securityContext | nindent 8 }}
automountServiceAccountToken: {{ .Values.serviceAccount.automountToken }}
initContainers:
- name: clone-git-repo
image: alpine/git
args:
- clone
- --single-branch
- --branch
- main
- --depth
- "1"
- https://nadig-aditya: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@github.com/Meesho/meesho-alerts-config.git
- /vmalert-config
volumeMounts:
- name: configrules
mountPath: /vmalert-config
containers:
- name: {{ template "vmalert.name" . }}-{{ .Values.server.name }}
securityContext:
{{- toYaml .Values.server.podSecurityContext | nindent 12 }}
image: "{{ .Values.server.image.repository }}:{{ default .Chart.AppVersion .Values.server.image.tag }}"
args:
- -rule=/config/alert-rules.yaml
- -datasource.url={{ .Values.server.datasource.url}}
{{- if or .Values.server.datasource.basicAuth.password .Values.server.datasource.basicAuth.username }}
- -datasource.basicAuth.password={{ .Values.server.datasource.basicAuth.password}}
- -datasource.basicAuth.username={{ .Values.server.datasource.basicAuth.username}}
{{- end }}
{{- with .Values.server.datasource.bearer.token }}
- -datasource.bearerToken={{ . }}
{{- end }}
{{- with .Values.server.datasource.bearer.tokenFile }}
- -datasource.bearerTokenFile={{ . }}
{{- end }}
- -notifier.url={{ include "vmalert.alertmanager.urls" . }}
{{- with (include "vmalert.alertmanager.passwords" .) }}
- -notifier.basicAuth.password={{ . }}
{{- end }}
{{- with (include "vmalert.alertmanager.usernames" .) }}
- -notifier.basicAuth.username={{ . }}
{{- end }}
{{- with (include "vmalert.alertmanager.bearerTokens" .) }}
- -notifier.bearerToken={{ . }}
{{- end }}
{{- with (include "vmalert.alertmanager.bearerTokenFiles" .) }}
- -notifier.bearerTokenFile={{ . }}
{{- end }}
- -remoteRead.url={{ .Values.server.remote.read.url }}
{{- if or .Values.server.remote.read.basicAuth.password .Values.server.remote.read.basicAuth.username }}
- -remoteRead.basicAuth.password={{ .Values.server.remote.read.basicAuth.password }}
- -remoteRead.basicAuth.username={{ .Values.server.remote.read.basicAuth.username }}
{{- end }}
{{- with .Values.server.remote.read.bearer.token }}
- -remoteRead.bearerToken={{ . }}
{{- end }}
{{- with .Values.server.remote.read.bearer.tokenFile }}
- -remoteRead.bearerTokenFile={{ . }}
{{- end }}
- -remoteWrite.url={{ .Values.server.remote.write.url }}
{{- if or .Values.server.remote.write.basicAuth.password .Values.server.remote.write.basicAuth.username }}
- -remoteWrite.basicAuth.password={{ .Values.server.remote.write.basicAuth.password }}
- -remoteWrite.basicAuth.username={{ .Values.server.remote.write.basicAuth.username }}
{{- end }}
{{- with .Values.server.remote.write.bearer.token }}
- -remoteWrite.bearerToken={{ . }}
{{- end }}
{{- with .Values.server.remote.write.bearer.tokenFile }}
- -remoteWrite.bearerTokenFile={{ . }}
{{- end }}
{{- range $key, $value := .Values.server.extraArgs }}
{{- if eq $key "rule" }}
- -{{ $key }}={{ $value | quote}}
{{- else }}
- -{{ $key }}={{ $value }}
{{- end }}
{{- end }}
imagePullPolicy: {{ .Values.server.image.pullPolicy }}
env:
- name: TZ
value: Asia/Kolkata
{{- with .Values.server.env }}
{{ toYaml . | nindent 12 }}
{{- end }}
ports:
- name: http
containerPort: 8880
readinessProbe:
httpGet:
{{- if index .Values.server.extraArgs "http.pathPrefix" }}
path: {{ trimSuffix "/" (index .Values.server.extraArgs "http.pathPrefix") }}/health
{{- else }}
path: /health
{{- end }}
port: http
initialDelaySeconds: 5
periodSeconds: 15
livenessProbe:
tcpSocket:
port: http
initialDelaySeconds: 5
periodSeconds: 15
timeoutSeconds: 5
volumeMounts:
- name: alerts-config
mountPath: /config
- name: configrules
mountPath: /config/vm-alerts-config
subPath: vm-alerts-config/configmap
{{- range .Values.server.extraHostPathMounts }}
- name: {{ .name }}
mountPath: {{ .mountPath }}
subPath: {{ .subPath }}
readOnly: {{ .readOnly }}
{{- end }}
{{- with .Values.server.extraVolumeMounts }}
{{- toYaml . | nindent 12 }}
{{- end }}
resources:
{{- toYaml .Values.server.resources | nindent 12 }}
{{- with .Values.server.extraContainers }}
{{- toYaml . | nindent 8 }}
{{- end }}
{{- if .Values.server.priorityClassName }}
priorityClassName: {{ .Values.server.priorityClassName | quote }}
{{- end }}
{{- with .Values.server.affinity }}
affinity:
{{ toYaml . | nindent 8 }}
{{- end }}
{{- if .Values.schedulerName }}
schedulerName: "{{ .Values.schedulerName }}"
{{- end }}
nodeSelector:
{{- if .Values.dedicatedValue }}
dedicated: {{ include "meesho.server.dedicatedValue" . }}
{{- else }}
{{- with .Values.server.nodeSelector }}
{{ toYaml . | nindent 8 }}
{{- end }}
{{- end }}
tolerations:
{{- if .Values.dedicatedValue }}
- key: "dedicated"
operator: "Equal"
value: {{ include "meesho.server.dedicatedValue" . }}
effect: "NoSchedule"
{{- else }}
{{- with .Values.server.tolerations }}
{{ toYaml . | nindent 8 }}
{{- end }}
{{- end }}
volumes:
- name: configrules
emptyDir: {}
- name: alerts-config
configMap:
name: {{ include "vmalert.server.configname" . }}
{{- range .Values.server.extraHostPathMounts }}
- name: {{ .name }}
hostPath:
path: {{ .hostPath }}
{{- end }}
{{- with .Values.server.extraVolumes }}
{{- toYaml . | nindent 8 }}
{{- end }}
{{- end -}}
@@ -0,0 +1,50 @@
{{- if and .Values.server.enabled .Values.server.ingress.enabled }}
{{- $ingressApiIsStable := eq (include "vmalert.ingress.isStable" .) "true" -}}
{{- $ingressSupportsIngressClassName := eq (include "vmalert.ingress.supportsIngressClassName" .) "true" -}}
{{- $ingressSupportsPathType := eq (include "vmalert.ingress.supportsPathType" .) "true" -}}
{{- $servicePort := .Values.server.service.servicePort -}}
{{- $ingressPathType := .Values.server.ingress.pathType -}}
apiVersion: {{ include "vmalert.ingress.apiVersion" . }}
kind: Ingress
metadata:
{{- with .Values.server.ingress.annotations }}
annotations:
{{ toYaml .| indent 4 }}
{{- end }}
labels:
{{- include "vmalert.server.labels" . | nindent 4 }}
{{ with .Values.server.ingress.extraLabels }}
{{ toYaml . | indent 4 }}
{{ end }}
name: {{ template "vmalert.server.fullname" . }}
namespace: {{ .Release.Namespace }}
spec:
{{- if and $ingressSupportsIngressClassName .Values.server.ingress.ingressClassName }}
ingressClassName: {{ .Values.server.ingress.ingressClassName }}
{{- end }}
rules:
{{- $serviceName := include "vmalert.server.fullname" . }}
{{- range .Values.server.ingress.hosts }}
- host: {{ .name }}
http:
paths:
- path: {{ .path }}
{{- if $ingressSupportsPathType }}
pathType: {{ $ingressPathType }}
{{- end }}
backend:
{{- if $ingressApiIsStable }}
service:
name: {{ $serviceName }}
port:
number: {{ $servicePort }}
{{- else }}
serviceName: {{ $serviceName }}
servicePort: {{ .port | default "http"}}
{{- end }}
{{- end -}}
{{- with .Values.server.ingress.tls }}
tls:
{{ toYaml . | indent 4 }}
{{- end -}}
{{- end -}}
@@ -0,0 +1,26 @@
{{- if .Values.server.podDisruptionBudget.enabled }}
{{- if .Capabilities.APIVersions.Has "policy/v1/PodDisruptionBudget" }}
apiVersion: policy/v1
{{- else -}}
apiVersion: policy/v1beta1
{{- end }}
kind: PodDisruptionBudget
metadata:
name: {{ template "vmalert.server.fullname" . }}
namespace: {{ .Release.Namespace }}
labels:
{{- include "vmalert.server.labels" . | nindent 4 }}
{{- with .Values.server.podDisruptionBudget.labels }}
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
{{- if .Values.server.podDisruptionBudget.minAvailable }}
minAvailable: {{ .Values.server.podDisruptionBudget.minAvailable }}
{{- end }}
{{- if .Values.server.podDisruptionBudget.maxUnavailable }}
maxUnavailable: {{ .Values.server.podDisruptionBudget.maxUnavailable }}
{{- end }}
selector:
matchLabels:
{{- include "vmalert.server.matchLabels" . | nindent 6 }}
{{- end }}
@@ -0,0 +1,50 @@
{{- if and .Values.server.enabled -}}
apiVersion: v1
kind: Service
metadata:
namespace: {{ .Release.Namespace }}
{{- with .Values.server.service.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
labels:
{{- include "vmalert.server.labels" . | nindent 4 }}
{{- with .Values.server.service.labels }}
{{- toYaml . | nindent 4}}
{{- end }}
name: {{ template "vmalert.server.fullname" . }}
spec:
{{- with .Values.server.service.clusterIP }}
clusterIP: {{- . }}
{{- end }}
{{- with .Values.server.service.externalIPs }}
externalIPs:
{{- toYaml . | nindent 4 }}
{{- end }}
{{- with .Values.server.service.loadBalancerIP }}
loadBalancerIP: {{- . }}
{{- end }}
{{- with .Values.server.service.loadBalancerSourceRanges }}
loadBalancerSourceRanges:
{{- range $cidr := . }}
- {{ $cidr }}
{{- end }}
{{- end }}
ports:
- name: http
port: {{ .Values.server.service.servicePort }}
targetPort: http
protocol: TCP
{{- with .Values.server.service.nodePort }}
nodePort: {{ . }}
{{- end }}
selector:
{{- include "vmalert.server.matchLabels" . | nindent 4 }}
type: "{{ .Values.server.service.type }}"
{{- with .Values.server.service.healthCheckNodePort }}
healthCheckNodePort: {{ . }}
{{- end }}
{{- with .Values.server.service.externalTrafficPolicy }}
externalTrafficPolicy: {{ . }}
{{- end }}
{{- end }}
@@ -0,0 +1,44 @@
{{- if .Values.serviceMonitor.enabled -}}
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
{{- if .Values.serviceMonitor.annotations }}
annotations:
{{ toYaml .Values.serviceMonitor.annotations | indent 4 }}
{{- end }}
labels:
{{- include "vmalert.server.labels" . | nindent 4 }}
{{- with .Values.serviceMonitor.extraLabels -}}
{{ toYaml . | nindent 4 }}
{{- end }}
name: {{ template "vmalert.server.fullname" . }}
{{- if .Values.serviceMonitor.namespace }}
namespace: {{ .Values.serviceMonitor.namespace }}
{{- end }}
spec:
namespaceSelector:
matchNames:
- {{ .Release.Namespace }}
selector:
matchLabels:
{{- include "vmalert.server.matchLabels" . | nindent 6 }}
endpoints:
- port: http
{{- if .Values.serviceMonitor.scheme }}
scheme: {{ .Values.serviceMonitor.scheme }}
{{- end }}
{{- if .Values.serviceMonitor.interval }}
interval: {{ .Values.serviceMonitor.interval }}
{{- end }}
{{- if .Values.serviceMonitor.scrapeTimeout }}
scrapeTimeout: {{ .Values.serviceMonitor.scrapeTimeout }}
{{- end }}
{{- with .Values.serviceMonitor.tlsConfig }}
tlsConfig:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.serviceMonitor.relabelings }}
relabelings:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- end }}
@@ -0,0 +1,13 @@
{{- if .Values.serviceAccount.create -}}
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ include "vmalert.serviceAccountName" . }}
namespace: {{ .Release.Namespace }}
labels:
{{- include "vmalert.common.metaLabels" . | nindent 4 }}
{{- with .Values.serviceAccount.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
{{- end -}}