openshift 3.11 - oc 进程 - 如何传递环境变量?

openshift 3.11 - oc process - how to pass env variables?

我希望在我的 openshift oc 进程命令中传递环境变量。

我看到了参数文件的选项,但没有看到环境变量的选项。

问题:params = 环境变量吗?我的意思是我可以使用这个选项设置环境变量吗?我试过了,但是部署完成后我没有设置任何环境变量。

我正在阅读以下文档。 https://docs.openshift.com/container-platform/3.11/dev_guide/templates.html

我实现设置环境变量的唯一方法如下所示

oc process -f helloworld.yaml | oc create -f -
curl http://servertofetchenvironmentvariables:5005/env/dev/helloworld | oc set env dc/helloworld -

这结束了两次部署。解决此问题并将其作为一个命令的任何线索都会有所帮助。我必须使用模板来创建我的应用程序。

Question: Are params = environment variables?

不,参数仅适用于您的模板文件。您的模板文件包含占位符,例如“${MY_PASSWORD}”,然后在使用 oc process.

时替换这些占位符

I mean can i set env variables using this option?

可以,但您需要编辑模板文件以包含所有这些环境变量和相关占位符。

Only way I am achieving setting up my env variables is like below

这绝对有效,因为您随后会使用新的环境变量更新创建的 DeploymentConfig(在您的情况下为 dc/helloworld)。

一个很好的替代方法是使用 ConfigMap 填充环境变量(因此它们与您的 Deployment 完全分开)使用 envFrom 像这样:

apiVersion: v1
kind: Pod
metadata:
  name: dapi-test-pod
spec:
  containers:
    - name: test-container
      image: k8s.gcr.io/busybox
      command: [ "/bin/sh", "-c", "env" ]
      envFrom:
      - configMapRef:
          name: special-config
  restartPolicy: Never

这也会将您的配置与 Deployment 分离,您可以在 ConfigMap 中存储/更改环境变量。

来源:https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#configure-all-key-value-pairs-in-a-configmap-as-container-environment-variables