Skip to main content

Deploy KIND

This guide walks you through deploying MijnBureau to a local Kubernetes cluster for development and testing. We use KIND (Kubernetes IN Docker) as the primary example, but you can also use Minikube or Docker Desktop’s Kubernetes if you prefer.


1. Prerequisites


2. Setting Up KIND with LoadBalancer

MijnBureau requires a LoadBalancer for features like video conferencing. KIND clusters do not provide this by default, so we use cloud-provider-kind.

Install cloud-provider-kind

go install sigs.k8s.io/cloud-provider-kind@latest

Create the KIND Cluster

Run the following script to create a KIND cluster named mijnbureau and set up NGINX ingress, Gateway API, and self-signed certificates:

./scripts/kind.sh
sudo cloud-provider-kind

Note: If you do not need video conferencing, you can skip cloud-provider-kind.

Delete the KIND Cluster

When finished, clean up with:

kind delete cluster --name mijnbureau

3. Configure MijnBureau for Local Development

You may not want to deploy all MijnBureau components during development. Here’s a minimal example configuration for local testing:

global:
domain: "127.0.0.1.sslip.io"
resourcesPreset: "small"
tls:
selfSigned: true

secret:
grist:
adminEmail: johndoe@example.com

application:
grist:
enabled: true
namespace: grist
keycloak:
enabled: true
namespace: keycloak
ollama:
enabled: false
namespace: ollama
chat:
enabled: false
namespace: chat
nextcloud:
enabled: false
namespace: nextcloud
collabora:
enabled: false
namespace: collabora

You can copy this setup into file: helmfile/environments/demo/mijnbureau.yaml.gotmpl


4. Set Required Environment Variables

Set the master password and allow namespace creation:

export MIJNBUREAU_MASTER_PASSWORD="your-very-secure-password"
export MIJNBUREAU_CREATE_NAMESPACES=true

5. Verify Kubernetes Context

Ensure you are connected to the correct cluster:

kubectl config current-context

6. Deploy MijnBureau

Apply your configuration with Helmfile:

helmfile -e <environment> apply

Replace <environment> with your target environment (e.g., demo, production). If omitted, the default environment is used.

When the deployment is succesfull you will be able to connect to the tools. These URLS should work depending on which applications you enabled.


7. Inspect the Installation

To render manifests without deploying:

helmfile -e <environment> template

8. More Helmfile Commands

Helmfile offers many commands for managing deployments. See the Helmfile CLI Reference for details.


Tip: For troubleshooting, check logs with kubectl logs and inspect resources with kubectl get all -A.