0

いくつかのコンポーネントから構成される複雑なソリューションのアンブレラ ヘルム チャートを作成しようとしています。それらの 1 つはデータベースで、mariadb-galera チャートを使用します。私が直面している問題は、DB が利用可能になったらフライウェイ移行を実行したいのですが、それを適切に行う方法が見つからないということです。まず、範囲バージョンを使用したいのですが、フル バージョンを指定せずにフックを DB サブチャートに一致させる方法がわかりません。次に、最近サブチャートのエイリアスを追加しましたが、フックを適切にトリガーできませんでした。インストール時にトリガーされ、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 に答える