kubernetes 正在获取其他模板中的资源名称

egmofgnx  于 2023-04-05  发布在  Kubernetes
关注(0)|答案(1)|浏览(95)

我有一个模板,我使用uuidv4内置函数生成一个名称:

apiVersion: k6.io/v1alpha1
kind: pod
metadata:
  name: test-{{ uuidv4 }}
  namespace: {{ .Release.Namespace }}

然后,我想在另一个模板上使用相同的名称uuidv4。当我只是在另一个模板中使用内置函数时,它会生成一个新的ID,但我想要的ID已经在pod中生成。我是怎么做的?

**注意:**manifest位于不同的文件中,但在同一个/templates文件夹中。

pvabu6sv

pvabu6sv1#

你不能在Helm中以这种方式使用随机值。Helm没有任何类型的全局存储,只有.Values中的最终用户配置和每个模板的参数和返回值。每次你调用uuidv4时,它都会生成一个新的随机UUID。
更常见的情况是尝试为数据库生成随机密码。How not to overwrite randomly generated secrets in Helm templates可能是有趣的阅读,但请注意答案如何快速潜入使用lookup仅可能生成凭据,然后添加更多的变通方法时,这也不好用。
默认的Helm chart scaffolding附带了生成名称的助手。它通常假设Helm chart和版本名称的组合在其命名空间中是唯一的,这允许您创建“足够唯一”的部署名称。您可以在这里使用它

metadata:
  name: {{ include "mychart.fullname" . }}-test

如果名称确实需要是随机的,那么最好的方法可能是在Helm之外生成一个随机值并将其作为值传递。
x一个一个一个一个x一个一个二个x
然后在图表调用中,.Values.testUuid将在任何地方都是相同的值。如果您升级图表,您可以helm upgrade --reuse-values来保留以前的随机值。

相关问题