Skip to content
На этой странице:

Создание кластера Redis при помощи OpenAPI

Общая информация

Чтобы работать с сервисами облака CloudMTS при помощи API, у вас должны быть созданы:

  1. Учетная запись в облаке CloudMTS. Как зарегистрироваться...
  2. Платежный аккаунт. Подробнее...

Для подключения того или иного сервиса облака на балансе вашего платежного аккаунта должны присутствовать средства в соответствующем объеме. Также вы можете использовать гранты.


Для создания кластера Redis (сервис DBaaS for Redis) потребуются:

  1. Авторизационный токен$TOKEN.

    Все API запросы выполняются от имени пользователя. Токен генерируется для пользователя при выполнении запроса на авторизацию. Также можно использовать токен, созданный для сервисного аккаунта. Подробнее...

    Пример авторизационного токена
    json
    eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIwMmVmY2U2My01Y2YzLTQxOWEtOTllYi1kYzNiNWVkNGM3NzYiLCJleHAiOjE2ODUwMjYxNzcsImlhdCI6MTY4NTAxMTc4OCwidiI6MiwicCI6Im1uKlRyQEx6cDIvU20oSGQpS3p4OXU5WFx1MDAzZUBXNGdCRzJxPXdcdTAwM2V9bmNPeUE2Yz9BUkJBcF4hbmI3XHUwMDNjeGdbJD1xNkFGU0kyLXVCa15IckItMHpqZ2lbOi5dUUIjOU1NUkJve3ZcdTAwMjZieGJ0fUwyNCFVNTpYckRGRlI3QjlzR0wlSF50XnY4UnJVSC86OTNwXWNiLSF9QHUkXVNIVkIkU2JKZ0chP3g6WWhUUDJGIy1zSmJcdTAwM2VrVS5Wb0A5bEN3RElRVVd4L0Eld1NpNlVlRSppY2JPSXVPKXNVMkdyNFVnVCNCXHUwMDNleTJ4d1hNaFQhVXF0RkwzbXNIa312Sl1pdH0_MWVIZmNXc2FpRC9BfUVxWV1uQTYxTjdMISVbKSRGUSMpTFQ9azd0R3pjKzJCPVNlTiRQT0Z6NXpyTkdxYkF6cz8vVTgyZ2NMLVx1MDAzZWNcdTAwM2NyLiNUdEBVMDlkc2l5bnNKOmxZbWFBcTUxMnslbmZZTnMqMFd3R3trKTAvdio_QV5lW14rXHUwMDI2WTZxezp6ckdJaFx1MDAzY083cWFATFx1MDAzY01YW0UrVElFVVBmeSgoanVDS2NQOGNXQUl0XlJpOUcqYk9yIn0.foWauILeaASkOnzCHgaWinGPlj5SNT44xqpQPLFNAY3f-1oUmtWPcmCGeRjMKLYQ2A9ZAOk9ZLaT49oOtjXjVAdY46Ni4MHJOkHtzRksgl9rZHdNwSQbQwTnjbR0sgf2BUaGkdoR3yY3udXYOCGfpbL5nAZKEZoeVyc0fHWtGvy2V9ocjWQiP12hiJhfd2vl1s8gpX4PofP9KaaurpbmTDQ8rfHY1i4u33bU0HtabnkcgmeplU0J_2gFbsBsLpcXszgPeiUAg8ep5JB3A1_PNmz86dcM3m7e223y3KUP3vxlmejDZQFJImvlcL0727JC-_RSRWeUHiyArbjrwyNgowZtbmnsH65ssPTZwoMNhU5X5yVIj_um2EesEd2FIt1R4T56vXeagF2Bln8GRfZLaut06kN2a6i4lWr-JV7xZbeT9n9t58Yyyk6Z7IjwwsDVGOJTPY_jhBP8U4mpFBAo__bjtfi4u6cNgoo6bSrNR0ud9wLTta8aUxqz47bCmjtgmovhTLXWw0pOJmMb7UiBcL3IKNoVSkoiqTJSqArMO72fMquizKXyT4HVghPIt5mgDQOdsxKiZ-2L4dvBW_72U8mkd4VwOAcRwYcM6xfQcko6aPYiaGrAgpvWZ8iRUdFfqaW63V6SSweRcbnU9UwDfUSVZ7i3lZsPqhalLmUEj9c
  2. Идентификатор проекта$PROJECTID.

    Любой сервис в облаке CloudMTS создается в рамках проекта. Вы можете:

  • Создать новый проект при помощи API-запроса.
  • Использовать уже созданный проект (например, тот, который был создан автоматически при регистрации вашей учетной записи в облаке). Его идентификатор можно узнать на дэшборде в консоли управления (правая верхняя часть экрана).

Идентификатор проекта имеет формат UUID, пример: 09b992c3-1223-41e7-bd81-cfeae5f7fb5c.

  1. Идентификатор сетиnetwork_id и идентификатор подсетиsubnetwork_id, а также (опционально) **IP-адрес ** — публичный IP-адрес.

    Для работы кластера Redis нужна выделенная виртуальная сеть и подсеть (а также IP-адрес — опционально). Если у вас уже есть созданные сеть/подсеть/IP-адрес, используйте их. Также вы можете создать новые при помощи API-запросов.

    Идентификаторы сети/подсети/IP-адреса имеют формат UUID.


Последовательность шагов для создания сервиса Redis в облаке CloudMTS через API — следующая:

  1. Авторизуйтесь (опционально; можете использовать токен сервисного аккаунта, если он создан).
  2. Создайте проект (опционально; можете использовать существующий).
  3. Создайте виртуальную сеть (опционально; можете использовать существующую, если она уже создана).
  4. Создайте виртуальную подсеть (опционально; можете использовать существующую, если она уже создана).
  5. Создайте IP-адрес (опционально; нужен только для доступа к кластеру извне облака).
  6. Создайте кластер Redis.

Важно

Каждый API запрос на создание объекта (проект, сеть/подсеть, кластер, топик, пользователь и так далее) должен содержать ключ идемпотентности:

  • ключ в формате UUID передается в HTTP заголовке Idempotency-Key;
  • сгенерировать ключ можно при помощи сторонней библиотеки или онлайн-сервиса, например https://www.uuidgenerator.net/version4;
  • в примерах API запросов ниже значение ключа идемпотентности обозначено как $IDEMPOTENCYKEY;
  • пример ключа идемпотентности — 79b3b7fd-0c15-478a-9431-f212f0464a9e.

Авторизация

  • Если у вас есть токен сервисного аккаунта — пропустите этот шаг.

  • Если у вас нет токена сервисного аккаунта:

    • Авторизуйтесь при помощи запроса POST /iam/v2/tokens — в ответе будет возвращен токен. Используйте его в дальнейших запросах.

Создание проекта

  • Если вы хотите использовать уже созданный проект — пропустите этот шаг.
  • Для создания нового проекта выполните запрос POST /apis/projects/public/v4/projects.

Пример запроса:

bash
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.

Пример запроса:

bash
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.

Пример запроса:

bash
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-адреса

Примечание

Данный шаг необходим только если вам требуется в дальнейшем подключаться к созданному кластеру Redis извне CloudMTS (то есть, из интернета).

  • Если вы хотите использовать уже созданный IP-адрес — пропустите этот шаг.
  • Для создания нового IP-адреса выполните запрос POST /ocs/v1/services.

Пример запроса:

bash
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-запросов;
  • параметры создаваемого кластера.
Параметры кластера

Scenario

ScenarioDescription
standaloneОднохостовый сетап
sentinelRedis Sentinel

Disk Type

Disk TypeMin IOPS
ssd.basic200
ssd.fast500
ssd.ultra1000
ssd.ultra-plus5000

Redis version

Redis version
7.0.5
6.2.7

Пример запроса:

bash
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-redis",
      "regionCode": "msk"
},
    "kind": "storage",
    "metadata": {
        "description": "redis-openapi",
        "title": "redis-openapi-test"
    },
    "projectId": "'$PROJECTID'",
    "spec": {
      "mts.extensions.dbaas_create_appliance": {
        "name": "redis-cluster-cur6w",
        "instance_count": 1,
        "network_id": "e7339beb-33d7-49da-8e24-3fda23638aad",
        "subnetwork_id": "5b5008d0-ca17-417a-91ba-c77fee74e860",
        "persistence": true,
        "scenario": "standalone",
        "disk_type": "ssd.basic",
        "disk_size": {
          "unit": "GiB",
          "value": 30
        },
        "user_password": "$3cr3t",
        "user_name": "deadbeef",
        "total_cpu": 1,
        "total_ram": {
        "unit": "GiB",
        "value": 4
      },
      "description": "some descr from api",
      "appliance_version_id": "7.0.5"
    },
    "occi.storage.size": 100
  },
  "zoneCode": "msk-avntg"
}'

В примере запроса выше:

  • при помощи параметра "network_id" и subnetwork_id указываются ID созданных сети/подсети.

Создание кластера с публичным IP-адресом

Если вам требуется в дальнейшем подключаться к созданному кластеру Redis извне CloudMTS, то помимо параметров кластера в примере выше, дополнительно укажите публичный IP-адрес для подключения к кластеру:
"white_host": "<IPv4 адрес в формате a.b.c.d>"

Пример запроса с публичным IP-адресом
bash
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-redis",
      "regionCode": "msk"
},
    "kind": "storage",
    "metadata": {
        "description": "redis-openapi",
        "title": "redis-openapi-test"
    },
    "projectId": "'$PROJECTID'",
    "spec": {
      "mts.extensions.dbaas_create_appliance": {
        "name": "redis-cluster-cur6w",
        "instance_count": 1,
        "network_id": "e7339beb-33d7-49da-8e24-3fda23638aad",
        "subnetwork_id": "5b5008d0-ca17-417a-91ba-c77fee74e860",
        "public_ip":"10.21.196.33",
        "persistence": true,
        "scenario": "standalone",
        "disk_type": "ssd.basic",
        "disk_size": {
          "unit": "GiB",
          "value": 30
        },
        "user_password": "$3cr3t",
        "user_name": "deadbeef",
        "total_cpu": 1,
        "total_ram": {
        "unit": "GiB",
        "value": 4
      },
      "description": "some descr from api",
      "appliance_version_id": "7.0.5"
    },
    "occi.storage.size": 100
  },
  "zoneCode": "msk-avntg"
}'

Процесс подключения к созданному кластеру описан в данном разделе документации.