Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Native support for traffic/metrics plugins in Argo Rollouts #45

Closed
jgwest opened this issue Mar 4, 2024 · 1 comment · Fixed by #90
Closed

Native support for traffic/metrics plugins in Argo Rollouts #45

jgwest opened this issue Mar 4, 2024 · 1 comment · Fixed by #90
Assignees
Labels
enhancement New feature or request

Comments

@jgwest
Copy link
Member

jgwest commented Mar 4, 2024

Within upstream Argo Rollouts, one can enable traffic management plugins and metric plugins via the standard Argo Rollouts configuration ConfigMap.

However, at present, within Argo Rollouts operator there is no mechanism to specify these via the RolloutManager CR.

As of this writing (once PR #40 has merged), the current operator behaviour is:

  • If there is an existing traffic management plugin defined in the ConfigMap, it will be preserved when we add the OpenShift GitOps Route plugin (not overwritten)
  • Any custom metric plugin in the ConfigMap are overwritten (lost).

However, requiring users to modify the ConfigMap to add plugins is not as desirable as our supporting it 'natively', within the RolloutManager CR.

Native support within the RolloutManager CustomResource would look like this:

For example, something like:

kind: RolloutManager
metadata:
  name: my-rollout-install
  namespace: rollouts
spec:
  # (...)
  plugins:
    trafficManagement:
      - name: "argoproj-labs/gatewayAPI"
        location: "https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-gatewayapi/releases/download/<version>/gateway-api-plugin-<arch>" # file url also supported

    metric:
      - name: "argoproj-labs/sample-prometheus"
        location: "https://github.com/argoproj-labs/rollouts-plugin-metric-sample-prometheus/releases/download/v0.0.4/metric-plugin-linux-amd64" # file url also supported
        sha256: "dac10cbf57633c9832a17f8c27d2ca34aa97dd3d" #optional sha256 checksum of the plugin executable

This will cause the specified values to be inserted into the ConfigMap that is generated by the RolloutManager controller.

Open Questions to be discussed and/or investigated by implementor:

  • Do we need to preserve existing plugins within the ConfigMap, or is it safe to overwrite them now this replacement mechanism is available? My vote is to no longer preserve existing plugins in the ConfigMap.
  • Do we also need to restart the Rollouts install? Does Rollouts automatically detect the new plugin, once the ConfigMap changes?
    • Check whether Rollouts processing plugins on startup, or at any time. If on startup, we will need to restart the Pod.
    • Check how Argo CD operator handles similar cases (if they exist)

Issue Criteria:

  • Add Traffic/metric plugins fields to the RolloutManager custom resource
  • Modify operator to support new fields: addition/modification/removal of contents of these fields should update the ConfigMap respectively.
  • Unit tests to verify behaviour as expected: Addition/removal/modification of the fields
  • E2E tests to verify that Rollouts operator works as expected
@jgwest jgwest added the enhancement New feature or request label Mar 4, 2024
@jgwest
Copy link
Member Author

jgwest commented Mar 4, 2024

Red Hat external issue tracker: https://issues.redhat.com/browse/GITOPS-3987

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants