Как развернуть хранилище hashicorp в openshift без использования постоянных томов (PV)?
Вы можете использовать Бэкэнд хранения в памяти , как упоминалось здесь . Итак, ваша конфигурация хранилища выглядит примерно так:
$cat config.hcl
disable_mlock = true
storage "inmem" {}
listener "tcp" {
address = "0.0.0.0:8200"
tls_disable = 0
tls_cert_file = "/etc/service/vault-server/vault-server.crt"
tls_key_file = "/etc/service/vault-server/vault-server.key"
}
ui = true
max_lease_ttl = "7200h"
default_lease_ttl = "7200h"
api_addr = "http://127.0.0.1:8200"
Но при этом данные / секреты не являются постоянными .
ДругойМожно добавить путь к файлу в хранилище , чтобы все зашифрованные секреты сохранялись по указанному пути.
, поэтому теперь ваша конфигурация меняется на
storage "file" {
path = "ANY-PATH"
}
ТОЧКИ, КОТОРЫЕ НЕОБХОДИМО ОТМЕТИТЬ ЗДЕСЬ:
- Определенный путь должен иметь разрешения на запись / чтение данных / секретов
- Это может быть любой путь, который находится внутри контейнера , просто чтобы избежать зависимости от постоянного объема.
Но В чем проблема с этой моделью ? Когда контейнер перезапускается, все данные будут потеряны, поскольку контейнер не хранит данные .
Нет высокой доступности - бэкэнд файловой системы не поддерживает высокую доступность.
Итак Каким должно быть идеальное решение ? Все, что делает наши данные высокодоступными , что достигается использованием выделенного внутреннего хранилища с использованием базы данных.
Для простоты, давайте возьмем PostgreSQL в качестве внутреннего хранилища.
storage "postgresql" {
connection_url = "postgres://user123:secret123!@localhost:5432/vault"
}
, так что теперь конфигурация выглядит примерно так:
$ cat config.hcl
disable_mlock = true
storage "postgresql" {
connection_url = "postgres://vault:vault@vault-postgresql:5432/postgres?sslmode=disable"
}
listener "tcp" {
address = "0.0.0.0:8200"
tls_disable = 0
tls_cert_file = "/etc/service/vault-server/vault-server.crt"
tls_key_file = "/etc/service/vault-server/vault-server.key"
}
ui = true
max_lease_ttl = "7200h"
default_lease_ttl = "7200h"
api_addr = "http://127.0.0.1:8200"
Так что выбор внутреннего хранилища поможет вам сохранить ваши данныедаже если контейнер перезапускается .
Поскольку вы конкретно ищете решение в openshift , , создайте контейнер postgresSQL, используя предоставленный шаблон , и сделайте vault указать егок нему, используя имя службы, как объяснено в вышеупомянутом config.hcl
Надеюсь, это поможет!