Deploy the bingo charm for the first time¶
By the end of this tutorial, you’ll have bingo running on Kubernetes with Juju, integrated with PostgreSQL for persistent paste storage, and accessible from your browser.
What you’ll need¶
You will need a working station, e.g., a laptop, with AMD64 architecture. Your working station should have at least 4 CPU cores, 8 GB of RAM, and 50 GB of disk space.
Tip
You can use Multipass to create an isolated environment by running:
multipass launch 24.04 --name bingo-tutorial-vm --cpus 4 --memory 8G --disk 50G
This tutorial requires the following software to be installed on your working station (either locally or in the Multipass VM):
Use Concierge to set up Juju and MicroK8s:
sudo snap install --classic concierge
sudo concierge prepare -p microk8s
This first command installs Concierge, and the second command uses Concierge to install and configure Juju and MicroK8s.
For this tutorial, Juju must be bootstrapped to a MicroK8s controller. Concierge should
complete this step for you, and you can verify by checking for msg="Bootstrapped Juju" provider=microk8s
in the terminal output and by running juju controllers.
If Concierge did not perform the bootstrap, run:
juju bootstrap microk8s tutorial-controller
What you’ll do¶
Deploy the bingo charm
Integrate with the PostgreSQL charm
Inspect the Kubernetes resources created
Access the bingo app
Clean up the environment
Shell into the Multipass VM¶
Note
If you’re working locally, you don’t need to do this step.
To be able to work inside the Multipass VM first you need to log in with the following command:
multipass shell bingo-tutorial-vm
Add a Juju model for the tutorial¶
To easily clean up the resources and separate your workload from the contents of this tutorial, set up a new Juju model named bingo-tutorial:
juju add-model bingo-tutorial
Deploy the charms¶
bingo uses PostgreSQL for persistent paste storage.
Deploy the charms:
juju deploy bingo --channel 1/stable
juju deploy postgresql-k8s --channel 14/stable --trust
Integrate with the PostgreSQL k8s charm¶
Integrate postgresql-k8s to bingo:
juju integrate bingo postgresql-k8s
By running juju status --relations the current state of the deployment can be queried:
Model Controller Cloud/Region Version SLA Timestamp
bingo-tutorial concierge-microk8s microk8s/localhost 3.6.27 unsupported 15:06:54-07:00
App Version Status Scale Charm Channel Rev Address Exposed Message
bingo active 1 bingo 1/stable 3 10.152.183.95 no
postgresql-k8s 14.23 active 1 postgresql-k8s 14/stable 925 10.152.183.44 no
Unit Workload Agent Address Ports Message
bingo/0* active idle 10.1.185.51
postgresql-k8s/0* active idle 10.1.185.54 Primary
Integration provider Requirer Interface Type Message
bingo:secret-storage bingo:secret-storage secret-storage peer
postgresql-k8s:database bingo:postgresql postgresql_client regular
postgresql-k8s:database-peers postgresql-k8s:database-peers postgresql_peers peer
postgresql-k8s:restart postgresql-k8s:restart rolling_op peer
postgresql-k8s:upgrade postgresql-k8s:upgrade upgrade peer
The deployment finishes when all the charms show Active states.
Run kubectl get pods -n bingo-tutorial to see the pods that Juju and the charms create:
NAME READY STATUS RESTARTS AGE
modeloperator-cc899c948-v4z9r 1/1 Running 0 5m30s
bingo-0 2/2 Running 0 5m1s
postgresql-k8s-0 2/2 Running 0 5m9s
modeloperator-*is a Juju-managed pod that lets the controller manage Kubernetes resources for this model.bingo-0andpostgresql-k8s-0show2/2because each unit runs two containers: the application itself, and the charm code that manages it.
Note
If you get an “insufficient permissions” error running kubectl inside the Multipass VM,
run the following commands and start a new shell session:
sudo usermod -a -G snap_microk8s ubuntu
sudo chown -R ubuntu ~/.kube
newgrp snap_microk8s
Access the bingo app¶
bingo listens on port 8080 by default. To validate that you can successfully reach the
deployed workload, forward the port to your working station:
microk8s kubectl port-forward --address 0.0.0.0 service/bingo 8080:8080 -n bingo-tutorial
This command runs in the foreground to maintain the port forward, so leave it running. If you get an “insufficient permissions” error, see the note above.
If you’re following the tutorial locally, navigate to http://localhost:8080 in your browser.
If you’re using a Multipass VM, open a new terminal window on your host machine and run
multipass info bingo-tutorial-vm to find its IP, then navigate to http://<vm-ip>:8080.
If the deployment is working correctly, you should see the bingo web interface with a “New paste” form, ready to accept text and create a shareable paste link.
Clean up the environment¶
Congratulations! You’ve deployed the bingo charm, integrated it with a PostgreSQL database, and accessed the app in your browser. You can now remove the model environment that you’ve created using the following command:
juju destroy-model bingo-tutorial --destroy-storage
If you used Multipass, to remove the Multipass instance you created for this tutorial, use the following command.
multipass delete --purge bingo-tutorial-vm
Next steps¶
You achieved a basic deployment of the bingo charm. If you want to go further in your deployment or learn more about the charm, check out these pages:
Perform basic operations with your deployment, such as configuring the base URL for generated paste links.
Expose bingo externally by integrating it with the Traefik charm over the
ingressrelation.Learn more about the charm’s actions, configuration options, and integration interfaces in the Reference section.