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.
  • aks-preview Zainstalowane rozszerzenie interfejsu wiersza polecenia platformy Azure w wersji 0.5.171 lub nowszej

Ograniczenia

  • Dodatek routingu aplikacji obsługuje maksymalnie pięć stref usługi Azure DNS.
  • 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

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>

Połączenie do klastra 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 hello-web-app-routing , aby uruchomić przykładowe zasobniki przy użyciu kubectl create namespace polecenia .

    kubectl create namespace hello-web-app-routing
    
  2. Utwórz wdrożenie, kopiując następujący manifest YAML do nowego pliku o nazwie deployment.yaml i zapisz plik na komputerze lokalnym.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: aks-helloworld  
      namespace: hello-web-app-routing
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: aks-helloworld
      template:
        metadata:
          labels:
            app: aks-helloworld
        spec:
          containers:
          - name: aks-helloworld
            image: mcr.microsoft.com/azuredocs/aks-helloworld:v1
            ports:
            - containerPort: 80
            env:
            - name: TITLE
              value: "Welcome to Azure Kubernetes Service (AKS)"
    
  3. Utwórz usługę, kopiując następujący manifest YAML do nowego pliku o nazwie service.yaml i zapisując plik na komputerze lokalnym.

    apiVersion: v1
    kind: Service
    metadata:
      name: aks-helloworld
      namespace: hello-web-app-routing
    spec:
      type: ClusterIP
      ports:
      - port: 80
      selector:
        app: aks-helloworld
    

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: aks-helloworld
      namespace: hello-web-app-routing
    spec:
      ingressClassName: webapprouting.kubernetes.azure.com
      rules:
      - host: <Hostname>
        http:
          paths:
          - backend:
              service:
                name: aks-helloworld
                port:
                  number: 80
            path: /
            pathType: Prefix
    
  2. Utwórz zasoby klastra przy użyciu kubectl apply polecenia .

    kubectl apply -f deployment.yaml -n hello-web-app-routing
    

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

    deployment.apps/aks-helloworld created
    
    kubectl apply -f service.yaml -n hello-web-app-routing
    

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

    service/aks-helloworld created
    
    kubectl apply -f ingress.yaml -n hello-web-app-routing
    

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

    ingress.networking.k8s.io/aks-helloworld 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 hello-web-app-routing

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

NAME             CLASS                                HOSTS               ADDRESS       PORTS     AGE
aks-helloworld   webapprouting.kubernetes.azure.com   myapp.contoso.com   20.51.92.19   80, 443   4m

Usuwanie dodatku routingu aplikacji

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

kubectl delete namespace hello-web-app-routing

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

az aks approuting disable --name myAKSCluster --resource-group myResourceGroup 

Gdy dodatek routingu aplikacji jest wyłączony, niektóre zasoby Kubernetes mogą pozostać w klastrze. Te zasoby obejmują konfigurację Mapy i wpisy tajne i są tworzone w przestrzeni nazw app-routing-system. Jeśli chcesz, możesz usunąć te zasoby.

Następne kroki