Giter Site home page Giter Site logo

multicluster-ingress-controller's Introduction

Multicluster-Ingress-Controller

Multicluster-Ingress-Controller is a Go library for building Kubernetes ingress controllers that need to watch resources in multiple clusters. Multicluster-Ingress-Controller is accesible via REST API Interface. It is capable of delivering same events to multiple recipients. It is also capable of delivering specific kubernetes events to the registered servers.

Table of Contents

Introduction

Hybrid and multicloud architectures are becoming predominant. Customers are moving thier workloads to hybrid and multi cluster. Hybrid and Multicluster are very complex in nature. Kubernetes is standardizing the way clouds are operated: the same workflow can be used to manage resources in any cloud, whether public or private or even in on-prem. However managing workloads, exposing the application to external world (Route) across all these multiple clusters is still a challenge. Every cluster should have ingress controller to do this now. Managing life cycle of all such ingress controllers will be another challege. There are several platform orchastrators which allows to manage all clusters from one place. There tools to handle multiclsuer schedule, autoscale, upgrade etc from one place. Multicluster Ingress COntroller helps the admin to manage all the cluster from one Ingress controller which runs at one place (Inside k8s cluster/outside) and listen for all the ingress events and creates the routes.

Architecture

Multicluster Architecture

Rest Interface Rest Interface has two components. First one is external API and another is openAPI documentation. OpenAPI documentation allows the user to understand the usage of API and an options to try out the Rest API. External API module accepts the user API request and process it. Rest interface invokes Config store and controller.
Controller Controller has two module, first one is go client and the next is dispatcher. Kubernetes Go client is being used for getting the events from kubernetes cluster. Dispatcer sends out the filtered events to the list of registered servers.
Config Store This is a persitant volume store in kubernetes. This helps to keeps all the rest input.
Scheduler Scheduler restart the controller for which it takes the input from the Config store. This module required for brining up the control module which is the core part of the MIC.

How it Works

Multicluster-Ingress-Controller is a rest based go library which exposes few Rest API. User can register and access the events from multiple cluster which can be send to multiple server.

Getting Started

Run locally

	1) Download/Clone the Multicluster-Ingress-Controller.
		
	2) Perform "make run" from build folder.
		This starts the Multicluster Ingress Controller. Go binary has to be installed for running MIC.

	3) Access the Rest Interface via http://localhost:8000/swagger/

Creating Binary and Docker Image

	1) Download/Clone the Multicluster-Ingress-Controller.
		
	2) Perform "make build" from build folder.
		This builds a go binary and docker image and stored under build folder (citrix-k8s-multicluster-ingress-controller).

	3) Copy binary and run in any machine (./citrix-k8s-multicluster-ingress-controller)
	4) Use Docker commands to load and run as docker images.

Configuration

There is no specific configuratiosn required at initial phase. However right now user has to keep all the cluster kube config file where the controller is running. We are working on token based solution which will remove this dependancy.

API reference

Following are Sample Rest API exposed by Multicluster Ingress controller.

Rest API List

multicluster-ingress-controller's People

Contributors

janraj avatar janrajc avatar saravanakumar2016 avatar saravanakumarr2018 avatar

Stargazers

 avatar  avatar

Watchers

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