我该如何用YAML格式描述这个命令?
kubectl create configmap somename --from-file=./conf/nginx.conf
我希望能像下面这样使用yaml,但它不起作用。
apiVersion: v1
kind: ConfigMap
metadata:
name: somename
namespace: default
fromfile: ./conf/nginx.conf
有任何想法吗?
我该如何用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=client somename --from-file=./conf/nginx.conf --output yaml
--dry-run
标记只会在标准输出中显示更改内容,而不会在服务器上进行更改。 这将输出一个有效的配置映射,因此如果将其重定向到文件,则可以使用该文件:
kubectl create configmap --dry-run=client somename --from-file=./conf/nginx.conf --output yaml | tee somename.yaml
fromfile
属性。然后解释了一个可能的替代方案。 - Michael R你可以使用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
要部署所有内容,您可以像这样运行它:
$ kustomize build | kubectl apply -f -
了解更多信息,请参考此处
虽然这是一个三年前的问题,但对于新来的人可能仍有用处。
通过helm chart也可以实现这一点。如果您正在使用helm chart,可以将这些文件放在图表中的files/
目录下,并从YAML中引用这些文件。
{{ .Files.Get "files/filename.ext" }}
这种包含也可以根据go中可用的函数进行编码,例如:
{{ .Files.Get "files/filename.ext" | b64enc }}