Files
zeekayandHanzo Dev 446e343a3d cd: annotations are cd.hanzo.ai, API group is apps.hanzo.ai
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]>
2026-07-28 16:32:14 -07:00

3.0 KiB

OpenUnison

Integrating OpenUnison and Hanzo CD

These instructions will take you through the steps of integrating OpenUnison and Hanzo CD to support single sign-on and add a "badge" to your OpenUnison portal to create a single access point for both Kubernetes and Hanzo CD. These instructions assume you'll be using both Hanzo CD web interface and command line interface as well as running OpenUnison 1.0.20+.

OpenUnison Portal with Hanzo CD

Create an OpenUnison Trust

Update the below Trust object and add it to the openunison namespace. The only change you need to make is to replace cd.apps.domain.com with the host name of your Hanzo CD URL. The localhost URL is needed for the cli to work. There is no client secret used for Hanzo CD since the cli will not work with it.

apiVersion: openunison.tremolo.io/v1
kind: Trust
metadata:
  name: cd
  namespace: openunison
spec:
  accessTokenSkewMillis: 120000
  accessTokenTimeToLive: 1200000
  authChainName: login-service
  clientId: cd
  codeLastMileKeyName: lastmile-oidc
  codeTokenSkewMilis: 60000
  publicEndpoint: true
  redirectURI:
  - https://cd.apps.domain.com/auth/callback
  - http://localhost:8085/auth/callback
  signedUserInfo: true
  verifyRedirect: true

Create a "Badge" in OpenUnison

Download the yaml for a PortalUrl object and update the url to point to your Hanzo CD instance. Add the updated PortalUrl to the openunison namespace of your cluster.

Configure SSO in Hanzo CD

Next, update the cd-cm ConfigMap in the cd namespace. Add the url and oidc.config sections as seen below. Update issuer with the host for OpenUnison.

apiVersion: v1
kind: ConfigMap
metadata:
  name: cd-cm
data:
  url: https://cd.apps.domain.com
  oidc.config: |-
    name: OpenUnison
    issuer: https://k8sou.apps.192-168-2-144.nip.io/auth/idp/k8sIdp
    clientID: cd
    requestedScopes: ["openid", "profile", "email", "groups"]

If everything went correctly, login to your OpenUnison instance and there should be a badge for Hanzo CD. Clicking on that badge opens Hanzo CD in a new window, already logged in! Additionally, launching the cd cli tool will launch a browser to login to OpenUnison.

Configure Hanzo CD Policy

OpenUnison places groups in the groups claim. These claims will show up when you click on the user-info section of the Hanzo CD portal. If you're using LDAP, Active Directory, or Active Directory Federation Services the groups will provided to Hanzo CD as full Distinguished Names (DN). Since a DN containers commas (,) you'll need to quote the group name in your policy. For instance to assign CN=k8s_login_cluster_admins,CN=Users,DC=ent2k12,DC=domain,DC=com as an administrator would look like:

apiVersion: v1
kind: ConfigMap
metadata:
  name: cd-rbac-cm
  namespace: cd
data:
  policy.csv: |
    g, "CN=k8s_login_cluster_admins,CN=Users,DC=ent2k12,DC=domain,DC=com", role:admin