
Halo, kalau kamu merasa tulisan saya ngebantu, kamu bisa ucapkan terima kasih lewat saweria .
If you feel this website help you, you can donate at saweria .
Di part 1 ini saya bakal share cara deployment di Kubernetes dengan K3s. Yang bakal kita lakukan:
-
Deploy image trafex/docker-php-nginx
-
Deploy traefik
-
Berpusing ria..
Tips Sebelum Memulai Belajar Kubernetes dengan K3s
-
Belajar docker basic
-
Baca traefik for beginner
-
Karena saya belajar docker & traefik pake dockerswarm.rocks , bisa juga belajar di dockerswarm.rocks
Tutorial yang Beneran Minimalis
Tutorial di yang lain suka aneh, bilangnya setup minimalis tapi pake 3 server. Minimalis tapi pake load balancer external. Minimalis tapi pake Kubernetes engine bawaan cloud provider, dll
Ga semua punya akses itu, contohnya saya yang cuma punya server dengan spek rendah.
Dengan semua “kekesalan” itu akhirnya saya menulis tutorial Kubernetes dengan beneran “minimalis” setup.
Berikut server dan tools yang saya gunakan:
-
1 server dengan spek 1 CPU core dan 2 GB RAM
-
Docker sebagain container runtime (defaultnya K3s pake containerd). Kenapa di ganti? Biar tahu cara kerja K3s, karena saya familiar dengan command-command docker, jadi bisa saya dalami cara kerja K3s.
Semua script di tutorial ini saya modifikasi dari script k3s.rocks , saya modifikasi dengan harapan lebih mudah dipahami.
Install K3s dengan Docker as Container Runtime
- Install & setup K3s
# PLEASE USING THIS VERSION (NOT LATEST VERSION)
# IT WAS PAIN TO DEBUG, IF YOU USING OTHER VERSION THAN THIS
curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION=v1.26.1+k3s1 sh -s server \
--cluster-init \
--write-kubeconfig-mode 644 \
--docker && \
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
- Kita bakal nyiapin traefik sebagai webserver/reverse proxy di K3s kita, buat file traefik-config.yml.
Jalankan kubectl apply -f traefik-config.yml
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
name: traefik
namespace: kube-system
spec:
valuesContent: |-
image:
name: traefik
tag: v2.9.9
logs:
general:
level: INFO
access:
enabled: true
#dashboard:
# enabled: true
deployment:
kind: DaemonSet
hostNetwork: true
#updateStrategy:
# type: RollingUpdate
# rollingUpdate:
# maxUnavailable: 2
#additionalArguments:
# - "--entryPoints.web.proxyProtocol.insecure"
# - "--entryPoints.websecure.proxyProtocol.insecure"
Deploy App Pertama di K3s
Untuk app pertama kita di K3s, kita akan deploy trafex/docker-php-nginx .
Image nya ini akan buka file php dengan isi phpinfo();
- Buat 1 file trafex-deployment.yml, jalankan dengan
kubectl apply -f trafex-deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: trafex
spec:
selector:
matchLabels:
app: trafex
replicas: 1
template:
metadata:
labels:
app: trafex
spec:
containers:
- name: trafex
image: trafex/php-nginx:latest
ports:
- containerPort: 8080
- Buat service nya, trafex-service.yml, jalankan dengan
kubectl apply -f trafex-service.yml
apiVersion: v1
kind: Service
metadata:
name: trafex
spec:
type: ClusterIP
ports:
- port: 5678
targetPort: 8080
selector:
app: trafex
- Buat ingress nya, trafex-ingress.yml, jalankan dengan
kubectl apply -f trafex-ingress.yml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: trafex-ingress
annotations:
kubernetes.io/ingress.class: traefik
spec:
rules:
- host: php.ipang.my.id
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: trafex
port:
number: 5678

Trafex Deploy Sukses
Traefik Dashboard
- Buat file traefik-dashboard-service.yml, jalankan
kubectl apply -f traefik-dashboard-service.yml
apiVersion: v1
kind: Service
metadata:
name: traefik-dashboard
namespace: kube-system
labels:
app.kubernetes.io/instance: traefik
app.kubernetes.io/name: traefik-dashboard
spec:
type: ClusterIP
ports:
- name: traefik
port: 9000
targetPort: traefik
protocol: TCP
selector:
app.kubernetes.io/instance: traefik
app.kubernetes.io/name: traefik
- Buat traefik-dashboard-ingress.yml, jalankan
kubectl apply -f traefik-dashboard-ingress.yml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: traefik-ingress
namespace: kube-system
annotations:
kubernetes.io/ingress.class: traefik
spec:
rules:
- host: trepik.ipang.my.id
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: traefik-dashboard
port:
number: 9000
Buka dashboardnya pake domainkamu.com/dashboard/ (JANGAN LUPA path /dashboard/)

Traefik Dashboard