• Stars
    star
    2,288
  • Rank 19,324 (Top 0.4 %)
  • Language
    Go
  • License
    Other
  • Created almost 10 years ago
  • Updated 28 days ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Orchestration engine that enables the deployment, integration and lifecycle management of applications at any scale, on any infrastructure (Kubernetes or otherwise).
Juju logo next to the text Canonical Juju

Juju is an open source application orchestration engine that enables any application operation (deployment, integration, lifecycle management) on any infrastructure (Kubernetes or otherwise) at any scale (development or production) in the same easy way (typically, one line of code), through special operators called β€˜charms’.

juju snap build

πŸ‘‰ Juju Learn how to quickly deploy, integrate, and manage charms on any cloud with Juju.
It's as simple as juju deploy foo, juju integrate foo bar, ..., on any cloud.
Charmhub Sample our existing charms on Charmhub.
A charm can be a cluster (OpenStack, Kubernetes), a data platform (PostgreSQL, MongoDB, etc.), an observability stack (Canonical Observability Stack), an MLOps solution (Kubeflow), and so much more.
Charm SDK Write your own charm!
Juju is written in Go, but our SDK supports easy charm development in Python.

Give it a try!

Let's use Juju to deploy, configure, and integrate some Kubernetes charms:

Set up

You will need a cloud and Juju. The quickest way is to use a Multipass VM launched with the charm-dev blueprint.

Install Multipass: Linux | macOS | Windows. On Linux:

sudo snap install multipass

Use Multipass to launch an Ubuntu VM with the charm-dev blueprint:

multipass launch --cpus 4 --memory 8G --disk 30G --name tutorial-vm charm-dev 

Open a shell into the VM:

multipass shell tutorial-vm

Verify that you have Juju and two localhost clouds:

juju clouds

Bootstrap a Juju controller into the MicroK8s cloud:

juju bootstrap microk8s tutorial-controller

Add a workspace, or 'model':

juju add-model tutorial-model

Deploy, configure, and integrate a few things

Deploy Mattermost:

juju deploy mattermost-k8s

See more: Charmhub | mattermost-k8s

Deploy PostgreSQL:

juju deploy postgresql-k8s --channel 14/stable --trust

See more: Charmhub | postgresql-k8s

Enable security in your PostgreSQL deployment:

juju deploy tls-certificates-operator
juju config tls-certificates-operator generate-self-signed-certificates="true" ca-common-name="Test CA"
juju integrate postgresql-k8s tls-certificates-operator

Integrate Mattermost with PostgreSQL:

juju integrate mattermost-k8s postgresql-k8s:db

Watch your deployment come to life:

juju status --watch 1s

(Press Ctrl-C to quit. Drop the --watch 1s flag to get the status statically. Use the --relations flag to view more information about your integrations.)

Test your deployment

When everything is in active or idle status, note the IP address and port of Mattermost and pass them to curl:

curl <IP address>:<port>/api/v4/system/ping

You should see the output below:

{"AndroidLatestVersion":"","AndroidMinVersion":"","IosLatestVersion":"","IosMinVersion":"","status":"OK"}

Congratulations!

You now have a Kubernetes deployment consisting of a Mattermost backed by PosgreSQL with TLS-encrypted traffic!

Clean up

Delete your Multipass VM:

multipass delete --purge tutorial-vm

Uninstall Multipass: Linux | macOS | Windows. On Linux:

snap remove multipass

Next steps

Learn more

Chat with us

Read our Code of conduct and:

File an issue

Make your mark

More Repositories

1

ratelimit

Efficient token-bucket-based rate limiter package.
Go
2,679
star
2

errors

Common juju errors and functions to annotate errors. Based on juju/errgo
Go
1,382
star
3

errgo

Error tracing and annotation.
Go
228
star
4

utils

General utility functions
Go
212
star
5

juju-gui

Juju-GUI is a web-based GUI for Juju <https://jujucharms.com/>.
JavaScript
182
star
6

loggo

A logging library for Go. Doesn't use the built in go log standard library, but instead offers a replacement.
Go
134
star
7

fslock

Go
123
star
8

persistent-cookiejar

cookiejar is a fork of net/http/cookiejar that allows serialisation of the stored cookies
Go
110
star
9

cheatsheet

A Juju Quicksheet with some common usage examples
58
star
10

python-libjuju

Python library for the Juju API
Python
55
star
11

charm-championship

Submissions for the Juju Charm Championship
43
star
12

charm-tools

Tools for charm authors and maintainers
Python
42
star
13

httprequest

JSON-oriented HTTP server and client helpers
Go
38
star
14

cmd

A command line implementation framework
Go
27
star
15

plugins

Basic collection of the first few plugins for Juju
Python
27
star
16

gomaasapi

Go bindings for talking to MAAS
Go
26
star
17

pubsub

Publish and subscribe functionality within a single process in Go.
Go
24
star
18

mutex

Provides a named machine level mutex shareable between processes.
Go
24
star
19

gnuflag

GNU-compatible flag handling with a stdlib-like API for Go
Go
24
star
20

docs

Juju documentation, edited on https://discourse.charmhub.io/, and published on https://juju.is/docs
22
star
21

ansiterm

Colored writers and tabwriters.
Go
22
star
22

layer-index

Index of layers for building charms
Python
21
star
23

gocharm

Write your charms in Go!
Go
20
star
24

testing

Testing gocheck suites and checkers used across juju projects
Go
19
star
25

terraform-provider-juju

A Terraform provider for Juju
Go
18
star
26

charm-helpers

Python
18
star
27

retry

The retry package encapsulates the mechanism around retrying commands.
Go
18
star
28

amulet

Testing harness and tools for Juju Charms
Python
17
star
29

zaputil

Utility functions related to the zap logging package
Go
16
star
30

charmstore

The charm store server.
Go
15
star
31

charm

Parsing and testing Juju charms
Go
13
star
32

clock

Clock definition and a testing clock.
Go
11
star
33

xml

A fork of the Go xml package with fixed marshaling
Go
10
star
34

juju-academy

Learn to use Juju
JavaScript
10
star
35

mgosession

Session pooling for the mgo package
Go
10
star
36

juju-crashdump

Script to assist in gathering logs and other debugging info from a Juju model
Python
10
star
37

charmstore-client

Client for charmstore.
Go
9
star
38

worker

Utilities for handling long lived Go workers
Go
9
star
39

juju-talks

Presentations about Juju, pull requests welcome!
HTML
9
star
40

js-libjuju

JavaScript API client for Juju
TypeScript
9
star
41

firestealer

A command line tool for parsing Prometheus metrics
Python
8
star
42

zip

Fork of Go's zip package with append feature.
Go
8
star
43

httpgovernor

HTTP request concurrency limiter
Go
7
star
44

replicaset

Create and manage mongodb replicasets.
Go
7
star
45

packaging

An abstraction of different linux packaging systems.
Go
6
star
46

chaos-monkey

A tool to instrument chaos into a Juju environment.
Python
6
star
47

schema

coerce dynamically typed data structures into known forms.
Go
6
star
48

hello-juju-charm

The charm for the hello-juju application.
Python
5
star
49

theblues

Python library for the juju charmstore (v4)
Python
5
star
50

names

A package to deal with juju names (services, units, machines, etc)
Go
5
star
51

1.25-upgrade

Tools to upgrade and move a 1.25 environment to a 2.2.4+ controller
Go
4
star
52

jujusvg

Generate svgs from Juju bundles and environment.
Go
4
star
53

jenkins-github-lander

Web service to aid in landing approved branches automatically with a final test run through jenkins.
Python
4
star
54

juju-tosca

Juju Tosca Translator
Python
4
star
55

go-oracle-cloud

Go client interfacing with the oracle IAAS cloud API.
Go
4
star
56

aclstore

A simple persistent store for ACLs, with HTTP API
Go
3
star
57

txjuju

A Twisted-based Juju client
Python
3
star
58

bakeryjs

Javascript implementation of the Macaroon Bakery
TypeScript
3
star
59

qthttptest

Check that JSON HTTP endpoints respond appropriately; compatible with quicktest.
Go
3
star
60

juju-restore

Restore script for Juju controllers
Go
3
star
61

bundlechanges

A Go library to generate the list of changes required to deploy a bundle
Go
3
star
62

concurrency-limiter

Limit the number of asynchronous concurrent tasks running
JavaScript
2
star
63

postgrestest

Go support for testing against a live Postgres database
Go
2
star
64

juju-gui-charm

Charm for Juju GUI.
Python
2
star
65

mgo

The MongoDB driver for Go
Go
2
star
66

autopilot-log-collector

Python
2
star
67

hello-juju

A simple application used to demonstrate juju relations.
HTML
2
star
68

mgopurge

A tool to repair broken mgo/txn transaction references in a Juju MongoDB instance.
Go
2
star
69

httpprof

httpprof is a fork of net/http/pprof which works correctly when not at the server's root
Go
2
star
70

mgoutil

A Go package holding utilities related to the mgo package
Go
2
star
71

blobstore

This package provides a Mongo GridFS-backed blob storage engine.
Go
2
star
72

lru

A Go implementation of a least-recently-used cache
Go
2
star
73

description

Describes the Juju 2.x and 3.x serialization format of a model
Go
2
star
74

charmrepo

Charm repositories and charmstore client packages
Go
2
star
75

version

Go
2
star
76

webbrowser

Go helpers for interacting with Web browsers.
Go
2
star
77

fake-juju

A juju binary using the dummy provider for integration test purposes.
Go
2
star
78

juju-qa-jenkins

Jenkins configuration for Juju CI
Python
2
star
79

termserver

LXD image builder for the jujushell service
Makefile
1
star
80

rfc

Go implementations of various standards, particularly IETF RFCs.
Go
1
star
81

juju-bundlelib

A Python library for working with Juju bundles.
Python
1
star
82

idmclient

client for USSO to macaroons bridge server
Go
1
star
83

mgomonitor

prometheus stats for gopkg.in/mgo.v2
Go
1
star
84

http

Juju wrapper for the standard go HTTP library.
Go
1
star
85

jknife

jknife are juju db surgery tools - this should only be used with direction of a Juju engineer
Go
1
star
86

jasp

CSS
1
star
87

jujuapidoc

Generate information on the Juju API
Go
1
star
88

juju-controller

A Juju controller charm
Python
1
star
89

jaaslibjs

JavaScript library for interacting with the JAAS services
JavaScript
1
star
90

naturalsort

Sort strings according to natural sort order.
Go
1
star
91

charm-developer-docs

Documenting how to write a Juju charm
Shell
1
star
92

lxc

Fork of lxd/lxc to add Juju specific tweaks
Go
1
star
93

romulus

Go
1
star
94

simplekv

A naive key-value store with multiple backends
Go
1
star
95

usso

Go
1
star
96

juju-process-docker

a plugin to allow juju to interface with docker
Go
1
star
97

charm-base-images

Shell
1
star
98

jaas-monitor

Monitor all your jaas models (prototype)
Shell
1
star
99

proxy

A golang type for grouping information about proxy variables.
Go
1
star
100

collections

Deque and set implementations
Go
1
star