Overview

7 Platform Control Plane Foundations

This chapter lays the groundwork for a resilient, self-serve engineering platform by treating the platform as a product and Kubernetes as the control plane. It emphasizes automating everything behind pipelines, aiming for self-healing behavior and minimizing operational toil. Clear domain boundaries guide the implementation: account baselines, networking, customer identity, and a cloud service control plane base. Kubernetes’ declarative model and extensibility are leveraged not only to orchestrate workloads but also to enforce desired state and extend capabilities through APIs and add-ons.

The account baseline domain standardizes security, observability, and DNS across cloud accounts with recurring, idempotent enforcement and central log aggregation. It frames DNS as a product decision, establishing a platform-managed primary domain with consistent, self-serve subdomain patterns and Route53 hosted zones and delegations across accounts. Networking is handled as a dedicated transit layer that supports growth across regions and accounts, with optional CloudWAN, opinionated VPC layouts, and role-based per-cluster networks. The guidance stresses keeping platform infrastructure-as-code dedicated to the platform (not shared enterprise modules) to preserve velocity and decouple change.

Customer identity is decoupled from cloud IAM: authenticate via enterprise SSO, authorize by team membership, and propagate those team claims through an OIDC provider (e.g., GitHub teams via a SaaS IDP and device-auth flow). That identity is integrated with EKS to drive RBAC, complemented by a CLI that mints tokens and kubeconfigs for developers. The control plane base is provisioned as a vendor-managed core: EKS, an AWS-managed node group for admin services, standard add-ons (CNI, DNS, proxies, CSI drivers, pod identity), storage classes (EBS/EFS), and Karpenter for elastic, routinely refreshed compute across ARM/AMD pools. Post-apply setup (kubeconfig, secrets, namespaces, RBAC) is automated, and health is validated functionally with tests that exercise storage and dynamic node provisioning. Frequent, small releases with automated testing, routine add-on updates, safe node refreshes, and module version hygiene complete the upgrade and reliability strategy.

The importance of domain-driven design and the platform product domains. The aws-iam-profiles pipeline we created was part of the Cloud Administrative Identity product domain. We now continue to the Cloud Account Baseline domain and create the account-level baseline resources.
If Epetech were using DataDog, it is at this point that we would set up a repository and pipeline to manage the account-level integration provided by DataDog for AWS. With that integration in place, with each additional capability or feature we implement, like the networks we will provision in section 7.2, observability would be a part of the natural definition of done for the implementation.
Our engineering platform must provide a self-serve experience for each internal customer (development team) to configure their service to receive traffic based on our company’s "product" decision for how the DNS domain and subdomain names reflect our digital products.
Traffic will come into services running on the platform in a couple of different ways.
This VPC structure creates a solid foundation for most starting EKS implementations.
In an actual starting pipeline for our VPCs, we would also have the same number of VPCs as we have EKS clusters. But we typically have several more instances than we will create in our Epetech example.
For the SAAS tools that will be a part of our platform, the common enterprise SSO integration for authentication is a good starting point. Some tools, like CircleCI, can integrate directly with GitHub authentication and do not necessarily need an independent integration.
For Epetech, we would like our identity provider service to have built-in or easily configurable means of integrating with GitHub, requiring authentication through whatever means we have set up in GitHub. As a result of (1) successful authentication, we want the IDP to (2) get the list of all teams the user is a member of in our GitHub organization. Finally, we want to (3) return to the user a secure means of accessing the Platform infrastructure or custom API resources.
In this authentication and authorization flow, the IDP acts just as a secure go-between. The user must authenticate through GitHub and grant their device authorization to receive a JSON Web Token.
This configuration can be done through the Auth0 UI or programmatically. In a production environment, you should always manage configuration in code.
With vendor-managed services, we effectively decide which version of the service we want to be deployed and perhaps a handful of specific settings. Nearly all of what goes into deploying and managing the service is the cloud vendor’s responsibility.

Summary

  • Establish cloud account-level security configuration early and manage within the engineering platform if the security stakeholders aren’t equipped to provide product-bound capabilities.
  • Provision account-level observability dependencies early.
  • A seamless and self-service experience for DNS and domain management is critical.
  • Decide on a platform-managed domain naming option, and evolve from there to include custom subdomains and bring-your-own-domain capabilities.
  • The left-of and right-of domain naming patterns for APIs and services are primarily a business-level product value decision.
  • An API gateway may not be necessary unless supporting third-party developers; focus on zero-trust network patterns and internal API management.
  • Set up release pipelines for DNS configurations and account-level resources to ensure consistent deployment across environments.
  • Design a cloud-vendor-managed transit network that makes adding networks a low-complexity task.
  • Zero-trust networking done right can simplify the execution of business decisions to make internal resources available to customers or third-party partners.
  • Implement a role-based network structure where each Kubernetes cluster has a dedicated VPC, named according to the cluster for easy future scalability.
  • Provision VPCs and subnets in specific regions with designated IP spaces to support different roles, such as nodes, databases, and ingress.
  • Make platform customer identity its capability within the engineering platform architecture as a key means of providing flexibility in creating user experiences and supporting evolutionary architecture - this is one of those decisions you will wish you got right at the start.
  • Use a SaaS Identity Provider like Auth0 to provide a standards-based security protocol and act as the provider between an authoritative source of authentication and the source of authorization claims.
  • The OAuth2 OIDC device-auth-flow is an adequate standard for users of the platform to generate short-lived credentials for accessing platform infrastructure and custom services from their laptops.
  • The primary permission boundary (user claim) should be team membership. This maps well to domain-bound team topologies, and when assumed to be the central goal in all the RBAC capabilities, is more likely to result in the most effective implementation the first time.
  • Create a dedicated pipeline for orchestrating the cloud provider-managed aspects of the kubernetes control plane.
  • Technologies like Karpenter provide more efficient means of maintaining short-lived nodes and node pools comprised of an efficient mix of node sizes and attributes.
  • Cloud-provided storage classes provide a vendor-managed solution for many everyday attached storage needs.
  • Integrate kubernetes directly with your identity provider solution to provide users a direct means of interacting with the kubernetes API.
  • Include automated collection of kubernetes configuration details in the control plane base pipeline.
  • Integration testing of the EKS pipeline includes deploying test applications that utilize the features in a customer-like manner to confirm the actual implementation health.
  • Arm nodes on most cloud providers offer a more performant and cost-effective option.
  • A platform CLI provides an effective touchpoint for users to interact with platform APIs. Whether creating CLI or UI touchpoints, the service interface (API) always comes first.

FAQ

Why does the chapter treat Kubernetes as the platform “Control Plane”?Kubernetes continuously reconciles actual state to desired state and exposes an extensible API. That makes it ideal not just for running workloads (rescheduling, scaling, healing) but also as the orchestration backbone for platform capabilities you can extend via CRDs, operators, and controllers. In short, it gives you a programmable, self-healing control plane for your platform.
What belongs in the Cloud Account Baseline domain versus Administrative Identity?Administrative Identity is its own domain because IAM roles, federation, and permission models have broad impact and lifecycle of their own. The Cloud Account Baseline covers other account-wide, “always-on” settings such as centralized logging and flow logs, SIEM/SOAR hooks, account-level security controls, DNS hosted zones and delegations, and org-level network-as-policy. These are set once per account and apply everywhere without being tied to a single workload.
How should baseline security configuration and scanning be implemented?Automate it with an idempotent job that runs on a schedule (for example, nightly) and pair it with recurring scans that detect drift before auto-remediation kicks in. Ownership can sit with a security team if staffed; otherwise the platform team should codify enterprise controls (for example, VPC egress restrictions, permission boundaries, mandatory log ingestion). Frameworks like CIS AWS Foundations Benchmark and InSpec are good references to start from.
How should we approach account-level observability, and do cloud-native tools suffice?Stand up account-level integrations early (for example, DataDog’s AWS integration or native AWS services like CloudWatch/X-Ray). The key selection criterion often missed is identity: the observability experience must align with your customer identity model (separate from cloud IAM) so teams can self-serve dashboards, monitors, and alerts. Cloud-native tools can work, but ensure you can deliver team-based authZ and a smooth self-service UX.
What DNS strategy and hosted-zone delegation does the chapter recommend?Adopt a product-first naming strategy and make the platform own a top-level domain (for example, epetech.io). Delegate standard subdomains for APIs, environments, and per-cluster needs (for example, api.epetech.io, dev.epetech.io, qa.epetech.io, prod-i01-aws-us-east-2.epetech.io). Manage Route53 hosted zones and NS delegations in code (Terraform), even across accounts, so internal teams get a consistent, self-serve ingress pattern.
How is the Transit Network Layer and VPC design structured for EKS?Create a dedicated VPC per cluster (role-based structure), reserve ample IP space for AWS CNI, and start with a simplified layout: private subnets for nodes, intra subnets for control plane, public ingress, and a cost-conscious NAT approach for exercises. Use clear, scalable names (for example, sbx-i01-aws-us-east-1) that encode role, instance, provider, and region. Plan for expansion across regions and accounts, and consider TGW/CloudWAN as scale grows.
Why separate platform customer identity from cloud-provider IAM, and how is it implemented?Decoupling lets you deliver a cohesive, cross-tool, cross-cloud developer experience. The pattern used here authenticates via corporate SSO/GitHub, derives authorization from GitHub Teams, and issues OIDC tokens through an IDP (for example, Auth0). The OAuth2 device authorization flow fits CLI-driven workflows, enabling team-based access to Kubernetes and platform APIs without granting users direct cloud IAM identities.
What goes into the Cloud Service Control Plane Base pipeline on AWS?Provision the EKS cluster and an AWS-managed node group for platform-managed services, then add AWS-managed addons: kube-proxy, CoreDNS, VPC CNI, EBS/ EFS CSI drivers, and the EKS pod identity agent. Include Karpenter for customer-facing node pools. The chapter uses Terraform modules: terraform-aws-modules/eks/aws, aws-ia/eks-blueprints-addons/aws, terraform-aws-modules/iam/aws, cloudposse/efs/aws. Keep this pipeline focused on vendor-managed components and prefer “use latest compatible” for addons to reduce long-term ops overhead—paired with frequent runs and pre-prod testing.
How do we integrate OIDC with EKS and enforce team-based RBAC?Configure aws_eks_identity_provider_config with your IDP issuer URL and client ID, and map a groups claim that carries GitHub Teams. Bind those groups to Kubernetes roles via RBAC (for example, a ClusterRoleBinding granting cluster-admin to a specific team for platform administration). This approach enables SSO and consistent, team-oriented access across clusters and even clouds.
How are storage and elasticity configured and tested, and what’s the upgrade strategy?- Storage and elasticity: Provision an EFS file system and define EBS/EFS StorageClasses. Deploy Karpenter via its EKS module plus Helm for the controller; create an EC2NodeClass and default NodePools (ARM and AMD). Validate with tests: AwSpec for AWS resources, Bats + kubectl for addon health, PVC create/write/expand (EBS), multi-writer checks (EFS), and Karpenter-triggered node provisioning for targeted workloads. - Upgrades: Bump EKS versions via tfvars (don’t skip minors); keep AWS-managed addons on most_recent in non-prod and run the pipeline frequently; pin and roll Karpenter chart versions deliberately; refresh the AWS-managed node group via terraform apply -replace; track Terraform module updates with Renovate/Dependabot and review routinely.

pro $24.99 per month

  • access to all Manning books, MEAPs, liveVideos, liveProjects, and audiobooks!
  • choose one free eBook per month to keep
  • exclusive 50% discount on all purchases
  • renews monthly, pause or cancel renewal anytime

lite $19.99 per month

  • access to all Manning books, including MEAPs!

team

5, 10 or 20 seats+ for your team - learn more


choose your plan

team

monthly
annual
$49.99
$499.99
only $41.67 per month
  • five seats for your team
  • access to all Manning books, MEAPs, liveVideos, liveProjects, and audiobooks!
  • choose another free product every time you renew
  • choose twelve free products per year
  • exclusive 50% discount on all purchases
  • renews monthly, pause or cancel renewal anytime
  • renews annually, pause or cancel renewal anytime
  • Effective Platform Engineering ebook for free
choose your plan

team

monthly
annual
$49.99
$499.99
only $41.67 per month
  • five seats for your team
  • access to all Manning books, MEAPs, liveVideos, liveProjects, and audiobooks!
  • choose another free product every time you renew
  • choose twelve free products per year
  • exclusive 50% discount on all purchases
  • renews monthly, pause or cancel renewal anytime
  • renews annually, pause or cancel renewal anytime
  • Effective Platform Engineering ebook for free
choose your plan

team

monthly
annual
$49.99
$499.99
only $41.67 per month
  • five seats for your team
  • access to all Manning books, MEAPs, liveVideos, liveProjects, and audiobooks!
  • choose another free product every time you renew
  • choose twelve free products per year
  • exclusive 50% discount on all purchases
  • renews monthly, pause or cancel renewal anytime
  • renews annually, pause or cancel renewal anytime
  • Effective Platform Engineering ebook for free