Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule pokazano, jak skonfigurować niestandardowe nazwy domen i certyfikaty SSL/TLS dla ruchu przychodzącego usługi AKS przy użyciu usługi Azure Key Vault i usługi Azure DNS z dodatkiem routingu aplikacji dla usługi AKS.
Prerequisites
Klaster usługi AKS z dodatkiem routingu aplikacji.
Azure Key Vault, jeśli chcesz skonfigurować zakończenie SSL i przechowywać certyfikaty w skarbcu hostowanym na platformie Azure. Jeśli go nie masz, zobacz Tworzenie magazynu kluczy przy użyciu interfejsu wiersza polecenia platformy Azure.
Aby włączyć obsługę ruchu HTTPS, potrzebny jest certyfikat SSL. Jeśli go nie masz, zobacz Tworzenie certyfikatu.
Usługa Azure DNS, jeśli chcesz skonfigurować zarządzanie strefami globalnymi i prywatnymi i hostować je na platformie Azure. Jeśli nie masz strefy usługi Azure DNS, możesz je utworzyć. Aby włączyć obsługę stref DNS:
- Wszystkie globalne strefy DNS platformy Azure muszą znajdować się w tej samej grupie zasobów, która może być inna niż grupa zasobów klastra.
- Wszystkie prywatne strefy DNS platformy Azure muszą znajdować się w tej samej grupie zasobów, co może różnić się od grupy zasobów klastra.
- Grupa zasobów nie musi znajdować się w tej samej subskrypcji co klaster.
Wymagane uprawnienia platformy Azure
Twoje konto użytkownika wymaga: właściciela, administratora konta platformy Azure lub roli współadministratora platformy Azure w ramach subskrypcji platformy Azure.
Co robią polecenia: Po uruchomieniu az aks approuting update --attach-kv lub az aks approuting zone add --attach-zones, polecenia te używają uprawnień do przypisywania ról, aby automatycznie przyznać zarządzaną tożsamość dodatku routingu aplikacji następujące role:
- Rola użytkownika certyfikatu usługi Key Vault w usłudze Azure Key Vault (na potrzeby dostępu do certyfikatów).
- Rola Współautor strefy DNS w strefach usługi Azure DNS (na potrzeby zarządzania rekordami DNS).
Aby uzyskać więcej informacji na temat tożsamości zarządzanych usługi AKS, zobacz Podsumowanie tożsamości zarządzanych.
Nawiązywanie połączenia z klastrem usługi AKS
Aby nawiązać połączenie z klastrem Kubernetes z komputera lokalnego, należy użyć kubectlklienta wiersza polecenia 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 narzędzie kubectl, aby nawiązać połączenie z klastrem
az aks get-credentialsKubernetes przy użyciu polecenia .# Set environment variables for your resource group and cluster name export RESOURCE_GROUP=<resource-group-name> export CLUSTER_NAME=<cluster-name> # Get the AKS cluster credentials az aks get-credentials --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME
Tworzenie i eksportowanie certyfikatu SSL z podpisem własnym
Do testowania można użyć certyfikatu publicznego z podpisem własnym zamiast certyfikatu z podpisem urzędu certyfikacji. Jeśli masz już certyfikat, możesz pominąć ten krok.
Caution
Certyfikaty z podpisem własnym to certyfikaty cyfrowe, które nie są podpisane przez zaufany urząd certyfikacji innej firmy. Firma lub deweloper odpowiedzialny za witrynę internetową lub oprogramowanie tworzy, wystawia i podpisuje te certyfikaty. Dlatego certyfikaty z podpisem własnym są uważane za niebezpieczne dla publicznych witryn internetowych i aplikacji. Usługa Azure Key Vault ma zaufane partnerstwo z niektórymi urzędami certyfikacji.
Utwórz certyfikat SSL z podpisem własnym do użycia z ingress, używając polecenia
openssl req. Pamiętaj, aby zastąpić<host-name>nazwą DNS, której używasz.openssl req -new -x509 -nodes -out aks-ingress-tls.crt -keyout aks-ingress-tls.key -subj "/CN=<host-name>" -addext "subjectAltName=DNS:<host-name>"Wyeksportuj certyfikat SSL i pomiń wiersz hasła przy użyciu
openssl pkcs12 -exportpolecenia .openssl pkcs12 -export -in aks-ingress-tls.crt -inkey aks-ingress-tls.key -out aks-ingress-tls.pfx
Importowanie certyfikatu SSL z podpisem własnym do usługi Azure Key Vault
Zaimportuj certyfikat SSL do usługi Azure Key Vault przy użyciu
az keyvault certificate importpolecenia . Jeśli certyfikat jest chroniony hasłem, możesz przekazać hasło za pomocą flagi--password.# Set environment variables for your key vault name and certificate name export KEY_VAULT_NAME=<key-vault-name> export KEY_VAULT_CERT_NAME=<key-vault-certificate-name> # Import the SSL certificate into Azure Key Vault az keyvault certificate import --vault-name $KEY_VAULT_NAME --name $KEY_VAULT_CERT_NAME --file aks-ingress-tls.pfx [--password <certificate password if specified>]
Note
Aby włączyć dodatek routingu aplikacji w celu ponownego ładowania certyfikatów z usługi Azure Key Vault podczas ich zmiany, należy włączyć funkcję autorotytacji wpisów tajnych sterownika CSI magazynu wpisów tajnych. Po włączeniu autorotacji sterownik aktualizuje montaż podu i sekret Kubernetes, sprawdzając zmiany poprzez sondowanie okresowo na podstawie zdefiniowanego interwału sondowania rotacji. Domyślny interwał sondowania rotacji to dwie minuty.
Włączanie integracji z usługą Azure Key Vault
Usługa Azure Key Vault oferuje dwa systemy autoryzacji: kontrola dostępu oparta na rolach (RBAC) platformy Azure, która działa na płaszczyźnie zarządzania oraz model zasad dostępu, który działa zarówno na płaszczyźnie zarządzania, jak i na płaszczyźnie danych. Operacja --attach-kv wybiera odpowiedni model dostępu do użycia.
Pobierz identyfikator zasobu dla magazynu kluczy przy użyciu polecenia
az keyvault showi ustaw dane wyjściowe jako zmienną środowiskową.KEY_VAULT_ID=$(az keyvault show --name <KeyVaultName> --query "id" --output tsv)Zaktualizuj dodatek do routingu aplikacji, aby umożliwić działanie dostawcy usługi Azure Key Vault dla komponentu CSI Secrets Store Driver i zastosować wymagane przypisania ról, używając polecenia
az aks approuting updatez argumentami--enable-kvi--attach-kv.az aks approuting update --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --enable-kv --attach-kv ${KEY_VAULT_ID}
Tworzenie globalnej strefy DNS platformy Azure
Jeśli masz już strefę usługi Azure DNS, możesz pominąć ten krok.
Utwórz strefę usługi Azure DNS przy użyciu
az network dns zone createpolecenia .# Set environment variables for your resource group and DNS zone name export RESOURCE_GROUP=<resource-group-name> export ZONE_NAME=<zone-name> # Create the Azure DNS zone az network dns zone create --resource-group $RESOURCE_GROUP --name $ZONE_NAME
Włączanie integracji usługi Azure DNS
Pobierz identyfikator zasobu dla strefy DNS przy użyciu
az network dns zone showpolecenia i ustaw dane wyjściowe na zmienną środowiskową.ZONE_ID=$(az network dns zone show --resource-group $RESOURCE_GROUP --name $ZONE_NAME --query "id" --output tsv)Zaktualizuj dodatek routingu aplikacji, aby włączyć integrację usługi Azure DNS przy użyciu
az aks approuting zonepolecenia . Można przekazać rozdzielaną przecinkami listę identyfikatorów zasobów strefy DNS.az aks approuting zone add --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --ids=${ZONE_ID} --attach-zones
Tworzenie klasy Ingress używającej nazwy hosta i certyfikatu z Azure Key Vault.
Dodatek routingu aplikacji tworzy klasę Ingress w klastrze o nazwie webapprouting.kubernetes.azure.com. Podczas tworzenia obiektu Ingress za pomocą tej klasy aktywowane jest rozszerzenie.
Pobierz identyfikator URI certyfikatu do użycia w ingrezie z Azure Key Vault za pomocą polecenia
az keyvault certificate show.az keyvault certificate show --vault-name $KEY_VAULT_NAME --name $KEY_VAULT_CERT_NAME --query "id" --output tsvNastępujące przykładowe dane wyjściowe pokazują identyfikator URI certyfikatu zwrócony z polecenia :
https://KeyVaultName.vault.azure.net/certificates/KeyVaultCertificateName/ab12c34567d89e01f2345g6h78ijkl90Skopiuj następujący manifest YAML do nowego pliku o nazwie ingress.yaml i zapisz plik na komputerze lokalnym.
Zaktualizuj
<host-name>nazwą hosta DNS i<key-vault-certificate-uri>adresem URI zwróconym z poprzedniego polecenia. Wartość ciągu dla<key-vault-certificate-uri>powinna zawierać tylkohttps://yourkeyvault.vault.azure.net/certificates/certname. Usuń wersję certyfikatu na końcu ciągu identyfikatora URI, aby pobrać bieżącą wersję.Klucz
secretNamew sekcjitlsdefiniuje nazwę tajemnicy zawierającej certyfikat dla tego zasobu Ingress. Ten certyfikat jest wyświetlany w przeglądarce, gdy klient przechodzi do adresu URL określonego w kluczu<host-name>. Upewnij się, że wartośćsecretNamejest równakeyvault-, a następnie wartości nazwy zasobu Ingress (odmetadata.name). W przykładzie YAMLsecretNamemusi być równekeyvault-<your-ingress-name>.apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: kubernetes.azure.com/tls-cert-keyvault-uri: <key-vault-certificate-uri> name: aks-helloworld namespace: hello-web-app-routing spec: ingressClassName: webapprouting.kubernetes.azure.com rules: - host: <host-name> http: paths: - backend: service: name: aks-helloworld port: number: 80 path: / pathType: Prefix tls: - hosts: - <host-name> secretName: keyvault-<your-ingress-name>Utwórz zasoby klastra przy użyciu
kubectl applypolecenia .kubectl apply -f ingress.yaml -n hello-web-app-routingW poniższych przykładowych danych wyjściowych przedstawiono utworzony zasób:
Ingress.networking.k8s.io/aks-helloworld created
Sprawdź, czy utworzono zarządzany punkt wejścia
Sprawdź, czy zarządzane wejście zostało utworzone przy użyciu polecenia
kubectl get ingress.kubectl get ingress -n hello-web-app-routingPoniższe przykłady danych wyjściowych pokazują utworzony zarządzany ingress:
NAME CLASS HOSTS ADDRESS PORTS AGE aks-helloworld webapprouting.kubernetes.azure.com myapp.contoso.com 20.51.92.19 80, 443 4m
Treści powiązane
Dowiedz się więcej o monitorowaniu metryk kontrolera Ingress NGINX dołączonego do dodatku routingu aplikacji, przy użyciu Prometheusa i Grafany, w ramach analizowania wydajności i użycia aplikacji.