我曾尝试使用 kustomize 将属性文件作为配置图加载。
为此,我在 github 中创建了一个示例集关联。
使用基础文件:
#kustomize build base
apiVersion: v1
data:
config: |-
dbport=1234
dcname=sfsdf
dbssl=false
locktime=300
domainuser=
kind: ConfigMap
metadata:
labels:
owner: sara
name: database-configmap
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: nginx
owner: sara
name: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
owner: sara
template:
metadata:
labels:
app: nginx
owner: sara
spec:
containers:
- image: nginx
name: nginx
使用外部文件:
#kustomize build file
apiVersion: v1
data:
config: "dbport=156767\r\ndcname=dfsd\r\ndbssl=false\r\nlocktime=300\r\ndomainuser=somedts"
kind: ConfigMap
metadata:
labels:
env: dev
owner: sara
name: dev-database-configmap
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: nginx
env: dev
owner: sara
name: dev-nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
env: dev
owner: sara
template:
metadata:
labels:
app: nginx
env: dev
owner: sara
spec:
containers:
- image: nginx
name: nginx
如果您发现 configmap|
已被删除,并且被替换为\r\n
单个字符串。如何修复此对齐?
答案1
将其发布为社区维基,欢迎随意编辑和扩展。
正如 @mdaniel 提到的评论:
好吧,除了 \r 字符之外,这两种形式是相同的; : | 标量引用仅供人类使用——当它进入集群时,它的形式是 config:“whatever\nwhatever-else\n”,yaml2json 会显示这两种形式,或者,当然,它实际上是如何在 Pod 中实现的
您可以通过从 kubernetes 集群获取 configmap 详细信息来检查这一点json
,并查看它们是否以相同的方式存储(除了\r
上面提到的附加内容):
$ kubectl get cm database-configmap -o json
{
"apiVersion": "v1",
"data": {
"config": "dbport=1234\ndcname=sfsdf\ndbssl=false\nlocktime=300\ndomainuser="
},
"kind": "ConfigMap",
...
和
$ kubectl get cm dev-database-configmap -o json
{
"apiVersion": "v1",
"data": {
"config": "dbport=156767\r\ndcname=dfsd\r\ndbssl=false\r\nlocktime=300\r\ndomainuser=somedts"
},
"kind": "ConfigMap",
...
StackOverflow 上有一个答案,简要地展示了\n、\r 和 \r\n 之间的区别。