在吊舱创建时设置环境变量的最佳方法是什么?

时间:2018-09-07 15:16:58

标签: docker kubernetes openshift

我正在运行Openshift Container Platform 3.9,在其中部署了三个容器;一个postgres数据库容器,一个qpid消息代理容器以及一个需要连接到两者的服务器。

我需要在吊舱创建时设置环境变量,以允许所有三个容器连接。例如,我需要使用相应的pod地址设置DB_HOST和BROKER_HOST变量。我打算使用广告连播预设来完成此操作,但是根据文档As of OpenShift Container Platform 3.7, pod presets are no longer supported

在广告连播创建期间设置这些地址类型的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

快速的答案是:您不会

如果要使用某些服务,请为其定义一个Service对象,以便获得一个固定的dns名称,可用于引用该服务。而且您可以事先知道DB_HOST或BROKER_HOST的值,并将它们在Pod中设置为其他值

答案 1 :(得分:1)

更彻底地浏览了文档之后,我发现实际上有几种方法可以完成此操作。

首先,从模板,源代码或图像生成应用程序时,可以使用-e | --env参数在运行时将环境变量传递给应用程序容器:

$ oc new-app openshift/postgresql-92-centos7 \
-e POSTGRESQL_USER=user \
-e POSTGRESQL_DATABASE=db \
-e POSTGRESQL_PASSWORD=password

还可以使用--env-file参数从文件中读取变量:

$ cat postgresql.env
POSTGRESQL_USER=user
POSTGRESQL_DATABASE=db
POSTGRESQL_PASSWORD=password
$ oc new-app openshift/postgresql-92-centos7 --env-file=postgresql.env

这很有用,但是在pod创建时进行设置配置数据设置的更方便的方法是使用ConfigMap。根据文档,

  

ConfigMap对象提供了使用以下方式注入容器的机制:   配置数据,同时保持容器与OpenShift无关   企业。 ConfigMap可用于存储详细信息   例如单个属性或粗粒度信息,例如整个   配置文件或JSON Blob。

Openshift 3.9 Developer Guide