GithubHelp home page GithubHelp logo

todokku / boom Goto Github PK

View Code? Open in Web Editor NEW

This project forked from caos/boom

0.0 0.0 0.0 18.25 MB

Operator to deploy a defined toolsets into K8s, think paas but less lock-in

License: Apache License 2.0

Dockerfile 0.83% Makefile 0.44% Go 98.08% JavaScript 0.05% Shell 0.58%

boom's Introduction

boom: the base tooling operator

semantic-release Release license release Go Report Card

This project is in alpha state. The API will continue breaking until version 1.0.0 is released

What is it

boom is designed to ensure that someone can create a reproducable "platform" with tools which are tested for their interoperability.

Currently we include the following tools:

  • Ambassador Edge Stack
  • Prometheus Operator
  • Grafana
  • logging-operator
  • kube-state-metrics
  • prometheus-node-exporter
  • loki
  • ArgoCD

Upcoming tools:

  • Flux

How does it work

The operator works by reading a configuration (crd) located in a GIT Repository. Alternativly this crd can be read from the k8s api. In our default setup our "cluster lifecycle" tool orbiter, shares the repository and secrets with boom. This because orbiter deploys boom in a newly created k8s cluster.

apiVersion: boom.caos.ch/v1beta1
kind: Toolset
metadata:
  name: caos
  namespace: caos-system
spec:
  preApply:
    deploy: true
    folder: preapply
  postApply:
    deploy: true
    folder: postapply
  prometheus-operator:
    deploy: true
  logging-operator:
    deploy: true
  prometheus-node-exporter:
    deploy: true
  grafana:
    deploy: true
  ambassador:
    deploy: true
    service:
      type: LoadBalancer
  kube-state-metrics:
    deploy: true
  argocd:
    deploy: false
    customImage:
      enabled: false
      imagePullSecret: github-image
      gopassGPGKey: "gpg"
      gopassSSHKey: "ssh"
      gopassStores:
      - directory: "directory"
        storeName: "store"
  prometheus:
    deploy: true
    storage:
      size: 5Gi
      storageClass: standard
  loki:
    deploy: true
    storage:
      size: 5Gi
      storageClass: standard

How to use it

Due to the github restriciton that even public images need to be authenticated, you need to make sure that you have pull secret. The used personal access token has to have the repo and read:packages permissions.

kubectl -n caos-system create secret docker-registry boomregistry --docker-server=docker.pkg.github.com --docker-username=${GITHUB_USERNAME} --docker-password=${GITHUB_ACCESS_TOKEN}

GitOps Mode

Demo with a public crd repository

To easy test the example we have created a demo crd repo, located here demo-orbiter-boom. It holds a boom.yml which can be applied to your cluster.

Apply Boom to your cluster:

kustomize build examples/gitops/publicrepo | kubectl apply -f -

Example with a private repository

Your first have to create an ssh-key which is added as deploy key to your git repository and then save the private key as secret in examples/gitops/privaterepo/secret. Change the name of the key in the examples/gitops/privaterepo/kustomization.yaml with the filename of the saved key.

Apply Boom to your cluster:

kustomize build examples/gitops/privaterepo | kubectl apply -f -

k8s API Mode

example coming soon

License

As usual Apache-2.0 see here

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

boom's People

Contributors

stebenz avatar eliobischof avatar fforootd avatar thesephirot avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.