Refactored.
This commit is contained in:
parent
f4a49ad4b9
commit
9dad75464b
37 changed files with 667 additions and 247 deletions
|
|
@ -15,7 +15,7 @@ We use a **multi-network architecture** following industry best practices for se
|
|||
│ Docker Swarm Cluster │
|
||||
│ │
|
||||
│ ┌────────────────────────────────────────────────────────────┐ │
|
||||
│ │ maple-private-prod (Overlay Network) │ │
|
||||
│ │ mapleopentech-private-prod (Overlay Network) │ │
|
||||
│ │ No Internet Access | Internal Services Only │ │
|
||||
│ │ SHARED by ALL applications │ │
|
||||
│ ├────────────────────────────────────────────────────────────┤ │
|
||||
|
|
@ -31,7 +31,7 @@ We use a **multi-network architecture** following industry best practices for se
|
|||
│ └────────────────────────────────────────────────────────────┘ │
|
||||
│ │
|
||||
│ ┌────────────────────────────────────────────────────────────┐ │
|
||||
│ │ maple-public-prod (Overlay Network) │ │
|
||||
│ │ mapleopentech-public-prod (Overlay Network) │ │
|
||||
│ │ Internet-Facing | Public Services │ │
|
||||
│ ├────────────────────────────────────────────────────────────┤ │
|
||||
│ │ Reverse Proxies (Caddy - ports 80/443): │ │
|
||||
|
|
@ -48,14 +48,14 @@ We use a **multi-network architecture** following industry best practices for se
|
|||
│ └────────────────────────────────────────────────────────────┘ │
|
||||
│ │
|
||||
│ Note: Application backends join BOTH networks: │
|
||||
│ - Receive requests from Caddy on maple-public-prod │
|
||||
│ - Access databases/cache on maple-private-prod │
|
||||
│ - Receive requests from Caddy on mapleopentech-public-prod │
|
||||
│ - Access databases/cache on mapleopentech-private-prod │
|
||||
└─────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
## Networks Explained
|
||||
|
||||
### 1. `maple-private-prod` (Current)
|
||||
### 1. `mapleopentech-private-prod` (Current)
|
||||
|
||||
**Purpose**: Backend services that should NEVER be exposed to the internet.
|
||||
|
||||
|
|
@ -86,7 +86,7 @@ cassandra-2:9042
|
|||
cassandra-3:9042
|
||||
```
|
||||
|
||||
### 2. `maple-public-prod` (Current - In Use)
|
||||
### 2. `mapleopentech-public-prod` (Current - In Use)
|
||||
|
||||
**Purpose**: Internet-facing services that handle external traffic.
|
||||
|
||||
|
|
@ -110,9 +110,9 @@ cassandra-3:9042
|
|||
|
||||
**Routing Flow:**
|
||||
```
|
||||
Internet → Caddy Reverse Proxy (maple-public-prod)
|
||||
→ Application Backend (maple-public-prod + maple-private-prod)
|
||||
→ Databases/Cache (maple-private-prod only)
|
||||
Internet → Caddy Reverse Proxy (mapleopentech-public-prod)
|
||||
→ Application Backend (mapleopentech-public-prod + mapleopentech-private-prod)
|
||||
→ Databases/Cache (mapleopentech-private-prod only)
|
||||
|
||||
Example (MaplePress):
|
||||
https://getmaplepress.ca → maplepress-backend-caddy
|
||||
|
|
@ -157,19 +157,19 @@ Both networks are created and in use:
|
|||
docker network create \
|
||||
--driver overlay \
|
||||
--attachable \
|
||||
maple-private-prod
|
||||
mapleopentech-private-prod
|
||||
|
||||
# Create public network (done in 06_caddy.md - used by reverse proxies)
|
||||
docker network create \
|
||||
--driver overlay \
|
||||
--attachable \
|
||||
maple-public-prod
|
||||
mapleopentech-public-prod
|
||||
|
||||
# Verify both exist
|
||||
docker network ls | grep maple
|
||||
# Should show:
|
||||
# maple-private-prod
|
||||
# maple-public-prod
|
||||
# mapleopentech-private-prod
|
||||
# mapleopentech-public-prod
|
||||
```
|
||||
|
||||
### Multi-App Pattern
|
||||
|
|
@ -183,7 +183,7 @@ docker network ls | grep maple
|
|||
|
||||
### Go Backend Connecting to Services
|
||||
|
||||
**On `maple-private-prod` network:**
|
||||
**On `mapleopentech-private-prod` network:**
|
||||
|
||||
```go
|
||||
// Redis connection
|
||||
|
|
@ -206,16 +206,16 @@ services:
|
|||
backend:
|
||||
image: your-backend:latest
|
||||
networks:
|
||||
- maple-private-prod # Access to databases
|
||||
- maple-public-prod # Receive HTTP requests (when deployed)
|
||||
- mapleopentech-private-prod # Access to databases
|
||||
- mapleopentech-public-prod # Receive HTTP requests (when deployed)
|
||||
environment:
|
||||
- REDIS_HOST=redis
|
||||
- CASSANDRA_HOSTS=cassandra-1,cassandra-2,cassandra-3
|
||||
|
||||
networks:
|
||||
maple-private-prod:
|
||||
mapleopentech-private-prod:
|
||||
external: true
|
||||
maple-public-prod:
|
||||
mapleopentech-public-prod:
|
||||
external: true
|
||||
```
|
||||
|
||||
|
|
@ -256,7 +256,7 @@ docker service inspect your_service --format '{{.Spec.TaskTemplate.Networks}}'
|
|||
### Test Connectivity Between Networks
|
||||
|
||||
```bash
|
||||
# From a container on maple-private-prod
|
||||
# From a container on mapleopentech-private-prod
|
||||
docker exec -it <container> ping redis
|
||||
docker exec -it <container> nc -zv cassandra-1 9042
|
||||
|
||||
|
|
@ -266,19 +266,19 @@ docker exec -it <container> nc -zv cassandra-1 9042
|
|||
### View All Services on a Network
|
||||
|
||||
```bash
|
||||
docker network inspect maple-private-prod --format '{{range .Containers}}{{.Name}} {{end}}'
|
||||
docker network inspect mapleopentech-private-prod --format '{{range .Containers}}{{.Name}} {{end}}'
|
||||
```
|
||||
|
||||
## Migration Path
|
||||
|
||||
### Current Status
|
||||
- ✅ `maple-private-prod` created
|
||||
- ✅ Cassandra on `maple-private-prod`
|
||||
- ✅ Redis on `maple-private-prod`
|
||||
- ✅ `mapleopentech-private-prod` created
|
||||
- ✅ Cassandra on `mapleopentech-private-prod`
|
||||
- ✅ Redis on `mapleopentech-private-prod`
|
||||
- ⏳ Backend deployment (next)
|
||||
- ⏳ Public network + NGINX (future)
|
||||
|
||||
### When to Create `maple-public-prod`
|
||||
### When to Create `mapleopentech-public-prod`
|
||||
|
||||
Create the public network when you're ready to:
|
||||
1. Deploy NGINX reverse proxy
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue