Skip to main content

Deploy to Kubernetes

Flightroom deploys the backends of a project to your Kubernetes cluster with the same Deploy button that activates microfrontends. Behind the button, every deploy is a Git commit, and the Argo CD you already run applies that commit to the cluster.

An agent is deployed exactly like any other backend: it is a service that happens to call a model. Everything on this page applies to both. How apps and agents get written in the first place is covered in Build with AI.

What one click does​

  1. A member of the project presses Deploy. Open Deployments in the DevOps section of the sidebar, pick the environment in the selector and press Deploy. A functional domain can be deployed on its own with Deploy <domain>. The console assistant can deploy too, after you confirm the action it proposes.
  2. Flightroom commits to Git. The manifests of the environment go to the configuration repository, and the Helm values of each service to the applications repository. See GitOps repositories.
  3. Flightroom records the deployment, only once the commits are pushed. If a commit fails, nothing is deployed.
  4. Argo CD syncs the cluster. It watches the repositories through the objects Flightroom set up in it. See Argo CD.
  5. The app answers on its URL, https://<environment host><exposure path>, with a certificate from cert-manager. See Exposure.

The console never connects to your cluster. It talks to the Argo CD API over HTTPS, and Argo CD deploys to the cluster it runs in.

What runs in Kubernetes, and what does not​

In the consoleKindWhere it runs
Backend service, or agentServiceA container in Kubernetes, deployed through GitOps
Web interface served by its containerMicrofrontend of kind Frontend (badge Docker)A container in Kubernetes, deployed like a service
Web interface served by FlightroomMicrofrontend of kind MicrofrontendA static bundle served by Flightroom from your bucket, as described in Deployments

A service or a Docker frontend is deployed once it has an Image repository and a version registered by its CI pipeline. One without either is left out of the deploy.

The same Deploy moves both worlds at once: the microfrontends are snapshotted and activated as before, and the containers are committed to Git. The deployments page shows each deployment with its Microfrontends, Backends, Config maps and Secrets.

What each app gets in each environment​

ObjectComes from
A Namespace per environmentThe Kubernetes namespace field of the environment, or its slug in lowercase when left empty
A Deployment and a ClusterIP ServiceThe Helm chart in the applications repository, with the image and version of the service
Liveness and readiness probesThe Liveness probe path and Readiness probe path of the service
ConfigMaps and Secrets as environment variablesThe config maps and secrets attached to the service
An HTTPRoute on the environment's Gateway, with TLSThe Exposure path of the service and the project's exposure settings

The values file sets one replica and the container port of the service, 8080 unless you change Port. The chart passes that port to the container as HTTP_PORT.

Health checks from the templates​

The backend templates preset the probe paths, so Kubernetes knows when the app is up from its first deploy:

TemplateLivenessReadiness
Node.js & Fastify/health/live/health/ready
Python & FastAPI/health/live/health/ready
Spring Boot/actuator/health/liveness/actuator/health/readiness
Quarkus/q/health/live/q/health/ready

A service created without a template starts from /health/live and /health/ready. Change them under Runtime and image in the service settings. See Templates library.

What the cluster needs​

RequirementWhat for
A Git provider: GitHub, GitLab or Azure DevOpsThe configuration and applications repositories, through a code repository connection of the project
Argo CD 2.8 or later, reachable over HTTPSSyncing the repositories to the cluster. See Argo CD
The ApplicationSet policy override in Argo CDKeeping applications from being deleted when a values file goes missing
Gateway API CRDs and Traefik v3 with its Gateway providerExposing apps on a URL. Only needed for exposure
cert-manager and a ClusterIssuerTLS certificates. Without one, environments answer in plain HTTP

Who can do what​

ActionWho
Turn GitOps on, pick the repositoriesAn owner of the project (Admin in the console) or an administrator of its organization
Initialize or re-align Argo CDAn owner of the project or an administrator of its organization. Other members see the status
DeployAny member of the project except a Viewer: with GitOps on, a viewer's deploy is refused

A member scoped to a functional domain commits the Helm values of their own domain's applications only.

What Flightroom does not do​

Flightroom does not create clusters or databases, does not scale workloads and does not show pod logs or events. Those stay with Kubernetes, Argo CD and the tools you already use. Watch the sync and the health of each application in Argo CD.

Set it up​

  1. Connect a code repository to the project.
  2. Turn on GitOps and pick the configuration and applications repositories.
  3. Set the exposure domain and, if you want TLS, a certificate issuer.
  4. Prepare and initialize Argo CD.
  5. Create config maps and secrets and attach them to your services.
  6. Press Deploy.

Where to go next​