使用 OpenShift 模板在应用期间有条件地包含/排除某些资源

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

我正在使用 Ansible 来自动化

oc process -f allresources.yaml | oc apply -f -
命令。在
allresources.yaml
模板内部,我有我的路线、服务等...我想向模板添加额外但可选的路线。该模板将在
oc apply
阶段部署 HTTPS 和(可选)HTTP 路由。开发人员并不总是需要 HTTP 路由,因此我希望可以在存储库 Jenkinsfile 中对其进行配置。

问题归结为:有没有办法向

oc process
添加选择器/条件,从而仅评估与选择器/条件匹配的资源。最终,Ansible 将评估 Jenkins 配置并确定如何处理
oc process
命令。

大致如下:

oc process -f allresources.yaml APP=someapp ENV=dev --ignore="HTTPRoute" | oc apply -f -"
openshift
1个回答
0
投票

openshift 模板中不支持条件。但是,由于您使用的是 Ansible,因此您有很多选择:

  • 您可以拥有多个模板并有条件地应用它们。

    - name: apply main templates
      shell: oc process -f allresources.yaml | oc apply -f-
    
    - name: apply route templates
      when: route_required
      shell: oc process -f route.yaml | oc apply -f-
    
  • 您可以通过 Ansible

    template
    模块使用 Jinja 模板,而不是 openshift 模板。

    - name: render templates
      template:
        src: allresources.yaml.j2
        dest: allresources.yaml
    
    - name: apply generated manifests
      command: oc apply -f allresources.yaml
    
© www.soinside.com 2019 - 2024. All rights reserved.