Start from a zip
The quickest way from files to a running site: create a Product with a new repo, upload a zip of what you have (a static site, a Node app or a Go service), and Infrared builds it, releases it to a pre-release zone and gives you a preview URL that only people signed in to Infrared can open.
Create it
- Products → Create product. Give it a name.
- Under Repos, choose New repo. It is created in the GitHub organization your org is connected to, private by default.
- Under Start from a zip, pick the zip. Its files become the repo's second commit, after a README. Up to 25 MB; when everything sits in one top-level folder (as when you zip a folder), that folder is dropped.
- Keep Build it and open a preview checked, then Create product.
The Product page then walks through the steps and switches to an Open <product>-rc button once the site runs.
What Infrared does
| Step | What happens |
|---|---|
| Detect | From the zip: a go.mod makes it a Go service, a package.json a Node app, otherwise the shallowest folder with an index.html is a static site. |
| Image repository | On ECR, Infrared creates <registry>/<org>/<product> before the first build, with the standard lifecycle rules. |
| Build | It writes the Product's kpack Image to products/<product>/build/ in the gitops repo, and its Application. Static sites are served by nginx (Paketo web-servers buildpack, BP_WEB_SERVER=nginx). |
| Chart | A generic web chart in products/<product>/chart/: a Deployment once a Release pins an image, a Service, and for preview zones an Ingress behind Infrared sign-in. Edit it freely; it's yours. |
| Zone | <product>-rc, a pre-release zone with preview: true and a smoke check (GET / after 30 seconds). |
| AppProject | Adds <product>-* to the products AppProject's destinations. |
| Merge | All of the above in one pull request that Infrared merges. |
| Release | Once the files are in, it starts the Product's first Release: it waits for the build, tags v0.1.0, pins the image in the zone and waits for Argo CD and the smoke check. |
Nothing builds or deploys from a Product without spec.delivery.scaffold, so existing Products are unaffected. With the API, send "delivery": {"zones": [], "scaffold": {"kind": "static", "root": "public"}} when you create the Product (root only for static sites in a subfolder).
Previews
A zone with preview: true is served at https://<zone>.<preview domain>, with a certificate from Let's Encrypt. Every request goes through Infrared first (a Traefik forwardAuth Middleware the chart adds): a visitor who isn't signed in is sent to Infrared's sign-in and comes back to the page they asked for. Sign-in gives the preview its own cookie, valid for 12 hours and for that one preview host only; your Infrared session never reaches the preview site. Only people with a role in the org that owns the Product (any role, including viewer) and platform admins can open its previews.
Set up previews
Once per installation:
-
Point a wildcard DNS record,
*.<preview domain>(for example*.preview.example.com), at the management cluster's ingress. -
Tell Infrared the domain and its own public URL:
kubectl patch installation infrared --type merge \-p '{"spec":{"previews":{"domain":"preview.example.com","signInURL":"https://infrared.example.com"}}}'
Without these, preview zones still deploy, with no Ingress.
Not yet
- The register form scaffolds only the Product's first new repo, and only when you upload a zip.
- Only ECR repositories are created for you; other registries must create repositories on push.