首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >helm获取子图服务名称

helm获取子图服务名称
EN

Stack Overflow用户
提问于 2018-03-07 08:44:29
回答 5查看 5.3K关注 0票数 14

将helm子图服务名称引用到位于父图表中的入口控制器中的最佳方法是什么

代码语言:javascript
运行
复制
values.yaml
---
ingress:
  paths:
    - serviceName: app-1
      path: /app-1/*
      port: 8080
    - serviceName: app-2
      path: /app-2/*
      port: 8080


ingress.yaml 
---
{{- range .Values.ingress.paths }}
          - path: {{ .path }}
            backend:
              {{- $subchart := .serviceName -}}
              serviceName: {{- include "$subchart.fullname" .}}
              servicePort: {{ .port }}
        {{- end }}

模板:没有与模板$subchart.fullname关联的模板gotpl

EN

回答 5

Stack Overflow用户

发布于 2018-03-07 16:27:13

以版本为作用域的硬编码子图表名称如何?

{{ .Release.Name }}-<subchart_name>

票数 3
EN

Stack Overflow用户

发布于 2020-05-15 17:34:35

我发现引用服务名称的最好方法是覆盖他们正在使用的模板。然而,这样做有一些警告。

对于子图表和图表,它们将具有不同的上下文,因此它们很可能会呈现模板differently

  • There只有

才能使用

大多数图表在其_helpers.tpl文件中都有一个类似于以下模板的模板。

代码语言:javascript
运行
复制
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "newchart.fullname" -}} 
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- $name := default .Chart.Name .Values.nameOverride }}
{{- if contains $name .Release.Name }}
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}
{{- end }}

子图表对您的图表具有不同的.Values。我们将在呈现此模板时修复此问题,方法是创建一个类似于子图表上下文的上下文。

我们没有使用.上下文调用它,而是通过用子图.Values替换.Values来创建一个新上下文。

代码语言:javascript
运行
复制
{{ template "newchart.fullname" (set (deepCopy .) "Values" .Values.newchart }}

我们使用deepCopy,这样我们实际上不会改变.上下文,而是创建一个新的上下文来使用。

子图表可以访问它自己的.Chart值,我们无法复制这些值。在这种情况下,我们必须将.Chart.Name的值硬编码到模板中。在这种情况下,我们可以将其替换为图表名称newchart

一旦我们这样做了,子图表上的nameOverridefullnameOverride都将工作,而您不必手动更改模板文件中的任何内容。

票数 2
EN

Stack Overflow用户

发布于 2021-10-22 06:37:35

helm 3.7版本已经解决了https://github.com/helm/helm/pull/9957的问题。

您可以像这样使用

代码语言:javascript
运行
复制
{{ template "bar.fullname" .Subcharts.bar }}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49142353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档