在 openshift 中部署没有持久存储的 hashicorp 保险库
deploy hashicorp vault without persistent storage in openshift
如何在不使用持久卷 (PV) 的情况下在 openshift 中部署 hashicorp 保管库?
作为普通用户(不是集群管理员)在openshift集群中,需要部署保险库服务器。我遵循了 URL 但它在 vault.yaml 文件中有持久卷 (/vault/file),这需要我的帐户获得创建持久容器的权限,但我的帐户没有足够的权限.所以我删除了 vault-config.json 中的 pv 安装路径,如下所示,但我看到了以下错误。
{"backend":
{"file":
{"path": "/tmp/file"}
},
...
...
}
是否可以创建没有 PV 的保管库服务器,例如使用本地文件路径 (/tmp/file) 作为普通用户的后端存储?
在没有 PV 的情况下在 openshift 中部署 vault 的替代方法是什么来部署 hashicorp vault?
下面是运行 with 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
How to deploy the hashicorp vault in openshift with out using
persistent volumes(PV)?
您可以使用内存存储后端,如前所述here。所以你的 vault 配置 看起来像这样:
$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"
但是用这个data/secrets不持久.
另一种方法是在存储中添加文件路径,这样所有加密的秘密都存储在提到的路径中。
所以现在您的配置更改为
storage "file" {
path = "ANY-PATH"
}
注意事项:
- 定义的路径应具有 对 write/read data/secrets
的权限
- 这可以是容器内的任何路径,只是为了避免对持久卷的依赖。
但是这个模型有什么问题?当容器重新启动时,所有数据都将丢失,因为容器不存储数据。
No High Availability – the Filesystem backend does not support high
availability.
那么理想的解决方案应该是什么?任何使我们的数据高度可用的东西,这是通过使用dedicated backend storage和数据库实现的。
为简单起见,我们将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 容器并使保管库指向它使用上面解释的服务名称 config.hcl
希望对您有所帮助!
如何在不使用持久卷 (PV) 的情况下在 openshift 中部署 hashicorp 保管库?
作为普通用户(不是集群管理员)在openshift集群中,需要部署保险库服务器。我遵循了 URL 但它在 vault.yaml 文件中有持久卷 (/vault/file),这需要我的帐户获得创建持久容器的权限,但我的帐户没有足够的权限.所以我删除了 vault-config.json 中的 pv 安装路径,如下所示,但我看到了以下错误。
{"backend":
{"file":
{"path": "/tmp/file"}
},
...
...
}
是否可以创建没有 PV 的保管库服务器,例如使用本地文件路径 (/tmp/file) 作为普通用户的后端存储?
在没有 PV 的情况下在 openshift 中部署 vault 的替代方法是什么来部署 hashicorp vault?
下面是运行 with 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
How to deploy the hashicorp vault in openshift with out using persistent volumes(PV)?
您可以使用内存存储后端,如前所述here。所以你的 vault 配置 看起来像这样:
$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"
但是用这个data/secrets不持久.
另一种方法是在存储中添加文件路径,这样所有加密的秘密都存储在提到的路径中。
所以现在您的配置更改为
storage "file" {
path = "ANY-PATH"
}
注意事项:
- 定义的路径应具有 对 write/read data/secrets 的权限
- 这可以是容器内的任何路径,只是为了避免对持久卷的依赖。
但是这个模型有什么问题?当容器重新启动时,所有数据都将丢失,因为容器不存储数据。
No High Availability – the Filesystem backend does not support high availability.
那么理想的解决方案应该是什么?任何使我们的数据高度可用的东西,这是通过使用dedicated backend storage和数据库实现的。
为简单起见,我们将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 容器并使保管库指向它使用上面解释的服务名称 config.hcl
希望对您有所帮助!