Sécurisez les charges de travail Kubernetes avec les certificats ACM - AWS Certificate Manager

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 activé. GitHub

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 :

  1. Demande un certificat à ACM, qui génère la demande de signature de certificat (CSR).

  2. Attend que la validation du domaine soit terminée et qu'ACM délivre le certificat.

  3. Si le exportTo champ est spécifié, exporte le certificat et la clé privée émis et les stocke dans le Kubernetes Secret que vous avez spécifié.

  4. Si le exportTo champ 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 afin de créer automatiquement les enregistrements CNAME de validation DNS requis dans votre zone hébergée.

Options d'utilisation des certificats

Vous pouvez utiliser les certificats ACM avec Kubernetes de différentes manières :

  1. 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.

  2. 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é.

  • kubectl configuré 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.

  1. Créez un espace de noms pour le contrôleur ACK.

    $ kubectl create namespace ack-system --dry-run=client -o yaml | kubectl apply -f -
  2. Créez une association d'identité de pod pour le contrôleur ACK. CLUSTER_NAMERemplacez-le par le nom de votre cluster et REGION par votre AWS région.

    $ eksctl create podidentityassociation --cluster CLUSTER_NAME --region REGION \ --namespace ack-system \ --create-service-account \ --service-account-name ack-acm-controller \ --permission-policy-arns arn:aws:iam::aws:policy/AWSCertificateManagerFullAccess
  3. 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
  4. Installez le contrôleur de service ACK pour ACM. Remplacez REGION par 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
  5. 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-secret Secret.

  • La ressource Ingress fait référence au TLS exported-cert-secret pour 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.