Перейти к основному содержимому

Workflow

Настройка доступа и сети

Этот workflow охватывает основные control points до и после provisioning: project SSH keys, membership в private network, internal addressing, public IP resources и внешний доступ через forwarding rules.

Создайте переиспользуемый project SSH key

Если клиент централизованно управляет SSH-доступом, создайте project-level ключи один раз и переиспользуйте их identifiers в сценариях создания VM.

curl --request POST \
  --url 'https://api.zennohosting.com/projects/{projectId}/ssh-keys' \
  --header 'Authorization: Bearer <token>' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{
"name": "workstation-key",
"publicKey": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA..."
}'

Создайте private network и подключите VM

Начинайте с project network resource, затем подключайте VM к этой сети. При создании subnet сети назначается платформой и не передаётся вручную.

curl --request POST \
  --url 'https://api.zennohosting.com/projects/{projectId}/networks' \
  --header 'Authorization: Bearer <token>' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{
"name": "backend-private"
}'
  1. 1

    Создайте или выберите project SSH key

    Project-level SSH keys позволяют стандартизировать access inputs между разными create VM requests.

  2. 2

    Создайте network resource

    Используйте стабильное имя сети, а итоговую subnet читайте уже из network resource вместо того, чтобы пытаться задавать её вручную при создании.

  3. 3

    Подключите VM к сети

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

  4. 4

    Создайте или проверьте project public IP resources

    Public exposure flows строятся вокруг publicIpId. Либо сначала создайте public IP, либо запросите список public IP проекта и выберите нужный ресурс.

  5. 5

    Создайте forwarding rules для внешнего доступа

    Каждое правило сопоставляет внешний порт и протокол с VM внутри project network.

Создайте public IP resource

Если у проекта ещё нет reusable public IP, сначала создайте его. Это отдельный project resource, а не side effect создания private network.

curl --request POST \
  --url 'https://api.zennohosting.com/projects/{projectId}/public-ips' \
  --header 'Authorization: Bearer <token>' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{
"tariffId": "00000000-0000-0000-0000-000000000000"
}'

Создайте правило port forwarding

Это правило привязывает внешний порт существующего public IP проекта к выбранной VM и внутреннему service port.

curl --request POST \
  --url 'https://api.zennohosting.com/projects/{projectId}/public-ips/{publicIpId}/port-forwards' \
  --header 'Authorization: Bearer <token>' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{
"vmId": "00000000-0000-0000-0000-000000000000",
"mode": "SpecificPorts",
"protocol": "Tcp",
"externalPort": 8080,
"internalPort": 80
}'

Примечание по моделированию

Product screens могут визуально объединять public exposure и network management, но каноническая API-модель остаётся разделённой: reusable SSH keys, private network attachment и public IP exposure — это три разные области, которые пересекаются только на уровне workflow.

Связанные endpoint