我正在运行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
。
在广告连播创建期间设置这些地址类型的最佳方法是什么?
答案 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。