Laboratório: propagação de PSC do NCC

1. Introdução

Visão geral

Neste laboratório, os usuários vão aprender como o hub do Network Connectivity Center propaga um endpoint do Private Service Connect para spokes de VPC.

O recurso de hub fornece um modelo de gerenciamento de conectividade centralizado para interconectar o tráfego de spokes de VPC a endpoints PSC.

O que você vai criar

Neste codelab, você vai criar uma rede do NCC que vai propagar um endpoint do Private Service Connect para a instância do Cloud SQL.

74bf390e323ea3bb.png

O que você vai aprender

  • Usar o Private Service Connect para se conectar a uma instância do Cloud SQL
  • Use o hub do NCC para propagar a sub-rede do PSC a todos os spokes da VPC e permitir a conectividade de rede de várias redes VPC.

O que é necessário

  • Conhecimento sobre redes do GCP Cloud
  • Noções básicas do Cloud SQL
  • Projeto do Google Cloud
  • Verifique sua cota:redes e solicite mais redes, se necessário. Veja a captura de tela abaixo:

6bc606cb34bce7e8.png

Objetivos

  • Configurar o ambiente do GCP
  • Configurar uma instância do Cloud SQL para MySQL com o Private Service Connect
  • Configurar um hub do Network Connectivity Center para propagar endpoints do PSC
  • Configurar o Network Connectivity Center com a VPC como spoke
  • Validar o caminho dos dados
  • Conhecer os recursos de capacidade de serviço do NCC
  • Limpar recursos

Antes de começar

Console do Google Cloud e Cloud Shell

Para interagir com o GCP, vamos usar o console do Google Cloud e o Cloud Shell ao longo deste laboratório.

Projeto do hub do NCC no console do Google Cloud

O console do Cloud pode ser acessado em https://console.cloud.google.com.

Configure os seguintes itens no Google Cloud para facilitar a configuração do Network Connectivity Center:

No Console do Google Cloud, na página de seletor de projetos, selecione ou crie um projeto do Google Cloud.

Inicie o Cloud Shell. Este codelab usa $variáveis para ajudar na implementação da configuração da gcloud no Cloud Shell.

gcloud auth list
gcloud config list project
gcloud config set project $project
project=[YOUR-PROJECT-NAME]
echo $project

Papéis do IAM

O NCC exige papéis do IAM para acessar APIs específicas. Configure seu usuário com os papéis do IAM do NCC conforme necessário.

Função/descrição

Permissões

networkconnectivity.networkAdmin: permite que administradores de rede gerenciem hubs e spokes.

networkconnectivity.hubs.networkconnectivity.spokes.

networkconnectivity.networkSpokeManager: permite adicionar e gerenciar spokes em um hub. Para ser usado na VPC compartilhada em que o projeto host é proprietário do hub, mas outros administradores em outros projetos podem adicionar spokes para os anexos deles ao hub.

networkconnectivity.spokes.**

networkconnectivity.networkUsernetworkconnectivity.networkViewer: permite que os usuários da rede vejam diferentes atributos de hubs e spokes.

networkconnectivity.hubs.getnetworkconnectivity.hubs.listnetworkconnectivity.spokes.getnetworkconnectivity.spokes.listnetworkconnectivity.spokes.aggregatedList

2. Configurar o ambiente de rede

Visão geral

Nesta seção, vamos implantar as duas redes VPC e as regras de firewall em um único projeto. O diagrama lógico ilustra o ambiente de rede que será configurado nesta etapa.

8884a55988881e17.png

Criar VPC1 e uma sub-rede

A rede VPC contém sub-redes em que você vai instalar a VM do GCE para validação do caminho de dados.

vpc_spoke_network_name="vpc1-spoke"
vpc_spoke_subnet_name="subnet1"
vpc_spoke_subnet_ip_range="10.0.1.0/24"
region="us-central1"
zone="us-central1-a"

gcloud compute networks create "${vpc_spoke_network_name}" \
--subnet-mode=custom \

gcloud compute networks subnets create "${vpc_spoke_subnet_name}" \
--network="${vpc_spoke_network_name}" \
--range="${vpc_spoke_subnet_ip_range}" \
--region="${region}" 

Criar uma sub-rede PSC na VPC

Use o comando abaixo para criar uma sub-rede no spoke da VPC que será alocada ao PSC-EP.

vpc_spoke_network_name="vpc1-spoke"
vpc_spoke_subnet_name="csql-psc-subnet"
region="us-central1"
vpc_spoke_subnet_ip_range="192.168.0.0/24"

gcloud compute networks subnets create "${vpc_spoke_subnet_name}" \
--network="${vpc_spoke_network_name}" \
--range="${vpc_spoke_subnet_ip_range}" \
--region="${region}" 

Criar a VPC3 e uma sub-rede

vpc_spoke_network_name="vpc3-spoke"
vpc_spoke_subnet_name="subnet3"
vpc_spoke_subnet_ip_range="10.0.3.0/24"
region="us-central1"
zone="us-central1-a"

gcloud compute networks create "${vpc_spoke_network_name}" \
--subnet-mode=custom \

gcloud compute networks subnets create "${vpc_spoke_subnet_name}" \
--network="${vpc_spoke_network_name}" \
--range="${vpc_spoke_subnet_ip_range}" \
--region="${region}"

Configurar as regras de firewall da VPC1

Essas regras permitem a conectividade de rede dos intervalos RFC1918 e Identity Access Proxy.

vpc_spoke_network_name="vpc1-spoke"

gcloud compute firewall-rules create vpc1-allow-all \
--network="${vpc_spoke_network_name}" \
--allow=all \
--source-ranges=10.0.0.0/8,172.16.0.0/12,192.168.0.0/16

gcloud compute firewall-rules create vpc1-allow-iap \
--network="${vpc_spoke_network_name}" \
--allow all \
--source-ranges 35.235.240.0/20

Configurar a VPC de roteamento e as regras de firewall da VPC

vpc_spoke_network_name="vpc3-spoke"

gcloud compute firewall-rules create vpc3-allow-all \
--network="${vpc_spoke_network_name}" \
--allow=all \
--source-ranges=10.0.0.0/8,172.16.0.0/12,192.168.0.0/16

gcloud compute firewall-rules create vpc3-allow-iap \
--network="${vpc_spoke_network_name}" \
--allow all \
--source-ranges 35.235.240.0/20

Configurar a VM do GCE na VPC1

Você vai precisar de acesso temporário à Internet para instalar pacotes. Portanto, configure a instância para usar um endereço IP externo.

vm_vpc1_spoke_name="csql-vpc1-vm"
vpc_spoke_network_name="vpc1-spoke"
vpc_spoke_subnet_name="subnet1"
region="us-central1"
zone="us-central1-a"

gcloud compute instances create "${vm_vpc1_spoke_name}" \
--machine-type="e2-medium" \
--subnet="${vpc_spoke_subnet_name}" \
--zone="${zone}" \
--image-family=debian-11 \
--image-project=debian-cloud \
--metadata=startup-script='#!/bin/bash
sudo apt-get update
sudo apt-get install -y default-mysql-client'

Configurar a VM do GCE na VPC3

Você vai precisar de acesso temporário à Internet para instalar pacotes. Portanto, configure a instância para usar um endereço IP externo.

vm_vpc_spoke_name="csql-vpc3-vm"
vpc_spoke_network_name="vpc3-spoke"
vpc_spoke_subnet_name="subnet3"
region="us-central1"
zone="us-central1-a"

gcloud compute instances create "${vm_vpc_spoke_name}" \
--machine-type="e2-medium" \
--subnet="${vpc_spoke_subnet_name}" \
--zone="${zone}" \
--image-family=debian-11 \
--image-project=debian-cloud \
--metadata=startup-script='#!/bin/bash
sudo apt-get update
sudo apt-get install -y default-mysql-client'

3. Crie a instância do Cloud SQL.

Use os comandos abaixo para criar uma instância e ativar o Private Service Connect .

Isso levará alguns minutos.

gcloud config set project ${project}

gcloud sql instances create mysql-instance \
--project="${project}" \
--region=us-central1 \
--enable-private-service-connect \
--allowed-psc-projects="${project}" \
--availability-type=zonal \
--no-assign-ip \
--tier=db-f1-micro \
--database-version=MYSQL_8_0 \
--enable-bin-log

Identificar o URI do anexo de serviço da instância do Cloud SQL

Use o comando gcloud sql instances describe para ver informações sobre uma instância com o Private Service Connect ativado. Observe o campo "pscServiceAttachmentLink", que mostra o URI que aponta para o anexo de serviço da instância. Vamos precisar disso na próxima seção.

gcloud sql instances describe mysql-instance \
--format='value(pscServiceAttachmentLink)'

4. Endpoint do PSC para o Cloud SQL

Reservar um endereço IP interno para o endpoint do PSC

Use o comando abaixo para reservar um endereço IP interno para o endpoint do Private Service Connect.

region="us-central1"
vpc_spoke_subnet_name="csql-psc-subnet"

gcloud compute addresses create csql-psc-ip \
--subnet="${vpc_spoke_subnet_name}" \
--region="${region}" \
--addresses=192.168.0.253

Procure o NOME associado ao endereço IP reservado. Isso será usado na configuração da regra de encaminhamento.

gcloud compute addresses list \
--filter="name=csql-psc-ip"

Criar a regra de encaminhamento do Private Service Connect na VPC1

Use o comando abaixo para criar o endpoint do Private Service Connect e apontá-lo para o anexo de serviço do Cloud SQL.

vpc_spoke_network_name="vpc1-spoke"
vpc_spoke_subnet_name="csql-psc-subnet"
region="us-central1"
csql_psc_ep_name="csql-psc-ep"
sa_uri=$(gcloud sql instances describe mysql-instance \
  --format='value(pscServiceAttachmentLink)')
echo "$sa_uri"

gcloud compute forwarding-rules create "${csql_psc_ep_name}" \
--address=csql-psc-ip \
--region="${region}" \
--network="${vpc_spoke_network_name}" \
--target-service-attachment="${sa_uri}" \
--allow-psc-global-access

Use o comando abaixo para verificar se o anexo de serviço do cSQL aceita o endpoint.

gcloud compute forwarding-rules describe csql-psc-ep \
--region=us-central1 \
--format='value(pscConnectionStatus)'

Verificar o caminho de dados para o MySQL da VPC1

Ao criar uma instância do Cloud SQL, defina uma senha para a conta de usuário padrão antes de se conectar a ela.

gcloud sql users set-password root \
--host=% \
--instance=mysql-instance \
--prompt-for-password

Use o comando abaixo para localizar o endereço IP do endpoint do PSC associado ao anexo de serviço do Cloud SQL.

gcloud compute addresses describe csql-psc-ip \
--region=us-central1 \
--format='value(address)'

Conectar-se à instância do Cloud SQL de uma VM na VPC1

Abra uma sessão SSH para csql-vpc1-vm

gcloud compute ssh csql-vpc1-vm \
--zone=us-central1-a \
--tunnel-through-iap

Use o comando abaixo para se conectar à instância do Cloud SQL. Quando solicitado, digite a senha criada na etapa acima.

mysql -h 192.168.0.253 -u root -p 

A saída abaixo é exibida após um login bem-sucedido.

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 8350
Server version: 8.0.31-google (Google)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> 

Use o comando "show databases;" para verificar os bancos de dados criados por padrão no MySQL.

MySQL [(none)]> show databases;

Conectar-se à instância do Cloud SQL de uma VM na VPC3

Abra uma sessão SSH para csql-vpc3-vm.

gcloud compute ssh csql-vpc3-vm \
--zone=us-central1-a \
--tunnel-through-iap

Use o comando abaixo para se conectar à instância do Cloud SQL. Quando solicitado, digite a senha criada na etapa acima.

mysql -h 192.168.0.253 -u root -p 

A sessão da VM na VPC3 falha porque não há um caminho de dados da VPC3 para o endpoint do Private Service Connect. Use as teclas para sair da sessão.

Ctrl + C

5. Hub do Network Connectivity Center

Visão geral

Nesta seção, vamos configurar um hub do NCC usando comandos gcloud. O hub do NCC vai servir como plano de controle responsável por criar o caminho de dados dos spokes da VPC até o endpoint do Private Service Connect.

b615efa4bad5f86.png

Ativar os serviços de API

Ative a API Network Connectivity, caso ainda não esteja ativada:

gcloud services enable networkconnectivity.googleapis.com

Criar o hub do NCC

Use o comando gcloud abaixo para criar um hub do NCC. A flag "–export-psc" instrui o hub do NCC a propagar endpoints do PSC conhecidos para todos os spokes da VPC.

hub_name="ncc-hub"
gcloud network-connectivity hubs create "${hub_name}" \
--export-psc

Descreva o hub do NCC recém-criado. Anote o nome e o caminho associado.

gcloud network-connectivity hubs describe ncc-hub

Configurar a VPC1 como um spoke do NCC

hub_name="ncc-hub"
vpc_spoke_name="sql-vpc1-spoke"
vpc_spoke_network_name="vpc1-spoke"

gcloud network-connectivity spokes linked-vpc-network create "${vpc_spoke_name}" \
--hub="${hub_name}" \
--vpc-network="${vpc_spoke_network_name}" \
--global

Configurar a VPC3 como um spoke do NCC

hub_name="ncc-hub"
vpc_spoke_name="sql-vpc3-spoke"
vpc_spoke_network_name="vpc3-spoke"

gcloud network-connectivity spokes linked-vpc-network create "${vpc_spoke_name}" \
--hub="${hub_name}" \
--vpc-network="${vpc_spoke_network_name}" \
--global

Use o comando abaixo para verificar a tabela de rotas do hub do NCC em busca de uma rota para a sub-rede do PSC.

gcloud network-connectivity hubs route-tables routes list \
--route_table=default \
--hub=ncc-hub

6. Verificar o caminho de dados do NCC

Nesta etapa, vamos validar o caminho dos dados entre o spoke híbrido do NCC e o spoke de VPC.

Verifique o caminho de dados configurado do NCC para o endpoint PSC das instâncias do Cloud SQL

Use a saída desses comandos gcloud para fazer login na VM local.

 gcloud compute instances list --filter="name=csql-vpc3-vm" 

Faça login na instância de VM que reside na rede local.

gcloud compute ssh csql-vpc3-vm \
--zone=us-central1-a \
--tunnel-through-iap

Use o comando mysql abaixo para se conectar à instância do Cloud SQL. Quando solicitado, digite a senha criada na etapa acima.

mysql -h 192.168.0.253 -u root -p 

A saída abaixo é exibida após um login bem-sucedido.

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 8501
Server version: 8.0.31-google (Google)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.005 sec)

Use o comando "show databases;" para verificar os bancos de dados criados por padrão no MySQL.

MySQL [(none)]> show databases;

7. Limpeza

Faça login no Cloud Shell e exclua os recursos do GCP.

Exclua os endpoints PSC do Cloud SQL

gcloud compute forwarding-rules delete csql-psc-ep \
--region=us-central1 \
--quiet

gcloud compute addresses delete csql-psc-ip \
--region=us-central1 \
--quiet

gcloud compute networks subnets delete csql-psc-subnet \
--region=us-central1 \
--quiet

Excluir a instância do Cloud SQL

gcloud sql instances delete mysql-instance --quiet

Excluir regras de firewall

vpc_spoke_network_name="vpc3-spoke"

gcloud compute firewall-rules delete vpc3-allow-all \ --network="${vpc_spoke_network_name}" 
gcloud compute firewall-rules delete vpc3-allow-iap \ --network="${vpc_spoke_network_name}"
vpc_spoke_network_name="vpc1-spoke"

gcloud compute firewall-rules delete vpc1-allow-all \ --network="${vpc_spoke_network_name}"
gcloud compute firewall-rules delete vpc1-allow-iap \ --network="${vpc_spoke_network_name}"

Excluir instâncias do GCE em VPC1 e VPC3

vm_vpc1_spoke_name="csql-vpc1-vm"
zone="us-central1-a"
gcloud compute instances delete "${vm_vpc1_spoke_name}" \
--zone="${zone}" \
--quiet


vm_vpc_spoke_name="csql-vpc3-vm"
zone="us-central1-a"
gcloud compute instances delete "${vm_vpc_spoke_name}" \
--zone="${zone}" --quiet

Exclua os spokes do NCC

vpc_spoke_name="sql-vpc1-spoke"
gcloud network-connectivity spokes delete "${vpc_spoke_name}" \
--global \  
--quiet
vpc_spoke_name="sql-vpc3-spoke"
gcloud network-connectivity spokes delete "${vpc_spoke_name}" \
--global \  
--quiet

Excluir hub do NCC

hub_name="ncc-hub"
gcloud network-connectivity hubs delete "${hub_name}" \
  --project=${project}

Excluir as sub-redes em todas as VPCs

vpc_spoke_subnet_name="csql-psc-subnet"
region="us-central1"

gcloud compute networks subnets delete "${vpc_spoke_subnet_name}" \ 
--region="${region}" \
--quiet
vpc_spoke_subnet_name="subnet1"
region="us-central1"

gcloud compute networks subnets delete "${vpc_spoke_subnet_name}" \ 
--region="${region}" \
--quiet
vpc_spoke_subnet_name="subnet3"
region="us-central1"

gcloud compute networks subnets delete "${vpc_spoke_subnet_name}" \ 
--region="${region}" \
--quiet

Excluir VPC1 e VPC3

gcloud compute networks delete vpc1-spoke vpc3-spoke 

8. Parabéns!

Você concluiu o laboratório de propagação do Private Service Connect com o Network Connectivity Center.

Conteúdo abordado

  • Propagação de endpoint do Private Service Connect com o Network Connectivity Center

Próximas etapas