Dockerコンテナ
Dockerコンテナを使用してCLIを実行します。
イメージの取得
最初の手順は、CLIイメージの取得です。
$ docker pull keeper/keeper-secrets-manager-cli:latest
コンテナの実行
次の手順では、コンテナの実行です。デフォルトでは、コンテナはシェルモードでksm
を実行するように設定されています。
$ docker run \
--rm \
-it \
-v $PWD:/wd --workdir /wd \
-v $HOME/.config:/etc/keeper -e KSM_INI_DIR=/etc/keeper \
keeper/keeper-secrets-manager-cli:latest
実行が完了したときにコンテナを削除するフラグ。これにより、非アクティブなコンテナの累積を防ぐことができます。
カレントディレクトリをコンテナ内に/wdとしてマウントし、作業ディレクトリをコンテナ内の/wdに設定します。これにより、/wdに書き込まれた内容をすべて、コンテナ外部のカレントディレクトリに書き込むことができます。これは、ファイルをダウンロードするときに便利です。
keeper.iniファイルを格納したい(または、格納してある)ディレクトリをマウントします。次に、keeper.iniファイルを読み書きする場所をCLIに指示する環境変数を渡します。
エイリアス
docker runコマンドは、毎回入力するには少し長すぎるかもしれません。そこで、エイリアスの作成をお勧めします。
$ alias ksm_shell='docker run --rm -it --workdir $PWD -v $PWD:$PWD -v $HOME/.config:/etc/keeper -e KSM_INI_DIR=/etc/keeper keeper/keeper-secrets-manager-cli:latest'
上記を実行すると、ksmのシェルが起動します。
次のエイリアスは少し異なります。runコマンドの最後に、アプリケーションksm
を追加します。これにより、ksm
がシェルモードで起動しなくなります。
$ alias ksm='docker run --rm -it --workdir $PWD -v $PWD:$PWD -v $HOME/.config:/etc/keeper -e KSM_INI_DIR=/etc/keeper keeper/keeper-secrets-manager-cli:latest ksm'
バイナリで構築
KSM CLI Dockerには、GLIBC(ほとんどのLinuxディストリビューション)とMUSL(Alpine Linux)の両方のCLIバイナリへのボリュームマウントが含まれています。ボリュームは、/cli
です。このディレクトリは、docker-composeのvolumes_from
またはコマンドラインdockerの-v
を使用して、別のコンテナにマウントできます。ksmの実行可能ファイルは、Linuxディストリビューションが使用しているCライブラリのバージョン別のディレクトリにあります。
/cli/glibc/ksm
- Ubuntu、Debian、Fedora、CentOSなどの標準GLIBCディストリビューションの場合。
/cli/musl/ksm
- Alpine Linuxの場合。
たとえば、CLIバイナリにアクセスする方法を示す簡単なフレームワークを以下に示します。
---
version:"2"
services:
init:
image: keeper/keeper-secrets-manager-cli:latest
main:
image: ubuntu:latest
volumes_from:
- init:ro
command: [ '/cli/glibc/ksm', 'exec', 'printenv', 'MY_LOGIN' ]
environment:
KSM_CONFIG: ewog ...M09IemdQMnc9Igp9
MY_LOGIN: keeper://bf18xLR3aVut5eYy7oIZZZ/field/login
LC_ALL:C.UTF-8
LANG:C.UTF-8
depends_on:
init:
condition: service_completed_successfully
init
サービスは、CLI dockerをロードします。コンテナが起動し、CLIのスプラッシュ画面が表示されてから終了します。コンテナが停止しても、/cli
ボリュームには引き続きアクセスできます。
main
サービスは、volumes_from
を使用して、CLI dockerのボリュームをディレクトリ/cli
にマウントします。command
でオーバーライドして、KSM CLIのGLIBCバージョンを実行します。command
は、CLIのexec
機能を使用しています。これにより、Keeper表記法を使用する環境変数がシークレット値に置き換えられます。CLIのexec
コマンドは、printenv
アプリケーションを実行しています。これにより、Keeper表記法に設定され、exec
コマンドによって値がシークレットに置き換えられた環境変数MY_LOGINが表示されます。
$ example : docker-compose up
[+] Running 2/0
⠿ Container example-init-1 Created 0.0s
⠿ Container example-main-1 Recreated 0.1s
Attaching to example-init-1, example-main-1
example-init-1 |
example-init-1 | ██╗ ██╗███████╗███╗ ███╗ ██████╗██╗ ██╗
example-init-1 | ██║ ██╔╝██╔════╝████╗ ████║ ██╔════╝██║ ██║
example-init-1 | █████╔╝ ███████╗██╔████╔██║ ██║ ██║ ██║
example-init-1 | ██╔═██╗ ╚════██║██║╚██╔╝██║ ██║ ██║ ██║
example-init-1 | ██║ ██╗███████║██║ ╚═╝ ██║ ╚██████╗███████╗██║
example-init-1 | ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ ╚═════╝╚══════╝╚═╝
example-init-1 |
example-init-1 | Current Version:1.0.13
example-init-1 |
example-init-1 | Running in shell mode.Type 'quit' to exit.
example-init-1 |
example-init-1 exited with code 0
example-main-1 | john.smith@localhost
example-main-1 exited with code 0