Companion library for 12-factor app support in Charmcraft & Rockcraft.
Project description
PaaS Charm
Easily deploy and operate your Flask, Django, FastAPI, Go, Express, or Spring Boot applications and associated infrastructure, such as databases and ingress, using open source tooling. This lets you focus on creating applications for your users backed with the confidence that your operations are taken care of by world class tooling developed by Canonical, the creators of Ubuntu.
Have you ever created an application and then wanted to deploy it for your users only to either be forced to use a proprietary public cloud platform or manage the deployment and operations yourself? PaaS Charm will take your application and create an OCI image using Rockcraft and operations code using Charmcraft for you. The full suite of tools is open source so you can see exactly how it works and even contribute! After creating the app charm and image, you can then deploy your application into any Kubernetes cluster using Juju. Need a database? Using Juju you can deploy a range of popular open source databases, such as PostgreSQL or MySQL, and integrate them with your application with a few commands. Need an ingress to serve traffic? Use Juju to deploy and integrate a range of ingresses, such as Traefik, and expose your application to external traffic in seconds.
Getting Started
This project provides 12-factor app support across multiple frameworks (Flask, Django, FastAPI, Go, Express, and Spring Boot). The quickest way to get started is to follow the framework-specific tutorials linked below.
Make sure that you have the latest/edge version of Charmcraft and Rockcraft
installed:
sudo snap install charmcraft --channel latest/edge --classic
sudo snap install rockcraft --channel latest/edge --classic
Both tools provide framework profiles and extensions that
generate the required files and handle the operational workload.
You only need to fill in some metadata in the rockcraft.yaml and charmcraft.yaml files.
To create the necessary files (example shown for Flask):
rockcraft init --profile flask-framework
mkdir charm
cd charm
charmcraft init --profile flask-framework
After packing the rock and charm using rockcraft pack and charmcraft pack
and uploading the rock to a k8s registry, you can juju deploy your application,
integrate it with ingress, and start serving traffic to your users.
Read the framework-specific tutorials for a complete walkthrough:
Documentation
The 12-Factor framework support documentation provides guidance and learning material about the tooling, getting started, customization, and usage. The documentation is hosted on Read the Docs.
Build the 12-Factor app support documentation located in this repository:
cd docs
make run
If you have any documentation-related comments, issues, or suggestions, please open an issue or pull request in this repository, or reach out to us on Matrix.
Additional resources
- 12-Factor app support documentation
- Rockcraft: Documentation related to the OCI image containers
- Charmcraft: Documentation related to the software operators (charms)
Contributing
Is there something missing from the 12-Factor app support framework? We welcome contributions! See CONTRIBUTING.md for more details.
Reach out to us on Matrix with your questions and use cases.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file paas_charm-1.11.3.tar.gz.
File metadata
- Download URL: paas_charm-1.11.3.tar.gz
- Upload date:
- Size: 76.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6e25de0670c227d98361e0b4bd9e4ab72df22d156c3fce1aa74431bceb730df5
|
|
| MD5 |
60b411ffaf380dda28c37e53721b7877
|
|
| BLAKE2b-256 |
e1bb1b0be38f0323ee8a0c16f55d9770684a007fac59f089e857138183291554
|
Provenance
The following attestation bundles were made for paas_charm-1.11.3.tar.gz:
Publisher:
release.yaml on canonical/paas-charm
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
paas_charm-1.11.3.tar.gz -
Subject digest:
6e25de0670c227d98361e0b4bd9e4ab72df22d156c3fce1aa74431bceb730df5 - Sigstore transparency entry: 1729595787
- Sigstore integration time:
-
Permalink:
canonical/paas-charm@9efc878e4bfc08ce1b4ed027840fbcab6812107f -
Branch / Tag:
refs/heads/main - Owner: https://github.com/canonical
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@9efc878e4bfc08ce1b4ed027840fbcab6812107f -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file paas_charm-1.11.3-py3-none-any.whl.
File metadata
- Download URL: paas_charm-1.11.3-py3-none-any.whl
- Upload date:
- Size: 97.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3cff6718da8dfa41c433faa4d3121359f5d261d8a37aa6bb647c63cb51323790
|
|
| MD5 |
a551842ed4455ddb3465f8c6ab66e904
|
|
| BLAKE2b-256 |
4590ecd91407d504fbb822690f7c183e4da96b9974c8e4c9a853125af8d4dad6
|
Provenance
The following attestation bundles were made for paas_charm-1.11.3-py3-none-any.whl:
Publisher:
release.yaml on canonical/paas-charm
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
paas_charm-1.11.3-py3-none-any.whl -
Subject digest:
3cff6718da8dfa41c433faa4d3121359f5d261d8a37aa6bb647c63cb51323790 - Sigstore transparency entry: 1729595872
- Sigstore integration time:
-
Permalink:
canonical/paas-charm@9efc878e4bfc08ce1b4ed027840fbcab6812107f -
Branch / Tag:
refs/heads/main - Owner: https://github.com/canonical
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@9efc878e4bfc08ce1b4ed027840fbcab6812107f -
Trigger Event:
workflow_dispatch
-
Statement type: