gpt4 book ai didi

kubernetes - 如何将值动态填充到 Kubernetes yaml 文件中

转载 作者:行者123 更新时间:2023-12-03 23:44:19 25 4
gpt4 key购买 nike

我想在运行时传递 kubernetes yaml 文件中的一些值,例如从 config/properties 文件中读取。

最好的方法是什么?

在下面的例子中,我不想硬编码端口值,而是从配置文件中读取端口号。

例如:

logstash.yaml

apiVersion: v1
kind: ReplicationController
metadata:
name: test
namespace: test
spec:
replicas: 1
selector:
app: test
template:
metadata:
labels:
app: test
spec:
containers:
- name: test
image: logstash
ports:
- containerPort: 33044 (looking to read this port from config file)
env:
- name: INPUT_PORT
value: "5044"

config.yaml

logstash_port: 33044

最佳答案

这听起来像是 Helm (www.helm.sh) 的完美用例。

Helm Charts 可帮助您定义、安装和升级 Kubernetes 应用程序。您可以使用预定义的图表(如 Nginx 等)或创建自己的图表。

图表的结构如下:

mychart/
Chart.yaml
values.yaml
charts/
templates/
...

在模板文件夹中,您可以包含您的 ReplicationController 文件(和任何其他文件)。在 values.yaml 文件中,您可以指定您希望在模板之间共享的任何变量(如端口号、文件路径等)。

值文件可以根据您的需要简单或复杂。值文件示例:

myTestService:
containerPort: 33044
image: "logstash"

然后您可以使用以下方法在模板文件中引用这些值:

apiVersion: v1
kind: ReplicationController
metadata:
name: test
namespace: test
spec:
replicas: 1
selector:
app: test
template:
metadata:
labels:
app: test
spec:
containers:
- name: test
image: logstash
ports:
- containerPort: {{ .Values.myTestService.containerPort }}
env:
- name: INPUT_PORT
value: "5044"

完成后,您可以使用 helm package mychart 编译成 Helm 图表。要部署到您的 Kubernetes 集群,您可以使用 helm install mychart-VERSION.tgz。然后将您的图表部署到集群。版本号在 Chart.yaml 文件中设置。

关于kubernetes - 如何将值动态填充到 Kubernetes yaml 文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50990761/

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