Example Configuration
MijnBureau is highly flexible, allowing for various setups. Below are examples to help you configure MijnBureau for your specific use case.
Resource Usage of MijnBureau and Applications
Sizing requirements for MijnBureau often depend on the number of users.
General Resource Configuration
Set the size of your installation using the resourcesPreset
setting:
global:
# Allowed values: "nano", "micro", "small", "medium", "large", "xlarge", "2xlarge"
resourcesPreset: "small"
Application-Specific Resource Configuration
Override the general resource settings for specific applications:
resource:
keycloak:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"
External Identity Providers
Organizations often use external identity providers. To integrate them with MijnBureau:
- Create a
client
for each application in the identity provider. - Configure MijnBureau with the identity provider's URLs.
Example Configuration
authentication:
oidc:
issuer: "https://id.example.com/realms/mijnbureau"
authorization_endpoint: "https://id.example.com/realms/mijnbureau/protocol/openid-connect/auth"
token_endpoint: "https://id.example.com/realms/mijnbureau/protocol/openid-connect/token"
introspection_endpoint: "https://id.example.com/realms/mijnbureau/protocol/openid-connect/token/introspect"
userinfo_endpoint: "https://id.example.com/realms/mijnbureau/protocol/openid-connect/userinfo"
end_session_endpoint: "https://id.example.com/realms/mijnbureau/protocol/openid-connect/logout"
jwks_uri: "https://id.example.com/realms/mijnbureau/protocol/openid-connect/certs"
client:
grist:
client_id: "grist"
client_secret: secret
synapse:
client_id: "synapse"
client_secret: secret
Customizing Claims
If the default claims differ, update them to match your identity provider's token structure:
authentication:
oidc:
claims:
username: preferred_username
display_name: name
given_name: given_name
family_name: family_name
email: email
email_verified: email_verified
Using Keycloak
To use Keycloak, MijnBureau's internal identity provider:
application:
keycloak:
enabled: true
secret: # Store these securely in an encrypted file
keycloak:
adminUser: admin
adminPassword: mypassword
global:
domain: "mijnbureau.internal"
hostname:
keycloak: "id"
authentication:
oidc:
issuer: "https://id.mijnbureau.internal/realms/mijnbureau"
authorization_endpoint: "https://id.mijnbureau.internal/realms/mijnbureau/protocol/openid-connect/auth"
token_endpoint: "https://id.mijnbureau.internal/realms/mijnbureau/protocol/openid-connect/token"
introspection_endpoint: "https://id.mijnbureau.internal/realms/mijnbureau/protocol/openid-connect/token/introspect"
userinfo_endpoint: "https://id.mijnbureau.internal/realms/mijnbureau/protocol/openid-connect/userinfo"
end_session_endpoint: "https://id.mijnbureau.internal/realms/mijnbureau/protocol/openid-connect/logout"
jwks_uri: "https://id.mijnbureau.internal/realms/mijnbureau/protocol/openid-connect/certs"
Demo Users
For demo environments, you can configure demo users:
user:
- email: johndoe@example.com
username: johndoe
firstname: John
lastname: Doe
password: myStrongPassword123
- email: janedoe@example.com
username: janedoe
firstname: Jane
lastname: Doe
password: myStrongPassword123
Enabling/Disabling Applications
Enable or disable specific applications:
application:
grist:
enabled: false
ollama:
enabled: false
keycloak:
enabled: true
chat:
enabled: true
Namespace Configuration
Specify the Kubernetes namespace for each application:
application:
keycloak:
enabled: true
namespace: mykeycloaknamespace
chat:
enabled: true
namespace: mychatnamespace
Enable namespace creation if permissions allow:
export MIJNBUREAU_CREATE_NAMESPACES=true
Cluster Configuration
Adjust cluster-specific settings:
cluster:
networking:
domain: cluster.local
podSubnet:
- "10.244.0.0/16"
serviceSubnet:
- "10.96.0.0/12"
ingress:
type: nginx
className: ~
annotations: ~
Storage Configuration
Configure PersistentVolumeClaims (PVCs) for storage:
Default PVC Settings
pvc:
default:
storageClass: ~
size: "1Gi"
accessModes:
- ReadWriteOnce
Application-Specific PVC Settings
pvc:
ollama:
storageClass: MyBackedupStorageclass
size: 15Gi
accessModes:
- ReadWriteMany
Security Context
Customize security contexts for containers and pods:
security:
default:
containerSecurityContext:
enabled: true
seLinuxOptions: {}
allowPrivilegeEscalation: false
capabilities:
drop:
- "ALL"
privileged: false
runAsUser: 1001
runAsGroup: 1001
readOnlyRootFilesystem: true
runAsNonRoot: true
podSecurityContext:
enabled: true
fsGroupChangePolicy: Always
sysctls: []
supplementalGroups: []
fsGroup: 1001
External AI LLM
Change the default Ollama model or configure an external AI LLM endpoint:
application:
ollama:
enabled: true
model: "llama3.2"
ai:
llm:
model: "gpt-4.1"
endpoint: "https://your-custom-endpoint.com/v1"
apiKey: yourapikey
TLS Setup
Specify TLS settings for ingress:
tls:
keycloak:
- hosts:
- keycloak.mijnbureau.internal
Add cert-manager annotations if needed:
cluster:
ingress:
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
Customizing Containers
Override default containers or use a proxy server:
container:
default:
registry: myproxyserver
imagePullSecret: myproxyserversecret
ollama:
registry: "docker.io"
repository: "yourcontainer"
tag: "yourtag"
Customizing Charts
Replace default charts with your own:
chart:
keycloak:
registry: registry-1.docker.io
repository: yourrepository
version: yourversion
verify: false
oci: true
username: ~
password: ~
Licenses
Provide licenses for enterprise features:
license:
grist:
key: yourlicencekey
Email Configuration
Configure SMTP settings for transactional emails:
smtp:
host: youremailhostname
port: 587
tls:
enabled: true
force: true
requireTransportSecurity: false
username: yourusername
password: yourpassword