Portainer Charm

  • By Portainer.io
Channel Revision Published Runs on
latest/stable 6 28 Sep 2021
Ubuntu 20.04
latest/edge 3 14 Sep 2021
Ubuntu 20.04
juju deploy portainer
Show information


Portainer Business Edition


Portainer is a lightweight ‘universal’ management GUI that can be used to easily manage Docker, Swarm, Kubernetes and ACI environments. It is designed to be as simple to deploy as it is to use.

Portainer consists of a single container that can run on any cluster. It can be deployed as a Linux container or a Windows native container.

Portainer allows you to manage all your orchestrator resources (containers, images, volumes, networks and more) through a super-simple graphical interface.

This fully supported version of Portainer is available for business use. Visit http://www.portainer.io to learn more.


Create a Juju model for Portainer:

juju add-model portainer

Deploy Portainer:

juju deploy portainer --trust

Give Portainer cluster access:

juju trust portainer --scope=cluster

This will deploy Portainer and expose it over an external load balancer.

To access Portainer inside a browser:

  1. Run juju status to check the IP of the of the running Portainer application
  2. Navigate to http://IP_ADDRESS:9000


You can deploy Portainer and expose it over ClusterIP if you prefer:

juju config portainer service_type=ClusterIP service_http_port=9000 service_edge_port=8000

You can also use Node port:

juju config portainer service_type=NodePort service_http_port=9000 service_edge_port=8000 service_http_node_port=30777 service_edge_node_port=30776

It is also possible to expose Portainer over Ingress:

juju config portainer service_type=ClusterIP service_http_port=9000 service_edge_port=8000
juju deploy nginx-ingress-integrator ingress
juju config ingress service-name=portainer service-port=9000


Create and activate a virtualenv with the development requirements:

virtualenv -p python3 venv
source venv/bin/activate
pip install -r requirements-dev.txt

Pack with Charmcraft:

charmcraft pack


The Python operator framework includes a very nice harness for testing operator behaviour without full deployment. Just run_tests: