[英]“mkdir vault: permission denied” when using docker-vault with kubernetes
我使用 kubernetes 成功部署了基于官方 docker-vault 映像的自定义容器,但是在使用vault init
命令时出现以下错误:
* failed to initialize barrier: failed to persist keyring: mkdir vault: permission denied
我的 Dockerfile 如下:
FROM vault:0.8.3
WORKDIR /app
ADD . /app
RUN chmod +x ./configure_vault.sh
CMD ["server", "-config=vault.conf"]
我想要实现的是在容器启动后执行 shell 脚本以配置保管库。 我有一个像这样开始的配置脚本:
#!/bin/bash
export VAULT_ADDR="http://127.0.0.1:8200"
vault init -key-shares=1 -key-threshold=1 > vault_credentials
...
// configure some default roles and policies
为了执行它,我按如下方式配置了我的 kubernetes yaml 部署文件:
...
spec:
containers:
- image: // my image
imagePullPolicy: Always
name: vault
ports:
- containerPort: 8200
name: vaultport
protocol: TCP
# Enable mlock for the vault executable to stop
# memory being swapped to disk so that secrets
# don’t get written to disk.
securityContext:
capabilities:
add:
- IPC_LOCK
volumeMounts:
- name: vault-volume
mountPath: /vault/file
lifecycle:
postStart:
exec:
command: ["/bin/sh", "./configure_vault.sh"]
volumes:
- name: vault-volume
persistentVolumeClaim:
claimName: vault
我可以看到 Vault 用户对 /vault 文件夹拥有正确的权限,所以我似乎无法理解为什么目录创建会失败。 我尝试向 vault 用户授予 root 权限或通过使用kubernetes exec
手动执行脚本以获取容器的外壳,但没有一个工作。
我不确定这是进行的正确方法,因此欢迎提出任何建议!
你必须检查你的PV。 如果您使用的是主机路径,那么您必须导航到正在调度 pod 的主机,并授予对 PV 中指定目录的写权限。 在那之后你应该很好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.