This subordinate charm serves as a plugin for the Kubernetes cluster and manages a namespace. It support the following operations:
- Creating resources using the kubernetes-deployer interface.
- Adding networkpolicies on a namespace level.
The charm is subordinate to a kubernetes master.
juju deploy ./kubernetes-deployer deployer
juju add-relation deployer kubernetes-master
namespace
: Every deployer is limited to one namespace. These namespaces should be unique per deployer charm!isolated
: Requires a Kubernetes cluster with network policy support such as the canal bundle. If true all pods within the namespace are isolated.
- Namespaces which do not have any resources will be removed.
- Do not use
generateName
in any resource manifest.kubectl apply
is used behind the screens and does not support the auto creation of names. See the following issue. - Charms who are creating k8s resources via the deployer can use the
get_uuid()
function from the kubernetes-deployer interface to ensure unique resource names. - The deployer will add the following labels to any resource it creates:
deployer
: name of the deployer who created the resource.juju_unit
: name of the juju unit application (minus the unit number).model_uuid
: uuid of the juju model.juju_app
: uuid of the juju unit created by the kubernetes-deployer interface.
The deployer stores all resources locally on the Kubernetes master and uses kubectl apply
to create all requested resources. The deployer keeps the following dir structure:
/home/kubedeployer/.config/kubedeployers
|
|___ namespaces
| | default.yaml
| | dev.yaml
| | live.yaml
|
|___ network-policies
|
|___ dev-deployer-0
| | da83235577854e42ae7fceee159d9c15-0.yaml
| | da83235577854e42ae7fceee159d9c15-1.yaml
|
|___ live-deployer-0
| f01cd117171748d888d58890ad9143d7-0.yaml
| f01cd117171748d888d58890ad9143d7-1.yaml
| f01cd117171748d888d58890ad9143d7-3.yaml
- Resources will not be deleted when a resource requesting charm has multiple units where each unit requests different resources. This scenario occurs when a unit calls
send_create_request()
twice, once with an actual resource request and the second time with an empty list. The cleanup will trigger after the relation between the k8s-deployer and requesting charm is removed.
This software was created in the IDLab research group of Ghent University in Belgium. This software is used in Tengu, a project that aims to make experimenting with data frameworks and tools as easy as possible.
- Sander Borny [email protected]
- Icon made by Roundicons from www.flaticon.com licensed as Creative Commons BY 3.0