Scaffolding Industrial Edge on East and West
Developer Hub Create templates deploy new Industrial Edge instances to east or west spokes. This chapter is the operational follow-up to Architecture and Getting Started.
What you need before scaffolding
| Requirement | How to verify |
|---|---|
| Developer Hub reachable | https://developer-hub.<hub-apps-domain> |
Signed in as platformadmin (or your catalog user) | Keycloak OIDC; user in catalog-users.yaml |
Gitea org ws-platformadmin exists | PostSync Job gitea-admin-setup in namespace gitea |
| Spoke tokens synced | oc get secret developer-hub-spoke-tokens -n developer-hub |
| Templates catalog loaded | Create shows templates (after GitHub Pages deploy) |
| Dev Spaces on target spoke | oc get checluster -n devspaces on east/west |
platformadmin is the Gitea root-equivalent user (gitea_admin is the admin account). Workshop users get orgs ws-user1, ws-user2, …; platformadmin uses ws-platformadmin.
Software templates
Templates are static files under docs/assets/backstage/software-templates/ and load from GitHub Pages:
https://maximilianopizarro.github.io/hybrid-mesh-platform/assets/backstage/software-templates/templates-catalog.yaml
| Template | Target | Result |
|---|---|---|
| Industrial Edge | east or west | IoT namespace, sensors, Kafka, deployment, Tekton pipeline |
| Camel Kaoto | east or west | Camel routes, DevSpaces devfile, Continue AI config |
| Camel CDC (Kaoto + Continue AI) | east or west | Standalone CDC route; DevSpaces on spoke (spokeAppsDomain) |
| Industrial Edge Delete | east or west | Removes ArgoCD Application + Gitea repo + notification |
| CNV VM Workshop | hub | Virtual machine manifests in Gitea |
Step-by-step — deploy on east
- Open Developer Hub → Create.
- Choose Industrial Edge: IoT Manufacturing (Multi-Cluster).
- Set Instance Name (e.g.
edge-factory-1), Ownerplatformadmin, Target Clustereast. - Set Hub cluster apps domain (e.g.
apps.cluster-xqg4c.dynamic2.redhatworkshops.io). - Run the template.
Behind the scenes:
fetch:template— skeleton from GitHub Pages (maximilianopizarro.github.iointegration).publish:github— repows-platformadmin/edge-factory-1-easton Gitea.catalog:register— new Component in the catalog.http:backstage:request— ArgoCD Applicationgen-platformadmin-edge-factory-1-easton cluster east.- Notification to
user:default/platformadmin.
Verify Topology and Kubernetes tabs
- Open the new catalog entity (or line-dashboard-east for the platform stack).
- Topology tab — requires
backstage.io/kubernetes-cluster: eastandbackstage.io/kubernetes-idmatching deployment labels. - Kubernetes tab — pods in
industrial-edge-tst-allon cluster east.
If Topology is empty:
oc get secret developer-hub-spoke-tokens -n developer-hub -o jsonpath='{.data.EAST_SA_TOKEN}' | wc -c
oc get managedserviceaccount -n east
oc logs -n developer-hub -l app.kubernetes.io/name=backstage --tail=20 | grep -i kubernetes
Gitea organizations
| Org | Purpose |
|---|---|
developer-hub | Platform-owned repos |
ws-<username> | Per-user scaffold repos (e.g. ws-platformadmin) |
app-of-apps | ApplicationSet-managed GitOps repos — delete repo to trigger ArgoCD prune |
The app-of-apps org is created by the Gitea PostSync Job. Use it when wiring an ApplicationSet with a Gitea generator: each generated repo maps to one Argo CD Application; removing the repo lets prune clean up spoke resources.
Quay vs internal registry
| Stage | Registry |
|---|---|
| Tekton buildah push | image-registry.openshift-image-registry.svc:5000/<namespace>/<app>:latest |
| Deployment pull | Same internal image (no pull secret on OpenShift) |
| Catalog display | quay.io/maximilianopizarro/<uniqueName> annotation only |
On-prem Quay (quay-registry.<hub-domain>) is for public catalog metadata and optional mirror; pipelines do not require Quay credentials unless you add an explicit push step. See Quay Registry.
DevSpaces and Continue AI
DevSpaces runs on spokes only — not the hub. Template output links use:
https://devspaces.<spokeAppsDomain>/#https://gitea-gitea.<hub-domain>/ws-<user>/<repo>/raw/branch/main/devfile.yaml
Continue AI credentials are synced into {username}-devspaces by PostSync job devspaces-continue-ai-sync (reads kairos-system/kairos-ai-credentials on the spoke). Devfile setup-continue substitutes CONTINUE_API_KEY from the auto-mounted secret.
See Dev Spaces.
Delete an instance
- Create → Industrial Edge — Delete Instance.
- Enter the same name, owner, and target cluster.
- Template deletes the ArgoCD Application and Gitea repo; unregister the catalog entity manually if it still appears.
Next → Hub Gateway for cross-cluster HTTP routing, or Observability to confirm metrics after workloads are running.