cloudfoundry-incubator / Eirini

Licence: apache-2.0
Pluggable container orchestration for Cloud Foundry, and a Kubernetes backend

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Eirini

Security
ASP.NET Security Providers for CloudFoundry
Stars: ✭ 27 (-76.72%)
Mutual labels:  cloud-foundry
Cf Show Env
Stars: ✭ 5 (-95.69%)
Mutual labels:  cloud-foundry
Nodejs Mean Stack
Solution tutorial: Modern Web Application using MEAN stack on IBM Cloud
Stars: ✭ 37 (-68.1%)
Mutual labels:  cloud-foundry
cloud-native-pwas
Cloud Native Progressive Web Apps with Spring Boot and Angular
Stars: ✭ 31 (-73.28%)
Mutual labels:  cloud-foundry
Java Buildpack
Cloud Foundry buildpack for running Java applications
Stars: ✭ 391 (+237.07%)
Mutual labels:  cloud-foundry
Nucleus
Platform as a Service API abstraction layer.
Stars: ✭ 28 (-75.86%)
Mutual labels:  cloud-foundry
Home
This is the old home for the Steeltoe project. Please refer to the SteeltoeOSS/steeltoe repository moving forward.
Stars: ✭ 49 (-57.76%)
Mutual labels:  cloud-foundry
Prometheus Boshrelease
Prometheus BOSH Release
Stars: ✭ 99 (-14.66%)
Mutual labels:  cloud-foundry
Samples
Steeltoe samples and reference application collection
Stars: ✭ 586 (+405.17%)
Mutual labels:  cloud-foundry
Insurance Bot
A message based insurance experience
Stars: ✭ 30 (-74.14%)
Mutual labels:  cloud-foundry
tomee-buildpack
Cloud Foundry buildpack for running Java applications using TomEE
Stars: ✭ 12 (-89.66%)
Mutual labels:  cloud-foundry
Azure Spring Boot
Spring Boot Starters for Azure services
Stars: ✭ 352 (+203.45%)
Mutual labels:  cloud-foundry
Wfl
A Simple Way of Creating Job Workflows in Go running in Processes, Containers, Tasks, Pods, or Jobs
Stars: ✭ 30 (-74.14%)
Mutual labels:  cloud-foundry
abaplint-sci-server
Node backend application for running abaplint on ABAP
Stars: ✭ 15 (-87.07%)
Mutual labels:  cloud-foundry
Promregator
Prometheus Aggregator for Cloud Foundry (Core Component)
Stars: ✭ 66 (-43.1%)
Mutual labels:  cloud-foundry
btp-full-stack-typescript-app
A sample project to demonstrate how to implement a full-stack app with SAP Cloud Application Programming Model, plus SAPUI5 and TypeScript.
Stars: ✭ 27 (-76.72%)
Mutual labels:  cloud-foundry
Gautocloud
A golang library to let cloud applications connect automatically to services.
Stars: ✭ 17 (-85.34%)
Mutual labels:  cloud-foundry
Configuration
.NET Configuration providers for Spring Cloud Config Server & CloudFoundry
Stars: ✭ 100 (-13.79%)
Mutual labels:  cloud-foundry
Open Service Broker
Open Service Broker is an implementation of the "Open Service Broker API" based on Spring Boot & Groovy. It enables platforms such as Cloud Foundry & Kubernetes to provision and manage services.
Stars: ✭ 70 (-39.66%)
Mutual labels:  cloud-foundry
Spring Cloud Stream Tutorial
Spring Cloud Stream Tutorial
Stars: ✭ 30 (-74.14%)
Mutual labels:  cloud-foundry

Eirini

 

Build Status Maintainability Test Coverage Go Report Card Slack Status

What is Eirini?

Eirini is a Kubernetes backend for Cloud Foundry. It deploys CF applications to a Kubernetes backend, using OCI images and Kubernetes StatefulSets.

Since scheduling is increasingly commoditized, Eirini provides an Orchestrator Provider Interface (OPI) layer, that abstracts away orchestration from Cloud Foundry's control plane. This means Eirini is not solely a Kube backend at all, but that it is a generic backend for any scheduler! This means it could schedule to Diego, Kubernetes, Swarm and other orchestration providers, as long as there is an implementation of the OPI layer for the target platform.

To offer a generic orchestrator interface, Eirini uses the Diego abstractions of Long Running Processes (LRPs) and Tasks to capture Cloud Foundry's notion of long running processes and one-off tasks.

Deployment instructions are available at: cloudfoundry-incubator/eirini-release.

Orchestrator Provider Interface (OPI)

The really great thing about Diego is the high level abstractions above the level of containers and pods. Specifically, these are Long Running Processes (LRPs) and Tasks. Actually, LRPs and Tasks are most of what you need to build a PaaS, and they're cross-cutting concepts that map nicely to all current orchestrators (for example to LRPs/Tasks directly in Diego, to Deployments/Jobs in Kube, and to Services/Containers in Swarm).

Currently Eirini strictly provides a Kubernetes implementation of the OPI. However, this can be easily extended to support other orchestration platforms.

Components

Eirini Overview Diagram


Eirini is composed of:

  • opi: The main component, provides the REST API (implementing OPI) used by the Cloud Controller. It's responsible for starting LRPs and tasks.

  • event-reporter: A Kubernetes reconciler that watches for LRP instance crashes and reports them to the Cloud Controller.

  • instance-index-env-injector: A Kubernetes webhook that inserts the CF_INSTANCE_INDEX environment variable into every LRP instance (pod).

  • metrics-collector: A component that collects metric usage for all LRPs and reports it to the Loggregator component.

  • route-collector: A component that continuously collects routes and registers them in Gorouter using NATS. Usually deployed in combination with route-pod-informer and route-statefulset-informer.

  • route-pod-informer: A Kubernetes informer that reacts to LRP scale (up & down) operations and registers/unregisters routes in Gorouter. Usually deployed in combination with route-collector and route-statefulset-informer.

  • route-statefulset-informer: A Kubernetes informer that reacts to cf map-route and cf unmap-route operations and registers/unregisters routes in Gorouter. Usually deployed in combination with route-collector and route-pod-informer.

  • task-reporter: A Kubernetes reconciler that reports the outcome of tasks to the Cloud Controller and deletes the underlying Kubernetes Jobs after a configurable TTL has elapsed.

  • eirini-controller: A Kubernetes reconciler that acts on create/delete/update operations on Eirini's own Custom Resouce Definitions (CRDs). This is still experimental.

CI Pipelines

We use Concourse. Our pipelines can be found here.

Contributing

Please read CONTRIBUTING.md for details.

Have a question or feedback? Reach out to us!

We can be found in our Slack channel #eirini-dev in the Cloud Foundry workspace. Please hit us up with any questions you may have or to share your experience with Eirini!

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