Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Możesz skonfigurować wystąpienie usługi Azure Kubernetes Service (AKS), aby używać protokołu Let's Encrypt i automatycznie uzyskać certyfikat TLS/SSL dla domeny. Certyfikat jest instalowany na platformie Azure Application Gateway, która wykonuje terminację TLS/SSL dla klastra AKS.
W konfiguracji opisanej w tym artykule jest używany dodatek cert-manager Kubernetes, który automatyzuje tworzenie certyfikatów i zarządzanie nimi.
Napiwek
Rozważ użycie Application Gateway dla kontenerów jako rozwiązania ingress dla Kubernetes. Aby uzyskać więcej informacji, zobacz Szybki start: wdrażanie usługi Application Gateway dla kontenerów kontrolera ALB.
Instalowanie dodatku
Wykonaj następujące kroki, aby zainstalować menedżera certyfikatów w istniejącym klastrze usługi AKS:
Uruchom następujący skrypt, aby zainstalować wykres Helm cert-manager. Skrypt wykonuje następujące akcje:
- Tworzy nową
cert-manager
przestrzeń nazw w klastrze usługi AKS - Tworzy następujące niestandardowe definicje zasobów (CRD):
Certificate
, ,Challenge
ClusterIssuer
, , ,Issuer
Order
- Instaluje pakiet cert-manager (ze strony cert-manager)
#!/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.
- Tworzy nową
Utwórz
ClusterIssuer
zasób. Menedżer certyfikatów wymaga, aby ten zasób reprezentował urząd certyfikacji Let's Encrypt, który wystawia podpisany certyfikat.Menedżer certyfikatów używa zasobu typu innego niż przestrzeń nazw
ClusterIssuer
do wydawania certyfikatów, które mogą być używane w wielu przestrzeniach nazw. Let's Encrypt używa protokołu ACME, aby sprawdzić, czy kontrolujesz określoną nazwę domeny i także wystawić certyfikat. Więcej informacji na temat konfigurowaniaClusterIssuer
właściwości można znaleźć w dokumentacji programu cert-manager.ClusterIssuer
Nakazuje menedżerowi certyfikatów wystawianie certyfikatów przy użyciu środowiska przejściowego Let's Encrypt używanego do testowania. (Certyfikat główny nie jest obecny w sklepach zaufania przeglądarki ani klienta).Domyślnym typem wyzwania w następującym pliku YAML jest
http01
. Inne typy wyzwań można znaleźć w dokumentacji Let's Encrypt.W poniższym YAML pamiętaj o zastąpieniu
<YOUR.EMAIL@ADDRESS>
twoimi informacjami.#!/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
Utwórz zasób wejściowy, aby udostępnić aplikację
guestbook
przy użyciu wdrożenia Application Gateway z certyfikatem Let's Encrypt.Upewnij się, że wdrożenie usługi Application Gateway ma konfigurację publicznego interfejsu IP z nazwą DNS. Użyj domeny domyślnej
azure.com
lub aprowizuj strefę usługi Azure DNS, a następnie przypisz własną domenę niestandardową. Adnotacjacertmanager.k8s.io/cluster-issuer: letsencrypt-staging
informuje cert-managera o przetworzeniu oznakowanego zasobu ingress.W poniższym przykładzie YAML pamiętaj, aby zastąpić
<PLACEHOLDERS.COM>
własną domeną lub domeną Application Gateway (na przykładkh-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 kilku sekundach możesz uzyskać dostęp do usługi
guestbook
za pośrednictwem adresu URL HTTPS Application Gateway, korzystając z automatycznie wystawionego certyfikatu Let's Encrypt dla środowiska testowego.Przeglądarka może wyświetlić ostrzeżenie o nieprawidłowym urzędzie certyfikacji. Przyczyną wystawienia certyfikatu przejściowego jest
CN=Fake LE Intermediate X1
. To ostrzeżenie oznacza, że system działał zgodnie z oczekiwaniami i jesteś gotowy na certyfikat produkcyjny.Po pomyślnym skonfigurowaniu certyfikatu przejściowego możesz przełączyć się na produkcyjny serwer ACME:
- Zastąp adnotację przejściową w zasobie Ingress adnotacją
cert-manager.io/cluster-issuer: letsencrypt-prod
. - Usuń wcześniej utworzony zasób przejściowy
ClusterIssuer
. Utwórz nowy zasób przejściowy, zastępując serwer ACME z poprzedniego plikuClusterIssuer
YAML elementemhttps://acme-v02.api.letsencrypt.org/directory
.
- Zastąp adnotację przejściową w zasobie Ingress adnotacją
Przed wygaśnięciem certyfikatu Let's Encrypt, cert-manager
automatycznie aktualizuje certyfikat w magazynie sekretów Kubernetes. W tym momencie Kontroler Ingress usługi Application Gateway stosuje zaktualizowany tajny zasób, do którego odwołuje się w zasobach Ingress, które są używane do konfigurowania usługi Application Gateway.