如何使用 kustomize 从属性文件加载 configmap?

如何使用 kustomize 从属性文件加载 configmap?

我曾尝试使用 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 之间的区别

相关内容