Лабораторная работа: Распространение NCC PSC

1. Введение

Обзор

В ходе этой лабораторной работы пользователи изучат, как концентратор Network Connectivity Center распространяет конечную точку Private Service Connect на периферийные устройства VPC.

Ресурс концентратора обеспечивает централизованную модель управления подключениями для соединения трафика периферийных устройств VPC с конечными точками PSC.

Что ты построишь

В этой лабораторной работе вы построите сеть NCC, которая будет передавать конечную точку подключения частной службы к экземпляру Cloud SQL.

74bf390e323ea3bb.png

Что вы узнаете

  • Используйте Private Service Connect для подключения к экземпляру Cloud SQL.
  • Используйте концентратор NCC для распространения подсети PSC на все периферийные устройства VPC, чтобы обеспечить сетевое подключение из нескольких сетей VPC.

Что вам понадобится

  • Знание облачных сетей GCP
  • Базовые знания Cloud SQL
  • Облачный проект Google
  • Проверьте свою «Квоту: Сети» и при необходимости запросите дополнительные сети, скриншот ниже:

6bc606cb34bce7e8.png

Цели

  • Настройка среды GCP
  • Настройка экземпляра Cloud SQL для MySql с помощью Private Service Sonnect
  • Настройка концентратора Network Connectivity Center для распространения конечных точек PSC
  • Настройка центра сетевых подключений с использованием VPC в качестве распределенного
  • Проверка пути к данным
  • Изучите возможности обслуживания NCC
  • Очистка ресурсов

Прежде чем начать

Облачная консоль Google и Cloud Shell

Для взаимодействия с GCP на протяжении всей лабораторной работы мы будем использовать как Google Cloud Console, так и Cloud Shell.

Проект NCC Hub Google Cloud Console

Доступ к облачной консоли можно получить по адресу https://console.cloud.google.com .

Настройте следующие элементы в Google Cloud, чтобы упростить настройку Центра сетевых подключений:

В консоли Google Cloud на странице выбора проекта выберите или создайте проект Google Cloud.

Запустите Cloud Shell . В этой лаборатории кода используются переменные $variables для облегчения реализации конфигурации gcloud в Cloud Shell.

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

Роли IAM

NCC требуются роли IAM для доступа к определенным API. Обязательно настройте для своего пользователя роли NCC IAM по мере необходимости.

Роль/Описание

Разрешения

networkconnectivity.networkAdmin — позволяет сетевым администраторам управлять концентратором и периферийными устройствами.

networkconnectivity.hubs. сетевое подключение.спицы.

networkconnectivity.networkSpokeManager — позволяет добавлять периферийные устройства в концентраторе и управлять ими. Используется в общем VPC, где хост-проект владеет хабом, но другие администраторы в других проектах могут добавлять периферийные устройства для своих вложений в хаб.

networkconnectivity.спицы.**

networkconnectivity.networkUsernetworkconnectivity.networkViewer — позволяет пользователям сети просматривать различные атрибуты концентратора и периферийных устройств.

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

2. Настройте сетевое окружение.

Обзор

В этом разделе мы развернем две сети VPC и правила брандмауэра в одном проекте. Логическая диаграмма иллюстрирует сетевое окружение, которое будет настроено на этом этапе.

8884a55988881e17.png

Создайте VPC1 и подсеть.

Сеть VPC содержит подсети, в которых вы установите виртуальную машину GCE для проверки пути к данным.

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}" 

Создайте подсеть PSC в VPC.

Используйте команду ниже, чтобы создать подсеть на луче VPC, которая будет выделена 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}" 

Создайте VPC3 и подсеть

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}"

Настройте правила брандмауэра VPC1.

Эти правила разрешат сетевое подключение из диапазонов RFC1918 и прокси-сервера Identity Access.

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

Настройка маршрутизации VPC и правил брандмауэра 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

Настройка виртуальной машины GCE в VPC1

Для установки пакетов вам понадобится временный доступ к Интернету, поэтому настройте экземпляр на использование внешнего IP-адреса.

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'

Настройка виртуальной машины GCE в VPC3

Для установки пакетов вам понадобится временный доступ к Интернету, поэтому настройте экземпляр на использование внешнего IP-адреса.

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. Создайте экземпляр Cloud SQL.

Используйте приведенные ниже команды, чтобы создать экземпляр и включить Private Service Connect.

Это займет несколько минут.

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

Определите URI вложения службы экземпляра Cloud SQL.

Используйте команду описания экземпляров gcloud sql, чтобы просмотреть информацию об экземпляре с включенным Private Service Connect. Обратите внимание на поле pscServiceAttachmentLink, в котором отображается URI, указывающий на вложение службы экземпляра. Это нам понадобится в следующем разделе.

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

4. Конечная точка PSC для Cloud Sql

Зарезервируйте внутренний IP-адрес для конечной точки PSC.

Используйте команду ниже, чтобы зарезервировать внутренний IP-адрес для конечной точки 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

Найдите ИМЯ, связанное с зарезервированным IP-адресом. Это будет использоваться при настройке правила переадресации.

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

Создайте правило переадресации Private Service Connect в VPC1.

Используйте команду ниже, чтобы создать конечную точку Private Service Connect и указать ее на вложение службы 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

Используйте команду ниже, чтобы убедиться, что вложение службы cSQL принимает конечную точку.

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

Проверьте путь к данным MySQL из VPC1.

При создании нового экземпляра Cloud SQL необходимо установить пароль для учетной записи пользователя по умолчанию, прежде чем вы сможете подключиться к экземпляру.

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

Используйте приведенную ниже команду, чтобы найти IP-адрес конечной точки PSC, связанной с присоединением службы Cloud SQL.

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

Подключитесь к экземпляру Cloud Sql из виртуальной машины в VPC1.

Откройте сеанс SSH для csql-vpc1-vm.

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

Используйте команду ниже, чтобы подключиться к экземпляру Cloud Sql. При появлении запроса введите пароль, созданный на предыдущем шаге.

mysql -h 192.168.0.253 -u root -p 

Вывод ниже отображается после успешного входа в систему:

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)]> 

Используйте базы данных шоу; команда для проверки баз данных, созданных по умолчанию в MySql.

MySQL [(none)]> show databases;

Подключитесь к экземпляру Cloud Sql из виртуальной машины в VPC3.

Откройте сеанс SSH для csql-vpc3-vm,

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

Используйте команду ниже, чтобы подключиться к экземпляру Cloud Sql. При появлении запроса введите пароль, созданный на предыдущем шаге.

mysql -h 192.168.0.253 -u root -p 

Сеанс виртуальной машины, находящейся в VPC3, завершается неудачно, поскольку отсутствует путь к данным от VPC3 к конечной точке Private Service Connect. Используйте ключевые удары для разрыва сессии.

Ctrl + C

5. Концентратор центра сетевых подключений

Обзор

В этом разделе мы настроим концентратор NCC с помощью команд gcloud. Концентратор NCC будет служить плоскостью управления, ответственной за построение пути данных от периферийных устройств VPC до конечной точки Private Service Connect.

b615efa4bad5f86.png

Включить службы API

Включите API сетевого подключения, если он еще не включен:

gcloud services enable networkconnectivity.googleapis.com

Создать хаб NCC

Используйте приведенную ниже команду gcloud, чтобы создать концентратор NCC. Флаг «-export-psc» указывает NCC Hub распространить известные конечные точки PSC на все лучи VPC.

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

Опишите недавно созданный хаб NCC. Запишите имя и связанный путь.

gcloud network-connectivity hubs describe ncc-hub

Настройте VPC1 в качестве распределенного узла 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

Настройка VPC3 в качестве распределенного узла 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

Используйте приведенную ниже команду, чтобы проверить таблицу маршрутов NCC Hub на наличие маршрута к подсети PSC.

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

6. Проверьте путь к данным NCC.

На этом этапе мы проверим путь данных между гибридным NCC и распределенным сервером VPC.

Проверьте настроенный NCC путь данных к конечной точке Cloud Sql Instances PSC.

Используйте выходные данные этих команд gcloud для входа в локальную виртуальную машину.

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

Войдите в экземпляр виртуальной машины, находящийся в локальной сети.

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

Используйте приведенную ниже команду mysql для подключения к экземпляру Cloud Sql. При появлении запроса введите пароль, созданный на предыдущем шаге.

mysql -h 192.168.0.253 -u root -p 

Вывод ниже отображается после успешного входа в систему:

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)

Используйте базы данных шоу; команда для проверки баз данных, созданных по умолчанию в MySql

MySQL [(none)]> show databases;

7. Очистка

Войдите в облачную оболочку и удалите ресурсы GCP.

Удалить конечные точки Cloud Sql PSC

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

Удалить экземпляр Cloud Sql

gcloud sql instances delete mysql-instance --quiet

Удалить правила брандмауэра

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}"

Удалить экземпляры GCE в VPC1 и 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

Удалить спицы 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

Удалить концентратор NCC

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

Удалите подсети во всех VPC.

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

Удалить VPC1 и VPC3

gcloud compute networks delete vpc1-spoke vpc3-spoke 

8. Поздравляем!

Вы завершили распространение Private Service Connect с помощью лаборатории Network Connectivity Center!

Что вы покрыли

  • Распространение конечной точки Private Service Connect с помощью Центра сетевых подключений

Следующие шаги