helmプラグイン@コマンド¶
はじめに¶
本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。
01. helm-dashboard¶
helm-dashboardとは¶
helm コマンドで確認できる情報 (例:インストールされているHelmチャート、リビジョン履歴など) をダッシュボードで表示する。
セットアップ¶
▼ インストール¶
$ helm plugin install https://github.com/komodorio/helm-dashboard.git
▼ 起動¶
$ helm dashboard
02. helm-diff¶
helm-diffとは¶
3方向の戦略的マージパッチを使用して、『helm get コマンドによる最新のリリースによるマニフェスト』『helm template コマンドによる現在のチャートによるマニフェスト』『前回リリース後のHelm以外の方法によるマニフェスト』を比較する。
$ helm diff
セットアップ¶
▼ インストール¶
$ helm plugin install https://github.com/databus23/helm-diff --version 1.0.0
03. helm-s3¶
AWS S3をチャートリポジトリとして使用するために、チャートの圧縮ファイルをAWS S3に送信する。
04. helm-secrets¶
helm-secretsとは¶
暗号化ツールを使用して、values ファイルを復号し、Secretのデータとして注入する。
また反対に、Secretのデータを復号する。
セットアップ¶
▼ インストール¶
$ helm plugin install https://github.com/jkroepke/helm-secrets --version 1.0.0
使用可能なバックエンド¶
Secretの元となるデータを管理するバックエンドとして、以下を選べる。
- SOPS
- vals
04-02. バックエンドがSOPSの場合¶
注意点¶
▼ secrets ファイルの名前の制限¶
helm-secretsには、zendesk製 (2022/11/29時点でメンテナンスされていない) と、zendesk製からフォークされたjkroepke製がある。
zendesk製を使用している場合、SOPSの secrets ファイルの名前を『secrets.yaml』『secrets.<任意の名前>.yaml』とする必要がある。
一方でjkeroepke製では、執筆時点 (2022/11/29) で、secrets ファイルの名前が任意である。
secretsサブコマンド無しの場合¶
▼ secrets://¶
SOPSの secrets ファイルを指定するときに secrets:// を使用すると、サブコマンドの secrets が不要になる。
$ helm template . -f secrets://foo-secrets.yaml
▼ -f¶
暗号化された values ファイル (secrets ファイル) と、平文の values ファイルを使用して、helm コマンドを実行する。
これにより、暗号化された値を helm コマンドの実行時のみ復号し、マニフェストに出力できる。
補足としてこの時、values ファイル側には secrets ファイルの値を設定しておく必要はない。
$ helm secrets template <チャートへのパス> -f <SOPSが作成したsecretsファイルへのパス> -f foo-values.yaml
*例*
以下のようなSOPSの secrets ファイルがあるとする。
# secretsファイル
foo: F799Q8CQ...
sops:
kms:
- arn: arn:aws:kms:ap-northeast-1:<AWSアカウントID>:key/<KMSのID>
created_at: '2017-12-19T11:02:39Z'
enc: AQICA...
aws_profile: ""
...
# 暗号化時に使用したSOPSのバージョン
version: 3.7.0
また、以下のようなSecretがあるとする。
apiVersion: v1
kind: Secret
metadata:
name: foo-secret
type: Opaque
data:
foo: {{.Values.foo | b64enc}}
この時、helm secrets コマンドで secrets ファイルを指定すると、復号したうえで .Values に出力してくれる。
ArgoCDが使用するSOPSのバージョンは、暗号化時に使用したSOPSのバージョン (sops キーの値) に合わせたほうが良い。
結果的に、base64方式でエンコードされ、マニフェストを作成する。
$ helm secrets template . -f foo-values.yaml -f foo-secrets.yaml
apiVersion: v1
kind: Secret
metadata:
name: foo-secret
type: Opaque
data:
foo: Rjc5OVE4Q1E=...
サブコマンド¶
▼ decrypt¶
指定した values ファイルを復号し、.yaml.dec ファイルに出力する。
$ helm secrets decrypt <暗号化されたvaluesファイル>
Decrypting ./values/secrets.yaml
# .yaml.decファイル
db:
user: root
password: password
▼ encrypt¶
指定した values ファイルを暗号化し、元の values ファイルを上書きする。
$ helm secrets encrypt <平文のvaluesファイル>
Encrypted ./values/secrets.yaml
$ cat ./values/secrets.yaml
# secretsファイル
db:
user: *****
password: *****
# SOPSキーが追記される。
sops:
...