Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule pokazano, jak skonfigurować kontroler ruchu przychodzącego NGINX do pracy z wewnętrznym modułem równoważenia obciążenia platformy Azure. Wyjaśnia również, jak skonfigurować prywatną strefę DNS Azure, aby umożliwić rozpoznawanie nazw DNS dla prywatnych punktów końcowych i rozwiązywać określone domeny.
Zanim rozpoczniesz
Klaster usługi AKS z dodatkiem routingu aplikacji.
Aby dołączyć prywatną strefę DNS platformy Azure, musisz mieć rolę właściciel, administrator konta platformy Azure lub współadministrator platformy Azure w ramach subskrypcji platformy Azure.
Nawiązywanie połączenia z klastrem usługi AKS
Aby nawiązać połączenie z klastrem Kubernetes z komputera lokalnego, należy użyć kubectl
klienta wiersza polecenia kubernetes. Możesz zainstalować ją lokalnie przy użyciu polecenia az aks install-cli . Jeśli korzystasz z usługi Azure Cloud Shell, narzędzie kubectl
jest już zainstalowane.
W poniższym przykładzie skonfigurowano nawiązanie połączenia z klastrem o nazwie aks-cluster w test-rg za pomocą polecenia az aks get-credentials
.
az aks get-credentials \
--resource-group test-rg \
--name aks-cluster
Tworzenie sieci wirtualnej
Aby opublikować prywatną strefę DNS w sieci wirtualnej, określ listę sieci wirtualnych, które mogą rozpoznawać rekordy w strefie za pomocą linków sieci wirtualnej.
Poniższy przykład tworzy sieć wirtualną o nazwie vnet-1 w grupie zasobów test-rg i jedną podsieć o nazwie subnet-1 do utworzenia w sieci wirtualnej z określonym prefiksem adresu.
az network vnet create \
--name vnet-1 \
--resource-group test-rg \
--location eastus \
--address-prefix 10.2.0.0/16 \
--subnet-name subnet-1 \
--subnet-prefixes 10.2.0.0/24
Tworzenie prywatnej strefy DNS platformy Azure
Uwaga
Dodatek routingu aplikacji można skonfigurować tak, aby automatycznie tworzyć rekordy w co najmniej jednej globalnej i prywatnej strefie DNS platformy Azure dla hostów zdefiniowanych w zasobach ruchu przychodzącego. Wszystkie globalne strefy DNS platformy Azure i wszystkie prywatne strefy usługi Azure DNS muszą znajdować się w tej samej grupie zasobów.
Utwórz strefę DNS przy użyciu polecenia az network private-dns zone create , określając nazwę strefy i grupę zasobów, w ramach których ma zostać utworzona. Poniższy przykład tworzy strefę DNS o nazwie private.contoso.com w grupie zasobów test-rg .
az network private-dns zone create \
--resource-group test-rg \
--name private.contoso.com
Utworzysz link sieci wirtualnej do strefy DNS utworzonej wcześniej za pomocą polecenia az network private-dns link vnet create. Poniższy przykład tworzy link o nazwie dns-link do strefy private.contoso.com dla sieci wirtualnej vnet-1. Dołącz parametr --registration-enabled
, aby określić, że link nie jest aktywowany do rejestracji.
az network private-dns link vnet create \
--resource-group test-rg \
--name dns-link \
--zone-name private.contoso.com \
--virtual-network vnet-1 \
--registration-enabled false
Funkcja automatycznej rejestracji strefy prywatnej usługi Azure DNS zarządza rekordami DNS dla maszyn wirtualnych wdrożonych w sieci wirtualnej. Po połączeniu sieci wirtualnej z prywatną strefą DNS z włączonym tym ustawieniem zostanie utworzony rekord DNS dla każdej maszyny wirtualnej platformy Azure dla węzła usługi AKS wdrożonego w sieci wirtualnej.
Dołączanie prywatnej strefy DNS platformy Azure do dodatku routingu aplikacji
Uwaga
Komenda az aks approuting zone add
używa uprawnień użytkownika uruchamiającego ją w celu utworzenia przypisania roli strefy DNS Azure.
Rola współautora strefy DNS prywatnej to wbudowana rola do zarządzania prywatnymi zasobami DNS i jest przypisywana do tożsamości zarządzanej dodatku. Aby uzyskać więcej informacji na temat zarządzanych tożsamości AKS, zobacz Podsumowanie tożsamości zarządzanych.
Pobierz identyfikator zasobu dla strefy DNS przy użyciu
az network dns zone show
polecenia i ustaw dane wyjściowe na zmienną o nazwieZONEID
. Poniższy przykład wykonuje zapytanie dotyczące strefy private.contoso.com w grupie zasobów test-rg.ZONEID=$(az network private-dns zone show \ --resource-group test-rg \ --name private.contoso.com \ --query "id" \ --output tsv)
Zaktualizuj dodatek, aby włączyć integrację z usługą Azure DNS przy użyciu
az aks approuting zone
polecenia . Można przekazać rozdzielaną przecinkami listę identyfikatorów zasobów strefy DNS. Poniższy przykład aktualizuje klaster AKS o nazwie aks-cluster w grupie zasobów test-rg.az aks approuting zone add \ --resource-group test-rg \ --name aks-cluster \ --ids=${ZONEID} \ --attach-zones
Tworzenie kontrolera ruchu przychodzącego NGINX z prywatnym adresem IP i wewnętrznym modułem równoważenia obciążenia
Dodatek routingu aplikacji używa niestandardowej definicji zasobu Kubernetes (CRD) o nazwie NginxIngressController
, aby konfigurować kontrolery ruchu przychodzącego NGINX. Można utworzyć więcej kontrolerów ruchu przychodzącego lub zmodyfikować istniejącą konfigurację.
NginxIngressController
CRD ma loadBalancerAnnotations
pole kontrolujące zachowanie usługi kontrolera ingress NGINX, ustawiając adnotacje równoważnika obciążenia. Aby uzyskać więcej informacji na temat adnotacji modułu równoważenia obciążenia, zobacz Dostosowania za pośrednictwem adnotacji Kubernetes.
Wykonaj następujące kroki, aby utworzyć kontroler ruchu przychodzącego NGINX z wewnętrznym Load Balancerem Azure z prywatnym adresem IP.
Skopiuj następujący manifest YAML do nowego pliku o nazwie nginx-internal-controller.yaml i zapisz plik na komputerze lokalnym.
apiVersion: approuting.kubernetes.azure.com/v1alpha1 kind: NginxIngressController metadata: name: nginx-internal spec: ingressClassName: nginx-internal controllerNamePrefix: nginx-internal loadBalancerAnnotations: service.beta.kubernetes.io/azure-load-balancer-internal: "true"
Utwórz zasoby kontrolera wejściowego NGINX przy użyciu polecenia
kubectl apply
.kubectl apply -f nginx-internal-controller.yaml
W poniższych przykładowych danych wyjściowych przedstawiono utworzony zasób:
nginxingresscontroller.approuting.kubernetes.azure.com/nginx-internal created
Sprawdź, czy kontroler wejścia został utworzony
Status kontrolera wejściowego NGINX można sprawdzić przy użyciu polecenia
kubectl get nginxingresscontroller
.kubectl get nginxingresscontroller
Poniższe przykładowe dane wyjściowe pokazują utworzony zasób. Udostępnienie kontrolera może potrwać kilka minut:
NAME INGRESSCLASS CONTROLLERNAMEPREFIX AVAILABLE default webapprouting.kubernetes.azure.com nginx True nginx-internal nginx-internal nginx-internal True
Wdrażanie aplikacji
Dodatek routingu aplikacji używa adnotacji w obiektach Ingress Kubernetes do tworzenia odpowiednich zasobów.
Utwórz przestrzeń nazw aplikacji o nazwie
aks-store
, aby uruchomić przykładowe zasobniki przy użyciu poleceniakubectl create namespace
.kubectl create namespace aks-store
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 tworzy niezbędne wdrożenia i usługi dla aplikacji sklepu AKS.
Utwórz zasób Ingress, który używa nazwy hosta w prywatnej strefie DNS w Azure i prywatnego adresu IP
Zaktualizuj host
nazwę hosta DNS, na przykład store-front.private.contoso.com. Sprawdź, czy określasz element nginx-internal dla klasy ingressClassName.
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: nginx-internal rules: - host: store-front.private.contoso.com http: paths: - backend: service: name: store-front port: number: 80 path: / pathType: Prefix
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 sprawdzić, czy zarządzany Ingress został utworzony przy użyciu 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 nginx-internal store-front.private.contoso.com 80 10s
Sprawdź, czy prywatna strefa DNS platformy Azure została zaktualizowana
W ciągu kilku minut wykonaj polecenie az network private-dns record-set a list, aby wyświetlić rekordy A dla prywatnej strefy DNS platformy Azure. Określ nazwę grupy zasobów i nazwę strefy DNS. W tym przykładzie grupa zasobów jest test-rg , a strefa DNS jest private.contoso.com.
az network private-dns record-set a list \
--resource-group test-rg \
--zone-name private.contoso.com
W poniższych przykładowych danych wyjściowych przedstawiono utworzony rekord:
[
{
"aRecords": [
{
"ipv4Address": "10.224.0.7"
}
],
"etag": "ecc303c5-4577-4ca2-b545-d34e160d1c2d",
"fqdn": "store-front.private.contoso.com.",
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/test-rg/providers/Microsoft.Network/privateDnsZones/private.contoso.com/A/store-front",
"isAutoRegistered": false,
"name": "store-front",
"resourceGroup": "test-rg",
"ttl": 300,
"type": "Microsoft.Network/privateDnsZones/A"
}
]
Następne kroki
Aby uzyskać inne informacje o konfiguracji związane z szyfrowaniem SSL oraz innymi zaawansowanymi konfiguracjami kontrolera wejściowego i zasobów wejściowych NGINX, przejrzyj konfigurację DNS i SSL oraz konfigurację dodatku routingu aplikacji.
Azure Kubernetes Service