All Projects → projectsyn → commodore

projectsyn / commodore

Licence: BSD-3-Clause License
Commodore provides opinionated tenant-aware management of Kapitan inventories and templates. Commodore uses Kapitan for the heavy lifting of rendering templates and resolving a hierachical configuration structure.

Programming Languages

python
139335 projects - #7 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to commodore

ship-it
Wattpad's tool for continuously deploying code to Kubernetes quickly, safely, and observably.
Stars: ✭ 14 (-60%)
Mutual labels:  helm, gitops
gitops-helm-workshop
Progressive Delivery for Kubernetes with Flux, Helm, Linkerd and Flagger
Stars: ✭ 59 (+68.57%)
Mutual labels:  helm, gitops
Flux
Successor: https://github.com/fluxcd/flux2 — The GitOps Kubernetes operator
Stars: ✭ 6,688 (+19008.57%)
Mutual labels:  helm, gitops
Argo Cd
Declarative continuous deployment for Kubernetes.
Stars: ✭ 7,887 (+22434.29%)
Mutual labels:  helm, gitops
Book k8sInfra
< 컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커 >
Stars: ✭ 176 (+402.86%)
Mutual labels:  helm, gitops
charts
Helm charts for creating reproducible and maintainable deployments of Polyaxon with Kubernetes.
Stars: ✭ 32 (-8.57%)
Mutual labels:  helm, gitops
monokle
🧐 Monokle streamlines the process of creating, analyzing, and deploying Kubernetes configurations by providing a unified visual tool for authoring YAML manifests, validating policies, and managing live clusters.
Stars: ✭ 795 (+2171.43%)
Mutual labels:  helm, gitops
k3s-gitops
GitOps principles to define kubernetes cluster state via code
Stars: ✭ 103 (+194.29%)
Mutual labels:  helm, gitops
flux-ui
web ui for fluxctl (gitops tool)
Stars: ✭ 30 (-14.29%)
Mutual labels:  helm, gitops
atlantis
GitOps for Teams (experimental hard fork of atlantis)
Stars: ✭ 13 (-62.86%)
Mutual labels:  helm, gitops
gitops-playground
Reproducible infrastructure to showcase GitOps workflows and evaluate different GitOps Operators on Kubernetes
Stars: ✭ 77 (+120%)
Mutual labels:  helm, gitops
gitops-build-lib
Jenkins pipeline shared library for automating deployments via GitOps
Stars: ✭ 23 (-34.29%)
Mutual labels:  helm, gitops
multi-stage-react-app-example
Repo for blog post - "A cleaner multi-stage continuous deployment on Kubernetes of a Create React App with kustomize, helm and skaffold"
Stars: ✭ 19 (-45.71%)
Mutual labels:  helm
gimletd
The Gitops Release Manager
Stars: ✭ 24 (-31.43%)
Mutual labels:  gitops
helm-charts
Helm Charts
Stars: ✭ 24 (-31.43%)
Mutual labels:  helm
KubeStitch
Kubernetes deployment stitcher
Stars: ✭ 19 (-45.71%)
Mutual labels:  helm
helm-gh-pages
A GitHub Action for publishing Helm charts to Github Pages
Stars: ✭ 60 (+71.43%)
Mutual labels:  helm
data-center-helm-charts
Helm charts for Atlassian's Data Center products
Stars: ✭ 77 (+120%)
Mutual labels:  helm
lsp-origami
lsp-mode ❤️ origami.el
Stars: ✭ 33 (-5.71%)
Mutual labels:  helm
kbst
Kubestack framework CLI
Stars: ✭ 26 (-25.71%)
Mutual labels:  gitops

Project Syn: Commodore

This repository is part of Project Syn. For documentation on Project Syn and this component, see https://syn.tools.

Please note that this project is in its early stages and under active development.

See GitHub Releases for changelogs of each release version of Commodore.

See DockerHub for pre-built Docker images of Commodore.

Overview

Commodore provides opinionated tenant-aware management of Kapitan inventories and templates. Commodore uses Kapitan for the heavy lifting of rendering templates and resolving a hierachical configuration structure.

Commodore introduces the concept of a component, which is a bundle of Kapitan templates and associated Kapitan classes which describe how to render the templates. Commodore fetches any components that are required for a given configuration before running Kapitan, and sets up symlinks so Kapitan can find the component classes.

Commodore also supports additional processing on the output of Kapitan, such as patching in the desired namespace for a Helm chart which has been rendered using helm template.

System Requirements

  • Python 3.7 - 3.10 with python3-dev and python3-venv updated
  • jsonnet-bundler

Getting started

  1. Recommended: create a new virtual environment

    python3 -m venv venv
    source venv/bin/activate
  2. Install commodore from PyPI

    pip install syn-commodore
  3. Install jsonnet-bundler according to upstream documentation.

  4. For Commodore to work, you need to run an instance of Lieutenant somewhere (locally is fine too).

  5. Setup a .env file to configure Commodore (don't use quotes):

    # URL of Lieutenant API
    COMMODORE_API_URL=https://lieutenant-api.example.com/
    # Lieutenant API token
    COMMODORE_API_TOKEN=<my-token>
    # Your local user ID to be used in the container (optional, defaults to root)
    USER_ID=<your-user-id>
    # Your username to be used in the commits (optional, defaults to your local git config)
    COMMODORE_USERNAME=<your name>
    # Your user email to be used in the commits (optional, defaults to your local git config)
    COMMODORE_USERMAIL=<your email>
  6. Run commodore

    commodore

Run Commodore with poetry

Additional System Requirements

  1. Install requirements

    Install poetry according to the upstream documentation.

    Create the Commodore environment:

    poetry install

    Install jsonnet-bundler according to upstream documentation.

  2. Finish setup as described above

  3. Run Commodore

    poetry run commodore
  4. Start hacking on Commodore

    poetry shell
    • Write a line of test code, make the test fail
    • Write a line of application code, make the test pass
    • Repeat

    Note: Commodore uses the Black code formatter, and its formatting is encforced by CI.

  5. Run linting and tests

    Auto format with autopep8

    poetry run autopep

    List all Tox targets

    poetry run tox -lv

    Run all linting and tests

    poetry run tox

    Run just a specific target

    poetry run tox -e py38

Run Commodore in Docker

IMPORTANT: After checking out this project, run mkdir -p catalog inventory dependencies in it before running any Docker commands. This will ensure the folders are writable by the current user in the context of the Docker container.

A docker-compose setup enables running Commodore in a container. The environment variables are picked up from the local .env file. By default your ~/.ssh/ directory is mounted into the container and an ssh-agent is started. You can skip starting an agent by setting the SSH_AUTH_SOCK env variable and mounting the socket into the container.

  1. Build the Docker image inside of the cloned Commodore repository:
docker-compose build
  1. Run the built image:
docker-compose run commodore catalog compile $CLUSTER_ID

Documentation

Documentation for this component is written using Asciidoc and Antora. It is located in the docs/ folder. The Divio documentation structure is used to organize its content.

Run the make docs-serve command in the root of the project, and then browse to http://localhost:2020 to see a preview of the current state of the documentation.

After writing the documentation, please use the make docs-vale command and correct any warnings raised by the tool.

Contributing and license

This library is licensed under BSD-3-Clause. For information about how to contribute see CONTRIBUTING.

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