Skip to content

appvia/kubernetes-platform

Repository files navigation

Kubernetes Platform

This repository contains a reference pattern for managing a collection of Kubernetes clusters using Argo CD as the deployment framework.

Documentation

You can find the documentation for the platform at appvia.github.io/kubernetes-platform.

Why This Pattern?

Managing multiple Kubernetes clusters across different environments presents challenges in consistency, scalability, and automation. This solution provides:

  • Standardized provisioning – Automate cluster creation with Infrastructure as Code (IaC).
  • Gitops-based management – Declarative, version-controlled deployments using ArgoCD.
  • Flexible architectures – Support for both distributed and hub-and-spoke models.
  • Secure multi-cluster operations – Enforce policies, RBAC, and secrets management at scale.
  • Tenant applications – Provides an easy way for tenant teams to onboard their workloads.

Operating Model

The following depicts the operating model for the platform.

  • A platform is made of up a minimum of two repositories, acting as the source of truth
    • EKS Platform: (this repository) provides a baseline configuration and collection of tested components.
    • Tenant Repository: both a consumer of this package, and the source of truth for the applications deployed to the platform.

The Platform Team

  • The platform team has ownership of the EKS Platform repository, this responsibility includes:
    • Keep the platform up to date with the latest version of the Kubernetes, and the components deployed to it.
    • Provide a tested and approved collection of components, to produce an outcome.
    • Provide a mechanism for development teams to deploy their applications to the platform.
    • Provide a security baseline for workloads running on the platform.
    • Work with the development teams to improve the platform, and the applications running on it.

The Tenant (Development) Team

  • The Tenant Repository is owned by the development teams, and is used to deploy their applications to the platform.
  • They consume the platform repository as a software dependency.
  • They are responsible for promoting platform revisions through the software development lifecycle (e.g., dev → test → production) to ensure the application stack remains aligned.