首页 文章

lagom配置覆盖

提问于
浏览
0

有没有办法在不同环境(即dev,stage,prod)上的kubernetes上部署lagom项目,这样我可以使用一个具有多个配置覆盖的图像?

例如,假设我有一个环境变量 foo=bar-{{env}} . 我想构建和发布一个图像并覆盖配置,以便在dev foo=bar-dev 和prod foo=bar-prod 中 .

目前,我的理解是 application.conf 与图像绑定,无法覆盖 . 如果这是正确的,有没有办法解决这个问题,这样我就不需要为每个环境创建多个图像了?

2 回答

  • 0

    您可以通过以下几种方式实现此目的:

    Static:

    您可以在3个名称空间中创建3个部署,并将env变量添加到每个部署中 . 您可以为每个部署手动管理这些变量:

    apiVersion: v1
    kind: Pod
    metadata:
      namespace: dev
      name: envar-demo
      labels:
        purpose: demonstrate-envars
    spec:
      containers:
      - name: java-demo-container
        image: my-super-java-app
        env:
        - name: foo
          value: "bar-dev"
        - name: JAVA_HOME
          value: "/opt/java/jdk1.7.0_05/bin/java"
    

    Helm

    您可以制作头盔图并使用带有变量的3个文件来部署您的应用程序 . 要开发图表,您可以阅读official documentation或在official Kubernetes repo中找到一些示例

  • 1

    或者,您可以设置typesafe配置系统属性变量以覆盖application.conf文件

    • application.conf:默认conf文件用于开发

    foo:bar-dev

    • application.prod.conf:

    包括“application.conf”
    foo:bar-prod

    设置dockerfile系统变量:

    ENTRYPOINT java -Dconfig.resource="$CONFIG_FILE"
    

    在kubernetes yml

    env:
         - name: CONFIG_FILE
           value: "application.prod.conf"
    

相关问题