Files
k8s-game-2048/README.md
Greg 3dbb1d51e8 🚀 Complete automation pipeline with SSL, testing, and deployment
 Features:
- Full SSL setup with Let's Encrypt for all environments
- Automated CI/CD pipeline with GitHub Actions
- Comprehensive smoke testing workflow
- Auto-deploy to dev on main branch push
- Manual staging/production deployments with confirmation
- Istio + nginx SSL termination architecture

🔧 Infrastructure:
- Migrated from Kourier to Istio for Knative ingress
- nginx handles SSL termination and public traffic
- Istio manages internal Knative service routing
- Scale-to-zero configuration for all environments

🧪 Testing:
- SSL certificate validation and expiry checks
- Domain accessibility and content validation
- Performance testing and redirect behavior validation
- Automated smoke tests on every deployment

🌐 Domains:
- Dev: https://2048-dev.wa.darknex.us
- Staging: https://2048-staging.wa.darknex.us
- Production: https://2048.wa.darknex.us

📦 Deployment:
- Uses latest GHCR images with imagePullPolicy: Always
- Automated secret management across namespaces
- Environment-specific Knative service configurations
- Clean manifest structure with proper labeling
2025-06-30 22:57:36 -07:00

4.4 KiB

K8s Game 2048

A Kubernetes deployment of the classic 2048 game using Knative Serving with Istio service mesh and nginx ingress for SSL termination.

Features

  • Knative Serving: Serverless deployment with scale-to-zero capability
  • Istio Service Mesh: Advanced traffic management and observability
  • nginx Ingress: SSL termination and traffic routing
  • Multi-environment: Development, Staging, and Production deployments
  • Custom Domains with SSL: Environment-specific HTTPS domains
  • GitOps Workflow: Complete CI/CD pipeline with GitHub Actions

Environments

  • Development: https://2048-dev.wa.darknex.us
  • Staging: https://2048-staging.wa.darknex.us
  • Production: https://2048.wa.darknex.us

Architecture

┌─────────────┐    ┌─────────────┐    ┌─────────────┐    ┌─────────────┐
│   Internet  │    │   nginx     │    │   Istio     │    │   Knative   │
│             │───▶│   Ingress   │───▶│   Gateway   │───▶│   Service   │
│             │    │ (SSL Term.) │    │             │    │             │
└─────────────┘    └─────────────┘    └─────────────┘    └─────────────┘
                           │                                     │
                           ▼                                     ▼
                   ┌─────────────┐                      ┌─────────────┐
                   │ cert-manager│                      │ 2048 Game   │
                   │ Let's Encrypt│                      │ Container   │
                   └─────────────┘                      └─────────────┘

Quick Start

Prerequisites

  • Kubernetes cluster (1.21+) with k3s or similar
  • Knative Serving installed
  • Istio service mesh installed
  • nginx ingress controller installed
  • cert-manager for SSL certificates
  • kubectl configured
  • Domain DNS configured to point to your cluster IP

Installation

  1. Clone the repository:
git clone https://github.com/ghndrx/k8s-game-2048.git
cd k8s-game-2048
  1. Deploy all environments:
./scripts/deploy.sh all
  1. Or deploy a specific environment:
./scripts/deploy.sh dev     # Development only
./scripts/deploy.sh staging # Staging only  
./scripts/deploy.sh prod    # Production only
  1. Deploy to staging:
kubectl apply -f manifests/staging/
  1. Deploy to production:
kubectl apply -f manifests/prod/

Project Structure

k8s-game-2048/
├── README.md
├── Dockerfile
├── .github/
│   └── workflows/
│       ├── deploy-dev.yml
│       ├── deploy-staging.yml
│       └── deploy-prod.yml
├── manifests/
│   ├── dev/
│   │   ├── namespace.yml
│   │   ├── service.yml
│   │   └── domain-mapping.yml
│   ├── staging/
│   │   ├── namespace.yml
│   │   ├── service.yml
│   │   └── domain-mapping.yml
│   └── prod/
│       ├── namespace.yml
│       ├── service.yml
│       └── domain-mapping.yml
├── scripts/
│   ├── setup-knative.sh
│   ├── setup-kourier.sh
│   └── deploy.sh
└── src/
    └── (2048 game files)

Deployment

The application uses Knative Serving with the following features:

  • Scale to Zero: Automatically scales down to 0 when not in use
  • Auto-scaling: Scales up based on incoming requests
  • Blue-Green Deployments: Safe deployment strategy with traffic splitting
  • Custom Domains: Environment-specific domain mapping

Monitoring

Each environment includes:

  • Knative Service status monitoring
  • Request metrics via Knative
  • Custom domain health checks

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.