📅 Ngày 4: Làm Việc Với Helm Charts¶
🎯 Mục tiêu hôm nay¶
- Hiểu cách ArgoCD render Helm template
- Deploy ứng dụng phức tạp (Redis) bằng Helm qua ArgoCD
- Override
values.yamltừ giao diện ArgoCD
📖 Lý thuyết¶
Helm trong ArgoCD¶
ArgoCD hỗ trợ Helm charts native — không cần cài Helm CLI trên máy. ArgoCD tự:
- Clone Helm chart từ repo
- Render template với
values.yaml - Apply kết quả lên cluster
┌──────────────────────────────────────────────────┐
│ ArgoCD + Helm Flow │
│ │
│ Helm Repo/Git ──→ ArgoCD ──→ helm template ──→ │
│ ↓ │
│ Rendered YAML ──→ kubectl apply │
│ │
│ ⚠️ ArgoCD KHÔNG chạy "helm install" │
│ Nó chỉ render template rồi apply YAML │
└──────────────────────────────────────────────────┘
3 cách dùng Helm trong ArgoCD¶
| Cách | Source | Mô tả |
|---|---|---|
| Helm Repo | repoURL: https://charts.bitnami.com/bitnami |
Chart từ Helm repository |
| Git Repo | repoURL: https://github.com/user/repo.git |
Chart nằm trong Git repo |
| OCI Registry | repoURL: oci://registry.example.com/charts |
Chart dạng OCI |
Override Values¶
# Cách 1: Inline values trong Application
spec:
source:
helm:
values: |
replicaCount: 3
service:
type: NodePort
# Cách 2: valueFiles
spec:
source:
helm:
valueFiles:
- values-production.yaml
# Cách 3: parameters (từng key)
spec:
source:
helm:
parameters:
- name: replicaCount
value: "3"
- name: service.type
value: NodePort
🔧 Thực hành¶
Bước 1: Deploy Redis bằng Helm qua ArgoCD¶
# Áp dụng Application cho Redis
kubectl apply -f argocd/helm-app-redis.yaml
# Hoặc qua CLI
argocd app create redis \
--repo https://charts.bitnami.com/bitnami \
--helm-chart redis \
--revision 19.6.4 \
--dest-server https://kubernetes.default.svc \
--dest-namespace redis \
--sync-option CreateNamespace=true \
--helm-set architecture=standalone \
--helm-set auth.enabled=false
# Sync
argocd app sync redis
Bước 2: Kiểm tra¶
# Xem app status
argocd app get redis
# Xem pods
kubectl get pods -n redis
# Test Redis
kubectl exec -it redis-master-0 -n redis -- redis-cli ping
# → PONG
Bước 3: Override values từ UI¶
- Mở ArgoCD UI → Click vào app
redis - Click APP DETAILS → PARAMETERS
- Thay đổi giá trị, ví dụ:
replica.replicaCount=2 - Click SAVE → SYNC
Bước 4: Deploy WordPress (Nâng cao)¶
❓ FAQ¶
Q: Có cần cài Helm CLI trên máy để ArgoCD chạy không?¶
A: Không! ArgoCD tự tích hợp Helm engine bên trong. Nó chạy helm template (không phải helm install) rồi apply YAML trực tiếp. Bạn chỉ cần Helm CLI nếu muốn debug template locally.
Q: Khi nào nên dùng Helm qua ArgoCD thay vì helm install thẳng?¶
A: Luôn luôn dùng ArgoCD nếu bạn theo GitOps! helm install không có audit trail, drift detection, hay rollback tự động.
Q: Helm hooks có hoạt động với ArgoCD không?¶
A: Có, nhưng ArgoCD chuyển đổi Helm hooks thành ArgoCD resource hooks. Hành vi có thể hơi khác.
📚 Bài tập & Ôn tập¶
⏮️ Ngày trước: Day 03 — Sync Strategies & Phục hồi sự cố ⏭️ Ngày tiếp: Day 05 — Kustomize