如何在kuberntes容器之间共享大文件集

问题描述 投票:0回答:1

我有一大堆只读配置文件(大约4k),微服务使用它来处理一些XML文件,并应该通过Apache Commons Configuration读取。

这些文件具有以下类型:

  • 属性文件
  • XML
  • dtd
  • xfo
  • xslt

这些文件中的5个将需要一些环境变量替换其内容,例如第三方软件位置或基于文件部署环境的不同服务URL。

现在,我需要在运行时使这些文件可用于4个微服务。

我正在将fabric8.io maven docker插件与dockerfile结合使用以生成图像。用于春季启动微服务CD / CI的Kubernetes,Helm,Jenkinsfile和ArgoCD。

我面临的两个挑战是如何替换这些静态文件中的变量,以及如何使这些文件可用于每个吊舱。

我有三个解决方案,但我想知道这个问题的最佳/最佳12因子方法是什么。

解决方案1:将文件部署为单独的容器,并允许其他容器访问其提供的某些卷安装。

解决方案2:在Docker映像构建期间将文件添加到微服务映像。

解决方案3:将文件添加为每个微服务吊舱的容器。

spring-boot docker kubernetes jenkins-pipeline kubernetes-helm
1个回答
0
投票

您可以将此文件上传到kubernetes ConfigMap。

https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/

apiVersion: v1
kind: ConfigMap
data:
  haproxy.cfg: "complete file contents" 

它可以包含整个文件,并将此文件安装在pod目录中

    volumeMounts:
      - mountPath: /usr/local/etc/haproxy
        name: config
  volumes:
    - name: config
      configMap:
        name: env-config-haproxy
        items:
          - key: haproxy.cfg
            path: haproxy.cfg
© www.soinside.com 2019 - 2024. All rights reserved.