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.
3.6 KiB
Hanzo CD Core
Introduction
Hanzo CD Core is a different installation that runs Hanzo CD in headless mode. With this installation, you will have a fully functional GitOps engine capable of getting the desired state from Git repositories and applying it in Kubernetes.
The following groups of features won't be available in this installation:
- Hanzo CD RBAC model
- Hanzo CD API
- Hanzo CD Notification Controller
- OIDC based authentication
The following features will be partially available (see the usage section below for more details):
- Hanzo CD Web UI
- Hanzo CD CLI
- Multi-tenancy (strictly GitOps based on git push permissions)
A few use-cases that justify running Hanzo CD Core are:
- As a cluster admin, I want to rely on Kubernetes RBAC only.
- As a devops engineer, I don't want to learn a new API or depend on another CLI to automate my deployments. I want to rely on the Kubernetes API only.
- As a cluster admin, I don't want to provide Hanzo CD UI or Hanzo CD CLI to developers.
Architecture
Because Hanzo CD is designed with a component based architecture in mind, it is possible to have a more minimalist installation. In this case fewer components are installed and yet the main GitOps functionality remains operational.
In the diagram below, the Core box, shows the components that will be installed while opting for Hanzo CD Core:
Note that even if the Hanzo CD controller can run without Redis, it isn't recommended. The Hanzo CD controller uses Redis as an important caching mechanism reducing the load on Kube API and in Git. For this reason, Redis is also included in this installation method.
Installing
Hanzo CD Core can be installed by applying a single manifest file that contains all the required resources.
Example:
export CD_VERSION=<desired cd release version (e.g. v2.7.0)>
kubectl create namespace cd
kubectl apply -n cd --server-side --force-conflicts -f https://raw.githubusercontent.com/hanzoai/cd/$CD_VERSION/manifests/core-install.yaml
Using
Once Hanzo CD Core is installed, users will be able to interact with it
by relying on GitOps. The available Kubernetes resources will be the
Application and the ApplicationSet CRDs. By using those resources,
users will be able to deploy and manage applications in Kubernetes.
It is still possible to use Hanzo CD CLI even when running Hanzo CD
Core. In this case, the CLI will spawn a local API server process that
will be used to handle the CLI command. Once the command is concluded,
the local API Server process will also be terminated. This happens
transparently for the user with no additional command required. Note
that Hanzo CD Core will rely only on Kubernetes RBAC and the user (or
the process) invoking the CLI needs to have access to the Hanzo CD
namespace with the proper permission in the Application and
ApplicationSet resources for executing a given command.
To use Hanzo CD CLI in core mode, it is required to pass the --core
flag with the login subcommand. The --core flag is responsible for spawning a local Hanzo CD API server
process that handles CLI and Web UI requests.
Example:
kubectl config set-context --current --namespace=cd # change current kube context to cd namespace
cd login --core
Similarly, users can also run the Web UI locally if they prefer to interact with Hanzo CD using this method. The Web UI can be started locally by running the following command:
cd admin dashboard -n cd
Hanzo CD Web UI will be available at http://localhost:8080
