天天看點

Helm chart指南-系列(7)- chart測試Chart測試

Chart測試

一個chart包含許多一起工作的Kubernetes資源群組件。作為chart作者,可能需要編寫一些測試來驗證chart在安裝時是否按預期工作。這些測試還有助于chart消費者了解chart應該做什麼。

我在網址

https://whmzsu.github.io/helm-doc-zh-cn/

不斷更新,同時也會搬運到這裡,大家有興趣加入

https://github.com/whmzsu/helm-doc-zh-cn/

的可以給我送出意見和建議。

測試在Helm chart中的templates/目錄,是一個pod定義,指定一個給定的指令來運作容器。容器應該成功退出(exit 0),測試被認為是成功的。該pod定義必須包含helm測試hook注釋之一:

helm.sh/hook: test-success

helm.sh/hook: test-failure

示例測試:

  • 驗證來自values.yaml檔案的配置是否正确注入。
  • 確定使用者名和密碼正常工作
  • 確定不正确的使用者名和密碼不起作用
  • 斷言服務已啟動并正确進行負載平衡
  • 等等

可以使用該helm test 指令在release中運作Helm中的預定義測試。對于chart使用者來說,這是一種很好的方式來檢查他們釋出的chart(或應用程式)是否按預期工作。

Helm測試hook的分解

在Helm中,有兩個測試hook:

test-success

test-failure

.

test-success

表示測試pod應該成功完成。換句話說,容器中的容器應該exit 0.

test-failure

是一種斷言測試容器不能成功完成的方式。如果pod中的容器未exit 0,則表示成功。

示例測試

下面是一個示例mariadb chart中helm測試pod定義的示例:

mariadb/ Chart.yaml
 README.md
 values.yaml
 charts/
 templates/
 templates/tests/test-mariadb-connection.yaml           

wordpress/templates/tests/test-mariadb-connection.yaml

中:

apiVersion: v1
kind: Pod
metadata:
 name: "{{ .Release.Name }}-credentials-test"
 annotations: "helm.sh/hook": test-success
spec:
 containers: - name: {{ .Release.Name }}-credentials-test
 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           

在release上運作測試套件的步驟

  1. $ helm install mariadb

    NAME: quirky-walrus
    LAST DEPLOYED: Mon Feb 13 13:50:43 2017
    NAMESPACE: default
    STATUS: DEPLOYED           
  2. $ helm test quirky-walrus

    RUNNING: quirky-walrus-credentials-test
    SUCCESS: quirky-walrus-credentials-test           

注意

  • 可以在單個yaml檔案中定義盡可能多的測試,也可以在templates/目錄中的多個yaml檔案中進行分布測試
  • 提倡将測試套件嵌入到一個

    tests/

    目錄下,比如

    <chart-name>/templates/tests/

    以便實作更多隔離

本文轉自kubernetes中文社群-

Helm chart指南-系列(7)- chart測試

繼續閱讀