Skip to main content

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

  1. Flexible Resource Usage:
    • Use variables from ./helmfile/environments/default/resource.yaml.gotmpl.
  2. Flexible Helm Charts:
    • Use variables from ./helmfile/environments/default/chart.yaml.gotmpl.
  3. Flexible Containers:
    • Use variables from ./helmfile/environments/default/container.yaml.gotmpl.
  4. Configurable PVCs:
    • Use ./helmfile/environments/default/pvc.yaml.gotmpl.
  5. Container and Pod Security:
    • Implement security settings from ./helmfile/environments/default/security.yaml.gotmpl.
  6. Component Enable/Disable:
    • Add switches in ./helmfile/environments/default/application.yaml.gotmpl.
  7. OIDC Variables:
    • Use ./helmfile/environments/default/authentication.yaml.gotmpl.
  8. Autoscaling Features:
    • Implement autoscaling using ./helmfile/environments/default/autoscaling.yaml.gotmpl.
  9. Demo Environment Support:
    • Add switches to deploy required datastores in the demo environment.
  10. Configurable Datastores:
    • Use cache.yaml.gotmpl, database.yaml.gotmpl, and objectstore.yaml.gotmpl.
  11. Global Variables:
    • Use ./helmfile/environments/default/global.yaml.gotmpl where logical.
  12. AI Variables:
    • Use ./helmfile/environments/default/ai.yaml.gotmpl where logical.
  13. Cluster Variables:
    • Use ./helmfile/environments/default/cluster.yaml.gotmpl where logical.

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