Python 如何在微服务中存储版本化的XSLT文件

Python 如何在微服务中存储版本化的XSLT文件,python,xml,xslt,openshift,Python,Xml,Xslt,Openshift,目前,我正在开发一个微服务来处理XMLs(和其他格式的转换,但目前这些并不重要)。对于XML到XML的转换,我使用一个描述转换的XSLT文件。这个XSLT引用了其他XSLT文件,可能在一年后会有一个新版本。现在,微服务在docker容器中运行,该容器使用kubernetes提供服务。XSLT现在嵌入到repo中,因此也嵌入到docker容器中,但是如果我想更改某些内容,我必须重建并重新部署服务。为了解决这个问题,我找到了多种解决方案,但每种解决方案都有各自的缺点: 保持现状 (-)很难用新的X

目前,我正在开发一个微服务来处理XMLs(和其他格式的转换,但目前这些并不重要)。对于XML到XML的转换,我使用一个描述转换的XSLT文件。这个XSLT引用了其他XSLT文件,可能在一年后会有一个新版本。现在,微服务在docker容器中运行,该容器使用kubernetes提供服务。XSLT现在嵌入到repo中,因此也嵌入到docker容器中,但是如果我想更改某些内容,我必须重建并重新部署服务。为了解决这个问题,我找到了多种解决方案,但每种解决方案都有各自的缺点:

  • 保持现状

    • (-)很难用新的XSLT或版本进行扩展
    • (+)易于实现
  • 将XSLT存储在数据库中

    • (-)很难有效地引用其他XSLT
    • (+)易于更新XSLT或添加新XSLT
    • (+)与主代码repo解耦
  • 将pod链接到持久卷

    • (-)需要一个系统来处理新XSLT的上载
    • (+)可用于设置XSLT的版本
    • (+)与主代码repo解耦

  • 鉴于需要添加新的XSLT,旧的XSLT必须能够更新,并且部署应该尽可能简单和顺利,那么最好的解决方案是什么呢

    • 从XSLT文件创建一个文件,将其作为卷装载,以便XSLT将成为容器中的一个文件。有~1MB大小的限制(由etcd强制实施),但XSLT文件不太可能有这么大

    • 将XSLT文件存储在代码repo(如git)、文件存储库(如nexus)或普通web服务器中,并使用容器从repo获取文件,并将其放在init容器和应用程序容器之间共享的卷上。这可能是一个很好的起点


    我喜欢第二个想法,它很好地解决了主帖子中第三个选项的弊病。每次主转换服务重新启动时,它都可以运行一个init容器来从一个位置收集所有XSLT文件,并将它们放到持久卷中的一个文件夹中。是否可以在没有持久卷的情况下将它们放入另一个容器中?我想不需要,需要一个持久卷。不,不需要持久卷就可以工作。请参见答案链接的示例-它使用的卷类型为
    emptyDir
    ()