Como usar certificados TLS gerenciados e HTTPS

Esta página mostra como desativar e reativar o recurso de certificados TLS gerenciados que fornece e renova automaticamente certificados TLS para dar suporte a conexões HTTPS no Knative serving.

Se você quiser usar HTTPS:

  • seu contêiner deve continuar detectando $PORT;
  • escolha como você está fornecendo certificados TLS:

    • Use certificados TLS gerenciados, em que os certificados TLS são criados automaticamente conforme necessário, assim como são renovados automaticamente. Nesta página, você verá esse recurso, que está disponível nas versões compatíveis do Google Kubernetes Engine.
    • use seus próprios certificados, em que você é responsável por receber e renovar os certificados. Em algumas situações, descritas em Limitações, você precisa usar seus próprios certificados.
  • se você estiver usando certificados gerenciados, também precisará mapear seu domínio personalizado a fim de usar o recurso de certificados gerenciados.

Como usar HTTPS e HTTP

Por padrão, se você usa certificados gerenciados, os clusters ou os serviços do Knative serving com certificados gerenciados são expostos ao tráfego HTTP e HTTPS. Se você quiser apenas o tráfego HTTPS, poderá ativar redirecionamentos HTTPS para forçar todo o tráfego a usar somente HTTPS.

Solução de problemas

Se tiver problemas ao usar certificados TLS gerenciados, veja a página de solução de problemas de TLS gerenciado.

Limitações

As considerações a seguir se aplicam ao uso do recurso de certificados TLS gerenciados:

  • Os certificados TLS gerenciados estão desativados e não são compatíveis com clusters particulares do Knative serving no Google Cloud.
  • Para usar o recurso de certificados gerenciados, seu serviço precisa estar exposto externamente: não pode ser um serviço de cluster local ou um serviço exposto pela nuvem privada virtual.
  • O recurso de certificados gerenciados funciona apenas com o Cloud Service Mesh. O complemento do Istio ou outras configurações do Istio não são compatíveis.
  • Esse recurso usa Let's Encrypt (em inglês), que tem um limite de cota inicial de 50 certificados TLS por semana por domínio registrado. Para solicitar um aumento de cota, siga a documentação do Let's Encrypt (em inglês).
  • Ao executar um cluster do Knative serving em outras plataformas, como no local ou na AWS, esse recurso será desativado. Para usar esse recurso, verifique se o cluster pode acessar o Let's Encrypt e se o serviço de entrada do Cloud Service Mesh está exposto à Internet pública.

Antes de começar

As instruções nesta página pressupõem o seguinte:

Como desativar certificados TLS gerenciados e HTTPS para um cluster inteiro

Desative o TLS gerenciado para um cluster atualizando o ConfigMap config-domainmapping:

kubectl patch cm config-domainmapping -n knative-serving -p '{"data":{"autoTLS":"Disabled"}}'

Como desativar o TLS gerenciado e o HTTPS para um mapeamento de domínio específico

Se necessário, desative o TLS gerenciado para um mapeamento de domínio específico:

  1. Adicione a anotação domains.cloudrun.com/disableAutoTLS: "true":

    kubectl annotate domainmappings DOMAIN domains.cloudrun.com/disableAutoTLS=true
  2. Verifique se o HTTPS não funciona:

    curl https://DOMAIN

  3. Verifique se o HTTP está sendo usado para o serviço:

    gcloud run domain-mappings describe --domain DOMAIN

    Substitua DOMAIN pelo seu próprio nome de domínio, por exemplo: your-domain.com

    Verifique o campo url: no retorno do comando acima: o URL precisa ter http, não https.

Como reativar certificados TLS gerenciados e HTTPS

Para reativar o TLS gerenciado:

  1. Se você ainda não tiver feito isso, crie um mapeamento de domínio para o serviço e atualize o registro DNS seguindo as instruções na página de mapeamento de domínios.

  2. Ative os certificados TLS gerenciados e o HTTPS atualizando o ConfigMap config-domainmapping:

    kubectl patch cm config-domainmapping -n knative-serving -p '{"data":{"autoTLS":"Enabled"}}'
  3. Aguarde alguns minutos após o comando ser bem-sucedido e verifique se o recurso de certificados está funcionando:

    kubectl get kcert

    Se o certificado estiver pronto, você verá uma mensagem semelhante a esta:

    NAME              READY   REASON
    your-domain.com              True

    Pode levar de 20 segundos a 2 minutos para que o Kcert fique pronto. Se você tiver problemas, veja as instruções de solução para este recurso.

Como verificar o sucesso

  1. Verifique se o registro DNS entrou em vigor executando o comando:

    gcloud run domain-mappings describe --domain DOMAIN

    Substitua DOMAIN pelo seu próprio nome de domínio, por exemplo: your-domain.com

  2. Verifique o campo url: no retorno do comando acima: o URL precisa ter https, não http.

  3. Verifique o endereço IP do comando acima, listado em resourceRecords:rrdata, e compare-o com o valor que você vê ao executar o comando host DOMAIN. Eles devem ser idênticos.

Como ativar redirecionamentos HTTPS para o Knative serving

Se você usar o recurso de certificados TLS gerenciados, por padrão, o cluster será exposto aos tráfegos HTTP e HTTPS por motivos de compatibilidade com versões anteriores. Se você quiser forçar todo o tráfego a usar apenas HTTPS, ative os redirecionamentos HTTPS para um mapeamento de domínio existente invocando o comando

kubectl annotate domainmappings DOMAIN domains.cloudrun.com/httpsRedirect=Enabled

em que DOMAIN é o nome do mapeamento de domínio.