0

我尝试为由少数组件组成的复杂解决方案创建一个伞舵图。其中一个是数据库,我使用 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值。

有什么我错过的吗?

4

1 回答 1

0

由于包中嵌入的变量,我找到了一种为依赖项获取正确名称的方法:

helm.sh/chart: "{{ template "common.names.chart" .Subcharts.database }}"

这产生了我需要的确切行,但工作仍然开始而无需等待 mariadb 准备好。

于 2021-11-08T08:41:26.637 回答