Canonical Juju
Menu
Close menu
How Juju Works
Charmhub
Community
Discourse forum
Matrix chat
Docs
Juju
Charm SDK
Contribute to Juju
Operator Day
Topics
Blog
Reset
Search
Toggle side navigation
Toggle side navigation
SDK documentation
Tutorials
Write your first machine charm
Write your first Kubernetes charm
Study your application
Set up your development environment
Create a minimal Kubernetes charm
Make your charm configurable
Expose the version of the application behind your charm
Integrate your charm with PostgreSQL
Preserve your charm’s data
Expose your charm’s operational tasks via actions
Observe your charm with COS Lite
Write unit tests for your charm
Write scenario tests for your charm
Write integration tests for your charm
Open a Kubernetes port in your charm
Publish your charm on Charmhub
Write your first Kubernetes charm using the PaaS App Charmer
How-to guides
Build and own a charm or a bundle
Manage bundles
Set things up
Set up your development environment
Set up a charm project
Manage extensions
Manage Charmcraft
Install Charmcraft
Configure Charmcraft
Authenticate Charmcraft in remote environments
Change step behavior when creating a charm
Include extra files in a charm
Develop
Configure logging in a charm
Use charm resources
Run workloads with a charm - machines
Run workloads with a charm - Kubernetes
Add an action to a charm
Add a config option to a charm
Use secrets in a charm
Use charm libraries
Find and use a charm library
Create and publish a charm library
Write a scenario test for a charm library
Document a charm library
Add an integration to a charm
Instrument a charm with tracing telemetry
Manage interfaces
Register an interface
Write interface tests
Test and debug
Get started with charm testing
Write a unit test for a charm
Write a scenario test for a charm
Write integration tests for a charm
Pack a charm
Deploy a charm
Debug a charm
Get logs from a Kubernetes charm
Document
Add docs to a charm on Charmhub
Document a charm: The README file
Market
Publish a charm
Create a track for your charm
Create an icon for a charm
Miscellaneous
Align an old charm with charmcraft and ops
Turn a hooks-based charm into an ops charm
Pack a reactive-based charm with Charmcraft
Pack a hooks-based charm with Charmcraft
Reference
Bundle
File <bundle>.yaml
Charm
List of files in the charm project
File ‘CONTRIBUTING.md’
File ‘LICENSE’
File ‘README.md’
File ‘actions.yaml’
File ‘charmcraft.yaml’
config.yaml
File ‘dispatch’
File ‘icon.svg’
File ‘lxd-profile.yaml’
File ‘manifest.yaml’
File ‘metadata.yaml’
File ‘pyproject.toml’
File ‘requirements-dev.txt’
File ‘requirements.txt’
File ‘src/charm.py’
File ‘tests/unit/test_charm.py’
File ‘tests/integration/test_charm.py’
File 'tox.ini
The Juju execution flow for a charm
Charm taxonomy
Charm maturity
Charm maturity stage 1
Charm maturity stage 2
Charm naming guidelines
Charm development best practices
Charmcraft
List of Charmcraft CLI commands
charmcraft analyse
charmcraft build
charmcraft clean
charmcraft close
charmcraft create-lib
charmcraft expand-extensions
charmcraft fetch-lib
charmcraft fetch-libs
charmcraft init
charmcraft list-extensions
charmcraft list-lib
charmcraft login
charmcraft logout
charmcraft names
charmcraft pack
charmcraft prime
charmcraft promote-bundle
charmcraft pull
charmcraft publish-lib
charmcraft register
charmcraft register-bundle
charmcraft release
charmcraft remote-build
charmcraft resources
charmcraft resource-revisions
charmcraft revisions
charmcraft set-resource-architectures
charmcraft stage
charmcraft status
charmcraft unregister
charmcraft upload
charmcraft upload-resource
charmcraft version
charmcraft whoami
Charmcraft deprecation notices
Charmhub
charm-relation-interfaces
Developer tools
Charmcraft analyzers and linters
Tools for debugging
Event
List of events
Lifecycle events
Secret events
Relation events
Storage events
Custom event
Charm lifecycle
Library
Popular charm library index
Ops
Framework constructs
Framework
Leader
Model
Pebble (Ops)
Pebble
PaaS App Charmer
Promotion
Publication
Reasons to publish your charm on Charmhub
pytest-operator
Revision
Rockcraft
Scenario
Context
Event
State
Status
Storage
StoredState: Uses, Limitations
Testing
Interface tests
YAML anchors and aliases
Explanation
Charming history
Charmed operators vs. Kubernetes operators
How and When to Defer Events
Holistic vs delta charms
Talking to a workload: control flow from A to Z
How to manage Charmcraft
See also:
Charmcraft
Install Charmcraft
Configure Charmcraft
Authenticate Charmcraft in remote environments
Last updated 1 year, 10 months ago.
Help improve this document in the forum
.