Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Sie können Ihre Azure Kubernetes Service (AKS)-Instanz so konfigurieren, dass sie Let's Encrypt verwendet und automatisch ein TLS/SSL-Zertifikat für Ihre Domäne abruft. Das Zertifikat wird in Azure Application Gateway installiert, das ein SSL/TLS-Abschluss für den AKS-Cluster ausführt.
Bei der in diesem Artikel beschriebenen Konfiguration wird das Kubernetes-Add-On cert-manager verwendet, mit dem die Erstellung und Verwaltung von Zertifikaten automatisiert wird.
Tipp
Ziehen Sie für Ihre Kubernetes-Eingangslösung das Application Gateway für Container in Betracht.
Installieren des Add-Ons
Führen Sie die folgenden Schritte aus, um cert-manager auf Ihrem vorhandenen AKS-Cluster zu installieren:
Führen Sie das folgende Skript aus, um das Helm-Diagramm on cert-manager zu installieren. Dieses Skript führt folgende Aktionen aus:
- Erstellt einen neuen
cert-manager
-Namespace in Ihrem AKS - Erstellt die folgenden benutzerdefinierten Ressourcendefinitionen (CRDs):
Certificate
,Challenge
,ClusterIssuer
,Issuer
,Order
- Installiert das cert-manager-Diagramm (von der cert-manager-Website)
#!/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.16.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.
- Erstellt einen neuen
Erstellen Sie eine
ClusterIssuer
-Ressource. Cert-manager erfordert, dass diese Ressource die „Let's Encrypt“-Zertifizierungsstelle darstellt, die das signierte Zertifikat ausgibt.Durch Verwendung der
ClusterIssuer
-Ressource ohne Namespaces werden mit cert-manager Zertifikate ausgegeben, die von mehreren Namespaces genutzt werden können. „Let's Encrypt“ verwendet das ACME-Protokoll, um zu überprüfen, ob Sie einen bestimmten Domänennamen steuern, und um ein Zertifikat auszustellen. Weitere Informationen zum Konfigurieren vonClusterIssuer
-Eigenschaften finden Sie in der cert-manager-Dokumentation.ClusterIssuer
weist den cert-manager an, Zertifikate mithilfe der „Let's Encrypt“-Staging-Umgebung, die für Tests verwendet wird, auszustellen. (Das Stammzertifikat ist in Browser-/Clientvertrauensspeichern nicht vorhanden.)Der Standard-Abfragetyp in der folgenden YAML lautet
http01
. Weitere Captcha-Typen finden Sie in der Dokumentation zu „Let's Encrypt“.Vergessen Sie nicht, im folgenden YAML
<YOUR.EMAIL@ADDRESS>
durch ihre Informationen zu ersetzen.#!/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
Erstellen Sie eine Eingangsressource, um die Anwendung
guestbook
mithilfe der Application Gateway-Bereitstellung mit dem „Lets Encrypt“-Zertifikat verfügbar zu machen.Stellen Sie sicher, dass Ihre Application Gateway-Bereitstellung über eine öffentliche Front-End-IP-Konfiguration mit einem DNS-Namen verfügt. Verwenden Sie die Standarddomäne
azure.com
, oder stellen Sie eine Azure DNS-Zone bereit, und weisen Sie dann Ihre eigene benutzerdefinierte Domäne zu. Die Anmerkungcertmanager.k8s.io/cluster-issuer: letsencrypt-staging
weist cert-manager an, die markierte Eingangsressource zu verarbeiten.Im folgenden YAML müssen Sie unbedingt
<PLACEHOLDERS.COM>
durch Ihre eigene Domäne oder durch die Application Gateway-Domäne (z. B.kh-aks-ingress.westeurope.cloudapp.azure.com
) ersetzen.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
Nach wenigen Sekunden können Sie über die HTTPS-URL von Application Gateway unter Verwendung des automatisch für das Staging ausgestellten „Let's Encrypt“-Zertifikats auf den
guestbook
-Dienst zugreifen.Ihr Browser warnt Sie möglicherweise über eine ungültige Zertifizierungsstelle. Der Grund dafür ist, dass
CN=Fake LE Intermediate X1
das Stagingzertifikat ausgestellt hat. Diese Warnung bedeutet, dass das System wie erwartet funktioniert hat und das Produktionszertifikat verwendet werden kann.Nachdem Sie das Stagingzertifikat erfolgreich eingerichtet haben, können Sie zu einem ACME-Produktionsserver wechseln:
- Ersetzen Sie die Staginganmerkung in der Eingangsressource durch
cert-manager.io/cluster-issuer: letsencrypt-prod
. - Löschen Sie die vorhandene Staging-
ClusterIssuer
-Ressource, die Sie zuvor erstellt haben. Erstellen Sie eine neue Stagingressource, indem Sie den ACME-Server aus dem vorherigenClusterIssuer
-YAML durchhttps://acme-v02.api.letsencrypt.org/directory
ersetzen.
- Ersetzen Sie die Staginganmerkung in der Eingangsressource durch
Bevor das „Let's Encrypt“-Zertifikat abläuft, wird das Zertifikat im Kubernetes-Geheimspeicher von cert-manager
automatisch aktualisiert. Zu diesem Zeitpunkt wendet der Application Gateway-Eingangscontroller das aktualisierte Geheimnis an, auf das in den Ingress-Ressourcen verwiesen wird, die zum Konfigurieren von Application Gateway verwendet werden.