Juju 2.7: Enhanced k8s experience, improved networking and more
by Tytus Kurek on 11 December 2019
Canonical is proud to announce the availability of Juju 2.7. This new release introduces a range of exciting features and several improvements which enhance Juju across various areas.
To learn more about Juju, visit our page.
Kubernetes extensions
Juju is becoming the simplest way to deploy and manage your container-centric workloads. This release was aimed at bringing more Juju features to k8s charms and more k8s features to Juju.
K8s charms can now define actions, introspect agents, and communicate back to Juju via the addition of juju-run
within the pod’s PATH
environmental variable. Experienced k8s operators will feel more at home with the ability to set secrets, administer service accounts, and other k8s-native features from their charms directly.
Flexible, adaptive networking in
Network management used to be one of the most frustrating parts when deploying applications to the cloud. Therefore, during this development cycle, Canonical has reworked the internals of how Juju manages networking. This has paid off in the form of added flexibility and opens the door for lots of innovation in this area.
The most prominent change has been the inclusion of the juju bind
command. As a result, users can now define application endpoint bindings to network spaces over time. Previously this capability was only available at the deployment time, so the applications had to be re-deployed in case of any changes on the networking side.
Bulking out bundles
As of Juju 2.7, bundles provide the capability of describing cross-model relations. Cross-model relations allow re-using applications outside of their original model. That allows central services, such as those provided by OpenStack Keystone or Vault, to be accessible from other models.
Cross-model relations also enable applications to bridge clouds. For example, users can deploy a database on bare metal with minimal I/O overhead and a web application, which uses these data, on Kubernetes where high-density is preferred.
Moreover, bundles now support Juju’s trust functionality. Trust allows users to delegate programmatic access to cloud APIs to charms. This allows charms to directly provision storage.
New charm capability: application-level data
Charms are now able to store and retrieve data outside of individual application units. This new functionality is scale-agnostic. Even if the scale of an application is reduced to 0, the data is retained. This effort was driven by a requirement to create a distributed key/value store that is accessible for all units of an application. To set a shared value, charms needed to coordinate between all peers. That’s now reduced to only a single message.
CLI improvements
Juju 2.7 introduces several changes to command-line behaviour to make it easier for both developers and end-users. This includes the commands used to manage clouds and credentials. Users can benefit from numerous improvements, such as “ask-or-tell” approach, region-specific credentials, updating credentials from an input file, adding multiple credentials at once, etc.
For more information about Juju 2.7, please refer to the official release notes.
To learn more about Juju, visit our page.