Todo sobre Apple, Android, Juegos Apks y Sitios de Peliculas

Cómo instalar Kubernetes Cert-Manager y configurar Let’s Encrypt

Gerente de certificados automatiza el aprovisionamiento de certificados dentro de los clústeres de Kubernetes. Proporciona un conjunto de recursos personalizados para emitir certificados y adjuntarlos a servicios.

Uno de los casos de uso más comunes es proteger aplicaciones web y API con certificados SSL de Let’s Encrypt. A continuación se explica cómo agregar Cert-Manager a su clúster, configurar un emisor de certificados Let’s Encrypt y adquirir un certificado para Pods expuestos a través de un Ingress.

Instalación de Cert-Manager

Cert-Manager es más fácil de instalar usando Helm. Helm es un administrador de paquetes de Kubernetes que le permite agregar aplicaciones a su clúster utilizando repositorios de gráficos prediseñados. Asegúrese de tener Helm instalado y configurado con una conexión a su clúster de Kubernetes.

Comience agregando el repositorio Jetstack a su instalación de Helm. Jetstack desarrolló originalmente Cert-Manager antes de ser donado a CNCF.

helm repo add jetstack https://charts.jetstack.io

helm repo update

Ahora instale Cert-Manager en su clúster:

helm install cert-manager jetstack/cert-manager --namespace cert-manager --create-namespace --version v1.5.3 --set installCRDs=true

Reemplace el número de versión que se muestra arriba con la última versión que se muestra en la Documentación del administrador de certificados.

El comando instalará Cert-Manager en un nuevo espacio de nombres de Kubernetes llamado cert-manager. La configuración installCRDs agregará los recursos de Kubernetes personalizados de Cert-Manager durante la instalación. Esto solo funciona con Helm versión 3.2 y posteriores; si está utilizando una versión anterior, debe agregar manualmente las definiciones de recursos con Kubectl:

kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.5.3/cert-manager.crds.yaml

Agregar el complemento Kubectl

Cert-Manager tiene un complemento Kubectl que simplifica algunas tareas de administración comunes. También le permite verificar si Cert-Manager está activo y listo para atender solicitudes.

Instale el complemento descargando su archivo y extrayéndolo al directorio correcto:

curl -L -o kubectl-cert-manager.tar.gz https://github.com/jetstack/cert-manager/releases/latest/download/kubectl-cert_manager-linux-amd64.tar.gz

tar xzf kubectl-cert-manager.tar.gz

sudo mv kubectl-cert_manager /usr/local/bin

Ahora use el complemento para verificar que la instalación de Cert-Manager esté funcionando:

kubectl cert-manager check api

Deberías ver el siguiente resultado:

The cert-manager API is ready

Ahora está listo para agregar un emisor para obtener certificados de Let’s Encrypt.

Crear un emisor de certificado

Los emisores y los emisores de clúster son recursos que proporcionan certificados a su clúster. La instalación básica de Cert-Manager creada hasta ahora no puede emitir certificados. Agregar un emisor que esté configurado para usar Let’s Encrypt le permite adquirir dinámicamente nuevos certificados para los servicios en su clúster.

Cree un archivo YAML en su directorio de trabajo y asígnele el nombre emitr.yml. Añade el siguiente contenido:

apiVersion: cert-manager.io/v1

kind: ClusterIssuer

metadata:

name: letsencrypt-staging

spec:

acme:

server: https://acme-staging-v02.api.letsencrypt.org/directory

email: [email protected]

privateKeySecretRef:

name: letsencrypt-staging

solvers:

- http01:

ingress:

class: nginx

Debe reemplazar la dirección de correo electrónico con su propio correo electrónico de contacto. Esto se incluirá en sus certificados. Let’s Encrypt también puede enviarle un correo electrónico a la dirección si necesita enviarle alertas sobre sus certificados.

Estamos creando un ClusterIssuer, ya que están disponibles para todos los recursos de su clúster, independientemente del espacio de nombres. Un estandar Editor es un recurso con espacio de nombres que solo puede proporcionar certificados dentro de su propio espacio de nombres.

Nuestra configuración de emisor indica a Cert-Manager que obtenga certificados del servidor provisional de Let’s Encrypt. Es una buena idea utilizar el entorno de prueba mientras configura su integración para evitar afectar la estricta producción de Let’s Encrypt. límites de tasa.

Utilice kubectl para agregar el emisor a su clúster:

kubectl create -f issuer.yml

Obtener un certificado

Ahora puede utilizar su emisor para adquirir un certificado para un servicio expuesto a través de un recurso de Ingress. Cert-Manager monitorea automáticamente los recursos de Ingress y crea certificados usando la configuración en su campo tls. Solo necesita agregar una anotación que nombre el emisor o el emisor del clúster que desea utilizar.

apiVersion: apps/v1

kind: Deployment

metadata:

name: my-app

spec:

replicas: 1

selector:

matchLabels:

app: my-app

template:

metadata:

labels:

app: my-app

spec:

containers:

- name: my-app

image: wordpress:latest

ports:

- containerPort: 80

---

apiVersion: v1

kind: Service

metadata:

name: my-service

spec:

selector:

app: my-app

ports:

port: 80

---

apiVersion: networking.k8s.io/v1beta1

kind: Ingress

metadata:

name: my-ingress

annotations:

kubernetes.io/ingress.class: nginx

cert-manager.io/cluster-issuer: letsencrypt-staging

spec:

rules:

- host: example.com

http:

paths:

- path: /

backend:

serviceName: my-service

servicePort: 80

tls:

- hosts:

- example.com

Este archivo YAML define un Pod, un Servicio y un Ingress que expone el servicio. Asume el uso de nginx-ingress como controlador de Ingress. El Pod ejecuta un contenedor de WordPress al que se podrá acceder a través de HTTPS en example.com.

Cert-Manager detectará la presencia de la anotación cert-manager.io/cluster-issuer en el recurso de Ingress. Utilizará el emisor del clúster letsencrypt-staging creado anteriormente para adquirir un certificado que cubra los nombres de host definidos en el campo tls.hosts de Ingress.

Usando Let’s Encrypt en producción

Una vez que haya adquirido con éxito un certificado provisional, puede migrar a los servidores de producción de Let’s Encrypt. Los certificados de prueba son válidos, pero los navegadores no confían en ellos, por lo que debe obtener un reemplazo de producción antes de poner en funcionamiento su sitio.

Es mejor agregar un emisor de clúster independiente para el servidor de producción. Luego puede hacer referencia al emisor apropiado en cada uno de sus recursos de Ingress, dependiendo de si están listos para producción.

Copie la configuración del emisor que se muestra arriba y cambie los campos de nombre a letsencrypt-production. A continuación, reemplace la URL del servidor con el valor que se muestra a continuación:

https://acme-v02.api.letsencrypt.org/directory

Cree el nuevo emisor en su clúster:

kubectl create -f issuer-production.yml

Actualice su recurso de Ingress para solicitar un certificado de producción cambiando el valor de la anotación cert-manager.io/cluster-issuer a letsencrypt-production (o el nombre que asignó a su propio emisor de producción). Utilice kubectl para aplicar el cambio:

kubectl apply -f my-ingress.yaml

Ahora debería tener habilitado HTTPS en pleno funcionamiento para su recurso de Ingress. Cert-Manager administrará automáticamente sus certificados y los renovará antes de que caduquen.

Actualización de Cert-Manager

Las versiones de Cert-Manager generalmente admiten actualizaciones locales con Helm:

helm repo update

helm upgrade --version <new version> cert-manager jetstack/cert-manager

Los certificados permanecen disponibles durante las actualizaciones, pero el proceso de renovación se detendrá.

Aunque las actualizaciones ahora normalmente son sencillas, siempre debe revisar las notas de la versión para identificar los posibles cambios que necesita realizar. Esto es particularmente importante si está actualizando Kubernetes o pasando por varias versiones de Cert-Manager. Si todavía utiliza una versión anterior de Kubernetes, es posible que tenga una versión obsoleta de Cert-Manager que requiera intervención manual significativa para ponerlo al día.

Resumen

Let’s Encrypt se agrega fácilmente a un clúster de Kubernetes mediante Cert-Manager. Debe instalar Cert-Manager con Helm, crear un emisor que utilice la API Let’s Encrypt y luego hacer referencia a ese emisor en sus recursos de Ingress.

Puede proporcionar a Cert-Manager su propia configuración para casos de uso más avanzados. Puede especificar la duración del certificado (use la anotación Ingress cert-manager.io/duration), declarar manualmente el nombre común del certificado (cert-manager.io/common-name) y usar Desafíos del DNS en lugar de HTTP. La última opción puede resultar útil en escenarios específicos, como cuando desea adquirir un certificado comodín.

El uso sencillo para proteger aplicaciones web y API debería funcionar tal como está utilizando los recursos que se muestran arriba. La verificación HTTP funciona manipulando el controlador de Ingress para proporcionar una URL temporal conocida a la que Let’s Encrypt pueda acceder. Si su dominio proporciona el valor correcto en esa URL, Let’s Encrypt confía en que usted tiene el control y emite el certificado.