All Projects β†’ StarOfService β†’ carbon

StarOfService / carbon

Licence: MIT license
Carbon is a package manager for Kubernetes. It allows to operate with your application along with Kubernetes manifests as a holistic package.

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to carbon

Setup Miniconda
Set up your GitHub Actions workflow with conda via miniconda
Stars: ✭ 222 (+1750%)
Mutual labels:  package-manager
Brew
🍺🐧 The Homebrew package manager for Linux
Stars: ✭ 2,600 (+21566.67%)
Mutual labels:  package-manager
xconfigure
High-Performance configuration patterns and recipes.
Stars: ✭ 42 (+250%)
Mutual labels:  package-manager
Carthage
A simple, decentralized dependency manager for Cocoa
Stars: ✭ 14,487 (+120625%)
Mutual labels:  package-manager
Wapm Cli
πŸ“¦ WebAssembly Package Manager (CLI)
Stars: ✭ 236 (+1866.67%)
Mutual labels:  package-manager
Qlot
A project-local library installer for Common Lisp
Stars: ✭ 242 (+1916.67%)
Mutual labels:  package-manager
Dep
Go dependency management tool experiment (deprecated)
Stars: ✭ 13,106 (+109116.67%)
Mutual labels:  package-manager
libdnf
Package management library.
Stars: ✭ 157 (+1208.33%)
Mutual labels:  package-manager
Punic
Clean room reimplementation of Carthage tool
Stars: ✭ 236 (+1866.67%)
Mutual labels:  package-manager
Bower
A package manager for the web
Stars: ✭ 15,095 (+125691.67%)
Mutual labels:  package-manager
Poetry
Python dependency management and packaging made easy.
Stars: ✭ 17,543 (+146091.67%)
Mutual labels:  package-manager
Asset Packagist
Asset Packagist
Stars: ✭ 235 (+1858.33%)
Mutual labels:  package-manager
Npx
execute npm package binaries (moved)
Stars: ✭ 2,634 (+21850%)
Mutual labels:  package-manager
Pkgtop
Interactive package manager and resource monitor designed for the GNU/Linux.
Stars: ✭ 222 (+1750%)
Mutual labels:  package-manager
vscode-npm-gui
vscode nuget package manager gui https://marketplace.visualstudio.com/items?itemName=aliasadidev.nugetpackagemanagergui
Stars: ✭ 36 (+200%)
Mutual labels:  package-manager
Stow
GNU Stow - mirror of savannah git repository occasionally with more bleeding-edge branches
Stars: ✭ 207 (+1625%)
Mutual labels:  package-manager
Pack
πŸ“¦ The missing vim8 package manager.
Stars: ✭ 238 (+1883.33%)
Mutual labels:  package-manager
flora
A distributed smart contract package manager to create a better and shared authority in the space.
Stars: ✭ 19 (+58.33%)
Mutual labels:  package-manager
pacstall
An AUR-inspired package manager for Ubuntu
Stars: ✭ 842 (+6916.67%)
Mutual labels:  package-manager
Rubygems
Library packaging and distribution for Ruby.
Stars: ✭ 2,902 (+24083.33%)
Mutual labels:  package-manager

Carbon is a package manager for Kubernetes. It allows to operate with your application along with Kubernetes manifests as a holistic package.

With a Carbon package you are able to do:

  • develop
  • build
  • assign version (Docker tags)
  • distribute (via Docker registries)
  • install to Kubernetes
  • and many other maintenance operations

Carbon packages are based on Docker images and don't impose any additional requirements or restrictions. Thus you may use your favorite Docker registry in order to store, share and install it to your Kubernetes cluster.

If you want to try Carbon, please check this documentation page: Get started with Carbon

How Carbon works

Carbon package is a Docker image with additional metadata stored at the image labels. The most important part of the metadata are Kubernetes manifest templates, which are converted to Kubernetes manifests on the installation stage.

Usage of Docker labels allows us to avoid downloading the whole image for the installation. Carbon just reads a package metadata directly from a registry, builds a Kubernetes manifest based on the templates and applies this manifest to a Kubernetes cluster. Based on the manifest, Kubernetes downloads specified Docker images from a registry and launches Pods.

Content

TODO: code style

Limitations

  • All resources of a package will be deployed to the same Kuberenetes namespace. If you need to deploy resources to different namespaces, we recommend splitting such package to different packages
  • If a package has global resources (like ClusterRole or CustomResourceDefinition), it's your responsibility to avoid multiple installations of your package in different Namespaces, especially when you use cluster scope (it may be improved in the future).
  • You are forced to build one and only one Docker image in the scope of a one Carbon package:
    • Even if you don't have any data but Kuberenet manifests, you must build a Docker image. For such cases we recommend using a scratch base image. More details can be found at Building a Carbon package without an application code
    • When you want to build two (or more) Docker images in the scope of a single Carbon package, you have two options: to build a single Docker image and run it with different commands, or to split your codebase into different Carbon packages.

Roadmap

  • carbon init - create package Carbon configs for a new package
  • carbon verify - verify Carbon package configuration before running carbon build
  • carbon config-upgrade - upgrade a package config to the latest version
  • version constraints and dependencies - provide a possibility to define dependencies among Carbon packages and to install a package only when all version constraints are met
  • Remove resources from all namespaces when they are (re)moved with Cluster Carbon scope mode
  • smooth migration between Cluster and Namespace Carbon scopes

Community

TODO

Contribution

While Carbon is an important tool for our engineering department, it isn't a major business goal. Thus we're going to add the features matters for us.

If you need any feature which isn't implemented yet, feel free to propose MR. In the extension of this tool, we count on the community.

Development environment

You will need:

  • Any Unix system (Linux, OSX, FreeBSD). Some tests use Unix shell commands, thus they don't work at Windows
  • Minikube
  • Docker
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].