kubernetes configmap集合来自yaml配置中的文件
如何以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不知道本地文件的路径。您可以通过
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,则有一些特殊的函数可用于执行此操作