Konfigurowanie niestandardowej nazwy domeny i certyfikatu SSL przy użyciu dodatku routingu aplikacji
Artykuł
Ruch przychodzący to obiekt interfejsu API, który definiuje reguły, które umożliwiają dostęp zewnętrzny do usług w klastrze usługi Azure Kubernetes Service (AKS). Podczas tworzenia obiektu ruchu przychodzącego używającego klas ruchu przychodzącego nginx ingress 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 skonfigurować zaawansowaną konfigurację ruchu przychodzącego w celu zaszyfrowania ruchu przy użyciu certyfikatów SSL/TLS przechowywanych w usłudze Azure Key Vault i używania usługi Azure DNS do zarządzania strefami DNS.
Dodatek routingu aplikacji z funkcjami serwera nginx
Dodatek do routingu aplikacji z serwerem nginx zapewnia następujące elementy:
Łatwa konfiguracja zarządzanych kontrolerów ruchu przychodzącego nginx.
Integracja z zewnętrznym systemem DNS, takim jak usługa Azure DNS na potrzeby zarządzania strefami globalnymi i prywatnymi
Kończenie żądań SSL z certyfikatami przechowywanymi w magazynie kluczy, takim jak usługa Azure Key Vault.
Wymagania wstępne
Klaster usługi AKS z dodatkiem routingu aplikacji.
Usługa Azure Key Vault, jeśli chcesz skonfigurować kończenie żądań SSL i przechowywać certyfikaty w magazynie hostowanym na platformie Azure.
Usługa Azure DNS, jeśli chcesz skonfigurować zarządzanie strefami globalnymi i prywatnymi i hostować je na platformie Azure.
Wszystkie publiczne strefy DNS muszą znajdować się w tej samej subskrypcji i grupie zasobów.
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 polecenia az aks install-cli . 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-credentials Kubernetes przy użyciu polecenia .
az aks get-credentials --resource-group <ResourceGroupName> --name <ClusterName>
Kończenie ruchu HTTPS przy użyciu certyfikatów z usługi Azure Key Vault
Aby włączyć obsługę ruchu HTTPS, zobacz następujące wymagania wstępne:
Certyfikat SSL. Jeśli go nie masz, możesz utworzyć certyfikat.
Tworzenie usługi Azure Key Vault do przechowywania certyfikatu
Uwaga
Jeśli masz już usługę Azure Key Vault, możesz pominąć ten krok.
Utwórz usługę Azure Key Vault przy użyciu az keyvault create polecenia .
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.
Przestroga
Certyfikaty z podpisem własnym to certyfikaty cyfrowe, które nie są podpisane przez zaufany urząd certyfikacji innej firmy. Certyfikaty z podpisem własnym są tworzone, wystawiane i podpisane przez firmę lub dewelopera, który jest odpowiedzialny za podpisaną witrynę internetową lub oprogramowanie. 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 wejściem openssl req przy użyciu polecenia . Pamiętaj, aby zastąpić <Hostname> ciąg nazwą DNS, której używasz.
Importowanie certyfikatu do usługi Azure Key Vault
Zaimportuj certyfikat SSL do usługi Azure Key Vault przy użyciu az keyvault certificate import polecenia . Jeśli certyfikat jest chroniony hasłem, możesz przekazać hasło za pomocą flagi --password .
az keyvault certificate import --vault-name <KeyVaultName> --name <KeyVaultCertificateName> --file aks-ingress-tls.pfx [--password <certificate password if specified>]
Ważne
Aby włączyć dodatek do ponownego ładowania certyfikatów z usługi Azure Key Vault podczas ich zmiany, należy włączyć funkcję autorotytacji wpisu tajnego sterownika CSI magazynu wpisów tajnych z argumentem --enable-secret-rotation . Po włączeniu autorotacji sterownik aktualizuje instalację zasobnika i wpis tajny Kubernetes, sondując zmiany 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
W klastrze z włączonym dodatkiem routingu aplikacji użyj az aks approuting update polecenia i --enable-kv--attach-kv , aby włączyć dostawcę usługi Azure Key Vault dla sterownika CSI magazynu wpisów tajnych i zastosować wymagane przypisania ról.
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 wybierze odpowiedni model dostępu do użycia.
Uwaga
Polecenie az aks approuting update --attach-kv używa uprawnień użytkownika uruchamiającego polecenie w celu utworzenia przypisania roli usługi Azure Key Vault. Ta rola 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.
KEYVAULTID=$(az keyvault show --name <KeyVaultName> --query "id" --output tsv)
Następnie zaktualizuj dodatek routingu aplikacji, aby włączyć sterownik CSI magazynu wpisów tajnych usługi Azure Key Vault i zastosować przypisanie roli.
az aks approuting update --resource-group <ResourceGroupName> --name <ClusterName> --enable-kv --attach-kv ${KEYVAULTID}
Włączanie integracji usługi Azure DNS
Aby włączyć obsługę stref DNS, zapoznaj się z następującymi wymaganiami wstępnymi:
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 muszą znajdować się w tej samej grupie zasobów, a wszystkie prywatne strefy DNS platformy Azure muszą znajdować się w tej samej grupie zasobów. Jeśli nie masz strefy usługi Azure DNS, możesz je utworzyć.
Tworzenie publicznej strefy DNS platformy Azure
Uwaga
Jeśli masz już strefę usługi Azure DNS, możesz pominąć ten krok.
az network dns zone create --resource-group <ResourceGroupName> --name <ZoneName>
Dołączanie 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. Ta rola 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 nazwie ZONEID.
ZONEID=$(az network dns zone show --resource-group <ResourceGroupName> --name <ZoneName> --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.
az aks approuting zone add --resource-group <ResourceGroupName> --name <ClusterName> --ids=${ZONEID} --attach-zones
Tworzenie ruchu przychodzącego używającego nazwy hosta i certyfikatu z usługi Azure Key Vault
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.
Pobierz identyfikator URI certyfikatu do użycia w ruchu przychodzącym z usługi Azure Key Vault przy użyciu az keyvault certificate show polecenia .
az keyvault certificate show --vault-name <KeyVaultName> --name <KeyVaultCertificateName> --query "id" --output tsv
Następujące przykładowe dane wyjściowe pokazują identyfikator URI certyfikatu zwrócony z polecenia :
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 i <KeyVaultCertificateUri> identyfikatorem URI zwróconym z polecenia , aby wykonać zapytanie względem usługi Azure Key Vault w kroku 1 powyżej. Wartość ciągu dla *<KeyVaultCertificateUri>* elementu powinna zawierać https://yourkeyvault.vault.azure.net/certificates/certnametylko wartość . Wersja certyfikatu na końcu ciągu identyfikatora URI powinna zostać pominięta, aby uzyskać bieżącą wersję.
Klucz secretName w tls sekcji definiuje nazwę wpisu tajnego zawierającego certyfikat dla tego zasobu ruchu przychodzącego. Ten certyfikat jest wyświetlany w przeglądarce, gdy klient przechodzi do adresu URL określonego w kluczu <Hostname> . Upewnij się, że wartość secretName elementu jest równa wartości, po keyvault- której następuje wartość nazwy zasobu ruchu przychodzącego (z metadata.name). W przykładzie YAML secretName musi być równe keyvault-<your Ingress name>.
Źródło tej zawartości można znaleźć w witrynie GitHub, gdzie można również tworzyć i przeglądać problemy i żądania ściągnięcia. Więcej informacji znajdziesz w naszym przewodniku dla współtwórców.
Opinia o produkcie Azure Kubernetes Service
Azure Kubernetes Service to projekt typu open source. Wybierz link, aby przekazać opinię:
Użyj usługi Azure Policy, aby wymusić zasady i zabezpieczenia w klastrach Kubernetes na dużą skalę. Usługa Azure Policy zapewnia, że klaster jest bezpieczny, zgodny i spójny w całej organizacji.