Giter VIP home page Giter VIP logo

openintegrationhub / openintegrationhub Goto Github PK

View Code? Open in Web Editor NEW
174.0 20.0 47.0 33.85 MB

Open Integration Hub

Home Page: http://www.openintegrationhub.org

License: Apache License 2.0

JavaScript 91.55% HTML 0.13% CSS 0.13% Dockerfile 0.75% Shell 0.97% TypeScript 6.26% Pug 0.09% SCSS 0.12% Procfile 0.01%
integration data-synchronization integration-flow openintegrationhub javascript nodejs framework

openintegrationhub's Introduction

Open Integration Hub (OIH)

Open source framework for easy data synchronization between business applications.

Visit the official Open Integration Hub homepage

CircleCI License

Introduction

The Open Integration Hub is a framework based on a microservice architecture. For a reference implementation please visit the services folder. You can also customize services and combine them with your own technology. If you want to do so please visit the lib folder. There you will find "daos" that can be used to add your own functionality (e.g. queues manager).

Join the Community

Do you have questions, ideas, feedback or just want to chat about integration? Please join our growing developer community on Slack!

Run it

You may run the framework or single services on a platform of your choice. As a refrence and to make it easier for you to get started we created two guides for you.

Local Setup with minikube or docker-compose.

Google Cloud Platform Setup

Documentation

All relevant documentation can be found on our website.

Developer Documentation

Contribution

Before you contribute please have a look at our contribution guidelines.

Code of Conduct

To see how members of the community are expected to behave, please read the code of conduct. We apply the code of conduct defined by the Contributor Covenant, which is used across many open source projects, such as NodeJS, Atom and Kubernetes.

openintegrationhub's People

Contributors

andkom avatar anton-kotenko avatar birdhighway avatar changreta avatar dbollien avatar dennisces avatar ellenaua avatar falkvoigt avatar fdegenhr avatar heggert avatar hschmidthh avatar ioannislafiotis avatar jkopen avatar jorgerusso avatar jusupachmerzaevbasaas avatar kerriannercrawford avatar mlb5000 avatar nazar910 avatar philecs avatar pnedelko avatar robinbrinkmann avatar sachmerz avatar shterion avatar skarbovskiy avatar svenhoeffler avatar vitaliykovalchuk avatar weberjm avatar winklerj avatar yarikos avatar zuker avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openintegrationhub's Issues

Create new project/development plan of basis of inital backlog and updated AP 4

A new development plan is needed in order to achieve a complete version 1 of the Open Integration Hub. To have a shared approach and a common goal, it is necessary to adjust the old project plan to all new insights.


Acceptance Criteria:

  • New project plan for AP 4 is created with updated time scope and resource availabilities
  • Plan is communicated across all development teams

[SKM]: Secrets in flows

As a OIH user I want to attach my secrets to any step of an integration flow.

The container executing the flow step should have a read access to the secret or receive the secrets as env vars.
Users with access to the flow can see the name of the secret but not the contents.

Replace mentioning of elastic.io by openintegrationhub.org from CRD definitions

As mentioned in #26 some of our services are operating on Flow CRD. We should replace the elastic.io by openintegrationhub.org. The following CRD example demonstrates that metadata.name and spec.group.

{
    "apiVersion": "apiextensions.k8s.io/v1beta1",
    "kind": "CustomResourceDefinition",
    "metadata": {
        "name": "flows.elastic.io"
    },
    "spec": {
        "group": "elastic.io",
        "names": {
            "kind": "Flow",
            "listKind": "FlowList",
            "plural": "flows",
            "shortNames": [],
            "singular": "flow"
        },
        "scope": "Namespaced",
        "version": "v1"
    }
}

Update project plan for AP (working package) 4

As product owner I want to have an updated development plan to create a common understanding of the time critical services.

In order to create a new overall development plan a new project plan for AP 4 is needed by each partner.


Acceptance Criteria:

  • Update the old project plan including resource and time planning
  • Add actual available resources (current excel sheet includes resource planning before cutback)
  • Send the updated project plan to Philipp

Publish ICR-Image on DockerHub

All images should be hosted on DockerHub

Further description:
Right now there is no image for the ICR on DockerHub


Acceptance Criteria:

  • Publish icr image at DockerHub OIH-Repo

[SKM]: AccessControlManagement

As a OIH user I want to be able to define, if a secret can only be accessed by me or also by my organization. (A secret is a key value pair.)

  • Secrets scope
  • MultiTenancy

acceptance:

  • There is a Api which Handles the Accesscontrol Management
  • The Api and the concept is documented

Reporting & Analytics

  • Define which data can and should be consumed
    • Consume event data from messaging middleware, event bus, logs, flows status, etc.
  • Implement authentication & authorization mechanisms

Use external RabbitMQ

At the moment RabbitMQ is installed into k8s cluster as a Deployment with replicas=1 which is quite nice for running the platform locally. However for a production use we need to rely on high availability. Is it better to rely on an RabbitMQ cluster outside of the k8s cluster?

Logging & Monitoring

  • Should have a stable API to allow a potential interchangability of underlying infrastructure/orchestrator
  • Consider providing a shared library (npm module) for all service, to generate a uniform log output?

Create development guidelines

We as OIH partners need development styleguideline to have a a common code quality across all partners and services of the OIH.


Acceptance Criteria:

  • Styleguide reviewed by microservice + architecture workgroup
  • Styleguide is published within the monorepo

Add multi-tenancy and authorization support in Integration Component Repository

Integration Component Repository (CR) requires multi-tenancy support. As in the conceptional elaborations described, the Docker images referenced by the CR can either be on Dockerhub or in a private Docker repository. In both cases, the user/tenant can provide credentials (access token, etc.) to fetch a component from a remote repository.
These credentials need to be stored by OIH in context of a tenant (or even referenced by a flow?).

Create user stories (issues) - Implementation scope Wice

As product owner I expect related technical user stories needed to implement the described features in epic


Acceptance Criteria:

  • User stories are created
  • User stories are reviewed by architecture workgroup
  • User stories are accepted by product owner

Build abstraction layer for ICR

As an OIH-Admin, I want to use different storages for the ICR so that i can install it on different platforms.

Further description:
Right now, the OIH-ICR only works with MongoDB. Right now the OIH-Platform uses a custom Kubernetes resource for flow-storage.


Acceptance Criteria:

  • Build abstraction layer for flow-storage
  • Flows can be stored as Kubernetes custom resource

Container 'scheduler' keeps crashing: CrashLoopBackOff

Starting the openintegrationhub instance on the kubernetes cluster results in crashing bootloops of the container "scheduler"

Probably false secretKeyRefs, the containers cant send any "isAlive" responses based on a incomplete config file

Further description:
Error message in K8: Pod errors: "0 of 1 updated replica available - CrashLoopBackOff"


Acceptance Criteria:

  • Fixed Error
  • Published on Github

Implement Access Control

As a User I want to use my credentials from the IAM so that i can controll the access to the flows.

Further description:
ICR has to be connected to the OIH-Heimdal-Service for user management.


Acceptance Criteria:

  • User gets credentials from OIH-IAM
  • Only logged in users can access flows
  • User can be part of an organization

Add custom authorization to service accounts

IAM Service Accounts should have a scoped access, e.g. read-only access to all tenants for a token introspection. See IAM utils for usage scenario.


  • Service Accounts can be created
  • Service Accounts have scoped permissions

Fill initial backlog

As a product owner I want an initially filled backlog to have a basis for working in an agile manner.

To start working with a shared backlog and to create an updated project/development plan, it is necessary to initially fill the backlog.


Acceptance Criteria:

  • All known issues have been created including a description and acceptance criteria

Create the documentation for the IAM for k8 yamls

As an OIH dev-op, I need an documentation of the IAM service, so that it is possible to create the secrets for the service

Further description:
There are some information fundamentally important for creating the secret - which are missing currently - for example, the specific name of the required file: "keystore.json"


Acceptance Criteria:

  • All fundamentally important information for creating the secret are given
  • Reviewed by the responsible dev-op and quality manager

create DevOps Guideline

We as OIH partners need some DevOps guideline to have a same understanding of how service are setup, build and deployed

Acceptance Criteria:

  • reviewed dokument as a Guideline for all Partners

Scheduler should get flows from ICR

As oih operator I want the oih services to interact with each other so that I can properly operate the system.

Further description:

Currently the scheduler fetches flows from K8s CRD. (See FlowsDao.js)

  • Receive Flows from ICR instead of K8s CRD

  • Flows are received from ICR

Definition of Done

Secure Key Management

I, as an OIH user,
want to be able to store and manage my keys securely,
so that these are only accessible by my (or my organization) integration flows.

I also want to store other credentials, e.g. tokens for external Docker registries.

Move email component

The email component currently lies within the elastic.io repository on dockerhub.

All components should be open sourced under open integration hub.


Acceptance Criteria:

  • Email component is moved to openintegrationhub repository on dockerhub

Abstract all programmatic access to Kubernetes API using a facade

The OIH might make heavy use of Kubernetes API to create and manage containers & resources.
Although currently Kubernetes provides a lot of advantages, we should consider abstracting the access to the underlying infrastructure/orchestrator e.g. using a facade. The aim is to allow others to use an older version of Kubernetes if there are breaking API changes or even use other orchestrators entirely.

Define Kubernetes YAMLs in the corresponding service subdirectory

Each service should ideally provide it's own kubernetes configuration for deployment.yaml and service.yaml in a subdirectory.

Affected services:

  • communication-router
  • flows-operator
  • integration-content-repository
  • scheduler
  • crud monitoring

We should also have a consistent naming and folder structure for the infrastructure, e.g.:

  • Kubernetes definitions should always be in a folder named k8s whithin the project folder
  • Use a consistent naming pattern: deployment.yaml and service.yaml for the definitions
  • Ingress configuration should be place in a different repository (e.g. OIH-Infrastructure)
  • every Microservice need to have a checkable endpoint to have a liveliness and readiness check for the K8s

Expand ICR-API to manage flows from tenants

As a User, I want to manage the flows of my organization so that i have control of them.

Further description:
Right now you only can manage flows of a specific user. This has to be expanded to tenants.


Acceptance Criteria:

  • Manage flows from the organization of the user
  • User cannot access flows from other organizations
  • Admin can access all flows

Container 'flows-operator' keeps crashing: CrashLoopBackOff

Starting the openintegrationhub instance on the kubernetes cluster results in crashing bootloops of the container "flows-operator"

Probably false secretKeyRefs, the containers cant send any "isAlive" responses based on a incomplete config file

Further description:
Error message in K8: Pod errors: "0 of 1 updated replica available - CrashLoopBackOff"


Acceptance Criteria:

  • Fixed Error
  • Published on Github

Shift documentation of the ICR-API to OpenApi

As a User, I want to see the API in documenation in the OpenApi-Format, so that all documentations are in the same format.

Further description:
Just transfer the API-Docs from Swagger to OpenAPI-Format


Acceptance Criteria:

  • API-Docs are described as OpenAPI-Resource

CRUD Monitoring

  • Publish events for other services, e.g. through the Notification Bus for consumers like Reports & Analytics
  • Monitor the CRUD operations in Data Hub / SDF

Operator should detect changes on Flow CDRs

Imagine you created a new version of your flow definition which you want to deploy via kubctl, REST API or a frontent. It may happen that the flow operator will not notice the update at all. This can be easily reproduced by executing the following command for an existing flow.

kubctl delete flow $FLOW_ID && kubectl create flow -f $FLOW_JSON_FILE

The changes will not be applied to the flow as the flow operator is not detecting the changes on existing Flow CRDs. Perfectly the flow operator checks the metadata.resourceVersion of the CDRs to detect changes.

Please check the paragraph Efficient detection of changes in the k8s API Concepts document. Here is some extract:

To enable clients to build a model of the current state of a cluster, all Kubernetes object resource types are required to support consistent lists and an incremental change notification feed called a watch. Every Kubernetes object has a resourceVersion field representing the version of that resource as stored in the underlying database. When retrieving a collection of resources (either namespace or cluster scoped), the response from the server will contain a resourceVersion value that can be used to initiate a watch against the server. The server will return all changes (creates, deletes, and updates) that occur after the supplied resourceVersion. This allows a client to fetch the current state and then watch for changes without missing any updates. If the client watch is disconnected they can restart a new watch from the last returned resourceVersion, or perform a new collection request and begin again.

Establish hub and spoke model between OIH and ISV applications

ISV applications are connected using a hub and spoke model. Each application is only connected to the OIH without knowledge of other connected applications. As decided in the architecture workgroup the Smart Data Framework is needed to achieve this.


Acceptance Criteria:

  • Concept for Smart Data Framework
  • Basic implementation of Smart Data Framework
  • Decoupling and encapsulation of all components involved in a data synchronization use case
  • SDF adapters for inbound and outbound communication
  • Migrate existing connectors to openintegrationhub platform (poc_3_mvp)

Container 'communication-router' keeps crashing: CrashLoopBackOff

Starting the openintegrationhub instance on the kubernetes cluster results in crashing bootloops of the container "communication-router"

Probably false secretKeyRefs, the containers cant send any "isAlive" responses based on a incomplete config file

Further description:
Error message in K8: Pod errors: "0 of 1 updated replica available - CrashLoopBackOff"


Acceptance Criteria:

  • Fixed Error
  • Published on Github

Improve MVP documentation

As an OIH operator I want a properly documented platform to understand how the platform can be deployed / operated.


Acceptance Criteria:

  • Documentation of the current platform (MVP) is expanded
  • New documentation is reviewed and accepted by microservice & architecture workgroups

Add Introspection for IAM middleware

Provide a method or configurable middleware, which introspects the client token. This can be accomplished with a request to IAM API, either with the client token itself, or using a service account.

Implement Flow-Definition in detail

As a User, I want to manage the flows so that i can re-use them everytime.

Further description:
By now the definition of a flow is only a show case. It needs further specification


Acceptance Criteria:

  • Expand flow-definition with node, edges and relationship as in the elastic.io-example
  • Expand API-functions so they can deal with whole flow-definition

[SKM]: Secrets scope

I as a OIH user can define the scope of a secret in order to limit who can access this secret.

This allows me to to either share a secret with my group/organization or to limit the access only to myself, e.g. if it is a private application containing my username and password as plaintext.

Delete the Memwatch in the IAM

As a OIH product owner, I want the memwatch in the IAM component to be deleted


Acceptance Criteria:

  • Deleted memwatch-module

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.