- Introduced Aggregator.sol for Chainlink-compatible oracle functionality, including round-based updates and access control. - Added OracleWithCCIP.sol to extend Aggregator with CCIP cross-chain messaging capabilities. - Created .gitmodules to include OpenZeppelin contracts as a submodule. - Developed a comprehensive deployment guide in NEXT_STEPS_COMPLETE_GUIDE.md for Phase 2 and smart contract deployment. - Implemented Vite configuration for the orchestration portal, supporting both Vue and React frameworks. - Added server-side logic for the Multi-Cloud Orchestration Portal, including API endpoints for environment management and monitoring. - Created scripts for resource import and usage validation across non-US regions. - Added tests for CCIP error handling and integration to ensure robust functionality. - Included various new files and directories for the orchestration portal and deployment scripts.
3.8 KiB
3.8 KiB
Phase 1 Deployment Summary
Overview
Phase 1 is the initial deployment to get the DeFi Oracle Meta Mainnet (ChainID 138) operational using a simplified VM-based architecture across 5 US Commercial Azure regions.
Architecture
West Europe (Admin/Control Plane)
- Purpose: Admin-only region, no workload nodes
- Resources:
- Key Vault for secrets management
- Nginx Proxy Server (Standard_D4plsv6) to route Cloudflare traffic
- Networking infrastructure
5 US Commercial Azure Regions (Workload)
- Regions:
eastus,westus,centralus,eastus2,westus2 - Per Region:
- 1 VM using
Standard_D8plsv6(8 vCPUs, Dplsv6 Family) - Ubuntu 22.04 LTS Gen 2
- Docker Engine, NVM, Node.js 22 LTS, JDK 17
- Besu blockchain client
- 1 VM using
Infrastructure Components
Modules Created
-
networking-vm (
terraform/modules/networking-vm/)- Virtual Network (10.0.0.0/16)
- VM Subnet (10.0.1.0/24)
- Network Security Group with rules for:
- SSH (22)
- P2P TCP/UDP (30303)
- RPC HTTP (8545)
- RPC WebSocket (8546)
- Metrics (9545)
-
nginx-proxy (
terraform/modules/nginx-proxy/)- Nginx reverse proxy VM (Standard_D4plsv6)
- Load balancing across 5 US regions
- SSL/TLS termination (certbot ready)
- Cloudflare integration ready
-
vm-deployment (updated)
- Phase 1 cloud-init (
cloud-init-phase1.yaml) - Installs: Docker, NVM, Node 22 LTS, JDK 17
- Besu container setup
- Phase 1 cloud-init (
Networking Security
NSG Rules for Workload VMs
- Inbound:
- SSH (22): Allow from anywhere (TODO: restrict in production)
- P2P TCP (30303): Allow Besu P2P
- P2P UDP (30303): Allow Besu discovery
- RPC HTTP (8545): Allow from Nginx proxy (TODO: restrict)
- RPC WebSocket (8546): Allow from Nginx proxy (TODO: restrict)
- Metrics (9545): Allow Prometheus (TODO: restrict)
- Outbound: Allow all (internet access)
NSG Rules for Nginx Proxy
- Inbound:
- HTTP (80): Allow from Cloudflare (TODO: restrict to Cloudflare IPs)
- HTTPS (443): Allow from Cloudflare (TODO: restrict to Cloudflare IPs)
- SSH (22): Allow for management (TODO: restrict to admin IPs)
- Outbound: Allow all (backend communication)
Deployment Files
Phase 1 Configuration
terraform/phases/phase1/phase1-main.tf: Main Terraform configurationterraform/phases/phase1/variables.tf: Variable definitionsterraform/phases/phase1/terraform.tfvars.example: Example variablesterraform/phases/phase1/README.md: Deployment guide
Phase 3 Archive
terraform/phases/phase3/multi-region-global.tf: Archived 36-region AKS deployment plan
Next Steps
-
Deploy Phase 1:
cd terraform/phases/phase1 terraform init cp terraform.tfvars.example terraform.tfvars # Edit terraform.tfvars with your SSH key terraform plan -out tfplan terraform apply tfplan -
Configure SSL:
- SSH to Nginx proxy VM
- Run certbot to configure SSL certificates
- Update Cloudflare DNS to point to Nginx proxy
-
Harden Security:
- Restrict NSG rules to specific IP ranges
- Configure Cloudflare IP ranges for Nginx proxy
- Restrict SSH access to admin IPs
-
Monitor and Validate:
- Verify Besu nodes are syncing
- Test RPC endpoints through Nginx proxy
- Monitor VM health and metrics
-
Plan Phase 3 Expansion:
- After Phase 1 is stable, deploy Phase 3 (36-region global AKS)
Resource Naming Convention
All resources follow: {cloud}-{env}-{region}-{resource}-{instance}
- Cloud:
az(Azure) - Environment:
p(prod),d(dev),t(test),s(staging) - Region: 3-character code (e.g.,
eus,wus,cus,eus2,wus2,wst) - Resource: Resource type abbreviation
- Instance: Sequential number (e.g.,
001)
Example: az-p-eus-rg-comp-001 (Azure prod East US compute resource group 001)