Login
Login

cert-manager

Atualizado em 11 de February de 2026

O cert-manager é uma extensão para Kubernetes que automatiza a emissão e renovação de certificados. Ele permite obter certificados do Let's Encrypt e de outras autoridades certificadoras (CAs), ou usar certificados internos da sua própria raiz.

O cert-manager simplifica o gerenciamento de certificados, renovando-os automaticamente antes da expiração e garantindo criptografia segura para serviços dentro do cluster. Ele se integra com controladores Ingress e suporta diversos métodos de verificação de domínio, tornando-se uma ferramenta prática para automatizar a gestão de certificados no Kubernetes.

Instalar cert-manager

Para instalar o cert-manager:

  1. Acesse a seção Kubernetes e clique no cluster.
  2. Navegue até a aba Complementos e selecione cert-manager.
  3. Clique em Instalar e aguarde a conclusão do processo.

Para verificar a instalação, execute o comando:

kubectl get pods -n cert-manager

Todos os pods no namespace cert-manager devem estar com o status Running.

Habilitar emissão de certificados

Para que o cert-manager possa emitir certificados, é necessário criar um objeto ClusterIssuer, que gerencia certificados em nível de cluster.

Exemplo de manifest:

apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-prod
spec:
  acme:
    email: email@example.com
    server: https://acme-v02.api.letsencrypt.org/directory
    privateKeySecretRef:
      name: letsencrypt-prod
    solvers:
    - http01:
        ingress:
          class: nginx

Aqui:

  • email: Seu endereço de e-mail, necessário para a emissão do certificado. O Let's Encrypt enviará notificações para esse endereço.
  • server: A URL do Let's Encrypt ou de outra autoridade certificadora.
  • privateKeySecretRef: O secret que armazena a chave privada.
  • solvers.http01.ingress.class: Método para verificação de domínio via HTTP, usando o controlador Nginx Ingress neste caso.

Se estiver usando outro controlador Ingress, substitua nginx pelo valor apropriado. Por exemplo, para Traefik:

solvers:
  - http01:
      ingress:
        class: traefik

Exemplo de uso do cert-manager

Vamos considerar um exemplo usando cert-manager com os recursos do nosso setup de Nginx Ingress.

Se você seguiu nosso guia, você já configurou:

  • Três deployments
  • Nginx Ingress
  • Um LoadBalancer

Seus serviços são acessíveis via:

  • http://ingress1.example.com/service1
  • http://ingress1.example.com/service2
  • http://ingress2.example.com/

Agora, precisamos definir um ClusterIssuer em um arquivo chamado cluster-issuer.yaml:

apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-prod
spec:
  acme:
    email: email@example.com
    server: https://acme-v02.api.letsencrypt.org/directory
    privateKeySecretRef:
      name: letsencrypt-prod
    solvers:
    - http01:
        ingress:
          class: nginx

Aplique o manifest:

kubectl apply -f cluster-issuer.yaml

Em seguida, você precisa atualizar o recurso Ingress. Modifique o manifest existente adicionando uma annotation para cert-manager e a seção tls.

Manifest atualizado ingress.yaml:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
  namespace: ingress-example
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
  rules:
  - host: ingress1.example.com
    http:
      paths:
      - path: /service1
        pathType: Prefix
        backend:
          service:
            name: service1
            port:
              number: 80
      - path: /service2
        pathType: Prefix
        backend:
          service:
            name: service2
            port:
              number: 80
  tls:
  - hosts:
    - ingress1.example.com
    secretName: ingress-tls

Alterações neste manifest:

  1. Adicionada a annotation cert-manager.io/cluster-issuer: letsencrypt-prod para instruir o cert-manager a usar o ClusterIssuer criado.
  2. Adicionada a seção tls, especificando os domínios para os quais o cert-manager deve emitir certificados e o secret (ingress-tls) onde eles serão armazenados.

Aplique o manifest atualizado:

kubectl apply -f ingress.yaml

Após um curto período, o cert-manager emitirá os certificados e os armazenará no secret ingress-tls. Para verificar os certificados, use:

kubectl get secret ingress-tls -n ingress-example -o yaml

Se estiver correto, o secret deverá conter tls.crt e tls.key.

Execute o seguinte comando para testar a conectividade HTTPS:

curl -v https://ingress1.example.com/service1

Se a requisição for concluída sem erros, os certificados foram instalados com sucesso e os serviços estão rodando sobre HTTPS.

Esta página foi útil?
Atualizado em 11 de February de 2026

Tem perguntas,
comentários ou preocupações?

Nossos profissionais estão disponíveis para ajudá-lo a qualquer momento,
seja para assistência ou apenas se você não souber por onde começar.
Envie-nos um e-mail
Hostman's Support