K3s - заміна Traefik на Nginx ingress controller
K3s за замовченням використовує traefik ingress controller який виконує свою функцію бездоганно, має свій web dashboard і багато інших хороших речей ...але, в багатьох ситуаціях, коли необхідно відносно швидко підняти й протестувати необхідний сервіс, приходиться констатувати факт, що helm charts мають приклади для конфігурування nginx ingress controller й не мають аналогічних прикладів для traefik, що значно ускладнює й сповільнює процес прототипування й тестування нових інструментів.
Заміна Traefik на Nginx ingress controller може стати можливим рішенням даної ситуації.
Для початку необхідно видалити Traefik helm chart:
kubectl -n kube-system delete helmcharts.helm.cattle.io traefik
Зупиняємо k3s:
sudo service k3s stop
далі необхідно в файлі "/etc/systemd/system/k3s.service" добавити "–no-deploy traefik" в рядок "ExecStart":
ExecStart=/usr/local/bin/k3s \
server \
--disable traefik \
далі перезагружаємо сервіс та видаляємо маніфест auto-deploy для traefik:
sudo systemctl daemon-reload
sudo rm /var/lib/rancher/k3s/server/manifests/traefik.yaml
sudo service k3s start
Слідуючим етапом буде встановлення nginx ingress controller замість traefik:
Якщо у вас вже є встановленний helm то ви можете розгорнути nginx ingress контролер за допомогою наступних команд:
Скачуємо репозиторій:
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm pull ingress-nginx/ingress-nginx --untar
створюємо файл "./values/ingress-nginx-local.yaml"з локальними налаштуваннями:
controller:
metrics:
enabled: true
serviceMonitor:
enabled: true
additionalLabels:
release: prometheus-stack
kind: DaemonSet
встановлюємо helm chart з локальними налаштуваннями:
helm install ingress-nginx -f ./values/ingress-nginx-local.yaml ./ingress-nginx/
Переглянути статус, запустивши "kubectl --namespace default get services -o wide -w ingress-nginx-controller"
Якщо у вас немає Helm або ви віддаєте перевагу використанню маніфесту YAML, замість цього ви можете виконати такі команди:
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.5.1/deploy/static/provider/baremetal/deploy.yaml -O nginx-ingress-deploy.yaml
kubectl apply -f ./nginx-ingress-deploy.yaml
Видалити nginx ingress контролер можна слідуючими командами
Якщо встановлення відбувалось з допомогою helm chart, то запускаємо:
helm uninstall ingress-nginx
Якщо встановлення відбувалось з допомогою yaml маніфесту, то запускаємо:
kubectl delete -f ./nginx-ingress-deploy.yaml
Коментарі
Дописати коментар