Подготовьте переменные окружения:
export KUBECONFIG=~/.kube/some-cluster.kubeconfig
export VAULT_ADDR=https://vault.company.com
export VAULT_TOKEN=some-token
# export VAULT_SKIP_VERIFY=true
Затем используйте команды
# ./s2v copy [--ignore-base64-errors] [--ignore-utf8-errors] [--secret-ignore-mask=MASK] <k8s-namespace> <secret-mask> <vault-dest-path>
./s2v copy demo your-app kv/demo/your-app
Команда читает секреты из k8s-кластера (переменная KUBECONFIG
), которые подходят по маске (аргумент secret-mask
).
Затем формирует yaml-манифеста на базе шаблона template.yaml
. В качестве значений для секретов используется формат vault:<vault-dest-path>#имя-секрета
(в кодировке base64).
# ./s2v gen-manifest [--ignore-base64-errors] [--ignore-utf8-errors] [--secret-ignore-mask=MASK] <src-k8s-namespace> <secret-mask> <service-name> <dest-k8s-namespace> <vault-dest-path>
./s2v gen-manifest old-ns your-app your-app new-ns kv/demo/your-app
Манифест будет сохранён в каталог manifests
по имени сервиса (аргумент service-name
).
- Аргумент
service-name
представлен как переменнаяserviceName
в шаблонеtemplate.yaml
- Аргумент
dest-k8s-namespace
представлен как переменнаяnamespace
в шаблонеtemplate.yaml
ПРЕДУПРЕЖДЕНИЕ: Эта команда может перезаписать ваши секреты по указанному пути если вы используете kv v1 engine.
# ./s2v append <vault-src-path> <vault-dest-path>
./s2v append kv/data/demo/service1-redis kv/demo/service1
Заметки:
- Аргумент
vault-src-path
должен содержание значение с../data/..
. Например,kv/data/demo/app
- Аргумент
vault-dest-path
НЕ должен содержание значение с../data/..
. Например,kv/demo/app
Команда читает секреты из указанного файла-манифеста и меняет vault-путь. Результат печатает на экран.
# ./s2v update-vault-path [--ignore-base64-errors] [--ignore-utf8-errors] <src-manifest-file> <new-vault-path>
./s2v update-vault-path your-app.yaml kv/data/new/path/your-app