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. |
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.- Abra a Google Cloud Console e inicie sessão com a conta que criou no Passo 1: crie uma conta do Google Cloud.
- Selecione o projeto que criou no Passo 2: crie um projeto da GCP.
- Ative a Cloud DNS API. Consulte o artigo Ativar APIs.
- 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
eapigee-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
e34.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.
- 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:
- Crie uma zona pública gerida. Para ver instruções, consulte o artigo Crie uma zona pública gerida.
- Obtenha o IP externo que reservou para o
apigee-hybrid-mart
. - 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. - Aceda ao IP externo que reservou para
apigee-hybrid-runtime
. - 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. - Copie os dados do registo de DNS, conforme apresentado no exemplo seguinte:
- Volte à página do seu domínio no Google Domains.
- Selecione o domínio.
- Selecione DNS.
- Na secção Servidores de nomes, clique em Editar.
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.
- Abra a Google Cloud Console e inicie sessão com a conta que criou no Passo 1: crie uma conta do Google Cloud.
- Selecione o projeto que criou no Passo 2: crie um projeto da GCP.
- Selecione IAM e administrador > Contas de serviço.
A vista Contas de serviço apresenta uma lista das contas de serviço do projeto.
- 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.
- 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.
- 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.
- Clique na lista pendente Selecionar uma função.
- Selecione a função Proprietário do projeto.
- Clique em Continuar.
- Clique em Concluído.
- Na consola do GCP, selecione Compute Engine > Instâncias de VM.
- Crie uma instância de VM denominada certmanager.
- Na secção Disco de arranque, escolha CentOS7 e 20 GB para o unidade persistente SSD.
- Defina a conta de serviço para a que criou acima.
- 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
- 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 - Copie os ficheiros
fullchain.pem
eprivkey.pem
para a sua máquina local. - 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"
- 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
Teste a configuração
Implemente e teste um proxy, conforme explicado em Crie e implemente um novo proxy de API.