feat: Simplify nginx-mycelium deployment with direct IPv6 access and cleanup

This commit is contained in:
mik-tf
2025-11-05 09:38:39 -05:00
parent 9f360c1528
commit b0ac49d60e
13 changed files with 215 additions and 1737 deletions

90
examples/nginx-my Normal file
View File

@@ -0,0 +1,90 @@
# Nginx with Mycelium IPv6 Access
This example demonstrates how to deploy nginx on Mycelium Cloud with direct IPv6 access for global web hosting.
## Overview
The nginx-mycelium example deploys a production-ready nginx web server that is directly accessible via Mycelium IPv6 addresses worldwide. Unlike traditional web hosting, this setup provides truly global access through Mycelium's peer-to-peer IPv6 network infrastructure.
## Features
- **Direct IPv6 Binding**: nginx binds directly to Mycelium IPv6 interfaces
- **Global Accessibility**: Accessible from anywhere with Mycelium installed
- **Load Balancing**: 3 pods distributed across different cluster nodes
- **Production Ready**: Health monitoring and resource management included
## Quick Start
### Prerequisites
- Mycelium Cloud Kubernetes cluster (3-masters + 3-workers)
- kubectl configured with Mycelium IPv6 routing
### Deployment
```bash
# Deploy nginx with Mycelium IPv6 access
kubectl apply -f nginx-mycelium-deployment.yaml
kubectl apply -f nginx-mycelium-service.yaml
# Verify deployment
kubectl get pods -l app=nginx-direct-access
```
## Testing Global Access
Once deployed, you can access the website from anywhere with Mycelium installed:
```bash
# Test direct IPv6 access
curl http://[51d:3596:6cc3:81e7:ff0f:d546:3737:4c8c]:8080
curl http://[476:c4f:b4cb:7205:ff0f:f56e:abea:6905]:8080
curl http://[5c3:a162:45ab:6c53:ff0f:8c55:36b0:24af]:8080
```
## Architecture
- **hostNetwork: true**: Direct binding to host Mycelium IPv6 interfaces
- **Port 8080**: Standard HTTP port for global access
- **Pod Anti-Affinity**: Ensures pods run on different nodes
- **Health Monitoring**: Liveness and readiness probes
## Mycelium IPv6 Addresses
The deployment is accessible on these Mycelium IPv6 addresses:
| IPv6 Address | Status |
|-------------|---------|
| `51d:3596:6cc3:81e7:ff0f:d546:3737:4c8c:8080` | ✅ Working |
| `476:c4f:b4cb:7205:ff0f:f56e:abea:6905:8080` | ✅ Working |
| `538:964a:a1e1:4057:ff0f:63c7:960b:7c27:8080` | ✅ Working |
| `552:5984:2d97:72dc:ff0f:39ef:6ec:a48c:8080` | ✅ Working |
| `437:9faf:1f1a:e2b1:ff0f:1fd9:7fd5:1095:8080` | ✅ Working |
| `5c3:a162:45ab:6c53:ff0f:8c55:36b0:24af:8080` | ✅ Working |
## Cleanup
```bash
# Remove the deployment
kubectl delete -f nginx-mycelium-deployment.yaml
kubectl delete -f nginx-mycelium-service.yaml
```
## What This Proves
This example demonstrates that Mycelium Cloud can:
1. **Host Global Websites**: Direct IPv6 access without traditional hosting
2. **Provide Worldwide Access**: Users can access from anywhere with Mycelium
3. **Scale Efficiently**: Load balancing across multiple nodes
4. **Work Without Centralized Servers**: Fully decentralized web hosting
## Technical Details
- **Deployment**: nginx:alpine with custom configuration
- **Network Mode**: hostNetwork for direct IPv6 binding
- **Load Balancing**: Kubernetes service with 3 replicas
- **Health Checks**: HTTP probes on port 8080
- **Resources**: 32Mi memory, 100m CPU requests
This example serves as a foundation for building production applications on Mycelium Cloud's decentralized infrastructure.