Udostępnij za pośrednictwem


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-nginxco 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: