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
Last revision Both sides next revision
доступ_к_приложениям_в_bare-metal_kubernetes [2024/03/17 08:39]
val [Шаг 11. Использование HAProxy для https доступа к приложению]
доступ_к_приложениям_в_bare-metal_kubernetes [2024/04/04 07:31]
val [Шаг 1. Исходные данные]
Line 14: Line 14:
 ===== Запись вебинара ===== ===== Запись вебинара =====
  
-  * Будет здесь!!!+  * https://​youtu.be/​oIczkkD-hOU
   * Тэги: 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#​ 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 171: Line 120:
 </​code>​ </​code>​
  
 +  * Тестируем отказоустойчивость,​ отключая узлы kubeN
 ===== Шаг 6. Делаем отказоустойчивым gate ===== ===== Шаг 6. Делаем отказоустойчивым gate =====
  
Line 226: Line 176:
 gate2# ifconfig eth0 inet 192.168.13.22 gate2# ifconfig eth0 inet 192.168.13.22
  
-gate1# ssh-keygen+server 
 +ssh-copy-id gate1 
 +ssh-copy-id gate2
  
-gate1# ssh-copy-id gate2 +server#  
- +scp -3 gate1:/​etc/​network/​interfaces gate2:/​etc/​network/​ 
-gate1#  +scp -3 gate1:/​etc/​resolv.conf gate2:/​etc/​ 
-scp /​etc/​network/​interfaces gate2:/​etc/​network/​ +scp -3 gate1:/​etc/​sysctl.conf gate2:/etc/
-scp /​etc/​resolv.conf gate2:/​etc/​ +
-scp /​etc/​sysctl.conf gate2:/etc/+
  
 gate2# hostnamectl set-hostname gate2.corp13.un gate2# hostnamectl set-hostname gate2.corp13.un
Line 243: Line 193:
 gate2# apt update && apt install keepalived nginx -y gate2# apt update && apt install keepalived nginx -y
  
-gate1#  +server#  
-scp /​etc/​keepalived/​keepalived.conf gate2:/​etc/​keepalived/​ +scp -3 gate1:/​etc/​keepalived/​keepalived.conf gate2:/​etc/​keepalived/​ 
-scp /​etc/​nginx/​sites-available/​gowebd gate2:/​etc/​nginx/​sites-available/​gowebd +scp -3 gate1:/​etc/​nginx/​sites-available/​gowebd gate2:/​etc/​nginx/​sites-available/​gowebd 
-scp /​etc/​nginx/​sites-enabled/​gowebd gate2:/​etc/​nginx/​sites-enabled/​gowebd +scp -3 gate1:/​etc/​nginx/​sites-enabled/​gowebd gate2:/​etc/​nginx/​sites-enabled/​gowebd 
-scp gowebd.* gate2:+scp -3 gate1:gowebd.* gate2:
  
 gate2# cat /​etc/​keepalived/​keepalived.conf gate2# cat /​etc/​keepalived/​keepalived.conf
Line 255: Line 205:
   * Сервис Nginx [[Сервис HTTP#​Подключение,​ тестирование,​ применение и мониторинг конфигурации]]   * Сервис Nginx [[Сервис HTTP#​Подключение,​ тестирование,​ применение и мониторинг конфигурации]]
 <​code>​ <​code>​
-server# ssh gate2 +server# ssh gate1 tail -f /var/log/nginx/​access.log
- +
-gate2# ​tail -f /var/log/messages+
  
-gate2tail -f /var/log/nginx/​access.log+server# ssh gate2 tail -f /var/log/messages
 </​code>​ </​code>​
  
   * Обсуждаем достоинства (все работает) и недостатки (учет IP адресов в ПО версии 0.14.3 :)   * Обсуждаем достоинства (все работает) и недостатки (учет IP адресов в ПО версии 0.14.3 :)
-  * Если есь время и желание выполняем Шаг 6.2.+  * Если есть время и желание выполняем ​[[#Шаг 6.2. Закрываем доступ в сеть кластера]]
  
 ===== Шаг 7. Заменяем nginx на ingress-nginx ===== ===== Шаг 7. Заменяем nginx на ingress-nginx =====
Line 287: Line 235:
  
 <​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 340: Line 288:
 ssh gate2 service haproxy restart ssh gate2 service haproxy restart
  
-server# ssh gate1 tail -f /​var/​log/​haproxy.log+server# ssh gateN tail -f /​var/​log/​haproxy.log
 </​code>​ </​code>​
  
Line 357: Line 305:
 <​code>​ <​code>​
 cmder> kubectl port-forward -n my-ns services/​my-webd-webd-chart 1234:80 cmder> kubectl port-forward -n my-ns services/​my-webd-webd-chart 1234:80
- 
-http://​localhost:​1234/​ 
 </​code>​ </​code>​
 +
 +  * http://​localhost:​1234/​
  
   * Меняем в файле проекта gowebd-k8s/​webd-chart/​Chart.yaml версию образа и ждем обновление через argocd   * Меняем в файле проекта gowebd-k8s/​webd-chart/​Chart.yaml версию образа и ждем обновление через argocd
Line 369: Line 317:
  
   * Подключаемся через [[Система Kubernetes#​kubectl proxy]] к нашему приложению   * Подключаемся через [[Система Kubernetes#​kubectl proxy]] к нашему приложению
-<​code>​ +  * http://​localhost:​8001/​api/​v1/​namespaces/​my-ns/​services/​my-webd-webd-chart:​80/​proxy/​
-http://​localhost:​8001/​api/​v1/​namespaces/​my-ns/​services/​my-webd-webd-chart:​80/​proxy/​ +
-</​code>​+
  
  
Line 379: Line 325:
  
 <​code>​ <​code>​
-gate1# cp /​etc/​ssl/​private/​wild.crtkey /​etc/​ssl/​private/​gowebd.crtkey +gate1# ​ 
-gate1# ​cp /​etc/​ssl/​private/​wild.crtkey /​etc/​ssl/​private/​keycloak.crtkey+cp /​etc/​ssl/​private/​wild.crtkey /​etc/​ssl/​private/​gowebd.crtkey 
 +cp /​etc/​ssl/​private/​wild.crtkey /​etc/​ssl/​private/​keycloak.crtkey
  
 gate1# cat /​etc/​haproxy/​haproxy.cfg gate1# cat /​etc/​haproxy/​haproxy.cfg
Line 387: Line 334:
 gate1# service haproxy restart gate1# service haproxy restart
  
-gate1# scp /​etc/​haproxy/​haproxy.cfg gate2:/​etc/​haproxy/​haproxy.cfg +server 
-gate1# ​scp /​etc/​ssl/​private/​* gate2:/​etc/​ssl/​private/​ +scp -3 gate1:/​etc/​haproxy/​haproxy.cfg gate2:/​etc/​haproxy/​haproxy.cfg 
-gate1# ​ssh gate2 service haproxy restart+scp -3 gate1:/​etc/​ssl/​private/​* gate2:/​etc/​ssl/​private/​ 
 +ssh gate2 service haproxy restart
 </​code>​ </​code>​
  
Line 407: Line 355:
 </​code><​code>​ </​code><​code>​
 iptables -t nat --flush 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 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 -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
 +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 conntrack -F
 netfilter-persistent save netfilter-persistent save
-</​code><​code>​ 
-gate.isp.un:​~#​ ip route del 192.168.13.0/​24 
 </​code>​ </​code>​
  
   * Настраиваем win client2 dns: 172.16.1.13   * Настраиваем win client2 dns: 172.16.1.13
  
 +===== Как все вернуть обратно =====
 +
 +  * 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/
 +
 +server# rm server.key
 +</​code>​
доступ_к_приложениям_в_bare-metal_kubernetes.txt · Last modified: 2024/04/04 08:20 by val