Konfigurowanie kontrolera ruchu przychodzącego NGINX w celu obsługi prywatnej strefy DNS platformy Azure z dodatkiem routingu aplikacji
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 i skonfigurować prywatną strefę usługi Azure DNS w celu umożliwienia rozpoznawania nazw DNS dla prywatnych punktów końcowych w celu rozpoznawania określonych domen.
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.
Poniższy przykład umożliwia skonfigurowanie nawiązywania połączenia z klastrem o nazwie myAKSCluster w grupie myResourceGroup przy użyciu az aks get-credentials
polecenia .
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Tworzenie sieci wirtualnej
Aby opublikować prywatną strefę DNS w sieci wirtualnej, należy określić listę sieci wirtualnych, które mogą rozpoznawać rekordy w strefie. Są to połączenia sieci wirtualnej.
Poniższy przykład tworzy sieć wirtualną o nazwie myAzureVNet w grupie zasobów myResourceGroup i jedną podsieć o nazwie mySubnet do utworzenia w sieci wirtualnej z określonym prefiksem adresu.
az network vnet create \
--name myAzureVNet \
--resource-group myResourceGroup \
--location eastus \
--address-prefix 10.2.0.0/16 \
--subnet-name mysubnet \
--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.
Strefę DNS można utworzyć przy użyciu polecenia az network private-dns zone create , określając nazwę strefy i grupę zasobów, w której ma zostać utworzona. Poniższy przykład tworzy strefę DNS o nazwie private.contoso.com w grupie zasobów myResourceGroup .
az network private-dns zone create --resource-group myResourceGroup --name private.contoso.com
Utworzysz link sieci wirtualnej do strefy DNS utworzonej wcześniej przy użyciu polecenia az network private-dns link vnet create . Poniższy przykład tworzy link o nazwie myDNSLink do strefy private.contoso.com dla sieci wirtualnej myAzureVNet. Dołącz parametr , --registration-enabled
aby określić link nie jest włączony.
az network private-dns link vnet create --resource-group myResourceGroup \
--name myDNSLink \
--zone-name private.contoso.com \
--virtual-network myAzureVNet \
--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
Polecenie az aks approuting zone add
używa uprawnień użytkownika uruchamiającego polecenie w celu utworzenia przypisania roli strefy DNS platformy Azure. Rola współautora strefy Prywatna strefa DNS jest wbudowaną rolą do zarządzania prywatnymi zasobami DNS i jest przypisywana do tożsamości zarządzanej dodatku. Aby uzyskać więcej informacji na temat tożsamości zarządzanych usługi 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 myResourceGroup.ZONEID=$(az network private-dns zone show --resource-group myResourceGroup --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 usługi AKS myAKSCluster w grupie zasobów myResourceGroup.az aks approuting zone add --resource-group myResourceGroup --name myAKSCluster --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 zasobów Kubernetes (CRD) wywoływanej NginxIngressController
do konfigurowania kontrolerów ruchu przychodzącego NGINX. Można utworzyć więcej kontrolerów ruchu przychodzącego lub zmodyfikować istniejącą konfigurację.
NginxIngressController
CrD ma loadBalancerAnnotations
pole do kontrolowania zachowania usługi kontrolera ruchu przychodzącego NGINX przez ustawienie adnotacji modułu równoważenia obciążenia.
Wykonaj następujące kroki, aby utworzyć kontroler ruchu przychodzącego NGINX z wewnętrznym modułem równoważenia obciążenia platformy 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 ruchu przychodzącego NGINX przy użyciu
kubectl apply
polecenia .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 ruchu przychodzącego został utworzony
Stan kontrolera ruchu przychodzącego NGINX można sprawdzić przy użyciu
kubectl get nginxingresscontroller
polecenia .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 ruchu przychodzącego Kubernetes w celu utworzenia odpowiednich zasobów.
Utwórz przestrzeń nazw aplikacji o nazwie
hello-web-app-routing
, aby uruchomić przykładowe zasobniki przy użyciukubectl create namespace
polecenia .kubectl create namespace hello-web-app-routing
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)"
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
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 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 created
Utwórz zasób ruchu przychodzącego, który używa nazwy hosta w prywatnej strefie DNS platformy Azure i prywatnego adresu IP
Skopiuj następujący manifest YAML do nowego pliku o nazwie ingress.yaml i zapisz plik na komputerze lokalnym.
Zaktualizuj
<Hostname>
ciąg nazwą hosta DNS, na przykładhelloworld.private.contoso.com
. Sprawdź, czy określasznginx-internal
dla elementuingressClassName
.apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: aks-helloworld namespace: hello-web-app-routing spec: ingressClassName: nginx-internal rules: - host: <Hostname> http: paths: - backend: service: name: aks-helloworld port: number: 80 path: / pathType: Prefix
Utwórz zasoby klastra przy użyciu
kubectl apply
polecenia .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 nginx-internal helloworld.private.contoso.com 10.224.0.7 80 98s
Sprawdź, czy prywatna strefa DNS platformy Azure została zaktualizowana
W ciągu kilku minut uruchom 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 to myResourceGroup , a strefa DNS jest private.contoso.com.
az network private-dns record-set a list --resource-group myResourceGroup --zone-name private.contoso.com
W poniższych przykładowych danych wyjściowych przedstawiono utworzony rekord:
[
{
"aRecords": [
{
"ipv4Address": "10.224.0.7"
}
],
"etag": "188f0ce5-90e3-49e6-a479-9e4053f21965",
"fqdn": "helloworld.private.contoso.com.",
"id": "/subscriptions/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx/resourceGroups/foo/providers/Microsoft.Network/privateDnsZones/private.contoso.com/A/helloworld",
"isAutoRegistered": false,
"name": "helloworld",
"resourceGroup": "foo",
"ttl": 300,
"type": "Microsoft.Network/privateDnsZones/A"
}
]
Następne kroki
Aby uzyskać inne informacje o konfiguracji związane z szyfrowaniem SSL inne zaawansowane kontrolery ruchu przychodzącego NGINX i konfiguracja zasobów ruchu przychodzącego, przejrzyj konfigurację dns i ssl oraz konfigurację dodatku routingu aplikacji.
Azure Kubernetes Service