Kubernetes platform for an AI-powered university learning system

Full platform engineering for funiver.ai — a university AI learning companion platform built on microservices. Kubernetes deployment, Helm-based service management, Keycloak identity layer, GitLab CI/CD with multi-stage security scanning, and a canary-to-production incremental rollout strategy.

  • 7Microservices
  • CanaryRollout strategy
  • 4-stageSecurity pipeline
  • ZeroManual deploys
Kubernetes platform for an AI-powered university learning system

Context

An AI education platform that needed production-grade infrastructure

funiver.ai is an AI-powered learning companion platform for universities — personalising student education, extending faculty reach, and connecting students with career opportunities. As the product moved from prototype to production, the team needed a cloud-native platform that could support independent service deployments, enforce security policies, and scale without operational overhead.

Challenge

Seven services, one coherent platform, non-negotiable security

The backend was split across seven independent .NET microservices plus a Next.js frontend, each requiring its own build, image, and deployment lifecycle. Authentication had to be centralised through Keycloak without coupling service code. The CI pipeline needed full security scanning — SAST, DAST, container scanning, and dependency analysis — with a hard gate preventing deployment of images with High or Critical CVEs.

Solution

Helm-managed microservices with a security-gated CI/CD pipeline

We designed the full platform layer: Kubernetes namespace strategy, per-service Helm charts, a multi-stage GitLab CI pipeline with security enforcement, and a canary-based incremental rollout to production.

Kubernetes & Helm

Each of the seven services — BFF, Courses, Lessons, UserProfile, UserCoursesData, YARP API Gateway, and Next.js Frontend — deployed via independent Helm charts into a dedicated namespace. Keycloak, MinIO, and PostgreSQL provisioned in isolated namespaces with credential management through Kubernetes secrets.

CI/CD pipeline

GitLab CI with 15 stages: secret detection, pre-build checks, parallel service builds, a build gate, security scans (SAST, DAST, container scanning, dependency scanning), a security gate blocking on any High/Critical finding, deployment, post-deploy DAST, and an incremental rollout from canary through 10%, 25%, 50% to 100% production traffic.

Identity & access

Keycloak deployed as the central IAM layer — realm configuration automated via CI, BFF service handling token exchange between frontend and backend services. All inter-service communication routed through the YARP API Gateway with Keycloak-issued tokens.

Observability

Grafana Alloy deployed as the metrics and log collection agent, shipping to Grafana Cloud. Ollama running locally in-cluster for AI inference workloads, with MinIO providing S3-compatible object storage for course assets.

Engineering approach

How we delivered

01

Architecture

Defined namespace topology, service boundaries, and inter-service communication model. Designed Keycloak realm structure and YARP routing rules before any deployment.

02

CI/CD foundation

Built the GitLab CI pipeline skeleton with build templates, Helm deploy templates, and security scan integration. Established the security gate policy against High/Critical CVEs.

03

Service rollout

Deployed infrastructure services first (PostgreSQL, Keycloak, MinIO), then onboarded all application microservices via Helm. Validated inter-service authentication end-to-end.

04

Production hardening

Implemented canary and incremental rollout stages, connected Grafana Alloy for full observability, and documented operational runbooks for each service.

Results

Measured impact

  • 7Services in production
  • 15CI/CD pipeline stages
  • 0High/Critical CVEs in prod
  • CanaryIncremental rollout
  • 100%Automated deployments

Project views

Product & platform views

Technology

Stack & capabilities

  • Kubernetes
  • Helm
  • GitLab CI
  • Keycloak
  • YARP
  • .NET
  • Next.js
  • PostgreSQL
  • MinIO
  • Grafana
  • Ollama
  • SAST / DAST

Facing a similar challenge?

Start a project