Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Proteja las cargas de trabajo de Kubernetes con certificados ACM
Puedes usar certificados públicos AWS Gestor de certificados exportables con AWS Controllers for Kubernetes (ACK) para emitir y exportar certificados TLS públicos desde ACM a tus cargas de trabajo de Kubernetes. Esta integración le permite proteger los pods de Amazon Elastic Kubernetes Service (Amazon EKS) y cancelar el TLS en su Kubernetes Ingress. Para empezar, consulte el controlador ACM para Kubernetes en. https://github.com/aws-controllers-k8s/acm-controller
sugerencia
Si utilizas cert-manager
AWS Controllers for Kubernetes (ACK) amplía la API de Kubernetes para administrar los recursos mediante manifiestos nativos de Kubernetes. AWS El controlador de servicios ACK para ACM proporciona una administración automatizada del ciclo de vida de los certificados dentro del flujo de trabajo de Kubernetes. Al crear un recurso de certificado ACM en Kubernetes, el controlador ACK realiza las siguientes acciones:
-
Solicita un certificado a ACM, que genera la solicitud de firma del certificado (CSR).
-
Espera a que se complete la validación del dominio y a que ACM emita el certificado.
-
Si se especifica el
exportTocampo, exporta el certificado emitido y la clave privada y los almacena en el secreto de Kubernetes que hayas especificado. -
Si se especifica el
exportTocampo y el certificado puede renovarse, actualiza el secreto de Kubernetes con los certificados renovados antes de que caduquen.
Los certificados emitidos públicamente requieren la validación del dominio antes de que ACM pueda emitirlos. Puede usar el controlador de servicios ACK de Amazon Route 53
Opciones de uso del certificado
Puedes usar los certificados de ACM con Kubernetes de varias maneras:
-
Finalización del balanceador de cargas (sin exportación): emite certificados mediante ACK y úsalos para terminar el TLS en un balanceador de cargas. AWS El certificado permanece en ACM y la controladora del balanceador de carga lo descubre automáticamente. AWS
Este enfoque no requiere exportar el certificado. -
Finalización del ingreso (con exportación): exporte los certificados de ACM y guárdelos en Kubernetes Secrets para cancelar el TLS a nivel de ingreso. Esto te permite usar los certificados directamente en tus cargas de trabajo de Kubernetes.
nota
Para los casos de uso que requieren certificados privados, consulta AWS Private CA Connector for Kubernetes, un complemento de gestión de certificados.
Requisitos previos
Antes de instalar el controlador de servicio ACK para ACM, asegúrese de disponer de lo siguiente:
-
Un clúster de Kubernetes.
-
Helm instalado.
-
kubectlconfigurado para comunicarse con el clúster. -
eksctlinstalado para configurar las asociaciones de identidad de los pods en EKS.
Instale el controlador de servicio ACK para ACM
Utilice Helm para instalar el controlador de servicio ACK para ACM en su clúster de Amazon EKS.
-
Cree un espacio de nombres para el controlador ACK.
$ kubectl create namespace ack-system --dry-run=client -o yaml | kubectl apply -f - -
Cree una asociación de identidades de pods para el controlador ACK.
CLUSTER_NAMESustitúyala por el nombre de tu clúster yREGIONpor tu AWS región.$ 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 -
Inicie sesión en el registro público de Amazon ECR.
$ aws ecr-public get-login-password --region us-east-1 | helm registry login --username AWS --password-stdin public.ecr.aws -
Instale el controlador de servicio ACK para ACM.
REGIONSustitúyalo por el de su AWS región.$ 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 -
Verifique que el controlador esté funcionando.
$ kubectl get pods -n ack-system
Para obtener más información sobre las asociaciones de identidades de pods, consulte EKS Pod Identity en la guía del usuario de Amazon EKS.
Ejemplo: terminar el TLS en el momento de la entrada
El siguiente ejemplo muestra cómo exportar un certificado de ACM y usarlo para cancelar TLS en el nivel de Kubernetes Ingress. Esta configuración crea un certificado ACM, lo exporta a un secreto de Kubernetes y configura un recurso de Ingress para usar el certificado para la terminación de TLS.
En este ejemplo:
-
El secreto se crea para almacenar el certificado exportado ()
exported-cert-secret -
El recurso del certificado ACK solicita un certificado de ACM para su dominio y lo exporta al
exported-cert-secretsecreto. -
El recurso Ingress hace referencia al TLS
exported-cert-secretpara terminar el tráfico entrante.
Sustituya ${HOSTNAME} por su nombre de dominio.
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
Una vez implementado, el controlador de servicios ACK para ACM administra automáticamente el ciclo de vida del certificado, incluidas las renovaciones. Cuando ACM renueva el certificado, el controlador actualiza el exported-cert-secret secreto con el nuevo certificado, lo que garantiza que Ingress siga utilizando certificados válidos sin intervención manual.