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

我们可以使用env变量作为openshift部署容器中env变量的值吗?,openshift,travis-ci-cli,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:

我必须使用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
但是,当我硬编码所有这些值时,它会工作。

之前没有定义环境变量($host等),因为环境变量中的值被描述为:

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


然而,更好的方法是在部署(以及应用程序的所有其他对象)和所有此类变量中使用。因此,您可以在流程模板阶段设置这些参数。

您是说
是定义yaml的机器上的有效环境变量?您可能需要首先在本地处理yaml,以替换这些变量。类似于
envsubt
的东西应该可以工作我这样做导出apikey=xxxxxxxxxxxxxxxx,并在deployment.yaml文件中执行
env:-name:HOST-value:xxxxxxxxx-name:NAMESPACE-value:XXXXXX-name:apikey-value:“${apikey}”
我创建了secret并将其应用到部署中,如下所示
name:APIKEY value from:secretKeyRef:name:ocapikey key:APIKEY
这对我很有效