我尝试为由少数组件组成的复杂解决方案创建一个伞舵图。其中一个是数据库,我使用 mariadb-galera 图表。我面临的问题是,一旦我的数据库可用,我想执行一次飞行迁移,但我找不到正确执行此操作的方法。首先,我想使用范围版本,我不知道如何指示我的钩子以匹配 DB 子图而不告诉它完整版本。其次,我最近为我的子图表添加了一个别名,此后我一直无法正确触发钩子:它只是在安装时触发并且一次又一次地失败,直到数据库最终可用。
我的Chart.yaml
看起来有点像:
apiVersion: v2
name: myApp
description: umbrella chart
type: application
version: 0.1.0
appVersion: "0.1-dev"
dependencies:
- name: "portal"
version: "0.1-dev"
alias: "portal"
- name: "mariadb-galera"
version: "~5.11"
repository: "https://charts.bitnami.com/bitnami"
alias: "database"
#...More dependencies...
我的钩子定义如下:
apiVersion: batch/v1
kind: Job
metadata:
name: {{ include "myApp.fullname" . }}-migration
labels:
{{- include "myApp.labels" . | nindent 4 }}
annotations:
"helm.sh/hook": post-install,post-upgrade
"helm.sh/hook-weight": "-5"
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
spec:
template:
metadata:
name: "{{ .Release.Name }}-migration"
labels:
app.kubernetes.io/managed-by: {{ .Release.Service | quote }}
app.kubernetes.io/instance: {{ .Release.Name | quote }}
helm.sh/chart: "database-5.11.2"
spec:
containers:
- name: flyway-migration
image: flyway/flyway
args:
- "migrate"
- "-password=$(DB_PASS)"
volumeMounts:
- name: migration-files
mountPath: /flyway/sql/
- name: flyway-conf
mountPath: /flyway/conf/
env:
- name: DB_PASS
valueFrom:
secretKeyRef:
name: mariadb-secret
key: mariadb-password
volumes:
- name: migration-files
configMap:
name: migration-files
- name: flyway-conf
configMap:
name: flyway-conf
在使用别名之前,helm.sh 注解看起来像:
helm.sh/chart: "mariadb-galera-5.11.2"
如您所见,它需要一个我不想手动包含的完整版本。
我尝试使用类似的东西:
{{ template ".Chart.name" .Subcharts.database }}
但似乎它无法访问子图的.Chart
值。
有什么我错过的吗?