我有一大堆只读配置文件(大约4k),微服务使用它来处理一些XML文件,并应该通过Apache Commons Configuration读取。
这些文件具有以下类型:
这些文件中的5个将需要一些环境变量替换其内容,例如第三方软件位置或基于文件部署环境的不同服务URL。
现在,我需要在运行时使这些文件可用于4个微服务。
我正在将fabric8.io maven docker插件与dockerfile结合使用以生成图像。用于春季启动微服务CD / CI的Kubernetes,Helm,Jenkinsfile和ArgoCD。
我面临的两个挑战是如何替换这些静态文件中的变量,以及如何使这些文件可用于每个吊舱。
我有三个解决方案,但我想知道这个问题的最佳/最佳12因子方法是什么。
解决方案1:将文件部署为单独的容器,并允许其他容器访问其提供的某些卷安装。
解决方案2:在Docker映像构建期间将文件添加到微服务映像。
解决方案3:将文件添加为每个微服务吊舱的容器。
您可以将此文件上传到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