User Tools

Site Tools


доступ_к_приложениям_в_bare-metal_kubernetes

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
доступ_к_приложениям_в_bare-metal_kubernetes [2024/03/17 10:15]
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>​
-gateNapt install iptables conntrack iptables-persistent+kube1:~kubectl delete ​-f application.yaml
  
-gate1cat natfw.sh +kube1:~kubectl delete ns my-ns
-</​code><​code>​ +
-iptables ​-t nat --flush +
-iptables -t nat -A POSTROUTING -o eth1 -s 192.168.13.0/​24 -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 -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 -i eth1 -p tcp -d 192.168.13.10 --dport 443 -j ACCEPT +
-iptables -A FORWARD -j DROP +
-conntrack -F+
  
-netfilter-persistent save +kube1:~crictl rmi server.corp13.un:​5000/​student/​gowebd:​ver1.1 
-</​code><​code>​ + 
-server# +kube1:~# crictl rmi server.corp13.un:5000/​student/​gowebd:​ver1.2
-ssh gate1 sh natfw.sh +
-scp -3 gate1:natfw.sh gate2: +
-ssh gate2 sh natfw.sh+
 </​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 dns172.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>​
доступ_к_приложениям_в_bare-metal_kubernetes.1710659720.txt.gz · Last modified: 2024/03/17 10:15 by val