'

Tudo sobre PaaS

CertManager e Let’s encript

CertManager

Neste capítulo, exploraremos o CertManager, uma ferramenta amplamente utilizada para automatizar a gestão de certificados TLS/SSL em clusters Kubernetes. CertManager é uma solução valiosa para garantir a comunicação segura entre os componentes de uma aplicação distribuída e proteger a transferência de dados sensíveis.

Introdução ao CertManager

O que é CertManager?

O CertManager é uma ferramenta de código aberto para gerenciamento de certificados X.509 em clusters Kubernetes.

Ele simplifica a aquisição, emissão, renovação e rotação automática de certificados TLS/SSL para aplicações hospedadas no Kubernetes.

Por que Certificados TLS/SSL são Importantes?

  • Segurança: Certificados TLS/SSL são essenciais para garantir a comunicação segura entre aplicações, protegendo dados sensíveis contra interceptação e violações de segurança.
  • Confiabilidade: Certificados válidos garantem que os navegadores e outros clientes confiem na sua aplicação, melhorando a experiência do usuário.
  • Conformidade: Em muitos casos, conformidade regulatória exige o uso de certificados TLS/SSL.

Funcionalidades do CertManager

O CertManager oferece várias funcionalidades importantes:

Gerenciamento Automatizado de Certificados

  • Aquisição Automática: CertManager pode solicitar automaticamente certificados de uma Autoridade de Certificação (CA) confiável, como a Let’s Encrypt.
  • Renovação Automática: Ele acompanha a validade dos certificados e renova-os automaticamente, evitando a expiração.

Integração com Recursos Kubernetes

  • CRDs (Custom Resource Definitions): CertManager utiliza CRDs para definir recursos personalizados, como Certificate e Issuer, tornando a configuração mais declarativa.
  • Secrets: Os certificados gerados são armazenados em Secrets do Kubernetes, facilitando a sua utilização por outros recursos.

Suporte a Diferentes Autoridades de Certificação

CertManager suporta várias autoridades de certificação, permitindo escolher a CA mais adequada às necessidades da aplicação.

Personalização de Políticas

As políticas de emissão de certificados podem ser personalizadas de acordo com os requisitos de segurança e conformidade da organização.

Configuração e Uso Básico

Instalação do CertManager

A instalação do CertManager é geralmente realizada usando um conjunto de recursos YAML que define os componentes necessários no cluster Kubernetes.

Configuração do Issuer/ClusterIssuer

Para começar a emitir certificados, você precisa configurar um Issuer (dentro de um namespace) ou um ClusterIssuer (global) que especifica como e onde obter certificados.

Definindo Certificados

Você pode criar recursos Certificate para especificar quais certificados TLS/SSL deseja gerar e associá-los a serviços ou outros recursos no Kubernetes.

Instalação do CertManager

O cert-manager é uma solução popular no Kubernetes para gerenciar e automatizar a emissão de certificados SSL/TLS, e o Let’s Encrypt é uma autoridade de certificação (CA) que fornece certificados gratuitos.

Atividade 1

Passo 1.1. Primeiro, instale os CustomResourceDefinitions (CRDs) para o cert-manager:

kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.13.1/cert-manager.crds.yaml
Verifique o [repositório oficial do cert-manager](https://github.com/jetstack/cert-manager/releases) para obter a versão mais recente.

Confira a instalação com o comando kubectl get crd.

Passo 1.2. Crie o namespace para o cert-manager:

kubectl create namespace cert-manager

Passo 1.3. Adicione o repositório Helm do Jetstack:

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

Passo 1.4. Atualize o índice de repositórios Helm:

helm repo update

Passo 1.5. Instale o cert-manager usando Helm:

helm install \
  cert-manager jetstack/cert-manager \
  --namespace cert-manager \
  --version v1.13.1

Acompanhe a criação dos pods como comando watch kubectl get pods -n cert-manager, assim que todos estiverem com status Running finalize com as teclas Ctlr+c.

Configuração do Let’s Encrypt:

Atividade 2

Passo 2.1. Para obter certificados do Let’s Encrypt, você precisará criar um ClusterIssuer ou Issuer. O ClusterIssuer é global, enquanto o Issuer é específico para um namespace.

Para ambientes de teste, você pode usar o ambiente de ‘staging’ do Let’s Encrypt para evitar limites de taxa. Basta mudar o server para ‘https://acme-staging-v02.api.letsencrypt.org/directory’ e adaptar os nomes conforme necessário.

Aqui está um exemplo para criar um ClusterIssuer para o ambiente de produção do Let’s Encrypt:

apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-prod
spec:
  acme:
    server: https://acme-v02.api.letsencrypt.org/directory
    email: your-email@example.com
    privateKeySecretRef:
      name: letsencrypt-prod
    solvers:
    - http01:
        ingress:
          class: nginx
Substitua your-email@example.com pelo seu e-mail. Ele é usado pelo Let’s Encrypt para enviar notificações relacionadas aos seus certificados.

Salve o conteúdo acima como letsencrypt-prod.yaml e aplique-o:

kubectl apply -f letsencrypt-prod.yaml

Solicitando Certificados:

Atividade 3

Com o ClusterIssuer ou Issuer configurado, você pode solicitar certificados para seus domínios. Para isso, vamos criar um recurso do ingress que especifica os detalhes do certificado desejado.

Verifique o nome do Isser ou ClusterIssuer existente. Use kubectl get issuer -n <nome do namespace> para um issuer local ou kubectl get clusterissuer para o issuer global. Esta informação deverá constar no arquivo de criação do Ingress Resource.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-resource
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt-dev
spec:
  ingressClassName: nginx
  tls:
  - hosts:
    - nginx.example.com
    secretName: letsencrypt-dev
  rules:
  - host: nginx.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: nginx-main
            port:
              number: 80

Aplique o arquivo e faça o teste de acesso e valide o certicado no navegador ou curl.

Este é um guia básico para instalar o cert-manager e configurá-lo com o Let’s Encrypt. Dependendo do seu ambiente e requisitos (por exemplo, usando desafios DNS-01 em vez de HTTP-01), você pode precisar de etapas adicionais ou diferentes configurações. Sempre é uma boa ideia consultar a documentação oficial do cert-manager para obter detalhes e atualizações.

Em nosso Glossário você encontra outros termos. Veja agora.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *