151 lines
3.5 KiB
Markdown
151 lines
3.5 KiB
Markdown
# K3s SILARAS - Kustomize Dev → Prod
|
|
|
|
Paket ini sengaja memakai struktur **base + overlays/dev + overlays/prod**. Tidak ada manifest standalone dan tidak ada shortcut root yang langsung mengarah ke production.
|
|
|
|
Tujuan alurnya sederhana:
|
|
|
|
1. Ubah konfigurasi/image di `base` atau konfigurasi khusus environment di overlay terkait.
|
|
2. Apply **development** lebih dulu.
|
|
3. Periksa Pod, Service, PVC, HPA, Ingress, probe, dan log di development.
|
|
4. Jika hasil development sudah baik, apply **production**.
|
|
|
|
## Struktur
|
|
|
|
```text
|
|
.
|
|
├── base/
|
|
│ ├── deployment.yaml
|
|
│ ├── deployment-probes.yaml
|
|
│ ├── deployment-resources.yaml
|
|
│ ├── deployment-volumes.yaml
|
|
│ ├── pvc.yaml
|
|
│ ├── service.yaml
|
|
│ └── kustomization.yaml
|
|
└── overlays/
|
|
├── dev/
|
|
│ ├── namespace.yaml
|
|
│ ├── configmap.yaml
|
|
│ ├── hpa.yaml
|
|
│ ├── ingress.yaml
|
|
│ └── kustomization.yaml
|
|
└── prod/
|
|
├── namespace.yaml
|
|
├── configmap.yaml
|
|
├── hpa.yaml
|
|
├── ingress.yaml
|
|
└── kustomization.yaml
|
|
```
|
|
|
|
## 1. Preview hasil development
|
|
|
|
Sebelum apply, lihat manifest final hasil Kustomize:
|
|
|
|
```bash
|
|
kubectl kustomize overlays/dev
|
|
```
|
|
|
|
Jika ingin menyimpan hasil render untuk diperiksa:
|
|
|
|
```bash
|
|
kubectl kustomize overlays/dev > /tmp/silaras-dev-rendered.yaml
|
|
```
|
|
|
|
## 2. Apply development
|
|
|
|
```bash
|
|
kubectl apply -k overlays/dev
|
|
```
|
|
|
|
Pantau rollout:
|
|
|
|
```bash
|
|
kubectl rollout status deployment/silaras-dev -n rssa-apps-dev
|
|
kubectl get deploy,pod,svc,pvc,ingress,hpa -n rssa-apps-dev
|
|
```
|
|
|
|
Periksa log:
|
|
|
|
```bash
|
|
kubectl logs -n rssa-apps-dev deployment/silaras-dev --tail=100
|
|
```
|
|
|
|
Periksa PVC/HPA jika diperlukan:
|
|
|
|
```bash
|
|
kubectl describe pvc silaras-dev -n rssa-apps-dev
|
|
kubectl describe hpa silaras-dev -n rssa-apps-dev
|
|
```
|
|
|
|
Jika development bermasalah, **jangan apply production**. Perbaiki manifest lalu apply ulang:
|
|
|
|
```bash
|
|
kubectl apply -k overlays/dev
|
|
```
|
|
|
|
## 3. Preview production
|
|
|
|
Setelah development lolos:
|
|
|
|
```bash
|
|
kubectl kustomize overlays/prod
|
|
```
|
|
|
|
Opsional simpan render:
|
|
|
|
```bash
|
|
kubectl kustomize overlays/prod > /tmp/silaras-prod-rendered.yaml
|
|
```
|
|
|
|
## 4. Apply production
|
|
|
|
```bash
|
|
kubectl apply -k overlays/prod
|
|
```
|
|
|
|
Pantau rollout:
|
|
|
|
```bash
|
|
kubectl rollout status deployment/silaras-prod -n rssa-apps-prod
|
|
kubectl get deploy,pod,svc,pvc,ingress,hpa -n rssa-apps-prod
|
|
```
|
|
|
|
Periksa log:
|
|
|
|
```bash
|
|
kubectl logs -n rssa-apps-prod deployment/silaras-prod --tail=100
|
|
```
|
|
|
|
## Konfigurasi yang dipertahankan
|
|
|
|
- Tidak memakai Kubernetes Secret untuk environment aplikasi.
|
|
- Environment berasal dari ConfigMap melalui `envFrom`.
|
|
- Tidak memakai `imagePullSecrets`.
|
|
- HPA: minimum 1, maksimum 1, target CPU 70%.
|
|
- PVC 8Gi, `ReadWriteMany`, StorageClass `nas-rx300`.
|
|
- PVC di-mount ke `/var/www/html/writable/uploads`.
|
|
- CPU request 100m dan limit 500m.
|
|
- Memory request 200Mi dan limit 2Gi.
|
|
- Startup/readiness/liveness probe menggunakan HTTP `/login` port 80.
|
|
- `imagePullPolicy: IfNotPresent`.
|
|
- Ingress menggunakan class `traefik-internal`.
|
|
|
|
## Catatan development
|
|
|
|
`overlays/dev/configmap.yaml` masih berisi:
|
|
|
|
```yaml
|
|
DB_PASS: "CHANGE_ME_DEV_DB_PASSWORD"
|
|
```
|
|
|
|
Isi dengan password database development yang benar sebelum pengujian aplikasi.
|
|
|
|
## Catatan production
|
|
|
|
Production hanya perlu diaplikasikan setelah hasil development dianggap baik:
|
|
|
|
```bash
|
|
kubectl apply -k overlays/prod
|
|
```
|
|
|
|
Tidak ada `standalone-prod.yaml`, `kustomization.yaml` di root, atau konfigurasi Fleet yang dapat menjadi jalan pintas untuk langsung menerapkan production.
|