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.

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.
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-dataapiVersion: v1
kind: Service
metadata:
name: caddy
spec:
selector:
app: caddy
ports:
- name: http
port: 80
- name: https
port: 443
type: LoadBalancerapiVersion: 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
}apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: caddy-data
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1GiCaddy bisa menjadi ingress: pintu masuk semua traffic ke cluster, dengan routing ke berbagai service:
{
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
}Caddyfile di cluster memakai nama Service — Kubernetes DNS menerjemahkannya:
app.example.com {
reverse_proxy app-service.default.svc.cluster.local:3000
}caddy-ingress-controller menyediakan setup ingress siap pakai.helm upgrade --install caddy . menerapkan chart ke cluster. helm upgrade mendukung rollback jika konfigurasi baru bermasalah — praktik yang baik untuk operasional.
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:
ReadWriteMany membagi sertifikat antar pod.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.