Installation
Steps
1. Install the kr CLI
curl -sSL https://kuberise.io/install | sh
To install a specific version, set KR_VERSION for the shell that runs the script: curl -sSL https://kuberise.io/install | KR_VERSION=0.3.0 sh
Or download kr manually from GitHub Releases and place it on your PATH.
2. Create a Client Repo
A client repo is your own repository that defines which clusters to manage and which tools to enable. At its root, create a kuberise.yaml file:
client:
repoURL: https://github.com/<your-org>/client-webshop.git
kuberise:
repoURL: https://github.com/kuberise/kuberise.io.git
targetRevision: 0.4.0
clusters:
dev:
context: k3d-dev
domain: dev.kuberise.dev
layers:
- name: platform
repoURL: kuberise
| Field | Description |
|---|---|
client.repoURL | URL of this client repository (used by ArgoCD to watch for changes) |
client.targetRevision | Branch, tag, or commit SHA (optional, default: HEAD) |
kuberise.repoURL | URL of the kuberise.io platform repository |
kuberise.targetRevision | Platform version to use (e.g. 0.4.0) |
clusters | Map of clusters to manage, each with context, domain, and layers |
3. Deploy with kr up
kr up is the primary command. It reads kuberise.yaml, bootstraps any clusters that need it (installs ArgoCD), and deploys all layers. Run it from the root of your client repo:
kr up
That's it. The client repo URL comes from client.repoURL in your kuberise.yaml. You can also pass it explicitly:
kr up --repo https://github.com/<your-org>/client-webshop.git
| Flag | Description |
|---|---|
--repo | Git repository URL for the client repo (overrides client.repoURL in config) |
--revision | Branch, tag, or commit SHA (default: HEAD, overrides client.targetRevision) |
--admin-password | Admin password for platform services (default: admin, warns if default) |
--cilium | Install Cilium CNI on clusters that need init |
--token | Git token for private repositories (fallback for all repos) |
--cluster | Target only this cluster (default: all clusters) |
--layer | Deploy only this layer (default: all layers) |
--config | Path to kuberise.yaml (default: ./kuberise.yaml) |
--dry-run | Preview manifests without applying changes |
Run kr up --help for the full list of flags.
4. Example
# From the root of your client repo
kr up
kr up will, for each cluster:
- Validate required CLI tools and cluster connectivity
- Bootstrap if ArgoCD is not yet installed:
- Create namespaces and secrets
- Generate CA certificates
- Install ArgoCD (and Cilium if
--ciliumis passed) - Configure OAuth2 client secrets
- Deploy all layers:
- Create repository access secrets for ArgoCD
- Create an ArgoCD AppProject
- Create per-layer app-of-apps ArgoCD Applications
- ArgoCD then syncs all enabled tools from your repository
Escape Hatches
For fine-grained control, you can use kr init and kr deploy separately:
# Bootstrap a single cluster without kuberise.yaml
kr init --context minikube --domain onprem.kuberise.dev
# Deploy only (skip init), from the client repo directory
kr deploy
# Deploy only a specific cluster and layer
kr deploy --cluster dev --layer platform
Multi-Layer Deployment
Layers let you separate concerns. Each layer gets its own ArgoCD app-of-apps Application. Define multiple layers per cluster in kuberise.yaml:
clusters:
dev:
context: k3d-dev
domain: dev.kuberise.dev
layers:
- name: platform
repoURL: kuberise # Uses charts from the OSS kuberise.io repo
- name: webshop # Uses charts from this client repo
token: GITHUB_TOKEN # Env var name for private repo token
Each layer's enabler file (app-of-apps/values-{clusterName}-{layerName}.yaml) in the client repo controls which tools that layer deploys. Layer repos can use their own Git tokens, referenced by environment variable name in the token: field.
Post-Installation
After installation, access dashboards via subdomains of your domain:
- ArgoCD:
https://argocd.<DOMAIN> - Grafana:
https://grafana.<DOMAIN>
kr up, kr init, and kr deploy are all idempotent - you can run them multiple times safely.
Uninstall
kr uninstall --context <CONTEXT> --cluster <NAME>
This removes the app-of-apps, ArgoCD, all kuberise-managed namespaces, and cleans up kubeconfig entries. Cilium (the CNI) is intentionally left in place since the cluster needs it for networking.