Kubernetes Prerequisites
The Kubernetes package deploys KMI across multiple Kubernetes platforms using Helm. This page covers the supported platforms, system requirements, and prerequisites you must satisfy before running the deployment.
Supported Platforms
Section titled “Supported Platforms”Kubernetes Platforms
Section titled “Kubernetes Platforms”| Platform | Values File | Ingress (Internal) | Storage Class |
|---|---|---|---|
| AWS EKS | values-aws-eks.yaml | ALB (internal) | gp3 |
| GCP GKE | values-gcp-gke.yaml | GCE (internal) | standard |
| Azure AKS | values-azure-aks.yaml | Application Gateway (internal) | managed-premium |
| OpenShift | values-openshift.yaml | OpenShift Router (internal) | gp2-csi |
| On-Premises / Rancher | values-onprem.yaml | NGINX (internal) | cluster default |
Supported Container Registries
Section titled “Supported Container Registries”- AWS ECR
- GCP Artifact Registry / GCR
- Azure ACR
- Docker Hub
- Harbor
- Nexus
- JFrog Artifactory
- GitLab Registry
- Quay.io
- Any OCI-compliant private registry
System Requirements
Section titled “System Requirements”Kubernetes Cluster
Section titled “Kubernetes Cluster”| Resource | Minimum | Recommended |
|---|---|---|
| Nodes | 2 | 3 |
| CPU per node | 2 cores | 4 cores |
| RAM per node | 4 GB | 8 GB |
| Disk | 20 GB | 50 GB |
Software
Section titled “Software”| Software | Version | Required For |
|---|---|---|
| Kubernetes | 1.23 or later | All platforms |
| Helm | 3.0 or later | All platforms |
| kubectl | 1.23 or later | All platforms |
| Docker | 20 or later | Loading/pushing images |
| yq | 4.0 or later | YAML processing |
| AWS CLI | 2.0 or later | EKS, only for auto-login to ECR |
| gcloud CLI | Latest | GKE, only for auto-login to GCR / Artifact Registry |
| az CLI | Latest | AKS, only for auto-login to ACR |
| oc CLI | Latest | OpenShift, for internal-registry login and ImageStream creation |
Network Ports
Section titled “Network Ports”Internal (pod-to-pod within the cluster)
| Port | Protocol | Service | Purpose |
|---|---|---|---|
| 3000 | TCP | Frontend | Next.js UI |
| 18002 | TCP | Backend | Data Replicator Service |
| 18003 | TCP | Backend | Monitoring Service |
| 18004 | TCP | Backend | Socket.IO (real-time updates) |
| 27017 | TCP | MongoDB | Database |
External access (internal load balancer / ingress)
| Port | Protocol | Direction | Purpose |
|---|---|---|---|
| 80 | HTTP | Inbound | Internal LB - Web UI access |
| 443 | HTTPS | Inbound | Internal LB - Web UI access (if TLS enabled) |
MongoDB Storage Class by Platform
Section titled “MongoDB Storage Class by Platform”The deployment script automatically applies the correct storage class via the platform-specific values overlay files.
| Platform | Storage Class |
|---|---|
| AWS EKS | gp3 or gp2 |
| GCP GKE | standard or standard-rwo |
| Azure AKS | managed-premium or default |
| On-Premises | Cluster default (for example, local-path, nfs-client, longhorn) |
Helm Chart Values
Section titled “Helm Chart Values”These are the key Helm values the chart exposes. Most are driven from your .env file by the deploy script, but you can override them directly if needed.
MongoDB
Section titled “MongoDB”| Parameter | Description | Default |
|---|---|---|
mongodb.enabled | Enable MongoDB | true |
mongodb.auth.rootUsername | Root username | admin |
mongodb.auth.rootPassword | Root password | "" |
mongodb.persistence.enabled | Enable persistence | true |
mongodb.persistence.storageClass | Storage class | Platform-specific (see above) |
mongodb.persistence.size | Storage size | 10Gi |
Frontend
Section titled “Frontend”| Parameter | Description | Default |
|---|---|---|
frontend.enabled | Enable frontend | true |
frontend.replicaCount | Replica count | 1 |
frontend.image.repository | Image repository | kmi-frontend |
frontend.ingress.enabled | Enable ingress | true |
Prerequisites
Section titled “Prerequisites”Before starting the installation, verify the following:
| Item | Command to Verify | Expected Output |
|---|---|---|
| Kubernetes cluster accessible | kubectl get nodes | Nodes in Ready state |
| Helm installed | helm version | v3.10+ |
| yq installed | yq --version | v4.0+ |
| Docker installed | docker --version | v20+ |
| Storage class available | kubectl get sc | Default StorageClass exists |
| Ingress controller configured | kubectl get pods -A | grep ingress | Ingress controller pods running |
Container Registry Login (Required)
Section titled “Container Registry Login (Required)”You must authenticate to your container registry before running the deployment script.
aws ecr get-login-password --region <region> | docker login --username AWS --password-stdin <account-id>.dkr.ecr.<region>.amazonaws.comgcloud auth configure-docker <region>-docker.pkg.devaz acr login --name <registry-name>docker loginLog in to OpenShift, then authenticate Docker to the internal registry using your OpenShift token:
oc login <cluster-url>docker login image-registry.openshift-image-registry.svc:5000 -u $(oc whoami) -p $(oc whoami -t)For Harbor, Nexus, JFrog, GitLab, Quay, or any private registry:
docker login <registry-url>Verify the login succeeded:
docker login <registry-url># Expected: Login SucceededPlatform-Specific Prerequisites
Section titled “Platform-Specific Prerequisites”- AWS CLI configured (
aws sts get-caller-identity) - EBS CSI driver installed (
kubectl get pods -n kube-system | grep ebs) - ALB Ingress Controller installed (configured for internal scheme)
- gcloud CLI configured (
gcloud auth list) - Artifact Registry API enabled
- GCE Ingress Controller (internal class)
- Azure CLI configured (
az account show) - ACR integrated with the AKS cluster
ocCLI installed and logged in (oc whoami)- OpenShift Router available for internal ingress
- Access to the OpenShift internal registry, or an external registry you can push to
- NGINX/Traefik Ingress Controller installed
- Persistent storage provisioner configured
Package Contents
Section titled “Package Contents”The package files for the Helm deployment:
kmi-k8s-vX.x/├── k8s-deploy.sh # Generic deployment script (all platforms)├── .env.example # Environment configuration template (Docker)├── .env-k8s.example # Environment configuration template (Kubernetes)├── images.tar.gz # Docker images archive├── mongo-init.sh # MongoDB initialization script├── README.md # Guide for the deployment└── k8s-deploy-package/ # Helm charts ├── values.yaml # Base configuration values ├── values-aws-eks.yaml # AWS EKS platform overlay ├── values-gcp-gke.yaml # GCP GKE platform overlay ├── values-azure-aks.yaml # Azure AKS platform overlay ├── values-openshift.yaml # OpenShift platform overlay ├── values-onprem.yaml # On-prem/Rancher platform overlay ├── templates/ # Helm chart templates ├── Chart.yaml # Chart details └── files/ # MongoDB init script folderOnce the prerequisites are met, continue to Deploy.