Skip to content
forked from juju/juju

Universal Operator Lifecycle Manager (OLM) for Kubernetes operators, and operators for traditional Linux and Windows apps, with declarative integration between operators for automated microservice integration.

License

Notifications You must be signed in to change notification settings

jack-w-shaw/juju

This branch is 21 commits behind juju/juju:2.9.

Folders and files

NameName
Last commit message
Last commit date
Oct 9, 2024
Jul 23, 2024
Aug 29, 2024
Dec 12, 2023
Dec 11, 2024
Nov 30, 2023
Jul 11, 2023
May 30, 2022
Nov 21, 2023
Jul 19, 2023
Oct 4, 2024
Dec 11, 2024
Oct 10, 2023
May 31, 2024
Jun 23, 2023
Nov 24, 2023
May 19, 2022
Feb 29, 2024
May 20, 2021
Jul 27, 2022
Aug 29, 2024
Jul 19, 2023
Oct 18, 2022
Jul 19, 2023
Jul 27, 2022
Jul 11, 2023
Dec 11, 2024
Jul 19, 2023
Jul 19, 2023
Jul 19, 2023
Jul 19, 2023
Dec 11, 2024
Nov 18, 2022
Jul 11, 2023
Jul 11, 2023
Dec 11, 2023
Oct 4, 2024
Jul 19, 2023
Oct 4, 2024
Aug 29, 2024
Sep 14, 2023
Nov 27, 2023
Mar 27, 2023
Dec 11, 2024
May 12, 2022
May 31, 2024
Jan 31, 2022
Aug 30, 2024
Oct 13, 2021
Dec 11, 2024
Aug 25, 2022
Jan 27, 2022
Oct 4, 2024
Jun 14, 2018
Oct 5, 2021
Mar 27, 2015
Jun 20, 2024
Aug 17, 2023
Jun 23, 2023
Oct 15, 2024
Jan 15, 2024
Jul 27, 2022
Feb 5, 2025
Feb 5, 2025
Mar 15, 2024
Jul 11, 2023

Repository files navigation

Juju logo next to the text Canonical Juju

Juju is a model-driven Operator Lifecycle Manager (OLM). Juju greatly improves the experience of running Kubernetes operators, especially in projects that integrate many operators from different publishers.

Why Juju

A Kubernetes operator is a container that drives the config and operation of a workload. By encapsulating ops code as a reusable container, the operator pattern moves beyond traditional config management to allow much more agile operations for complex cloud workloads.

Shared, open source operators take infrastructure as code to the next level with community-driven ops and integration code. Reuse of ops code improves quality and encourages wider community engagement and contribution. Operators also improve security through consistent automation. Juju operators are a community-driven devsecops approach to open source operations.

Juju implements the Kubernetes operator pattern, but is also a universal OLM that extends the operator pattern to traditional applications (without Kubernetes) on Linux and Windows. Such machine operators can work on bare metal, virtual machines or cloud instances, enabling multi cloud and hybrid cloud operations. Juju allows you to embrace the operator pattern on both container and legacy estate. An operator for machine-based environments can share 95% of its code with a Kubernetes operator for the same app.

Juju excels at application integration. Instead of simply focusing on lifecycle management, the Juju OLM provides a rich application graph model that tells operators how to integrate with one another. This dramatically simplifies the operations of large deployments.

A key focus for Juju is to simplify operator design, development and usage. Instead of making very complex operators for specific scenarios, Juju encourages devops to make composable operators, each of which drives a single Docker image, and which can be reused in different settings. Composable operators enable very rich scenarios to be constructed out of simpler operators that do one thing and do it well.

The OLM provides a central mechanism for operator instantiation, configuration, upgrades, integration and administration. The OLM provides a range of operator lifecycle services including leader election and persistent state. Instead of manually deploying and configuring operators, the OLM manages all the operators in a model at the direction of the administrator.

Open Operator Collection

The world's largest collection of operators all use Juju as their OLM. The Charmhub community emphasizes quality, collaboration and consistency. Publish your own operator and share integration code for other operators to connect to your application.

The Open Operator Manifesto outlines the values of the community and describe the ideal behaviour of operators, to shape contributions and discussions.

Multi cloud and hybrid operations across ARM and x86 infrastructure

The Juju OLM supports AWS, Azure, Google, Oracle, OpenStack, VMware and bare metal machines, as well as any conformant Kubernetes cluster. Integrate operators across clouds, and across machines and containers, just as easily. A single scenario can include applications on Kubernetes, as well as applications on a range of clouds and bare metal instances, all integrated automatically.

Juju operators support multiple CPU architectures. Connect applications on ARM with applications on x86 and take advantage of silicon-specific optimisations. It is good practice for operators to adapt to their environment and accelerate workloads accordingly.

Pure Python operators

The Python Operator Framework makes it easy to write an operator. The framework handles all the details of communication between integrated operators, so you can focus on your own application lifecycle management.

Code sharing between operator publishers is simplified making it much faster to collaborate on distributed systems involving components from many different publishers and upstreams. Your operator is a Python event handler. Lifecycle management, configuration and integration are all events delivered to your charm by the framework.

Architecture

The Juju client, server and agent are all written in Golang. The standard Juju packaging includes an embedded database for centralised logging and persistence, but there is no need to manage that database separately.

Operators can be written in any language but we do encourage new authors to use the Python Operator Framework for ease of contribution, support and community participation.

Production grade

The Juju server has built-in support for high availability when scaled out to three instances. It can monitor itself and grow additional instances in the event of failure, within predetermined limits. Juju supports backup, restore, and rolling upgrade operations appropriate for large-scale centralised enterprise grade management and operations systems.

Get started

Our community hangs out at the Charmhub discourse which serves as a combination mailing list and web forum. Keep up with the news and get a feel for operator engineering and usage there. Get the Juju CLI on Windows, macOS or Linux with the install instructions and try the tutorials. All you need is a small K8s cluster, or an Ubuntu machine or VM to run MicroK8s.

Read the documentation for a comprehensive reference of commands and usage.

Contributing

Follow our code and contribution guidelines to learn how to make code changes. File bugs in Launchpad or ask questions on our Freenode IRC channel, and Mattermost.

About

Universal Operator Lifecycle Manager (OLM) for Kubernetes operators, and operators for traditional Linux and Windows apps, with declarative integration between operators for automated microservice integration.

Resources

License

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 94.4%
  • Python 3.8%
  • Shell 1.3%
  • PHP 0.4%
  • Makefile 0.1%
  • PowerShell 0.0%