A Cloud Native Application Bundle (CNAB) is a specification designed to facilitate the packaging, distribution, and lifecycle management of cloud-native applications and their dependencies. It aims to simplify the deployment and management of applications across different cloud environments by bundling all necessary components and configurations into a single, portable unit.
Key Components of CNAB
- CNAB Core: This covers the execution of bundles, ensuring that the application and its dependencies are correctly deployed, upgraded, and uninstalled.
- CNAB Registry: This specification deals with storing bundles in OCI (Open Container Initiative) registries.
- CNAB Claims: This involves data storage related to what is installed and the status of the installation.
- CNAB Dependencies: This allows bundles to depend on other bundles, facilitating complex application deployments.
- Credential Sets: This manages credentials on the client-side and passes them to a bundle.
- Parameter Sources: This connects a bundle's outputs to its parameters for subsequent actions.
Role of Porter in CNAB
Porter is an open-source tool that serves as a CNAB container runtime, responsible for executing and managing the lifecycle operations of CNAB packages. It simplifies the deployment and management of CNAB bundles by providing a command-line interface (CLI) and supporting custom plugins for extended functionality. Porter's key features include:
- Install: Deploys applications and dependencies in the CNAB package to the target environment.
- Upgrade: Updates deployed applications and dependencies by applying a new CNAB package version.
- Uninstall: Removes deployed applications and dependencies from the target environment.
- Status Query: Provides information about deployed applications and dependencies, such as version, status, and configuration.
- Output Management: Allows users to acquire and use output data generated by deployed applications.
- Key Management: Manages encryption and key-related operations in CNAB packages.
- Extension Support: Supports extensions to provide user-defined functions and operations.
Porter is designed to be user-friendly, allowing developers to create and manage CNAB bundles without needing to understand the underlying CNAB specification. It integrates with existing tools like Helm, Kustomize, Terraform, and public clouds, making it easier to compose and manage complex application deployments.