【问题标题】:how to run cmd kubectl apply using Ansible properly如何正确使用 Ansible 运行 cmd kubectl apply
【发布时间】:2022-01-07 05:21:05
【问题描述】:

我正在尝试自动化以下操作:

  1. 应用物理卷
    • kubectl apply -f food-pv.yaml
    • kubectl apply -f bar-pv.yaml
  2. 应用物理卷声明
    • kubectl apply -f foo.yaml
    • kubectl apply -f bar.yaml
  3. 应用服务
    • kubectl apply -f this-service.yaml
    • kubectl apply -f that-nodeport.yaml
  4. 应用部署
    • kubectl apply -f something.yaml

现在我可以将 cmds 作为 shell 命令运行,但我认为这不是正确的方法。我一直在阅读 Ansible 文档,但我没有看到我需要为此做些什么。有没有更好的方法来应用这些 yaml 文件而不使用一系列 shell cmd?

提前致谢

【问题讨论】:

    标签: kubernetes ansible kubectl


    【解决方案1】:

    最好的方法是使用 ansible kubernetes.core 集合https://github.com/ansible-collections/kubernetes.core

    文件示例:

        - name: Create a Deployment by reading the definition from a local file
      kubernetes.core.k8s:
        state: present
        src: /testing/deployment.yml
    

    因此,您可以使用 state: present 从包含对象的 yaml 定义的不同文件夹中循环访问

    【讨论】:

    • @Zeitounator 你是对的,固定
    【解决方案2】:

    我目前没有正在运行的 kube 集群来测试它,但您基本上应该能够使用 kubernetes.core.k8s module 循环在单个任务中运行所有这些

    这是我认为应该满足您的要求的内容(前提是您对 kube 实例的访问权限已在您的环境中配置并正常,并且您按照文档中的说明安装了上述集合)

    - name: install my kube objects
      hosts: localhost
      gather_facts: false
    
      vars:
        obj_def_path: /path/to/your/obj_def_dir/
        obj_def_list:
          - food-pv.yaml
          - bar-pv.yaml
          - foo.yaml
          - bar.yaml
          - this-service.yaml
          - that-nodeport.yaml
          - something.yaml
    
    
      tasks:
        - name: Install all objects from def files
          k8s:
            src: "{{ obj_def_path }}/{{ item }}"
            state: present
            apply: true
          loop: "{{ obj_def_list }}"
    
    

    【讨论】:

      猜你喜欢
      • 2021-03-27
      • 2019-06-03
      • 2019-08-24
      • 1970-01-01
      • 1970-01-01
      • 2021-08-01
      • 2018-05-02
      • 2018-06-14
      • 1970-01-01
      相关资源
      最近更新 更多