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

问题描述 投票:0回答:5

我现在正在编写一个 ansible 剧本,在 kubernetes 中部署一个 docker 化的应用程序。但是,出于分子性的目的,我宁愿不对执行后需要应用的文件进行硬编码

kompose convert -f docker-compose.yaml --volumes hostPath
有没有办法应用目录中的所有文件?

kubernetes kubectl
5个回答
148
投票

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

kubectl apply -f <folder> 

您可能还对使用 Kustomize 对清单文件进行参数化感兴趣,例如在 prod 命名空间中使用比在 test 命名空间中更多的副本。您可以使用参数化清单文件

kubectl apply -k <folder>

20
投票

如果您想应用给定目录中的所有文件,上述将目录作为“-f”选项的命令非常有效。

以下内容应应用当前目录中符合给定条件的 yaml 文件(例如,此处所有以 test 开头的 yaml)

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

10
投票

这对我有用>>

kubectl apply -f .


6
投票

使用 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"

这还允许您对清单进行模板化,并在应用整个文件夹时即时解析它们。

请注意,此 ansible 任务期望

manifests
文件夹与正在运行的 playbook 位于同一路径中。


0
投票

移至所有 yaml 文件所在的文件夹。

现在运行

kubectl apply -f .

记住在 -f 标志后面指定

.

© www.soinside.com 2019 - 2024. All rights reserved.