Install external traefik on K3s cluster
Preface
Recently, I encountered a traefik Issue in my K3s cluster.
The Traefik instance came pre-installed with K3s deployment. Its automatic updates caused accessibility issues in my cluster. To resolve this problem, I decided to remove the built-in Traefik and install an external Traefik instance instead.
+ helm_v3 upgrade --set-string global.systemDefaultRegistry= traefik https://10.43.0.1:443/static/charts/traefik-20.3.1+up20.3.0.tgz --values /config/values-01_HelmChart.y
Error: failed to fetch https://10.43.0.1:443/static/charts/traefik-20.3.1+up20.3.0.tgz : 404 Not Found
Remove the pre-installed traefik ingress controller
Disable pre-installed traefik on K3s Server Node
vim /etc/systemd/system/k3s.service
ExecStart=/usr/local/bin/k3s \
    server \
        '--server' \
        'https://192.168.1.9:6443' \
        '--disable=traefik' \
        '--node-ip=192.168.1.1' \
        '--node-external-ip=xx.xxx.xxx.xxx' \
        '--flannel-backend=wireguard-native' \
        '--flannel-external-ip' \
        '--datastore-endpoint=postgres://postgres:xxxxxxxxxxxxxx@192.168.1.9:5432/kubernetes?sslmode=disable' \
After editing the k3s.service, it should be restart the daemon and service
systemctl daemon-reload
systemctl restart k3s
Delete the existing pre-installed traefik resource from the K3s cluster
Delete the helmchart
kubectl delete helmchart traefik -n kube-system
kubectl delete helmchart traefik-crd -n kube-system
Delete the deployment
kubectl delete deployment traefik -n kube-system
Delete related traefik crds
kubectl get crd | grep traefik | while read crd _; do
    kubectl delete crd $crd
done
Delete manifests from the server node
rm -f /var/lib/rancher/k3s/server/manifests/traefik*
rm -f /var/lib/rancher/k3s/server/static/charts/traefik*
Install the external traefik by using helm chart
Add traefik repository
helm repo add traefik https://helm.traefik.io/traefik
helm repo update
Install the traefik
helm install traefik traefik/traefik \
  --namespace kube-system \
  --kubeconfig /etc/rancher/k3s/k3s.yaml
Verify the installation
kubectl get pods -n kube-system --kubeconfig ~/.kube/k3s.yaml | grep traefik
svclb-traefik-8c21d035-fp47d              2/2     Running   0            8m53s
svclb-traefik-8c21d035-5wzx6              2/2     Running   0            8m53s
svclb-traefik-8c21d035-9xhsz              2/2     Running   0            8m53s
svclb-traefik-8c21d035-ghztb              2/2     Running   0            8m53s
svclb-traefik-8c21d035-mrb2f              2/2     Running   0            8m53s
traefik-689d6dcdd4-6rth7                  1/1     Running   0            8m53s
traefik-689d6dcdd4-zfgpx                  1/1     Running   0            8m5s