Истории успеха наших клиентов — лучшие проекты
Вход/ Регистрация
На главную
25eb9e0a-a5a8-472a-ace7-940b8bd2adf0
Облачные сервисы

DBaaS Operator

TWC DBaaS Operator — это дополнение для Kubernetes, которое позволяет создавать и управлять облачными базами данных напрямую из кластера.

Поддерживаемые базы данных:

Установка

Для установки дополнения перейдите в раздел «Дополнения» в панели управления кластером и выберите «TWC DBaaS Operator».

Scr 20250806 Njjd

В открывшемся окне нажмите кнопку «Установить» и дождитесь завершения установки.

Scr 20250806 Njnp

После завершения установки, убедитесь, что все работает корректно. Для этого выполните команду:

    
kubectl get pod -n tw-dbaas-operator

В выводе должен быть под со статусом Running:

    
NAME READY STATUS RESTARTS AGE tw-dbaas-operator-856f97b959-k5jvp 1/1 Running 0 27m

Оператор создает три ресурса CustomResourceDefinition (CRD):

  • instances.dbaas.timeweb.cloud — управление инстансами DBaaS.
  • databases.dbaas.timeweb.cloud — управление базами данных внутри инстансов.
  • users.dbaas.timeweb.cloud — управление пользователями баз данных.

Использование

Работу с DBaaS через оператор можно разделить на три шага:

  1. Создание инстанса базы данных.
  2. Создание базы данных внутри инстанса.
  3. Создание пользователей.

Создание инстанса

Сперва необходимо создать инстанс — это сама облачная база данных, с заданным типом, версией, конфигурацией и параметрами резервного копирования.

Пример манифеста:

    
apiVersion: dbaas.timeweb.cloud/v1 kind: Instance metadata: name: mysqldbaas spec: type: "mysql" # mysql / redis / postgresql name: "k8smysql" # отображаемое имя в панели version: "8.0" pass_hash_type: "sha2" # только для MySQL (sha2 или native) backups: copy_count: 2 period: "day" enabled: true config: auto_increment_increment: "1" replica_count: 1 # количество реплик. Поддерживается только для MySQL и PostgreSQL. Поддерживаемые значения: 1, 3, 5.   no_external_ip: false instance_size: preset_id: 123

Параметры в блоке config уникальны для каждого типа базы данных. Список доступных параметров можно найти в отдельных статьях:

Подходящий preset_id можно получить при помощи запроса к API:

    
curl -X GET \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $TIMEWEB_CLOUD_TOKEN" \ "https://api.timeweb.cloud/api/v1/presets/dbs"

Для удобства можно использовать команду с фильтрацией и форматированием:

    
curl -sS -H "Authorization: Bearer $TIMEWEB_CLOUD_TOKEN" \ "https://api.timeweb.cloud/api/v1/presets/dbs" \ | jq -r '.databases_presets[] | select(.type=="mysql") | [.id, .description_short, .location, .price] | @tsv' \ | column -t

ID пресета будет указан в первом столбце. При необходимости измените type=="mysql" на нужный тип базы данных.

Создание базы данных

После создания инстанса можно описать базы данных, которые будут в нем размещены.

Пример манифеста:

    
apiVersion: dbaas.timeweb.cloud/v1 kind: Database metadata: name: database-sample spec: database_list: - name: "default_db" description: "" - name: "db0" description: "new db" dbaas_instance: name: "mysqldbaas" namespace: "default"

Поле dbaas_instance должно указывать на соответствующий инстанс.

Создание пользователя

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

Пример манифеста:

    
apiVersion: dbaas.timeweb.cloud/v1 kind: User metadata: name: user-sample spec: user: "user0" passwordSecret: "user0Secret" description: "cool user" host: "192.168.%" permissions: - grants: ["ALTER", "UPDATE", "DELETE", "INSERT"] database: "default_db" - grants: ["SELECT"] database: "db1" dbaas_instance: name: "mysqldbaas" namespace: "default" --- apiVersion: v1 kind: Secret metadata: name: user0Secret type: Opaque data: password: cGFzc3dvcmQxMjM0

Пароль для пользователя хранится в Kubernetes Secret в поле password, закодированном в base64. Создать его можно так:

echo -n 'пароль' | base64

В разделе permissions указываются права пользователя на конкретные базы данных. Права задаются в виде списка SQL-грантов для каждой базы. Список доступных привилегий можно найти в статьях:

Была ли статья полезна?
Ваша оценка очень важна
Пока нет комментариев