Udostępnij za pośrednictwem


Zarządzany ruch przychodzący NGINX z dodatkiem routingu aplikacji

Jednym ze sposobów kierowania ruchu protokołu HTTP (Hypertext Transfer Protocol) i bezpiecznego (HTTPS) do aplikacji działających w klastrze usługi Azure Kubernetes Service (AKS) jest użycie obiektu Ruchu przychodzącego Kubernetes. Podczas tworzenia obiektu ruchu przychodzącego, który używa klas ruchu przychodzącego NGINX dodatku routingu aplikacji, dodatek tworzy, konfiguruje i zarządza co najmniej jednym kontrolerem ruchu przychodzącego w klastrze usługi AKS.

W tym artykule pokazano, jak wdrożyć i skonfigurować podstawowy kontroler ruchu przychodzącego w klastrze usługi AKS.

Dodatek routingu aplikacji z funkcjami NGINX

Dodatek routingu aplikacji z serwerem NGINX zapewnia następujące elementy:

  • Łatwa konfiguracja zarządzanych kontrolerów ruchu przychodzącego NGINX na podstawie kontrolera ruchu przychodzącego NGINX Platformy Kubernetes.
  • Integracja z usługą Azure DNS na potrzeby zarządzania strefami publicznymi i prywatnymi
  • Kończenie żądań SSL z certyfikatami przechowywanymi w usłudze Azure Key Vault.

Inne konfiguracje można znaleźć w temacie:

Po wycofaniu usługi Open Service Mesh (OSM) przez Cloud Native Computing Foundation (CNCF) użycie dodatku routingu aplikacji z OSM nie jest zalecane.

Wymagania wstępne

  • Subskrypcja platformy Azure. Jeśli nie masz subskrypcji Azure, możesz utworzyć bezpłatne konto Azure.
  • Interfejs wiersza polecenia platformy Azure w wersji 2.54.0 lub nowszej został zainstalowany i skonfigurowany. Uruchom polecenie az --version, aby dowiedzieć się, jaka wersja jest używana. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.

Ograniczenia

  • Dodatek routingu aplikacji obsługuje maksymalnie pięć stref usługi Azure DNS.
  • Dodatek routingu aplikacji można włączyć tylko w klastrach usługi AKS z tożsamością zarządzaną.
  • Wszystkie globalne strefy DNS platformy Azure zintegrowane z dodatkiem muszą znajdować się w tej samej grupie zasobów.
  • Wszystkie prywatne strefy DNS platformy Azure zintegrowane z dodatkiem muszą znajdować się w tej samej grupie zasobów.
  • Edytowanie pliku ingress-nginx ConfigMap w app-routing-system przestrzeni nazw nie jest obsługiwane.
  • Następujące adnotacje fragmentu kodu są blokowane i uniemożliwią skonfigurowanie ruchu przychodzącego: load_module, rootproxy_passlua_package{_by_lua'locationserviceaccount}.

Włączanie routingu aplikacji przy użyciu interfejsu wiersza polecenia platformy Azure

Włączanie w nowym klastrze

Aby włączyć routing aplikacji w nowym klastrze, użyj az aks create polecenia , określając flagę --enable-app-routing .

az aks create \
    --resource-group <ResourceGroupName> \
    --name <ClusterName> \
    --location <Location> \
    --enable-app-routing \
    --generate-ssh-keys

Włączanie w istniejącym klastrze

Aby włączyć routing aplikacji w istniejącym klastrze, użyj az aks approuting enable polecenia .

az aks approuting enable --resource-group <ResourceGroupName> --name <ClusterName>

Nawiązywanie połączenia z klastrem usługi AKS

Aby nawiązać połączenie z klastrem Kubernetes z komputera lokalnego, należy użyć narzędzia kubectl, czyli klienta wiersza polecenia usługi Kubernetes. Możesz zainstalować ją lokalnie przy użyciu az aks install-cli polecenia . Jeśli korzystasz z usługi Azure Cloud Shell, narzędzie kubectl jest już zainstalowane.

Skonfiguruj, kubectl aby nawiązać połączenie z klastrem Kubernetes przy użyciu polecenia az aks get-credentials .

az aks get-credentials --resource-group <ResourceGroupName> --name <ClusterName>

Wdrażanie aplikacji

Dodatek routingu aplikacji używa adnotacji w obiektach ruchu przychodzącego Kubernetes w celu utworzenia odpowiednich zasobów.

  1. Utwórz przestrzeń nazw aplikacji o nazwie aks-store , aby uruchomić przykładowe zasobniki przy użyciu kubectl create namespace polecenia .

    kubectl create namespace aks-store
    
  2. Wdróż aplikację magazynu AKS przy użyciu następującego pliku manifestu YAML:

    kubectl apply -f https://raw.githubusercontent.com/Azure-Samples/aks-store-demo/main/sample-manifests/docs/app-routing/aks-store-deployments-and-services.yaml -n aks-store
    

Ten manifest spowoduje utworzenie niezbędnych wdrożeń i usług dla aplikacji sklepu AKS.

Tworzenie obiektu ruchu przychodzącego

Dodatek routingu aplikacji tworzy klasę ruchu przychodzącego w klastrze o nazwie webapprouting.kubernetes.azure.com. Podczas tworzenia obiektu ruchu przychodzącego za pomocą tej klasy aktywuje dodatek.

  1. Skopiuj następujący manifest YAML do nowego pliku o nazwie ingress.yaml i zapisz plik na komputerze lokalnym.

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: store-front
      namespace: aks-store
    spec:
      ingressClassName: webapprouting.kubernetes.azure.com
      rules:
      - http:
          paths:
          - backend:
              service:
                name: store-front
                port:
                  number: 80
            path: /
            pathType: Prefix
    
  2. Utwórz zasób ruchu przychodzącego kubectl apply przy użyciu polecenia .

    kubectl apply -f ingress.yaml -n aks-store
    

    W poniższych przykładowych danych wyjściowych przedstawiono utworzony zasób:

    ingress.networking.k8s.io/store-front created
    

Sprawdź, czy utworzono zarządzany ruch przychodzący

Możesz sprawdzić, czy zarządzany ruch przychodzący został utworzony przy użyciu kubectl get ingress polecenia .

kubectl get ingress -n aks-store

W poniższych przykładowych danych wyjściowych przedstawiono utworzony zarządzany ruch przychodzący:

NAME          CLASS                                HOSTS   ADDRESS       PORTS   AGE
store-front   webapprouting.kubernetes.azure.com   *       51.8.10.109   80      110s

Możesz sprawdzić, czy magazyn usługi AKS działa wskazujący przeglądarkę na publiczny adres IP kontrolera ruchu przychodzącego. Znajdź adres IP za pomocą narzędzia kubectl:

kubectl get service -n app-routing-system nginx -o jsonpath="{.status.loadBalancer.ingress[0].ip}"

Usuwanie dodatku routingu aplikacji

Aby usunąć skojarzona przestrzeń nazw, użyj kubectl delete namespace polecenia .

kubectl delete namespace aks-store

Aby usunąć dodatek routingu aplikacji z klastra, użyj az aks approuting disable polecenia .

az aks approuting disable --name <ClusterName> --resource-group <ResourceGroupName>

Uwaga

Aby uniknąć potencjalnych zakłóceń ruchu w klastrze, gdy dodatek routingu aplikacji jest wyłączony, niektóre zasoby Kubernetes, w tym configMaps, wpisy tajne i wdrożenie , które uruchamia kontroler, pozostanie w klastrze. Te zasoby znajdują się w przestrzeni nazw app-routing-system . Możesz usunąć te zasoby, jeśli nie są już potrzebne, usuwając przestrzeń nazw za pomocą polecenia kubectl delete ns app-routing-system.

Następne kroki