Carvel Project Overview and Tools

Sep 10, 2024

Project Carvel Presentation Notes

Introduction

  • Last day of the conference, brief introduction of speakers.
    • Somic: Works at Team Tanzu, focuses on developer experience tooling and maintains the project "Carvel."
    • Daniel: Part of Tanzu and Spring teams, works with Java.

Overview of Carvel

  • Carvel consists of composable, single-purpose tools for managing applications and shipping them to end users.
    • Keywords: Reliable, Single purpose, Composable.

Key Tool: YTT (YAML Templating Tool)

  • YTT is designed for templating YAML files.
    • Understands YAML as a data structure, ensuring valid input/output.
    • Can template any YAML, not limited to Kubernetes resources.

YTT Demonstration

  • Starting with basic YAML configuration.
  • Uses variables and functions to manage configuration efficiently.
    • Example: Replace values dynamically using variables.
    • Functionality includes deduplication via functions and error feedback for invalid YAML.

Handling Data Input

  • YTT allows for external data input through YAML files.
  • Users can supply values via command-line flags or value files, enhancing user experience.
    • Example: Accepting values from a data file for ports and channels.
  • YTT includes a value schema feature for validating user input.

Overlays and Configuration Management

  • Supports applying overlays to large YAML files, similar to customization tools.
    • Ability to match and replace specific nodes in the configuration.

Tool: CAP (Cluster Application Platform)

  • CAP manages resources as groups on a cluster.
  • Handles resource ordering and dependencies automatically during deployment.
    • Example: Creating namespaces and resources in the correct order.
  • Provides a user-friendly alternative to kubectl for deploying and inspecting applications.

Image Management Tools

  • KBuild: Helps manage image references to ensure they are immutable and verifiable.
    • Generates lock files to track image versions used in configurations.
  • Image Package: Bundles configuration into OCI artifacts for easy distribution and management.
    • Can relocate images across repositories seamlessly.

CAP Controller

  • Surfaces APIs on the cluster for application management.
    • Simplifies the flow for obtaining desired cluster state and deploying applications.
    • Allows fetching configuration from various sources, including image packages and git repositories.

Developer Experience

  • Uses packaging APIs for easier interaction with the cluster, allowing developers to install applications without deep YAML knowledge.
    • Example: Using kubectl commands to list and install available packages.

Conclusion

  • Summary of tools discussed: YTT, CAP, KBuild, Image Package, and CAP Controller.
  • Emphasized the need for user-friendly workflows and the flexibility to operate within existing ecosystems.

Q&A Session

  • Addressed a question about composability in YTT and the use of the vendor tool for managing configurations.

Resources

  • Demo repository and feedback channels mentioned for further engagement.