在openshift中部署hashicorp保险库而不需要持久存储



如何在openshift中部署hashicorp vault,而不使用持久卷(PV(?

在openshift集群中,作为普通用户(而不是集群管理员(,需要部署vault服务器。我遵循了URL,但它在vault.yaml文件中有持久卷(/vault/file(,这需要我的帐户有创建持久容器的权限,但我的帐户没有足够的权限。所以我删除了vault-config.json中的pv安装路径,如下所示,但我看到了以下错误。

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

是否可以在没有PV的情况下创建vault服务器,例如作为普通用户使用本地文件路径(/tmp/file(作为后端存储?

在没有PV的情况下,在openshift中部署vault的替代方法是什么?

以下是使用pv、运行时的错误

--> 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

如何在openshift中部署hashicorp vault持续容量(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指向它。hcl

希望这能有所帮助!

相关内容

  • 没有找到相关文章

最新更新