lagom配置覆盖
lagom configuration override
有什么方法可以在不同环境(即 dev、stage、prod)中的 kubernetes 上部署 lagom 项目,以便我可以使用具有多个配置覆盖的图像?
例如,假设我有一个环境变量 foo=bar-{{env}}
。我想构建和发布一个图像并覆盖配置,以便在 dev foo=bar-dev
和 prod foo=bar-prod
.
目前,我的理解是 application.conf
绑定到图像,不能被覆盖。如果这是正确的,有没有办法解决这个问题,这样我就不需要为每个环境创建多个图像?
您可以通过以下几种方式做到这一点:
静态:
您可以在 3 个命名空间中创建 3 个部署,并将环境变量添加到每个部署。您可以为每个部署手动管理这些变量:
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 chart 并使用 3 个带变量的文件来部署您的应用程序。
要开发图表,您可以阅读 official documentation or find some examples in official Kubernetes repo
或者,您可以设置类型安全配置系统 属性 变量来覆盖 application.conf 文件
application.conf: default conf file use in development
foo: bar-dev
application.prod.conf:
include "application.conf"
foo: bar-prod
设置dockerfile系统变量:
ENTRYPOINT java -Dconfig.resource="$CONFIG_FILE"
在 kubernetes yml 中
env:
- name: CONFIG_FILE
value: "application.prod.conf"
有什么方法可以在不同环境(即 dev、stage、prod)中的 kubernetes 上部署 lagom 项目,以便我可以使用具有多个配置覆盖的图像?
例如,假设我有一个环境变量 foo=bar-{{env}}
。我想构建和发布一个图像并覆盖配置,以便在 dev foo=bar-dev
和 prod foo=bar-prod
.
目前,我的理解是 application.conf
绑定到图像,不能被覆盖。如果这是正确的,有没有办法解决这个问题,这样我就不需要为每个环境创建多个图像?
您可以通过以下几种方式做到这一点:
静态:
您可以在 3 个命名空间中创建 3 个部署,并将环境变量添加到每个部署。您可以为每个部署手动管理这些变量:
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 chart 并使用 3 个带变量的文件来部署您的应用程序。 要开发图表,您可以阅读 official documentation or find some examples in official Kubernetes repo
或者,您可以设置类型安全配置系统 属性 变量来覆盖 application.conf 文件
application.conf: default conf file use in development
foo: bar-dev
application.prod.conf:
include "application.conf" foo: bar-prod
设置dockerfile系统变量:
ENTRYPOINT java -Dconfig.resource="$CONFIG_FILE"
在 kubernetes yml 中
env:
- name: CONFIG_FILE
value: "application.prod.conf"