Obtenha credenciais TLS: um exemplo

Este tópico destina-se apenas a ser um exemplo. Explica como obter um certificado TLS da autoridade de certificação (AC) Let's Encrypt. Estes passos são fornecidos principalmente como um exemplo a seguir se não tiver outra forma pronta de obter um par de certificado/chave autorizado por uma AC. O exemplo mostra como gerar certificados usando a AC Let's Encrypt, o cliente Certbot e o Cloud DNS da Google Cloud Platform.

Onde pode usar estas credenciais

Tem de fornecer credenciais TLS para dois gateways de entrada do Istio expostos fora do cluster:

Gateway Requisito de TLS
Gateway de entrada MART Requer um par de chaves/certificado TLS autorizado.
Gateway de entrada de tempo de execução Pode usar um certificado/par de chaves autoassinado ou credenciais TLS autorizadas.
Consulte também Ligações externas.

Requisitos

Precisa de um nome de domínio obtido através de uma entidade de registo de nomes de domínios. Pode registar um nome de domínio através do Google Domains ou de outra entidade de registo de domínios à sua escolha.

Configure o Cloud DNS

Para obter credenciais TLS autorizadas, tem de ter um nome de domínio qualificado. Os passos seguintes explicam como usar o Google Cloud DNS para obter um nome de domínio e gerir os servidores de domínio.
  1. Abra a Google Cloud Console e inicie sessão com a conta que criou no Passo 1: crie uma conta do Google Cloud.
  2. Selecione o projeto que criou no Passo 2: crie um projeto da GCP.
  3. Ative a Cloud DNS API. Consulte o artigo Ativar APIs.
  4. Crie dois endereços IP estáticos:
    • Se estiver no GKE, siga as instruções em Reservar um endereço IP externo estático para criar dois endereços IP estáticos. Pode atribuir qualquer nome que quiser às moradas, por exemplo: apigee-hybrid-mart e apigee-hybrid-runtime. Quando terminar, terá dois números de IP para usar na configuração do cluster no passo seguinte. Por exemplo: 35.225.131.189 e 34.66.75.196
    • Se estiver no Anthos GKE, siga as instruções na documentação do Anthos GKE para criar dois endereços IP estáticos.
  5. Crie uma zona pública gerida. Para ver instruções, consulte o artigo Crie uma zona pública gerida.
  6. Obtenha o IP externo que reservou para o apigee-hybrid-mart.
  7. Crie um conjunto de registos para o ponto final MART. Introduza o IP externo que obteve no passo anterior e adicione um prefixo ao nome do domínio, como mart. Para obter instruções, consulte o artigo Crie um novo registo.

  8. Aceda ao IP externo que reservou para apigee-hybrid-runtime.
  9. Crie um conjunto de registos para o ponto final de entrada do Istio. Este é o endereço para fazer chamadas API para o gateway híbrido. Introduza o IP externo que obteve no passo anterior e adicione um prefixo ao nome do domínio, como apitest. Para obter instruções, consulte o artigo Crie um novo registo.

  10. Copie os dados do registo de DNS, conforme apresentado no exemplo seguinte:

  11. Volte à página do seu domínio no Google Domains.
  12. Selecione o domínio.
  13. Selecione DNS.
  14. Na secção Servidores de nomes, clique em Editar.
  15. Introduza os servidores de nomes de domínio que copiou da página do Cloud DNS dos serviços de rede:

Agora, o Google Cloud DNS vai gerir os registos de DNS do seu domínio.

Instale o Certbot numa VM

Agora que tem o Cloud DNS configurado para gerir os servidores de domínio, vai instalar o cliente Certbot com o plug-in dns_google numa VM do Google Cloud. O cliente permite-lhe obter certificados autorizados para o seu domínio a partir de um ponto final do Let's Encrypt.

  1. Abra a Google Cloud Console e inicie sessão com a conta que criou no Passo 1: crie uma conta do Google Cloud.
  2. Selecione o projeto que criou no Passo 2: crie um projeto da GCP.
  3. Selecione IAM e administrador > Contas de serviço.

    A vista Contas de serviço apresenta uma lista das contas de serviço do projeto.

  4. Para criar uma nova conta de serviço, clique em +Criar conta de serviço na parte superior da vista.

    A vista Detalhes da conta de serviço é apresentada.

  5. No campo Nome da conta de serviço, introduza o nome da conta de serviço.

    Opcionalmente, pode adicionar uma descrição no campo Descrição da conta de serviço. As descrições são úteis para relembrar para que é usada uma determinada conta de serviço.

  6. Clique em Criar.

    A GCP cria uma nova conta de serviço e apresenta a vista Autorizações da conta de serviço. Use esta vista para atribuir uma função à sua nova conta de serviço.

  7. Clique na lista pendente Selecionar uma função.
  8. Selecione a função Proprietário do projeto.
  9. Clique em Continuar.
  10. Clique em Concluído.
  11. Na consola do GCP, selecione Compute Engine > Instâncias de VM.
  12. Crie uma instância de VM denominada certmanager.
  13. Na secção Disco de arranque, escolha CentOS7 e 20 GB para o unidade persistente SSD.
  14. Defina a conta de serviço para a que criou acima.
  15. Instale o Certbot e o plug-in dns_google na máquina e execute o cliente Certbot:
      sudo su -
      yum -y install yum-utils
      yum install certbot -y
      yum install certbot-dns-google -y
      certbot certonly --dns-google -d *.your_domain_name,*.your_domain_name --server https://acme-v02.api.letsencrypt.org/directory
      

    Por exemplo:

    sudo su -
    yum -y install yum-utils
    yum install certbot -y
    yum install certbot-dns-google -y
    certbot certonly --dns-google -d *.apigee-hybrid-docs.net,*.apigee-hybrid-docs.net --server https://acme-v02.api.letsencrypt.org/directory
  16. Agora, pode encontrar os ficheiros de certificado autorizado e chave privada neste diretório: cd /etc/letsencrypt/live/your_domain_name/

    Por exemplo:

    cd /etc/letsencrypt/live/apigee-hybrid-docs.net
    ls
      cert.pem  chain.pem  fullchain.pem  privkey.pem  README

  17. Copie os ficheiros fullchain.pem e privkey.pem para a sua máquina local.
  18. Atualize o ficheiro de substituições para apontar para o certificado e a chave privada. Para o elemento hostAliases, use o nome DNS que criou anteriormente.

    Por exemplo:

    ...
    envs:
      - name: test
        serviceAccountPaths:
          synchronizer: "your_keypath/synchronizer-manager-service-account.json
          udca: "your_keypath/analytic-agent-service-account.json
    
    virtualhosts:
      - name: default
        hostAliases: ["apitest.apigee-hybrid-docs.net"]
        sslCertPath: "$HOME/hybrid/apigee-hybrid-setup/tls/fullchain.pem"
        sslKeyPath: "$HOME/hybrid/apigee-hybrid-setup/tls/privkey.pem"
        routingRules:
          - env: test
    
    mart:
      nodeSelector:
        key: cloud.google.com/gke-nodepool
        value: apigee-runtime
      sslCertPath: "$HOME/hybrid/apigee-hybrid-setup/tls/fullchain.pem"
      sslKeyPath: "$HOME/hybrid/apigee-hybrid-setup/tls/privkey.pem"
      replicaCountMin: 1
      replicaCountMax: 1
      hostAlias: "mart.apigee-hybrid-docs.net"
  19. Aplique as alterações:

    Se alterou a configuração do mart, aplique as alterações:

    apigeectl apply -f your_overrides_file -c mart

    Se alterou a configuração do envs, aplique as alterações:

    apigeectl apply -f your_overrides_file -c runtime
  20. Teste a configuração

    Implemente e teste um proxy, conforme explicado em Crie e implemente um novo proxy de API.