Installation

How to install Kuberise.io on your Kubernetes cluster.

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
FieldDescription
client.repoURLURL of this client repository (used by ArgoCD to watch for changes)
client.targetRevisionBranch, tag, or commit SHA (optional, default: HEAD)
kuberise.repoURLURL of the kuberise.io platform repository
kuberise.targetRevisionPlatform version to use (e.g. 0.4.0)
clustersMap 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
FlagDescription
--repoGit repository URL for the client repo (overrides client.repoURL in config)
--revisionBranch, tag, or commit SHA (default: HEAD, overrides client.targetRevision)
--admin-passwordAdmin password for platform services (default: admin, warns if default)
--ciliumInstall Cilium CNI on clusters that need init
--tokenGit token for private repositories (fallback for all repos)
--clusterTarget only this cluster (default: all clusters)
--layerDeploy only this layer (default: all layers)
--configPath to kuberise.yaml (default: ./kuberise.yaml)
--dry-runPreview 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:

  1. Validate required CLI tools and cluster connectivity
  2. Bootstrap if ArgoCD is not yet installed:
    • Create namespaces and secrets
    • Generate CA certificates
    • Install ArgoCD (and Cilium if --cilium is passed)
    • Configure OAuth2 client secrets
  3. 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.