<div><img src="https://top-fwz1.mail.ru/counter?id=3548135;js=na" style="position:absolute;left:-9999px;" alt="Top.Mail.Ru" /></div>
Публичное облако на базе VMware с управлением через vCloud Director
Вход / Регистрация
На главную
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-грантов для каждой базы. Список доступных привилегий можно найти в статьях:

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