Skip to content

The Bridge App is a versatile configuration management platform designed to facilitate seamless integration and management of resources across various deployment tools like Terraform, Helm, and Kubernetes. It acts as a centralized registry for resources, allowing automatic registration,

License

Notifications You must be signed in to change notification settings

bridge-yt/Bridge

Repository files navigation

Here's the updated README with a feature matrix and upcoming features section:


Bridge Application: Detailed Explanation

Objective: The goal of the Bridge application is to create a configuration management platform that allows different tools (like Terraform, Crossplane, and ArgoCD) to reference and share resources seamlessly. When a resource is created in Terraform, its ARN can be referenced automatically by other tools without manual updates.

Core Concept: The Bridge application acts as a central registry for resources, where each resource can be registered, updated, and queried by its name. The application exposes an API to manage these resources.

Key Features:

  1. Resource Registration:

    • When a resource is created in Terraform with the Bridge provider, it is automatically registered in the Bridge application with a unique name and its ARN.
  2. Automatic Reference:

    • Other tools can reference resources by their name using a special syntax (e.g., bridge:://resource-name), and the Bridge application resolves this to the actual ARN.
  3. Configuration Management:

    • The Bridge application provides endpoints to register, update, and delete resources, ensuring that all tools have consistent and up-to-date configuration data.
  4. Different Providers:

    • Terraform Provider: Allows Terraform to automatically register and query resources from Bridge.
    • Crossplane Provider: Enables Crossplane to interact with the Bridge for resource management.
    • ArgoCD Integration: Provides seamless integration with ArgoCD for continuous delivery.

Feature Matrix

Source Tool Target Tool Status
Terraform Terraform Supported
Terraform EKS Supported
EKS Terraform Supported
Crossplane Terraform Supported
Terraform Crossplane Supported
ArgoCD Terraform Supported
Terraform ArgoCD Supported
EKS Crossplane Upcoming
Crossplane EKS Upcoming
EKS ArgoCD Upcoming
ArgoCD EKS Upcoming

Upcoming Features

  • Enhanced Crossplane Integration:
    • Bi-directional resource management between Crossplane and EKS.
  • Advanced ArgoCD Support:
    • Deeper integration for continuous delivery pipelines.
  • Role-Based Access Control (RBAC):
    • Fine-grained access control for resources.
  • Audit Logging:
    • Comprehensive logging for all resource changes and access.
  • Multi-Cloud Support:
    • Extending support to additional cloud providers.
  • Resource Dependency Management:
    • Automatically manage dependencies between resources across different tools.
  • **Security improvements **:
    • TBD.
  • **Using Non DB data sources **:
    • TBD.

Project Directory Structure:

Here's the directory structure for the Bridge application:

bridge/
├── api/
│   ├── app.py
│   ├── models.py
│   ├── __init__.py
│   ├── requirements.txt
│   ├── config.py
│   ├── routes.py
├── migrations/
│   ├── README
│   ├── alembic.ini
│   ├── env.py
│   ├── script.py.mako
│   └── versions/
├── db/
│   ├── init.sql

Setting Up the Development Environment

  1. Clone the Repository:
git clone https://github.com/yourusername/bridge.git
cd bridge
  1. Create a Virtual Environment:
python3 -m venv .venv
source .venv/bin/activate  # On Windows use `.venv\Scripts\activate`
  1. Install Dependencies:
pip install -r Backend/requirements.txt

For FrontEnd

export NODE_OPTIONS=--openssl-legacy-provider

cd Frontend/bridge-ui
npm install
npm run build
cd ../../

Running the Application

  1. Run the Flask Application:
export FLASK_APP=Backend.api.bridge
export FLASK_ENV=development
  1. Set Up the Database:
flask db init
flask db migrate -m "Initial migration."
flask db upgrade
flask run

Using Docker

  1. Build the Docker Image:
docker build -t bridge-app .
  1. Run the Docker Container:
docker run -d -p 8000:8000 --name bridge-app bridge-app

API Endpoints

  • Register a Resource: POST /api/resource/<namespace>
  • Get a Resource: GET /api/resource/<namespace>/<name>
  • Get All Resources from a Namespace: GET /api/resource/<namespace>/all
  • Get All Resources: GET /api/resources
  • Update a Resource: PUT /api/resource/<namespace>/<name>
  • Delete a Resource: DELETE /api/resource/<namespace>/<name>
  • Search Resources: GET /api/resource/<namespace>/search?name=<name>&arn=<arn>&resource_type=<resource_type>

Configuration

config.py:

  • Manages database connections and app configurations.

Models

models.py:

  • Defines the Resource model with fields such as name, namespace, arn, value, resource_type, created_at, and updated_at.

Routes

routes.py:

  • Defines the API endpoints for managing resources, including registering, updating, deleting, and searching resources.

Additional Notes

  • The Bridge application aims to simplify the configuration management process by providing a centralized registry for resources.
  • With integration for Terraform, Crossplane, and ArgoCD, it ensures that resources are consistently referenced across different tools without manual updates.
  • The use of Docker enables easy deployment and scaling of the application.

For more detailed information and documentation, please refer to the official documentation.


About

The Bridge App is a versatile configuration management platform designed to facilitate seamless integration and management of resources across various deployment tools like Terraform, Helm, and Kubernetes. It acts as a centralized registry for resources, allowing automatic registration,

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published