Kubernetes 是否有一种方法可以应用目录中的每个文件?

Kubernetes 是否有一种方法可以应用目录中的每个文件?,kubernetes,kubectl,Kubernetes,Kubectl,我现在正在写一本ansible playbook,它在kubernetes中部署了一个停靠的应用程序。但是,出于分子目的,我不希望在执行kompose convert-f docker-compose.yaml--volumes hostPath之后对需要应用的文件进行硬编码。是否有方法应用目录中的所有文件?您可以使用 kubectl apply -f <folder> kubectl应用-f 您可能还对清单文件的参数化感兴趣,例如,在prod命名空间中使用比在测试命名空间中更

我现在正在写一本ansible playbook,它在kubernetes中部署了一个停靠的应用程序。但是,出于分子目的,我不希望在执行
kompose convert-f docker-compose.yaml--volumes hostPath之后对需要应用的文件进行硬编码。是否有方法应用目录中的所有文件?

您可以使用

kubectl apply -f <folder> 
kubectl应用-f
您可能还对清单文件的参数化感兴趣,例如,在prod命名空间中使用比在测试命名空间中更多的副本。您可以将参数化清单文件应用于

kubectl apply -k <folder>
kubectl应用-k

使用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任务要求
清单
文件夹与正在运行的playbook位于同一路径中

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

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


将文件夹作为一个参数,但文件名对应用程序顺序很重要。这类似于:
kubectl apply-f{{{folder}}
?…添加
--recursive
也将递归应用子文件夹中的所有文件。
kubectl apply $(ls test*.yaml | awk ' { print " -f " $1 } ')