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
  1. docker runコマンド。

  2. 実行が完了したときにコンテナを削除するフラグ。これにより、非アクティブなコンテナの累積を防ぐことができます。

  3. コンテナ操作を有効化するフラグ。

  4. カレントディレクトリをコンテナ内に/wdとしてマウントし、作業ディレクトリをコンテナ内の/wdに設定します。これにより、/wdに書き込まれた内容をすべて、コンテナ外部のカレントディレクトリに書き込むことができます。これは、ファイルをダウンロードするときに便利です。

  5. keeper.iniファイルを格納したい(または、格納してある)ディレクトリをマウントします。次に、keeper.iniファイルを読み書きする場所をCLIに指示する環境変数を渡します。

  6. イメージの名前。

エイリアス

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

最終更新