Here's the updated README with a feature matrix and upcoming features section:
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.
-
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.
-
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.
- Other tools can reference resources by their name using a special syntax (e.g.,
-
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.
-
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.
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 |
- 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.
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
- Clone the Repository:
git clone https://github.com/yourusername/bridge.git
cd bridge
- Create a Virtual Environment:
python3 -m venv .venv
source .venv/bin/activate # On Windows use `.venv\Scripts\activate`
- 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 ../../
- Run the Flask Application:
export FLASK_APP=Backend.api.bridge
export FLASK_ENV=development
- Set Up the Database:
flask db init
flask db migrate -m "Initial migration."
flask db upgrade
flask run
- Build the Docker Image:
docker build -t bridge-app .
- Run the Docker Container:
docker run -d -p 8000:8000 --name bridge-app bridge-app
- 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>
config.py
:
- Manages database connections and app configurations.
models.py
:
- Defines the Resource model with fields such as
name
,namespace
,arn
,value
,resource_type
,created_at
, andupdated_at
.
routes.py
:
- Defines the API endpoints for managing resources, including registering, updating, deleting, and searching resources.
- 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.