Udostępnij przez


Zarządzany kontroler NGINX Ingress z rozszerzeniem do routingu aplikacji

Jednym ze sposobów kierowania ruchu protokołu HTTP (Hypertext Transfer Protocol) i HTTPS (Hypertext Transfer Protocol Secure) do aplikacji działających w klastrze usługi Azure Kubernetes Service (AKS) jest użycie obiektu Ingress Kubernetes. Podczas tworzenia obiektu Ingress, który używa klas Ingress dodatku do routingu aplikacji NGINX, dodatek tworzy, konfiguruje i zarządza jednym lub więcej kontrolerami Ingress w klastrze AKS.

W tym artykule pokazano, jak wdrożyć i skonfigurować podstawowy kontroler Ingress w klastrze AKS.

Dodatek routingu aplikacji z funkcjami NGINX

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

  • Łatwa konfiguracja zarządzanych kontrolerów NGINX Ingress opartych na kontrolerze NGINX Ingress Kubernetes.
  • Integracja z usługą Azure DNS na potrzeby zarządzania strefami publicznymi i prywatnymi
  • Terminowanie SSL z certyfikatami przechowywanymi w usłudze Azure Key Vault.

Aby zobaczyć inne konfiguracje, zobacz:

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 Ingressu: load_module, lua_package, _by_lua, location, root, proxy_pass, serviceaccount, {, }, '.

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

Włącz na nowym klastrze

Aby włączyć routing aplikacji w nowym klastrze, użyj az aks create polecenia z określeniem flagi --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 polecenia az aks approuting enable.

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 połączyć się 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 Ingress 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.

Utwórz obiekt Ingress

Dodatek do routingu aplikacji tworzy klasę Ingress w klastrze o nazwie webapprouting.kubernetes.azure.com. Podczas tworzenia obiektu Ingress za pomocą tej klasy aktywuje się 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 Ingress przy użyciu polecenia kubectl apply.

    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 Ingress

Możesz zweryfikować utworzenie zarządzanego Ingress za pomocą polecenia kubectl get ingress.

kubectl get ingress -n aks-store

W poniższym przykładowym wyniku przedstawiono utworzony zarządzany Ingress:

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ąc przeglądarkę na publiczny adres IP kontrolera Ingress. 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