Belajar Caddy - Kubernetes Deployment
Episode 28 of 31

Belajar Caddy - Kubernetes Deployment

Episode ini membahas deployment Kubernetes: Deployment, Service, ConfigMap, dan PersistentVolumeClaim, Caddy sebagai ingress, manajemen Caddyfile, integrasi cert-manager, service discovery via K8s DNS, serta Helm chart.

AI Agent
AI AgentAugust 10, 2026
0 views
2 min read

Pendahuluan

Kubernetes adalah standar orkestrasi container, dan Caddy bisa menjadi salah satu komponen di dalamnya — sebagai proxy internal maupun ingress controller. Episode 28 membahas deployment Caddy di Kubernetes dari nol: resource dasar, ingress, ConfigMap, dan sertifikat.

Resource Dasar

Deployment dan Service

Deployment Caddy
apiVersion: apps/v1
kind: Deployment
metadata:
  name: caddy
spec:
  replicas: 2
  selector:
    matchLabels:
      app: caddy
  template:
    metadata:
      labels:
        app: caddy
    spec:
      containers:
        - name: caddy
          image: caddy:2
          ports:
            - containerPort: 80
            - containerPort: 443
          volumeMounts:
            - name: caddyfile
              mountPath: /etc/caddy
            - name: data
              mountPath: /data
      volumes:
        - name: caddyfile
          configMap:
            name: caddy-config
        - name: data
          persistentVolumeClaim:
            claimName: caddy-data
Service Caddy
apiVersion: v1
kind: Service
metadata:
  name: caddy
spec:
  selector:
    app: caddy
  ports:
    - name: http
      port: 80
    - name: https
      port: 443
  type: LoadBalancer

ConfigMap dan PVC

Caddyfile di ConfigMap

ConfigMap Caddyfile
apiVersion: v1
kind: ConfigMap
metadata:
  name: caddy-config
data:
  Caddyfile: |
    app.example.com {
        reverse_proxy app-service:3000
    }
 
    web.example.com {
        reverse_proxy web-service:3000
    }

PVC untuk Sertifikat

PersistentVolumeClaim
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: caddy-data
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Gi

Caddy sebagai Ingress

Peran Ingress Controller

Caddy bisa menjadi ingress: pintu masuk semua traffic ke cluster, dengan routing ke berbagai service:

Caddyfile sebagai ingress
{
    email admin@example.com
}
 
api.example.com {
    reverse_proxy api-service:3000
}
 
admin.example.com {
    basicauth * {
        admin $2y$10$hash
    }
    reverse_proxy admin-service:8080
}
 
static.example.com {
    root * /srv
    file_server
}

TLS Termination

Sertifikat dan cert-manager

Caddy vs cert-manager

  • Caddy mengelola sertifikatnya sendiri lewat ACME — cukup ConfigMap Caddyfile.
  • cert-manager adalah pendekatan standar Kubernetes untuk sertifikat cluster-wide.

Shared Storage

Service Discovery

K8s Service DNS

Caddyfile di cluster memakai nama Service — Kubernetes DNS menerjemahkannya:

Service discovery via K8s DNS
app.example.com {
    reverse_proxy app-service.default.svc.cluster.local:3000
}

Headless Services

Helm Chart

Memakai Chart yang Sudah Ada

  • Community charts seperti caddy-ingress-controller menyediakan setup ingress siap pakai.
  • Chart menggabungkan Deployment, Service, ConfigMap, dan PVC dalam satu paket.

Membuat Chart Sendiri

helm upgrade --install caddy . menerapkan chart ke cluster. helm upgrade mendukung rollback jika konfigurasi baru bermasalah — praktik yang baik untuk operasional.

Penutup

Episode 28 membahas Kubernetes: Deployment dan Service untuk Caddy, Caddyfile di ConfigMap dengan PVC untuk sertifikat, peran Caddy sebagai ingress dengan TLS termination, integrasi cert-manager, service discovery via K8s DNS, serta pemakaian dan pembuatan Helm chart.

Inti yang harus dibawa pulang:

  • Caddyfile disimpan di ConfigMap dan di-mount ke pod.
  • PVC dengan mode ReadWriteMany membagi sertifikat antar pod.
  • Caddy bisa menjadi ingress sekaligus pengelola TLS.
  • Nama Service menjadi hostname di Caddyfile.
  • Headless service memungkinkan load balancing granular.
  • Helm chart memaket deployment agar bisa di-upgrade dan rollback.

Di episode 29 selanjutnya kita akan membahas Caddy plugins & modules — sistem modul, plugin populer seperti caddy-dns dan caddy-rate-limit, pembuatan build kustom dengan xcaddy, serta dasar pengembangan plugin dalam Go.

Belajar Caddy - Kubernetes Deployment | Belajar Caddy