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

1. Введение

Обзор

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

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

Что вы построите

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

74bf390e323ea3bb.png

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

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

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

  • Знание сетевых технологий облачной среды GCP.
  • Базовые знания Cloud SQL
  • Проект Google Cloud
  • Проверьте свою квоту по сетям и при необходимости запросите дополнительные сети (см. скриншот ниже):

6bc606cb34bce7e8.png

Цели

  • Настройка среды GCP
  • Настройка экземпляра Cloud SQL для MySQL с использованием частного сервиса Sonnect.
  • Настройте центр управления сетевым подключением (Network Connectivity Center Hub) для распространения сигнала на конечные точки PSC.
  • Настройте Центр сетевого подключения, используя VPC в качестве периферийной сети.
  • Проверить путь к данным
  • Изучите характеристики ремонтопригодности NCC.
  • Очистка ресурсов

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

Консоль Google Cloud и Cloud Shell

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

Консоль Google Cloud для проекта NCC Hub

Доступ к консоли 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

Для доступа к определенным API в NCC требуются роли IAM. Убедитесь, что вы настроили пользователя с необходимыми ролями IAM в NCC.

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

Разрешения

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

networkconnectivity.hubs. networkconnectivity.spokes.

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

networkconnectivity.spokes.**

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

Настройка маршрутизации 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 instances describe, чтобы просмотреть информацию об экземпляре с включенным 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"

Создайте правило переадресации подключения частной службы в 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)'

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

Откройте SSH-сессию к csql-vpc1-vm

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

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

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

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

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

mysql -h 192.168.0.253 -u root -p 

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

Ctrl + C

5. Центр сетевого подключения

Обзор

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

b615efa4bad5f86.png

Включить API-сервисы

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

gcloud services enable networkconnectivity.googleapis.com

Создать центр NCC

Используйте приведенную ниже команду gcloud для создания концентратора NCC. Флаг "–export-psc" указывает концентратору NCC распространять информацию об известных конечных точках PSC на все периферийные узлы VPC.

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

Опишите недавно созданный NCC Hub. Укажите его название и соответствующий путь.

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)

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

Удалите экземпляр CloudSQL.

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

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 Lab!

Что вы осветили

  • Распространение сигнала на конечные точки Private Service Connect через Network Connectivity Center

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