Create New Document

The title of your document (will be displayed as H1)
URL-friendly name (no spaces, use dashes)
Path where to create document (optional, use forward slashes to create subdirectories)

Move/Rename Document

Current location of the document
New path for the document (including the slug)
This only changes the document's path. It does not modify the document's title (H1 heading).

Delete Document

Are you sure you want to delete this document? This action cannot be undone.

Warning: If this is a folder, all contents including subfolders and documents will be deleted.

Message

Message content goes here.

Confirm Action

Are you sure?

Attachments

Allowed file types: jpg, jpeg, png, gif, svg, webp, txt, log, csv, sfd, zip, pdf, docx, xlsx, pptx, mp4 (Max: 10MB)

Document Files

Loading attached files...

Document History

Previous Versions

Loading versions...

Preview

Select a version to preview

Wiki Settings

Language for the user interface
Number of versions to keep per document. Set to 0 to disable versioning.
Maximum allowed file size for uploads in MB.

User Management

Add New User

Leave empty to keep current password
Users with these groups can access restricted sections.

Define path-based access rules for sections of your wiki, then assign users to groups in the Users tab. Rules are evaluated in order. First match wins.

Active Rules

Import markdown files from a ZIP archive. Files will be processed and stored in the appropriate document structure. Directory structure in the ZIP (category/subcategory) will be preserved in the wiki.

Upload a ZIP file containing markdown (.md) files to import.

Create and manage backups of your wiki data. Backups include all documents, images, and configuration files.

Available Backups

Loading backups...

Add/Edit Access Rule

Selected: /

Add Column

Mnemonica Kubernetes Development Environment

This repository contains Kubernetes configuration files for the Mnemonica development environment running on AWS EKS.

Table of Contents

  1. Architecture Overview
  2. Core Services
  3. Helm-Managed Services
  4. Storage
  5. Networking
  6. Security
  7. Monitoring & Observability
  8. Deployment

Architecture Overview

Cluster Information

Application Architecture

Mnemonica is a SaaS Media Asset Management (MAM) platform with the following architecture:

┌─────────────────────────────────────────────────────────────┐
│                        External Access                       │
│          (devel.mnemonica.com, devtools.mnemonica.com)      │
└────────────────────────┬────────────────────────────────────┘
                         │
                         ▼
┌─────────────────────────────────────────────────────────────┐
│                    AWS Load Balancer                         │
└────────────────────────┬────────────────────────────────────┘
                         │
                         ▼
┌────────────────────────────────────────────────────────────┐
│                      Frontend (Nginx)                       │
│                   NodePort: 30001                           │
│                   Image: infomne/frontend                   │
└─────┬──────────────────────────────────────────────────────┘
      │
      ├──────────────┬──────────────┬──────────────┬─────────────┐
      ▼              ▼              ▼              ▼             ▼
┌─────────┐   ┌──────────┐   ┌──────────┐   ┌──────────┐  ┌────────────┐
│ Backend │   │ Centrifugo│  │  TUSD    │   │  Tools   │  │  Gatesrv   │
│ (uWSGI) │   │(WebSocket)│  │ (Upload) │   │  (Nginx) │  │  (Nginx)   │
└────┬────┘   └──────────┘   └─────┬────┘   └──────────┘  └────────────┘
     │                              │
     ├──────────────────────────────┴──────────────────┐
     ▼              ▼              ▼                    ▼
┌─────────┐   ┌──────────┐   ┌──────────────┐   ┌──────────────────┐
│  Celery │   │Celerybeat│   │Celery-Encoding│  │TUS Hook Listener │
│ Workers │   │(Scheduler)│  │   Workers     │   │                  │
└────┬────┘   └──────────┘   └──────┬───────┘   └──────────────────┘
     │                              │
     │         ┌────────────────────┴────────────────────┐
     │         ▼                                          ▼
     │   ┌──────────────────┐                  ┌──────────────────┐
     │   │ Encoding Pool    │                  │Traffic Log       │
     │   │    Master        │                  │   Listener       │
     │   └────────┬─────────┘                  └──────────────────┘
     │            │
     │            ▼
     │   ┌──────────────────┐
     │   │ Encoding Workers │
     │   │ (K8s Jobs)       │
     │   └──────────────────┘
     │
     ├──────────────┬──────────────┬──────────────┐
     ▼              ▼              ▼              ▼
┌─────────┐   ┌──────────┐   ┌─────────┐   ┌──────────┐
│  Redis  │   │ RabbitMQ │   │PostgreSQL│  │  Flower  │
│         │   │          │   │(External?)│  │(Monitor) │
└─────────┘   └──────────┘   └─────────┘   └──────────┘

Core Services

Application Services

Backend (backend-deployment-service.yaml)

Frontend (frontend-deployment-service.yaml)

Celery Workers (celery-deployment.yaml)

Celery Beat (celerybeat-deployment.yaml)

Celery Encoding Workers (celery-encoding-deployment.yaml)

Encoding Pool Master (encoding-pool-master-deployment.yaml)

TUS Hook Listener (tus-hook-listener-deployment-service.yaml)

Traffic Log Listener (traffic-log-listener-deployment-service.yaml)

Flower (flower-deployment-service.yaml)

Utility Services

n8n (n8n-deployment-service.yaml)

Infrastructure Services

Redis (redis.yaml)

RabbitMQ (Cluster Operator)

Helm-Managed Services

The following services are deployed via Helm charts:

Centrifugo (Real-time Messaging)

TUSD (File Upload Server)

AWS Load Balancer Controller

Karpenter (Node Provisioning)

KEDA (Queue-Based Autoscaling)

JuiceFS CSI Driver

Reloader

Portainer

Amazon CloudWatch Observability

Storage

JuiceFS Persistent Volumes

All persistent storage uses JuiceFS CSI driver with ReadWriteMany access mode.

dev-media PV/PVC (dev-media-pv-pvc.yaml)

dev-rabbitmq PV/PVC (rabbitmq-pv-pvc.yaml)

logs PV/PVC (logs-pv-pvc.yaml)

Networking

Services

NodePort Services

ClusterIP Services (Internal)

External Access & Load Balancing

AWS Application Load Balancer (ALB) handles external traffic routing to the cluster.

DNS Configuration

AWS Target Groups

The AWS Load Balancer Controller automatically creates and manages target groups based on the Target Group Binding (TGB) resources:

The ALB is configured with:

For detailed ALB configuration, refer to the infrastructure documentation in MU-131025-152516.pdf.

Security

Image Pull Secrets

Secrets (Referenced, not exposed)

The following secrets are referenced in deployments (stored in linked secrets directory):

For detailed secrets configuration, see SECRETS.md

Service Accounts

epmaster (encoding-pool-master)

epw-check

gatedeploy

rollout-restart-cronjob

helm-version-monitor

Pod Security

Anti-Affinity Rules

Services use preferredDuringSchedulingIgnoredDuringExecution podAntiAffinity to spread pods across nodes while allowing colocation when needed for autoscaling:

Pod Disruption Budget (minAvail1-pdb.yaml)

Monitoring & Observability

Amazon CloudWatch

Flower (Celery Monitoring)

Note: For detailed monitoring configuration and dashboard access, consult your AWS CloudWatch documentation.

Configuration Management

ConfigMaps

uwsgi-env (uwsgi-env-ConfigMap.yaml)

Main application configuration including:

frontend-env (frontend-env-ConfigMap.yaml)

Frontend-specific environment variables

tools-env (tools-env-ConfigMap.yaml)

Tools service configuration

Nginx Configuration Templates

encoding-pool-worker-job.tpl-ConfigMap.yaml

Template for dynamically created encoding worker Jobs

fluent-bit-config-ConfigMap.yaml

Log forwarding configuration

Deployment

Prerequisites

  1. AWS EKS cluster (dev) in eu-west-1
  2. kubectl configured with cluster access
  3. Helm 3.x installed
  4. Required secrets configured in secrets directory
  5. JuiceFS volumes configured

Deployment Order

  1. Install Helm Charts (Infrastructure)

    # JuiceFS CSI Driver
    helm upgrade -i juicefs-csi-driver -n kube-system -f custom-values/juicefs-custom-values-dev.yaml
    
    # AWS Load Balancer Controller
    helm upgrade -i aws-load-balancer-controller -n kube-system
    
    # Karpenter (replaces Cluster Autoscaler, see docs/AUTOSCALING.md)
    helm install karpenter oci://public.ecr.aws/karpenter/karpenter \
      --namespace kube-system -f karpenter/karpenter-values-dev.yaml
    kubectl apply -f karpenter/
    
    # Reloader
    helm upgrade -i reloader-1707990814
    
  2. Deploy Storage

    kubectl apply -f dev-media-pv-pvc.yaml
    kubectl apply -f rabbitmq-pv-pvc.yaml
    kubectl apply -f logs-pv-pvc.yaml
    
  3. Deploy Infrastructure Services

    # Redis
    kubectl apply -f redis.yaml
    
    # RabbitMQ (cluster operator — see rabbitmq/development/README.md)
    kubectl apply -f "https://github.com/rabbitmq/cluster-operator/releases/latest/download/cluster-operator.yml"
    
    # Centrifugo
    helm upgrade -i centrifugo -f custom-values/centrifugo-custom-values-dev.yaml
    
    # TUSD
    helm upgrade -i tusd -f custom-values/tusd-custom-values-dev.yaml
    
    # Mailpit (dev email testing)
    kubectl apply -f mailpit.yaml
    
  4. Deploy ConfigMaps

    kubectl apply -f uwsgi-env-ConfigMap.yaml
    kubectl apply -f frontend-env-ConfigMap.yaml
    kubectl apply -f frontend-nginx.conf.tpl-ConfigMap.yaml
    kubectl apply -f encoding-pool-worker-job.tpl-ConfigMap.yaml
    
  5. Deploy Pod Disruption Budget

    kubectl apply -f minAvail1-pdb.yaml
    
  6. Deploy Application Services

    kubectl apply -f backend-deployment-service.yaml
    kubectl apply -f frontend-deployment-service.yaml
    kubectl apply -f celery-deployment.yaml
    kubectl apply -f celerybeat-deployment.yaml
    kubectl apply -f celery-encoding-deployment.yaml
    kubectl apply -f encoding-pool-master-deployment.yaml
    kubectl apply -f tus-hook-listener-deployment-service.yaml
    kubectl apply -f traffic-log-listener-deployment-service.yaml
    kubectl apply -f flower-deployment-service.yaml
    
  7. Deploy Autoscaling

    # HPA for HTTP workloads
    kubectl apply -f hpa/dev/
    
    # KEDA for queue-based scaling (see docs/AUTOSCALING.md for RabbitMQ secret setup)
    helm install keda kedacore/keda --namespace keda --create-namespace \
      -f keda/keda-values-dev.yaml
    kubectl apply -f keda/dev/
    
  8. Deploy Target Group Bindings

    kubectl apply -f frontend-tgb.yaml
    kubectl apply -f gatesrv-tgb.yaml
    kubectl apply -f tools-tgb.yaml
    
  9. Deploy Monitoring

    helm upgrade -i amazon-cloudwatch-observability -n amazon-cloudwatch \
      -f custom-values/amazon-cloudwatch-observability-values-dev.yaml
    
    helm upgrade -i portainer -n portainer -f custom-values/portainer-custom-values-dev.yaml
    

Verification

# Check all pods are running
kubectl get pods

# Check services
kubectl get svc

# Check PVCs are bound
kubectl get pvc

# Check Helm releases
helm list -A

# Check logs
kubectl logs -l app=backend --tail=50

Directory Structure

.
├── docs/                           # This documentation
├── custom-values/                  # Helm chart custom values
├── support/                        # Service accounts, roles, utilities
├── secrets/                        # Symlink to secrets repository
├── test/                          # Test configurations (ignored)
├── unused/                        # Deprecated configurations (ignored)
├── *-deployment-service.yaml      # Service deployments
├── *-ConfigMap.yaml               # Configuration maps
├── *-pv-pvc.yaml                  # Persistent volume claims
└── *-tgb.yaml                     # Target group bindings

Maintenance

Updating Application Version

  1. Update image tag in deployment files
  2. Apply changes: kubectl apply -f <deployment-file>.yaml
  3. Reloader will automatically restart pods

Scaling

HPA-managed workloads (backend, frontend) and KEDA-managed workloads (celery, celery-encoding) scale automatically. See AUTOSCALING.md.

For manual overrides:

kubectl scale deployment backend --replicas=2

Checking Logs

kubectl logs -f deployment/backend
kubectl logs -f deployment/celery

Accessing Portainer

Portainer provides a web UI for managing the cluster (exact access method TBD).

Important Notes

Environment Characteristics

External Dependencies

Technology Stack

Media Asset Management Features

Based on the configuration, the platform supports:

Support

For issues or questions, contact:

Attached Files

Loading attached files...

Comments

No comments yet. Be the first to comment!

Search Results