如何从子图表获取基本chart.yaml版本

时间:2019-08-27 12:00:22

标签: charts kubernetes kubernetes-helm

我有一个总括图,它有一个几乎所有子图DeploymentConfig的模板。如何从子图中获取基本图表版本。

也许一个解决方案是覆盖子图表chart.yaml版本,但是我也尝试这样做而没有成功。

我在基本图表上尝试了_helpers.tpl 并在基本图表的_deployment-config.yaml上进行定义

{{- define "bitcore.deployment" -}}
{{- $common := dict "Values" .Values.bitcore -}} 
{{- $noCommon := omit .Values "bitcore" -}} 
{{- $overrides := dict "Values" $noCommon -}} 
{{- $noValues := omit . "Values" -}} 
{{- with merge $noValues $overrides $common -}}
apiVersion: apps.openshift.io/v1
kind: DeploymentConfig
metadata:
  annotations:
    openshift.io/generated-by: OpenShiftNewApp
  labels:
    app: ## here i need base chart version ##
  name: {{ .Chart.Name }}
spec:
  replicas: {{ .Values.replicaCount }}
  selector:
    app: {{ .Chart.Name }}
    deploymentconfig: {{ .Chart.Name }}
  strategy:
    activeDeadlineSeconds: 21600
    recreateParams:
      timeoutSeconds: 600
    resources: {}
    type: Recreate
  template:
    metadata:
      annotations:
        openshift.io/generated-by: OpenShiftNewApp
      labels:
        app: {{ .Chart.Name }}
        deploymentconfig: {{ .Chart.Name }}
        test: required
    spec:
      containers:
      - image: "{{ .Values.image.repository }}:xy"
        imagePullPolicy: {{ .Values.global.image.pullPolicy }}
        env:
          - name: BIT_CORE_RUNTIME_PROFILE
            value: '{{ required "Please provide runtime profile" .Values.global.runtimeProfile }}'
          - name: JAVA_OPTS
            value: '{{ required "Please provide Java Ops." .Values.global.javaOpts }}'
        livenessProbe:
        httpGet:
          path: management/health
          port: 1489
        initialDelaySeconds: 30
        periodSeconds: 60
        timeoutSeconds: 10
        successThreshold: 1
        failureThreshold: 10
        name: {{ .Chart.Name }}
        ports:
        - containerPort: 1480
          protocol: TCP
        readinessProbe:
          httpGet:
            path: management/health
            port: 1489
          initialDelaySeconds: 10
          timeoutSeconds: 10
          periodSeconds: 60
          successThreshold: 1
          failureThreshold: 10
        resources:
          {{- toYaml .Values.global.resources | nindent 12 }}
        volumeMounts:
          - mountPath: /logs
            name: {{ .Chart.Name }}-volume-1
      terminationMessagePath: /dev/termination-log
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      securityContext: {}
      terminationGracePeriodSeconds: 30
      volumes:
      - name: {{ .Chart.Name }}-volume-1
        emptyDir: {}
  test: false
{{- end -}}
{{- end -}}

我期望使用复杂的版本(7.0.0-snapshot-dev-872),但是我获得了子图版本0.1.0

2 个答案:

答案 0 :(得分:0)

我认为您无法在任何地方以任何方式访问超级图表的.Chart。毕竟,子图应该仍然可以独立运行。

使用头盔2最好的办法是将版本放在.Values.global部分中。

在头盔2中,您必须将其写入生成版本的脚本的顶级values.yaml中,因为那里没有任何代码。我相信在头盔3中应该可以通过脚本生成值。

答案 1 :(得分:0)

您只需在主图表内的values.yaml文件中为子图表定义版本值。

在我看来,没有必要创建具有相同版本的多个子图表,您只需将它们作为普通图表运行即可。伞形图的主要目标是部署带有大量参数的更多/大型应用程序-通常情况有所不同。因此,如果您的子图表具有类似的参数,例如。同一版本,请尝试分别部署它们。

有用的文档:subchartscharts-subcharts

有用的文章:helm