Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
kubernetes configmap集合来自yaml配置中的文件_Kubernetes_Google Cloud Platform_Kubectl_Google Kubernetes Engine - Fatal编程技术网

kubernetes configmap集合来自yaml配置中的文件

kubernetes configmap集合来自yaml配置中的文件,kubernetes,google-cloud-platform,kubectl,google-kubernetes-engine,Kubernetes,Google Cloud Platform,Kubectl,Google Kubernetes Engine,如何以yaml格式描述此命令 kubectl create configmap somename --from-file=./conf/nginx.conf 我希望像下面的yaml那样做,但它不起作用 apiVersion: v1 kind: ConfigMap metadata: name: somename namespace: default fromfile: ./conf/nginx.conf 有什么想法吗?这行不通,因为kubernetes不知道本地文件的路径。您可以通过

如何以yaml格式描述此命令

kubectl create configmap somename --from-file=./conf/nginx.conf
我希望像下面的yaml那样做,但它不起作用

apiVersion: v1
kind: ConfigMap
metadata:
  name: somename
  namespace: default
fromfile: ./conf/nginx.conf

有什么想法吗?

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

kubectl create configmap --dry-run somename --from-file=./conf/nginx.conf --output yaml
$ kustomize build | kubectl apply -f -
--dry run
标志只会在标准输出上显示您的更改,而不会在服务器上进行更改。这将输出一个有效的configmap,因此,如果将其通过管道传输到文件,则可以使用:

kubectl create configmap --dry-run somename --from-file=./conf/nginx.conf --output yaml | tee somename.yaml

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

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
configMapGenerator:
- files:
  - ./conf/nginx.conf
  name: nginx-config
此外,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
要部署您可以像这样运行的所有内容,请执行以下操作:

kubectl create configmap --dry-run somename --from-file=./conf/nginx.conf --output yaml
$ kustomize build | kubectl apply -f -

欲了解更多信息,请参考已有近3年历史的问题,并给出公认的答案,但仅针对来访的新人

这也可以通过舵图来实现。如果您使用的是头盔图表,您可以将这些文件放在图表的
files/
目录下,并将YAML中的这些文件引用为

{{ .Files.Get "files/filename.ext" }}
这种包含也可以基于go中的可用函数进行编码,例如

{{ .Files.Get "files/filename.ext" | b64enc }}

优雅的解决方案我们无法用yaml的方式编写上述命令?这实际上并没有回答OP的问题。干运行将文件的全部内容输出到yaml中,这首先破坏了将其保存在单独文件中的目的。我们希望在yaml中引用该文件(其路径)。这是针对本地开发人员配置映射的。如果您使用的是helm,则有一些特殊的函数可用于执行此操作