Wdrażanie kontrolera ruchu przychodzącego
Dotyczy: usługa AKS w usłudze Azure Stack HCI 22H2, AKS w systemie Windows Server
Kontroler ruchu przychodzącego to zasób Kubernetes, który umożliwia dostęp zewnętrzny do usług w klastrze Kubernetes. Ruch przychodzący umożliwia operatorowi uwidacznienie usługi do żądań sieci zewnętrznych, zwykle HTTP lub HTTPS. Dostęp można skonfigurować, tworząc zestaw reguł definiujących połączenia przychodzące, które docierają do określonych usług.
Kontroler ruchu przychodzącego to oprogramowanie, które zapewnia konfigurowalny routing ruchu dla usług Kubernetes. Zasoby ruchu przychodzącego usług Kubernetes są używane do skonfigurowania zasad ruchu przychodzącego oraz tras dla poszczególnych usług Kubernetes. Za pomocą kontrolera ruchu przychodzącego i reguł ruchu przychodzącego można użyć jednego adresu IP do kierowania ruchu do wielu usług w klastrze Kubernetes.
Po wdrożeniu kontrolera w środowisku można utworzyć i wdrożyć manifest ruchu przychodzącego. Obecnie używasz ruchu przychodzącego w usłudze AKS Arc przy użyciu kontrolera ruchu przychodzącego NGINX. Aby uzyskać informacje o sposobie instalowania, konfigurowania i używania kontrolera ruchu przychodzącego NGINX, zobacz Instalacja z manifestami.
Ruch przychodzący różni się od węzłówPort i LoadBalancer w unikatowy sposób i poprawia routing ruchu do klastra w mniej kosztowny sposób. Definiowanie usług NodePort powoduje utworzenie wielu losowych portów i zdefiniowanie usług LoadBalancer zwiększa koszt zasobów w chmurze więcej niż może być potrzebny. Podczas definiowania kontrolera ruchu przychodzącego można skonsolidować reguły routingu ruchu do pojedynczego zasobu, który działa w ramach klastra. Węzły NodePort i LoadBalancer umożliwiają uwidocznienie usługi przez określenie tej wartości w typie usługi, natomiast ruch przychodzący jest niezależnym zasobem dla usługi. Ruch przychodzący jest definiowany, tworzony i niszczony oddzielnie od usługi.
Ruch przychodzący można wdrażać na różne sposoby w zależności od przypadku użycia. Zasoby ruchu przychodzącego są używane do aktualizowania konfiguracji w kontrolerze ruchu przychodzącego w celu określenia sposobu jego działania.
Używanie ruchu przychodzącego do uwidaczniania usług za pośrednictwem adresów URL dostępnych zewnętrznie
Przykład użycia ruchu przychodzącego jest pokazany w następującym manifeście YAML. Element ingress.class
pojawia się w metadanych (w tym przykładzie ), a to ustawienie umożliwia kontrolerowi ruchu przychodzącego NGINX wiadomo, ingress-nginx
co musi monitorować i aktualizować:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: hello-world
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: test.example.com
http:
paths:
- path: /hello-world
pathType: Prefix
backend:
service:
name: hello-world
port:
number: 8080
Sekcja spec
zawiera informacje o skonfigurowanych elementach. W tym przykładzie zdefiniowana jest reguła (lub zestaw reguł) zawierająca następujące elementy:
- Host, do którego są stosowane reguły.
- Niezależnie od tego, czy ruch jest http, czy HTTPS.
- Monitorowana ścieżka.
- Wewnętrzna usługa i port, w którym jest wysyłany ruch.
Równoważenie obciążenia ruchem przy użyciu ruchu przychodzącego
W poniższym przykładzie kolejna ścieżka jest dodawana do manifestu, który zezwala na równoważenie obciążenia między różnymi zapleczami aplikacji. W tym przykładzie operator może podzielić ruch i wysłać go do różnych punktów końcowych usługi i wdrożeń na podstawie opisanej ścieżki. Za każdą ścieżką jest wdrożenie i usługa, która jest przydatna w przypadku punktów końcowych, które odbierają większy ruch:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: hello-world-and-earth
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: test.example.com
http:
paths:
- path: /hello-world
pathType: Prefix
backend:
service:
name: hello-world
port:
number: 8080
- path: /hello-earth
pathType: Prefix
backend:
service:
name: hello-earth
port:
number: 8080
Kierowanie ruchu HTTP do wielu nazw hostów na tym samym adresie IP przy użyciu ruchu przychodzącego
Dla każdego hosta można użyć innego zasobu ruchu przychodzącego, który umożliwia kontrolowanie ruchu przy użyciu wielu nazw hostów. Aby użyć innego zasobu ruchu przychodzącego, wskaż wiele nazw hostów na tym samym publicznym adresie IP używanym dla usługi LoadBalancer. W poniższym pliku manifestu dodano produkcyjną wersję hello-world
programu . Używana jest nazwa prod.example.com
hosta, a ruch jest wskazywany na nową usługę hello-world-prod
. Ruch przechodzi przez adres IP modułu równoważenia obciążenia i jest kierowany na podstawie nazwy hosta i podanej ścieżki:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: hello-world-prod
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: test.example.com
http:
paths:
- path: /hello-world
pathType: Prefix
backend:
service:
name: hello-world-test
port:
number: 8080
- host: prod.example.com
http:
paths:
- path: /hello-world
pathType: Prefix
backend:
service:
name: hello-world-prod
port:
number: 8080
Następne kroki
Aby uzyskać więcej informacji, skorzystaj z następujących linków: