gpt4 book ai didi

kubernetes - k8s : copy file to container after pod's deployment

转载 作者:行者123 更新时间:2023-12-02 11:34:39 25 4
gpt4 key购买 nike

我正在使用 Helm 图表在 Kubernetes 中部署应用程序。部署后,我想将一个文件从图表存储库复制到容器中。

目前我正在手动执行此操作:

kubectl cp custom-samples.json che-8467596d54-7c2hg:/data/templates

但我想让这一步成为将自动执行的部署的一部分。请注意,我查看了 post-install hooks,但我不确定这是一个很好的解决方案。

[UPD] 我创建了这个初始化容器:
 - name: add-custom-samples
image: alpine:3.5
command: ["sh", "-c", "cd /data/templates; touch custom.json;"]
volumeMounts: [{
"mountPath": "/data",
"name": "che-data-volume"
}]

但是文件 custom.json在安装的卷中丢失。

最佳答案

您可以 include your file in the Helm chart .您通常会将其包含在 Kubernetes ConfigMap 对象中,然后可以是 mounted in a Pod as a volume .

您需要将文件移动到 Helm 图表目录中的某个位置;说它在 charts/mychart/files/custom-samples.json .例如,您可以在 charts/mychart/templates/configmap.yaml 中创建一个 ConfigMap。那看起来像

apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
custom-samples.json" |-
{{ .Files.Get "custom-samples.json" | indent 4 }}

然后在您的部署的 Pod 规范中,您将引用以下内容:
apiVersion: v1
kind: Deployment
spec:
template:
spec:
volumes:
- name: config
configMap:
name: {{ .Release.Name }}-configmap
containers:
- name: ...
volumeMounts:
- name: config
mountPath: /data/templates

请注意,这种方法会导致文件被存储为 Kubernetes 对象,并且有一些适度的大小限制;看起来像文本文件并且以千字节为单位的东西应该没问题。另外,如果 /data/templates中还有其他文件目录,这种方法将导致它们被隐藏,以支持 ConfigMap 中的任何内容。

关于kubernetes - k8s : copy file to container after pod's deployment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52330904/

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