Kubernetes Helm Charts 2026: āļ„āļđāđˆāļĄāļ·āļ­āļāļēāļĢ Packaging, Deployment āđāļĨāļ°āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ‡āļēāļ™

āđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰ Helm Charts āđƒāļ™ Kubernetes āļ­āļĒāđˆāļēāļ‡āļĨāļķāļāļ‹āļķāđ‰āļ‡āļ”āđ‰āļ§āļĒāļšāļ—āđ€āļĢāļĩāļĒāļ™āļ›āļāļīāļšāļąāļ•āļīāđ€āļāļĩāđˆāļĒāļ§āļāļąāļšāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡ chart, templating, deployment āđāļĨāļ°āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ—āļĩāđˆāļžāļšāļšāđˆāļ­āļĒāļ—āļĩāđˆāļŠāļļāļ”

Kubernetes Helm Charts 2026: āļ„āļđāđˆāļĄāļ·āļ­āļāļēāļĢ Packaging, Deployment āđāļĨāļ°āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ‡āļēāļ™

Kubernetes Helm Charts āļŠāđˆāļ§āļĒāļĨāļ”āļ„āļ§āļēāļĄāļ‹āļąāļšāļ‹āđ‰āļ­āļ™āđƒāļ™āļāļēāļĢ deploy āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āđ‚āļ”āļĒāļāļēāļĢāļĢāļ§āļĄ Kubernetes resources āļ—āļąāđ‰āļ‡āļŦāļĄāļ”āđ€āļ›āđ‡āļ™ artifact āđ€āļ”āļĩāļĒāļ§āļ—āļĩāđˆāļĄāļĩ version āļāļģāļāļąāļš Helm 3 āļ‹āļķāđˆāļ‡āđ€āļ›āđ‡āļ™āđ€āļ§āļ­āļĢāđŒāļŠāļąāļ™āđ€āļŠāļ–āļĩāļĒāļĢāļ›āļąāļˆāļˆāļļāļšāļąāļ™ āđ„āļĄāđˆāļ•āđ‰āļ­āļ‡āļāļēāļĢ Tiller āļ­āļĩāļāļ•āđˆāļ­āđ„āļ›āđāļĨāļ°āđ€āļžāļīāđˆāļĄāļāļēāļĢāļĢāļ­āļ‡āļĢāļąāļš OCI registry āļ—āļģāđƒāļŦāđ‰āļāļēāļĢāļāļĢāļ°āļˆāļēāļĒ chart āļĄāļĩāļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒāđāļĨāļ°āđ€āļ›āđ‡āļ™āļĄāļēāļ•āļĢāļāļēāļ™āļĄāļēāļāļ‚āļķāđ‰āļ™ āļšāļ—āļ„āļ§āļēāļĄāļ™āļĩāđ‰āļ„āļĢāļ­āļšāļ„āļĨāļļāļĄāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡ chart, templating, āļāļĨāļĒāļļāļ—āļ˜āđŒ deployment āđāļĨāļ°āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ—āļĩāđˆāļ—āļĩāļĄāļĢāļąāļšāļŠāļĄāļąāļ„āļĢāļ–āļēāļĄāļšāđˆāļ­āļĒāļ—āļĩāđˆāļŠāļļāļ”

āļ„āļđāđˆāļĄāļ·āļ­āļ­āđ‰āļēāļ‡āļ­āļīāļ‡āļ”āđˆāļ§āļ™ Helm 3

Helm charts āļ›āļĢāļ°āļāļ­āļšāļ”āđ‰āļ§āļĒ Chart.yaml (metadata), values.yaml (āļ„āđˆāļē default), āđāļĨāļ°āđ„āļ”āđ€āļĢāļāļ—āļ­āļĢāļĩ templates/ āļ—āļĩāđˆāļĄāļĩ Kubernetes manifests āļ„āļģāļŠāļąāđˆāļ‡ helm install āļˆāļ° render template āļ”āđ‰āļ§āļĒ values āđāļĨāļ°āļ™āļģāđ„āļ›āđƒāļŠāđ‰āļāļąāļš cluster

āļ—āļģāļ„āļ§āļēāļĄāđ€āļ‚āđ‰āļēāđƒāļˆāđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āđāļĨāļ°āļŠāđˆāļ§āļ™āļ›āļĢāļ°āļāļ­āļšāļ‚āļ­āļ‡ Helm Chart

Helm chart āļ„āļ·āļ­āđ„āļ”āđ€āļĢāļāļ—āļ­āļĢāļĩāļ—āļĩāđˆāļĄāļĩāđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļ—āļĩāđˆāļāļģāļŦāļ™āļ”āđ„āļ§āđ‰āļĨāđˆāļ§āļ‡āļŦāļ™āđ‰āļē āļŠāļ·āđˆāļ­ chart āļˆāļ°āļāļĨāļēāļĒāđ€āļ›āđ‡āļ™āļŠāļ·āđˆāļ­āđ„āļ”āđ€āļĢāļāļ—āļ­āļĢāļĩ āđāļĨāļ°āđāļ•āđˆāļĨāļ°āđ„āļŸāļĨāđŒāļĄāļĩāļˆāļļāļ”āļ›āļĢāļ°āļŠāļ‡āļ„āđŒāđ€āļ‰āļžāļēāļ°āđƒāļ™āļāļĢāļ°āļšāļ§āļ™āļāļēāļĢ packaging āđāļĨāļ° deployment

yaml
# Chart.yaml
apiVersion: v2
name: my-application
description: A production-ready web application
type: application
version: 1.0.0
appVersion: "2.1.0"
dependencies:
  - name: postgresql
    version: "15.x"
    repository: "https://charts.bitnami.com/bitnami"
    condition: postgresql.enabled

apiVersion: v2 āļĢāļ°āļšāļļāļ§āđˆāļēāđ€āļ‚āđ‰āļēāļāļąāļ™āđ„āļ”āđ‰āļāļąāļš Helm 3 field version āļ•āļīāļ”āļ•āļēāļĄāļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡āļ‚āļ­āļ‡ chart āđƒāļ™āļ‚āļ“āļ°āļ—āļĩāđˆ appVersion āđāļŠāļ”āļ‡āđ€āļ§āļ­āļĢāđŒāļŠāļąāļ™āļ‚āļ­āļ‡āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļ—āļĩāđˆ deploy Dependencies āļ›āļĢāļ°āļāļēāļĻ charts āļ­āļ·āđˆāļ™āļ—āļĩāđˆ chart āļ™āļĩāđ‰āļ•āđ‰āļ­āļ‡āļāļēāļĢ āļžāļĢāđ‰āļ­āļĄāđ€āļ‡āļ·āđˆāļ­āļ™āđ„āļ‚āđ€āļŠāļĢāļīāļĄāđ€āļžāļ·āđˆāļ­āđ€āļ›āļīāļ”āļŦāļĢāļ·āļ­āļ›āļīāļ”āļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™

yaml
# values.yaml
replicaCount: 3

image:
  repository: myregistry.io/app
  tag: "2.1.0"
  pullPolicy: IfNotPresent

service:
  type: ClusterIP
  port: 8080

resources:
  limits:
    cpu: 500m
    memory: 512Mi
  requests:
    cpu: 100m
    memory: 128Mi

postgresql:
  enabled: true
  auth:
    database: appdb

Values āļāļģāļŦāļ™āļ”āļāļēāļĢāļ•āļąāđ‰āļ‡āļ„āđˆāļē default āļ—āļĩāđˆāļœāļđāđ‰āđƒāļŠāđ‰āļŠāļēāļĄāļēāļĢāļ– override āđ„āļ”āđ‰āļĢāļ°āļŦāļ§āđˆāļēāļ‡āļāļēāļĢāļ•āļīāļ”āļ•āļąāđ‰āļ‡ āļāļēāļĢāļˆāļąāļ”āļāļĨāļļāđˆāļĄ values āļ āļēāļĒāđƒāļ•āđ‰ keys āļ—āļĩāđˆāļĄāļĩāļ„āļ§āļēāļĄāļŦāļĄāļēāļĒāļŠāđˆāļ§āļĒāđƒāļŦāđ‰āļāļēāļĢāļ•āļąāđ‰āļ‡āļ„āđˆāļēāđ€āļ›āđ‡āļ™āļĢāļ°āđ€āļšāļĩāļĒāļšāđāļĨāļ°āļ­āļ˜āļīāļšāļēāļĒāļ•āļąāļ§āđ€āļ­āļ‡āđ„āļ”āđ‰

āļŠāļĢāđ‰āļēāļ‡ Kubernetes Deployments āļ”āđ‰āļ§āļĒ Helm Templates

Helm templates āđƒāļŠāđ‰ Go templating āļĢāđˆāļ§āļĄāļāļąāļšāļŸāļąāļ‡āļāđŒāļŠāļąāļ™ Sprig āđ€āļžāļ·āđˆāļ­āļŠāļĢāđ‰āļēāļ‡ Kubernetes manifests āđāļšāļšāđ„āļ”āļ™āļēāļĄāļīāļ object {{ .Values }} āđƒāļŦāđ‰āļāļēāļĢāđ€āļ‚āđ‰āļēāļ–āļķāļ‡āđ€āļ™āļ·āđ‰āļ­āļŦāļē values.yaml āđƒāļ™āļ‚āļ“āļ°āļ—āļĩāđˆ {{ .Release }} āļĄāļĩ metadata āļ‚āļ­āļ‡ deployment

yaml
# templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ include "my-application.fullname" . }}
  labels:
    {{- include "my-application.labels" . | nindent 4 }}
spec:
  replicas: {{ .Values.replicaCount }}
  selector:
    matchLabels:
      {{- include "my-application.selectorLabels" . | nindent 6 }}
  template:
    metadata:
      labels:
        {{- include "my-application.selectorLabels" . | nindent 8 }}
    spec:
      containers:
        - name: {{ .Chart.Name }}
          image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
          imagePullPolicy: {{ .Values.image.pullPolicy }}
          ports:
            - containerPort: {{ .Values.service.port }}
          resources:
            {{- toYaml .Values.resources | nindent 12 }}

āļŸāļąāļ‡āļāđŒāļŠāļąāļ™ nindent āđ€āļžāļīāđˆāļĄ newline āđāļĨāļ° indentation āļ‹āļķāđˆāļ‡āļŠāļģāļ„āļąāļāļĄāļēāļāļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡ YAML āļ—āļĩāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡ āļāļēāļĢāđƒāļŠāđ‰ include āļāļąāļš named templates (āļāļģāļŦāļ™āļ”āđƒāļ™ _helpers.tpl) āļŠāđˆāļ§āļĒāđƒāļŦāđ‰ templates āđ€āļ›āđ‡āļ™āđ„āļ›āļ•āļēāļĄāļŦāļĨāļąāļ DRY āđāļĨāļ°āļ”āļđāđāļĨāļĢāļąāļāļĐāļēāļ‡āđˆāļēāļĒ

yaml
# templates/_helpers.tpl
{{- define "my-application.fullname" -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- $name := default .Chart.Name .Values.nameOverride }}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}

{{- define "my-application.labels" -}}
helm.sh/chart: {{ include "my-application.chart" . }}
app.kubernetes.io/name: {{ include "my-application.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}

Helper templates āļ—āļģāđƒāļŦāđ‰ naming conventions āđāļĨāļ° labels āđ€āļ›āđ‡āļ™āļĄāļēāļ•āļĢāļāļēāļ™āđƒāļ™āļ—āļļāļ resources āļŠāđˆāļ§āļĒāđƒāļŦāđ‰āļŠāļ­āļ”āļ„āļĨāđ‰āļ­āļ‡āļāļąāļš labels āļ—āļĩāđˆ Kubernetes āđāļ™āļ°āļ™āļģ

Helm Chart Dependencies āđāļĨāļ° Subcharts

āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļ—āļĩāđˆāļ‹āļąāļšāļ‹āđ‰āļ­āļ™āļĄāļąāļāļ•āđ‰āļ­āļ‡āļžāļķāđˆāļ‡āļžāļē databases, caches, āļŦāļĢāļ·āļ­ message queues Helm dependencies āļ­āļ™āļļāļāļēāļ•āđƒāļŦāđ‰āļāļąāļ‡āļŠāļīāđˆāļ‡āđ€āļŦāļĨāđˆāļēāļ™āļĩāđ‰āđ€āļ›āđ‡āļ™ subcharts āļ‹āļķāđˆāļ‡āļˆāļąāļ”āļāļēāļĢāđ‚āļ”āļĒāļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļīāļĢāļ°āļŦāļ§āđˆāļēāļ‡āļāļēāļĢāļ•āļīāļ”āļ•āļąāđ‰āļ‡

bash
# āļ­āļąāļ›āđ€āļ”āļ• dependencies āļāđˆāļ­āļ™ packaging
helm dependency update ./my-application

# Build dependencies (āļŠāļĢāđ‰āļēāļ‡āđ„āļ”āđ€āļĢāļāļ—āļ­āļĢāļĩ charts/)
helm dependency build ./my-application

āļ„āļģāļŠāļąāđˆāļ‡ helm dependency update āļ”āļēāļ§āļ™āđŒāđ‚āļŦāļĨāļ” dependencies āđ„āļ›āļĒāļąāļ‡āđ„āļ”āđ€āļĢāļāļ—āļ­āļĢāļĩ charts/ Conditional dependencies āđƒāļŠāđ‰ values āđ€āļžāļ·āđˆāļ­āđ€āļ›āļīāļ”/āļ›āļīāļ”:

yaml
# values.yaml
postgresql:
  enabled: true

redis:
  enabled: false
yaml
# Chart.yaml
dependencies:
  - name: postgresql
    version: "15.x"
    repository: "https://charts.bitnami.com/bitnami"
    condition: postgresql.enabled
  - name: redis
    version: "19.x"
    repository: "https://charts.bitnami.com/bitnami"
    condition: redis.enabled

āļĢāļđāļ›āđāļšāļšāļ™āļĩāđ‰āđ€āļ›āļīāļ”āđƒāļŠāđ‰āļ‡āļēāļ™āļāļēāļĢāļ•āļąāđ‰āļ‡āļ„āđˆāļēāđ€āļ‰āļžāļēāļ°āļŠāļ āļēāļžāđāļ§āļ”āļĨāđ‰āļ­āļĄāļ—āļĩāđˆ production āđƒāļŠāđ‰ managed services āđƒāļ™āļ‚āļ“āļ°āļ—āļĩāđˆ development āđƒāļŠāđ‰ databases āļ āļēāļĒāđƒāļ™ cluster

āļĢāļ­āļ‡āļĢāļąāļš OCI Registry

Helm 3.8+ āļĢāļ­āļ‡āļĢāļąāļšāļāļēāļĢāļˆāļąāļ”āđ€āļāđ‡āļš charts āđƒāļ™ OCI-compliant registries āđ€āļŠāđˆāļ™ Docker Hub, GitHub Container Registry, āđāļĨāļ° AWS ECR Push charts āļ”āđ‰āļ§āļĒ helm push my-app-1.0.0.tgz oci://registry.example.com/charts

Deploy Helm Charts āļ”āđ‰āļ§āļĒ Release Management

Helm āļ•āļīāļ”āļ•āļēāļĄ deployments āđ€āļ›āđ‡āļ™ releases āļ—āļģāđƒāļŦāđ‰āļŠāļēāļĄāļēāļĢāļ– rollback āđāļĨāļ° upgrade āđāļšāļšāļĄāļĩ version āđ„āļ”āđ‰ āđāļ•āđˆāļĨāļ° release āđ€āļāđ‡āļš history āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāđāļĨāļ°āļāļđāđ‰āļ„āļ·āļ™

bash
# āļ•āļīāļ”āļ•āļąāđ‰āļ‡ chart āļ”āđ‰āļ§āļĒ custom values
helm install my-release ./my-application \
  --namespace production \
  --create-namespace \
  --values production-values.yaml \
  --set image.tag=2.1.1

# Upgrade release āļ—āļĩāđˆāļĄāļĩāļ­āļĒāļđāđˆ
helm upgrade my-release ./my-application \
  --namespace production \
  --values production-values.yaml \
  --set image.tag=2.2.0 \
  --atomic \
  --timeout 5m

flag --atomic āļŠāđˆāļ§āļĒāđƒāļŦāđ‰ upgrade āļ—āļĩāđˆāļĨāđ‰āļĄāđ€āļŦāļĨāļ§ rollback āđ‚āļ”āļĒāļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļī flag --timeout āļāļģāļŦāļ™āļ”āđ€āļ§āļĨāļēāļ—āļĩāđˆ Helm āļĢāļ­āđƒāļŦāđ‰ resources āļžāļĢāđ‰āļ­āļĄāļāđˆāļ­āļ™āļ›āļĢāļ°āļāļēāļĻāļ§āđˆāļēāļĨāđ‰āļĄāđ€āļŦāļĨāļ§

bash
# āļ”āļđ release history
helm history my-release -n production

# Rollback āđ„āļ›āļĒāļąāļ‡ revision āļāđˆāļ­āļ™āļŦāļ™āđ‰āļē
helm rollback my-release 2 -n production

# āļ–āļ­āļ™āļāļēāļĢāļ•āļīāļ”āļ•āļąāđ‰āļ‡ release
helm uninstall my-release -n production --keep-history

flag --keep-history āđ€āļāđ‡āļšāļĢāļąāļāļĐāļēāļšāļąāļ™āļ—āļķāļ release āđāļĄāđ‰āļŦāļĨāļąāļ‡āļˆāļēāļāļ–āļ­āļ™āļāļēāļĢāļ•āļīāļ”āļ•āļąāđ‰āļ‡āđāļĨāđ‰āļ§ āļ‹āļķāđˆāļ‡āļĄāļĩāļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒāļŠāļģāļŦāļĢāļąāļš compliance āđāļĨāļ° debugging

āļžāļĢāđ‰āļ­āļĄāļ—āļĩāđˆāļˆāļ°āļžāļīāļŠāļīāļ•āļāļēāļĢāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ DevOps āđāļĨāđ‰āļ§āļŦāļĢāļ·āļ­āļĒāļąāļ‡āļ„āļĢāļąāļš?

āļāļķāļāļāļ™āļ”āđ‰āļ§āļĒāļ•āļąāļ§āļˆāļģāļĨāļ­āļ‡āđāļšāļšāđ‚āļ•āđ‰āļ•āļ­āļš, flashcards āđāļĨāļ°āđāļšāļšāļ—āļ”āļŠāļ­āļšāđ€āļ—āļ„āļ™āļīāļ„āļ„āļĢāļąāļš

āļāļĨāļĒāļļāļ—āļ˜āđŒāļāļēāļĢ Testing āđāļĨāļ° Validation Helm Chart

āļāļēāļĢāļ—āļ”āļŠāļ­āļš Helm charts āļāđˆāļ­āļ™ deployment āļŠāđˆāļ§āļĒāļˆāļąāļšāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ” template āđāļĨāļ°āļ›āļąāļāļŦāļēāļāļēāļĢāļ•āļąāđ‰āļ‡āļ„āđˆāļēāļ•āļąāđ‰āļ‡āđāļ•āđˆāđ€āļ™āļīāđˆāļ™āđ† Helm āļĄāļĩāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āđƒāļ™āļ•āļąāļ§āļŠāļģāļŦāļĢāļąāļš linting āđāļĨāļ° dry-run testing

bash
# Lint chart āđ€āļžāļ·āđˆāļ­āļŦāļēāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”āđāļĨāļ° best practices
helm lint ./my-application

# Render templates āđāļšāļš local āđ‚āļ”āļĒāđ„āļĄāđˆ deploy
helm template my-release ./my-application \
  --values production-values.yaml \
  > rendered-manifests.yaml

# Dry-run āļāļąāļš cluster API
helm install my-release ./my-application \
  --dry-run \
  --debug \
  --namespace production

āļ„āļģāļŠāļąāđˆāļ‡ helm template render manifests āđāļšāļš local āļ‹āļķāđˆāļ‡āļĄāļĩāļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒāļŠāļģāļŦāļĢāļąāļš CI pipelines āļ—āļĩāđˆāļ•āļĢāļ§āļˆāļŠāļ­āļš YAML āļ—āļĩāđˆāļŠāļĢāđ‰āļēāļ‡āļ‚āļķāđ‰āļ™ flag --dry-run āļŠāđˆāļ‡ manifests āđ„āļ›āļĒāļąāļ‡ Kubernetes API server āđ€āļžāļ·āđˆāļ­ validation āđ‚āļ”āļĒāđ„āļĄāđˆāļŠāļĢāđ‰āļēāļ‡ resources

yaml
# templates/tests/test-connection.yaml
apiVersion: v1
kind: Pod
metadata:
  name: "{{ include "my-application.fullname" . }}-test"
  labels:
    {{- include "my-application.labels" . | nindent 4 }}
  annotations:
    "helm.sh/hook": test
spec:
  containers:
    - name: curl
      image: curlimages/curl:8.7.1
      command: ['curl']
      args: ['{{ include "my-application.fullname" . }}:{{ .Values.service.port }}/health']
  restartPolicy: Never

Helm hooks āļ—āļĩāđˆāļĄāļĩ helm.sh/hook: test āļˆāļ°āļ—āļģāļ‡āļēāļ™āļŦāļĨāļąāļ‡ helm test my-release āđ€āļžāļ·āđˆāļ­āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ§āđˆāļē deployment āļ—āļģāļ‡āļēāļ™āļ–āļđāļāļ•āđ‰āļ­āļ‡āļŦāļĨāļąāļ‡āļāļēāļĢāļ•āļīāļ”āļ•āļąāđ‰āļ‡

āđ€āļ—āļ„āļ™āļīāļ„ Helm Templating āļ‚āļąāđ‰āļ™āļŠāļđāļ‡

Production charts āļ•āđ‰āļ­āļ‡āļāļēāļĢ conditional logic, loops, āđāļĨāļ° data transformation āļŸāļąāļ‡āļāđŒāļŠāļąāļ™ Sprig āļ‚āļĒāļēāļĒ Go templates āļ”āđ‰āļ§āļĒāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āļŠāļģāļŦāļĢāļąāļš string manipulation, encoding, āđāļĨāļ° flow control

yaml
# templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ include "my-application.fullname" . }}-config
data:
  {{- range $key, $value := .Values.config }}
  {{ $key }}: {{ $value | quote }}
  {{- end }}
  
  {{- if .Values.features.enabled }}
  FEATURE_FLAGS: {{ .Values.features.flags | join "," | quote }}
  {{- end }}
yaml
# templates/secrets.yaml
apiVersion: v1
kind: Secret
metadata:
  name: {{ include "my-application.fullname" . }}-secrets
type: Opaque
data:
  {{- range $key, $value := .Values.secrets }}
  {{ $key }}: {{ $value | b64enc }}
  {{- end }}

āļŸāļąāļ‡āļāđŒāļŠāļąāļ™ range āļ§āļ™āļ‹āđ‰āļģāļœāđˆāļēāļ™ maps āđāļĨāļ° lists āļŸāļąāļ‡āļāđŒāļŠāļąāļ™ b64enc āđ€āļ‚āđ‰āļēāļĢāļŦāļąāļŠ base64 āļ„āđˆāļēāļŠāļģāļŦāļĢāļąāļš Kubernetes secrets Pipe operators āđ€āļŠāļ·āđˆāļ­āļĄāļ•āđˆāļ­āļŸāļąāļ‡āļāđŒāļŠāļąāļ™āđ€āļžāļ·āđˆāļ­āđāļ›āļĨāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨ

āļāļēāļĢāļˆāļąāļ”āļāļēāļĢ Secrets

āļāļēāļĢāđ€āļāđ‡āļš secrets āđƒāļ™ values.yaml āļˆāļ°āđ€āļ›āļīāļ”āđ€āļœāļĒāđƒāļ™ version control āđƒāļŠāđ‰ external secret managers āđ€āļŠāđˆāļ™ HashiCorp Vault, AWS Secrets Manager āļĢāđˆāļ§āļĄāļāļąāļš External Secrets Operator, āļŦāļĢāļ·āļ­āđ„āļŸāļĨāđŒ values āļ—āļĩāđˆāđ€āļ‚āđ‰āļēāļĢāļŦāļąāļŠāļ”āđ‰āļ§āļĒ SOPS āļŠāļģāļŦāļĢāļąāļš production deployments

āļ„āļģāļ–āļēāļĄāđāļĨāļ°āļ„āļģāļ•āļ­āļšāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ Helm Charts

āļāļēāļĢāļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ—āļēāļ‡āđ€āļ—āļ„āļ™āļīāļ„āļĄāļąāļāļ—āļ”āļŠāļ­āļšāļ„āļ§āļēāļĄāļĢāļđāđ‰ Helm āļœāđˆāļēāļ™āļ„āļģāļ–āļēāļĄāđāļ™āļ§āļ„āļīāļ”āđāļĨāļ°āļ›āļāļīāļšāļąāļ•āļī āļŠāđˆāļ§āļ™āļ•āđˆāļ­āđ„āļ›āļ™āļĩāđ‰āļ„āļĢāļ­āļšāļ„āļĨāļļāļĄāļŦāļąāļ§āļ‚āđ‰āļ­āļ—āļĩāđˆāļ–āļđāļāļ–āļēāļĄāļšāđˆāļ­āļĒāļ—āļĩāđˆāļŠāļļāļ”

āļ„āļ§āļēāļĄāđāļ•āļāļ•āđˆāļēāļ‡āļĢāļ°āļŦāļ§āđˆāļēāļ‡ helm install āđāļĨāļ° helm upgrade --install āļ„āļ·āļ­āļ­āļ°āđ„āļĢ?

helm install āļŠāļĢāđ‰āļēāļ‡ release āđƒāļŦāļĄāđˆāđāļĨāļ°āļĨāđ‰āļĄāđ€āļŦāļĨāļ§āļ–āđ‰āļē release āļĄāļĩāļ­āļĒāļđāđˆāđāļĨāđ‰āļ§ helm upgrade --install (āļžāļĢāđ‰āļ­āļĄ flag --install) āļŠāļĢāđ‰āļēāļ‡ release āđƒāļŦāļĄāđˆāļ–āđ‰āļēāđ„āļĄāđˆāļĄāļĩ āļŦāļĢāļ·āļ­ upgrade āļ–āđ‰āļēāļĄāļĩāļ­āļĒāļđāđˆāđāļĨāđ‰āļ§ CI/CD pipelines āļĄāļąāļāđƒāļŠāđ‰ helm upgrade --install āļŠāļģāļŦāļĢāļąāļš idempotent deployments

āļˆāļ°āļŠāđˆāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļ­āđˆāļ­āļ™āđ„āļ›āļĒāļąāļ‡ Helm charts āđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āđ„āļĢ?

āļĄāļĩāļŠāļēāļĄāļ§āļīāļ˜āļĩ: external secret managers (Vault, AWS Secrets Manager), āđ„āļŸāļĨāđŒ values āļ—āļĩāđˆāđ€āļ‚āđ‰āļēāļĢāļŦāļąāļŠ (SOPS, sealed-secrets), āļŦāļĢāļ·āļ­ Kubernetes secrets āļ—āļĩāđˆāļŠāļĢāđ‰āļēāļ‡āļ āļēāļĒāļ™āļ­āļ Helm āđāļĨāļ°āļ­āđ‰āļēāļ‡āļ­āļīāļ‡āđƒāļ™ templates āļŦāļĨāļĩāļāđ€āļĨāļĩāđˆāļĒāļ‡āļāļēāļĢāđ€āļāđ‡āļš secrets āđƒāļ™āđ„āļŸāļĨāđŒ values.yaml āđāļšāļš plain-text āļ—āļĩāđˆ commit āđ„āļ›āļĒāļąāļ‡ version control

Helm hooks āļ„āļ·āļ­āļ­āļ°āđ„āļĢāđāļĨāļ°āļ„āļ§āļĢāđƒāļŠāđ‰āđ€āļĄāļ·āđˆāļ­āđ„āļŦāļĢāđˆ?

Hooks āļ—āļģāļ‡āļēāļ™āļ—āļĩāđˆāļˆāļļāļ”āđ€āļ‰āļžāļēāļ°āđƒāļ™ lifecycle āļ‚āļ­āļ‡ release: pre-install, post-install, pre-upgrade, post-upgrade, pre-delete, post-delete, pre-rollback, post-rollback, āđāļĨāļ° test āļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™āļ—āļąāđˆāļ§āđ„āļ›āļĢāļ§āļĄāļ–āļķāļ‡ database migrations āļāđˆāļ­āļ™ upgrades, āļŠāđˆāļ‡ notifications āļŦāļĨāļąāļ‡ deployments, āļŦāļĢāļ·āļ­āļĢāļąāļ™ integration tests

āļˆāļ°āļˆāļąāļ”āļāļēāļĢ chart versioning āđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āđ„āļĢ?

field version āđƒāļ™ Chart.yaml āļ•āļīāļ”āļ•āļēāļĄāļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡ chart āđ‚āļ”āļĒāđƒāļŠāđ‰ semantic versioning field appVersion āļ•āļīāļ”āļ•āļēāļĄāđ€āļ§āļ­āļĢāđŒāļŠāļąāļ™āļ‚āļ­āļ‡āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļ—āļĩāđˆ deploy āđ€āļžāļīāđˆāļĄ version āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāđāļāđ‰āđ„āļ‚ chart āļ—āļļāļāļ„āļĢāļąāđ‰āļ‡ āđāļĄāđ‰āļ§āđˆāļēāđ€āļ§āļ­āļĢāđŒāļŠāļąāļ™āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļˆāļ°āđ€āļŦāļĄāļ·āļ­āļ™āđ€āļ”āļīāļĄ

āļˆāļļāļ”āļ›āļĢāļ°āļŠāļ‡āļ„āđŒāļ‚āļ­āļ‡ .helmignore āļ„āļ·āļ­āļ­āļ°āđ„āļĢ?

āļ„āļĨāđ‰āļēāļĒāļāļąāļš .gitignore, .helmignore āļĒāļāđ€āļ§āđ‰āļ™āđ„āļŸāļĨāđŒāļˆāļēāļāļāļēāļĢ packaging chart āļĢāļēāļĒāļāļēāļĢāļ—āļąāđˆāļ§āđ„āļ›āļĢāļ§āļĄāļ–āļķāļ‡ *.tgz (āļŦāļĨāļĩāļāđ€āļĨāļĩāđˆāļĒāļ‡āļāļēāļĢ packaging builds āļāđˆāļ­āļ™āļŦāļ™āđ‰āļē), .git/, āđ€āļ­āļāļŠāļēāļĢ *.md āļ—āļĩāđˆāđ„āļĄāđˆāļˆāļģāđ€āļ›āđ‡āļ™āļ•āļ­āļ™ runtime, āđāļĨāļ°āđ„āļŸāļĨāđŒāļāļēāļĢāļ•āļąāđ‰āļ‡āļ„āđˆāļē CI

āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāđ€āļ•āļĢāļĩāļĒāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ Kubernetes āđ€āļžāļīāđˆāļĄāđ€āļ•āļīāļĄ āļŠāļģāļĢāļ§āļˆāđ‚āļĄāļ”āļđāļĨāļ„āļģāļ–āļēāļĄ Kubernetes Basics āđāļĨāļ° Kubernetes Advanced āļšāļ™ SharpSkill

āļŠāļĢāļļāļ›

āļ›āļĢāļ°āđ€āļ”āđ‡āļ™āļ›āļāļīāļšāļąāļ•āļīāļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ—āļģāļ‡āļēāļ™āļāļąāļš Helm charts:

  • āļˆāļąāļ”āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡ charts āļ”āđ‰āļ§āļĒāļāļēāļĢāđāļĒāļāļ—āļĩāđˆāļŠāļąāļ”āđ€āļˆāļ™āļĢāļ°āļŦāļ§āđˆāļēāļ‡ metadata Chart.yaml, defaults values.yaml, āđāļĨāļ°āđ„āļ”āđ€āļĢāļāļ—āļ­āļĢāļĩ templates āļ—āļĩāđˆāļĄāļĩ Kubernetes manifests
  • āđƒāļŠāđ‰ helper templates āđƒāļ™ _helpers.tpl āđ€āļžāļ·āđˆāļ­āļ—āļģāđƒāļŦāđ‰ naming āđāļĨāļ° labels āđ€āļ›āđ‡āļ™āļĄāļēāļ•āļĢāļāļēāļ™āđƒāļ™āļ—āļļāļ resources
  • āļˆāļąāļ”āļāļēāļĢ dependencies āļœāđˆāļēāļ™ Chart.yaml āļ”āđ‰āļ§āļĒ conditional enablement āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ•āļąāđ‰āļ‡āļ„āđˆāļēāđ€āļ‰āļžāļēāļ°āļŠāļ āļēāļžāđāļ§āļ”āļĨāđ‰āļ­āļĄ
  • āļ—āļ”āļŠāļ­āļš charts āļ”āđ‰āļ§āļĒ helm lint, helm template, āđāļĨāļ° helm install --dry-run āļāđˆāļ­āļ™ deploy āđ„āļ›āļĒāļąāļ‡ production
  • āļ•āļīāļ”āļ•āļēāļĄ releases āļ”āđ‰āļ§āļĒāļŠāļ·āđˆāļ­āļ—āļĩāđˆāļĄāļĩāļ„āļ§āļēāļĄāļŦāļĄāļēāļĒāđāļĨāļ°āđƒāļŠāđ‰ flag --atomic āļŠāļģāļŦāļĢāļąāļš automatic rollback āđ€āļĄāļ·āđˆāļ­ upgrade āļĨāđ‰āļĄāđ€āļŦāļĨāļ§
  • āđ€āļāđ‡āļš secrets āđƒāļ™ external managers āđāļ—āļ™āļ—āļĩāđˆāļˆāļ°āđ€āļ›āđ‡āļ™āđ„āļŸāļĨāđŒ values āđāļšāļš plain-text

āđ€āļĢāļīāđˆāļĄāļāļķāļāļ‹āđ‰āļ­āļĄāđ€āļĨāļĒ!

āļ—āļ”āļŠāļ­āļšāļ„āļ§āļēāļĄāļĢāļđāđ‰āļ‚āļ­āļ‡āļ„āļļāļ“āļ”āđ‰āļ§āļĒāļ•āļąāļ§āļˆāļģāļĨāļ­āļ‡āļŠāļąāļĄāļ āļēāļĐāļ“āđŒāđāļĨāļ°āđāļšāļšāļ—āļ”āļŠāļ­āļšāđ€āļ—āļ„āļ™āļīāļ„āļ„āļĢāļąāļš

āđāļŠāļĢāđŒ

āļšāļ—āļ„āļ§āļēāļĄāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡

Prometheus vs Grafana vs Datadog monitoring comparison for DevOps interviews

Prometheus vs Grafana vs Datadog āđƒāļ™āļ›āļĩ 2026: āđ€āļ›āļĢāļĩāļĒāļšāđ€āļ—āļĩāļĒāļšāļĢāļ°āļšāļš Monitoring āđāļĨāļ°āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ DevOps

āđ€āļ›āļĢāļĩāļĒāļšāđ€āļ—āļĩāļĒāļš Prometheus, Grafana āđāļĨāļ° Datadog āļŠāļģāļŦāļĢāļąāļš monitoring āđƒāļ™āļ›āļĩ 2026 āļ„āļĢāļ­āļšāļ„āļĨāļļāļĄāļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄ, āļ āļēāļĐāļē query, alerting, āļĢāļēāļ„āļē TCO, Kubernetes monitoring āđāļĨāļ°āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ‡āļēāļ™ DevOps āļ”āđ‰āļēāļ™ observability

āđāļœāļ™āļ āļēāļžāđāļŠāļ”āļ‡āļāļēāļĢāļ—āļģāļ‡āļēāļ™āļ‚āļ­āļ‡ ArgoCD āđāļĨāļ° GitOps āļšāļ™ Kubernetes

ArgoCD āđāļĨāļ° GitOps āļŠāļģāļŦāļĢāļąāļš Kubernetes: āļ„āļđāđˆāļĄāļ·āļ­āļ‰āļšāļąāļšāļŠāļĄāļšāļđāļĢāļ“āđŒāđāļĨāļ°āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ‡āļēāļ™ 2026

āđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰āļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™ ArgoCD āļŠāļģāļŦāļĢāļąāļš GitOps āļšāļ™ Kubernetes āļ„āļĢāļ­āļšāļ„āļĨāļļāļĄāļ•āļąāđ‰āļ‡āđāļ•āđˆāļžāļ·āđ‰āļ™āļāļēāļ™āđ„āļ›āļˆāļ™āļ–āļķāļ‡āđ€āļ—āļ„āļ™āļīāļ„āļ‚āļąāđ‰āļ™āļŠāļđāļ‡ āļžāļĢāđ‰āļ­āļĄāļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ‡āļēāļ™āļ—āļĩāđˆāļžāļšāļšāđˆāļ­āļĒāđƒāļ™āļ›āļĩ 2026

āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ‡āļēāļ™ CI/CD Pipeline: GitHub Actions, GitLab CI āđāļĨāļ° Jenkins āļ›āļĩ 2026

āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ‡āļēāļ™ CI/CD Pipeline: GitHub Actions, GitLab CI āđāļĨāļ° Jenkins āļ›āļĩ 2026

āļĢāļ§āļĄāļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ‡āļēāļ™ CI/CD pipeline āļžāļĢāđ‰āļ­āļĄāļ„āļģāļ•āļ­āļšāļŠāļģāļŦāļĢāļąāļšāļ›āļĩ 2026 āļ„āļĢāļ­āļšāļ„āļĨāļļāļĄ GitHub Actions workflow, GitLab CI pipeline, Jenkins declarative pipeline āđāļĨāļ°āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒ supply chain