Skip to content
This repository was archived by the owner on May 14, 2025. It is now read-only.
This repository was archived by the owner on May 14, 2025. It is now read-only.

load generic controllers based on their labels #124

Open
@AmitKumarDas

Description

@AmitKumarDas

ProblemStatement: As a DevOps admin I run my controllers as a single binary that makes use of GenericController(s) loaded from metac config file. I want metac to load generic controllers with specific labels & ignore loading of other generic controllers.

PossibleSolution:
Use of predefined label keys such as

  • metac.openebs.io/feature-gate
    • label will be set by DevOps admin
    • label value can either be alpha, beta or release
    • If this label is not set then corresponding controller defaults to release feature-gate
  • tag.metac.openebs.io/<tag-name>
    • label will be set by DevOps admin
    • tag-name will be provided by DevOps admin
    • label value can either be enabled or disabled
kind: GenericController
metadata:
  name: my-controller
  labels:
    # if following label is missing then the GenericController 
    # will be considered as release grade
    metac.openebs.io/feature-gate: alpha # beta & release are other valid values
---
kind: GenericController
metadata:
  name: my-controller
  labels:
    metac.openebs.io/feature-gate: beta
    tag.metac.openebs.io/my-tag-2: enabled 
---
kind: GenericController
metadata:
  name: my-controller
  labels:
    metac.openebs.io/feature-gate: beta
    tag.metac.openebs.io/my-tag-1: enabled 
containers:
- name: my-metac
  image: localhost:5000/my-metac:latest
  command: ["/my-metac"]
  args:
  - --allowed-feature-gate=beta # controllers with either beta or release gate will be loaded
  - --allowed-tags=my-tag-1, my-tag-1 # controllers with these tags will be loaded
  - --logtostderr
  - --run-as-local
  - --workers-count=1 # number of workers per controller
  - --discovery-interval=40s
  - --cache-flush-interval=240s # re-sync interval
  - -v=5

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions