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


Használjon Let's Encrypt tanúsítványokat az AKS-fürtök alkalmazási átjáróján

Az Azure Kubernetes Service -példányt konfigurálhatja a Let's Encrypt használatára, és automatikusan beszerezhet egy TLS/SSL-tanúsítványt a tartományához. A tanúsítvány az Azure-alkalmazás Gatewayre van telepítve, amely TLS/SSL-leállítást hajt végre az AKS-fürthöz.

A cikkben ismertetett beállítás a tanúsítványkezelő Kubernetes bővítményét használja, amely automatizálja a tanúsítványok létrehozását és kezelését.

Tipp.

Fontolja meg az Application Gateway for Containers használatát a Kubernetes bejövő megoldásához. További információkért lásd: Rövid útmutató: Az Application Gateway telepítése konténeres ALB-vezérlőhöz.

A bővítmény telepítése

A cert-manager meglévő AKS-fürtre való telepítéséhez kövesse az alábbi lépéseket:

  1. Futtassa a következő szkriptet a cert-manager Helm-diagram telepítéséhez. A szkript a következő műveleteket hajtja végre:

    • Új cert-manager névtér létrehozása az AKS-fürtön
    • A következő egyéni erőforrás-definíciókat (CRD-ket) hozza létre: Certificate, Challenge, ClusterIssuer, IssuerOrder
    • Telepíti a cert-manager diagramot (a cert-manager webhelyről)
    #!/bin/bash
    
    # Install the CustomResourceDefinition resources separately
    kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.16.1/cert-manager.crds.yaml
    
    # Create the namespace for cert-manager
    kubectl create namespace cert-manager
    
    # Label the cert-manager namespace to disable resource validation
    kubectl label namespace cert-manager cert-manager.io/disable-validation=true
    
    # Add the Jetstack Helm repository
    helm repo add jetstack https://charts.jetstack.io
    
    # Update your local Helm chart repository cache
    helm repo update
    
    # Install the cert-manager Helm chart
    # Helm v3+
    helm install \
      cert-manager jetstack/cert-manager \
      --namespace cert-manager \
      --version v1.17.1 \
      # --set installCRDs=true
    
    # To automatically install and manage the CRDs as part of your Helm release,
    # you must add the --set installCRDs=true flag to your Helm installation command.
    
  2. Hozzon létre egy erőforrást ClusterIssuer . A Cert-Manager megköveteli, hogy ez az erőforrás az aláírt tanúsítványt kiállító Let's Encrypt hitelesítésszolgáltatót képviselje.

    A Cert-Manager a névtéren ClusterIssuer kívüli erőforrást használja olyan tanúsítványok kiállítására, amelyek több névtérből is felhasználhatók. A Let's Encrypt az ACME protokoll használatával ellenőrzi, hogy Ön irányít-e egy adott domainnevet, és kibocsát egy tanúsítványt. A tulajdonságok konfigurálásával ClusterIssuer kapcsolatos további részleteket a cert-manager dokumentációjában talál.

    ClusterIssuer utasítja a tanúsítványkezelőt, hogy állítson ki tanúsítványokat a teszteléshez használt Let's Encrypt átmeneti környezet használatával. (A főtanúsítvány nem található meg a böngésző-/ügyfélmegbízhatósági tárolókban.)

    Az alábbi YAML alapértelmezett feladattípusa a következő http01. A Let's Encrypt dokumentációban más kihívástípusok is megtalálhatók.

    Az alábbi YAML-ben mindenképpen cserélje le a <YOUR.EMAIL@ADDRESS> elemet a saját adataira.

    #!/bin/bash
    kubectl apply -f - <<EOF
    apiVersion: cert-manager.io/v1
    kind: ClusterIssuer
    metadata:
      name: letsencrypt-staging
    spec:
      acme:
        # You must replace this email address with your own.
        # Let's Encrypt uses this to contact you about expiring
        # certificates, and issues related to your account.
        email: <YOUR.EMAIL@ADDRESS>
        # ACME server URL for Let's Encrypt's staging environment.
        # The staging environment won't issue trusted certificates but is
        # used to ensure that the verification process is working properly
        # before moving to production
        server: https://acme-staging-v02.api.letsencrypt.org/directory
        privateKeySecretRef:
          # Secret resource used to store the account's private key.
          name: example-issuer-account-key
        # Enable the HTTP-01 challenge provider
        # you prove ownership of a domain by ensuring that a particular
        # file is present at the domain
        solvers:
          - http01:
            ingress:
             #   class: azure/application-gateway
               ingressTemplate:
                 metadata:
                   annotations:
                     kubernetes.io/ingress.class: azure/application-gateway
    EOF
    
  3. Hozzon létre egy bejövő erőforrást, amely elérhetővé teszi az guestbook alkalmazást az Application Gateway üzembe helyezésével a Let's Encrypt tanúsítvánnyal.

    Győződjön meg arról, hogy az Application Gateway központi telepítése DNS-névvel rendelkező nyilvános előtéri IP-konfigurációval rendelkezik. Használja az alapértelmezett azure.com tartományt, vagy építsen ki egy Azure DNS-zónát, majd rendelje hozzá saját egyéni tartományát. A széljegyzet certmanager.k8s.io/cluster-issuer: letsencrypt-staging arra utasítja a cert-managert, hogy dolgozza fel a címkézett bejövő erőforrást.

    Az alábbi YAML-ben mindenképpen cserélje le a <PLACEHOLDERS.COM>-t saját tartományával vagy az Application Gateway tartományával (például kh-aks-ingress.westeurope.cloudapp.azure.com).

    kubectl apply -f - <<EOF
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: guestbook-letsencrypt-staging
      annotations:
        kubernetes.io/ingress.class: azure/application-gateway
        cert-manager.io/cluster-issuer: letsencrypt-staging
    spec:
      tls:
      - hosts:
        - <PLACEHOLDERS.COM>
        secretName: guestbook-secret-name
      rules:
      - host: <PLACEHOLDERS.COM>
          http:
          paths:
          - backend:
              serviceName: frontend
              servicePort: 80
    EOF
    

    Néhány másodperc elteltével az Application Gateway HTTPS URL-címén keresztül érheti el a guestbook szolgáltatást az automatikusan kiadott Let's Encrypt tanúsítvány használatával az előkészítéshez.

    Előfordulhat, hogy a böngésző figyelmezteti Önt egy érvénytelen hitelesítésszolgáltatóra. Ennek az az oka, hogy CN=Fake LE Intermediate X1 kiadta a tesztelési tanúsítványt. Ez a figyelmeztetés azt jelenti, hogy a rendszer a várt módon működött, és készen áll az éles tanúsítványra.

  4. Az előkészítési tanúsítvány sikeres beállítása után válthat éles ACME-kiszolgálóra:

    1. Cserélje le a bejövő erőforrás átmeneti megjegyzését a következőre: cert-manager.io/cluster-issuer: letsencrypt-prod.
    2. Törölje a korábban létrehozott meglévő átmeneti erőforrást ClusterIssuer . Hozzon létre egy új átmeneti erőforrást az előző ClusterIssuer YAML ACME-kiszolgálójának lecserélésével https://acme-v02.api.letsencrypt.org/directory.

A Let's Encrypt tanúsítvány lejárata cert-manager előtt automatikusan frissíti a tanúsítványt a Kubernetes titkos tárában. Ezen a ponton az Application Gateway bejövőforgalom-vezérlője az Application Gateway konfigurálásához használt bejövő erőforrásokban hivatkozott frissített titkos kulcsot alkalmazza.