convoy docs
Search

Roadmap

What convoy implements today, what is planned, and what convoy does not try to do.

This page lists the state of convoy v0.9.0. The planned items have no order and no dates. A feature with the “Not built” badge in the other pages is on this list.

Implemented#

AreaWhat worksRead more
APIAn aggregated API server with Release, Cluster, ReleaseInventory, three source kinds and two health rule set kinds. RBAC per subresource.API Reference
SourcesGitRepository (branch, tag, commit), HelmRegistry, OCIRegistry (Helm charts). Auth basic and token for all three, and sshKey for Git.Sources
RenderingHelm (in-process, vendored dependencies), kustomize, plain manifests. Ordered Helm values layers.Rendering
MutationsjsonPatch, strategicMergePatch, goTemplate, celTransform, syncWave, with cluster metadata as context.Mutations
ApplyServer-side apply dry run, Server-Side Apply, prune with CRD and Namespace protection, a durable inventory.Apply and prune
Sync policyAutomatic and manual mode, /sync, forced sync, retry backoff.Sync policy
DriftDrift detection with server-side dry run, and self-heal in automatic mode.Drift
HealthCEL health rules, per-resource states with a deadline, the Healthy condition.Health assessment
OrderingSync waves in a Release, and wave order of Releases on one cluster.Sync waves
HookspreSync, postSync, syncFailed, preDelete and postDelete hooks with Job or Pod.Lifecycle hooks
HistoryA render store on S3, GCS, Azure Blob or a file system. History, retention and pins to earlier renders.Pin and history
RolloutProgressive rollout with a deadline, and automatic rollback to the last healthy render.Progressive rollout
DeletionDeletion policies and finalizers for Releases and Clusters.Deletion
ScaleSharding by target cluster for high availability and scale, shard-scoped caches.Scaling and high availability
CLIThe kubectl convoy plugin.kubectl convoy

Planned#

Sources and content#

  • Pull non-chart OCI artifacts (plain manifests and kustomize) from an OCIRegistry.
  • Render jsonnet content.
  • Helm dependencyMode: resolve, which downloads chart dependencies at render time.
  • Git semver refs.
  • Custom CA certificates with tls.caPublicCertRef.
  • More auth types: githubApp, oidc and cloudIdentity for Git. oidc and cloudIdentity for Helm. dockerConfig, oidc and cloudIdentity for OCI.
  • Push triggers from source webhooks. The webhook field exists, but no receiver.

Delivery and observation#

  • Drift checks that start from watches on the target cluster, not only from the periodic reconcile.
  • Reports of objects on the cluster that convoy applied before and does not render now.
  • Translation of Helm hooks (helm.sh/hook) into lifecycle hooks.
  • Garbage collection of old lifecycle hook workloads.

Clusters#

  • Agent (pull) mode for clusters that the control plane cannot reach.
  • More Cluster auth types: token, clientCert, execPlugin and oidc.

Fleets#

  • ReleaseTemplate and Fleet: generate one Release for each template and cluster pair. See Fleet design.
  • Rollout strategies across clusters.
  • helm.ignoreMissingValuesFiles, to skip values files that do not exist for a cluster.

Security and operations#

  • Cross-namespace references with a ReferenceGrant object. See ReferenceGrant.
  • A least-privilege identity for each target cluster, used for the apply and the dry run.
  • Metrics of the controller-manager and the observer.
  • A production install bundle and released kubectl-convoy binaries.

Later#

  • Notifications (Slack, webhooks, PagerDuty).
  • A web dashboard.

Non-goals#

  • Secret management. Use a secret manager, for example External Secrets or Vault.
  • Traffic shifting. convoy has health-gated rollouts and automatic rollback. Canary and blue-green traffic control stay with other tools.
  • Workloads outside Kubernetes. convoy deploys only to Kubernetes clusters.
  • Fleet design

    The design of ReleaseTemplate and Fleet, two planned kinds that generate one Release for each cluster.

  • ReferenceGrant

    The decided model for references across namespaces. It is not designed yet.