All Projects → AmitKumarDas → Metac

AmitKumarDas / Metac

Licence: apache-2.0
It is metacontroller and more

Programming Languages

go
31211 projects - #10 most used programming language
declarative
70 projects

Projects that are alternatives of or similar to Metac

Cimonitor
Displays CI statuses on a dashboard and triggers fun modules representing the status!
Stars: ✭ 34 (-32%)
Mutual labels:  ci, cd
Gitlab Ci Pipeline Php
☕️ Docker images for test PHP applications with Gitlab CI (or any other CI platform!)
Stars: ✭ 451 (+802%)
Mutual labels:  ci, cd
Awx Container
Ansible Container project that manages the lifecycle of AWX on Docker.
Stars: ✭ 294 (+488%)
Mutual labels:  ci, cd
bx-docker
Tutorial on how to build Docker Images for the IAR Build Tools on Linux hosts. The IAR Build Tools on Linux are available for Arm, RISC-V and Renesas (RH850, RL78 and RX).
Stars: ✭ 28 (-44%)
Mutual labels:  ci, cd
Gocd
Main repository for GoCD - Continuous Delivery server
Stars: ✭ 6,314 (+12528%)
Mutual labels:  ci, cd
tichi
TiChi ☯️ contains the tidb community collaboration automation basic framework and tool set.
Stars: ✭ 36 (-28%)
Mutual labels:  ci, cd
Teamvision
Teamvision软件工程协作工具
Stars: ✭ 380 (+660%)
Mutual labels:  ci, cd
changie
Automated changelog tool for preparing releases with lots of customization options
Stars: ✭ 180 (+260%)
Mutual labels:  ci, cd
Abstruse
Abstruse is a free and open-source CI/CD platform that tests your models and code.
Stars: ✭ 704 (+1308%)
Mutual labels:  ci, cd
Github Actions Golang
GitHub Actions as CI for Go
Stars: ✭ 672 (+1244%)
Mutual labels:  ci, cd
rust-azure-pipelines
Collection of azure pipelines templates for rust
Stars: ✭ 43 (-14%)
Mutual labels:  ci, cd
Angela
🙂angela (安其拉):react ssr router redux; react同构框架
Stars: ✭ 15 (-70%)
Mutual labels:  ci, cd
awesome
A curated list of delightful developers resources.
Stars: ✭ 13 (-74%)
Mutual labels:  ci, cd
Nvwa Io
Nvwa-io is a open source DevOps CI/CD auto-build and auto-deploy system(女娲 - 开源 DevOps CI/CD 自动构建和自动部署系统). http://nvwa-io.com
Stars: ✭ 283 (+466%)
Mutual labels:  ci, cd
makes
A DevSecOps framework powered by Nix.
Stars: ✭ 158 (+216%)
Mutual labels:  ci, cd
Horusec
Horusec is an open source tool that improves identification of vulnerabilities in your project with just one command.
Stars: ✭ 311 (+522%)
Mutual labels:  ci, cd
update-container-description-action
github action to update a Docker Hub, Quay or Harbor repository description from a README file
Stars: ✭ 20 (-60%)
Mutual labels:  ci, cd
flagsmith-nodejs-client
Flagsmith Node JS Client. Flagsmith lets you manage features flags across web, mobile and server side applications. Get builds out faster. Control who has access to new features.
Stars: ✭ 13 (-74%)
Mutual labels:  ci, cd
Lambdacd
a library to define a continuous delivery pipeline in code
Stars: ✭ 655 (+1210%)
Mutual labels:  ci, cd
Ultima
An open source, Infrastructure-as-Code cloud platform with built-in CI and local development environment.
Stars: ✭ 18 (-64%)
Mutual labels:  ci, cd

Metac pronounced [meta-see]

It is metacontroller and more. Long term vision of Metac is to provide a toolkit that lets users to manage their infrastructures on Kubernetes.

Metac started when development on metacontroller stopped. Metac has implemented most of the major enhancements & issues raised in metacontroller. In adition, some of Metac's features are a derivation from production needs of projects such as OpenEBS & LitmusChaos.

Motivation

Metac is an add-on for Kubernetes that makes it easy to write and deploy custom controllers in the form of simple scripts. One can get a feel of implementing controllers from various sample implementations found in the examples folder. These examples showcase various approaches, programming languages (including jsonnet) to implement controllers.

Features

These are some the features that metac supports:

  • Abstracts Kubernetes code from business logic
  • Implements various meta controllers that helps in above abstraction
    • CompositeController (cluster scoped)
    • DecoratorController (cluster scoped)
    • GenericController (namespace scoped)
  • Business logic (read reconciliation logic) can be exposed as http services
    • API based development as first class citizen
  • MetaControllers are deployed as Kubernetes custom resources
    • However, GenericController (one of the meta controllers) can either be deployed as:
      • 1/ Kubernetes based custom resources, or
      • 2/ YAML config file.
  • Ability to import metac as a go library
    • GenericController lets business logic invoked as in-line function call(s)
    • This is an additional way to invoke logic other than http calls
    • Hence, no need to write reconcile logic as http services if not desired

Using Metac

If you want to use Metac via web based hooks then Metac can be deployed as a StatefulSet with images found at this registry. However, if you want to use inline hooks, you need to import Metac into your go based controller implementation. In addition, you need to make use of go modules to import the master version of Metac into your codebase.

In case, you want to deploy Metac via helm, use this helm chart.

Differences from metacontroller

Metac tries to be compatible with the original metacontroller. However, there may be breaking changes that one needs to be careful about. If one has been using the metacontroller and tries to use metac, then one should be aware of below changes:

  • Metac uses a different api group for the custom resources
    • i.e. apiVersion: metac.openebs.io/v1alpha1
  • Metac uses a different set of finalizers
    • i.e. metac.openebs.io/<controller-name>
  • Metac is by default installed in metac namespace

If you are migrating from Metacontroller to Metac you'll need to cleanup the old Metacontroller's finalizers, you can use a command like the following:

kubectl get <comma separated list of your resource types here> --no-headers --all-namespaces | awk '{print $2 " -n " $1}' | xargs -L1 -P 50 -r kubectl patch -p '{"metadata":{"finalizers": [null]}}' --type=merge

Roadmap

These are the broad areas of focus for metac:

  • [x] business controllers
  • [ ] test controllers
  • [ ] debug controllers
  • [ ] compliance controllers

Documentation

This is the existing i.e. metacontroller site that provides most of the important details about Metacontroller. Since metac does not differ from Metacontroller except for new enhancements and fixes, this doc site holds good.

Contact

Please file GitHub issues for bugs, feature requests, and proposals.

Use the meeting notes/agenda to discuss specific features/topics with the community.

Join #metacontroller channel on Kubernetes Slack.

Contributing

See CONTRIBUTING.md and the contributor guide.

Licensing

This project is licensed under the Apache License 2.0.

Comparison with other operators

Among most of the articles found in internet, I find this to be really informative. However, it talks about metacontroller whereas metac has filled in most of the gaps left by the former.

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