Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Sécurisez les charges de travail Kubernetes avec les certificats ACM
Vous pouvez utiliser des certificats publics AWS Certificate Manager exportables avec AWS Controllers for Kubernetes (ACK) pour émettre et exporter des certificats TLS publics depuis ACM vers vos charges de travail Kubernetes. Cette intégration vous permet de sécuriser les pods Amazon Elastic Kubernetes Service (Amazon EKS) et de mettre fin au protocole TLS à votre entrée Kubernetes. Pour commencer, consultez le contrôleur ACM pour Kubernetes
AWS Controllers for Kubernetes (ACK) étend l'API Kubernetes pour gérer AWS les ressources à l'aide de manifestes Kubernetes natifs. Le contrôleur de service ACK pour ACM fournit une gestion automatisée du cycle de vie des certificats au sein de votre flux de travail Kubernetes. Lorsque vous créez une ressource de certificat ACM dans Kubernetes, le contrôleur ACK exécute les actions suivantes :
-
Demande un certificat à ACM, qui génère la demande de signature de certificat (CSR).
-
Attend que la validation du domaine soit terminée et qu'ACM délivre le certificat.
-
Si le
exportTochamp est spécifié, exporte le certificat et la clé privée émis et les stocke dans le Kubernetes Secret que vous avez spécifié. -
Si le
exportTochamp est spécifié et que le certificat est éligible au renouvellement, met à jour le Kubernetes Secret avec les certificats renouvelés avant leur expiration.
Les certificats émis publiquement nécessitent la validation du domaine avant qu'ACM puisse les délivrer. Vous pouvez utiliser le contrôleur de service ACK pour Amazon Route 53
Options d'utilisation des certificats
Vous pouvez utiliser les certificats ACM avec Kubernetes de différentes manières :
-
Arrêt de l'équilibreur de charge (sans exportation) : émettez des certificats via ACK et utilisez-les pour mettre fin au protocole TLS sur un équilibreur de AWS charge. Le certificat reste dans ACM et est automatiquement découvert par le AWS Load Balancer
Controller. Cette approche ne nécessite pas d'exporter le certificat. -
Terminaison d'entrée (avec exportation) : exportez les certificats depuis ACM et stockez-les dans Kubernetes Secrets pour la terminaison TLS au niveau de l'entrée. Cela vous permet d'utiliser des certificats directement dans vos charges de travail Kubernetes.
Note
Pour les cas d'utilisation nécessitant des certificats privés, consultez AWS Private CA Connector for Kubernetes, un plugin de gestionnaire de certificats.
Prérequis
Avant d'installer le contrôleur de service ACK pour ACM, assurez-vous de disposer des éléments suivants :
-
Un cluster Kubernetes.
-
Casque installé.
-
kubectlconfiguré pour communiquer avec votre cluster. -
eksctlinstallé pour configurer les associations d'identité des pods sur EKS.
Installation du contrôleur de service ACK pour ACM
Utilisez Helm pour installer le contrôleur de service ACK pour ACM dans votre cluster Amazon EKS.
-
Créez un espace de noms pour le contrôleur ACK.
$ kubectl create namespace ack-system --dry-run=client -o yaml | kubectl apply -f - -
Créez une association d'identité de pod pour le contrôleur ACK.
CLUSTER_NAMERemplacez-le par le nom de votre cluster etREGIONpar votre AWS région.$ eksctl create podidentityassociation --clusterCLUSTER_NAME--regionREGION\ --namespace ack-system \ --create-service-account \ --service-account-name ack-acm-controller \ --permission-policy-arns arn:aws:iam::aws:policy/AWSCertificateManagerFullAccess -
Connectez-vous au registre public Amazon ECR.
$ aws ecr-public get-login-password --region us-east-1 | helm registry login --username AWS --password-stdin public.ecr.aws -
Installez le contrôleur de service ACK pour ACM. Remplacez
REGIONpar votre AWS région.$ helm install -n ack-system ack-acm-controller oci://public.ecr.aws/aws-controllers-k8s/acm-chart --set serviceAccount.create=false --set serviceAccount.name=ack-acm-controller --set aws.region=REGION -
Vérifiez que le contrôleur fonctionne.
$ kubectl get pods -n ack-system
Pour plus d'informations sur les associations d'identité des pods, consultez EKS Pod Identity dans le guide de l'utilisateur Amazon EKS.
Exemple : mettre fin au protocole TLS à l'entrée
L'exemple suivant montre comment exporter un certificat ACM et l'utiliser pour mettre fin au protocole TLS au niveau de Kubernetes Ingress. Cette configuration crée un certificat ACM, l'exporte vers un Kubernetes Secret et configure une ressource Ingress pour utiliser le certificat pour la terminaison TLS.
Dans cet exemple :
-
Le secret est créé pour stocker le certificat exporté (
exported-cert-secret) -
La ressource de certificat ACK demande un certificat à ACM pour votre domaine et l'exporte vers le
exported-cert-secretSecret. -
La ressource Ingress fait référence au TLS
exported-cert-secretpour mettre fin au trafic entrant.
${HOSTNAME}Remplacez-le par votre nom de domaine.
apiVersion: v1 kind: Secret type: kubernetes.io/tls metadata: name: exported-cert-secret namespace: demo-app data: tls.crt: "" tls.key: "" --- apiVersion: acm.services.k8s.aws/v1alpha1 kind: Certificate metadata: name: exportable-public-cert namespace: demo-app spec: domainName: ${HOSTNAME} options: certificateTransparencyLoggingPreference: ENABLED exportTo: namespace: demo-app name: exported-cert-secret key: tls.crt --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ingress-traefik namespace: demo-app spec: tls: - hosts: - ${HOSTNAME} secretName: exported-cert-secret ingressClassName: traefik rules: - host: ${HOSTNAME} http: paths: - path: / pathType: Prefix backend: service: name: whoami port: number: 80
Une fois déployé, le contrôleur de service ACK pour ACM gère automatiquement le cycle de vie des certificats, y compris les renouvellements. Lorsqu'ACM renouvelle le certificat, le contrôleur met à jour le exported-cert-secret secret avec le nouveau certificat, garantissant ainsi que votre Ingress continue à utiliser des certificats valides sans intervention manuelle.