KubeKanvas Logo
  • Features
  • Pricing
  • Templates
    • How KubeKanvas works
    • Docs
    • Downloads
    • Blog
    • E-Book
    • Tutorials
  • FAQs
  • Contact
  • Features
  • Pricing
  • Templates
    • How KubeKanvas works
    • Docs
    • Downloads
    • Blog
    • E-Book
    • Tutorials
  • FAQs
  • Contact
Back to Templates

Headless CMS - Strapi-Next.js Kubernetes Template

Tags:
strapikubernetesCMSNextJS
Created by:
Mahmood
Headless CMS - Strapi-Next.js Kubernetes Template   template preview
252 uses
KubeKanvas Logo
Visual Kubernetes cluster design tool that helps you create, manage, and deploy your applications with ease.
Product
  • Features
  • Pricing
  • Templates
Resources
  • Blog
  • Tutorials
Company
  • About Us
  • Contact
  • Terms of Service
  • Privacy Policy
  • Responsible AI Policy
  • Impressum
XGitHubLinkedIn
© 2026 KubeKanvas. All rights reserved.

Setting up a headless CMS with a decoupled frontend on Kubernetes requires wiring together multiple services, internal routing, and an ingress controller. This template deploys a Strapi backend and a Next.js frontend as separate Kubernetes Deployments, connected via ClusterIP Services and exposed through a single NGINX Ingress with path-based routing. It gives you a working Strapi Next.js Kubernetes setup without writing manifests from scratch.

What's Included

ComponentTypePortRole
Strapi BackendDeployment + ClusterIP Service1337Headless CMS / content API
Next.js FrontendDeployment + ClusterIP Service3000Public blog UI
NGINX IngressIngress80Routes /admin to Strapi, / to Next.js

Architecture Overview

Strapi and Next.js each run as independent Deployments with ClusterIP Services for internal-only access. The NGINX Ingress controller sits at the cluster edge and routes /admin traffic to the Strapi service on port 1337 and all other paths to the Next.js service on port 3000. Neither service is directly exposed outside the cluster.

Prerequisites

  • Kubernetes cluster (e.g Docker Desktop or Minikube for local testing)
  • NGINX Ingress Controller installed and enabled
  • KubeKanvas CLI installed and running on your computer (Optional, if you want to use one-click deployment)

How to Deploy

  1. Click the button at the top right corner of this page to load the manifest into the editor.
  2. Update image references in the Strapi and Next.js Deployments to point to your built images.
  3. Adjust replica counts if needed.
  4. Deploy the template to your cluster via the Play button in the top right bar. If you prefer to deploy manually, download the YAML and apply it with kubectl.
  5. Wait for all pods to reach Running status. You can monitor progress in the Release Monitor screen.

How to Test

  1. Retrieve the ingress IP. You can check the IP of the ingress in the monitor screen or you can run the kubectl command to get it: kubectl get ingress -n <namespace>.
  2. Visit http://<ingress-ip>/admin and confirm the Strapi admin login screen loads.
  3. Visit http://<ingress-ip>/ and confirm the Next.js frontend renders correctly.

Use Cases

  • Decoupled CMS and frontend: Running Strapi as a content API while Next.js handles server-side rendering with SSR/SSG support.
  • Independent service deployments: Separating backend CMS and frontend so each can be updated and scaled independently.
  • Ingress path routing reference: Learning path-based ingress routing with a real multi-service application on Docker Desktop or Minikube.

Summary

This template configures a two-service Strapi and Next.js deployment on Kubernetes with path-based ingress routing and isolated internal services. For a full walkthrough, read Building a Modern Blog with Strapi and Kubernetes.