云原生应用管理:原理与实践
上QQ阅读APP看书,第一时间看更新

3.5.4 tests文件

在tests文件中,只有一个文件test-mariadb-connection.yaml,它用来测试数据库的连通性。


{{- if .Values.mariadb.enabled }}
apiVersion: v1
kind: Pod
metadata:
  name: "{{ .Release.Name }}-credentials-test"
  annotations:
    "helm.sh/hook": test-success
spec:
  containers:
  - name: {{ .Release.Name }}-credentials-test
    image: {{ template "wordpress.image" . }}
    imagePullPolicy: {{ .Values.image.pullPolicy | quote }}
    env:
      - name: MARIADB_HOST
        value: {{ template "mariadb.fullname" . }}
      - name: MARIADB_PORT
        value: "3306"
      - name: WORDPRESS_DATABASE_NAME
        value: {{ default "" .Values.mariadb.db.name | quote }}
      - name: WORDPRESS_DATABASE_USER
        value: {{ default "" .Values.mariadb.db.user | 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
{{- end }}

首先请留意这个"helm.sh/hook":test-success注解,这表明当前是一个测试用例,同时期望这个测试用例最终的运行结果是成功的。然后这个Pod的镜像就是直接使用的Wordpress镜像,配置了对应数据库的用户名,挂载了数据库对应的secret。此外,最重要的就是运行的命令,通过运行mysql命令来检测是否能够连接到数据库。