我想将Kubernetes yaml文件中的一些值传递给容器。这些值将使用System.getenv("x_slave_host")在我的Java应用程序中读取。我有这个dockerfile:
FROM jetty:9.4
...
ARG slave_host
ENV x_slave_host $slave_host
...
$JETTY_HOME/start.jar -Djetty.port=9090kubernetes yaml文件包含以下部分,我在其中添加了env部分:
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: master
spec:
template:
metadata:
labels:
app: master
spec:
volumes:
- name: shared-data
emptyDir: {}
containers:
- name: master
image: xregistry.azurecr.io/Y:latest
ports:
- containerPort: 9090
volumeMounts:
- name: shared-data
mountPath: ~/.X/experiment
- env:
- name: slave_host
value: slavevalue
- name: jupyter
image: xregistry.azurecr.io/X:latest
ports:
- containerPort: 8000
- containerPort: 8888
volumeMounts:
- name: shared-data
mountPath: /var/folder/experiment
imagePullSecrets:
- name: acr-auth在本地,当我使用docker compose做同样的事情时,它使用args工作。这是一个代码片段:
master:
image: master
build:
context: ./master
args:
- slave_host=slavevalue
ports:
- "9090:9090"所以现在我试着用Kubernetes做同样的事情。但是,我收到以下错误(将其部署到Azure上):
error: error validating "D:\\a\\r1\\a\\_X\\deployment\\kub-deploy.yaml": error validating data: field spec.template.spec.containers[1].name for v1.Container is required; if you choose to ignore these errors, turn validation off with --validate=false换句话说,如何将docker合成文件重写为kubernetes并传递此参数。
谢谢!
发布于 2018-08-06 09:48:52
containers下需要添加env部分,如下所示:
containers:
- name: master
env:
- name: slave_host
value: slavevalue发布于 2018-08-06 16:24:08
为了详细说明@Kun Li的答案,除了直接在部署清单中添加环境变量之外,您还可以创建一个ConfigMap (或Secret,取决于所存储的数据)并在清单中引用这些变量。与手动将环境变量添加到几个不同的应用程序相比,这是在应用程序之间共享相同环境变量的好方法。
请注意,一个ConfigMap可以由一个或多个key: value对组成,它并不限于存储环境变量,这只是其中一个用例。正如我之前提到的,如果数据被归类为敏感数据,请考虑使用Secret。
ConfigMap清单示例,在本例中用于存储环境变量:
apiVersion: v1
kind: ConfigMap
metadata:
name: my-env-var
data:
slave_host: slavevalue使用kubectl create创建包含一个key=value对的ConfigMap
kubectl create configmap my-env --from-literal=slave_host=slavevalue
要获得在ConfigMap中配置的所有环境变量,请在清单中使用以下内容:
containers:
envFrom:
- configMapRef:
name: my-env-var或者,如果您想从包含多个变量的ConfigMap中选择一个特定的环境变量:
containers:
env:
- name: slave_host
valueFrom:
configMapKeyRef:
name: my-env-var
key: slave_host有关在不同情况下使用ConfigMap的更多示例,请参阅此page。
https://stackoverflow.com/questions/51698817
复制相似问题