flm*_*lmg 5 docker kubernetes hashicorp-vault
我成功使用 kubernetes 部署了一个基于官方 docker-vault 镜像的自定义容器,但是在使用命令时vault init出现以下错误:
* failed to initialize barrier: failed to persist keyring: mkdir vault: permission denied\nRun Code Online (Sandbox Code Playgroud)\n\n我的 Dockerfile 如下:
\n\nFROM vault:0.8.3\n\nWORKDIR /app\nADD . /app\nRUN chmod +x ./configure_vault.sh\nCMD ["server", "-config=vault.conf"]\nRun Code Online (Sandbox Code Playgroud)\n\n我想要实现的是在容器启动后执行 shell 脚本以配置保管库。我有一个这样开始的配置脚本:
\n\n#!/bin/bash\n\nexport VAULT_ADDR="http://127.0.0.1:8200"\nvault init -key-shares=1 -key-threshold=1 > vault_credentials\n...\n// configure some default roles and policies\nRun Code Online (Sandbox Code Playgroud)\n\n为了执行它,我配置了 kubernetes yaml 部署文件,如下所示:
\n\n...\nspec:\n containers:\n - image: // my image\n imagePullPolicy: Always\n name: vault\n ports:\n - containerPort: 8200\n name: vaultport\n protocol: TCP\n # Enable mlock for the vault executable to stop\n # memory being swapped to disk so that secrets\n # don\xe2\x80\x99t get written to disk.\n securityContext:\n capabilities:\n add:\n - IPC_LOCK\n volumeMounts:\n - name: vault-volume\n mountPath: /vault/file\n lifecycle:\n postStart:\n exec:\n command: ["/bin/sh", "./configure_vault.sh"]\n volumes:\n - name: vault-volume\n persistentVolumeClaim:\n claimName: vault\nRun Code Online (Sandbox Code Playgroud)\n\n我可以看到 Vault 用户对 /vault 文件夹拥有正确的权限,因此我似乎无法理解为什么目录创建会失败。我尝试向 Vault 用户授予 root 权限,或者通过使用kubernetes exec来获取容器的 shell 来手动执行脚本,但这些都不起作用。
我不确定这是正确的方法,所以欢迎任何建议!
\n| 归档时间: |
|
| 查看次数: |
5884 次 |
| 最近记录: |