kubernetes 有没有办法让kubectl应用一个目录中的所有文件?

cigdeys3  于 2023-01-12  发布在  Kubernetes
关注(0)|答案(4)|浏览(249)

我现在正在写一个ansible剧本,在kubernetes中部署一个停靠的应用程序,但是,出于分子化的目的,我不想在执行kompose convert -f docker-compose.yaml --volumes hostPath之后硬编码需要应用的文件有没有办法应用一个目录中的所有文件?

f45qwnt8

f45qwnt81#

您可以使用应用文件夹中的所有文件

kubectl apply -f <folder>

您可能还对使用Kustomize的清单文件的 * 参数化 * 感兴趣,例如,在prod-namespace中使用的副本比在test-namespace中使用的副本多。

kubectl apply -k <folder>
8yparm6h

8yparm6h2#

如果您想应用给定目录中的所有文件,那么上面的命令给予目录作为“-f”的一个选项非常有效。
下面应该应用当前目录中与给定条件匹配的yaml文件(例如,此处所有以test开头的yaml)

kubectl apply $(ls test*.yaml | awk ' { print " -f " $1 } ')
nwlqm0z1

nwlqm0z13#

使用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文件夹与正在运行的行动手册位于同一路径中。

ftf50wuq

ftf50wuq4#

这对我很有效〉〉kubectl apply -f .

相关问题