我现在正在写一个ansible剧本,在kubernetes中部署一个停靠的应用程序,但是,出于分子化的目的,我不想在执行kompose convert -f docker-compose.yaml --volumes hostPath之后硬编码需要应用的文件有没有办法应用一个目录中的所有文件?
kompose convert -f docker-compose.yaml --volumes hostPath
f45qwnt81#
您可以使用应用文件夹中的所有文件
kubectl apply -f <folder>
您可能还对使用Kustomize的清单文件的 * 参数化 * 感兴趣,例如,在prod-namespace中使用的副本比在test-namespace中使用的副本多。
kubectl apply -k <folder>
8yparm6h2#
如果您想应用给定目录中的所有文件,那么上面的命令给予目录作为“-f”的一个选项非常有效。下面应该应用当前目录中与给定条件匹配的yaml文件(例如,此处所有以test开头的yaml)
kubectl apply $(ls test*.yaml | awk ' { print " -f " $1 } ')
nwlqm0z13#
使用ansible k8s模块,ansible特定的答案是:
k8s
- name: Apply all manifests in a given folder k8s: state: present definition: "{{ lookup('template', '{{ item }}') }}" namespace: default with_fileglob: - "manifests/*.yaml" - "manifests/*.j2"
这还允许您对清单进行模板化,并在应用整个文件夹时动态地解析它们。请注意,此可靠任务要求manifests文件夹与正在运行的行动手册位于同一路径中。
manifests
ftf50wuq4#
这对我很有效〉〉kubectl apply -f .
kubectl apply -f .
4条答案
按热度按时间f45qwnt81#
您可以使用应用文件夹中的所有文件
您可能还对使用Kustomize的清单文件的 * 参数化 * 感兴趣,例如,在prod-namespace中使用的副本比在test-namespace中使用的副本多。
8yparm6h2#
如果您想应用给定目录中的所有文件,那么上面的命令给予目录作为“-f”的一个选项非常有效。
下面应该应用当前目录中与给定条件匹配的yaml文件(例如,此处所有以test开头的yaml)
nwlqm0z13#
使用ansible
k8s
模块,ansible特定的答案是:这还允许您对清单进行模板化,并在应用整个文件夹时动态地解析它们。
请注意,此可靠任务要求
manifests
文件夹与正在运行的行动手册位于同一路径中。ftf50wuq4#
这对我很有效〉〉
kubectl apply -f .