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

1. Введение

Обзор

В этой лабораторной работе пользователи изучат, как центральный узел Network Connect 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 для связи с CloudSQL

Зарезервировать внутренний 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 к конечной точке подключения частной службы. Используйте сочетание клавиш для выхода из сеанса.

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 для подключения к экземпляру 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 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

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