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
.