Esta seção descreve a arquitetura de alto nível para estabelecer o controle de instâncias particulares do Cloud Data Fusion durante o desenvolvimento e a fase de execução do pipeline.
O diagrama da arquitetura do sistema a seguir mostra como uma instância privada do Cloud Data Fusion se conecta à Internet pública quando você desenvolve um pipeline:
É possível controlar conexões com aplicativos SaaS e serviços de nuvem pública de terceiros durante o desenvolvimento ou a execução do pipeline, encaminhando todo o tráfego de saída pelos projetos do cliente. Esse processo usa os seguintes recursos:
Rota de rede VPC personalizada: uma rede VPC personalizada encaminha o tráfego por de uma rota personalizada importada para VMs de gateway, que exportam para uma VPC do projeto de locatário usando peering de VPC.
VM de proxy: uma VM de proxy encaminha o tráfego de saída do Google Cloud do projeto de locatário do Cloud Data Fusion para o destino especificado pela Internet pública. Crie e gerencie uma VM de gateway nos projetos do cliente. Recomendamos que você os defina em uma configuração de alta disponibilidade (HA, na sigla em inglês) usando um balanceador de carga interno (ILB). Se você tiver várias instâncias privadas do Cloud Data Fusion que usam a mesma rede VPC, poderá reutilizar a mesma VM dentro da VPC.
Antes de começar
É possível se conectar a uma fonte pública a partir de uma instância privada nas versões 6.4 ou mais recentes do Cloud Data Fusion. Para usar uma dessas versões, crie uma nova instância particular do Cloud Data Fusion ou faça upgrade de uma instância atual.
Quando você cria uma conexão de peering de rede VPC para sua instância, selecione Exportar rotas.
Configurar o controle de saída durante o desenvolvimento do pipeline
O controle de saída permite controlar ou filtrar o que pode sair da rede, o que é útil em ambientes VPC Service Controls. Não há proxy de rede preferencial para executar essa tarefa. Exemplos de proxies incluem Squid Proxy, HAProxy e Envoy (links em inglês).
Os exemplos neste guia descrevem como configurar o proxy HTTP para filtragem HTTP em instâncias de VM que usam uma imagem do Debian. Os exemplos usam uma Servidor proxy Squid, que é uma das formas de configurar um servidor proxy.
Crie uma VM de proxy
Crie uma VM na mesma VPC da instância privada do Cloud Data Fusion com o seguinte script de inicialização e encaminhamento de IP.
Esse script instala o proxy Squid e o configura para interceptar o tráfego HTTP
e permitir domínios .squid-cache.org
e .google.com
. É possível substituir esses
domínios pelos domínios que você quer conectar à sua
instância do Cloud Data Fusion.
Console
Acesse a página Instâncias da VM.
Clique em Criar instância.
Use a mesma VPC que tem o peering de rede configurado com a instância privada do Cloud Data Fusion. Para mais informações sobre peering de rede VPC nesse cenário, consulte Antes de começar.
Ative o encaminhamento de IP para a instância na mesma rede da instância do Cloud Data Fusion.
No campo Script de inicialização, digite o script a seguir:
#! /bin/bash apt-get -y install squid3 cat <<EOF > /etc/squid/conf.d/debian.conf # # Squid configuration settings for Debian # logformat squid %ts.%03tu %6tr %>a %Ss/%03>Hs %<st %rm %ru %ssl::>sni %Sh/%<a %mt logfile_rotate 10 debug_options rotate=10 # configure intercept port http_port 3129 intercept # allow only certain sites acl allowed_domains dstdomain "/etc/squid/allowed_domains.txt" http_access allow allowed_domains # deny all other http requests http_access deny all EOF # Create a file with allowed egress domains # Replace these example domains with the domains that you want to allow # egress from in Data Fusion pipelines cat <<EOF > /etc/squid/allowed_domains.txt .squid-cache.org .google.com EOF /etc/init.d/squid restart iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3129 echo 1 > /proc/sys/net/ipv4/ip_forward echo net.ipv4.ip_forward=1 > /etc/sysctl.d/11-gce-network-security.conf iptables -t nat -A POSTROUTING -s 0.0.0.0/0 -p tcp --dport 443 -j MASQUERADE
gcloud
export CDF_PROJECT=<cdf-project>
export PROXY_VM=<proxy-vm>
export ZONE=<vm-zone>
export SUBNET=<subnet>
export VPC_NETWORK=<vpc-network>
export COMPUTE_ENGINE_SA=<compute-engine-sa>
gcloud beta compute --project=$CDF_PROJECT instances create $PROXY_VM --zone=$ZONE --machine-type=e2-medium --subnet=$SUBNET --no-address --metadata=startup-script=\#\!\ /bin/bash$'\n'apt-get\ -y\ install\ squid3$'\n'cat\ \<\<EOF\ \>\ /etc/squid/conf.d/debian.conf$'\n'\#$'\n'\#\ Squid\ configuration\ settings\ for\ Debian$'\n'\#$'\n'logformat\ squid\ \%ts.\%03tu\ \%6tr\ \%\>a\ \%Ss/\%03\>Hs\ \%\<st\ \%rm\ \%ru\ \%ssl::\>sni\ \%Sh/\%\<a\ \%mt$'\n'logfile_rotate\ 10$'\n'debug_options\ rotate=10$'\n'$'\n'\#\ configure\ intercept\ port$'\n'http_port\ 3129\ intercept$'\n'$'\n'\#\ allow\ only\ certain\ sites$'\n'acl\ allowed_domains\ dstdomain\ \"/etc/squid/allowed_domains.txt\"$'\n'http_access\ allow\ allowed_domains$'\n'$'\n'\#\ deny\ all\ other\ http\ requests$'\n'http_access\ deny\ all$'\n'EOF$'\n'$'\n'$'\n'\#\ Create\ a\ file\ with\ allowed\ egress\ domains$'\n'\#\ Replace\ these\ example\ domains\ with\ the\ domains\ that\ you\ want\ to\ allow\ $'\n'\#\ egress\ from\ in\ Data\ Fusion\ pipelines$'\n'cat\ \<\<EOF\ \>\ /etc/squid/allowed_domains.txt$'\n'.squid-cache.org$'\n'.google.com$'\n'EOF$'\n'$'\n'/etc/init.d/squid\ restart$'\n'$'\n'iptables\ -t\ nat\ -A\ PREROUTING\ -p\ tcp\ --dport\ 80\ -j\ REDIRECT\ --to-port\ 3129$'\n'echo\ 1\ \>\ /proc/sys/net/ipv4/ip_forward$'\n'echo\ net.ipv4.ip_forward=1\ \>\ /etc/sysctl.d/11-gce-network-security.conf$'\n'iptables\ -t\ nat\ -A\ POSTROUTING\ -s\ 0.0.0.0/0\ -p\ tcp\ --dport\ 443\ -j\ MASQUERADE --can-ip-forward --maintenance-policy=MIGRATE --service-account=$COMPUTE_ENGINE_SA --scopes=https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring.write,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/trace.append --tags=http-server,https-server --image=debian-10-buster-v20210420 --image-project=debian-cloud --boot-disk-size=10GB --boot-disk-type=pd-balanced --boot-disk-device-name=instance-1 --no-shielded-secure-boot --shielded-vtpm --shielded-integrity-monitoring --reservation-affinity=any
gcloud compute --project=$CDF_PROJECT firewall-rules create egress-allow-http --direction=INGRESS --priority=1000 --network=$VPC_NETWORK --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0 --target-tags=https-server
gcloud compute --project=$CDF_PROJECT firewall-rules create egress-allow-https --direction=INGRESS --priority=1000 --network=$VPC_NETWORK --action=ALLOW --rules=tcp:443 --source-ranges=0.0.0.0/0 --target-tags=https-server
Criar uma rota personalizada
Crie uma rota personalizada para se conectar à instância de VM de gateway que você criou.
Console
Para criar a rota no console do Google Cloud, consulte Como adicionar uma rota estática.
Ao configurar a rota, faça o seguinte:
- Defina a Prioridade como maior ou igual a
1001
. - Use o mesmo projeto e a mesma VPC que a instância privada do Cloud Data Fusion.
- Verifique se a configuração de peering da rede VPC permite exportar para que a VPC do projeto de locatário do Cloud Data Fusion importe essa rota personalizada com o peering de rede VPC.
gcloud
Para criar uma rota na CLI gcloud:
gcloud beta compute routes create $ROUTE --project=$CDF_PROJECT \ --network=$VPC_NETWORK --priority=1001 \ --destination-range=0.0.0.0/0 \ --next-hop-instance=$PROXY_VM \ --next-hop-instance-zone=$ZONE
Configurar o controle de saída para a execução de pipelines
Depois de acessar a Internet pública com nomes de host permitidos no Visualize e use o Wrangler no ambiente de design e implante o pipeline. Por padrão, os pipelines implantados do Cloud Data Fusion são executados em clusters do Dataproc.
Para garantir que todo o tráfego da Internet pública da cluster do Dataproc passa por uma ou mais VMs proxy, adicione o registros da zona de DNS particular do Google. Essa etapa é necessária porque o Cloud NAT não é compatível com filtragem.
Nos registros DNS, inclua o endereço IP da VM do proxy ou ILB.
Implantar o pipeline
Depois de verificar o pipeline na fase de projeto, implantar o pipeline. Os pipelines implantados são executados em clusters do Dataproc por padrão.
Garantir que todo o tráfego da Internet pública proveniente do Dataproc
cluster passa por uma ou mais VMs proxy, adicione uma rota personalizada com
tags proxy
e prioridade 1000
para a mesma VPC que o Dataproc
VMs:
Modifique o pipeline para usar as tags do Dataproc, porque o Cloud NAT atualmente não é compatível com nenhuma filtragem de saída.
A seguir
- Saiba mais sobre Rede no Cloud Data Fusion.