Introduction
Kita akan membutuhkan Ingress Controller untuk mengekspose service ke luar kubernetes. Disini kita akan menggunakan traefik sebagai Ingress Controller yang akan menjadi reverse proxy jika ada sebuah domain yang dipointing ke IP Traefik, maka akan diarahkan ke service.
Reqruitment
- Kubernetes Cluster
- Helm
- MetalLB
- Storage Class (using rook-ceph)
- Subdomain (using stagging.cygnenoir.net for testing)
- IP Public (Forward to IP MetalLB used for traefik)
Installation
Installation using helm
Menambahkan repo helm
helm repo add traefik https://traefik.github.io/chartsCheck versi traefik
helm search repo traefikJika kita ingin lihat default values dari traefik
helm show values trafik/traefik > values-traefik.yamlSekarang kita buat values.yaml. Ini values minimal yang kita perlukan.
service:
spec:
externalTrafficPolicy: Local
ports:
web:
redirections:
entryPoint:
to: websecure
scheme: https
permanent: true
persistence:
enable: true
storageClass: ceph-block
size: 1Giservice.spec.externalTrafficPolicy
Untuk mengontrol traffik dari luar ke arah backend pods,
Cluster(default): Trafik dari luar bakalan ke any node tapi bakalan hilang source ip. disini kita pake cillium, maka ip client yg akan kita dapat yaitu cilium. (With SRC-IP)
Local: Trafik dari luar bakalan ke spesifik node bedasarkan letak pods deployed. Kita bakalan dapat source ip client tanpa menggunakan cillium. (No SRC-IP)
ports.web.redirections.entryPoint
Berfungsi untuk secara default langsung redirect ke https
Install menggunakan values yang kita buat
helm install --create-namespace traefik traefik/traefik -n traefik --values values.yaml
Testing
Sekarang kita test untuk menggunakan domain stagging.cygnenoir.net ke arah IP Publik yang sudah di forward ke IP LoadBalancer Traefik.
Membuat file ingressroute.yaml (ini jika kita sudah mempunyai pod dan service nginx)
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: test-ingress
namespace: monitoring
spec:
entryPoints:
- websecure
routes:
- match: Host(`stagging.cygnenoir.net`)
kind: Rule
services:
- name: nginx-service
port: 80
Apply file tersebut
kubectl apply -f ingressroute.yamlSekarang coba kita akses ke domain tersebut menggunakan browser

Kita sudah bisa akses, tapi kena block karna kita belum mempunyai SSL yang valid
Untuk SSL kita akan menggunakan letsencryp dan menggunakan cert-manager.