我有关于configmap的文档:
https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#define-container-environment-variables-using-configmap-data
据我了解,我可以从两个文件创建一个配置映射(game-config-2) (game.properties和ui.properties)使用
kubectl create configmap game-config-2 --from-file=configure-pod-container/configmap/kubectl/game.properties --from-file=configure-pod-container/configmap/kubectl/ui.properties
现在我看到configmap
kubectl describe configmaps game-config-2
Name: game-config-2
Namespace: default
Labels: <none>
Annotations: <none>
Data
====
game.properties: 158 bytes
ui.properties: 83 bytes
如何使用该configmap?我尝试过这种方式:
envFrom:
- configMapRef:
name: game-config-2
但这不起作用,env变量未从configmap中选取。或者我可以在envFrom下有两个configMapRef?
答案 0 :(得分:3)
是的,pod或部署可以从一堆configMapRef条目中获取环境:
python.exe
最好从Yaml文件中为k8s法治创建它们:
config_general.yaml
Anaconda3
encouragement-api / config_private.yaml:
spec:
containers:
- name: encouragement-api
image: registry-......../....../encouragement.api
ports:
- containerPort: 80
envFrom:
- configMapRef:
name: general-config
- configMapRef:
name: private-config
应用两个configmap:
apiVersion: v1
kind: ConfigMap
metadata:
name: general-config
data:
HOSTNAME: Develop_hostname
COMPUTERNAME: Develop_compname
ASPNETCORE_ENVIRONMENT: Development
运行并执行到pod中,然后运行apiVersion: v1
kind: ConfigMap
metadata:
name: private-config
data:
PRIVATE_STUFF: real_private
我将config_general.yaml与开发人员的代码放置在相同的存储库中,他们可以随意更改它。密码和敏感值保存在config_private.yaml文件中,该文件位于其他位置(S3加密存储区),其中的值都经过base64编码,从而提高了安全性。
答案 1 :(得分:1)
解决此问题的一种方法是使用多个数据键/值创建ConfigMap:
apiVersion: v1
kind: ConfigMap
metadata:
name: conf
data:
game.properties: |
<paste file content here>
ui.properties: |
<paste file content here>
在粘贴文件内容之前,请不要忘记|
符号。
答案 2 :(得分:0)
不确定是否可以从configmap中的特定文件中加载所有key:value对作为pod中的环境变量。您可以将特定配置图中的所有key:value对作为环境变量加载到pod中。见下文
apiVersion: v1
kind: ConfigMap
metadata:
name: special-config
namespace: default
data:
SPECIAL_LEVEL: very
SPECIAL_TYPE: charm
apiVersion: v1
kind: Pod
metadata:
name: dapi-test-pod
spec:
containers:
- name: test-container
image: gcr.io/google_containers/busybox
command: [ "/bin/sh", "-c", "env" ]
envFrom:
- configMapRef:
name: special-config
restartPolicy: Never
SPECIAL_LEVEL=very
SPECIAL_TYPE=charm
答案 3 :(得分:0)
如@Emruz_Hossain所述,如果game.properties和ui.properties仅具有env变量,那么它可以为您工作
kubectl create configmap game-config-2 --from-env-file=configure-pod-container/configmap/kubectl/game.properties --from-env-file=configure-pod-container/configmap/kubectl/ui.properties
答案 4 :(得分:0)
不允许多个--from-env-file。 多个--from-file将为您工作。
例如:
cat config1.txt
var1=val1
cat config2.txt
var3=val3
var4=val4
kubectl create cm details2 --from-env-file=config1.txt --from-env-file=config2.txt -o yaml --dry-run
输出
apiVersion: v1
data:
var3: val3
var4: val4
kind: ConfigMap
name: details2
k create cm details2 --from-file=config1.txt --from-file=config2.txt -o yaml --dry-run
输出
apiVersion: v1
data:
config1.txt: |
var1=val1
config2.txt: |
var3=val3
var4=val4
kind: ConfigMap
name: details2