클라우드 네이티브! Helm 3를 사용한 Traefik 2 배포 실전 가이드

Traefik 개요

Traefik은 현대적인 HTTP 반대리 및 부하 분산기로, 마이크로서비스 배포를 용이하게 합니다. 이 문서는 Traefik2의 기능적 장점을 다룹니다.

사전 준비

Helm V3 설치 확인

버전을 확인하는 명령어:

helm version
# 예시 출력: version.BuildInfo{Version:"v3.0.1", ...}

Traefik v2 Helm 차트 구성

GitHub 저장소: traefik-helm-chart

간단한 설정 파일 예시:

service:
  type: ClusterIP

ingressRoute:
  dashboard:
    enabled: false

nodeSelector:
  kubernetes.io/hostname: k8s-master-1

ports:
  web:
    hostPort: 80
  websecure:
    hostPort: 443
  traefik:
    port: 8080
    hostPort: 8080
    exposedPort: 8080
    expose: true

additionalArguments:
  - "--serversTransport.insecureSkipVerify=true"
  - "--api.insecure=true"
  - "--api.dashboard=true"

Traefik Helm 차트 등록

helm repo add traefik https://containous.github.io/traefik-helm-chart
helm repo update

Traefik v2 배포

helm install traefik traefik/traefik -f traefik-v2-values.yaml -n kube-system
# helm uninstall traefik -n kube-system

패널 배포

도메인 설정

traefik.example.com을 K8s 클러스터에 포워딩합니다.

서버 인증서 발급

kubectl apply -f certificate-deployment.yaml -n kube-system

인증서 확인

kubectl describe Certificate -n kube-system

인그레스 라우트 구성

apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: traefik-dashboard-config
spec:
  entryPoints:
    - websecure
  tls:
    secretName: example-cert-tls
  routes:
    - match: Host(`traefik.example.com`)
      kind: Rule
      services:
        - name: traefik
          port: 8080

패널 접근

https://traefik.example.com

BasicAuth 설정

비밀번호 생성

htpasswd -nb user1 password1
# 예시 출력: user1:$apr1$...123456

세크릿 생성

apiVersion: v1
kind: Secret
metadata:
  name: auth-secret
type: Opaque
stringData:
  users: user1:$apr1$...123456

미들웨어 구성

apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: auth-middleware
spec:
  basicAuth:
    secret: auth-secret

인그레스 라우트 업데이트

routes:
  - match: Host(`traefik.example.com`)
    kind: Rule
    services:
      - name: traefik
        port: 8080
    middlewares:
      - name: auth-middleware

구성 적용

kubectl apply -f auth-secret.yaml -n kube-system
kubectl apply -f middleware.yaml -n kube-system
kubectl apply -f ingress-route.yaml -n kube-system

태그: kubernetes Traefik helm ingress API Gateway

6월 16일 22:26에 게시됨