Deploying Mattermost and Kubeflow on Kubernetes with Juju 2.9
amber-charitos
on 21 April 2021
Tags: Juju , juju charms , Kubeflow , kubernetes , MLOps
Since 2009, Juju has been enabling administrators to seamlessly deploy, integrate and operate complex applications across multiple cloud platforms. Juju has evolved significantly over time, but a testament to its original design is the fact that the approach Juju takes to operating workloads hasn’t fundamentally changed; Juju still provides fine grained control over workloads by placing operators right next to applications on any platform. This is exemplified in our most recent changes to how Charmed Operators behave on Kubernetes.
In recent release candidates of Juju 2.9 (rc7/rc8/rc9/rc10), we’ve done a lot of work to ensure the juju bootstrap
process on Kubernetes is as smooth and as universal as possible – meaning it should be easier than ever to bootstrap a Juju controller on a Bring-your-own-Kubernetes!
But don’t take our word for it, deploy yourself some killer apps on a Kubernetes of your choice…
Get Bootstrapped
To get started, you just need:
- The latest version of Juju from the
2.9/candidate
channel - Access to an existing Kubernetes cluster (any will do!)
- A few minutes!
Get started by installing or updating Juju:
# If you're installing from scratch
$ sudo snap install juju --classic --channel=2.9/candidate
# If you're updating an existing Juju install
$ sudo snap refresh juju --channel=2.9/candidate
Now, confirm you have access to a Kubernetes cluster, and bootstrap it! Your KUBECONFIG
will be picked up automatically by the bootstrap process, provided you use the same name in the bootstrap command as the name of the kubectl
context!
# Check we've got access to a cluster context
$ kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
microk8s microk8s-cluster admin
* super-cool-cluster-admin super-cool-cluster clusterAdmin_juju-test_juju-cluster
# Bootstrap the controller on the cluster
$ juju bootstrap super-cool-cluster-admin
Get Charming
When that command returns successfully, you’ll be ready to deploy a range of awesome charms (and charm bundles). Take your pick from Charmhub, or check out some our favourites:
Mattermost
Mattermost is a flexible, open source messaging platform that enables secure team collaboration. Check it out on Charmhub, or if you can’t wait:
# Create a Juju model
$ juju add-model mattermost
# First, deploy PostgresSQL on Kubernetes
$ juju deploy cs:~postgresql-charmers/postgresql-k8s postgresql
# Now deploy Mattermost
$ juju deploy cs:~mattermost-charmers/mattermost --config juju-external-hostname=mattermost.test
# Seamlessly integrate Mattermost and PostgreSQL 🚀
$ juju add-relation mattermost postgresql:db
# Expose the service so you can hit it in your browser
$ juju expose mattermost
# Confirm the deployment was successful:
$ juju status
Model Controller Cloud/Region Version SLA Timestamp
mattermost micro microk8s/localhost 2.9-rc9 unsupported 13:31:09+01:00
App Version Status Scale Charm Store Channel Rev OS Address Message
mattermost mattermost:5.32.1 active 1 mattermost charmstore stable 20 kubernetes 10.152.183.54
postgresql pgcharm:edge active 1 postgresql-k8s charmstore stable 10 kubernetes
Unit Workload Agent Address Ports Message
mattermost/0* active idle 10.1.215.212 8065/TCP
postgresql/0* active idle 10.1.215.211 5432/TCP Pod configured
Using the example above, you should now be able to get Mattermost on http://10.152.183.54:8065. Your mileage may vary depending on your individual cluster networking setup!
Charmed Kubeflow
If you’re feeling more adventurous, Charmed Kubeflow wraps the 30+ apps that make up Kubeflow with rock-solid ops code. Charmed Kubeflow integrates these charms to provide the best Kubeflow experience, from deployment to day-2 operations.
Extra goodies for Charming Ninjas
We’re also building the foundations of a better future for Juju + Kubernetes. Check out the Future of Charmed Operators on Kubernetes post for more details and try your hand at building a fancy new charm that implements the sidecar pattern! You can check out the developer docs here!
Thank you!
We look forward to hearing your feedback and making Juju even more awesome! You can send us feedback, or get help in a few different ways:
- Reply to this topic on Discourse
- Chat about it with us on the Charmhub Mattermost
- File a bug against Juju
Run Kubeflow anywhere, easily
With Charmed Kubeflow, deployment and operations of Kubeflow are easy for any scenario.
Charmed Kubeflow is a collection of Python operators that define integration of the apps inside Kubeflow, like
katib or pipelines-ui.
Use Kubeflow on-prem, desktop, edge, public cloud and multi-cloud.
What is Kubeflow?
Kubeflow makes deployments of Machine Learning workflows on Kubernetes simple, portable and scalable.
Kubeflow is the machine learning toolkit for Kubernetes. It extends Kubernetes ability to run independent and
configurable steps, with machine learning specific frameworks and libraries.
Install Kubeflow
The Kubeflow project is dedicated to making deployments of machine learning workflows on Kubernetes simple,
portable and scalable.
You can install Kubeflow on your workstation, local server or public cloud VM. It is easy to install
with MicroK8s on any of these environments and can be scaled to high-availability.
Newsletter signup
Related posts
Charmed Kubeflow 1.9 Beta is here: try it out
After releasing a new version of Ubuntu every six months for 20 years, it’s safe to say that we like keeping our traditions. Another of those traditions is...
Kubernetes backups just got easier with the CloudCasa charm from Catalogic
For a native integration for Canonical’s Kubernetes platform, Juju was the perfect fit, and the charm makes consuming CloudCasa seamless for users.
A deep dive into Kubeflow pipelines
Widely adopted by both developers and organisations, Kubeflow is an MLOps platform that runs on Kubernetes and automates machine learning (ML) workloads. It...