Aso*_*oub 5 templates kubernetes kubernetes-helm
这就是我目前所拥有的:
基本的helm create附带一个values.yaml文件和template一个带有deployment.yaml. 该Deployment文件已被修改为管理 docker 镜像中的 spring-boot 应用程序。
现在values.yaml包含类似的东西
myApp:
repository: myApp.mycompany.com/demo/my-app-customers
tag: stable
Run Code Online (Sandbox Code Playgroud)
并且deployment.yaml包含
spec:
template:
spec:
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.myApp.repository }}:{{ .Values.myApp.tag }}"
Run Code Online (Sandbox Code Playgroud)
假设我必须管理另一个 spring-boot 应用程序,非常接近“my-app-customers”。我想我只需要添加另一行values.yaml,就像这样:
mySecondApp:
repository: myApp.mycompany.com/demo/my-app-others
tag: stable
Run Code Online (Sandbox Code Playgroud)
但这不起作用,deployment.yaml因为它使用.Values.myApp.repository. 这意味着我需要创建另一个文件来部署第二个应用程序deployment-others.yaml。.Values.mySecondApp.repository因此,不同的应用程序不可能使用相同的模板。
执行此操作的标准方法是拥有一个second-deployment.yaml文件,该文件本质上是第一个文件的副本,但具有不同的标签和值引用。通常会放入一些模板_helpers.tpl来生成标签块之类的内容,您可以将这些模板扩展为公共环境变量,或者您可以将一些配置卸载到 ConfigMap 中以减少重复。
Helm 的模板层根本不了解 YAML 语法,因此只要每个文件生成有效的 YAML,您就可以做任何您想做的事情。这可以在单个文件中包含多个文档,并且可以通过模板生成它们。不过,这可能会变得棘手。基本轮廓可能看起来像
{{- range list .Values.myApp .Values.mySecondApp -}}
---
...
spec:
template:
spec:
containers:
- name: {{ $.Chart.Name }}
image: "{{ .repository }}:{{ .tag }}"
...
{{ end -}}
Run Code Online (Sandbox Code Playgroud)
如果您尝试这样做,您需要注意这.是值对象的片段,而不是像通常那样的根对象;例如,请注意$.Chart.Name显式引用顶级图表名称。
| 归档时间: |
|
| 查看次数: |
5899 次 |
| 最近记录: |