Создание кластера Kafka при помощи OpenAPI
Общая информация
Заголовок раздела «Общая информация»Чтобы работать с сервисами облака MWS при помощи API, у вас должны быть созданы:
- Учетная запись в облаке MWS. Как зарегистрироваться…
- Платежный аккаунт. Подробнее…
Для подключения того или иного сервиса облака на балансе вашего платежного аккаунта должны присутствовать средства в соответствующем объеме. Также вы можете использовать гранты.
Для создания кластера Kafka (сервис Managed Kafka) потребуются:
Авторизационный токен —
$TOKEN.Все API запросы выполняются от имени пользователя. Токен генерируется для пользователя при выполнении запроса на авторизацию. Также можно использовать токен, созданный для сервисного аккаунта. Подробнее…
Идентификатор проекта —
$PROJECTID.Любой сервис в облаке MWS создается в рамках проекта. Вы можете:
- Создать новый проект при помощи API-запроса.
- Использовать уже созданный проект (например, тот, который был создан автоматически при регистрации вашей учетной записи в облаке). Его идентификатор можно узнать на Дашборде в консоли управления (правая верхняя часть экрана).
Идентификатор проекта имеет формат UUID, пример:
09b992c3-1223-41e7-bd81-cfeae5f7fb5c.Идентификатор сети —
network_idи идентификатор подсети —subnetwork_id, а также (опционально) IP-адрес — публичный IP-адрес.Для работы кластера Kafka нужна выделенная виртуальная сеть и подсеть (а также IP-адрес — опционально). Если у вас уже есть созданные сеть/подсеть/IP-адрес, используйте их. Также вы можете создать новые при помощи API-запросов.
Идентификаторы сети/подсети/IP-адреса имеют формат UUID.
Последовательность шагов для создания сервиса Kafka в облаке MWS через API — следующая:
- Авторизуйтесь (опционально; можете использовать токен сервисного аккаунта, если он создан).
- Создайте проект (опционально; можете использовать существующий).
- Создайте виртуальную сеть (опционально; можете использовать существующую, если она уже создана).
- Создайте виртуальную подсеть (опционально; можете использовать существующую, если она уже создана).
- Создайте IP-адрес (опционально; нужен только для доступа к кластеру извне облака).
- Создайте кластер Kafka.
- Создайте топик.
- Создайте пользователя кластера.
Авторизация
Заголовок раздела «Авторизация»Если у вас есть токен сервисного аккаунта — пропустите этот шаг.
Если у вас нет токена сервисного аккаунта:
- Авторизуйтесь при помощи запроса
POST /iam/v2/tokens— в ответе будет возвращен токен. Используйте его в дальнейших запросах.
Создание проекта
Заголовок раздела «Создание проекта»- Если вы хотите использовать уже созданный проект — пропустите этот шаг.
- Для создания нового проекта выполните запрос
POST /apis/projects/public/v4/projects.
Пример запроса:
curl --location --request POST 'https://gateway.cloud.mts.ru/apis/projects/public/v4/projects' \--header "Idempotency-Key: $IDEMPOTENCYKEY" \--header 'Content-Type: application/json' \--header "Authorization: Bearer $TOKEN" \--data '{ "name": "Test OpenAPI", "description": "Проект для тестирования OpenAPI"}'Создание сети
Заголовок раздела «Создание сети»- Если вы хотите использовать уже созданную виртуальную сеть — пропустите этот шаг.
- Для создания новой сети выполните запрос
POST /ocs/v1/services.
Пример запроса:
curl --location --request POST 'https://gateway.cloud.mts.ru/ocs/v1/services' \--header "Idempotency-Key: $IDEMPOTENCYKEY" \--header 'Content-Type: application/json' \--header "Authorization: Bearer $TOKEN" \--data '{ "platform": { "productCode": "network", "regionCode": "msk" }, "kind": "network", "metadata": { "description": "test OpenAPI network", "title": "openapi-network" }, "projectId": "'$PROJECTID'", "spec": { "mts.extensions.network": { "bandwidth_mbps": 100, "default_gfw_rule_action": "allow" } }, "zoneCode": "msk-avntg"}'Создание подсети
Заголовок раздела «Создание подсети»- Если вы хотите использовать уже созданную подсеть — пропустите этот шаг.
- Для создания новой подсети выполните запрос
POST /ocs/v1/services.
Пример запроса:
curl --location --request POST 'https://gateway.cloud.mts.ru/ocs/v1/services' \--header "Idempotency-Key: $IDEMPOTENCYKEY" \--header 'Content-Type: application/json' \--header "Authorization: Bearer $TOKEN" \--data '{ "platform": { "productCode": "network", "regionCode": "msk" }, "kind": "subnet", "metadata": { "description": "test OpenAPI subnetwork", "title": "openapi-subnetwork" }, "parentBinding": { "targetId": "8d114c29-d579-41b3-a4d9-7fd0ac20a0d3" }, "projectId": "'$PROJECTID'", "spec": { "mts.extensions.subnet": { "cidr": "10.100.15.0/24" } }, "zoneCode": "msk-avntg"}'В примере выше:
- в параметре
"targetId": "8d114c29-d579-41b3-a4d9-7fd0ac20a0d3"указывается ID сети, в которой создается подсеть.
Создание IP-адреса
Заголовок раздела «Создание IP-адреса»- Если вы хотите использовать уже созданный IP-адрес — пропустите этот шаг.
- Для создания нового IP-адреса выполните запрос
POST /ocs/v1/services.
Пример запроса:
curl --location --request POST 'https://gateway.cloud.mts.ru/ocs/v1/services' \--header "Idempotency-Key: $IDEMPOTENCYKEY" \--header 'Content-Type: application/json' \--header "Authorization: Bearer $TOKEN" \--data '{ "platform": { "productCode": "network", "regionCode": "msk" }, "kind": "ip", "metadata": { "description": "test OpenAPI ip", "title": "openapi-ip-address" }, "parentBinding": { "targetId": "8d114c29-d579-41b3-a4d9-7fd0ac20a0d3" }, "projectId": "'$PROJECTID'", "spec": {}, "zoneCode": "msk-avntg"}'В примере выше:
- в параметре
"targetId": "8d114c29-d579-41b3-a4d9-7fd0ac20a0d3"указывается ID сети, в которой создается IP-адрес.
Создание кластера
Заголовок раздела «Создание кластера»Выполняется запросом POST /ocs/v1/services, в котором необходимо передать:
prodjectId,network_id,subnetwork_id— их можно взять из ответов предыдущих API-запросов;- параметры создаваемого кластера.
Пример запроса:
curl --location --request POST 'https://gateway.cloud.mts.ru/ocs/v1/services' \--header 'Content-Type: application/json' \--header 'Accept: application/json' \--header "Idempotency-Key: $IDEMPOTENCYKEY" \--header "Authorization: Bearer $TOKEN" \--data-raw '{ "platform": { "productCode": "mts-kafka", "regionCode": "msk" }, "kind": "compute", "metadata": { "description": "kafka-openapi", "title": "kafka-openapi-test" }, "projectId": "'$PROJECTID'", "spec": { "mts.extensions.kafka": { "instance_count": 1, "instance_cpu_utilization": "low", "instance_disk_size": 50, "instance_disk_type": "ssd.basic", "instance_type": "c1.medium", "kafka_version": "3.1.0", "network_id": "8d114c29-d579-41b3-a4d9-7fd0ac20a0d3", "subnetwork_cidr": "10.100.15.0/24", "subnetwork_id": "16eddc2e-97a5-4960-b870-ee5a7797cb59" } }, "zoneCode": "msk-avntg"}'В примере запроса выше:
- при помощи параметра
"network_id","subnetwork_cidr"иsubnetwork_idуказываются ID созданных сети/подсети.
Создание кластера с публичным IP-адресом
Заголовок раздела «Создание кластера с публичным IP-адресом»Если вам требуется в дальнейшем подключаться к созданному кластеру Kafka извне MWS, то помимо параметров кластера в примере выше, дополнительно укажите публичный IP-адрес для подключения к кластеру:
"white_host": "<IPv4 адрес в формате a.b.c.d>"
Создание топика
Заголовок раздела «Создание топика»Выполняется запросом POST /ocs/v1/services, параметры топика передаются в теле запроса.
Пример запроса:
curl --location --request POST 'https://gateway.cloud.mts.ru/ocs/v1/services' \--header 'Content-Type: application/json' \--header 'Accept: application/json' \--header "Idempotency-Key: $IDEMPOTENCYKEY" \--header "Authorization: Bearer $TOKEN" \--data-raw '{ "platform": { "productCode": "mts-kafka", "regionCode": "msk" }, "kind": "topic", "metadata": { "description": "topic-1", "title": "topic-1" }, "parentBinding": { "targetId": "fb1f4d31-114e-4422-86d5-7c1c0bb6ed18" }, "projectId": "09b992c3-1223-41e7-bd81-cfeae5f7fb5c", "spec": { "mts.extensions.topic":{ "name":"topic-1", "num_partitions":30, "replication_factor":3, "compression_type":"producer", "max_message_bytes":1048588, "min_insync_replicas":2, "cleanup_policy":"delete", "min_compaction_lag_ms":"0", "max_compaction_lag_ms":"9223372036854775807", "delete_retention_ms":"86400000", "retention_bytes":"-1", "retention_ms":"604800000" } }, "zoneCode": "msk-avntg"}'В примере выше:
- в параметре
"targetId": "fb1f4d31-114e-4422-86d5-7c1c0bb6ed18"указывается ID созданного кластера Kafka.
Создание пользователя
Заголовок раздела «Создание пользователя»Выполняется запросом POST /ocs/v1/services, параметры учетной записи пользователя передаются в теле запроса.
Пример запроса:
curl --location --request POST 'https://gateway.cloud.mts.ru/ocs/v1/services' \--header 'Content-Type: application/json' \--header 'Accept: application/json' \--header "Idempotency-Key: $IDEMPOTENCYKEY" \--header "Authorization: Bearer $TOKEN" \--data-raw '{ "platform": { "productCode": "mts-kafka", "regionCode": "msk" }, "kind": "user", "metadata": { "description": "user-1", "title": "user-1" }, "parentBinding": { "targetId": "fb1f4d31-114e-4422-86d5-7c1c0bb6ed18" }, "projectId": "09b992c3-1223-41e7-bd81-cfeae5f7fb5c", "spec": { "mts.extensions.user":{ "acls":[{ "pattern":"*", "pattern_type":"literal", "operation":"rw" }], "name":"user-1", "password":"password-1", "groups_acls":[{ "pattern":"*", "pattern_type":"literal" }] } }, "zoneCode": "msk-avntg"}'В примере выше:
- в параметре
"targetId": "fb1f4d31-114e-4422-86d5-7c1c0bb6ed18"указывается ID созданного кластера Kafka.
Процесс подключения к созданному кластеру описан в данном разделе документации.