有没有办法在不同环境(例如dev,stage,prod)上的kubernetes上部署lagom项目,这样我可以使用一个具有多个配置覆盖的图像?
例如,假设我有一个环境变量ACTION_BATTERY_CHANGED
。我想构建和发布一个图像并覆盖配置,以便在dev foo=bar-{{env}}
和prod foo=bar-dev
中。
目前,我的理解是foo=bar-prod
与图像相关联,无法覆盖。如果这是正确的,有没有办法解决这个问题,这样我就不需要为每个环境创建多个图像了?
答案 0 :(得分:1)
您可以通过以下几种方式实现这一目标:
<强>静态:强>
您可以在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"
<强>头盔强>:
您可以制作头盔图并使用带变量的3个文件来部署您的应用程序。 要开发图表,您可以阅读official documentation或在official Kubernetes repo
中查找一些示例答案 1 :(得分:0)
或者,您可以设置typesafe配置系统属性变量以覆盖application.conf文件
application.conf:在开发中使用默认的conf文件
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"