チャートのテスト
チャートには、連携して動作するいくつかの Kubernetes リソースとコンポーネントが含まれています。 チャートの作成者は、チャートがインストールされたときにチャートが期待どおりに機能することを検証するテストを作成することができます。 これらのテストは、 チャートの利用者がチャートで何をするかを理解するのにも役立ちます。
Helm チャートの テスト は、templates/
ディレクトリの下にあり、
実行する特定のコマンドを含むコンテナーを指定するジョブ定義です。
テストが成功したと見なされるには、コンテナが正常に終了 (exit 0) する必要があります。
ジョブ定義には、helm テストフックアノテーション helm.sh/hook: test
が含まれている必要があります。
テストの例:
- values.yaml ファイルの構成が適切に挿入されたことを確認する
- 正しいユーザー名とパスワードが機能することを確認する
- 正しくないユーザー名とパスワードが機能しないことを確認する
- サービスが稼働しており、正しく負荷分散されていることを確認する
- など
コマンド helm test <リリース名>
を使用して、リリースの Helm で事前定義されたテストを実行できます。チャートの利用者にとって、これはチャート (またはアプリケーション) のリリースが期待どおりに機能することを正常性チェックする優れた方法です。
テストの例
以下は、mariadb チャートの例における Helm テストポッド定義の例です。
mariadb/
Chart.yaml
README.md
values.yaml
charts/
templates/
templates/tests/test-mariadb-connection.yaml
wordpress/templates/tests/test-mariadb-connection.yaml
の内容
apiVersion: batch/v1
kind: Job
metadata:
name: "{{ .Release.Name }}-credentials-test"
annotations:
"helm.sh/hook": test
spec:
template:
spec:
containers:
- name: main
image: {{ .Values.image }}
env:
- name: MARIADB_HOST
value: {{ template "mariadb.fullname" . }}
- name: MARIADB_PORT
value: "3306"
- name: WORDPRESS_DATABASE_NAME
value: {{ default "" .Values.mariadb.mariadbDatabase | quote }}
- name: WORDPRESS_DATABASE_USER
value: {{ default "" .Values.mariadb.mariadbUser | quote }}
- name: WORDPRESS_DATABASE_PASSWORD
valueFrom:
secretKeyRef:
name: {{ template "mariadb.fullname" . }}
key: mariadb-password
command: ["sh", "-c", "mysql --host=$MARIADB_HOST --port=$MARIADB_PORT --user=$WORDPRESS_DATABASE_USER --password=$WORDPRESS_DATABASE_PASSWORD"]
restartPolicy: Never
リリースでテストスイートを実行する手順
$ helm install quirky-walrus mariadb --namespace default
$ helm test quirky-walrus
NAME: quirky-walrus
LAST DEPLOYED: Mon Feb 13 13:50:43 2019
NAMESPACE: default
STATUS: deployed
REVISION: 0
TEST SUITE: quirky-walrus-credentials-test
Last Started: Mon Feb 13 13:51:07 2019
Last Completed: Mon Feb 13 13:51:18 2019
Phase: Succeeded
メモ
- 単一の yaml ファイルで必要なだけテストを定義するか、
templates/
ディレクトリ内の複数の yaml ファイルに分散することができます - より分離するために、テストスイートを
<chart-name>/templates/tests/
のようなtests/
ディレクトリの下にネストすることができます - テストは
Helm フックであるため、
helm.sh/hook-weight
やhelm.sh/hook-delete-policy
などのアノテーションをテストリソースで使用できます