首页 > 解决方案 > Kubernetes/Helm:在 Init 和 Main 容器之间共享一个非属性文件

问题描述

在 kubernetes (minikube) / helm env 中,我有一个 ldif 文件,我想在 Init 容器和普通容器之间的卷上共享。我不想共享存储此文件的整个文件夹。

不幸的是,据我了解,除非文件是属性之一(语法“key = value”),否则这是不可能的。

我使用 configMap/subPath 进行了测试,似乎如果不遵守键/值语法,则 Init 容器甚至没有启动,否则一切正常,文件也出现在主容器上。

所以我想知道是否有可能完成这种分享。

BR

编辑:主容器启动命令是单个服务启动,它不能执行副本或移动初始化容器共享的文件,除非它是唯一的方法。

标签: kuberneteskubernetes-helmvolumedata-sharingconfigmap

解决方案


是的,这是可能的,而且你走在正确的轨道上。

这是如何执行此操作的示例。

---
kind: ConfigMap 
apiVersion: v1 
metadata:
  name: example-configmap 
data:
  my-file.ldif: |
     dn: cn=The Postmaster,dc=example,dc=com
     objectClass: organizationalRole
     cn: The Postmastermongodb
---
kind: Pod
apiVersion: v1
metadata:
  name: example-pod
spec:
  volumes: 
  - name: config-volume
    configMap:
      name: example-configmap
  initContainers:
  - name: init
    image: busybox
    volumeMounts:
    - name: config-volume
      mountPath: /path/in/the/init-container/my-file.ldif
      subPath: my-file.ldif
  containers:
  - name: main
    image: busybox
    volumeMounts:
    - name: config-volume
      mountPath: /path/in/the/container/my-file.ldif
      subPath: my-file.ldif

如果您发布了您的配置图,将会有所帮助。您可能会被绊倒,因为要使其正常工作,您需要文件的全部内容作为 configmap 中一个键的值。


推荐阅读