Egyéni tartománynév és SSL-tanúsítvány beállítása az alkalmazás útválasztási bővítményével
A bejövő forgalom egy olyan API-objektum, amely szabályokat határoz meg, amelyek lehetővé teszik az Azure Kubernetes Service-fürtök szolgáltatásaihoz való külső hozzáférést. Amikor létrehoz egy bejövő objektumot, amely az alkalmazás-útválasztási bővítmény nginx bejövő osztályait használja, a bővítmény létrehoz, konfigurál és kezel egy vagy több bejövő vezérlőt az AKS-fürtben.
Ez a cikk bemutatja, hogyan állíthat be egy speciális bejövő konfigurációt a forgalom titkosításához az Azure Key Vaultban tárolt SSL/TLS-tanúsítványokkal, és hogyan kezelheti a DNS-zónákat az Azure DNS használatával.
Alkalmazás-útválasztási bővítmény nginx-funkciókkal
Az nginx alkalmazás-útválasztási bővítménye a következőket biztosítja:
- Felügyelt nginx bejövőforgalom-vezérlők egyszerű konfigurálása.
- Integráció egy külső DNS-sel, például az Azure DNS-sel globális és privát zónakezeléshez
- SSL-leállítás kulcstartóban tárolt tanúsítványokkal, például az Azure Key Vaulttal.
Előfeltételek
- Egy AKS-fürt az alkalmazás-útválasztási bővítményrel.
- Azure Key Vault, ha ssl-lezárásokat szeretne konfigurálni, és tanúsítványokat szeretne tárolni az Azure-ban üzemeltetett tárolóban.
- Azure DNS, ha globális és privát zónakezelést szeretne konfigurálni és üzemeltetni az Azure-ban.
- Azure Key Vault vagy Azure DNS-zóna csatolásához tulajdonosi, Azure-fiókadminisztrátori vagy Azure-társadminisztrátori szerepkörre van szükség az Azure-előfizetésben.
- Minden nyilvános DNS-zónának ugyanabban az előfizetésben és erőforráscsoportban kell lennie.
Csatlakozás az AKS-fürthöz
Ha a helyi számítógépről szeretne csatlakozni a Kubernetes-fürthöz, használja kubectl
a Kubernetes parancssori ügyfelet. Telepítheti helyileg az az aks install-cli paranccsal. Ha az Azure Cloud Shellt használja, a kubectl
már telepítve van.
Konfigurálja a kubectl-et a Kubernetes-fürthöz való csatlakozáshoz a az aks get-credentials
parancs használatával.
az aks get-credentials --resource-group <ResourceGroupName> --name <ClusterName>
HTTPS-forgalom leállása az Azure Key Vaultból származó tanúsítványokkal
A HTTPS-forgalom támogatásának engedélyezéséhez tekintse meg a következő előfeltételeket:
- SSL-tanúsítvány. Ha nincs ilyenje, létrehozhat egy tanúsítványt.
Azure Key Vault létrehozása a tanúsítvány tárolásához
Feljegyzés
Ha már rendelkezik Azure Key Vault-tárolóval, kihagyhatja ezt a lépést.
Hozzon létre egy Azure Key Vaultot a az keyvault create
paranccsal.
az keyvault create --resource-group <ResourceGroupName> --location <Location> --name <KeyVaultName> --enable-rbac-authorization true
Önaláírt SSL-tanúsítvány létrehozása és exportálása
Teszteléshez a hitelesítésszolgáltató (CA) által aláírt tanúsítvány helyett használhat önaláírt nyilvános tanúsítványt. Ha már rendelkezik tanúsítvánnyal, kihagyhatja ezt a lépést.
Figyelemfelhívás
Az önaláírt tanúsítványok olyan digitális tanúsítványok, amelyeket nem egy megbízható külső hitelesítésszolgáltató ír alá. Az önaláírt tanúsítványokat az aláírt webhelyért vagy szoftverért felelős vállalat vagy fejlesztő hozza létre, bocsátja ki és írja alá. Ezért minősülnek az önaláírt tanúsítványok a nyilvános webhelyek és alkalmazások számára nem biztonságosnak. Az Azure Key Vault megbízható partneri viszonyban áll néhány hitelesítésszolgáltatóval.
Hozzon létre egy önaláírt SSL-tanúsítványt a bejövő forgalomhoz a
openssl req
parancs használatával. Ügyeljen arra, hogy a használt DNS-névre cserélje le a helyére<Hostname>
.openssl req -new -x509 -nodes -out aks-ingress-tls.crt -keyout aks-ingress-tls.key -subj "/CN=<Hostname>" -addext "subjectAltName=DNS:<Hostname>"
Exportálja az SSL-tanúsítványt, és hagyja ki a jelszókérést a
openssl pkcs12 -export
paranccsal.openssl pkcs12 -export -in aks-ingress-tls.crt -inkey aks-ingress-tls.key -out aks-ingress-tls.pfx
Tanúsítvány importálása az Azure Key Vaultba
Importálja az SSL-tanúsítványt az Azure Key Vaultba a az keyvault certificate import
paranccsal. Ha a tanúsítvány jelszóval védett, a jelölőn keresztül továbbíthatja a --password
jelszót.
az keyvault certificate import --vault-name <KeyVaultName> --name <KeyVaultCertificateName> --file aks-ingress-tls.pfx [--password <certificate password if specified>]
Fontos
Ha engedélyezni szeretné, hogy a bővítmény újra betöltse a tanúsítványokat az Azure Key Vaultból a módosításkor, engedélyeznie kell a Titkos tár CSI-illesztőprogram titkos autorotációs funkcióját az --enable-secret-rotation
argumentummal. Ha az autorotation engedélyezve van, az illesztőprogram frissíti a pod csatlakoztatását és a Kubernetes titkos kulcsát úgy, hogy rendszeres időközönként lekérdezi a módosításokat a megadott rotációs lekérdezési időköz alapján. Az alapértelmezett rotációs lekérdezési időköz két perc.
Az Azure Key Vault integrációjának engedélyezése
Az alkalmazás-útválasztási bővítményt engedélyező fürtön a az aks approuting update
parancs és az --enable-kv
--attach-kv
argumentumok használatával engedélyezze az Azure Key Vault-szolgáltatót a Titkos kulcstár CSI-illesztőprogramhoz, és alkalmazza a szükséges szerepkör-hozzárendeléseket.
Az Azure Key Vault két engedélyezési rendszert kínál: az Azure szerepköralapú hozzáférés-vezérlést (Azure RBAC), amely a felügyeleti síkon működik, valamint a hozzáférési szabályzat modelljét, amely a felügyeleti síkon és az adatsíkon is működik. A --attach-kv
művelet kiválasztja a használni kívánt hozzáférési modellt.
Feljegyzés
A az aks approuting update --attach-kv
parancs a parancsot futtató felhasználó engedélyeit használja az Azure Key Vault szerepkör-hozzárendelésének létrehozásához. Ez a szerepkör a bővítmény felügyelt identitásához van rendelve. A felügyelt AKS-identitásokról további információt a felügyelt identitások összegzésében talál.
Kérje le az Azure Key Vault erőforrás-azonosítóját.
KEYVAULTID=$(az keyvault show --name <KeyVaultName> --query "id" --output tsv)
Ezután frissítse az alkalmazás-útválasztási bővítményt az Azure Key Vault titkos tár CSI-illesztőprogramjának engedélyezéséhez és a szerepkör-hozzárendelés alkalmazásához.
az aks approuting update --resource-group <ResourceGroupName> --name <ClusterName> --enable-kv --attach-kv ${KEYVAULTID}
Az Azure DNS-integráció engedélyezése
A DNS-zónák támogatásának engedélyezéséhez tekintse át a következő előfeltételeket:
- Az alkalmazás-útválasztási bővítmény konfigurálható úgy, hogy automatikusan rekordokat hozzon létre egy vagy több Azure-beli globális és privát DNS-zónában a bejövő erőforrásokon definiált gazdagépek számára. Minden globális Azure DNS-zónának ugyanabban az erőforráscsoportban kell lennie, és minden privát Azure DNS-zónának ugyanabban az erőforráscsoportban kell lennie. Ha nem rendelkezik Azure DNS-zónával, létrehozhat egyet.
Nyilvános Azure DNS-zóna létrehozása
Feljegyzés
Ha már rendelkezik Azure DNS-zónával, kihagyhatja ezt a lépést.
Hozzon létre egy Azure DNS-zónát a
az network dns zone create
paranccsal.az network dns zone create --resource-group <ResourceGroupName> --name <ZoneName>
Azure DNS-zóna csatolása az alkalmazás-útválasztási bővítményhez
Feljegyzés
A az aks approuting zone add
parancs a parancsot futtató felhasználó engedélyeit használja az Azure DNS-zóna szerepkör-hozzárendelésének létrehozásához. Ez a szerepkör a bővítmény felügyelt identitásához van rendelve. A felügyelt AKS-identitásokról további információt a felügyelt identitások összegzésében talál.
A parancs használatával
az network dns zone show
kérje le a DNS-zóna erőforrás-azonosítóját, és állítsa a kimenetet egy ZONEID nevű változóra.ZONEID=$(az network dns zone show --resource-group <ResourceGroupName> --name <ZoneName> --query "id" --output tsv)
Frissítse a bővítményt az Azure DNS-integráció engedélyezéséhez a
az aks approuting zone
parancs használatával. A DNS-zóna erőforrásazonosítóinak vesszővel tagolt listáját is átadhatja.az aks approuting zone add --resource-group <ResourceGroupName> --name <ClusterName> --ids=${ZONEID} --attach-zones
Az Azure Key Vault gazdagépnevét és tanúsítványát használó bejövő forgalom létrehozása
Az alkalmazás-útválasztási bővítmény létrehoz egy bejövő osztályt a webapprouting.kubernetes.azure.com nevű fürtön. Amikor ezzel az osztálysal hoz létre bejövő objektumot, az aktiválja a bővítményt.
Kérje le a tanúsítvány URI-jának használatát az Azure Key Vault bejövő forgalmában a
az keyvault certificate show
parancs használatával.az keyvault certificate show --vault-name <KeyVaultName> --name <KeyVaultCertificateName> --query "id" --output tsv
Az alábbi példakimenet a parancsból visszaadott tanúsítvány URI-t mutatja be:
https://KeyVaultName.vault.azure.net/certificates/KeyVaultCertificateName/ea62e42260f04f17a9309d6b87aceb44
Másolja a következő YAML-jegyzékfájlt egy ingress.yaml nevű új fájlba, és mentse a fájlt a helyi számítógépre.
Frissítsen
<Hostname>
a DNS-gazdagép nevével és<KeyVaultCertificateUri>
a parancsból visszaadott URI-val az Azure Key Vault lekérdezéséhez a fenti 1. lépésben. A sztringértéknek csak a következőt kell tartalmaznia*<KeyVaultCertificateUri>*
https://yourkeyvault.vault.azure.net/certificates/certname
: . Az URI-sztring végén található tanúsítványverziót ki kell hagyni az aktuális verzió lekéréséhez.A
secretName
szakaszban szereplőtls
kulcs határozza meg annak a titkos kulcsnak a nevét, amely a bejövő erőforrás tanúsítványát tartalmazza. Ez a tanúsítvány akkor jelenik meg a böngészőben, amikor egy ügyfél a kulcsban megadott URL-címre tallózik<Hostname>
. Győződjön meg arról, hogy az értéksecretName
megegyezikkeyvault-
a bejövő erőforrásnév (forrás)metadata.name
értékével. A példában a YAML-neksecretName
egyenlőnek kell lennie.keyvault-<your Ingress name>
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: kubernetes.azure.com/tls-cert-keyvault-uri: <KeyVaultCertificateUri> 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 tls: - hosts: - <Hostname> secretName: keyvault-<your ingress name>
Hozza létre a fürterőforrásokat a
kubectl apply
paranccsal.kubectl apply -f ingress.yaml -n hello-web-app-routing
A következő példakimenet a létrehozott erőforrást mutatja be:
Ingress.networking.k8s.io/aks-helloworld created
A felügyelt bejövő forgalom létrehozásának ellenőrzése
A parancs használatával ellenőrizheti, hogy a felügyelt bejövő forgalom létrejött-e kubectl get ingress
.
kubectl get ingress -n hello-web-app-routing
A következő példakimenet a létrehozott felügyelt bejövő forgalmat mutatja be:
NAME CLASS HOSTS ADDRESS PORTS AGE
aks-helloworld webapprouting.kubernetes.azure.com myapp.contoso.com 20.51.92.19 80, 443 4m
Következő lépések
Megtudhatja, hogyan monitorozhatja az alkalmazás-útválasztási bővítmény ingress-nginx vezérlőmetrikáit a Grafana prometheusával együtt az alkalmazás teljesítményének és használatának elemzése során.
Azure Kubernetes Service