如何使用持久卷(PV)部署openshift中的hashicorp库?
在openshift集群中,作为普通用户(而不是集群管理员),需要部署保险库服务器。我遵循了URL,但是它在vault.yaml文件中有持久的卷(/vault.yaml/ file ),这需要我的帐户创建持久容器的权限,但是我的帐户没有足够的权限。因此,我像下面一样删除了va-config.json中的pv挂载路径,但是我看到了下面的错误。
{"backend":
{"file":
{"path": "/tmp/file"}
},
...
...
}有没有可能在没有PV的情况下创建保险库服务器,比如使用本地文件路径(/tmp/ file )作为后端存储作为正常用户?
如果没有PV部署hashicorp库,在openshift中部署保险库的替代方法是什么?
下面是使用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发布于 2019-10-31 09:24:16
如何使用持久卷(PV)部署openshift中的hashicorp库?
您可以使用在内存中存储后端,正如所提到的这里。因此,您的保险库配置如下所示:
$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"
}现在,config看起来如下所示:
$ 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中解释的服务名称将其指向它。
希望这能有所帮助!
https://stackoverflow.com/questions/58544098
复制相似问题