This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
как_и_чем_заменить_ingress_nginx [2026/02/23 07:43] val |
как_и_чем_заменить_ingress_nginx [2026/03/11 09:57] (current) val |
||
|---|---|---|---|
| Line 9: | Line 9: | ||
| * [[Все что должен знать DevOps про HTML]], HTTP и REST | * [[Все что должен знать DevOps про HTML]], HTTP и REST | ||
| + | * [[Стратегии деплоя в Kubernetes]] | ||
| + | ===== Реклама ===== | ||
| + | |||
| + | * Не так часто случается в индустрии, когда решение, долгое время используемое в качестве стандартного, вдруг оказывается без официальной поддержки. На нашем вебинаре мы обсудим причины и "как жить дальше" без Ingress NGINX, а так же узнаем, как и на что его можно заменить (спойлер: Traefik, Envoy, но, это не точно:) | ||
| + | |||
| + | ===== Техническое задание ===== | ||
| + | |||
| + | * Развернуть альтернативные решения, реализующие Ingress API | ||
| + | * Проверить работу приложений, использующих Ingress API | ||
| + | * Развернуть решения, реализующие Gateway API | ||
| + | * Провести миграцию приложений на Gateway API | ||
| + | |||
| + | ===== Запись вебинара ===== | ||
| + | |||
| + | * Тэги: Ingress, NGINX, | ||
| + | |||
| + | ===== Шаг 1. Что у нас есть, для начала ===== | ||
| + | |||
| + | * Система Kubernetes [[Система Kubernetes#Развертывание через Kubespray]] | ||
| + | * [[Решение FreeIPA]] | ||
| + | |||
| + | ===== Шаг 2. Развертывание приложения ===== | ||
| + | |||
| + | * [[Система Kubernetes#Deployment]] | ||
| <code> | <code> | ||
| kube1:~/webd-k8s# cat my-webd-deployment.yaml | kube1:~/webd-k8s# cat my-webd-deployment.yaml | ||
| ... | ... | ||
| - | # image: httpd | ||
| image: brndnmtthws/nginx-echo-headers | image: brndnmtthws/nginx-echo-headers | ||
| ... | ... | ||
| </code> | </code> | ||
| + | * [[Система Kubernetes#Service]] | ||
| + | |||
| + | ===== Шаг 3. Доступ к приложению через Ingress NGINX ===== | ||
| + | * [[Система Kubernetes#MetalLB]] | ||
| + | * [[Система Kubernetes#Установка Helm]] | ||
| + | * [[Система Kubernetes#ingress-nginx]] | ||
| + | |||
| + | * [[Решение FreeIPA#Создание ключа и сертификата для стороннего сервиса]] ehwebd | ||
| + | * [[Система Kubernetes#secrets tls]] | ||
| + | <code> | ||
| + | kube1:~# kubectl create secret tls ehwebd-tls --key /tmp/ehwebd.key --cert /tmp/ehwebd.crt -n my-ns | ||
| + | </code> | ||
| + | |||
| + | * [[Система Kubernetes#ingress example]] | ||
| + | |||
| + | ===== Шаг 4. Замена Ingress NGINX на Ingress Traefik ===== | ||
| + | |||
| + | <code> | ||
| + | kube1:~/webd-k8s# kubectl delete -f my-ingress.yaml -n my-ns | ||
| + | </code> | ||
| + | |||
| + | * [[Система Kubernetes#ingress-traefik-controller]] | ||
| + | |||
| + | <code> | ||
| + | kube1:~/webd-k8s# kubectl -n traefik logs pods/traefik-<TAB> | ||
| + | |||
| + | kube1:~/webd-k8s# cat my-ingress.yaml | ||
| + | ... | ||
| + | # number: 8080 | ||
| + | number: 80 | ||
| + | ... | ||
| + | </code> | ||
| + | |||
| + | ===== Шаг 5. Замена Ingress на Gateway API ===== | ||
| * [[Система Kubernetes#Gateway API]] | * [[Система Kubernetes#Gateway API]] | ||
| + | |||
| * [[Система Kubernetes#Traefik]] | * [[Система Kubernetes#Traefik]] | ||
| + | |||
| * [[Система Kubernetes#Envoy Gateway]] | * [[Система Kubernetes#Envoy Gateway]] | ||
| - | <code> | + | * [[Система Kubernetes#Gateway]] |
| - | kube1:~/webd-k8s# cat my-gateway.yaml | + | * [[Система Kubernetes#HTTPRoute]] |
| - | </code><code> | + | |
| - | apiVersion: gateway.networking.k8s.io/v1 | + | |
| - | kind: Gateway | + | |
| - | metadata: | + | |
| - | name: my-gateway | + | |
| - | spec: | + | |
| - | # gatewayClassName: traefik | + | |
| - | # gatewayClassName: eg | + | |
| - | listeners: | + | |
| - | - name: http | + | |
| - | # port: 8000 | + | |
| - | # port: 80 | + | |
| - | protocol: HTTP | + | |
| - | - name: https | + | |
| - | hostname: "htwebd.corpX.un" | + | |
| - | protocol: HTTPS | + | |
| - | # port: 8443 | + | |
| - | # port: 443 | + | |
| - | tls: | + | |
| - | mode: Terminate | + | |
| - | certificateRefs: | + | |
| - | - kind: Secret | + | |
| - | name: htwebd-tls | + | |
| - | </code><code> | + | |
| - | kube1:~/webd-k8s# cat my-httproute.yaml | + | |
| - | </code><code> | + | |
| - | apiVersion: gateway.networking.k8s.io/v1 | + | |
| - | kind: HTTPRoute | + | |
| - | metadata: | + | |
| - | name: my-httproute | + | |
| - | spec: | + | |
| - | hostnames: | + | |
| - | - htwebd.corpX.un | + | |
| - | parentRefs: | + | |
| - | - name: my-gateway | + | |
| - | # - name: traefik-gateway | + | |
| - | # namespace: traefik | + | |
| - | rules: | + | |
| - | - matches: | + | |
| - | - path: | + | |
| - | type: Exact | + | |
| - | value: / | + | |
| - | backendRefs: | + | |
| - | - name: my-webd | + | |
| - | port: 80 | + | |
| - | </code> | + | |