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 |
GitLab group ws-platformadmin exists | PostSync Job gitlab-workshop-bootstrap in namespace gitlab |
| 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 GitLab root-equivalent user (root PAT for scaffolder). Workshop users get groups 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 + GitLab repo + notification |
| CNV VM Workshop | hub | Virtual machine manifests in GitLab |
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 GitLab.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
GitLab groupanizations
| 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 GitLab PostSync Job. Use it when wiring an ApplicationSet with a GitLab 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://gitlab.apps.<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 GitLab 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.