我有一个名为env
的{{1}}变量,它指向一个app_conf_path
,该变量依次包含应用程序运行所需的所有值。应用程序需要此\location\file.yaml
其中具有app_conf_path
的位置来运行该应用程序。如何为这种类型的设置创建file.yaml
。现在,我在configmap
中有该file.yaml
,并有指向该persistentvolume
的{{1}}变量。我是最近才知道env
的。任何帮助,将不胜感激。
答案 0 :(得分:1)
我有一个名为
env
的{{1}}变量,它指向一个app_conf_path
,该变量依次包含应用程序运行所需的所有值。应用程序需要此\location\file.yaml
其中具有app_conf_path
的位置来运行该应用程序。如何为这种类型的设置创建file.yaml
?
我将开始讨论ConfigMaps的概念:
- 可以在
configmap
类型的卷中引用存储在ConfigMap
对象中的数据,然后由Pod中运行的容器化应用程序使用。- 引用
configMap
对象时,只需在卷中提供其名称即可引用它。您还可以自定义用于ConfigMap中特定条目的路径
从文件创建ConfigMap:
configMap
kubectl create configmap <CONFIGMAP_NAME> --from-file=/location/file.yaml
参数即可,例如:--from-file
我想停止挂载具有此
kubectl create configmap <CONFIGMAP_NAME> \ --from-file=path/db.properties \ --from-file=path/ui.properties
的{{1}},而persistentvolume
是一个简单的file.yaml
文件,其中包含file.yaml
和{{1 }}用于其他yaml
根据上面看到的概念,您可以不必使用dbconnectionstrings
来实现将文件挂载到PV以提供配置文件的意图。
可复制的示例:
这将是一个示例,向您展示如何实现问题所需要的部分。
paths
窗格,其中有一个安装文件安装在apps
中,并且该文件路径将是一个名为ConfigMap
的Env变量。首先,我将创建一个名为ubuntu
的文件并添加3个值:
/tmp/file.yaml
注意: 名称app_conf_path
并不常见,我使用它来模拟您的环境,通常我们使用类似file.yaml
的名称,不需要任何以前的结构,只需$ cat file.yaml
key1: value1
key2: value2
key3: value3
对形式的所有值,就像我的示例一样。
file.yaml
创建名为app.properties
的配置映射。该文件位于我正在运行命令的文件夹中,因此无需指定完整路径:key:value
文件名成为configmap中的引用,以后将使用。
app.config
file.yaml
的ENV变量添加到$ kubectl create configmap app.config --from-file=file.yaml
configmap/app.config created
,这是为此的$ kubectl describe configmap app.config
Name: app.config
Namespace: default
Labels: <none>
Annotations: <none>
Data
====
file.yaml:
----
key1: value1
key2: value2
key3: value3
Events: <none>
:app_conf_path
注意:这是一个非常有趣的步骤。我们使用/tmp/file.yaml
创建一个app-deploy.yaml
,并将所需位置设置为apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
labels:
app: my-app
spec:
replicas: 1
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: ubuntu
image: ubuntu
command: [ "/bin/bash", "-c", "--" ]
args: [ "while true; do sleep 3000; done;" ]
volumeMounts:
- name: config-volume
mountPath: /tmp
env:
- name: app_conf_path
value: "/tmp/file.yaml"
volumes:
- name: config-volume
configMap:
name: app.config
的{{1}}。 volume
的每个部分将是该文件夹中的文件。由于我们仅通过1个文件创建了该文件,因此它是唯一将要挂载的文件。我们还将configmap
设置为您所需的mount
,作为文件的路径。
volume
在吊舱内打开一个外壳,以查看结果:configmap
现在,我们已达到您的要求。
在窗格中有一个名为ENV name
的配置文件,其中包含我们用于生成配置文件的配置设置。
您不必担心分别创建和维护卷。
如果您仍有任何疑问,请在评论中告诉我。
答案 1 :(得分:0)
通常将在configmap中设置配置,例如:
data:
file.yaml: |
# Some config
# content goes here
然后在您的pod模板中,您会看到类似的内容
containers:
- ...
env:
- name: app_conf_path
value: /config/file.yml
volumeMounts:
- name: config
mountPath: /config
volumes:
- name: config
configMap:
name: your-configmap
答案 2 :(得分:0)
可以使用YAML清单或kubectl创建配置映射。
kubectl create configmap app_conf_path --from-file=file.yaml
OR
configmap/configmap-multikeys.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: app_conf_path
data:
Key1: very
Key2: value2
kubectl create -f filename.yaml
apiVersion: v1
kind: Pod
metadata:
name: busy
spec:
containers:
- name: busy
image: busybox
volumeMounts:
- name: config
mountPath: /etc/config
volumes:
- name: config
configMap:
name: app_conf_path