es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Kubernetes Ingress no puede encontrar el secreto SSL creado por CertManager.

He estado intentando generar un certificado SSL de Let’s Encrypt para mi dominio, pero cert-manager crea el secreto y le agrega un sufijo aleatorio, lo que hace que el controlador de ingreso NGINX no pueda encontrarlo:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-ingress
  annotations:
    kubernetes.io/ingress.class: "nginx"
    cert-manager.io/issuer: scaleway
    kubernetes.io/tls-acme: "true"
spec:
  rules:
    - host: <dominio>
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: my-svc
                port:
                  number: 80

  tls:
  - hosts:
    - <dominio>
    secretName: tls-cert

Aquí está el error en los registros de NGINX:

Error obtaining X.509 certificate: no object matching key "default/tls-cert" in local store

Error getting SSL certificate "default/storek8s.igesa.it": local SSL certificate default/storek8s.igesa.it was not found. Using default certificate

El secreto siempre se crea así:

NAME                                     TYPE                                  DATA   AGE
...
tls-secret-fjrm5                  Opaque                                1      60m

¿Cómo puedo desactivar la adición del sufijo aleatorio para el secreto generado por el Ingress? ¿Hay alguna solución alternativa para resolver esto?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El sufijo aleatorio añadido por cert-manager es un comportamiento por defecto y no se puede desactivar. Sin embargo, puedes configurar cert-manager para que utilice un nombre específico para el secreto agregando la siguiente anotación a tu manifiesto de Ingress:

    cert-manager.io/common-name: <nombre-de-tu-secreto>
    

    Esto asegurará que el secreto se cree con el nombre especificado, y luego puedes hacer referencia a él en tu manifiesto de Ingress de la siguiente manera:

    secretName: <nombre-de-tu-secreto>
    

    Otra solución alternativa es cambiar la configuración de NGINX para que busque el secreto con el sufijo aleatorio. Puedes hacer esto agregando la siguiente anotación a tu manifiesto de Ingress:

    nginx.ingress.kubernetes.io/ssl-secret: default/tls-secret-fjrm5
    

    Esto le indicará a NGINX que busque el secreto con el nombre especificado, incluyendo el sufijo aleatorio.

    Ten en cuenta que generalmente no se recomienda modificar la configuración de NGINX de esta manera, ya que puede dificultar la gestión y solución de problemas de tu clúster. Es mejor utilizar el primer enfoque para especificar un nombre fijo para el secreto generado por cert-manager.

Comments are closed.