New Component
This guide explains how to add a new component to MijnBureau. It outlines the architectural decisions and rules that must be followed to ensure consistency and flexibility across the suite.
Template
To add a new component, start by using the provided template. Copy the template from the GitHub repository and implement the relevant options for your component.
Template Location
Copy the template to the following directory:
./helmfile/apps/<yourapp>/charts/<yourapp>
Charts
External charts not maintained by Bitnami are not allowed. If you need to use an external chart, port the necessary parts into the provided template.
Flexibility and Consistency
MijnBureau aims to maintain flexibility and consistency. When creating a new component, adhere to the following rules and implement the specified variables to align with the suite's standards.
Key Requirements
- Flexible Resource Usage:
- Use variables from
./helmfile/environments/default/resource.yaml.gotmpl
.
- Use variables from
- Flexible Helm Charts:
- Use variables from
./helmfile/environments/default/chart.yaml.gotmpl
.
- Use variables from
- Flexible Containers:
- Use variables from
./helmfile/environments/default/container.yaml.gotmpl
.
- Use variables from
- Configurable PVCs:
- Use
./helmfile/environments/default/pvc.yaml.gotmpl
.
- Use
- Container and Pod Security:
- Implement security settings from
./helmfile/environments/default/security.yaml.gotmpl
.
- Implement security settings from
- Component Enable/Disable:
- Add switches in
./helmfile/environments/default/application.yaml.gotmpl
.
- Add switches in
- OIDC Variables:
- Use
./helmfile/environments/default/authentication.yaml.gotmpl
.
- Use
- Autoscaling Features:
- Implement autoscaling using
./helmfile/environments/default/autoscaling.yaml.gotmpl
.
- Implement autoscaling using
- Demo Environment Support:
- Add switches to deploy required datastores in the demo environment.
- Configurable Datastores:
- Use
cache.yaml.gotmpl
,database.yaml.gotmpl
, andobjectstore.yaml.gotmpl
.
- Use
- Global Variables:
- Use
./helmfile/environments/default/global.yaml.gotmpl
where logical.
- Use
- AI Variables:
- Use
./helmfile/environments/default/ai.yaml.gotmpl
where logical.
- Use
- Cluster Variables:
- Use
./helmfile/environments/default/cluster.yaml.gotmpl
where logical.
- Use
OpenID Connect (OIDC)
All new user-facing tools must support OpenID Connect (OIDC) for authentication. Backchannel logout support is preferred.
SCIM
While MijnBureau does not currently support SCIM, it is planned for future updates.
Network Policies
MijnBureau operates in Kubernetes environments with a default deny network policy. Explicit network policies must be created for new components.
Example: Default Deny Network Policy
Below is an example of a default deny network policy for Kubernetes:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny-all
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress