Hangar

Docs · Airframe

Airframe quickstart part 6: gate-api (terminal path)

Converted from ../user/quickstart-gate-api.md.

Placeholders: <dev-context>, <github-owner>, <prod-cluster>, <prod-context> are the names chosen when the clusters were built (render with --dev-cluster etc. to fill them in).

gate-api passes the NodeJSApplication verify contract (dev cluster ready, CI/CD onboarded, both repos exist)

tools/airframe-verify nodejsapplication app-gate-api-cicd/gate-api --context "<dev-context>"

Expected: xr-synced, dev-cluster-ready, cicd-onboarded, source-repo and gitops-repo all pass

The onboarding PR was merged (.tekton/ exists in the source repo)

gh api repos/<github-owner>/gate-api/contents/.tekton --jq '.[].name'

Expected: flow-ci.yaml and onboarding-resync.yaml are present

cicd.yaml declares dev (ground) and staging (flight, on the prod cluster)

gh api repos/<github-owner>/gate-api/contents/cicd.yaml --jq .content | base64 -d

Expected: deploy.environments: dev/ground and staging/flight with cluster = the prod cluster’s name; no removed keys (signers are the cluster’s release-signing policy, not cicd.yaml)

The staging ApplicationEnvironment passes its verify contract

tools/airframe-verify applicationenvironment app-gate-api-cicd/gate-api-<prod-cluster>-staging --context "<dev-context>"

Expected: cluster-ready, app-resolved and env-identity-file pass

Dev: gate-api is Running and answers /api/whoami

kubectl --context "<dev-context>" get rollout gate-api -n app-gate-api-dev
curl -s http://localhost:18086/api/whoami

Expected: the Rollout has all replicas available; whoami returns a version and a pod name

Staging was released: release.yaml in the gitops repo names a gate-api image

gh api repos/<github-owner>/gitops-gate-api/contents/<prod-cluster>/staging/release.yaml --jq .content | base64 -d

Expected: release.image.repository is ghcr.io//gate-api with a tag

Staging: the Rollout is a canary with steps, fully available, on the released image

kubectl --context "<prod-context>" get rollout gate-api -n app-gate-api-staging -o jsonpath='{.spec.strategy}'

Expected: strategy canary with setWeight steps; availableReplicas == replicas; the running image tag equals release.yaml’s