update to git

This commit is contained in:
2026-08-10 10:48:06 +07:00
commit 7f9d0964a7
18 changed files with 401 additions and 0 deletions

No files matched your search

+150
View File
@@ -0,0 +1,150 @@
# 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.
+39
View File
@@ -0,0 +1,39 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: silaras
spec:
template:
spec:
containers:
- name: silaras
readinessProbe:
failureThreshold: 3
successThreshold: 1
initialDelaySeconds: 10
timeoutSeconds: 1
periodSeconds: 10
httpGet:
scheme: HTTP
port: 80
path: /login
livenessProbe:
failureThreshold: 3
successThreshold: 1
initialDelaySeconds: 60
timeoutSeconds: 1
periodSeconds: 60
httpGet:
scheme: HTTP
port: 80
path: /login
startupProbe:
failureThreshold: 6
successThreshold: 1
initialDelaySeconds: 0
timeoutSeconds: 1
periodSeconds: 10
httpGet:
scheme: HTTP
port: 80
path: /login
+16
View File
@@ -0,0 +1,16 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: silaras
spec:
template:
spec:
containers:
- name: silaras
resources:
limits:
cpu: 500m
memory: 2Gi
requests:
cpu: 100m
memory: 200Mi
+11
View File
@@ -0,0 +1,11 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: silaras
spec:
template:
spec:
volumes:
- name: uploads
persistentVolumeClaim:
claimName: silaras
+29
View File
@@ -0,0 +1,29 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: silaras
labels:
app: silaras
spec:
replicas: 1
selector:
matchLabels:
app: silaras
template:
metadata:
labels:
app: silaras
spec:
containers:
- name: silaras
image: git.rssa.top/ryan/silaras-rssa:20260810104233-main
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 80
envFrom:
- configMapRef:
name: silaras-config
volumeMounts:
- name: uploads
mountPath: /var/www/html/writable/uploads
+14
View File
@@ -0,0 +1,14 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- deployment.yaml
- service.yaml
- pvc.yaml
patches:
- path: deployment-volumes.yaml
- path: deployment-resources.yaml
- path: deployment-probes.yaml
labels:
- pairs:
app: silaras
includeSelectors: true
+11
View File
@@ -0,0 +1,11 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: silaras
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 8Gi
storageClassName: nas-alletra
+11
View File
@@ -0,0 +1,11 @@
apiVersion: v1
kind: Service
metadata:
name: silaras
spec:
selector:
app: silaras
ports:
- name: http
port: 80
targetPort: 80
+13
View File
@@ -0,0 +1,13 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: silaras-config
data:
CI_ENVIRONMENT: "development"
APP_BASE_URL: "http://silaras.dev.rssa/"
DB_HOST: "10.10.123.197"
DB_PORT: "3003"
DB_NAME: "db_silaras"
DB_USER: "silaras_sys"
DB_PASS: "CHANGE_ME_DEV_DB_PASSWORD"
ENCRYPTION_KEY: "silaras-local-encryption-key-2026-dev"
+12
View File
@@ -0,0 +1,12 @@
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: silaras
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: silaras
minReplicas: 1
maxReplicas: 1
targetCPUUtilizationPercentage: 70
+19
View File
@@ -0,0 +1,19 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: silaras
annotations:
kubernetes.io/ingress.class: traefik-internal
spec:
ingressClassName: traefik-internal
rules:
- host: silaras.dev.rssa
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: silaras
port:
number: 80
+10
View File
@@ -0,0 +1,10 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- namespace.yaml
- ../../base
- ingress.yaml
- configmap.yaml
- hpa.yaml
namespace: rssa-apps-dev
nameSuffix: -dev
+4
View File
@@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: rssa-apps
+17
View File
@@ -0,0 +1,17 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: silaras-config
data:
CI_ENVIRONMENT: "production"
APP_BASE_URL: "http://silaras.rssa.id/"
DB_HOST: "10.10.123.192"
DB_PORT: "3005"
DB_NAME: "db_silaras"
DB_USER: "admin_silaras"
DB_PASS: "silaras119"
# Sengaja disimpan di ConfigMap agar sederhana untuk lingkungan lokal.
ENCRYPTION_KEY: "silaras-local-encryption-key-2026-rssa"
APP_VERSION: "1.0.0"
APP_STATUS: "Production"
+12
View File
@@ -0,0 +1,12 @@
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: silaras
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: silaras
minReplicas: 1
maxReplicas: 1
targetCPUUtilizationPercentage: 70
+19
View File
@@ -0,0 +1,19 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: silaras
annotations:
kubernetes.io/ingress.class: traefik-internal
spec:
ingressClassName: traefik-internal
rules:
- host: silaras.rssa.id
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: silaras
port:
number: 80
+10
View File
@@ -0,0 +1,10 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- namespace.yaml
- ../../base
- ingress.yaml
- configmap.yaml
- hpa.yaml
namespace: rssa-apps-prod-new
nameSuffix: -prod
+4
View File
@@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: rssa-apps