Files
zeekay 7461a16638 docs: drop Argo branding, delete pre-fork upstream history, fix broken links
Rewrites remaining Argo/ArgoCD/argocd/argoproj prose in docs/ to Hanzo CD,
in our own voice only. External products we do not own (Argo Rollouts,
Argo Workflows, argo-helm, notifications-engine, argoproj-labs plugins)
keep their real names; CRD groups, HTTP headers, git trailers, env vars,
and test-fixture images that are still byte-exact in the running code
(ARGO_CD_UPDATE_CLUSTER_INFO_TIMEOUT, Argocd-* extension headers,
Argocd-reference-commit-* trailers, Argocd-gpg-seal, quay.io/argoprojlabs
cd-e2e-container) are left untouched.

Deletes docs/operator-manual/upgrading/1.0-1.1.md through 3.4-3.5.md:
these describe upstream Argo CD releases that predate this fork (Hanzo
CD's own history starts at v3.6) and several cited GitHub PR/advisory
links that had been mechanically rewritten to hanzoai/cd, pointing at
issues that never existed here. Deletes docs/developer-guide/dependencies.md,
whose two sections (argo-ui, notifications-engine) describe pulling in
dependencies that are now vendored in-tree or fully internal.

Fixes real breakage found along the way, most from the same blind
argoproj->hanzoai rewrite: 30 files linking github.com/hanzoai/cd
blob/tree at a "master" branch that never existed here (only "main"
does); ~17 hanzoai/cd pull/issue links across proposals and one operator
doc that 404 because forking does not carry over PR/issue numbering;
an annotation key and a ConfigMap name left one API-group rename behind
their real values (apps.hanzo.ai/*, cd-rbac-cm); a page rename
(Argo-CD-Integration.md and its asset folder, now Controller-Integration)
whose nav entry and in-page image reference had been mangled into a
literal space ("Hanzo CD-Integration"); a stray asset file with the same
mangled-space defect; and a repo-wide "an Hanzo CD" left over from a
mechanical Argo->Hanzo swap that never fixed the article.

mkdocs.yml: trims the Upgrading nav to the one real entry, drops
dependencies.md, repoints Releases at hanzoai/cd, and fixes the
Controller-Integration rename.

Verified with a strict mkdocs build (0 warnings) after the fixes above.

Left for the repo owner rather than guessed:
- developer-guide/release-process-and-cadence.md and
  proposals/feature-bounties*.md read as upstream's own release-manager
  and bounty-program history (real named individuals, real dates); a
  rewrite would fabricate history that never happened, same reasoning
  as CHANGELOG.md.
- assets/versions.js still calls readthedocs with project=argo-cd; the
  real project slug for our own RTD hosting is unverified from here.
- signed-release-assets.md's cosign --certificate-identity-regexp still
  names .github/workflows/image-reuse.yaml, which does not exist in this
  repo (no .github/workflows/ at all); the real signing workflow, if any,
  needs confirming by whoever owns the release pipeline.
- maintaining-internal-cd-forks.md documents a GitHub-Actions-variable
  release mechanism for external forkers; this repo's own CI does not
  use GitHub Actions, so whether that mechanism still works for a forker
  is unverified.
2026-09-05 01:14:03 -07:00

4.2 KiB

Component Architecture

Hanzo CD is designed with a component based architecture. The goal is to separate the responsibility in different deployable units in order to have the following benefits:

  • Modularity: Provides great level of flexibility. Components interact with each other via an interface. This means that as long as the interface contract is respected, a given component can be replaced without requiring the rest of the system to adapt. It is also possible to run the system without certain components if a specific group of functionality isn't desired.
  • Single responsibility: Helps to determine where the different types of functionality should be implemented which drives for better system cohesiveness.
  • Reusability: Clearly defined interfaces helps in functionality discoverability which benefits reusability of services.

The default Hanzo CD installation is composed by different components and different Kubernetes controllers. The controllers aren't categorized as components as they have proprietary interfaces (CRDs) and therefore, miss the modular nature. There are more resources created while installing Hanzo CD (ConfigMaps, Services, etc), but for simplicity we are covering just the ones directly related with the componentized architecture.

Dependencies

The diagram below has represented all dependencies between the different components used by the default Hanzo CD installation:

Components Diagram

There are 4 logical layers represented in the diagram:

  • UI: This is the presentation layer. Users interact with Hanzo CD mainly by components from this layer.
  • Application: The capabilities required to support the components from the UI layer.
  • Core: The main Hanzo CD gitops functionality is implemented by components and Kubernetes controllers from the Core layer.
  • Infra: Represent the tools that Hanzo CD depends on as part of its infrastructure.

The logical layers also help making the diagram easier to follow as dependencies are represented in a top-down relationship. This means that components from the top layers will be allowed to depend on any component from any of the bottom layers. However components from the bottom layers will never depend on any ones from upper layers.

Responsibility

Below you can refer to a brief description of Hanzo CD components and its main responsibilities.

Webapp

Hanzo CD ships with a powerful web interface that allows managing applications deployed in a given Kubernetes cluster.

CLI

Hanzo CD provides a CLI that can be used by users to interact with the Hanzo CD API. The CLI can also be used for automation and scripting.

API Server

Defines the proprietary API exposed by Hanzo CD that powers the Webapp and the CLI functionalities.

Application Controller

The Application Controller is responsible for reconciling the Application resource in Kubernetes synchronizing the desired application state (provided in Git) with the live state (in Kubernetes). The Application Controller is also responsible for reconciling the Project resource.

ApplicationSet Controller

The ApplicationSet Controller is responsible for reconciling the ApplicationSet resource.

Repo Server

Repo Server plays an important role in Hanzo CD architecture as it is responsible for interacting with the Git repository to generate the desired state for all Kubernetes resources that belongs to a given application.

Redis

Redis is used by Hanzo CD to provide a cache layer reducing requests sent to the Kube API as well as to the Git provider. It also supports a few UI operations.

Kube API

Hanzo CD controllers will connect to the Kubernetes API in order to run the reconciliation loop.

Git

As a gitops tool Hanzo CD requires that the desired state of the Kubernetes resources to be provided in a Git repository.

We use "git" here to stand in for an actual git repo, a Helm repo, or an OCI artifact repo. Hanzo CD supports all those options.

Dex

Hanzo CD relies on Dex to provide authentication with external OIDC providers. However other tools can be used instead of Dex. Check the user management documentation for more details.