Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Instanci služby Azure Kubernetes Service (AKS) můžete nakonfigurovat tak, aby používala let's Encrypt a automaticky získala certifikát TLS/SSL pro vaši doménu. Certifikát je nainstalován na Azure Application Gateway, která provádí ukončení protokolu TLS/SSL pro váš cluster AKS.
Nastavení, které tento článek popisuje, používá doplněk Kubernetes správce certifikátů , který automatizuje vytváření a správu certifikátů.
Tip
Zvažte službu Application Gateway pro kontejnery pro vaše řešení příchozího přenosu dat Kubernetes. Další informace najdete v tématu Rychlý start: Nasazení služby Application Gateway pro kontejnery ALB Controller.
Nainstalujte doplněk
Pomocí následujících kroků nainstalujte nástroj cert-manager do existujícího clusteru AKS:
Spuštěním následujícího skriptu nainstalujte Helm chart pro cert-manager. Skript provede následující akce:
- Vytvoří nový
cert-manager
obor názvů ve vašem AKS clusteru. - Vytvoří následující vlastní definice prostředků (CRD):
Certificate
,Challenge
,ClusterIssuer
,Issuer
,Order
- Nainstaluje graf cert-manageru (z lokality správce certifikátů).
#!/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.
- Vytvoří nový
Vytvořte
ClusterIssuer
prostředek. Cert-manager vyžaduje, aby tento prostředek představoval certifikační autoritu Let's Encrypt, která vydává podepsaný certifikát.Cert-manager používá prostředek, který není oborem názvů
ClusterIssuer
, k vydávání certifikátů, které je možné využívat z více oborů názvů. Pojďme Šifrovat pomocí protokolu ACME ověřit, že řídíte konkrétní název domény a vydáváte certifikát. Další podrobnosti o konfiguraciClusterIssuer
vlastností najdete v dokumentaci k nástroji cert-manager.ClusterIssuer
dává nástroji cert-manager pokyn k vydávání certifikátů pomocí přípravného prostředí Let's Encrypt, které se používá k testování. (Kořenový certifikát není k dispozici v úložištích důvěryhodnosti prohlížeče nebo klienta.)Výchozí typ výzvy v následujícím JAZYCE YAML je
http01
. Další typy úkolů najdete v dokumentaci Let's Encrypt.V následujícím jazyce YAML nezapomeňte nahradit
<YOUR.EMAIL@ADDRESS>
informacemi.#!/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
Vytvořte zdroj ingress pro zpřístupnění aplikace pomocí nasazení služby Application Gateway s certifikátem Let's Encrypt.
Ujistěte se, že vaše nasazení služby Application Gateway má veřejnou konfiguraci front-endové IP adresy s názvem DNS. Použijte výchozí
azure.com
doménu nebo zřiďte zónu Azure DNS a pak přiřaďte vlastní doménu. Anotacecertmanager.k8s.io/cluster-issuer: letsencrypt-staging
říká cert-manageru, aby zpracoval označený vstupní prostředek.V následujícím JAZYCE YAML nezapomeňte nahradit
<PLACEHOLDERS.COM>
vlastní doménou nebo doménou služby Application Gateway (napříkladkh-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
Po několika sekundách můžete ke službě
guestbook
přistupovat prostřednictvím adresy URL HTTPS služby Application Gateway pomocí automaticky vydaného certifikátu Let's Encrypt pro přípravu.Prohlížeč vás může upozornit na neplatnou certifikační autoritu. Důvodem je
CN=Fake LE Intermediate X1
vystavení přípravného certifikátu. Toto upozornění znamená, že systém fungoval očekávaným způsobem a jste připraveni na produkční certifikát.Po úspěšném nastavení přípravného certifikátu můžete přepnout na produkční server ACME:
- Nahraďte přípravnou poznámku prostředku příchozího přenosu dat
cert-manager.io/cluster-issuer: letsencrypt-prod
. - Odstraňte existující fázovací
ClusterIssuer
prostředek, který jste vytvořili dříve. Vytvořte nový přípravný prostředek tím, že vyměníte server ACME z předchozíhoClusterIssuer
YAML zahttps://acme-v02.api.letsencrypt.org/directory
.
- Nahraďte přípravnou poznámku prostředku příchozího přenosu dat
Než vyprší platnost certifikátu Let's Encrypt, cert-manager
automaticky aktualizuje certifikát v úložišti tajných kódů Kubernetes. V tomto okamžiku kontroler příchozího přenosu dat služby Application Gateway použije aktualizovaný tajný kód odkazovaný na prostředky příchozího přenosu dat, které používá ke konfiguraci služby Application Gateway.