docs

Architecture

Secure, Scalable Pull-Based Architecture

Overview

Plural is based on a scalable, secure, agent-based pull architecture. It doesn't require direct access to any of the clusters it deploys to, meaning it can manage workloads in any cloud, on-prem, on the edge, or even on a local laptop running KIND. Further, since it doesn't require network-intensive Kubernetes watch streams or central access to Kubernetes, and doesn't rely on single-mastered operator control loops, it should scale to a Kubernetes fleet of virtually any size. We also enhance your Kubernetes setup with an auth proxy, giving you full visibility into your workloads without compromising the network security of your setup or requiring complex multi-cloud networking.

Here's a quick diagram of the setup:

Control Plane

The Control Plane layer is a full-stack service deployable onto any Kubernetes cluster you designate as your management cluster. It contains a few main components:

  • Horizontally scalable Git cache - we should be able to ingest as many Git repos as you'd like and auto-shard them throughout your cluster efficiently.
  • Configuration Management - supports re-configurable backends, and allows you to easily parameterize services with information like hostnames, Docker image tags, and other secret and non-secret information.
  • Auth Proxy - a secure bidirectional gRPC channel, initiated by a deployment agent, used to make Kubernetes API calls no matter where a cluster lives and to give you full dashboarding capabilities from the Plural UI.
  • Cluster API Providers - Plural natively integrates with Cluster API, allowing you to create and manage new clusters at scale and fork your own Kubernetes cluster APIs on top of existing setups for services like EKS, AKS and GKE or on-prem solutions like Rancher.

We provide simple installers if you'd like to deploy the control plane layer to a Kubernetes cluster already in your fleet, or you can use our own Kubernetes setup in the standard Plural install flow.

Deployment Agent

A thin deployment agent is installed onto each cluster and managed by Plural from then on. It continuously polls the control plane for new services and, if there are any changes to make, applies them to your cluster. It can also do a few other things, like: