This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
стратегии_деплоя_в_kubernetes [2025/02/24 15:37] val [Шаг 6. canary deployment with Istio VirtualService] |
стратегии_деплоя_в_kubernetes [2025/03/24 18:06] (current) val [Шаг 6. canary deployment with Istio VirtualService] |
||
---|---|---|---|
Line 17: | Line 17: | ||
===== Запись вебинара ===== | ===== Запись вебинара ===== | ||
- | * Тэги: | + | * Тэги: deployment rollout, canary deployment, ingress annotations, Kubernetes Gateway API, Istio Service Mesh, kiali, nginx proxy header |
+ | * https://rutube.ru/video/private/45160ea603c4f541cd11ebcc3fdf5109/ | ||
+ | * https://youtu.be/uEpEDk8EWSg | ||
===== Методическая подготовка ===== | ===== Методическая подготовка ===== | ||
- | ==== В паузах рассказать про ==== | ||
- | |||
- | * | ||
===== Шаг 1. Что у нас есть для начала ===== | ===== Шаг 1. Что у нас есть для начала ===== | ||
Line 428: | Line 427: | ||
# match: | # match: | ||
# - headers: | # - headers: | ||
- | ## x-forwarded-for: | + | # x-forwarded-for: |
- | ## regex: "192.168.13.*" | + | # regex: "192.168.13.*" |
- | # x-my-version: | + | ## x-my-version: |
- | # exact: canary | + | ## exact: canary |
# route: | # route: | ||
# - destination: | # - destination: | ||
Line 616: | Line 615: | ||
kube1# while true; do curl 192.168.13.65 -H "Host: gowebd.corp13.un"; sleep 0.1; done | kube1# while true; do curl 192.168.13.65 -H "Host: gowebd.corp13.un"; sleep 0.1; done | ||
</code> | </code> | ||
+ | |||
+ | ==== Добавление журналов ==== | ||
* [[https://istio.io/latest/docs/tasks/observability/logs/access-log/|Envoy Access Logs ... Default access log format]] | * [[https://istio.io/latest/docs/tasks/observability/logs/access-log/|Envoy Access Logs ... Default access log format]] | ||
Line 621: | Line 622: | ||
<code> | <code> | ||
kube1# vim virtserv-after-gateway.yaml | kube1# vim virtserv-after-gateway.yaml | ||
- | + | </code><code> | |
- | kube1# curl 192.168.13.65 -H "Host: gowebd.corp13.un" -H "x-my-version: canary" | + | ... |
+ | x-forwarded-for: | ||
+ | regex: "192.168.13.*" | ||
+ | ... | ||
+ | - {} | ||
+ | route: | ||
+ | - destination: | ||
+ | host: frontend | ||
+ | subset: v1 | ||
+ | </code><code> | ||
kube1# cat telemetry.yaml | kube1# cat telemetry.yaml | ||
</code><code> | </code><code> | ||
Line 641: | Line 650: | ||
kube1# kubectl -n my-ns logs -l app=my-webd-lab -c istio-proxy -f | kube1# kubectl -n my-ns logs -l app=my-webd-lab -c istio-proxy -f | ||
+ | kube1# kubectl -n my-ns logs pods/my-webd-v2-<TAB> -c istio-proxy -f | ||
+ | kube1# kubectl -n my-ns logs pods/frontend-v2-<TAB> -c istio-proxy -f | ||
+ | </code><code> | ||
+ | kube1# vim virtserv-after-gateway.yaml | ||
+ | </code><code> | ||
+ | ... | ||
+ | # x-my-version: | ||
+ | # exact: canary | ||
+ | ... | ||
+ | </code><code> | ||
+ | kube1# curl 192.168.13.65 -H "Host: gowebd.corp13.un" -H "x-my-version: canary" | ||
+ | |||
+ | gate# systemctl disable haproxy --now | ||
gate# cat /etc/nginx/sites-available/gowebd | gate# cat /etc/nginx/sites-available/gowebd | ||
Line 647: | Line 669: | ||
listen 80; | listen 80; | ||
server_name gowebd.corp13.un; | server_name gowebd.corp13.un; | ||
- | return 301 https://gowebd.corp13.un$request_uri; | + | return 301 https://gowebd.corp13.un:443$request_uri; |
} | } | ||
Line 661: | Line 683: | ||
proxy_set_header Host $host; | proxy_set_header Host $host; | ||
proxy_set_header X-Forwarded-For $remote_addr; | proxy_set_header X-Forwarded-For $remote_addr; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | server { | ||
+ | listen 8080; | ||
+ | server_name gowebd.corp13.un; | ||
+ | return 301 https://gowebd.corp13.un:8443$request_uri; | ||
+ | } | ||
+ | |||
+ | server { | ||
+ | listen 8443 ssl; | ||
+ | server_name gowebd.corp13.un; | ||
+ | ssl_certificate /root/gowebd.crt; | ||
+ | ssl_certificate_key /root/gowebd.key; | ||
+ | |||
+ | location / { | ||
+ | proxy_pass http://192.168.13.65; | ||
+ | proxy_http_version 1.1; | ||
+ | proxy_set_header Host $host; | ||
+ | proxy_set_header X-Forwarded-For $remote_addr; | ||
+ | proxy_set_header X-My-Version "canary"; | ||
} | } | ||
} | } | ||
</code><code> | </code><code> | ||
+ | gate# systemctl enable nginx --now | ||
+ | |||
+ | gate.corp13.un:~# cat /etc/iptables/rules.v4 | ||
+ | ... | ||
+ | :POSTROUTING ACCEPT [0:0] | ||
+ | -A PREROUTING -d 172.16.1.13/32 -i eth1 -p udp -m udp --dport 53 -j DNAT --to-destination 192.168.13.10:53 | ||
+ | -A PREROUTING -s 172.16.1.113/32 -d 172.16.1.13/32 -p tcp -m tcp --dport 80 -j DNAT --to-destination 172.16.1.13:8080 | ||
+ | -A PREROUTING -s 172.16.1.113/32 -d 172.16.1.13/32 -p tcp -m tcp --dport 443 -j DNAT --to-destination 172.16.1.13:8443 | ||
+ | -A POSTROUTING -s 192.168.13.0/24 -o eth1 -j MASQUERADE | ||
+ | COMMIT | ||
+ | ... | ||
+ | gate.corp13.un:~# iptables-restore /etc/iptables/rules.v4 | ||
+ | |||
server# curl https://gowebd.corp13.un | server# curl https://gowebd.corp13.un | ||