我们可以在openshift部署容器中使用env变量作为ENV变量的值吗?

时间:2020-02-17 12:26:31

标签: openshift travis-ci-cli

我必须使用api登录到Openshift,并在如下所示的deployment.yaml文件中提到apikey:

    apiVersion: extensions/v1beta1
kind: Deployment
metadata:
 name: abc
spec:
 replicas: 1
 template:
   metadata:
     labels:
       app: abc
       version: v1
   spec:
     containers:
      - name: chaos
        image: abcusr/abc:v1
        imagePullPolicy: Always
        env:
         - name: HOST
           value: $host
         - name: NAMESPACE
           value: $namespace
         - name: APIKEY
           value: $apikey

这3个环境变量在travis中设置为环境变量。但是,当我运行构建时,我的部署没有成功。它给出了错误:

 error: --server and passing the server URL as an argument are mutually exclusive

但是当我对所有这些值进行硬编码时,它就会起作用。

1 个答案:

答案 0 :(得分:0)

先前未定义env变量($ host等),因为env变量中的 value 描述为:

使用容器中先前定义的环境变量和所有服务环境变量来扩展变量引用$(VAR_NAME)。如果无法解析变量,则输入字符串中的引用将保持不变。 $(VAR_NAME)语法可以使用双$$来转义,即:$$(VAR_NAME)。无论变量是否存在,转义引用都将永远不会扩展。默认为“”。

但是,将template与部署(以及应用程序中的所有其他对象)以及所有诸如template's parameters这样的变量一起使用是更好的方法。因此,您可以在流程模板阶段设置该参数。