Kubernetes is a wonderfully diverse topic, and nothing is more diverse than the specifics of each cluster. Whether you’re consuming vanilla Elastic Kubernetes Service, rolling Minikube in production like a lunatic, or hand-crafting a very special Kubernetes-the-hard-way style cluster, they all have their nuances (and that’s before we consider complex networking setups, firewalls, outbound proxies and the like).
In recent release candidates of Juju 2.9 (rc7/rc8/rc9), 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 very vanilla Kubernetes, or a Super Special Kubernetes™!
We’d appreciate your eyes on this improved process before we release 2.9 into the
stable channel. We’d especially appreciate a test on those clusters that are a little divergent from the norm, are deployed in strange places or have evolved over time.
To get started, you just need:
- The latest version of Juju from the
- 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
# 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
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 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!
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.
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!
We really appreciate any time you can dedicate to testing this out, we look forward to hearing your feedback and making Juju even more awesome! You can post feedback any way that suits you: