Getting Started

Architecture

Kuberise.io architecture and how it works in your Kubernetes cluster

Overview

This document provides a comprehensive overview of the architecture of Kuberise.io and its operation within your Kubernetes cluster. Kuberise.io is designed to streamline the deployment and management of applications using GitOps best practices.

Installation

The installation script for Kuberise.io will set up ArgoCD and the app-of-apps pattern. ArgoCD will then handle the installation of the remaining tools. The applications are categorized into two groups:

  1. Platform Services: These are installed by ArgoCD in the platform cluster.
  2. Business Applications (Microservices): These are installed by ArgoCD in the application clusters.

For smaller setups, such as a local development cluster, all applications and platform services can be installed in the same cluster.

Environment Management

Different environments (e.g., development, testing, production) are managed by separate ArgoCD instances. For example, you might have one ArgoCD instance for development, another for testing, and a third for production. ArgoCD is installed in the platform cluster and manages applications in both the platform and application clusters.

Each environment can be deployed in a separate Kubernetes cluster, or multiple environments can share a single cluster. For instance, you might have one cluster for development and testing, and another for production.

Customization

Kuberise.io allows you to choose which tools to install. You can add more tools to the list or replace existing tools with SaaS services. Kuberise.io is built on GitOps principles, ensuring that the repository is the single source of truth, enabling you to track changes and avoid manual modifications in the cluster.

Architecture Scenarios

Single Cluster for All (Local Deployment)

For local development, training, and workshops, you can deploy all components in a single cluster using tools like Minikube or KIND. This setup simplifies the environment and is ideal for learning and experimentation.

Architecture Diagram

In this scenario, you should create a single value file for the local cluster in the app-of-apps folder and a corresponding folder in the values directory:

.
├── app-of-apps
   ├── values-onprem.yaml
   └── values.yaml
└── values
    └── onprem/platform
        ├── keycloak
        ├── loki
        └── argocd

This setup allows you to manage all platform services and business applications within a single onprem cluster, making it easy to test and develop locally.

Single Platform Cluster

Architecture Diagram

This diagram illustrates the architecture of a single platform cluster setup.

A typical architecture with a single platform cluster includes:

  • One platform cluster for platform services.
  • Three separate clusters for applications, each serving a different environment (Development, Testing, Production).
  • The platform cluster provides services for all three application clusters.

In this scenario, you should create a value file for the platform cluster in the app-of-apps folder and a corresponding folder in the values directory:

.
├── app-of-apps
   ├── values-management.yaml
   └── values.yaml
└── values
    └── management/platform
        ├── keycloak
        ├── loki
        └── argocd

Then in app-of-apps/values.yaml and app-of-apps/values-management.yaml, you can specify the destination cluster for each application.

Multiple Platform Clusters

For enhanced security, you might opt for multiple platform clusters:

Architecture Diagram

  • One platform cluster for non-production environments.
  • Another platform cluster for the production environment.
  • Three application clusters for different environments (Development, Testing, Production).

In this scenario, you should create a separate value file for each platform cluster in the app-of-apps folder and a corresponding folder in the values directory:

.
├── app-of-apps
   ├── values-NonProd.yaml
   ├── values-Prod.yaml
   └── values.yaml
└── values
    └── NonProd/platform
   ├── keycloak
   ├── loki
   └── argocd
    └── Prod/platform
        ├── keycloak
        ├── loki
        └── argocd

or

Architecture Diagram

  • Three platform clusters for different environments (Development, Testing, Production).
  • Three application clusters for different environments (Development, Testing, Production).

In this scenario, you should create a separate value file for each platform cluster in the app-of-apps folder and a corresponding folder in the values directory:

.
├── app-of-apps
   ├── values-dev.yaml
   ├── values-tst.yaml
   ├── values-prd.yaml
   └── values.yaml
└── values
    └── dev/platform
   ├── keycloak
   ├── loki
   └── argocd
    └── tst/platform
   ├── keycloak
   ├── loki
   └── argocd
    └── prd/platform
        ├── keycloak
        ├── loki
        └── argocd

The values.yaml file in the app-of-apps folder serves as the default value file. Each platform cluster requires its own value file, corresponding to the number of ArgoCD instances managing the platform and microservices.

For example, if your platform cluster is in Azure and named "PlatformAzure," and you have three separate clusters for your microservices (dev, tst, prd), your app-of-apps folder will contain two value files: values.yaml for defaults and values-PlatformAzure.yaml for the platform cluster. (One extra value file only for each platform cluster.)

Uninstallation

To uninstall Kuberise.io, run the following script:

./scripts/uninstall.sh <KubernetesContext> <PlatformName>

Platform Engineering Concept

Modern DevOps practices have evolved to address the complexities of deploying applications across various cloud providers and Kubernetes clusters. Platform teams can create an internal developer platform to abstract these complexities, allowing developers to focus on development. This platform provides self-service tools, templates, best practices, and support, enabling developers to deploy applications to any environment without needing in-depth knowledge of Kubernetes or other tools.

After deployment, developers can monitor and maintain their applications independently. Kuberise.io assists platform engineers and developers in creating an internal developer platform for their teams.

Kuberise.io Features

Kuberise.io deploys several tools to create a developer-friendly environment in your Kubernetes cluster:

  • Tool Selection: Choose which tools to install.
  • Open Source: All tools are popular open-source projects.
  • No Lock-In: Full control over your environment post-deployment.
  • GitOps Best Practices: The repository is the single source of truth, enabling change tracking and avoiding manual cluster modifications.

Kuberise.io Tools

Kuberise.io includes the following tools, with more to be added in the future:

Observability

  • Grafana
  • Loki
  • Prometheus
  • Promtail
  • Metrics Server

Source Control

  • Gitea

Continuous Deployment (CD)

  • ArgoCD
  • ArgoCD Image Updater

Authentication, Authorization, and Security

  • Keycloak
  • Sealed-Secret
  • Cert-Manager
  • Hashicorp Vault

Data

  • PostgreSQL
  • PGAdmin

Networking

  • Ingress-nginx
  • External-DNS
  • MetalLB

Copyright © 2025. All rights reserved.