Rancher/RKE2のIngressをTraefikに変更

メモ
この記事は約3分で読めます。

RKE2は元々デフォルトでNginx Ingressを採用している。しかしNginx Ingressはすでに非推奨なので移行する必要があります。

注意事項

Traefikがすでにあるとデプロイできないので注意です

以下の作業はControlPlaneに作業します

LB(MetalLB)を使用しています

Traefikの追加

現在有効なIngressNginxにTraefikを追加します

sudo tee /etc/rancher/rke2/config.yaml.d/99-ingress.yaml >/dev/null <<'EOF'
ingress-controller:
- ingress-nginx
- traefik
EOF
sudo tee /var/lib/rancher/rke2/server/manifests/rke2-traefik-config.yaml > /dev/null <<'EOF'
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
  name: rke2-traefik
  namespace: kube-system
spec:
  valuesContent: |-
    deployment:
      enabled: true
      kind: DaemonSet

    ingressClass:
      enabled: true
      isDefaultClass: true
      name: traefik

    providers:
      kubernetesCRD:
        enabled: true
        ingressClass: traefik
      kubernetesIngress:
        enabled: true
        ingressClass: traefik
        publishedService:
          enabled: true

    service:
      enabled: true
      type: LoadBalancer
      annotations:
        metallb.universe.tf/loadBalancerIPs: "172.16.99.3"

    ports:
      traefik:
        expose:
          default: false
      web:
        port: 8000
        exposedPort: 80
        hostPort: 80
        protocol: TCP
        expose:
          default: true
      websecure:
        port: 8443
        exposedPort: 443
        hostPort: 443
        protocol: TCP
        expose:
          default: true

    logs:
      general:
        level: INFO

    ingressRoute:
      dashboard:
        enabled: false
EOF

DaemonSetでデプロイしますが、サービスでLBを展開します。

デプロイ済みのIngressClassをtraefikに差し替えます。

最後に古いNginxIngressを除外します

sudo tee /etc/rancher/rke2/config.yaml.d/99-ingress.yaml >/dev/null <<'EOF'
ingress-controller: 
- traefik
EOF

動作確認したらOKです

参考

Ingress NGINX to Traefik Migration Guide | RKE2
The Kubernetes Ingress NGINX project has announced its retirement in March 2026. As a result, RKE2 is transitioning to T...

コメント