Helm子图表名称和URL变量配置

问题描述 投票:0回答:1

要求:将多个版本的图表A部署到单个k8s命名空间中

我在子图表名称配置上遇到了一个复杂的问题。我的图表之间的关系是:

A
|- B
   |- C
      |- D - postgres
      |- E - graphql-engine
|- F - postgres
|- G - graphql-engine
  • A取决于B,F,G
  • B取决于C
  • C取决于D,E

并且graphql-engine类型的图表可能基于应用程序而需要零个或N个变量(如果您知道此应用程序,则应为后端URL,操作URL,触发器URL等)。在实例E中,变量应指向乘法C,在实例G中,变量应指向A。

我在Deployment的容器部分中用这部分制作了graphql-engine的Helm图表:

          env:
{{- range $k, $v := .Values.environmentVariables }}
            - name: {{ quote $k }}
              value: {{ quote "$v" }}
{{- end }}

要有正确的子图名称,我正在A的variables.yaml文件中执行此操作:

B:
  C:
    nameOverride: A-B-C
    D:
      nameOverride: A-B-C-D
    E:
      nameOverride: A-B-C-E
F:
  nameOverride: A-F
G:
  nameOverride: A-G

默认图表的_helpers.tpl文件在nameOverride变量之前加上.Release.Name变量。这不是很好,也不是最优的,但是我没有找到一种方法来动态创建此过程。这里有人知道更好的命名方法吗?这是我的第一个问题。

为简化我的问题。我需要像这样放置变量列表:

  • VAR1 =“ http:// {{.Release.Name}}-A-B-C:8080 / graphql”
  • VAR2 =“ http:// {{.Release.Name}}-A-B-C:8080 / actions”

从A图表到E图表。但是我没有找到让Go模板扩展.Release.Name变量的方法。我是在A variables.yaml中制作的:

B:
  C:
    nameOverride: A-B-C
    D:
      nameOverride: A-B-C-D
    E:
      nameOverride: A-B-C-E
      extraVariables:
        VAR1: "http://{{ .Release.Name }}-A-B-C:8080/graphql"
        VAR2: "http://{{ .Release.Name }}-A-B-C:8080/actions"
F:
  nameOverride: A-F
G:
  nameOverride: A-G
  extraVariables:
    VAR1: "http://{{ .Release.Name }}-A:8080/graphql"

但是我没有找到一种方法,如何在带有美元变量输入的范围部分中使用tpl Helm函数。或完成此目的的另一种可能性。我尝试仅包含一些我可以在A图表中创建的“模板”,但是它具有错误的Vars上下文,并且在每个graphql-engine图表实例中都使用,因此不正确。

真正的A应用程序具有更多级别的依赖关系,但对这个问题并不重要。这是错误的方式吗?您如何创建k8s对象的名称,以及如何为应用程序设置URL变量?

谢谢!

要求:将多个版本的图表A部署到单个k8s命名空间中,我对子图名称配置有一个复杂的问题。我的图表之间的关系为:A |-B |-C |-D-...

kubernetes deployment kubernetes-helm
1个回答
0
投票

以及有关使用tpl函数调用循环列表的问题的答案是这个。您只需要更改tpl的上下文即可。

© www.soinside.com 2019 - 2024. All rights reserved.