kubernetes configmap在yaml配置中设置from-file

Mao*_*dok 17 google-cloud-platform kubernetes google-kubernetes-engine kubectl

如何以yaml格式描述此命令?

kubectl create configmap somename --from-file=./conf/nginx.conf
Run Code Online (Sandbox Code Playgroud)

我期望做类似下面的yaml,但它不起作用

apiVersion: v1
kind: ConfigMap
metadata:
  name: somename
  namespace: default
fromfile: ./conf/nginx.conf
Run Code Online (Sandbox Code Playgroud)

任何的想法?

jax*_*orm 15

这不起作用,因为kubernetes不知道本地文件的路径.您可以通过执行以下操作来模拟它:

kubectl create configmap --dry-run somename --from-file=./conf/nginx.conf --output yaml
Run Code Online (Sandbox Code Playgroud)

--dry-run标志将仅显示您对stdout的更改,而不是在服务器上进行更改.这将输出一个有效的configmap,所以如果你将它传递给一个文件,你可以使用:

kubectl create configmap --dry-run somename --from-file=./conf/nginx.conf --output yaml | tee somename.yaml
Run Code Online (Sandbox Code Playgroud)

  • 那么有没有办法用yaml的方式来写上面的命令呢? (2认同)
  • 这实际上并没有回答OP的问题。试运行将文件的全部内容输出到 yaml 中,这违背了将其放在单独文件中的目的。我们想要在 yaml 中对文件(其路径)进行*引用*。这是针对本地开发配置映射的。 (2认同)

bGu*_*com 7

近 3 年前的问题,有一个公认的答案,但只是针对那些新来的人。

这也可以通过 Helm Chart 来实现。如果您使用 helm 图表,则可以将这些文件放在files/图表中的目录下,并从 YAML 中引用这些文件:

{{ .Files.Get "files/filename.ext" }}
Run Code Online (Sandbox Code Playgroud)

这种包含也可以根据 go 中可用的函数进行编码,例如

{{ .Files.Get "files/filename.ext" | b64enc }}
Run Code Online (Sandbox Code Playgroud)


Zst*_*ack 5

您可以使用 kustomize,它不仅可以轻松管理配置映射,还可以轻松管理其他资源。我认为您想从 yaml 中的文件创建 configmap,因此您可以在kustomization.yaml文件中执行以下操作:

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
configMapGenerator:
- files:
  - ./conf/nginx.conf
  name: nginx-config
Run Code Online (Sandbox Code Playgroud)

此外,kustomize 非常便于管理所有部署(特别是对于声明式管理非常方便),您可以将所有内容都放在一个 kustomize 文件中,如下所示:

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
secretGenerator:
- envs:
  - .env
  name: my-secrets
configMapGenerator:
- files:
  - ./conf/nginx.conf
  name: nginx-config
resources:
- ./nginx-deployment.yaml
Run Code Online (Sandbox Code Playgroud)

部署您可以像这样运行它的所有内容:

$ kustomize build | kubectl apply -f -
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅此处