繁体   English   中英

在 kubernetes 中使用 docker-vault 时出现“mkdir vault:权限被拒绝”

[英]“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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM