"mkdir vault: разрешение отклонено" при использовании docker-vault с 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"]
Я пытаюсь выполнить сценарий оболочки после запуска контейнера, чтобы настроить хранилище. У меня есть скрипт конфигурации, который начинается так:
#!/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, поэтому я не могу понять, почему создание каталога не удалось. Я попытался дать root-права пользователю хранилища или выполнить скрипт вручную, используя kubernetes exec
чтобы получить оболочку для контейнера, но ничего из этого не сработало.
Я не уверен, что это правильный путь, поэтому любые советы приветствуются!
0 ответов
Вам нужно будет проверить свой PV. Если вы используете путь к хосту, вам нужно будет перейти к хосту, на котором запланирован модуль, и предоставить права на запись в каталог, указанный в PV. После этого тебе должно быть хорошо.