INTEGRITY Документация

Начало работы

Это руководство проведёт вас через создание первого Workers VPC Service, что позволит вашему Worker обращаться к ресурсам в вашей приватной сети.

Вы создадите приложение Workers, создадите Tunnel в своей приватной сети для подключения к Cloudflare, а затем настроите VPC Services для служб в приватной сети, к которым хотите получить доступ из Workers.

Предварительные требования

Прежде чем начать, убедитесь, что вы выполнили следующее:

  1. Зарегистрируйтесь для получения Аккаунт Cloudflare ↗.
  2. Установка Node.js ↗.

менеджер версий Node.js

Используйте менеджер версий Node, например Volta ↗ или nvm ↗ чтобы избежать проблем с правами доступа и переключать версии Node.js. Wrangler, о котором пойдёт речь далее в этом руководстве, требует версию Node 16.17.0 или более поздней версии.

Кроме того, вам понадобится:

1. Создайте новый проект Worker

Создайте новый проект Worker с помощью Wrangler:

npm create cloudflare@latest -- workers-vpc-app

Для настройки выберите следующие параметры:

Перейдите в каталог проекта:

cd workers-vpc-app

2. Настройте Cloudflare Tunnel

Cloudflare Tunnel создаёт защищённое соединение между вашей частной сетью и Cloudflare. Этот туннель позволяет Workers безопасно обращаться к вашим частным ресурсам. Вы можете создать туннель на виртуальной машине или в контейнере в вашем внешнем облаке или даже на локальном компьютере, если это делается только в рамках этого руководства.

  1. Перейдите в Панель управления Workers VPC ↗ и выберите Tunnels на вкладке.

  2. Выберите Создание чтобы создать новый туннель.

  3. Введите имя туннеля (например, workers-vpc-tunnel) и выберите Сохранить туннель.

  4. Выберите операционную систему и архитектуру. Панель управления покажет инструкции по установке для вашей среды.

  5. Следуйте приведённым командам, чтобы скачать и установить cloudflared, и выполните команду установки сервиса с вашим уникальным токеном.

Панель управления подтвердит успешное подключение туннеля.

Настройка приватной сети для Cloudflare Tunnel

После подключения туннеля убедитесь, что он может обращаться к сервисам, которые должны быть доступны вашим Workers. Туннель нужно установить на машине, способной достичь внутренних ресурсов, которые вы хотите открыть для Workers VPC. Во внешних облаках это может означать настройку Access-Control-Lists, Security Groups или VPC Firewall Rules, чтобы туннель мог обращаться к нужным сервисам.

3. Создайте VPC Service

Теперь, когда туннель запущен, создайте VPC Service, чтобы Workers могли обращаться к вашим внутренним ресурсам:

  1. Перейдите в Панель управления Workers VPC ↗ и выберите Службы VPC на вкладке.

  2. Выберите Создание чтобы создать новый VPC Service.

  3. Введите Имя сервиса для вашего VPC Service (например, my-private-api).

  4. Выберите ваш туннель из Tunnel раскрывающийся список, или выберите Create Tunnel если вам нужно создать новый.

  5. Введите Хост или IP-адрес вашего внутреннего сервиса (например, localhost, internal-api.company.local, или 10.0.1.50).

  6. Настройте Порты. Выберите один из вариантов:

    • Использовать порты по умолчанию для стандартных HTTP (80) и HTTPS (443)
    • Укажите значения портов для указания пользовательских портов HTTP и HTTPS
  7. Настройте DNS-резолвер. Выберите один из вариантов:

    • Использовать туннель как резолвер чтобы использовать встроенное в туннель разрешение DNS
    • Пользовательский резолвер и введите IP-адрес вашего DNS-резолвера (например, 8.8.8.8)
  8. Выберите Create service чтобы создать VPC Service.

В панели управления отобразится новый VPC Service с уникальным Service ID. Сохраните этот Service ID для следующего шага.

Для HTTP-сервиса:

npx wrangler vpc service create my-private-api \
  --type http \
  --tunnel-id <YOUR_TUNNEL_ID> \
  --hostname <YOUR_HOSTNAME>

Для TCP-сервиса (например, базы данных PostgreSQL):

npx wrangler vpc service create my-database \
  --type tcp \
  --tcp-port 5432 \
  --app-protocol postgresql \
  --tunnel-id <YOUR_TUNNEL_ID> \
  --ipv4 <YOUR_IPV4_ADDRESS>

Замените:

  • <YOUR_TUNNEL_ID> с идентификатором туннеля из шага 2
  • <YOUR_HOSTNAME> с хостом вашего внутреннего сервиса (например, internal-api.company.local)
  • <YOUR_IPV4_ADDRESS> с приватным IP-адресом вашего сервиса (например, 10.0.1.50)

Вы также можете:

  • Создавайте сервисы, используя IP-адреса, заменив --hostname <YOUR_HOSTNAME> с --ipv4 <YOUR_IPV4_ADDRESS>, --ipv6 <YOUR_IPV6_ADDRESS>, или оба варианта для конфигурации с двойным стеком
  • Укажите пользовательские порты для HTTP-сервисов, добавив --http-port <PORT> и/или --https-port <PORT> (например, --http-port 8080 --https-port 8443)
  • Задайте режим проверки TLS-сертификата с помощью --cert-verification-mode (verify_full, verify_ca, или disabled)

Команда вернёт ID сервиса. Сохраните его для следующего шага.

Если возникают ошибки доступа, см. Необходимые роли.

4. Настройте Worker

Добавьте привязку VPC Service в файл конфигурации Wrangler:

{
	"$schema": "./node_modules/wrangler/config-schema.json",
	"name": "workers-vpc-app",
	"main": "src/index.ts",
	// Set this to today's date
	"compatibility_date": "2026-08-28",
	"vpc_services": [
		{
			"binding": "VPC_SERVICE",
			"service_id": "<YOUR_SERVICE_ID>"
		}
	]
}
"$schema" = "./node_modules/wrangler/config-schema.json"
name = "workers-vpc-app"
main = "src/index.ts"
# Set this to today's date
compatibility_date = "2026-08-28"

[[vpc_services]]
binding = "VPC_SERVICE"
service_id = "<YOUR_SERVICE_ID>"

Замените <YOUR_SERVICE_ID> с идентификатором службы из шага 3.

5. Напишите код Worker

Обновите ваш Worker, чтобы использовать привязку VPC Service. В следующем примере:

export default {
	async fetch(request, env, ctx): Promise<Response> {
		const url = new URL(request.url);

		// This is a simple proxy scenario.
		// In this case, you will need to replace the URL with the proper protocol (http vs. https), hostname and port of the service.
		// For example, this could be "http://localhost:1111", "http://192.0.0.1:3000", "https://my-internal-api.example.com"
		const targetUrl = new URL(
			`http://<ENTER_SERVICE_HOST>:<ENTER_SERVICE_PORT>${url.pathname}${url.search}`,
		);

		// Create new request with the target URL but preserve all other properties
		const proxyRequest = new Request(targetUrl, {
			method: request.method,
			headers: request.headers,
			body: request.body,
		});

		const response = await env.VPC_SERVICE.fetch(proxyRequest);

		return response;
	},
} satisfies ExportedHandler<Env>;

6. Протестируйте локально

Тестируйте свой Worker локально. Вам нужно использовать удалённые VPC Services с помощью Удалённые привязки Workers как было настроено в вашем wrangler.jsonc файл конфигурации, либо с помощью npx wrangler dev --remote:

npx wrangler dev

Перейдите на http://localhost:8787 чтобы проверить подключение вашего Worker к приватной сети.

7. Развернуть Worker

После завершения тестирования разверните Worker:

npx wrangler deploy

Теперь ваш Worker развёрнут и может безопасно обращаться к ресурсам вашей приватной сети через Cloudflare Tunnel. Если у вас возникают ошибки прав доступа, см. Необходимые роли.

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