Como usar certificados TLS gerenciados e HTTPS

Nesta página, mostramos como desativar e reativar o recurso de certificados TLS gerenciados que fornece e renova automaticamente os certificados TLS para que sejam compatíveis com conexões HTTPS no Cloud Run para Anthos

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 Cloud Run for Anthos 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 Cloud Run for Anthos 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 só funciona com o Istio instalado automaticamente quando você configura o cluster para executar o Cloud Run for Anthos: ele não funciona com o complemento do Istio ou com outras configurações do Istio. Se você precisar usar o complemento Istio, talvez seja necessário usar seus próprios certificados TLS.
  • 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 Cloud Run para Anthos em outras plataformas, como no local ou na AWS, esse recurso é desativado. Para usar esse recurso, verifique se o cluster pode acessar o Let's Encrypt (em inglês) e se o serviço de entrada do Istio (serviço istio-ingress em gke-system) está exposto à Internet pública.
  • Se você usar certificados gerenciados ao mapear domínios, não será possível usar um nome de mapeamento de domínio que seja exatamente igual ao URL do serviço que você está mapeando. Por exemplo, se o URL do seu serviço for test.default.example.com, não será possível definir o nome do DomainMapping como test.default.example.com.

Antes de começar

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

Versões de cluster compatíveis

Para as versões 1.17.7-gke.15 e mais recentes, os certificados gerenciados estão ativados por padrão para clusters públicos no Google Cloud.

Para as seguintes versões de cluster, o recurso de certificados gerenciados está desativado por padrão, mas é possível ativar certificados gerenciados se você quiser usá-los:

  • 1.16.0
  • 1.15.7-gke.23
  • 1.14.10-gke.17
  • 1.14.9-gke.23
  • 1.14.8-gke.33

Para determinar qual é sua versão atual do cluster:

  1. Acesse a página do Kubernetes Engine no console do Google Cloud.

    Acessar o Google Kubernetes Engine

  2. Clique no cluster para abrir a página de detalhes.

  3. Localize a versão do cluster ao lado do rótulo Versão principal.

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: example.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
    example.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: example.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 Cloud Run for Anthos

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.