Megosztás a következőn keresztül:


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 kubectla 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:

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.

  1. 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>"
    
  2. 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.

  1. 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.

  1. 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)
    
  2. 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.

  1. 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
    
  2. 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ék secretName megegyezik keyvault- a bejövő erőforrásnév (forrás) metadata.nameértékével. A példában a YAML-nek secretName 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>
    
  3. 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.