Jam*_*lin 23 kubernetes kubectl
我现在正在编写一个 ansible playbook,它在 kubernetes 中部署了一个 dockerized 应用程序。但是,出于分子目的,我宁愿不对执行后需要应用的文件进行硬编码kompose convert -f docker-compose.yaml --volumes hostPath 有没有办法应用目录中的所有文件?
Jon*_*nas 44
您可以应用文件夹中的所有文件
kubectl apply -f <folder>
Run Code Online (Sandbox Code Playgroud)
您可能还对使用Kustomize的清单文件参数化感兴趣,例如在 prod 命名空间中使用比在测试命名空间中更多的副本。您可以应用参数化清单文件
kubectl apply -k <folder>
Run Code Online (Sandbox Code Playgroud)
如果您想应用给定目录中的所有文件,上述将目录作为“-f”选项的命令非常有效。
以下应该应用当前目录中匹配给定条件的 yaml 文件(例如,这里所有以 test 开头的 yaml 文件)
kubectl apply $(ls test*.yaml | awk ' { print " -f " $1 } ')
Run Code Online (Sandbox Code Playgroud)
使用 ansible 模块的特定于 ansible 的答案k8s是:
- name: Apply all manifests in a given folder
k8s:
state: present
definition: "{{ lookup('template', '{{ item }}') }}"
namespace: default
with_fileglob:
- "manifests/*.yaml"
- "manifests/*.j2"
Run Code Online (Sandbox Code Playgroud)
这还允许您对清单进行模板化,并在应用整个文件夹时即时解析它们。
请注意,此 ansible 任务期望该manifests文件夹与正在运行的 playbook 位于同一路径中。
| 归档时间: |
|
| 查看次数: |
19967 次 |
| 最近记录: |