This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
доступ_к_приложениям_в_bare-metal_kubernetes [2024/03/18 05:27] val [Шаг 6.2. Закрываем доступ в сеть кластера] |
доступ_к_приложениям_в_bare-metal_kubernetes [2025/03/18 15:36] (current) val [Шаг 12. Использование ArgoCD для развертывания http приложения] |
||
|---|---|---|---|
| Line 14: | Line 14: | ||
| ===== Запись вебинара ===== | ===== Запись вебинара ===== | ||
| - | * Будет здесь!!! | + | * [[https://youtu.be/oIczkkD-hOU|Доступ к приложениям в Bare-Metal Kubernetes]] ([[https://rutube.ru/video/356186164509624a323079127c4bd690/|RuTube]]) |
| * Тэги: Kubernetes, LoadBalancer, ClusterIP, MetalLB, Nginx, Keepalived, Ingress-Nginx, Helm, HAProxy, ArgoCD, Dashboard | * Тэги: Kubernetes, LoadBalancer, ClusterIP, MetalLB, Nginx, Keepalived, Ingress-Nginx, Helm, HAProxy, ArgoCD, Dashboard | ||
| Line 21: | Line 21: | ||
| * В процессе прохождения курса [[DevOps2. Использование Kubernetes]] в конце лабораторной работы 5.3 обнаружено, что кластер kubernetes, развернутый kubespray не поддерживает insecure-registry | * В процессе прохождения курса [[DevOps2. Использование Kubernetes]] в конце лабораторной работы 5.3 обнаружено, что кластер kubernetes, развернутый kubespray не поддерживает insecure-registry | ||
| * Вместо решения, описанного в последнем фрагменте видео выбираем альтернативный вариант | * Вместо решения, описанного в последнем фрагменте видео выбираем альтернативный вариант | ||
| - | |||
| - | ==== Вернуть обратно ==== | ||
| - | |||
| - | * 1. Удалить gowebd с kube | ||
| - | <code> | ||
| - | kube1:~# kubectl delete -f application.yaml | ||
| - | |||
| - | kube1:~# kubectl delete ns my-ns | ||
| - | |||
| - | kube1:~# rm application.yaml | ||
| - | |||
| - | kube1:~# crictl rmi server.corp13.un:5000/student/gowebd:ver1.1 | ||
| - | |||
| - | kube1:~# crictl rmi server.corp13.un:5000/student/gowebd:ver1.2 | ||
| - | </code> | ||
| - | * 2. Удалить [[Система Kubernetes#Kubernetes Dashboard]] и Argo CD | ||
| - | <code> | ||
| - | kube1:~# kubectl delete -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml | ||
| - | |||
| - | kube1:~# kubectl delete ns argocd | ||
| - | |||
| - | cmder> rm -rf ~/.kube/ | ||
| - | |||
| - | cmder> rm /usr/bin/kubectl.exe | ||
| - | </code> | ||
| - | * 3. Удалить ingress-nginx и Helm с kube1 | ||
| - | <code> | ||
| - | kube1:~# helm delete ingress-nginx --namespace ingress-nginx | ||
| - | |||
| - | kube1:~# kubectl delete ns ingress-nginx | ||
| - | |||
| - | kube1:~# rm -r helm* linux-amd64/ /usr/local/bin/helm | ||
| - | |||
| - | kube1:~# rm -r gowebd/ ingress-nginx/ | ||
| - | </code> | ||
| - | * 4. Удалить корневые сертификаты с kubeN | ||
| - | <code> | ||
| - | kubeN# | ||
| - | rm /usr/local/share/ca-certificates/ca.crt /etc/ssl/certs/ca.pem | ||
| - | update-ca-certificates | ||
| - | systemctl restart containerd | ||
| - | </code> | ||
| - | * 5. Удалить манифесты и сертификаты проекта gowebd с kube1 | ||
| - | <code> | ||
| - | kube1:~# rm gowebd.crt gowebd.key my-ingress.yaml my-webd-service.yaml my-webd-deployment.yaml | ||
| - | </code> | ||
| - | * 6. Удалить VM client2 и gate2 | ||
| - | * 7. Перезагрузить gate.isp.un | ||
| - | * 8. Восстановить из снапшотов gate и server | ||
| - | * 9. Удалить каталог, которого не было в курсе | ||
| - | <code> | ||
| - | server# rm -rf /var/www/ | ||
| - | </code> | ||
| ===== Шаг 1. Исходные данные ===== | ===== Шаг 1. Исходные данные ===== | ||
| Line 82: | Line 29: | ||
| ~/kubespray# time ansible-playbook -i inventory/mycluster/hosts.yaml reset.yml | ~/kubespray# time ansible-playbook -i inventory/mycluster/hosts.yaml reset.yml | ||
| - | ~/kubespray# cp -rfp inventory/sample/* inventory/mycluster | + | ~/kubespray# git checkout origin/release-2.22 |
| + | |||
| + | ~/kubespray# time pip3 install -r requirements.txt | ||
| + | |||
| + | ~/kubespray# cp -rvfpT inventory/sample inventory/mycluster | ||
| ~/kubespray# time ansible-playbook -i inventory/mycluster/hosts.yaml cluster.yml | ~/kubespray# time ansible-playbook -i inventory/mycluster/hosts.yaml cluster.yml | ||
| Line 91: | Line 42: | ||
| </code> | </code> | ||
| - | * GitLab и его registry c http доступом и проектом с образом gowebd | + | * GitLab и его registry c http доступом и проектом с образом student/gowebd |
| ===== Шаг 2. Переводим GitLab и его registry на https ===== | ===== Шаг 2. Переводим GitLab и его registry на https ===== | ||
| Line 171: | Line 122: | ||
| </code> | </code> | ||
| + | * Тестируем отказоустойчивость, отключая узлы kubeN | ||
| ===== Шаг 6. Делаем отказоустойчивым gate ===== | ===== Шаг 6. Делаем отказоустойчивым gate ===== | ||
| - | * Импортируем gate2 | + | * Импортируем gate2 (debian 12) |
| <code> | <code> | ||
| - | server# cat /etc/bind/corp13.un | + | server# cat /etc/bind/corpX.un |
| </code><code> | </code><code> | ||
| ... | ... | ||
| - | gate1 A 192.168.13.21 | + | gate1 A 192.168.X.21 |
| - | gate2 A 192.168.13.22 | + | gate2 A 192.168.X.22 |
| </code> | </code> | ||
| * Превращаем gate в gate1 | * Превращаем gate в gate1 | ||
| Line 234: | Line 186: | ||
| scp -3 gate1:/etc/resolv.conf gate2:/etc/ | scp -3 gate1:/etc/resolv.conf gate2:/etc/ | ||
| scp -3 gate1:/etc/sysctl.conf gate2:/etc/ | scp -3 gate1:/etc/sysctl.conf gate2:/etc/ | ||
| + | scp -3 gate1:/etc/sysctl.d/* gate2:/etc/sysctl.d/ | ||
| gate2# hostnamectl set-hostname gate2.corp13.un | gate2# hostnamectl set-hostname gate2.corp13.un | ||
| Line 255: | Line 208: | ||
| * Сервис Nginx [[Сервис HTTP#Подключение, тестирование, применение и мониторинг конфигурации]] | * Сервис Nginx [[Сервис HTTP#Подключение, тестирование, применение и мониторинг конфигурации]] | ||
| <code> | <code> | ||
| - | server# ssh gateN tail -f /var/log/messages | + | server# ssh gate1 tail -f /var/log/nginx/access.log |
| - | server# ssh gateN tail -f /var/log/nginx/access.log | + | server# ssh gate2 tail -f /var/log/messages |
| + | или | ||
| + | server# ssh gate2 journalctl -f | ||
| </code> | </code> | ||
| * Обсуждаем достоинства (все работает) и недостатки (учет IP адресов в ПО версии 0.14.3 :) | * Обсуждаем достоинства (все работает) и недостатки (учет IP адресов в ПО версии 0.14.3 :) | ||
| - | * Если есть время и желание выполняем [[#Шаг 6.2. Закрываем доступ в сеть кластера]] | + | |
| + | ===== Шаг 6.2. Закрываем доступ в сеть кластера ===== | ||
| + | |||
| + | * Добавляем [[Сервис NAT]] | ||
| + | <code> | ||
| + | gateN# apt install iptables conntrack iptables-persistent | ||
| + | |||
| + | gateN# | ||
| + | </code> | ||
| + | |||
| + | !!! Скопируйте в блокнот и поправьте номер стенда X !!! | ||
| + | |||
| + | <code> | ||
| + | iptables -t nat --flush | ||
| + | iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 172.16.1.X | ||
| + | iptables -t nat -A PREROUTING -i eth1 --destination 172.16.1.X -p udp --dport 53 -j DNAT --to-destination 192.168.X.10:53 | ||
| + | |||
| + | iptables --flush | ||
| + | iptables -A FORWARD -i eth0 -j ACCEPT | ||
| + | iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT | ||
| + | iptables -A FORWARD -i eth1 -p udp -d 192.168.X.10 --dport 53 -j ACCEPT | ||
| + | iptables -A FORWARD -j DROP | ||
| + | |||
| + | conntrack -F | ||
| + | netfilter-persistent save | ||
| + | </code> | ||
| + | |||
| + | * Настраиваем win client2 dns: 172.16.1.X | ||
| ===== Шаг 7. Заменяем nginx на ingress-nginx ===== | ===== Шаг 7. Заменяем nginx на ingress-nginx ===== | ||
| Line 272: | Line 254: | ||
| </code> | </code> | ||
| - | * Установка [[Система Kubernetes#Helm]] на kube1 | + | * Установка [[Система Kubernetes#Helm]] на kube1 !!! Может быть уже установлен |
| * Развертываем через [[Система Kubernetes#Работа с готовыми Charts]] [[Система Kubernetes#ingress-nginx]] | * Развертываем через [[Система Kubernetes#Работа с готовыми Charts]] [[Система Kubernetes#ingress-nginx]] | ||
| Line 285: | Line 267: | ||
| <code> | <code> | ||
| - | kube1:~# curl https://kubeN/ -H "Host: gowebd.corpX.un" -k | + | $ curl --connect-to "":"":kubeN:443 https://gowebd.corpX.un #-vk |
| </code> | </code> | ||
| Line 344: | Line 326: | ||
| * Удаляем приложение, можно просто namespace | * Удаляем приложение, можно просто namespace | ||
| + | * Переименовываем в gowebd-k8s .gitlab-ci.yml_stop | ||
| <code> | <code> | ||
| kube1# kubectl delete ns my-ns | kube1# kubectl delete ns my-ns | ||
| Line 371: | Line 354: | ||
| ===== Шаг 14. Готовимся к развертыванию Кeycloak ===== | ===== Шаг 14. Готовимся к развертыванию Кeycloak ===== | ||
| + | |||
| + | !!! В классе, если нет второго кластера, можно просто посмотреть !!! | ||
| * Настраиваем HAProxy на работу с несколькими кластерами | * Настраиваем HAProxy на работу с несколькими кластерами | ||
| Line 396: | Line 381: | ||
| ===== Дополнительные материалы ===== | ===== Дополнительные материалы ===== | ||
| - | ===== Шаг 6.2. Закрываем доступ в сеть кластера ===== | + | ==== Как все вернуть обратно ==== |
| - | * Добавляем [[Сервис NAT]] | + | * 1. Удалить gowebd с kube |
| <code> | <code> | ||
| - | gateN# apt install iptables conntrack iptables-persistent | + | kube1:~# kubectl delete -f application.yaml |
| - | gateN# cat natfw.sh | + | kube1:~# kubectl delete ns my-ns |
| - | </code><code> | + | |
| - | iptables -t nat --flush | + | |
| - | iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 172.16.1.13 | + | |
| - | iptables -t nat -A PREROUTING -i eth1 --destination 172.16.1.13 -p udp --dport 53 -j DNAT --to-destination 192.168.13.10:53 | + | |
| - | iptables --flush | + | kube1:~# rm application.yaml |
| - | iptables -A FORWARD -i eth0 -j ACCEPT | + | |
| - | iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT | + | |
| - | iptables -A FORWARD -i eth1 -p udp -d 192.168.13.10 --dport 53 -j ACCEPT | + | |
| - | iptables -A FORWARD -j DROP | + | |
| - | conntrack -F | + | kube1:~# crictl rmi server.corp13.un:5000/student/gowebd:ver1.1 |
| - | netfilter-persistent save | + | |
| + | kube1:~# crictl rmi server.corp13.un:5000/student/gowebd:ver1.2 | ||
| </code> | </code> | ||
| + | * 2. Удалить [[Система Kubernetes#Kubernetes Dashboard]] и Argo CD | ||
| + | <code> | ||
| + | kube1:~# kubectl delete -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml | ||
| - | * Настраиваем win client2 dns: 172.16.1.13 | + | kube1:~# kubectl delete ns argocd |
| + | cmder> rm -rf ~/.kube/ | ||
| + | |||
| + | cmder> rm /usr/bin/kubectl.exe | ||
| + | </code> | ||
| + | * 3. Удалить ingress-nginx и Helm с kube1 | ||
| + | <code> | ||
| + | kube1:~# helm delete ingress-nginx --namespace ingress-nginx | ||
| + | |||
| + | kube1:~# kubectl delete ns ingress-nginx | ||
| + | |||
| + | kube1:~# rm -r helm* linux-amd64/ /usr/local/bin/helm | ||
| + | |||
| + | kube1:~# rm -r gowebd/ ingress-nginx/ | ||
| + | </code> | ||
| + | * 4. Удалить корневые сертификаты с kubeN | ||
| + | <code> | ||
| + | kubeN# | ||
| + | rm /usr/local/share/ca-certificates/ca.crt /etc/ssl/certs/ca.pem | ||
| + | update-ca-certificates | ||
| + | systemctl restart containerd | ||
| + | </code> | ||
| + | * 5. Удалить манифесты и сертификаты проекта gowebd с kube1 | ||
| + | <code> | ||
| + | kube1:~# rm gowebd.crt gowebd.key my-ingress.yaml my-webd-service.yaml my-webd-deployment.yaml | ||
| + | </code> | ||
| + | * 6. Удалить VM client2 и gate2 | ||
| + | * 7. Перезагрузить gate.isp.un | ||
| + | * 8. Восстановить из снапшотов gate и server | ||
| + | * 9. Удалить, чего не было в курсе | ||
| + | <code> | ||
| + | server# rm -rf /var/www/ | ||
| + | |||
| + | server# rm server.key | ||
| + | </code> | ||