---
title: Deploy a Kubernetes development cluster with Juju!
description: Our team has been working to make Kubernetes easy to deploy in a public
  cloud. In March we created some Juju charms that have the ability to deploy specific
  releases of Kubernetes on a public cloud. In April we worked to get the charm and
  bundle code in the Kubernetes project itself.  Making it even easier for people
  to deploy a cluster f […]
url: https://canonical.com/blog/deploy-a-kubernetes-development-cluster-with-juju?format=md
---

1. [Blog](https://canonical.com/blog)
2. Article

---

[Matt Bruzek](https://canonical.com/blog/author/mbruzek "More about Matt Bruzek")

10 June 2015

# Deploy a Kubernetes development cluster with Juju!

[Charms](https://canonical.com/blog/tag/charms)
[Juju](https://canonical.com/blog/tag/juju)
[kubernetes](https://canonical.com/blog/tag/kubernetes)

---

Share the article

Our team has been working to make [Kubernetes](http://kubernetes.io/) easy to deploy in a public cloud. In [March](http://bruzer.net/2015/03/16/kubernetes/) we created some [Juju](https://jujucharms.com/u/kubernetes/kubernetes-master/trusty) [charms](https://jujucharms.com/u/kubernetes/kubernetes/trusty) that have the ability to deploy specific releases of Kubernetes on a public cloud. In April we worked to get the charm and bundle code in the [Kubernetes project itself](https://github.com/GoogleCloudPlatform/kubernetes/tree/master/cluster/juju). Making it even easier for people to deploy a cluster from the [official Kubernetes repository](https://github.com/GoogleCloudPlatform/kubernetes).

We have reached another milestone in the Kubernetes story. We added the ability to deploy a Kubernetes cluster with binaries built from local source! This is important to software engineers because it gives them an easy way to stand up a cluster and see their changes right away.

## Development setup

To use this new feature the local environment must be set up for development. Refer to the [Development Guide](https://github.com/GoogleCloudPlatform/kubernetes/blob/master/docs/devel/development.md) for details on how to set up your environment for development in the [Go](http://golang.org/) programming language.

## Deploy local binaries

We are calling this deploy from source option “local”. Here is how it works:

* Clone the Kubernetes project from Github:

  ```
  git clone http://github.com/GoogleCloudPlatform/kubernetes.git
  cd kubernetes
  ```
* Set the Kubernetes provider to “juju”:

  ```
  export KUBERNETES_PROVIDER=juju
  ```
* Change/edit the source code, and when you are ready, run the `kube-up.sh` script to deploy a cluster with your locally built binaries:

  ```
  cluster/kube-up.sh
  ```

The `kube-up.sh` script will build the required binary files (using `make all`), copy the binary files to the charm directory and deploy a cluster to the [public cloud you have configured with Juju](https://jujucharms.com/docs/devel/getting-started), if you do not have a public cloud configured you will be presented with the opportunity to configure one.

The resulting cluster consists of one **kubernetes-master**, two **kubernetes** nodes on different hosts. The [etcd](https://coreos.com/etcd/) and [flannel](https://github.com/coreos/flannel) parts are there so the containers on different hosts can communicate with each other.

To get access to the controller node use `juju ssh kubernetes-master/0` or the minion nodes with `juju ssh kubernetes/0` commands. You will find the `kubectl` is already installed on the controller node.

When you are done with the cluster running `kube-down.sh` will destroy the cluster as expected.

```
cluster/kube-down.sh
```

## Why use Kubernetes with Juju?

Juju provides a way to model deployments in a cloud agnostic language. The same commands can deploy a cluster on the major public clouds [Amazon](https://jujucharms.com/docs/devel/config-aws), [Google Compute Engine](https://jujucharms.com/docs/devel/config-gce), [any OpenStack cloud](https://jujucharms.com/docs/devel/config-openstack), [Windows Azure](https://jujucharms.com/docs/devel/config-azure) and [many others](https://jujucharms.com/docs/devel/getting-started). You will need to put your cloud credentials into Juju but that only needs to be done one time. This allows you to deploy a cluster on AWS, `juju switch gce` and deploy the same cluster on the GCE public cloud using the same `kube-up.sh` command. Juju reduces the cost of experimentation on other clouds and lets you focus on the Kubernetes development.

## Help us improve!

There is a small team working on the Kubernetes story [@whitmo](https://github.com/whitmo), [@chuckbutler](https://github.com/chuckbutler), and [@mbruzek](https://github.com/mbruzek). We are always trying to improve and make something useful for the community. If you find a bug in the code create an [issue](https://github.com/googlecloudplatform/kubernetes/issues) and reference one or all of us in the issue and we will have a look. If you have any feedback or a use case that we can help with please let us know. You can reach us on IRC in #systemzoo on irc.freenode.net.

## Sign up for our newsletter

Get the latest Canonical news and updates in your inbox.

Work email:

\*I agree to receive information about Canonical's
products and services.

By submitting this form, I confirm that I have read and agree to [Canonical's Privacy Policy](https://canonical.com/legal/dataprivacy).

Sign up

## Share on

---

## Related posts

[### Deploy your Spring Boot application to production](https://canonical.com/blog/deploy-spring-application-to-production)

In this article we walk through the steps required to deploy a Spring Boot application to production using Juju and Kubernetes. The goal is to showcase the integration of the...

[Javier de la Puente](https://canonical.com/blog/author/javierdelapuente)

13 January 2026

[### The hitchhiker’s guide to infrastructure modernization](https://canonical.com/blog/hitchhikers-guide-to-infrastructure-modernization)

One of my favourite authors, Douglas Adams, once said that “we are stuck with technology when what we really want is just stuff that works.” Whilst Adams is right about a lot...

[Isobel Kate Maxwell](https://canonical.com/blog/author/iso-maxwell)

24 April 2025

[### How to set up a micro lab: four principles for a reliable homelab](https://canonical.com/blog/how-to-set-up-a-reliable-homelab)

After over a decade of running a homelab, I have learned a few difficult lessons. Although it begins as a “lab,” you inevitably end up with something you want to keep. If a...

[Jake Nabasny](https://canonical.com/blog/author/slapcat)

17 March 2026

[### Harnessing the potential of 5G with Kubernetes: a cloud-native telco transformation perspective](https://canonical.com/blog/harnessing-the-potential-of-5g-with-kubernetes-a-cloud-native-telco-transformation-perspective)

Telecommunications networks are undergoing a cloud-native revolution. 5G promises ultra-fast connectivity and real-time services, but achieving those benefits requires an...

[Benjamin Ryzman](https://canonical.com/blog/author/benjaminryzman)

10 December 2025
