Chi*_*lax 8 kubernetes docker-volume kubernetes-helm
计划是将我的 dockerized 应用程序移至 Kubernetes。
docker 容器使用几个文件 - 我曾经通过在 docker-compose 文件中指定将它们挂载在 docker 卷上:
volumes:
- ./license.dat:/etc/sys0/license.dat
- ./config.json:/etc/sys0/config.json
Run Code Online (Sandbox Code Playgroud)
对于不同的环境,配置文件会有所不同,许可证文件也会相同。
如何在 helm 模板文件 (yaml) 中定义它以便它可用于正在运行的应用程序?
通常,最好的做法是什么?是否也可以在 values.yaml 中定义配置值并且 config.json 文件可以获得它?
Rya*_*son 11
由于您正在处理 json,因此一个很好的例子可能是官方的 stable/centrifugo chart。它定义了一个包含 config.json 文件的 ConfigMap:
data:
config.json: |-
{{ toJson .Values.config| indent 4 }}
Run Code Online (Sandbox Code Playgroud)
因此,它config从 values.yaml 中获取一个部分,并使用 toJson 函数将其转换为 json。配置可以是您想要在该 yaml 中定义的任何内容 - 图表具有:
config:
web: true
namespaces:
- name: public
anonymous: true
publish: true
...
Run Code Online (Sandbox Code Playgroud)
在 deployment.yaml 中,它从 configmap 创建一个卷:
volumes:
- name: {{ template "centrifugo.fullname" . }}-config
configMap:
name: {{ template "centrifugo.fullname" . }}-config
Run Code Online (Sandbox Code Playgroud)
请注意,{{ template "centrifugo.fullname" . }}-config 匹配 ConfigMap 的名称。
并将其挂载到部署的 pod/s 中:
volumeMounts:
- name: "{{ template "centrifugo.fullname" . }}-config"
mountPath: "/centrifugo"
readOnly: true
Run Code Online (Sandbox Code Playgroud)
这种方法可以让您从 values.yaml 填充 json 配置文件,以便您可以通过为每个 env 提供自定义值文件来覆盖图表中的默认值,从而为不同的环境设置不同的值。
要处理 license.dat,您可以向 ConfigMap 添加额外的条目以定义附加文件,但嵌入了静态内容。由于这是一个许可证,您可能希望将 ConfigMap 切换为 Secret,这是将定义中的 Secret 一词替换为 ConfigMap 的简单更改。不过你可以先用 ConfigMap 试试。
| 归档时间: |
|
| 查看次数: |
16576 次 |
| 最近记录: |