我现在正在写一个有趣的剧本,它在kubernetes中部署了一个dockerized应用程序。但是,出于分子性的考虑,我不想对kompose convert -f docker-compose.yaml --volumes hostPath
之后需要应用的文件进行硬编码,是否可以将所有文件应用到目录中?
答案 0 :(得分:4)
您可以通过以下方式应用文件夹中的所有文件
kubectl apply -f <folder>
您可能还对使用Kustomize的清单文件的参数化感兴趣,例如在prod命名空间中使用的副本比在test命名空间中使用的副本更多。您可以使用以下参数应用参数化的清单文件
kubectl apply -k <folder>
答案 1 :(得分:1)
如果要应用给定目录中的所有文件,上述将目录作为“ -f”选项的命令非常适用。
以下应在当前目录中应用符合给定条件的yaml文件(例如,此处所有以test开头的yaml)
kubectl apply $(ls test*.yaml | awk ' { print " -f " $1 } ')
答案 2 :(得分:0)
使用ansible k8s
模块的特定于Ansible的答案将是:
- name: Apply all manifests in a given folder
k8s:
state: present
definition: "{{ lookup('template', '{{ item }}') }}"
namespace: default
with_fileglob:
- "manifests/*.yaml"
- "manifests/*.j2"
这还使您可以对清单进行模板化,并在应用整个文件夹时即时解析它们。
请注意,这项艰巨的任务要求manifests
文件夹与正在运行的剧本的路径相同。