gpt4 book ai didi

kubernetes - 如何最好地使用 helm charts 在 Kubernetes 的卷上保存文件?

转载 作者:行者123 更新时间:2023-12-03 18:04:05 24 4
gpt4 key购买 nike

计划是将我的 dockerized 应用程序移至 Kubernetes。

docker 容器使用几个文件 - 我曾经通过在 docker-compose 文件中指定将它们挂载在 docker 卷上:

volumes:
- ./license.dat:/etc/sys0/license.dat
- ./config.json:/etc/sys0/config.json

对于不同的环境,配置文件会有所不同,许可证文件也会相同。

如何在 helm 模板文件 (yaml) 中定义它以便它可用于正在运行的应用程序?

通常,最好的做法是什么?是否也可以在 values.yaml 中定义配置值并且 config.json 文件可以获得它?

最佳答案

由于您正在处理 json,因此一个很好的例子可能是 official stable/centrifugo chart .它定义了一个包含 config.json 文件的 ConfigMap:

data:
config.json: |-
{{ toJson .Values.config| indent 4 }}

所以它需要一个 config部分从 values.yaml 并使用 toJson 函数将其转换为 json。配置可以是您想要在该 yaml 中定义的任何内容 - 图表具有:
config:
web: true
namespaces:
- name: public
anonymous: true
publish: true
...

在 deployment.yaml 中它 creates a volume from the configmap :
      volumes:
- name: {{ template "centrifugo.fullname" . }}-config
configMap:
name: {{ template "centrifugo.fullname" . }}-config

请注意 {{ template "centrifugo.fullname" . }}-config matches the name of the ConfigMap .

mounts it into the deployment's pod/s :
        volumeMounts:
- name: "{{ template "centrifugo.fullname" . }}-config"
mountPath: "/centrifugo"
readOnly: true

这种方法可以让您从 values.yaml 填充 json 配置文件,以便您可以通过为每个 env 提供自定义值文件来覆盖图表中的默认值,从而为不同的环境设置不同的值。

要处理 license.dat,您可以向 ConfigMap 添加额外的条目以定义附加文件,但嵌入了静态内容。由于这是一个许可证,您可能希望将 ConfigMap 切换为 Secret,这是将定义中的 Secret 一词替换为 ConfigMap 的简单更改。不过你可以先用 ConfigMap 试试。

关于kubernetes - 如何最好地使用 helm charts 在 Kubernetes 的卷上保存文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53341089/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com