Вы можете создавать кластеры баз данных, состоящие из одной или нескольких баз выбранного типа СУБД.
Панель управления
Создать кластер баз данных можно в панели timeweb.cloud/my в разделе «Базы данных».
Нажмите «Добавить» и укажите параметры создаваемой базы:
Изменить выбранную БД или ее версию будет невозможно.
Выберите регион размещения кластера. Обратите внимание, что создание кластера с репликацией возможно только в BGP-сети и в следующих локациях: Санкт-Петербург, Москва и Нидерланды.
Конфигурацию можно будет изменить в любой момент. Уменьшить конфигурацию невозможно.
Для баз данных MySQL и PostgreSQL доступно создание кластера с репликацией. Вы можете указать количество реплик при настройке конфигурации: 3 или 5. Изменить количество реплик после создания кластера будет невозможно.
Цена за кластер с репликацией рассчитывается как количество реплик * стоимость одной ноды.Нажмите «Заказать», и вы сможете начать работу с базой через пару минут.
CLI
Для работы у вас должен быть установлен интерфейс командной строки Timeweb Cloud.
twc db create --help
twc db list-presets
Можно отфильтровать пресеты по типу БД с помощью type
. Например, чтобы получить только пресеты MySQL:
twc db list-presets -f type:mysql
twc db create --name db-dev --type mysql8 --login app --preset-id 327
Далее twc
предложит ввести пароль для базы данных. Вместо интерактивного ввода вы можете использовать опцию --password
и ввести пароль прямо в командной строке (может быть небезопасно).
Команда выше создаст инстанс СУБД MySQL 8 db-dev
с пользователем app
. Имя базы данных для подключения будет default_db
.
Получить все параметры подключения можно с помощью команды ниже, заменив 123456
на ваш ID инстанса СУБД:
twc db get -o yaml 123456
Параметры базы данных можно будет изменить в дальнейшем или сразу указать их при создании базы, например:
twc db create --name db-dev --type mysql8 --login app --preset-id 327 --param max_connections=200 --param max_allowed_packet=64M
Базе будет выдан публичный IP-адрес, который будет доступен в панели управления. Отключить доступ по публичному IP, если это потребуется, вы сможете в настройках базы после ее создания.
API
Для создания кластера базы данных воспользуйтесь методом createDatabaseCluster. Отправьте POST-запрос на /api/v1/databases
и передайте в нем параметры создаваемого кластера.
Terraform
Дальнейшее описание предполагает, что у вас уже установлен Terraform, настроен провайдер Timeweb Cloud и инициализирован проект (шаги 1–4 этой инструкции).
Тарифы баз данных можно получить через API: https://api.timeweb.cloud/api/v1/presets/dbs
Например, с помощью параметров ниже мы создадим следующие сущности:
data "twc_database_preset" "preset" {
location = "ru-1"
type = "mysql"
disk = 20 * 1024
ram = 2 * 1024
}
#Создаем приватную сеть
resource "twc_vpc" "example-vpc" {
name = "Example VPC"
description = "Some example VPC"
subnet_v4 = "192.168.0.0/24"
location = "ru-1"
}
#Создаем кластер
resource "twc_database_cluster" "my-cluster" {
name = "My Cluster"
type = "mysql5"
preset_id = data.twc_database_preset.preset.id
network {
id = twc_vpc.example-vpc.id
}
is_external_ip = true
}
#Создаем базу данных
resource "twc_database_instance" "db-instance" {
cluster_id = twc_database_cluster.my-cluster.id
name = "database1"
}
#Создаем еще одну базу данных
resource "twc_database_instance" "second-db-instance" {
cluster_id = twc_database_cluster.my-cluster.id
name = "database2"
}
#Создаем пользователя с доступом ко всем БД
resource "twc_database_user" "test-user-2" {
cluster_id = twc_database_cluster.my-cluster.id
login = "admin"
password = "strongpassword1"
privileges = ["SELECT", "INSERT", "UPDATE", "DELETE"]
}
#Создаем пользователя с доступом к конкретной базе
resource "twc_database_user" "test-user" {
cluster_id = twc_database_cluster.my-cluster.id
login = "newuser"
password = "userpassword1"
instance {
instance_id = twc_database_instance.second-db-instance.id
privileges = ["SELECT", "INSERT", "UPDATE", "DELETE"]
}
}
terraform validate
Если в конфигурационном файле есть ошибки, Terraform сообщит о них.
terraform plan
Terraform выведет информацию о создаваемых ресурсах.
terraform apply
Приведите пожалуйста пример как создать redis через teraform. Подход кластер + инстанс + пользователь как для postgres, как я вижу не подходит. Инстанс как я понимаю создаётся сразу вместе с кластером.
Добрый день!
Да, создание инстанса для Redis не подразумевается.
Создать кластер Redis через Terraform действительно не удается 🤔 Мы передали информацию коллегам, чтобы это исправить, но по срокам решения пока сориентировать не сможем. Спасибо, что обратили внимание!
Как получить хост базы данных после создания через twc_database_instance для использования в k8s кластере?
Добрый день!
Для получения IP-адреса хоста базы данных, который можно использовать для подключения к базе данных в k8s, вы можете воспользоваться выходными переменными (output) в Terraform.
Добавьте следующий блок в ваш .tf-файл:
Где
my-cluster
— это имя вашего кластера.Затем выполните команду
terraform apply
. После успешного выполнения вы сможете получить IP-адрес базы данных командой:или с использованием опции для вывода чистого значения:
Этот IP-адрес вы можете передать в переменные окружения или конфигурационные файлы в Kubernetes для настройки подключения к базе данных.