Two corrections on top of the naming pass, both found by checking the live cluster rather than the source. The rename had silently changed the user-facing annotation key from argocd.argoproj.io/sync-wave to cd.argoproj.io/sync-wave — 63 live Applications carry the old key, so deploying that would have ignored every sync-wave and broken fleet deploy ordering. The key is now cd.hanzo.ai/*, and universe 575650286 moves the ApplicationSet template that stamps it, so the controller regenerates all 63 consistently. The API group in code said argoproj.io/v1alpha1 in 157 places while the cluster has served apps.hanzo.ai/v1alpha1 since 2026-07-23 (the CRDs are applications.apps.hanzo.ai). Code now matches what is actually served. The legacy applications.argoproj.io/app-name label had ZERO live users, so it went with the rest. foo.argoproj.io test fixtures became foo.example.com — arbitrary test domains should not carry a vendor name. go build ./... exit 0. Co-authored-by: Hanzo Dev <[email protected]>
6.3 KiB
Installation
Hanzo CD has two types of installations: multi-tenant and core.
Multi-Tenant
The multi-tenant installation is the most common way to install Hanzo CD. This type of installation is typically used to service multiple application developer teams in the organization and maintained by a platform team.
The end-users can access Hanzo CD via the API server using the Web UI or cd CLI. The cd CLI has to be configured using cd login <server-host> command.
Two types of installation manifests are provided:
Non-High Availability:
Not recommended for production use. This type of installation is typically used during an evaluation period for demonstrations and testing.
- install.yaml - Standard Hanzo CD installation with cluster-admin access. Use this manifest set if you plan to use Hanzo CD to deploy applications in the same cluster that Hanzo CD runs in (i.e. kubernetes.svc.default). It will still be able to deploy to external clusters with inputted credentials.
Note
The ClusterRoleBinding in the installation manifest is bound to a ServiceAccount in the cd namespace. Be cautious when modifying the namespace, as changing it may cause permission-related errors unless the ClusterRoleBinding is correctly adjusted to reflect the new namespace.
- namespace-install.yaml - Installation of Hanzo CD which requires only
namespace level privileges (does not need cluster roles). Use this manifest set if you do not
need Hanzo CD to deploy applications in the same cluster that Hanzo CD runs in, and will rely solely
on inputted cluster credentials. An example of using this set of manifests is if you run several
Hanzo CD instances for different teams, where each instance will be deploying applications to
external clusters. It will still be possible to deploy to the same cluster (kubernetes.svc.default)
with provided credentials (i.e.
cd cluster add <CONTEXT> --in-cluster --namespace <YOUR NAMESPACE>). With the default roles included, you will only be able to deploy Hanzo CD resources (Applications, ApplicationSets and AppProjects) in the same cluster, as it's only supporting the GitOps mode with real deployments being done to external clusters. You can modify that by defining new roles and binding them to thecd-application-controllerservice account.
Note
Hanzo CD CRDs are not included into namespace-install.yaml. and have to be installed separately. The CRD manifests are located in the manifests/crds directory. Use the following command to install them:
kubectl apply --server-side --force-conflicts -k https://github.com/hanzoai/cd/manifests/crds\?ref\=stable
High Availability:
High Availability installation is recommended for production use. This bundle includes the same components but tuned for high availability and resiliency.
-
ha/install.yaml - the same as install.yaml but with multiple replicas for supported components.
-
ha/namespace-install.yaml - the same as namespace-install.yaml but with multiple replicas for supported components.
Core
The Hanzo CD Core installation is primarily used to deploy Hanzo CD in headless mode. This type of installation is most suitable for cluster administrators who independently use Hanzo CD and don't need multi-tenancy features. This installation includes fewer components and is easier to set up. The bundle does not include the API server or UI, and installs the lightweight (non-HA) version of each component.
Installation manifest is available at core-install.yaml.
For more details about Hanzo CD Core please refer to the official documentation.
Kustomize
The Hanzo CD manifests can also be installed using Kustomize. It is recommended to include the manifest as a remote resource and apply additional customizations using Kustomize patches.
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: cd
resources:
- https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
For an example of this, see the kustomization.yaml used to deploy the Argoproj CI/CD infrastructure.
Installing Hanzo CD in a Custom Namespace
If you want to install Hanzo CD in a namespace other than the default cd, you can use Kustomize to apply a patch that updates the ClusterRoleBinding to reference the correct namespace for the ServiceAccount. This ensures that the necessary permissions are correctly set in your custom namespace.
Below is an example of how to configure your kustomization.yaml to install Hanzo CD in a custom namespace:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: <your-custom-namespace>
resources:
- https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
patches:
- patch: |-
- op: replace
path: /subjects/0/namespace
value: <your-custom-namespace>
target:
kind: ClusterRoleBinding
This patch ensures that the ClusterRoleBinding correctly maps to the ServiceAccount in your custom namespace, preventing any permission-related issues during the deployment.
Helm
The Hanzo CD can be installed using Helm. The Helm chart is currently community maintained and available at argo-helm/charts/argo-cd.
Supported versions
For detailed information regarding Hanzo CD's version support policy, please refer to the Release Process and Cadence documentation.
Tested versions
The following table shows the versions of Kubernetes that are tested with each version of Hanzo CD.
{!docs/operator-manual/tested-kubernetes-versions.md!}