我们可以在 Config 映射中使用 "data" 作为 yaml 文件而不是 Json 文件吗

Can we use "data" as a yaml file instead of Json file in Config map

让我们以配置映射为例

apiVersion: v1
kind: ConfigMap
data:
  abc.yml: |-
<yml here>

收到类似未能将 yaml 解析为 Json 的错误。

从文件创建 ConfigMap

kubectl create configmap myconfig --from-file=youfile.yml

您可以在 kubernetes docs

上查看更多示例

这些可能是问题所在 1. 问题很可能与缩进有关。 2. 从 abc.yml 中删除 '-':|- 并检查

我按照以下步骤将 yaml 文件加载到 configmap 中。它运行良好。

master $ cat c.yaml
apiVersion: v1
data:
  redis-config: |
    maxmemory 2mb
    maxmemory-policy allkeys-lru
kind: ConfigMap
metadata:
  name: example-redis-config
master $ kubectl create configmap  testcfg --from-file=./c.yaml
master $ kubectl get cm testcfg -oyaml
apiVersion: v1
data:
  c.yaml: |
    apiVersion: v1
    data:
      redis-config: |
        maxmemory 2mb
        maxmemory-policy allkeys-lru
    kind: ConfigMap
    metadata:
      name: example-redis-config
kind: ConfigMap
metadata:
  creationTimestamp: 2019-03-07T08:35:18Z
  name: testcfg
  namespace: default
  resourceVersion: "7520"
  selfLink: /api/v1/namespaces/default/configmaps/testcfg
  uid: f033536d-40b3-11e9-a67d-0242ac11005b

是的,你可以这样做,但你应该注意语法。您还可以遵循 here.

中的 yaml 技术

如果你用kubectl create configmap myconfig --from-file=abc.yml就可以了

但是如果你在 myconfig.yaml 中为你的 configmap 编写整个 yaml 文件,然后 运行 kubectl create -f myconfig.yaml,那么你应该关心语法。

假设您的 abc.yml 文件如下:

a:
  b: b1
  c: c1
d: d1

然后编写您的 myconfig.yaml 文件:

apiVersion: v1
kind: ConfigMap
data:
  abc.yml: |
    a:
      b: b1
      c: c1
    d: d1

现在 运行 kubectl create -f myconfig.yaml。 就是这样。

Kubernetes 快乐!!!