развернуть хранилище hashicorp без постоянного хранилища в openshift - PullRequest
0 голосов
/ 24 октября 2019

Как развернуть хранилище hashicorp в openshift без использования постоянных томов (PV)?

В кластере openshift как обычный пользователь (не администратор кластера) необходимо развернуть сервер хранилища. Я следовал по URL , но в нем есть постоянные тома (/ vault / file) в файле vault.yaml, что требует разрешения моей учетной записи для создания постоянного контейнера, но у меня недостаточно прав для моей учетной записи. поэтому я удалил пути монтирования PV в vault-config.json, как показано ниже, но я вижу следующую ошибку.

{"backend": 
    {"file": 
        {"path": "/tmp/file"}
    }, 
...
...
}

Возможно ли создать сервер хранилища без PV, как при использовании локального файлапуть (/ tmp / file) в качестве внутреннего хранилища для обычного пользователя?

Какой альтернативный способ развертывания хранилища в openshift без PV для развертывания хранилища hashicorp?

Ниже приведена ошибка при запускес фото,

--> Scaling vault-1 to 1
-->  FailedCreate: vault-1 Error creating: pods "vault-1-" is forbidden: unable to validate against any security context constraint: [spec.containers[0].securityContext.privileged: Invalid value: true: Privileged containers are not allowed]
error: update acceptor rejected vault-1: pods for rc 'dev-poc-environment/vault-1' took longer than 600 seconds to become available

1 Ответ

1 голос
/ 31 октября 2019

Как развернуть хранилище 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"
}

ТОЧКИ, КОТОРЫЕ НЕОБХОДИМО ОТМЕТИТЬ ЗДЕСЬ:

  1. Определенный путь должен иметь разрешения на запись / чтение данных / секретов
  2. Это может быть любой путь, который находится внутри контейнера , просто чтобы избежать зависимости от постоянного объема.

Но В чем проблема с этой моделью ? Когда контейнер перезапускается, все данные будут потеряны, поскольку контейнер не хранит данные .

Нет высокой доступности - бэкэнд файловой системы не поддерживает высокую доступность.

Итак Каким должно быть идеальное решение ? Все, что делает наши данные высокодоступными , что достигается использованием выделенного внутреннего хранилища с использованием базы данных.

Для простоты, давайте возьмем 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

Надеюсь, это поможет!

...