Posted in

Installing Traefik for Ingress Controller Kubernetes Cluster

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/charts

Check versi traefik

helm search repo traefik

Jika kita ingin lihat default values dari traefik

helm show values trafik/traefik > values-traefik.yaml

Sekarang 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: 1Gi

service.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.yaml

Sekarang 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.

Leave a Reply

Your email address will not be published. Required fields are marked *