https://github.com/shyiko/kubesec を使ってみたので調べたことをメモ。
kubesecとは
kubernetesのsecret.ymlの管理ツール。(secret.ymlはsecretリソースの定義ファイル)
secret.ymlのデータ構造を保ったまま、必要なところだけをGoogle Cloud KMSやAWS KMSなどを使って暗号化してくれる。
ついでに、base64のエンコードもやってくれるので便利。
詳しい内容はkubesecのreadmeを要参照。
kubesecを使う目的
- dbのcredentialなどを平文のままgitにcommitすることを避ける
- そのために必要な手続きがkubesecを使うと多少楽にする
使用の流れ
事前準備
Google Cloud KMSやAWS KMSなどでkeyを作成しておく
開発時
- kubesecのインストール
- credentialなどをkubesecで暗号化(事前に作成したkeyを使う)しsecret.ymlに追加
- git commit
デプロイ時
- デプロイ用のサーバーでkubesecのインストール
- kubesecでdecrypt
-
kubectl apply
でsecretリソースを作成
基本的なコマンド
インストール
mac
brew install shyiko/kubesec/kubesec
linux
curl -sSL https://github.com/shyiko/kubesec/releases/download/0.9.2/kubesec-0.9.2-linux-amd64 \
-o kubesec && chmod a+x kubesec
Encryption
kubesec encrypt --key=gcp:<resource-id of Google Cloud KMS key> secret.yml --cleartext
Google Cloud KMSを使う場合は上記のようにgcp:
を付ける。
--cleartext
を付けるとbase64のencodeをしてくれる。
Modification(secret dataの追加)
kubesec patch -i secret.yml --data my_key=secret_value
Decryption
kubesec decrypt -i secret.yml
こちらも--cleartext
を付けるとbase64のdecodeをしてくれるが、
基本的にはdecryptした後はそのままkubectl apply -f secret.yml
することになるので不要な場合が多い。