【发布时间】:2018-10-31 23:05:23
【问题描述】:
我正在学习 k8s,并且正在努力编写 Helm 图表来为我用来提升生态系统的应用程序生成配置文件。我遇到了一个有趣的问题,我需要生成所有节点通用的配置,以及每个节点独有的配置。知道我会怎么做吗?
来自我的 values.xml 文件:
# number of nodes / replicas
nodeCount: 5
replicaCount: 3
所有节点的通用配置称为 node_map.xml:
<default>
<node>
<replica>
<host>wild-wallaby-0</host>
<port>8000</port>
</replica>
<replica>
<host>scary-rapids-1</host>
<port>8000</port>
</replica>
</node>
<node>
<replica>
<host>wild-wallaby-1</host>
<port>8000</port>
</replica>
<replica>
<host>scary-rapids-2</host>
<port>8000</port>
</replica>
</node>
<node>
<replica>
<host>wild-wallaby-2</host>
<port>8000</port>
</replica>
<replica>
<host>scary-rapids-0</host>
<port>8000</port>
</replica>
</node>
</default>
上面的内容很容易生成,并且这个配置已经准备好作为单个容器的每个 pod,但是现在每个 pod 还需要编写一个额外的配置文件,让该 pod 知道该实例是什么节点和副本,称为instance.xml。请注意,该文件不需要称为 instance.xml...只要我知道启动命令中包含什么名称,我就可以灵活地指向并加载任何命名文件。
例如...
两个实例将在节点 wild-wallaby-0、节点 0 副本 1 和节点 0 副本 2 上运行。每个实例都需要生成这样的配置文件:
第一个实例...
<!-- node 0 replica 1 instance.xml -->
<id>
<node>0</node>
<replica>1</replica>
</id>
还有第二个例子……
<!-- node 0 replica 2 instance.xml -->
<id>
<node>0</node>
<replica>2</replica>
</id>
这当然可以根据我的值文件中定义的节点和副本的数量遵循一些约定。虽然生成所有节点通用的文件很容易,但我不清楚如何从 instance.xml 文件的 helm 图表为每个节点生成自定义配置文件。
有什么想法或建议吗?
【问题讨论】:
标签: kubernetes kubernetes-helm go-templates