All Projects → dollarshaveclub → metahelm

dollarshaveclub / metahelm

Licence: MIT license
Install dependency graphs of Kubernetes Helm Charts

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to metahelm

ship-it
Wattpad's tool for continuously deploying code to Kubernetes quickly, safely, and observably.
Stars: ✭ 14 (-80%)
Mutual labels:  helm, helm-charts
camunda-helm
Camunda public Kubernetes Helm repo and charts
Stars: ✭ 33 (-52.86%)
Mutual labels:  helm, helm-charts
helm-certgen
Helm plugin for generation of TLS certificates
Stars: ✭ 15 (-78.57%)
Mutual labels:  helm, helm-charts
charts
Helm charts for using F5 products and services in Kubernetes and OpenShift environments.
Stars: ✭ 28 (-60%)
Mutual labels:  helm, helm-charts
charts
Helm charts for creating reproducible and maintainable deployments of Polyaxon with Kubernetes.
Stars: ✭ 32 (-54.29%)
Mutual labels:  helm, helm-charts
helm-charts
Source & Repo of https://charts.kubesphere.io/main & https://charts.kubesphere.io/test
Stars: ✭ 85 (+21.43%)
Mutual labels:  helm, helm-charts
clearml-server-helm
ClearML Server for Kubernetes Clusters Using Helm
Stars: ✭ 18 (-74.29%)
Mutual labels:  helm, helm-charts
K8s Wait For
A simple script that allows to wait for a k8s service, job or pods to enter a desired state
Stars: ✭ 172 (+145.71%)
Mutual labels:  helm, dependencies
vault-charts
Charts to deploy Hashicorp Vault in Kubernetes
Stars: ✭ 15 (-78.57%)
Mutual labels:  helm, helm-charts
helm-charts
OpenSourced Helm charts
Stars: ✭ 38 (-45.71%)
Mutual labels:  helm, helm-charts
django-postgresql-dag
Directed Acyclic Graphs with a variety of methods for both Nodes and Edges, and multiple exports (NetworkX, Pandas, etc). This project is the foundation for a commercial product, so expect regular improvements. PR's and other contributions are welcomed.
Stars: ✭ 23 (-67.14%)
Mutual labels:  graph-algorithms, dag
kube-tools-aws
A lightweight Docker image with various CLI tooling for working with Kubernetes.
Stars: ✭ 26 (-62.86%)
Mutual labels:  helm, helm-charts
Build Harness
🤖Collection of Makefiles to facilitate building Golang projects, Dockerfiles, Helm charts, and more
Stars: ✭ 236 (+237.14%)
Mutual labels:  helm, helm-charts
Helm-Cheat-Sheet
A cheat sheet for Helm commands.
Stars: ✭ 72 (+2.86%)
Mutual labels:  helm, helm-charts
Helmfiles
Comprehensive Distribution of Helmfiles for Kubernetes
Stars: ✭ 205 (+192.86%)
Mutual labels:  helm, helm-charts
charts
Deploy Kubernetes Helm Charts for Check Point CloudGuard
Stars: ✭ 18 (-74.29%)
Mutual labels:  helm, helm-charts
Helm Mapkubeapis
This is a Helm plugin which map deprecated or removed Kubernetes APIs in a release to supported APIs
Stars: ✭ 157 (+124.29%)
Mutual labels:  helm, helm-charts
Helm Secrets
Successor of zendesk/helm-secrets - A helm plugin that help manage secrets with Git workflow and store them anywhere
Stars: ✭ 165 (+135.71%)
Mutual labels:  helm, helm-charts
helm-charts
Community maintained Helm charts for Flux
Stars: ✭ 66 (-5.71%)
Mutual labels:  helm, helm-charts
matrix-chart
Helm chart for deploying a Matrix homeserver stack
Stars: ✭ 83 (+18.57%)
Mutual labels:  helm, helm-charts

GoDoc CircleCI

Metahelm

Metahelm is a CLI and library for installing dependency graphs of Helm charts.

Why?

Helm dependency handling doesn't handle complex trees of dependencies well. It creates all Kubernetes objects at once and waits for them to settle into a consistent state.

With complex sets of dependency relationships, this means one or more applications go into CrashLoopBackoff, greatly lengthening the time for the entire tree to come up. Sometimes they will completely fail when one or more applications gives up entirely.

What does Metahelm do?

Metahelm takes a list of charts (as YAML) with dependency relationships specified, and optionally a way for Metahelm to tell when a chart is "up" or successful.

Metahelm will build a dependency graph (DAG) of the charts and install them in order such that all dependencies are satisfied prior to each chart install.

Sample YAML

Say you have a primary application ("YOLO") that depends upon several microservices to be running for the primary app to start. Those microservices are called "Alpha", "Bravo" and "Charlie". "Alpha" depends upon a MySQL database, "Bravo" needs PostgreSQL and all three need Redis.

An example YAML input might look like the following:

- name: YOLO
  path: /home/charts/yolo
  values_path: /home/releases/yolo/values.yml
  primary_deployment: yolo
  dependencies:
    - alpha
    - bravo
    - charlie
- name: alpha
  path: /home/charts/alpha
  values_path: /home/releases/alpha/values.yml
  primary_deployment: alpha
  wait_for_all_pods: true
  dependencies:
    - mysql
    - redis
- name: bravo
  path: /home/charts/bravo
  values_path: /home/releases/bravo/values.yml
  primary_deployment: bravo
  wait_for_all_pods: true
  dependencies:
    - postgres
    - redis
- name: charlie
  path: /home/charts/charlie
  values_path: /home/releases/charlie/values.yml
  primary_deployment: charlie
  wait_for_all_pods: true
  dependencies:
    - redis
- name: mysql
  path: /home/charts/mysql
  values_path: /home/releases/mysql/values.yml
  primary_deployment: mysql
- name: postgres
  path: /home/charts/postgres
  values_path: /home/releases/postgres/values.yml
  primary_deployment: postgres
- name: redis
  path: /home/charts/redis
  values_path: /home/releases/redis/values.yml
  primary_deployment: redis

Using metahelm plan -g produces a graph like this:

...and an execution plan:

Graph Root: YOLO
Phase 1: ["mysql" "postgres" "redis"]
Phase 2: ["charlie" "alpha" "bravo"]
Phase 3: ["YOLO"]

Phase 1 is installed first. The Mysql, postgres and redis charts would be installed in parallel. When they are all determined to be healthy, Phase 2 ("Charlie", "Alpha", "Bravo") would be installed in a similar fashion. Finally, Phase 3 ("YOLO") would be installed.

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].