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:
...