openshift模板参数可以引用它在其中部署的项目名称吗?

问题描述:

我想通过模板将Kong API Gateway部署到我的openshift项目中。问题在于Kong似乎在做一些导致sporadic failure of DNS resolution的DNS内容。解决方法是使用FQDN(<name>.<project_name>.svc.cluster.local)。所以,在我的模板我想这样做:openshift模板参数可以引用它在其中部署的项目名称吗?

- env: 
     - name: KONG_DATABASE 
     value: postgres 
     - name: KONG_PG_HOST 
     value: "{APP_NAME}.{PROJECT_NAME}.svc.cluster.local" 

我只是不知道如何获得的,如果可能有可用参数的默认设置当前PROJECT_NAME ...

+1

尝试链接的UI环境屏幕:https://开头developers.openshift.com/managing-your-applications/environment-variables.html 有一张表提及所有默认的env变量和OPENSHIFT_A PP_NAME就是其中之一。 –

你可以阅读将Kubernetes向下API中的名称空间(项目名称)放入环境变量中,然后在值中使用该名称空间(项目名称)。

例如,请参阅OpenShift文档here

更新基于Claytons评论:

测试和部署配置工程下面的代码片段。

- env: - name: MY_POD_NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace - name: EXAMPLE value: example.$(MY_POD_NAMESPACE)

运行的容器内:

sh-4.2$ echo $MY_POD_NAMESPACE
testing
sh-4.2$ echo $EXAMPLE
example.testing

在它显示为一个字符串值,如example.$(MY_POD_NAMESPACE)

+0

有趣的是,这肯定会让我访问图像/容器_中的_,但是我能够定义第二个使用该值的env值吗?我必须检查,但@Harish的评论指向openshift已经提供的价值以及... – Lucas

+0

我认为thats openshift 2所以怀疑它是一样的。关于由第一个人填充的第二个env,我不确定 – user2983542

+0

好的,我测试了这一点,它似乎不工作。我使用向下的api创建了一个名为'APP_NAMESPACE'的新'env',并试图在另一个'env'中引用它,但结果是容器看到env的占位符而不是env:'KONG_PG_HOST ='kong -database。$ {APP_NAMESPACE} .svc.cluster.local'' – Lucas