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 des 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 sur votre Kubernetes Ingress. Pour commencer, consultez le contrôleur ACM pour
Astuce
Si vous utilisez cert-manager
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 dans le cadre de votre flux de travail Kubernetes. Lorsque vous créez une ressource de certificat ACM dans Kubernetes, le contrôleur ACK effectue 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 émette le certificat.
-
Si le
exportTochamp est spécifié, exporte le certificat et la clé privée émis et les stocke dans le secret Kubernetes que vous avez indiqué. -
Si le
exportTochamp est spécifié et que le certificat peut être renouvelé, met à jour le Kubernetes Secret avec les certificats renouvelés avant leur expiration.
Les certificats émis publiquement nécessitent une validation du domaine avant qu'ACM puisse les émettre. 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 plusieurs manières :
-
Fin de l'équilibreur de charge (sans exportation) : émettez des certificats via ACK et utilisez-les pour terminer le 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 l'exportation du certificat. -
Terminaison d'entrée (avec exportation) : exportez des certificats depuis ACM et stockez-les dans Kubernetes Secrets pour une 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 pour Kubernetes, un plugin de gestion de certificats.
Conditions préalables
Avant d'installer le contrôleur de service ACK pour ACM, assurez-vous de disposer des éléments suivants :
-
Un cluster Kubernetes.
-
Helm 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é de pod, consultez EKS Pod Identity dans le guide de l'utilisateur Amazon EKS.
Exemple : terminer le 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 secret Kubernetes et configure une ressource d'entrée pour utiliser le certificat pour la terminaison TLS.
Dans cet exemple :
-
Un secret est créé pour stocker le certificat exporté (
exported-cert-secret) -
La ressource ACK Certificate demande un certificat à ACM pour votre domaine et l'exporte vers le
exported-cert-secretSecret. -
La ressource Ingress fait référence
exported-cert-secretau TLS pour terminer le 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. Lorsque 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.