Add Component
In this part of the documentation we describe how to add a new component. We describe this because we made some architectural decisions that impact how implement new components.
Template
For new components we have a template that we use. You need to copy this template if you want to add a new component and make sure you implement the relevant options in this template for your component. The template can be found in the github repository.
The template needs to be copied to ./helmfile/apps/<yourapp>/charts/<yourapp>
Charts
You are not allowed to reference external charts that are not maintained by bitnami. If you want an external chart, you will need to copy the template and port parts of the chart into the template.
Flexibility & Consistency
We want to keep MijnBureau flexible and consistent. If you create a new component you will need to adhere to certain rules and need to implement specific variables that we use in every chart to keep the mijnbureau suite consistent and flexibel.
In short this means you basically need to use the variables in ./helmfile/environments/default/*.yaml.gotmpl
when logical.
More explicitly this means
- Make resources used by containers flexibel
./helmfile/environments/default/resource.yaml.gotmpl
- Make the charts used by helm flexibel
./helmfile/environments/default/chart.yaml.gotmpl
- Make the containers used by helm flexibel
./helmfile/environments/default/container.yaml.gotmpl
- Make the PVC configurable
./helmfile/environments/default/pvc.yaml.gotmpl
- Implement the container and pod security
./helmfile/environments/default/security.yaml.gotmpl
- Make it possible to disable your component
./helmfile/environments/default/application.yaml.gotmpl
- Make use of the authorization OIDC variables
./helmfile/environments/default/authentication.yaml.gotmpl
- Implement autocaling features
./helmfile/environments/default/autoscaling.yaml.gotmpl
- Add switches for demo environment that deploys all required datastores.
- Make the datastores configurable in the cache.yaml.gotmpl, database.yaml.gotmpl and objectstore.yaml.gotmpl
- use the
./helmfile/environments/default/global.yaml.gotmpl
variables where logical - use the
./helmfile/environments/default/ai.yaml.gotmpl
variables where logical - use the
./helmfile/environments/default/cluster.yaml.gotmpl
where logical
OpenID Connect
All the new tools we add that are user facing need to have OpenID connect available for authentication. Preferable it also needs to support backchannel logout.
SCIM
We currently do not have SCIM support but plan to add this in the near future.
Network Policies
Since MijnBureau is used in kubernetes environments with a default deny network policy you will need to create all network policies explicitly.
If you want to test, this 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