コンテンツにスキップ

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