Breaking Tradition: The Future of Package Management with Kubernetes
by Vibhas Kumar — Oct 14, 2021
Hello, KubeCon + CloudNativeCon attendees! We were thrilled to share Carvel on the keynote stage with you all. This blog post will help you learn more and get started with Carvel’s package manager, kapp-controller.
The Future of Package Management ¶
Package management on Kubernetes should be simple and without any thorns. Earlier this year we introduced kapp-controller as a package manager for Kubernetes focusing on the following two key principles:
Leveraging declarative APIs so users can focus on their desired state and let the system get them there. This also enables easy updates to the software by just updating configuration files and letting Kubernetes do what it does best in reconciling the state.
Using immutable bundles of software distributed using OCI registries so that the users know exactly what is running on their cluster and can reproduce the state of a cluster at will. These bundles can also be relocated and deployed in an air-gapped environment.
If you want to learn more about why we created a package manager for Kubernetes, check out our blog post covering this topic.
When and how would I use kapp-controller? ¶
We built the package manager, kapp-controller, with a layered approach in mind so that the users can use the right abstraction depending on their use case. There are a few different use cases you can find yourself in:
- As a developer, you have developed software that you would like to deploy to a Kubernetes cluster for your own use and keep it updated.
- You can use the App CR (Custom Resource) that provides a lightweight and flexible way for you to deploy your own software to Kubernetes.
- As a cluster operator , you have a collection of different versioned software that you would like to offer to your development teams so that they can easily discover, choose and install on their cluster.
- We built the kapp-controller’s package management APIs that are built on top of App CR to address this so that you can package your software, distribute it, and make it discoverable to your users.
- As a developer, you want to deploy a package on your cluster that is authored by someone else.
- You can use the package management APIs to simply add a package repository (collection of packages) authored by someone else, discover and install the package that you want.
In the keynote demo, we used the App CR to deploy our Kubernetes application and used a Git reference as the source for fetching so that our application can stay up to date with the changes in the Git repository. Since our application required Contour’s HTTPProxy, we installed an open-source Contour package that was authored by the community. We were able to do that by just adding a package repository to the cluster and choosing a package and its version to install without caring about its internal details.
How do I learn more and get started? ¶
We recommend that you get started using the below resources. For any more information, our kapp-controller overview page is the right place for you.
- Install your software with App CR and keep it updated
- Install your first package from an OSS Package Repository
- Create your first package to distribute it to your users
- Check out how the U.S. Army is using kapp-controller in production
Join us on Slack and GitHub ¶
We are excited about this new adventure and we want to hear from you and learn with you. Here are several ways you can get involved:
- Join Carvel’s slack channel, #carvel in Kubernetes workspace, and connect with over 900+ Carvel users.
- Find us on GitHub. Suggest how we can improve the project, the docs, or share any other feedback.
- Attend our Community Meetings, happening every Thursday at 10:30am PT / 1:30pm ET. Check out the Community page for full details on how to attend.
We look forward to hearing from you and hope you join us in building a strong packaging and distribution story for applications on Kubernetes!