Install
Use this guide to install Zuplo Self-Hosted in a single cluster with automatic certificates from cert-manager. Before you begin, complete the requirements.
Set environment variables
Set these variables in the shell that you use for the installation:
Code
Authenticate to the Zuplo registry
The Zuplo Helm chart is an OCI artifact in Zuplo's registry. The same credential pulls the chart and the component images.
Code
Code
Create the values file
Create zuplo-values.yaml and commit it to your infrastructure repository. Pass
this file to Helm during every upgrade.
Code
Create the credentials file
The chart creates Kubernetes Secrets from Helm values. Put credentials in a separate values file so that you don't commit them with the rest of the configuration.
Code
Protect registry credentials
This file contains registry credentials. Add zuplo-secrets.yaml to
.gitignore before creating it, restrict access to the file, and delete the
local copy after installation. Keep the credentials in your organization's
secret manager for future upgrades.
For automated installations, generate the file from CI secrets or a secret manager. If you store the file in Git, encrypt it with a tool such as SOPS and decrypt it when running Helm.
Helm stores these credentials in its release history, and the chart creates Kubernetes Secrets from them. Restrict access to these Secrets, including Helm's release Secrets.
Install the chart
Install the pinned chart version:
Code
Code
The installation takes one to two minutes and creates resources in two namespaces:
zuplois the release namespace created by--create-namespace. It contains gateway deployments and the subcharts.zuplo-systemis created by the chart and contains the Zuplo management plane.
Always pass `--version`
Without --version, Helm selects the most recent chart available at
installation time. Record the pinned version with zuplo-values.yaml so that
you can review and reproduce upgrades. Your Zuplo solutions architect will tell
you which version to install.
Point DNS to the load balancer
Get the address of the LoadBalancer Service created by the chart:
Code
Code
Create two DNS A records pointing at EXTERNAL-IP, both resolving publicly:
| Type | Name | Value |
|---|---|---|
A | *.api.example.com | 203.0.113.24 |
A | zuplo-admin.example.com | 203.0.113.24 |
Certificate issuance requires the HTTP-01 challenge URL at
http://
Verify your installation
Use the Zuplo self-hosted doctor
to check the installation. Doctor is a CLI that reads your installation through
your kubeconfig and probes its DNS, TLS, and HTTP endpoints. It checks the Helm
release, the Configuration resource, Deployment health, ingress reachability,
certificate issuance, DNS records, the management API, and the builder
configuration. It reads the installation and doesn't change it.
Download the archive for your machine from the releases page, verify its checksum, extract it, and run the full suite against your current kubeconfig context:
Code
Doctor exits 0 when no check failed, 1 when a check failed, and 3 when it
couldn't run. Each warning and failure names a diagnostic step and links to the
matching entry in Troubleshooting.
To also check authenticated access to the management API, set ZUPLO_API_KEY in
your shell before running verify. Without a key, Doctor checks only that
unauthenticated requests are rejected.
The repository's README covers selecting individual checks, comparing a local values file, private certificate authorities, and JSON output.
Doctor doesn't deploy a project. To confirm the full build-and-serve path, run
npx zuplo deploy against your account after Doctor passes.