Skip to main content

Cert-Manager

image.png

https://cert-manager.io/

Instalación

Añadir repositorio "Helm"

helm repo add jetstack https://charts.jetstack.io --force-update

Instalar cert-manager

helm install \
  cert-manager jetstack/cert-manager \
  --namespace cert-manager \
  --create-namespace \
  --version v1.17.0 \
  --set crds.enabled=true

Desinstalación

helm delete cert-manager --namespace cert-manager

ClusterIssuer

Global -> para todo el clúster

  • Se aplica una sola vez y puedes usarlo en cualquier namespace.

  • Ideal para producción cuando quieres certificados automáticos a nivel de clúster.

Manifiesto "issuer.yaml":

apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-http
spec:
  acme:
    email: tu-email@dominio.com
    server: https://acme-v02.api.letsencrypt.org/directory
    privateKeySecretRef:
      name: letsencrypt-http-private-key
    solvers:
    - http01:
        ingress:
          class: nginx
kubectl apply -f issuer.yaml

Manifiesto

---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: httpd-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    cert-manager.io/cluster-issuer: letsencrypt-http # issuer
    nginx.ingress.kubernetes.io/force-ssl-redirect: "true" # redirige http -> https
spec:
  ingressClassName: nginx
  rules:
  - host: myapp.dominio.com # FQDN app
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: httpd-service 
            port:
              number: 80
  tls:
  - hosts:
    - myapp.dominio.com # FQDN app
    secretName: myapp-tls