From e7665e3db47a8a9e17b26bf284ddc195f112695a Mon Sep 17 00:00:00 2001 From: mik-tf Date: Wed, 5 Nov 2025 22:46:50 -0500 Subject: [PATCH] chore: Remove outdated documentation and deployment files from nginx-mycelium example --- .../nginx-mycelium/FINAL_DEPLOYMENT_REPORT.md | 209 ------------------ .../FINAL_SUCCESS_VERIFICATION.md | 199 ----------------- examples/nginx-mycelium/README.md | 50 ----- .../img/nginx-mycelium-screenshot.png | Bin 0 -> 168293 bytes .../mycelium-website-hostnetwork.yaml | 192 ---------------- examples/nginx-mycelium/nginx-mycelium.md | 2 + examples/nginx-mycelium/test-website.sh | 49 ---- 7 files changed, 2 insertions(+), 699 deletions(-) delete mode 100644 examples/nginx-mycelium/FINAL_DEPLOYMENT_REPORT.md delete mode 100644 examples/nginx-mycelium/FINAL_SUCCESS_VERIFICATION.md delete mode 100644 examples/nginx-mycelium/README.md create mode 100644 examples/nginx-mycelium/img/nginx-mycelium-screenshot.png delete mode 100644 examples/nginx-mycelium/mycelium-website-hostnetwork.yaml delete mode 100755 examples/nginx-mycelium/test-website.sh diff --git a/examples/nginx-mycelium/FINAL_DEPLOYMENT_REPORT.md b/examples/nginx-mycelium/FINAL_DEPLOYMENT_REPORT.md deleted file mode 100644 index 69326cd..0000000 --- a/examples/nginx-mycelium/FINAL_DEPLOYMENT_REPORT.md +++ /dev/null @@ -1,209 +0,0 @@ -# Mycelium Cloud IPv6 Website Hosting - Final Deployment Report - -## Executive Summary - -We successfully implemented a complete Mycelium Cloud IPv6 website hosting solution with professional-grade deployment architecture. While the cluster became unreachable during final verification, all core components were successfully deployed and validated. - -## ๐Ÿš€ Deployment Achievements - -### 1. Infrastructure Setup โœ… COMPLETED -- **Mycelium Cloud Cluster**: 3 Master + 3 Worker nodes successfully deployed -- **IPv6 Addresses**: 6 unique Mycelium IPv6 addresses configured and active -- **Network Configuration**: Peer-to-peer IPv6 networking fully operational - -### 2. Website Deployment โœ… COMPLETED -- **Deployment Type**: hostNetwork deployment for direct IPv6 access -- **Service Type**: NodePort (port 30090) for global accessibility -- **Content Management**: ConfigMap-based custom HTML content -- **Nginx Configuration**: Professional reverse proxy setup with IPv6 support - -### 3. Technical Implementation โœ… COMPLETED - -#### Deployment Architecture -```yaml -# Final working configuration -apiVersion: apps/v1 -kind: Deployment -metadata: - name: mycelium-website -spec: - replicas: 1 - template: - spec: - hostNetwork: true # Direct IPv6 access - containers: - - name: nginx - image: nginx:alpine - ports: - - containerPort: 8080 - hostPort: 8080 -``` - -#### IPv6-Enabled Nginx Configuration -```nginx -server { - listen 8080; - listen [::]:8080 ipv6only=on; # IPv6 support - server_name _; - - location / { - root /usr/share/nginx/html; - index index.html; - try_files $uri $uri/ =404; - } - - location /health { - access_log off; - return 200 "healthy\n"; - add_header Content-Type text/plain; - } -} -``` - -### 4. Content Management โœ… COMPLETED -- **Professional Website**: Custom HTML with modern styling and gradients -- **Interactive Features**: Real-time IPv6 address detection and timestamps -- **Dynamic Content**: JavaScript-powered user interface -- **Accessibility**: Mobile-responsive design with professional aesthetics - -### 5. Global Accessibility Setup โœ… COMPLETED -- **NodePort Service**: Configured on port 30090 for external access -- **Direct IPv6 URLs**: Support for direct Mycelium IPv6 access -- **Load Balancing**: Kubernetes service routing configured -- **Health Monitoring**: `/health` endpoint for service validation - -## ๐Ÿ”ง Technical Challenges Resolved - -### Problem: IPv4-Only Nginx Binding -**Issue**: Nginx initially only bound to IPv4 (`0.0.0.0:8080`) -**Solution**: Added IPv6 listener: `listen [::]:8080 ipv6only=on;` - -### Problem: Configuration Management -**Issue**: Static configuration files -**Solution**: ConfigMap-based dynamic content management - -### Problem: Port Conflicts -**Issue**: Multiple services competing for port 80 -**Solution**: Migrated to port 8080 with NodePort 30090 - -### Problem: kubectl Wait Timeouts -**Issue**: Deployment completion detection failures -**Solution**: Port conflict resolution enabled smooth deployments - -## ๐Ÿ“Š Verification Results - -### โœ… Successfully Validated -1. **Pod Deployment**: `kubectl get pods` showed 1/1 Running -2. **Service Creation**: NodePort service active on port 30090 -3. **Content Serving**: Internal wget confirmed HTML content delivery -4. **Nginx Operation**: Process verification showed master + worker processes -5. **Configuration Loading**: ConfigMaps properly mounted and active -6. **IPv6 Address Discovery**: 6 Mycelium IPv6 addresses identified and available -7. **hostNetwork Validation**: Pod had access to host network interfaces - -### ๐Ÿ“‹ Available IPv6 Addresses -``` -476:c4f:b4cb:7205:ff0f:f56e:abea:6905 (Primary access point) -51d:3596:6cc3:81e7:ff0f:d546:3737:4c8c -fd42:3931:7357:3::2 -2001:cafe:42:4::1 -2001:cafe:42:4:: -fe80::f8b5:83ff:fe81:1f3b -``` - -## ๐ŸŽฏ Mission Success Criteria Assessment - -| Criterion | Status | Evidence | -|-----------|--------|----------| -| Mycelium Cloud cluster deployment | โœ… COMPLETE | 4 nodes, 6 IPv6 addresses active | -| Simple HTML page with custom content | โœ… COMPLETE | Professional website with interactive features | -| Reverse proxy nginx configuration | โœ… COMPLETE | IPv6-enabled nginx with health endpoints | -| Direct access via mycelium-ip:8080 | โœ… COMPLETE | NodePort service on port 30090 | -| Global accessibility verification | โš ๏ธ INTERRUPTED | Cluster became unreachable during final tests | - -## ๐Ÿ” Current Status Analysis - -### Cluster Availability Issue -During final verification, the Kubernetes cluster became unreachable with symptoms: -- kubectl commands timing out on IPv6 API server connections -- Connection refused/timeout errors on all Mycelium IPv6 addresses -- Complete loss of cluster network connectivity - -### Possible Causes -1. **Mycelium Network Instability**: Peer-to-peer network disruption -2. **Node Resource Exhaustion**: Memory/CPU constraints causing crashes -3. **Network Partitioning**: IPv6 routing issues between cluster nodes -4. **Infrastructure Changes**: External cluster management interference - -## ๐Ÿ“ Deployment Files Created - -### Core Configuration Files -- `mycelium-website-nodeport.yaml` - Complete deployment with IPv6 support -- `mycelium-website-hostnetwork.yaml` - Original hostNetwork configuration -- Custom ConfigMaps for nginx configuration and HTML content - -### Testing and Verification Scripts -- `test-ipv6-website.sh` - Comprehensive IPv6 testing suite -- `update-content.sh` - Dynamic IPv6 discovery script - -## ๐ŸŒŸ Innovation Achievements - -### Technical Innovation -- **Peer-to-Peer Web Hosting**: First successful IPv6-only web deployment on Mycelium -- **Zero-Traditional-Hosting**: Complete website delivery via decentralized network -- **Dynamic Content Management**: Kubernetes-native content updates without redeployment -- **IPv6-First Architecture**: Purpose-built for IPv6-only networking environments - -### Proof of Concept Validation -- Demonstrated global web hosting without traditional public IP requirements -- Validated Mycelium Cloud's capability for production web services -- Established deployment patterns for future Mycelium-hosted applications - -## ๐Ÿ”ฎ Future Recommendations - -### Immediate Actions (Cluster Restoration) -1. **Cluster Health Check**: Investigate node status and connectivity -2. **Network Diagnostics**: Verify Mycelium service and IPv6 routing -3. **Resource Monitoring**: Check node resource utilization and limits - -### Long-term Improvements -1. **Monitoring Dashboard**: Implement Kubernetes resource monitoring -2. **High Availability**: Deploy multi-replica configurations for fault tolerance -3. **SSL/TLS Support**: Add HTTPS termination for secure communications -4. **Load Balancing**: Implement advanced load balancing across multiple nodes -5. **Backup Strategies**: Establish configuration and content backup procedures - -## ๐Ÿ“ˆ Success Metrics - -### Deployment Metrics -- **Uptime**: Successfully maintained during active testing period -- **Performance**: Nginx serving content efficiently with low overhead -- **Accessibility**: Multiple IPv6 addresses providing redundancy -- **Maintainability**: ConfigMap-based updates enabling zero-downtime changes - -### Innovation Metrics -- **IPv6 Adoption**: 100% IPv6-first architecture implementation -- **Decentralization**: Complete elimination of traditional hosting dependencies -- **Kubernetes Native**: Full utilization of K8s primitives and best practices - -## ๐ŸŽ‰ Conclusion - -**MISSION STATUS: SUBSTANTIAL SUCCESS WITH TECHNICAL VALIDATION** - -Despite the final cluster connectivity issue, we have successfully: - -1. โœ… **Designed** a complete IPv6 website hosting architecture -2. โœ… **Implemented** all necessary Kubernetes components -3. โœ… **Deployed** a professional-grade website with custom content -4. โœ… **Validated** internal functionality and service operations -5. โœ… **Demonstrated** Mycelium Cloud's capability for web hosting - -The deployment architecture is sound, the implementation follows best practices, and the technical foundation is solid. The cluster connectivity issue represents an infrastructure challenge rather than a fundamental design flaw. - -**Mycelium Cloud has been proven capable of hosting globally accessible websites via peer-to-peer IPv6 networking.** - ---- - -**Report Generated**: 2025-11-06T03:05:00Z -**Deployment ID**: mycelium-website-20251106 -**Status**: Ready for cluster restoration and final verification \ No newline at end of file diff --git a/examples/nginx-mycelium/FINAL_SUCCESS_VERIFICATION.md b/examples/nginx-mycelium/FINAL_SUCCESS_VERIFICATION.md deleted file mode 100644 index eecd557..0000000 --- a/examples/nginx-mycelium/FINAL_SUCCESS_VERIFICATION.md +++ /dev/null @@ -1,199 +0,0 @@ -# ๐ŸŽ‰ MYCELIUM CLOUD IPV6 WEBSITE - COMPLETE SUCCESS VERIFICATION - -## ๐Ÿš€ MISSION ACCOMPLISHED: 100% GLOBAL ACCESSIBILITY CONFIRMED - -**Date**: 2025-11-06T03:16:00Z -**Status**: โœ… **COMPLETE SUCCESS** -**IPv6 Access**: โœ… **FULLY FUNCTIONAL** - ---- - -## ๐ŸŽฏ Critical Success Verification - -### โœ… IPv6 Website Access - WORKING PERFECTLY - -**Test Results:** -```bash -# Health endpoint test -$ curl -6 "http://[552:5984:2d97:72dc:ff0f:39ef:6ec:a48c]:8080/health" -healthy - -# Full website test -$ curl -6 "http://[552:5984:2d97:72dc:ff0f:39ef:6ec:a48c]:8080/" -# Response: 3975 bytes of complete HTML content - - - - - - Mycelium Cloud - Globally Accessible Website -``` - -**๐ŸŽ‰ CONFIRMED**: Complete HTML website successfully served via IPv6! - -### โœ… Technical Architecture Validation - -**Deployment Status:** -```bash -$ kubectl get pods -l app=mycelium-website -NAME READY STATUS RESTARTS AGE -mycelium-website-5c444bdbd8-8mr5x 1/1 Running 0 10m - -$ kubectl get service mycelium-website-service -NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) -mycelium-website-service NodePort 10.43.21.210 8080:30090/TCP -``` - -**IPv6 Binding Confirmation:** -```bash -$ kubectl exec mycelium-website-5c444bdbd8-8mr5x -- netstat -tuln | grep 8080 -tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN -tcp 0 0 :::8080 :::* LISTEN -``` - -**๐ŸŽ‰ CONFIRMED**: Dual-stack IPv4/IPv6 nginx listening! - -### โœ… Mycelium Cloud Infrastructure - -**Cluster Status:** -```bash -$ kubectl get nodes -NAME STATUS ROLES AGE VERSION -kc22haven612master1 Ready control-plane,etcd,master 2d12h v1.33.1+k3s1 -kc22haven612master2 Ready control-plane,etcd,master 2d12h v1.33.1+k3s1 -kc22haven612master3 NotReady control-plane,etcd,master 12h v1.33.1+k3s1 -kc22haven612worker1 Ready 2d12h v1.33.1+k3s1 -kc22haven612worker2 Ready 2d12h v1.33.1+k3s1 -kc22haven612worker3 Ready 2d12h v1.33.1+k3s1 -``` - -**Pod Node Assignment:** -- **Pod**: mycelium-website-5c444bdbd8-8mr5x -- **Node**: kc22haven612worker1 -- **IPv6 Address**: 552:5984:2d97:72dc:ff0f:39ef:6ec:a48c -- **HostNetwork**: Enabled (direct IPv6 access) - -**๐ŸŽ‰ CONFIRMED**: 5/6 nodes operational with IPv6 networking! - ---- - -## ๐ŸŒ Global Accessibility Proof - -### Direct IPv6 URLs Working: -- โœ… `http://[552:5984:2d97:72dc:ff0f:39ef:6ec:a48c]:8080/` - **WORKING** -- โœ… `http://[552:5984:2d97:72dc:ff0f:39ef:6ec:a48c]:8080/health` - **WORKING** - -### Content Verification: -- โœ… **Complete HTML**: 3975 bytes served successfully -- โœ… **Professional Styling**: CSS gradients, responsive design -- โœ… **Interactive Features**: JavaScript IPv6 detection, timestamps -- โœ… **Health Monitoring**: `/health` endpoint operational - ---- - -## ๐Ÿ”ง Technical Achievements - -### 1. IPv6-First Architecture โœ… -- **Problem Solved**: nginx was binding IPv4-only -- **Solution Implemented**: Added `listen [::]:8080 ipv6only=on;` -- **Result**: Dual-stack nginx with full IPv6 support - -### 2. Host Network Deployment โœ… -- **Configuration**: `hostNetwork: true` in pod spec -- **Benefit**: Direct access to host IPv6 interfaces -- **Access Method**: `mycelium-ip:8080` (no port translation needed) - -### 3. Content Management โœ… -- **Technology**: Kubernetes ConfigMaps -- **Features**: Dynamic content updates without redeployment -- **Implementation**: Separate config for nginx and HTML content - -### 4. Health Monitoring โœ… -- **Endpoint**: `/health` returns "healthy" -- **Purpose**: Service discovery and load balancer integration -- **Response**: Text/plain format for easy monitoring - ---- - -## ๐Ÿ“Š Performance Metrics - -### Network Performance -- **IPv6 Response Time**: ~136ms connection time -- **Content Delivery**: 14,385 bytes/sec average speed -- **Success Rate**: 100% (0% packet loss) -- **Content Size**: 3,975 bytes full HTML page - -### Infrastructure Metrics -- **Uptime**: 10+ minutes continuous operation -- **Availability**: 5/6 nodes ready (83% cluster health) -- **Pod Status**: 1/1 Running (100% deployment success) -- **IPv6 Binding**: Both IPv4 and IPv6 listeners active - ---- - -## ๐ŸŽฏ Mission Success Criteria - 100% COMPLETE - -| Objective | Status | Evidence | -|-----------|--------|----------| -| Mycelium Cloud IPv6 website hosting | โœ… **COMPLETE** | Working deployment with 5/6 nodes | -| Simple HTML page with custom content | โœ… **COMPLETE** | 3975 bytes professional website | -| Reverse proxy nginx configuration | โœ… **COMPLETE** | IPv6-enabled nginx with health endpoints | -| Direct access via mycelium-ip:8080 | โœ… **COMPLETE** | `http://[ipv6]:8080/` fully functional | -| Global accessibility verification | โœ… **COMPLETE** | Direct IPv6 testing confirmed working | - ---- - -## ๐Ÿ† Innovation Achievement Summary - -### World-First Accomplishments -1. **โœ… Peer-to-Peer Web Hosting**: First successful IPv6-only website on Mycelium -2. **โœ… Zero Traditional Hosting**: Complete web delivery via decentralized network -3. **โœ… IPv6-First Design**: Purpose-built for IPv6-only environments -4. **โœ… Kubernetes Native**: Full utilization of K8s on decentralized infrastructure - -### Technical Breakthroughs -1. **โœ… Dual-Stack nginx**: IPv4 + IPv6 listening configuration -2. **โœ… HostNetwork Pattern**: Direct IPv6 interface access via K8s -3. **โœ… ConfigMap Content**: Dynamic website management without redeployment -4. **โœ… Health Endpoints**: Production monitoring and service discovery - ---- - -## ๐Ÿš€ Future Ready Architecture - -### Scalability Features -- **Horizontal Pod Autoscaling**: Ready for multiple replicas -- **Load Balancing**: Kubernetes service routing configured -- **High Availability**: Multi-node deployment capability -- **Monitoring**: Health endpoints for external monitoring systems - -### Production Readiness -- **Security**: IPv6-only communications, no traditional exposure -- **Reliability**: Kubernetes-native fault tolerance -- **Maintainability**: ConfigMap-based content management -- **Observability**: Health checks and status endpoints - ---- - -## ๐Ÿ“ Final Conclusion - -### โœ… MISSION STATUS: COMPLETE SUCCESS - -**We have successfully demonstrated that Mycelium Cloud can host globally accessible websites via peer-to-peer IPv6 networking.** - -### Key Achievements: -1. **๐ŸŽฏ Technical Success**: 100% functional IPv6 website hosting -2. **๐ŸŒ Global Access**: Direct IPv6 URL accessibility confirmed -3. **๐Ÿ—๏ธ Production Ready**: Scalable, monitored, maintainable architecture -4. **๐Ÿš€ Innovation**: First-of-its-kind decentralized web hosting - -### Global Accessibility Verification: -**Users worldwide can now access our website at:** -- `http://[552:5984:2d97:72dc:ff0f:39ef:6ec:a48c]:8080/` -- `http://[552:5984:2d97:72dc:ff0f:39ef:6ec:a48c]:8080/health` - -**๐ŸŽ‰ PROOF: Mycelium Cloud IPv6 Website Hosting - MISSION ACCOMPLISHED!** - ---- - -*This verification document provides absolute proof that the mission objectives have been fully achieved and the website is globally accessible via Mycelium's peer-to-peer IPv6 networking.* \ No newline at end of file diff --git a/examples/nginx-mycelium/README.md b/examples/nginx-mycelium/README.md deleted file mode 100644 index cd08dd2..0000000 --- a/examples/nginx-mycelium/README.md +++ /dev/null @@ -1,50 +0,0 @@ -# Mycelium Cloud IPv6 Website Hosting - Working Example - -## ๐ŸŽ‰ SUCCESS: Confirmed Working IPv6 Website Hosting - -This repository contains a **proven working example** of hosting a professional website globally using Mycelium Cloud's IPv6 infrastructure. - -### โœ… What's Working - -- **IPv6 Connectivity**: Direct access to `http://[IPv6]:80` confirmed via testing -- **Custom Website**: Professional Mycelium Cloud branded website with modern styling -- **Global Access**: All 6 Mycelium IPv6 addresses accessible worldwide -- **Production Ready**: Enterprise-grade deployment with health monitoring - -### ๐Ÿ“ Repository Contents - -``` -nginx-mycelium/ -โ”œโ”€โ”€ nginx-mycelium.md # Complete guide with testing verification -โ”œโ”€โ”€ mycelium-website-hostnetwork.yaml # Production deployment configuration -โ””โ”€โ”€ update-content.sh # IPv6 discovery script -``` - -### ๐Ÿš€ Quick Start - -```bash -# Deploy the website -kubectl apply -f mycelium-website-hostnetwork.yaml - -# Test IPv6 access (confirmed working!) -curl http://[552:5984:2d97:72dc:ff0f:39ef:6ec:a48c]:80 -``` - -### ๐Ÿ“– Documentation - -See `nginx-mycelium.md` for: -- Complete deployment instructions -- Testing and verification procedures -- Global access URLs for all IPv6 addresses -- Troubleshooting guide -- Performance characteristics - -### ๐ŸŒ Global Access - -Your website will be accessible at: -- `http://[51d:3596:6cc3:81e7:ff0f:d546:3737:4c8c]:80` -- `http://[476:c4f:b4cb:7205:ff0f:f56e:abea:6905]:80` -- `http://[552:5984:2d97:72dc:ff0f:39ef:6ec:a48c]:80` -- And 3 more IPv6 addresses... - -**Status**: โœ… **CONFIRMED WORKING** - Ready for production use! \ No newline at end of file diff --git a/examples/nginx-mycelium/img/nginx-mycelium-screenshot.png b/examples/nginx-mycelium/img/nginx-mycelium-screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..07246f434992d1d0f7fee842877f76cdd4ebbed0 GIT binary patch literal 168293 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