Our team works with Juju every day trying to build charms to deploy Magma on microk8s clusters. The goal of this document is to provide a list of features that are missing from Juju to make cloud integration easier.
Kubernetes integration
Services
Currently, if we want to specify which ports will the Kubernetes service have, we must manually make API calls to Kubernetes. This isn’t ideal because it means that the charm we build might not be compatible with a cloud or another. For now, we use this lib here to patch services.
ConfigMaps
Currently, if we want to create Kubernetes ConfigMaps, we must manually make API calls to Kubernetes. This isn’t ideal because it means that the charm we build might not be compatible with a cloud or another. For now, we create ConfigMaps using this class.
Secrets
Currently, if we want to create Kubernetes secrets, we must manually make API calls to Kubernetes. This isn’t ideal because it means that the charm we build might not be compatible with a cloud or another. For now, we create secrets using this class.
Bugs
- Juju just hangs: When having deployed some charms for a while (hours), randomly juju stops responding, when doing regular juju commands, like status or debug-log, it just hangs forever with no output.
- Sometimes, juju is stuck in an “installing agent” state and hangs there forever. Destroying the model and recreating a new one typically fixes this.
Setup
- Juju version: 2.9.16-ubuntu-amd64
- Microk8s version: v1.22.2
- Environments: AWS EC2 instance t3.2xlarge, and DIY PC.