A saída de VPC direta oferece uma solução de rede de alta performance para que seu serviço do App Engine envie tráfego a uma rede de nuvem privada virtual (VPC). A saída de VPC direta permite que as cargas de trabalho acessem recursos da rede VPC sem problemas e elimina a necessidade de configurar conectores de acesso VPC sem servidor.
Principais vantagens
- Gerenciamento simplificado: elimina a sobrecarga operacional do gerenciamento de instâncias de conector, tipos de máquinas e configurações de escalonamento. O App Engine
processa as configurações diretamente no arquivo
app.yamldo serviço. - Eficiência de custos: o uso da saída VPC direta não tem cobranças adicionais, e você não precisa pagar taxas mensais fixas pelas VMs do conector.
- Melhor desempenho e confiabilidade: ao eliminar a necessidade de usar um conector, a saída de VPC direta oferece uma conexão mais rápida e confiável aos recursos da rede VPC. Ele é escalonado tão rápido quanto o serviço do App Engine e evita quedas de conexão que podem ocorrer com conectores durante a manutenção.
Segurança granular: é possível aplicar tags de rede diretamente às versões do serviço do App Engine, permitindo regras de firewall e políticas de rede precisas e específicas do serviço.
Compatível com registros de fluxo de VPC: é possível ativar os registros de fluxo de VPC na sua sub-rede para registrar o tráfego de saída do serviço do App Engine.
Limitações
Consumo de endereços IP: o uso de endereços IP do seu serviço é dimensionado diretamente com o número de instâncias em execução, e sua capacidade de escalonamento é limitada pelo número de endereços IP disponíveis na sub-rede escolhida.
Eventos de manutenção: seu serviço pode sofrer breves interrupções de conexão durante eventos de manutenção da infraestrutura de rede. Recomendamos o uso de bibliotecas de cliente para processar redefinições de conexão ocasionais.
Inicializações a frio: os tempos iniciais de inicialização a frio dependem da região e do caso de uso específico. Em casos raros, as inicializações a frio podem durar até um minuto.
VPC direta: o App Engine não é compatível com a VPC direta.
Número de instâncias: é possível configurar até 100 instâncias por versão do App Engine para usar a saída da VPC direta.
Registros de fluxo de VPC: não mostram a versão do serviço do App Engine nos registros. O nome do serviço aparece no campo
AppEngineServiceDetails.
Alocação de endereço IP
Para colocar o serviço do App Engine em uma rede VPC, especifique uma rede VPC ou uma sub-rede, ou ambas. Se você especificar apenas uma rede, a sub-rede vai usar o mesmo nome. O App Engine aloca endereços IP da sua sub-rede.
Os endereços IP são temporários. Portanto, não crie políticas com base em IPs individuais. Se você precisar criar uma política com base em IPs, como em regras de firewall, use o intervalo de endereços IP de toda a sub-rede.
Para mudar a rede ou sub-rede que o serviço usa, implante uma nova versão que use os novos valores de rede e sub-rede.
Escalonar verticalmente e reduzir escala vertical
Para um escalonar verticalmente mais rápido durante um aumento de tráfego, o App Engine reserva endereços IP
em blocos de 16 (máscara de sub-rede 28) por vez.
Para garantir que você tenha endereços IPv4 suficientes disponíveis para uso no
App Engine, o intervalo de endereços IPv4 da sua sub-rede precisa ser /26 ou
maior.
Para aumentar a eficiência da alocação de IP e facilitar o gerenciamento, coloque vários recursos na mesma sub-rede. Se o espaço de endereços IPv4 for limitado, consulte Intervalos IPv4 compatíveis para mais opções.
Para excluir a sub-rede, primeiro exclua ou reimplemente o serviço do App Engine para interromper o uso da sub-rede e aguarde de uma a duas horas.
Consumo de endereços IP para serviços
No estado estável, o App Engine usa duas vezes (2X) o número de endereços IP em relação ao número de instâncias. Quando uma versão é reduzida, o App Engine retém os endereços IP por até 20 minutos. No total, reserve pelo menos o dobro do número de endereços IP, além de um buffer para atualizações de versão.
Por exemplo, se você fizer upgrade das versões para que version 1 seja escalonado de 100
instâncias para zero, enquanto version 2 escalona de zero para 100,
o App Engine mantém os endereços IP version 1 por até 20 minutos
após a redução. Durante a janela de retenção de 20 minutos, é preciso
reservar pelo menos 400 endereços IP ((100 + 100) * 2).
Intervalos IPv4 compatíveis
O App Engine é compatível com os seguintes intervalos IPv4 para sua sub-rede:
Antes de começar
Verifique se você tem uma rede VPC e uma sub-rede no seu projeto. Se você ainda não tiver uma VPC, siga as instruções para criar uma em Criar uma rede VPC.
Ative as API Compute Engine e Cloud Build:
Para usar a saída direta de VPC, verifique se você está executando a versão mais recente da Google Cloud CLI:
gcloud components update
Funções exigidas
Verifique se o App Engine tem acesso à rede VPC concedendo os seguintes papéis à conta de serviço de implantação:
Papel de agente de serviço do App Engine: por padrão, o agente de serviço do App Engine tem o papel de agente de serviço do App Engine (
roles/appengine.serviceAgent) que contém as permissões necessárias.Permissões personalizadas: para ter um controle mais granular, conceda ao agente de serviço do App Engine as seguintes permissões extras no projeto:
compute.networks.getcompute.subnetworks.getcompute.subnetworks.useno projeto host ou na sub-rede específicacompute.addresses.getcompute.addresses.listcompute.addresses.createcompute.addresses.deletecompute.addresses.createInternalcompute.addresses.deleteInternalcompute.regionOperations.get
Papel de usuário da rede do Compute: se você não usar o papel padrão do agente de serviço do App Engine ou as permissões personalizadas, conceda o papel de usuário da rede do Compute (
roles/compute.networkUser) na conta de serviço do agente de serviço do App Engine. As sub-redes com IPv6 externo também exigem o papel de administrador de IP público do Compute (roles/compute.publicIpAdmin).Por exemplo, para conceder o papel de usuário da rede do Compute, execute o seguinte comando:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:service-PROJECT_NUMBER@gcp-gae-service.iam.gserviceaccount.com" \ --role "roles/compute.networkUser"
Substitua:
- PROJECT_ID: ID do projeto.
- PROJECT_NUMBER: o número do projeto em que você implanta o serviço do App Engine.
Configurar um serviço do App Engine com saída direta da VPC
Para permitir que um serviço do App Engine novo ou atual se conecte diretamente à sua rede VPC, siga estas etapas:
Adicione a seguinte configuração
vpc_accessao arquivoapp.yaml:vpc_access: network_interface: network: NETWORK subnet: SUBNET tags: - NETWORK_TAGS vpc_egress: EGRESS_SETTING
Substitua:
NETWORK: o nome da rede atual a que as instâncias do aplicativo se conectam, por exemplo,
default. Especifique uma rede VPC ou uma sub-rede, ou ambas. Se você especificar apenas uma rede, a sub-rede usará o mesmo nome.SUBNET: o nome da sub-rede atual a que as instâncias do aplicativo se conectam, por exemplo,
default. Especifique uma rede VPC ou uma sub-rede, ou ambas. Se você especificar apenas uma rede, a sub-rede usará o mesmo nome.Opcional: NETWORK_TAGS: uma lista de tags de rede para associar às instâncias do serviço do App Engine e usar em regras de firewall e políticas de roteamento.
Opcional: EGRESS_SETTING: controla como o tráfego de saída é roteado. Esse campo é compatível com as seguintes configurações:
all-traffic: todas as solicitações de saída são roteadas pela rede VPC.private-ranges-only(padrão): somente o tráfego para endereços IP internos é roteado pela rede VPC. O tráfego da Internet usa o caminho padrão do App Engine.
Execute o comando abaixo para fazer a implantação no App Engine:
gcloud beta app deploy
Desconectar um serviço
Para desconectar seu serviço da rede VPC:
Remova a seção
vpc_accessdo arquivoapp.yaml.Reimplante o serviço:
gcloud beta app deploy
Práticas recomendadas para gerenciamento de IP
É necessário gerenciar seus endereços IP, já que cada instância do serviço consome um endereço IP da sua sub-rede. Use as seguintes estratégias para gerenciar seus endereços IP:
Intervalo de IP recomendado: para ter a melhor compatibilidade, recomendamos começar com o intervalo RFC 6598 (
100.64.0.0/10).Intervalos de IP alternativos: se você já estiver usando o intervalo de IP recomendado de
100.64.0.0/10, use intervalos não RFC 1918, como a classe E (240.0.0.0/4) na sua sub-rede.Dimensionamento da sub-rede: verifique se o intervalo de endereços IPv4 da sub-rede é
/26ou maior para fornecer endereços suficientes para escalonamento.Provisione IPs em excesso: recomendamos provisionar em excesso o número de IPs disponíveis na sua sub-rede para evitar o esgotamento. Assim como nos serviços do Cloud Run, geralmente é necessário usar quatro vezes mais IPs (2X para estado estável e mais 2X durante a implantação) do que o número de instâncias em execução para facilitar o escalonamento e as atualizações.
Resolver problemas
Nesta seção, descrevemos os erros comuns que podem ocorrer ao implantar o serviço do App Engine com saída direta da VPC.
Não consigo excluir uma sub-rede
Para excluir uma sub-rede, primeiro você precisa excluir ou reimplantar todos os recursos que a utilizam. Se o App Engine estiver usando uma sub-rede, desconecte o serviço do App Engine da rede VPC ou mova-o para uma sub-rede diferente antes de excluir a sub-rede.
Depois de excluir ou mover o serviço do App Engine, aguarde uma ou duas horas até que o App Engine libere os endereços IP antes de excluir a sub-rede.
Falhas de implantação
Se a implantação falhar, a Google Cloud CLI vai mostrar mensagens de erro indicando a causa raiz. Confira alguns problemas comuns:
Metadados da VPC incorretos, como um nome de rede ou sub-rede com erro de ortografia no arquivo
app.yaml. Para corrigir possíveis erros, revise a configuração da VPC no arquivoapp.yaml.Permissões insuficientes do IAM. Conceda as permissões necessárias à conta de serviço de implantação. Se você encontrar erros de permissão durante a implantação, conceda os seguintes papéis adicionais à conta de serviço:
- Conta de serviço do Cloud Build (
roles/cloudbuild.builds.builder) - Criador do token da conta de serviço (
roles/iam.serviceAccountTokenCreator)
- Conta de serviço do Cloud Build (
Esgotamento de endereços IP
Se a sub-rede ficar sem endereços IP disponíveis, o App Engine não vai conseguir iniciar novas instâncias e vai registrar um erro. Para resolver esse problema, expanda o intervalo de IP da sub-rede ou mova o serviço para uma sub-rede maior.
Vazamentos de endereços IP
Vazamentos de endereços IP podem levar ao esgotamento deles. É improvável que ocorram vazamentos de endereço IP durante operações padrão, mas eles podem acontecer pelos seguintes motivos:
- Sua conta de serviço de implantação só tem permissões para reservar endereços (
create,createInternal) e não tem permissões para liberar endereços (delete,deleteInternal). - Sua conta de serviço foi excluída enquanto outras reservas de endereço Google Cloud estavam ativas.
- A conta do Cloud Billing foi removida e reativada no projeto enquanto as reservas de endereços sem servidor estavam ativas.
- Seu projeto Google Cloud foi excluído e restaurado depois que as reservas de endereços sem servidor ainda existiam.
Para resolver o problema, siga estas etapas:
Consulte os seguintes registros na Análise de registros para identificar os endereços vazados:
protoPayload.authorizationInfo.permission=~"compute.addresses.delete.*" protoPayload.authorizationInfo.resourceAttributes.type="compute.addresses" protoPayload.resourceName=~"projects/.*/regions/.*/addresses/serverless-.*" severity>=WARNINGSe essa consulta não retornar resultados, não haverá vazamentos de endereço IP e nenhuma outra ação será necessária.
Se a consulta retornar resultados, verifique se a conta de serviço de implantação tem o papel de agente de serviço do App Engine (
roles/appengine.serviceAgent). Se não for possível usar esse papel, conceda outros papéis e permissões necessários à conta de serviço de implantação.Exclua manualmente os endereços IP vazados usando o console Google Cloud ou a Google Cloud CLI:
Console
Acesse a página Endereços IP no console Google Cloud :
Selecione os endereços IP vazados que você identificou na etapa anterior ao executar a consulta.
Clique em Liberar endereço estático para remover os endereços vazados.
gcloud
Execute o comando
gcloud compute addresses delete:gcloud compute addresses delete ADDRESS_NAME --region=REGION
Substitua:
- ADDRESS_NAME: o nome do endereço IP vazado.
- REGION: a região do endereço IP vazado.