Skip to content

Add enhancements to easily output manifests for GitOps #488

@sudermanjr

Description

@sudermanjr

While looking into using tools like ArgoCD or Flux, we realized that the current reckoner template command could be used to generate a set of manifests that are monitored by a gitops tool. There are several things that might make that process easier:

  • Provide the ability to run something along the lines of https://github.com/latchmihay/k8s-yaml-splitter or https://github.com/patrickdappollonio/kubectl-slice to spit out yaml manifests of each resource, rather than one giant manifest
  • Output the manifests to a specific directory structure. Something like manifests/<RELEASE NAME> - This would ideally be configurable
  • Output the application CRD for tools like ArgoCD
  • Automatically disable the rendering of tests in helm charts
  • Convert helm hooks to argocd hooks
  • Potentially add metadata, such as a label, that would indicate the helm repository and the chart, as well as the fact that reckoner rendered the manifests

Some pitfalls/gotchas to watch out for:

  • Secrets management. This is likely something that we don't necessarily need to worry about, but something to be aware of
  • Decide how to handle namespace creation. Currently reckoner does this for us. Maybe we create namespace manifests that have all the labels/annotations that reckoner would have added?
  • Watch out for charts that detect capabilities. Maybe we can pass in some apiversions?
  • Handling deletion of manifests. If a manifest has been removed, how do we know?
  • Handling list items (like in the prometheus-operator chart)
  • Handling reckoner hooks - Maybe convert to argocd hooks?

Helm template flags that will need to be passed:

--skip-tests
--no-hooks
--include-crds

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementAdding additional functionality or improvementsgoPull requests that update Go codepinnedPrevents stalebot from removing

    Type

    No type
    No fields configured for issues without a type.

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions