Skip to main content
Version: 0.1 (next)

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​

  1. Products → Create product. Give it a name.
  2. Under Repos, choose New repo. It is created in the GitHub organization your org is connected to, private by default.
  3. 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.
  4. 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​

StepWhat happens
DetectFrom 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 repositoryOn ECR, Infrared creates <registry>/<org>/<product> before the first build, with the standard lifecycle rules.
BuildIt 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).
ChartA 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).
AppProjectAdds <product>-* to the products AppProject's destinations.
MergeAll of the above in one pull request that Infrared merges.
ReleaseOnce 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:

  1. Point a wildcard DNS record, *.<preview domain> (for example *.preview.example.com), at the management cluster's ingress.

  2. 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.