Требования к API управления контейнерами клиентов
Cписок запросов к реализации:
1) Создать клиента
2) Получить статус контейнера
3) Получить конфиг клиента
4) Изменить конфиг клиента
5) Изменить статус контейнера
6) Получить список клиентов
Требования по безопасности:
Доступ только внутри сети. Дополнительных требований по безопасности (авторизация и др.) не предусматривается
1. Создание клиента
Выполнение запроса включает в себя:
Операция |
Запрос k8s |
Создание базы clickhouse |
POST {{api-root-url}}/apis/batch/v1/namespaces/{{namespace-id}}/jobs |
Создание базы postgres |
POST {{api-root-url}}/apis/batch/v1/namespaces/{{namespace-id}}/jobs |
Создние конфигурации |
POST {{api-root-url}}/api/v1/namespaces/{{namespace-id}}/configmaps |
Создание закрытого ключа среды клиента |
POST {{api-root-url}}/api/v1/namespaces/{{namespace-id}}/secrets |
Создание сервиса |
POST {{api-root-url}}/api/v1/namespaces/{{namespace-id}}/services |
Создание записи ingress |
POST {{api-root-url}}/apis/networking.k8s.io/v1/namespaces/{{namespace-id}}/ingresses |
Создание развертывания |
POST {{api-root-url}}/apis/apps/v1/namespaces/{{namespace-id}}/deployments |
К верхней табличке: Создание базы clickhouse и Создание базы postgres Глеб описал что не нужно (нужно обсудить перед реализацией)
Входные параметры:
Параметр |
Описание |
api_root_url |
Общий параметр. |
namespace_id |
Общий параметр. [lms-dev, lms-prod] |
client_id |
Общий параметр. Нужен в каждом запросе. Формируется системой по шаблону C<Номер среды> |
settings |
Массив настроек клиента. Содержит в себе структуры с полями name, value. |
Выходные параметры:
Параметр |
Описание |
code |
Код выполнения. 0 – выполнено без ошибок. Коды отличные от нуля – не выполнено, в результате выполнения ошибка |
message |
Описание выполнения запроса |
client_id |
Идентификатор созданного клиента. Можно не передавать, если результат не 0 |
namespace_id |
Идентификатор пространства имен, созданного клиента. Можно не передавать, если результат не 0 |
Пример текста запроса:
{
"api_root_url":"https://rancher.rarus.cloud/k8s/clusters/c-m4hlh/",
"namespace_id":"lms-dev",
"client_id":"C228",
"settings":[
{
"name":"clickhouse_host",
"value":"10.66.139.55"
},
{
"name":"clickhouse_admin_user",
"value":"default"
},
{
"name":"clickhouse_admin_password",
"value":"ABWsBh+Q"
},
{
"name":"clickhouse_user_password",
"value":"clickhousepass"
},
{
"name":"sms4b_passcode_lifetime_seconds",
"value":"120"
},
{
"name":"sms4b_sender",
"value":"1C-RARUS"
}
]
}
Пример текста ответа:
{
"code":0,
"message":"Операция выполнена успешно",
"client_id":"C228",
"namespace_id":"lms-dev"
}
2. Получить статус контейнера
В результате запроса нам нужно получить статус контейнера клиента.
Выполнение запроса включает в себя:
Операция |
Запрос k8s |
Мониторинг pod-а |
{{api-root-url}}/api/v1/namespaces/{{namespace-id}}/pods?labelSelector=app={{client-id}}-lms Но присылает он не только клиентов, нужно их фильтровать. |
Входные параметры:
Параметр |
Описание |
api_root_url |
https://rancher.rarus.cloud/k8s/clusters/c-m4hlh/ |
namespace_id |
[lms-dev, lms-prod] |
client_id |
Формируется системой по шаблону C<Номер среды> |
Выходные параметры:
Параметр |
Описание |
сode |
Код выполнения. 0 – выполнено без ошибок. Коды отличные от нуля – не выполнено, в результате выполнения ошибка |
message |
Описание выполнения запроса |
status |
Можно достать статус контейнера. На основании статусов k8s |
replicas |
0,1 (выключена/включена) |
Пример текста запроса:
{
"api_root_url":"https://rancher.rarus.cloud/k8s/clusters/c-m4hlh/",
"namespace_id":"lms-dev",
"client_id":"C228"
}
Пример текста ответа:
{
"code":0,
"message":"Операция выполнена успешно",
"status":"Running",
"replicas":"1"
}
3. Получить конфиг клиента
В результате запроса нам нужно получить конфиг клиента.
Выполнение запроса включает в себя:
Операция |
Запрос k8s |
Получить конфиг |
{{api-root-url}}//api/v1/namespaces//{{namespace-id}}/configmaps/lms-config-[ client-id]' |
Входные параметры:
Параметр |
Описание |
api_root_url |
https://rancher.rarus.cloud/k8s/clusters/c-m4hlh/ |
namespace_id |
[lms-dev, lms-prod] |
client_id |
Формируется системой по шаблону C<Номер среды> |
Выходные параметры:
Параметр |
Описание |
code |
Код выполнения. 0 – выполнено без ошибок. Коды отличные от нуля – не выполнено, в результате выполнения ошибка |
message |
Описание выполнения запроса |
settings |
Массив настроек. Где настройка это структура с полями name,value |
+ Будем ли тут явно получать clickhouse/postgres? Нужно ли присылать пароли как ******?
Пример текста запроса:
{
"api_root_url":"https://rancher.rarus.cloud/k8s/clusters/c-m4hlh/",
"namespace_id":"lms-dev",
"client_id":"C228"
}
Пример текста ответа:
{
"code":0,
"message":"Операция выполнена успешно",
"settings":[
{
"name":"keys_token_ttl_hours",
"value":"8"
},
{
"name":"sms4b_sender",
"value":"1C-RARUS"
}
]
}
4. Изменить конфиг клиента
В результате запроса нам нужно изменить конфиг клиента. В k8s PUT для полной замены или PATCH для замены значений.
Выполнение запроса включает в себя:
Операция |
Запрос k8s |
Изменить конфигурацию |
POST {{api-root-url}}/api/v1/namespaces/{{namespace-id}}/configmaps/lms-config{{client-id}} |
Входные параметры:
Параметр |
Описание |
api_root_url |
https://rancher.rarus.cloud/k8s/clusters/c-m4hlh/ |
namespace_id |
[lms-dev, lms-prod] |
client_id |
Формируется системой по шаблону C<Номер среды> |
settings |
Массив настроек. Где настройка это структура с полями name,value |
+ Будем ли тут явно передавать clickhouse/postgres? или как то отдельно присылать
Выходные параметры:
Параметр |
Описание |
code |
Код выполнения. 0 – выполнено без ошибок. Коды отличные от нуля – не выполнено, в результате выполнения ошибка |
message |
Описание выполнения запроса |
Пример текста запроса:
{
"api_root_url":"https://rancher.rarus.cloud/k8s/clusters/c-m4hlh/",
"namespace_id":"lms-dev",
"client_id":"C228",
"settings":[
{
"name":"keys_token_ttl_hours",
"value":"8"
},
{
"name":"sms4b_sender",
"value":"1C-RARUS"
}
]
}
Пример текста ответа:
{
"code":0,
"message":"Операция выполнена успешно"
}
5. Изменить статус контейнера
В результате запроса нам нужно включить/выключить контейнер клиента.
Выполнение запроса включает в себя:
Операция |
Запрос k8s |
Включить/отключить клиента |
PATCH {{api-root-url}}//apis/apps/v1/namespaces//{{namespace-id}}/deployments/lms-deployment-{{client-id}}' --header 'Content-Type: application/strategic-merge-patch+json' --header 'Accept: application/json' --header 'Authorization: Bearer ••••••' --data '{ "spec": { "replicas": 0 // менять тут 0/1 } }' |
Входные параметры:
Параметр |
Описание |
api_root_url |
https://rancher.rarus.cloud/k8s/clusters/c-m4hlh/ |
namespace_id |
[lms-dev, lms-prod] |
client_id |
Формируется системой по шаблону C<Номер среды> |
operation |
0, 1 |
Выходные параметры:
Параметр |
Описание |
code |
Код выполнения. 0 – выполнено без ошибок. Коды отличные от нуля – не выполнено, в результате выполнения ошибка |
message |
Описание выполнения запроса |
Пример текста запроса:
{
"api_root_url":"https://rancher.rarus.cloud/k8s/clusters/c-m4hlh/",
"namespace_id":"lms-dev",
"client_id":"C228",
"operation":"0"
}
Пример текста ответа:
{
"code":0,
"message":"Операция выполнена успешно"
}
6. Получить список клиентов
В результате запроса нам нужно получить список клиентов.
Выполнение запроса включает в себя:
Операция |
Запрос k8s |
Получить список клиентов |
{{api-root-url}}/api/v1/namespaces/{{namespace-id}}/pods, но нужно или фильтровать или добавлять метку со стороны Глеба. Так же там возвращается очень подробная инфа по клиенту, но нам нужно совсем немного, возможно как то можно скорректировать поведение со стороны Глеба
|
Входные параметры:
Параметр |
Описание |
api_root_url |
https://rancher.rarus.cloud/k8s/clusters/c-m4hlh/ |
namespace_id |
[lms-dev, lms-prod] |
Выходные параметры:
Параметр |
Описание |
code |
Код выполнения. 0 – выполнено без ошибок. Коды отличные от нуля – не выполнено, в результате выполнения ошибка |
message |
Описание выполнения запроса |
clients |
Массив структур клиентов. Включает в себя client-id, namespace-id, status (из запроса 2), replicas (из запроса 2) |
Пример текста запроса:
{
"api_root_url":"https://rancher.rarus.cloud/k8s/clusters/c-m4hlh/",
"namespace_id":"lms-dev"
}
Пример текста ответа:
{
"code":0,
"message":"Операция выполнена успешно",
"clients":[
{
"client_id":"C228",
"namespace_id":"lms-dev",
"status":"Running",
"replicas":"1"
},
{
"client_id":"C229",
"namespace_id":"lms-prod",
"status":"Running",
"replicas":"1"
}
]
}
No Comments