1
resposta

[Dúvida] CONFIGURAÇÃO DE CERTIFICADOS SSL, DOMÍNIOS E IP FIXO EM VPS

Boa tarde, eu tenho o seguinte cenário de infraestrutura. Meu cliente fez a contratação de uma assinatura/plano VPS em um provedor de serviços online, onde foi feito a instalação do kubernetes para subir algumas aplicações e serviços. Porém temos alguns domínios que estão já mapeados pelo time de desenvolvimento e que serão utilizados por essas aplicações. Como posso configurar os certificados ssl, os domínios para fazer os apontamentos para os PODs dentro do cluster usando o IP fixo que foi contratado pelo cliente ?

1 resposta

Oi, Pedro, tudo bem?

Vamos por partes.

Para configurar os certificados SSL, você pode usar o cert-manager, um projeto Kubernetes que automatiza a gestão de certificados. Ele pode emitir certificados de várias fontes, como Let's Encrypt, HashiCorp Vault, entre outros.

Vou deixar abaixo um exemplo de como instalar o cert-manager em seu cluster Kubernetes:

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

Depois de instalado, você pode criar um Issuer ou ClusterIssuer para emitir seus certificados. Vou também deixar um exemplo de como criar um ClusterIssuer para o Let's Encrypt:

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

Para configurar os domínios, você pode usar o Ingress, que é uma API do Kubernetes que gerencia o acesso externo aos serviços em um cluster. Você pode definir regras de roteamento HTTP/HTTPS no Ingress e todos os tráfegos que atendem a essas regras serão roteados para os serviços apropriados.

Para te dar uma ajudinha com isso, aqui também um exemplo de como criar um Ingress para o seu domínio:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
  annotations:
    cert-manager.io/cluster-issuer: "letsencrypt-prod"
spec:
  rules:
  - host: seu-dominio.com
    http:
      paths:
      - pathType: Prefix
        path: "/"
        backend:
          service:
            name: seu-servico
            port:
              number: 80
  tls:
  - hosts:
    - seu-dominio.com
    secretName: exemplo-segredo-tls

Quanto ao IP fixo, isso depende do provedor de serviços de nuvem que você está usando. Por exemplo, no Google Cloud, você pode reservar um endereço IP externo estático e, em seguida, usar num recurso de Ingress.

Se outra dúvida surgir, estamos disponíveis.

Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.