Интеграция L7-балансировщика с Cloud CDN и Object Storage с помощью консоли управления
- Поддерживаемые инструменты
- Подготовьте облако к работе
- Создайте и настройте публичную зону DNS
- Добавьте сертификат в Certificate Manager
- Создайте облачную сеть и подсети
- Создайте группу безопасности
- Создайте бакет в Object Storage
- Загрузите файл сервиса в бакет
- Создайте группу бэкендов в Application Load Balancer
- Создайте HTTP-роутер и виртуальный хост
- Создайте L7-балансировщик
- Создайте CDN-ресурс
- Создайте ресурсную запись CNAME для CDN-ресурса
- Проверьте работу сервиса
- Как удалить созданные ресурсы
Примечание
Для реализации решения вам понадобится домен. В качестве примера будет использовано доменное имя example.com.
Чтобы настроить интеграцию L7-балансировщика с Yandex Cloud CDN и Yandex Object Storage с помощью консоли управления
- Подготовьте облако к работе.
- Создайте и настройте публичную зону DNS.
- Добавьте сертификат в Certificate Manager.
- Создайте облачную сеть и подсети.
- Создайте группу безопасности.
- Создайте бакет в Object Storage.
- Загрузите файл сервиса в бакет.
- Создайте группу бэкендов в Application Load Balancer.
- Создайте HTTP-роутер и виртуальный хост.
- Создайте L7-балансировщик.
- Создайте CDN-ресурс.
- Создайте ресурсную запись CNAME для CDN-ресурса.
- Проверьте работу сервиса.
Если созданные ресурсы вам больше не нужны, удалите их.
Поддерживаемые инструменты
Для выполнения шагов можно использовать различные поддерживаемые инструменты. Бо́льшую часть шагов можно выполнить с помощью любого из стандартных инструментов: консоли управления
Некоторые инструменты поддерживаются не для всех шагов: через Yandex Cloud CLI сейчас нельзя создать группу бэкендов в Application Load Balancer с бакетами в качестве бэкендов.
Подготовьте облако к работе
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVEилиTRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
В качестве примера будет использоваться каталог с именем example-folder.
Необходимые платные ресурсы
В стоимость поддержки инфраструктуры входят:
- плата за хранение данных в Object Storage, операции с ними и исходящий трафик (см. тарифы Object Storage);
- плата за использование вычислительных ресурсов L7-балансировщика (см. тарифы Application Load Balancer);
- плата за исходящий трафик с CDN-серверов (см. тарифы Cloud CDN);
- плата за публичные DNS-запросы и DNS-зоны, если вы используете Yandex Cloud DNS (см. тарифы Cloud DNS).
Создайте и настройте публичную зону DNS
Примечание
В настоящем руководстве рассматривается сценарий, при котором доменом управляет сервис Yandex Cloud DNS.
Если вы не хотите делегировать управление вашим доменом платформе Yandex Cloud, вы можете выполнить необходимые настройки DNS с использованием инструментов, которые предлагает ваш администратор домена. В этом случае для создания ресурсных записей воспользуйтесь документацией вашего администратора домена или обратитесь в службу его технической поддержки.
Чтобы настроить публичную зону DNS в инфраструктуре Yandex Cloud:
-
Делегируйте ваш домен сервису Cloud DNS. Для этого в личном кабинете вашего регистратора домена укажите в настройках домена адреса DNS-серверов
ns1.yandexcloud.netиns2.yandexcloud.net. -
Создайте публичную зону DNS в Yandex Cloud DNS.
Консоль управленияYandex Cloud CLIAPI-
В консоли управления
выберите каталогexample-folder. -
Перейдите в сервис Cloud DNS.
-
Нажмите Создать зону.
-
Задайте настройки зоны, соответствующие вашему домену:
- Зона — доменная зона. Название зоны должно заканчиваться точкой. Например, название доменной зоны
example.com.соответствует доменуexample.com. Чтобы создать доменную зону с нелатинскими символами, используйте кодировку Punycode . - Тип —
Публичная. - Имя —
my-domain-zone.
- Зона — доменная зона. Название зоны должно заканчиваться точкой. Например, название доменной зоны
-
Нажмите Создать.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду
yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров--folder-nameили--folder-id.По умолчанию секреты создаются в том же каталоге, что и подключения. Чтобы создать секрет в другом каталоге, в параметре
--secret-folder-idукажите идентификатор этого каталога (для этого вам потребуется рольresource-manager.userна целевой каталог). Каталоги для подключения и секрета должны находиться в одном облаке. После создания подключения вы не сможете изменить этот параметр.Выполните команду:
yc dns zone create \ --name my-domain-zone \ --zone <имя_домена> \ --public-visibilityГде
--zone— имя вашего домена, напримерexample.com.. Значение параметра--zoneдолжно заканчиваться точкой. Например, название доменной зоныexample.com.соответствует доменуexample.com.Результат:
id: dns6b0mdas5r******** folder_id: b1gt6g8ht345******** created_at: "2026-02-05T10:42:16.017Z" name: my-domain-zone zone: example.com. public_visibility: {}Подробнее о команде
yc dns zone createчитайте в справочнике CLI.Чтобы создать публичную зону DNS, воспользуйтесь методом REST API create для ресурса DnsZone или вызовом gRPC API DnsZoneService/Create.
-
Добавьте сертификат в Certificate Manager
Поддерживаются сертификаты из Yandex Certificate Manager. Вы можете выпустить новый сертификат Let's Encrypt® или загрузить собственный.
Сертификат должен находиться в том же каталоге, в котором расположен ваш CDN-ресурс.
В настоящем руководстве рассматривается сценарий, при котором для CDN-ресурса создается новый сертификат от Let's Encrypt®.
-
Добавьте в сервис Certificate Manager сертификат от Let's Encrypt® для вашего домена:
Консоль управленияYandex Cloud CLIAPI- В консоли управления
выберите каталогexample-folder. - Перейдите в сервис Certificate Manager.
- Нажмите Добавить сертификат и выберите Сертификат от Let's Encrypt.
- В открывшемся окне в поле Имя укажите
mymanagedcert. - В поле Домены укажите имя вашего домена, например
example.com. - Выберите тип проверки прав на домен
DNS. - Нажмите Создать.
Выполните команду:
yc certificate-manager certificate request \ --name mymanagedcert \ --challenge dns \ --domains <имя_домена>Где
<имя_домена>— имя вашего домена. Например:example.com.Результат:
id: fpq7t9dpi4o0******** folder_id: b1gt6g8ht345******** created_at: "2026-02-05T11:00:15.952968372Z" name: mymanagedcert type: MANAGED domains: - example.com status: VALIDATING updated_at: "2026-02-05T11:00:15.952968372Z"Подробнее о команде
yc certificate-manager certificate requestчитайте в справочнике CLI.Сохраните идентификатор (
id) созданного сертификата: он пригодится при создании CDN-ресурса.Чтобы добавить сертификат, воспользуйтесь методом REST API requestNew для ресурса Certificate или вызовом gRPC API CertificateService/RequestNew.
В списке сертификатов появится новый сертификат со статусом
Validating. Этот статус означает, что запрос на выпуск сертификата от Let's Encrypt® создан, и для его успешной обработки вам необходимо пройти процедуру проверки прав на домен. - В консоли управления
-
Для успешного выпуска сертификата пройдите проверку прав на домен:
Консоль управленияYandex Cloud CLIAPI- В консоли управления
выберите каталогexample-folder. - Перейдите в сервис Certificate Manager.
- В списке сертификатов выберите
mymanagedcert. - В открывшемся окне в блоке Проверка прав на домены выберите
CNAME-записьи ниже в секции с вашим доменом нажмите Создать запись. - В открывшемся окне подтвердите создание ресурсной записи.
Проверка прав на домен может занять от нескольких минут до нескольких дней — дождитесь ее успешного завершения. В результате сертификат будет выпущен и перейдет в статус
Issued.-
Получите значения ресурсной записи, необходимой для прохождения проверки:
yc certificate-manager certificate get \ --name mymanagedcert \ --fullРезультат:
id: fpq7t9dpi4o0******** folder_id: b1gt6g8ht345******** created_at: "2026-02-05T11:00:15.952Z" name: mymanagedcert type: MANAGED domains: - example.com status: VALIDATING updated_at: "2026-02-05T11:00:15.952Z" challenges: - domain: example.com type: DNS created_at: "2026-02-05T11:00:15.952968372Z" updated_at: "2026-02-05T11:00:19.659820021Z" status: PENDING message: Create a record in your DNS provider. dns_challenge: name: _acme-challenge.example.com. type: CNAME value: fpq7t9dpi4o0********.cm.yandexcloud.net. - domain: example.com type: DNS created_at: "2026-02-05T11:00:15.952968372Z" updated_at: "2026-02-05T11:00:19.659820021Z" status: PENDING message: Create a record in your DNS provider. dns_challenge: name: _acme-challenge.example.com. type: TXT value: 77LcWo8-Qx4sHJuFDoNCpptLZkyWVW5A2dY********Подробнее о команде
yc certificate-manager certificate getчитайте в справочнике CLI.Сохраните значение поля
valueиз раздела с типомCNAMEв блокеchallenges.dns_challenge. Это значение понадобится на следующем шаге. -
Создайте ресурсную запись CNAME для прохождения проверки ваших прав на домен:
yc dns zone add-records \ --name my-domain-zone \ --record "_acme-challenge 600 CNAME <значение_dns_challenge>"Где
<значение_dns_challenge>— сохраненное на предыдущем шаге значение, необходимое для проверки прав на домен с помощью CNAME-записи.Результат:
+--------+------------------------------+-------+------------------------------------------+-----+ | ACTION | NAME | TYPE | DATA | TTL | +--------+------------------------------+-------+------------------------------------------+-----+ | + | _acme-challenge.example.com. | CNAME | fpq7t9dpi4o0********.cm.yandexcloud.net. | 600 | +--------+------------------------------+-------+------------------------------------------+-----+Подробнее о команде
yc dns zone add-recordsчитайте в справочнике CLI.Проверка прав на домен может занять от нескольких минут до нескольких дней — дождитесь ее успешного завершения. В результате сертификат будет выпущен и перейдет в статус
Issued. -
Убедитесь, что статус сертификата изменился на
Issued:yc certificate-manager certificate get \ --name mymanagedcertРезультат:
id: fpq7t9dpi4o0******** folder_id: b1gt6g8ht345******** created_at: "2026-02-05T11:00:15.952Z" name: mymanagedcert type: MANAGED domains: - example.com status: ISSUED issuer: CN=R12,O=Let's Encrypt,C=US subject: CN=example.com serial: 57bc7967996d73d63d9d52e337c******** updated_at: "2026-02-05T13:29:23.658Z" issued_at: "2026-02-05T13:29:23.658Z" not_after: "2026-05-06T12:30:49Z" not_before: "2026-02-05T12:30:50Z"Сохраните полученный идентификатор сертификата — он понадобится позднее при создании CDN-ресурса.
Для получения информации, необходимой для прохождения процедуры проверки прав на домен, воспользуйтесь методом REST API get для ресурса Certificate или вызовом gRPC API CertificateService/Get с параметром
view=FULL.Чтобы создать ресурсную запись CNAME в зоне DNS, воспользуйтесь методом REST API updateRecordSets для ресурса DnsZone или вызовом gRPC API DnsZoneService/UpdateRecordSets.
Примечание
Чтобы DNS-проверка прав на домен по записи
CNAMEпрошла успешно, для поддомена_acme-challengeпроверяемого доменного имени не должно быть других ресурсных записей, кромеCNAME. Например, для имени_acme-challenge.example.com.должна существовать только CNAME-запись и не должно быть TXT-записи.Если управление вашим доменом осуществляется вне платформы Yandex Cloud, создайте необходимую ресурсную запись для проверки прав на домен с использованием инструментов, которые предоставляет ваш администратор домена. Подробнее читайте в разделе Проверка прав на домен.
- В консоли управления
Создайте облачную сеть и подсети
Все ресурсы будут относиться к одной облачной сети.
- В консоли управления
выберите каталогexample-folder. - Перейдите в сервис Virtual Private Cloud.
- Справа сверху нажмите кнопку Создать сеть.
- В поле Имя укажите
example-network. - В поле Дополнительно выберите опцию
Создать подсети. - Нажмите кнопку Создать сеть.
-
Создайте сеть
example-network:yc vpc network create example-networkРезультат:
id: enpqm699f18v******** folder_id: b1gt6g8ht345******** created_at: "2026-02-05T11:57:02Z" name: example-network default_security_group_id: enp4qvbg2ri1********Подробнее о команде
yc vpc network createчитайте в справочнике CLI. -
Создайте подсети во всех зонах доступности:
-
В
ru-central1-a:yc vpc subnet create example-subnet-ru-central1-a \ --zone ru-central1-a \ --network-name example-network \ --range 192.168.1.0/24Результат:
id: e9b0fo0hvhpd******** folder_id: b1gt6g8ht345******** created_at: "2026-02-05T12:00:21Z" name: example-subnet-ru-central1-a network_id: enpqm699f18v******** zone_id: ru-central1-a v4_cidr_blocks: - 192.168.1.0/24Сохраните полученный идентификатор подсети — он понадобится позднее при создании L7-балансировщика.
-
В
ru-central1-b:yc vpc subnet create example-subnet-ru-central1-b \ --zone ru-central1-b \ --network-name example-network \ --range 192.168.2.0/24Результат:
id: e2lo05oe9slo******** folder_id: b1gt6g8ht345******** created_at: "2026-02-05T12:02:02Z" name: example-subnet-ru-central1-b network_id: enpqm699f18v******** zone_id: ru-central1-b v4_cidr_blocks: - 192.168.2.0/24Сохраните полученный идентификатор подсети — он понадобится позднее при создании L7-балансировщика.
-
В
ru-central1-d:yc vpc subnet create example-subnet-ru-central1-d \ --zone ru-central1-d \ --network-name example-network \ --range 192.168.3.0/24Результат:
id: fl8bpb6lnu80******** folder_id: b1gt6g8ht345******** created_at: "2026-02-05T12:03:23Z" name: example-subnet-ru-central1-d network_id: enpqm699f18v******** zone_id: ru-central1-d v4_cidr_blocks: - 192.168.3.0/24Сохраните полученный идентификатор подсети — он понадобится позднее при создании L7-балансировщика.
Подробнее о команде
yc vpc subnet createчитайте в справочнике CLI. -
- Чтобы создать сеть
example-network, воспользуйтесь методом REST API create для ресурса Network или вызовом gRPC API NetworkService/Create. - Чтобы создать подсети
example-subnet-ru-central1-a,example-subnet-ru-central1-bиexample-subnet-ru-central1-dв трех зонах доступности, воспользуйтесь методом REST API create для ресурса Subnet или вызовом gRPC API SubnetService/Create.
Создайте группу безопасности
Группы безопасности содержат правила, которые разрешают L7-балансировщику получать входящий трафик и отправлять его на бакеты-бэкенды.
Чтобы создать группы безопасности:
-
В консоли управления
выберите каталогexample-folder. -
Перейдите в сервис Virtual Private Cloud.
-
На панели слева выберите
Группы безопасности. -
Справа сверху нажмите кнопку Создать группу безопасности.
-
В поле Имя укажите
example-sg. -
В поле Сеть выберите
example-network. -
В блоке Правила создайте следующие правила по инструкции:
Направление
трафикаОписание Диапазон портов Протокол Источник /
назначениеCIDR блоки ИсходящийanyВесьЛюбойCIDR0.0.0.0/0Входящийext-http80TCPCIDR0.0.0.0/0Входящийext-https443TCPCIDR0.0.0.0/0Входящийhealthchecks30080TCPПроверки состояния балансировщика— -
Нажмите кнопку Создать.
Выполните команду:
yc vpc security-group create example-sg \
--network-name example-network \
--rule "direction=egress,port=any,protocol=any,v4-cidrs=[0.0.0.0/0]" \
--rule "direction=ingress,port=80,protocol=tcp,v4-cidrs=[0.0.0.0/0]" \
--rule "direction=ingress,port=443,protocol=tcp,v4-cidrs=[0.0.0.0/0]" \
--rule "direction=ingress,port=30080,protocol=tcp,predefined=loadbalancer_healthchecks"
Результат:
id: enp9dpfa774h********
folder_id: b1gt6g8ht345********
created_at: "2026-02-05T12:29:47Z"
name: example-sg
network_id: enpqm699f18v********
status: ACTIVE
rules:
- id: enpa11mk1r50********
direction: EGRESS
protocol_name: ANY
protocol_number: "-1"
cidr_blocks:
v4_cidr_blocks:
- 0.0.0.0/0
- id: enp4aob2uiam********
direction: INGRESS
ports:
from_port: "80"
to_port: "80"
protocol_name: TCP
protocol_number: "6"
cidr_blocks:
v4_cidr_blocks:
- 0.0.0.0/0
- id: enpn8onb4lda********
direction: INGRESS
ports:
from_port: "443"
to_port: "443"
protocol_name: TCP
protocol_number: "6"
cidr_blocks:
v4_cidr_blocks:
- 0.0.0.0/0
- id: enp6j82kiu2p********
direction: INGRESS
ports:
from_port: "30080"
to_port: "30080"
protocol_name: TCP
protocol_number: "6"
predefined_target: loadbalancer_healthchecks
Сохраните полученный идентификатор группы безопасности — он понадобится позднее при создании L7-балансировщика.
Подробнее о команде yc vpc security-group create читайте в справочнике CLI.
Воспользуйтесь методом REST API create для ресурса SecurityGroup или вызовом gRPC API SecurityGroupService/Create.
Чтобы добавить правило для проверок состояния балансировщика, используйте параметр loadbalancer_healthchecks в поле predefinedTarget для REST API или в поле SecurityGroupRuleSpec.target.predefined_target для gRPC API.
Создайте бакет в Object Storage
- В консоли управления
выберите каталогexample-folder. - Перейдите в сервис Object Storage.
- Справа сверху нажмите кнопку Создать бакет.
- В поле Имя укажите уникальное имя бакета.
- В полях Чтение объектов и Чтение списка объектов выберите
Для всех. - Нажмите кнопку Создать бакет.
Выполните команду, указав уникальное имя бакета:
yc storage bucket create \
--name <имя_бакета> \
--public-read \
--public-list
Результат:
name: my-cdn-bucket
folder_id: b1gt6g8ht345********
anonymous_access_flags:
read: true
list: true
default_storage_class: STANDARD
versioning: VERSIONING_DISABLED
created_at: "2026-02-05T12:35:03.639102Z"
resource_id: e3e8qar9vrim********
Воспользуйтесь методом REST API create для ресурса Bucket или вызовом gRPC API BucketService/Create.
Загрузите файл сервиса в бакет
-
Создайте файл
index.htmlсо следующим содержимым:<!DOCTYPE html> <html> <head> <title>My service</title> </head> <body> <p>The service is working</p> </body> </html> -
Загрузите файл в бакет:
Консоль управленияYandex Cloud CLIAPI- В консоли управления
выберите каталогexample-folder. - Перейдите в сервис Object Storage.
- Выберите бакет, созданный ранее.
- Нажмите кнопку
Загрузить и выберите для загрузки файлindex.html. - В открывшемся окне с подтверждением загрузки нажмите Загрузить.
Загрузите в бакет файл
index.html:yc storage s3api put-object \ --bucket <имя_бакета> \ --key index.html \ --content-type "text/html" \ --body <локальный_путь_к_файлу>Где:
--bucket— имя созданного ранее бакета.--body— локальный путь, по которому находится созданный ранее HTML-файл. Например:./index.html.
Результат:
etag: '"2f613d0f35668e1d98fa9c6b********"' request_id: a809736f********Подробнее о команде
yc storage s3api put-objectчитайте в справочнике CLI.Воспользуйтесь методом REST API upload.
- В консоли управления
Создайте группу бэкендов в Application Load Balancer
- В консоли управления
выберите каталогexample-folder. - Перейдите в сервис Application Load Balancer.
- На панели слева выберите
Группы бэкендов. - Справа сверху нажмите кнопку Создать группу бэкендов.
- В поле Имя укажите
example-bg. - В поле Тип выберите тип группы бэкендов
HTTP. - В блоке Бэкенды нажмите кнопку Добавить и задайте настройки бэкенда:
- В поле Имя укажите
example-backend. - В поле Вес укажите
100. - В поле Тип выберите тип бэкенда
Бакет. - В поле Бакет выберите бакет, созданный ранее.
- В поле Имя укажите
- Нажмите кнопку Создать.
Если вы будете выполнять следующие шаги с помощью Yandex Cloud CLI, скопируйте идентификатор полученной группы бэкендов example-bg — он потребуется для выполнения дальнейших действий.
Создать группу бэкендов с бэкендом типа бакет с помощью Yandex Cloud CLI в настоящий момент нельзя. Воспользуйтесь консолью управления или API, чтобы создать нужную группу бэкендов.
Воспользуйтесь методом REST API create для ресурса BackendGroup или вызовом gRPC API BackendGroupService/Create.
Создайте HTTP-роутер и виртуальный хост
-
В консоли управления
выберите каталогexample-folder. -
Перейдите в сервис Application Load Balancer.
-
На панели слева выберите
HTTP-роутеры. -
Справа сверху нажмите кнопку Создать HTTP-роутер.
-
В поле Имя укажите
example-router. -
Создайте виртуальный хост
example-vh:- В блоке Виртуальные хосты нажмите кнопку Добавить виртуальный хост.
- В поле Имя укажите
example-vh. - В поле Authority укажите имя вашего домена. Например:
example.com. - Нажмите кнопку Добавить маршрут.
- В поле Имя укажите
example-route. - В поле Путь выберите
Начинается си укажите путь/. - В списке Методы HTTP выберите
GET. - В поле Действие оставьте
Маршрутизация. - В списке Группа бэкендов выберите
example-bg.
-
Остальные настройки оставьте без изменений и нажмите кнопку Создать.
-
Создайте HTTP-роутер
example-router:yc alb http-router create example-routerРезультат:
id: ds78i77j8lg0******** name: example-router folder_id: b1gt6g8ht345******** created_at: "2026-02-05T13:09:27.917359782Z"Подробнее о команде
yc alb http-router createчитайте в справочнике CLI. -
Создайте виртуальный хост
example-vh:yc alb virtual-host create example-vh \ --http-router-name example-router \ --authority <имя_домена>Где
<имя_домена>— имя вашего домена. Например:example.com.Результат:
done (1s) name: example-vh authority: - example.comПодробнее о команде
yc alb virtual-host createчитайте в справочнике CLI. -
Создайте маршрут
example-routeв виртуальном хостеexample-vh:yc alb virtual-host append-http-route example-route \ --http-router-name example-router \ --virtual-host-name example-vh \ --prefix-path-match "/" \ --backend-group-name example-bgРезультат:
done (1s) name: example-vh authority: - example.com routes: - name: example-route http: match: path: prefix_match: / route: backend_group_id: ds7glpil29lb********Подробнее о команде
yc alb virtual-host append-http-routeчитайте в справочнике CLI.
- Чтобы создать HTTP-роутер
example-router, воспользуйтесь методом REST API create для ресурса HttpRouter или вызовом gRPC API HttpRouterService/Create. - Чтобы создать виртуальный хост
example-vh, привязанный к роутеру, и его маршрут, воспользуйтесь методом REST API create для ресурса VirtualHost или вызовом gRPC API VirtualHostService/Create.
Создайте L7-балансировщик
-
В консоли управления
выберите каталогexample-folder. -
Перейдите в сервис Application Load Balancer.
-
Справа сверху нажмите кнопку Создать L7-балансировщик и выберите Вручную.
-
В поле Имя укажите
example-balancer. -
В блоке Сетевые настройки:
- В поле Сеть выберите
example-network. - В поле Группы безопасности выберите
Из спискаи в появившемся списке выберите созданную ранее группу безопасностиexample-sg.
- В поле Сеть выберите
-
В блоке Размещение выберите три подсети для узлов балансировщика —
example-subnet-ru-central1-a,example-subnet-ru-central1-bиexample-subnet-ru-central1-d— и включите передачу трафика в эти подсети. -
В блоке Обработчики нажмите кнопку Добавить обработчик и задайте настройки обработчика:
- В поле Имя укажите
example-listener. - В блоке Публичный IP-адрес:
- В поле Порт укажите
80. - В поле Тип выберите
Автоматически.
- В поле Порт укажите
- В поле Имя укажите
-
В поле HTTP-роутер выберите
example-router. -
Нажмите кнопку Создать.
-
Создайте балансировщик
example-balancer:yc alb load-balancer create example-balancer \ --network-name example-network \ --security-group-id <идентификатор_группы_безопасности_example-sg> \ --location zone=ru-central1-a,subnet-id=<идентификатор_подсети_example-subnet-ru-central1-a> \ --location zone=ru-central1-b,subnet-id=<идентификатор_подсети_example-subnet-ru-central1-b> \ --location zone=ru-central1-d,subnet-id=<идентификатор_подсети_example-subnet-ru-central1-d>Где:
--security-group-id— идентификатор группы безопасности, сохраненный ранее при ее создании.subnet-id— идентификаторы подсетей в трех зонах доступности, сохраненные ранее при их создании.
Результат:
done (7m17s) id: ds790ardig7r******** name: example-balancer folder_id: b1gt6g8ht345******** status: ACTIVE region_id: ru-central1 network_id: enpqm699f18v******** allocation_policy: locations: - zone_id: ru-central1-a subnet_id: e9b0fo0hvhpd******** - zone_id: ru-central1-b subnet_id: e2lo05oe9slo******** - zone_id: ru-central1-d subnet_id: fl8bpb6lnu80******** security_group_ids: - enp9dpfa774h******** created_at: "2026-02-05T13:30:25.695763710Z"Подробнее о команде
yc alb load-balancer createчитайте в справочнике CLI. -
Добавьте к балансировщику обработчик:
yc alb load-balancer add-listener \ --name example-balancer \ --listener-name example-listener \ --external-ipv4-endpoint port=80 \ --http-router-name example-routerРезультат:
done (9m53s) id: ds790ardig7r******** name: example-balancer folder_id: b1gt6g8ht345******** status: ACTIVE region_id: ru-central1 network_id: enpqm699f18v******** listeners: - name: example-listener endpoints: - addresses: - external_ipv4_address: address: 158.160.***.*** ports: - "80" http: handler: http_router_id: ds78i77j8lg0******** allocation_policy: locations: - zone_id: ru-central1-a subnet_id: e9b0fo0hvhpd******** - zone_id: ru-central1-b subnet_id: e2lo05oe9slo******** - zone_id: ru-central1-d subnet_id: fl8bpb6lnu80******** security_group_ids: - enp9dpfa774h********Сохраните IP-адрес обработчика (значение поля
address) — он понадобится позднее при создании CDN-ресурса.Подробнее о команде
yc alb load-balancer add-listenerчитайте в справочнике CLI.
Чтобы создать L7-балансировщик, воспользуйтесь методом REST API create для ресурса LoadBalancer или вызовом gRPC API LoadBalancerService/Create.
Создайте CDN-ресурс
-
В консоли управления
выберите каталогexample-folder. -
Перейдите в сервис Cloud CDN.
-
Нажмите кнопку Создать ресурс.
-
Задайте основные настройки CDN-ресурса:
-
В блоке Контент:
-
Включите Доступ к контенту.
-
В поле Запрос контента выберите
Из одного источника. -
В поле Тип источника выберите
L7-балансировщики в появившемся поле L7-балансировщик выберитеexample-balancer. -
В поле IP-адрес выберите IP-адрес, назначенный балансировщику (будет единственным в списке).
-
В поле Протокол для источников выберите
HTTP. -
В поле Доменное имя укажите имя вашего домена. Например:
example.com.Внимание
Указанное доменное имя станет основным, и его будет невозможно изменить после создания CDN-ресурса.
-
-
В блоке Дополнительно:
- В поле Переадресация клиентов выберите
С HTTP на HTTPS. - В поле Тип сертификата укажите
Сертификат из Certificate Managerи выберите сертификатmymanagedcert, который вы создали ранее для вашего доменного имени. - В поле Заголовок Host выберите
Как у клиента.
- В поле Переадресация клиентов выберите
-
-
Нажмите Продолжить.
-
В разделах Кеширование, HTTP-заголовки и методы и Дополнительно оставьте настройки по умолчанию и нажмите Продолжить.
-
Создайте группу источников
example-origin-group, указав сохраненный ранее IP-адрес балансировщика:yc cdn origin-group create --name "example-origin-group" \ --origin source=<IP-адрес_балансировщика>:80,enabled=trueРезультат:
id: "12756795849********" folder_id: b1gt6g8ht345******** name: example-origin-group use_next: true origins: - id: "68784" origin_group_id: "12756795849********" source: 158.160.***.***:80 enabled: true provider_type: ourcdn provider_type: ourcdnСохраните идентификатор группы источников (значение поля
origin_group_id) — он понадобится позднее при создании CDN-ресурса.Подробнее о команде
yc cdn origin-group createчитайте в справочнике CLI. -
Создайте CDN-ресурс:
yc cdn resource create \ --cname <имя_домена> \ --origin-group-id <идентификатор_группы_источников> \ --origin-protocol http \ --cert-manager-ssl-cert-id <идентификатор_сертификата> \ --forward-host-headerГде:
--cname— имя вашего домена. Например:example.com.--origin-group-id— идентификатор группы источников, полученный на предыдущем шаге.--cert-manager-ssl-cert-id— идентификатор созданного ранее сертификатаmymanagedcert.
Результат:
id: bc8rpt67l6dl******** folder_id: b1gt6g8ht345******** cname: example.com created_at: "2026-02-05T14:05:24.913996Z" updated_at: "2026-02-05T14:05:24.913996Z" active: true options: edge_cache_settings: enabled: true default_value: "86400" browser_cache_settings: {} query_params_options: ignore_query_string: enabled: true value: true slice: {} host_options: forward_host_header: enabled: true value: true static_headers: enabled: true stale: {} allowed_http_methods: enabled: true value: - GET - HEAD - OPTIONS static_request_headers: enabled: true custom_server_name: {} ignore_cookie: enabled: true value: true secure_key: type: DISABLE_IP_SIGNING origin_group_id: "12756795849********" origin_group_name: example-origin-group origin_protocol: HTTP ssl_certificate: type: CM status: READY data: cm: id: fpq7t9dpi4o0******** provider_type: ourcdn provider_cname: d88c6ee6********.topology.gslb.yccdn.ruСохраните идентификатор созданного ресурса (значение поля
id), а также значение CNAME провайдера (значение поляprovider_cname) — они понадобятся позднее.Подробнее о команде
yc cdn resource createчитайте в справочнике CLI. -
Включите переадресацию клиентов для CDN-ресурса, указав сохраненный на предыдущем шаге идентификатор:
yc cdn resource update <идентификатор_CDN-ресурса> \ --redirect-http-to-httpsПодробнее о команде
yc cdn resource updateчитайте в справочнике CLI.
Чтобы создать CDN-ресурс, воспользуйтесь методом REST API create для ресурса Resource или вызовом gRPC API ResourceService/Create.
Создайте ресурсную запись CNAME для CDN-ресурса
-
Получите значение доменного имени провайдера CDN.
-
В консоли управления
выберите каталогexample-folder. -
Перейдите в сервис Cloud DNS и выберите созданную ранее DNS-зону.
-
Нажмите Создать запись.
-
Задайте параметры записи:
- В поле Имя выберите
Совпадает с именем зоны (@). - В поле Тип выберите тип записи
CNAME. - В поле Значение укажите значение доменного имени провайдера CDN.
- В поле Имя выберите
-
Нажмите Создать.
-
Создайте ресурсную запись CNAME в сервисе Cloud DNS:
yc dns zone add-records \ --name my-domain-zone \ --record "@ 600 CNAME <значение_cname>"Где
<значение_cname>— полученное ранее значение CNAME провайдера.Результат:
+--------+--------------+-------+-----------------------------------------+-----+ | ACTION | NAME | TYPE | DATA | TTL | +--------+--------------+-------+-----------------------------------------+-----+ | + | example.com. | CNAME | d88c6ee6********.topology.gslb.yccdn.ru | 600 | +--------+--------------+-------+-----------------------------------------+-----+Подробнее о команде
yc dns zone add-recordsчитайте в справочнике CLI.
Чтобы получить значение CNAME-записи для CDN-ресурса, воспользуйтесь методом REST API getProviderCName для ресурса Resource или вызовом gRPC API ResourceService/GetProviderCName.
Чтобы создать ресурсную запись CNAME в зоне DNS, воспользуйтесь методом REST API updateRecordSets для ресурса DnsZone или вызовом gRPC API DnsZoneService/UpdateRecordSets.
На обновление записей на DNS-серверах может потребоваться несколько часов. После этого вы сможете проверить работу сервиса.
Если управление вашим доменом осуществляется вне платформы Yandex Cloud, создайте необходимую ресурсную запись для CDN-ресурса с использованием инструментов, которые предоставляет ваш администратор домена. Подробнее читайте в разделе Проверка прав на домен.
Проверьте работу сервиса
Чтобы проверить работу сервиса, откройте в браузере адрес https://example.com/index.html (где вместо example.com — имя вашего домена). Если все было настроено правильно, вы должны увидеть страницу с таким содержанием:
<!DOCTYPE html>
<html>
<head>
<title>My service</title>
</head>
<body>
<p>The service is working</p>
</body>
</html>
Как удалить созданные ресурсы
Чтобы остановить работу инфраструктуры и перестать платить за созданные ресурсы:
- Если вы настраивали CNAME-записи в Cloud DNS, удалите зону DNS
example-dns-zone. - Удалите CDN-ресурс с основным доменным именем
example.com. - Удалите L7-балансировщик
example-balancer. - Удалите все объекты из бакета.
- Удалите бакет.
- Удалите подсети
example-subnet-ru-central1-a,example-subnet-ru-central1-bиexample-subnet-ru-central1-d. - Удалите группу безопасности
example-sg. - Удалите сеть
example-network. - При необходимости удалите сертификат
mymanagedcert.