доступ_к_приложениям_в_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 09:04]
val [Шаг 6.2. Закрываем доступ в сеть кластера]
доступ_к_приложениям_в_bare-metal_kubernetes [2024/04/04 08:20] (current)
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#​ 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 171: Line 122:
 </​code>​ </​code>​
  
 +  * Тестируем отказоустойчивость,​ отключая узлы kubeN
 ===== Шаг 6. Делаем отказоустойчивым gate ===== ===== Шаг 6. Делаем отказоустойчивым gate =====
  
Line 255: Line 207:
   * Сервис 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
 </​code>​ </​code>​
  
Line 285: Line 237:
  
 <​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 338: Line 290:
 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 355: Line 307:
 <​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 367: Line 319:
  
   * Подключаемся через [[Система 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 377: Line 327:
  
 <​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 385: Line 336:
 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 405: Line 357:
 </​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 --flush
 +iptables -A FORWARD -i eth0 -j ACCEPT
 iptables -A FORWARD -m conntrack --ctstate RELATED,​ESTABLISHED -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 -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 iptables -A FORWARD -j DROP
-conntrack -F 
  
 +conntrack -F
 netfilter-persistent save netfilter-persistent save
 </​code>​ </​code>​
Line 419: Line 372:
   * Настраиваем 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.1710655444.txt.gz · Last modified: 2024/03/17 09:04 by val