Skip to content

PipelineGroup to share and reuse filters between Pipelines #1115

Description

@suchen-sci

Is your feature request related to a problem? Please describe.
For now, every path in HTTPSever has a corresponding Pipeline. To share filters between pipelines, we use GlobalFilter, which execute before or/and after all the pipelines of a certain HTTPServer.

Describe the solution you'd like
Create a new object called PipelineGroup to share and reuse filters between multiple pipelines. For example, several pipelines share some validation. Other pipelines share same basic auth, etc.

name: pipeine-group
kind: PipelineGroup 

groups:
- group: group1
  before: 
  - filter: adminAuth
  flows:
  - pipeline: pipeline1 
    flow:
    - filter: proxyAdmin1
  - pipeline: pipeline2
    flow:
    - filter: proxyAdmin2


filters:
- name: proxyAdmin1
- name: proxyAdmin2
- name: proxyUser1
- name: proxyUser2
- name: adminAuth

Describe alternatives you've considered
A PipelineGroup can have multiple pipelines in it. And these pipelines can be used by HTTPServer or GRPCServer. Based on design, we can support one or more groups in PipelineGroup.

name: pipeine-group
kind: PipelineGroup 
before: 
- filter: adminAuth

after:
- filter: after

flows:
- pipeline: pipeline1
  flow: 
  - filter: proxyAdmin1

- pipeline: pipeline2
  flow:
  - filter: proxyAdmin2


filters:
- name: proxyAdmin1
- name: proxyAdmin2
- name: proxyUser1
- name: proxyUser2
- name: adminAuth

Additional context
Nop.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions