有没有一种方法可以kubectl应用目录中的每个文件?

时间:2019-12-26 17:03:51

标签: kubernetes yaml kubectl

我现在正在写一个有趣的剧本,它在kubernetes中部署了一个dockerized应用程序。但是,出于分子性的考虑,我不想对kompose convert -f docker-compose.yaml --volumes hostPath之后需要应用的文件进行硬编码,是否可以将所有文件应用到目录中?

3 个答案:

答案 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文件夹与正在运行的剧本的路径相同。