Hakoを使い始めた

最近Hakoを使い始めたのでノウハウをためていく

Hakoとは??

Dockerコンテナをデプロイするためのツールです
Hakoがうまれた背景はECS を利用したデプロイ環境 by Kohei Suzukiによると

ECSを利用しつつ、秘匿値の注入や関連するリソースや設定を操作するデプロイツールが必要

だったからだそうです

今回のHakoの使い方

Dockerコンテナをデプロイする hako deployの他に hako oneshotというECSのRunTaskAPIを呼び出し単発の実行を行うものがあるのですが、今回はこのhako oneshotを使います

今回試すものとしては

  • 実行中のログをCloudWatch Logsになげる
  • 秘匿値の管理方法

の2つを確認していきます
なお今回ECSのクラスター名はtest-clusterというものを使用したとします

実行中のログをCloudWatch Logsになげる

まずコンテナのlogをCloudWatch Logsになげる設定に関しては公式のこちらを参考にします

test.yml

コマンドラインで

と実行するとCloudWatch Logsのtestというロググループの中に下記のようなログが出力されます

f:id:hatappi1225:20170516194216p:plain

秘匿値の管理方法

コンテナを立ち上げる時にENVで情報を渡すことが出来る
例えばコンテナ内でDBにアクセスする必要がありコンテナ起動時にパスワードを渡したいとする

test.yml

このようにenvを追加して

とすればCloudWatchLogsで確認すると

f:id:hatappi1225:20170516194605p:plain

DB_PASSWORDが環境変数としてわたっていることが確認できた
ただこれはちょっと微妙でyamlファイルはgitで管理していくのでDB_PASSWORDのhogehogeという秘匿値は含めたくない

これの解決策としてもHakoが提供してくれている

test.env

このようなgitで管理しない秘匿値を定義したファイルを用意して

test.yml

とすると実行時にtest.envをよみにいってそれを使って環境変数として渡せるようになる
これでymlだけをgitの管理下において安心して管理できる
今回はファイルベースで管理をしていたが
Hako作者の@eagletmtのリポジトリを見ると

Vaultを使って管理する

etcdを使って管理する

があるようです

最後に

Hakoを使うことで自分でAWS APIを何回も叩かなくてよくなりました

投稿日:May 16th 2017

元記事:http://hatappi.hateblo.jp/entry/2017/05/16/195433

– PR –
– PR –