Chapter 8: Control plane services and extensions
The introduction establishes the platform’s current control plane baseline and identifies services and extensions as the cluster-wide components still to be added.
After this chapter you will be able to
- Control plane baseline. Describe what the Epetech platform has at this point and what its control plane still lacks.
- Staged Platform Team Growth. Justify starting with one platform team and one or two alpha customer teams even when the platform is expected to serve hundreds or thousands of developers later.
- Service And Extension Pipelines. Describe how a single platform team initially organizes cluster-wide control plane applications and why that arrangement helps.
- Services and extensions distinction. Distinguish a platform extension from a service by the developer experience it provides, rather than by the technology deployed.
- Scaling delivery and responsibilities. Explain how growth changes release orchestration and why services should be considered for delegation before extensions.
- Stakeholder outcome and API ownership. Explain how stakeholders can influence platform requirements without imposing solutions that create friction. Describe the two approaches the section recommends.
- Operational observability and self-service. Describe the observability coverage and customer-facing capabilities the section calls for in an engineering platform.
- Deployment methods and secrets support. Distinguish direct pipeline deployment using service account credentials from deployment through a service such as Argo or Flux, and explain the associated secrets-management need.
- Initial security service baseline. Explain why every cluster needs essential security services from the outset and how those guardrails should evolve.
- Separate initial release pipelines. Explain why the platform starts with basic release pipelines that deploy services and extensions separately.
- Production-like nonproduction resilience. Justify testing high-availability and resilience configurations outside production, despite the cost of nonproduction environments.
- Cluster services pipeline flow. Describe how the services pipeline deploys a pinned version of each service to a cluster with Helm and then runs integration tests. Explain that this pipeline uses the Kubernetes API rather than provisioning AWS-managed resources through the AWS API.
- Helm chart security and configuration. Explain why merely mirroring third-party Helm charts does not guarantee availability or meaningful security review, and describe the pipeline-based scanning and automated mirroring proposed instead. Describe how pinned versions and cluster-specific values files configure deployments.
- Service state and functional tests. Distinguish state checks from functional tests for deployed services. Give the section’s metrics-server example: use an application with a Horizontal Pod Autoscaler, generate load, and check whether its pods scale up.
- Storage class extension boundary. Explain why Epetech does not add storage classes as routine control plane extensions, and when a storage capability should be treated as one.
- Service mesh proxy model. Explain how a service mesh uses managed proxies to provide communication capabilities without changing application code, and describe the tradeoff between dedicated and shared proxies.
- Initial ingress extension stack. Trace the distinct jobs of Istio, external-dns, and cert-manager in making an application reachable through a platform-managed HTTPS domain.
- Extension deployment and permissions. Describe how the extensions pipeline prepares AWS permissions and deploys the initial extensions, including why its role test is limited.
- Default ingress resources and validation. Describe the default resources and tests that establish whether the newly deployed extensions can deliver HTTPS traffic to an application.
- Operator-backed persistent data resources. Explain how infrastructure operators let developers provision common persistent data resources through the Kubernetes API while platform engineers retain responsibility for their operational lifecycle.
- Starter kits versus platform services. Distinguish an infrastructure starter kit from a platform capability delivered as a service interface.
- Team-based platform access. Explain why the platform should authorize developers through their teams and let teams manage onboarding and membership rather than requiring individual access requests for each system.
- Team onboarding configuration. Describe how a known list of platform customer teams could drive standard namespace creation, access bindings, gateways, and necessary membership synchronization.
- Management APIs and integration events. Explain why lightweight management APIs are proposed for integration gaps and how team events can support configuration maintenance, self-healing, and contributions from other technical teams.
- Interim team and namespace management. Explain how Epetech can configure a few early-adopter teams and standard namespaces before its management API is ready, and why a simple, non-self-serve approach is sufficient at the alpha stage.
What it builds on
- Cloud service control plane base (chapter 7) · The cloud service control plane base established in the preceding chapter.
- The importance of a minimal valuable product and early adopters (chapter 2) · Assumes the idea of launching a minimal product with early adopters.
- Policy-as-code (chapter 4) · The idea of expressing organizational policy in ways teams can apply consistently.
- Customer identity (chapter 7) · The platform customer identity solution used for authentication and team membership.
- AWS managed node groups (chapter 7) · The control plane base and its managed node groups.
- Account baseline security scanning (chapter 7) · The account baseline security scanning established for the platform.
- AWS managed EKS add-ons (chapter 7) · The AWS-managed EKS features included in the control plane base.
- Domain-driven platform design (chapter 2) · The idea of preserving domains of change in platform design
Section by section
Introduction
The introduction establishes the platform’s current control plane baseline and identifies services and extensions as the cluster-wide components still to be added.
- Control plane baseline: Describe what the Epetech platform has at this point and what its control plane still lacks.
Why it matters: This baseline explains why the chapter turns to adding control plane components. - Cluster-wide component domains: Explain what services and extensions collectively represent in this introduction, without assigning a definition to either category.
Why it matters: It sets the scope of the components the chapter will address without yet explaining the distinction between the two categories.
Key terms: sandbox, production instance, Elastic Kubernetes Service (EKS), control plane, control plane services, control plane extensions, cluster-wide services
8.1 Value of services and extension domains for smaller teams
This section explains why a platform can start with one small team and how separating control plane services from extensions helps that team deliver to early customers.
- Small Team Delivery Tradeoffs: Explain why a platform serving a small developer pool may be better delivered by one team rather than several specialized teams.
Why it matters: The number of platform teams should reflect the value they add, not just the possibility of specializing. - Staged Platform Team Growth: Justify starting with one platform team and one or two alpha customer teams even when the platform is expected to serve hundreds or thousands of developers later.
Why it matters: Early customers give the platform team a chance to validate both the product and its eventual ownership boundaries before investing in scale. - Service And Extension Pipelines: Describe how a single platform team initially organizes cluster-wide control plane applications and why that arrangement helps.
Why it matters: A simple division of orchestration work helps a small team deliver sooner without stepping on one another’s work.
Key terms: internal developer pool, platform team, team specialization, alpha customers, product management, feedback skills, domain boundaries, control plane applications, services, extensions
8.2 Value of services and extension domains for scaled platform delivery
This section distinguishes platform services from extensions and explains how that distinction guides delivery responsibilities as a platform grows.
- Services and extensions distinction: Distinguish a platform extension from a service by the developer experience it provides, rather than by the technology deployed.
Why it matters: The distinction helps determine how a capability should be delivered and who should remain responsible for it. - Abstracted capabilities and node pools: Explain why a capability can help an application yet remain a service when its resources are not provisioned or configured uniquely for that application.
Why it matters: The example prevents a misleading classification based only on whether developers interact with a capability. - Scaling delivery and responsibilities: Explain how growth changes release orchestration and why services should be considered for delegation before extensions.
Why it matters: This sequencing aims to increase delivery velocity without sending developers back to ticket queues and manual processes.
Key terms: service, extension, Kubernetes API, developer experience, abstracted, Karpenter, node pools, release orchestration pipeline, organizational scaling, platform services
8.2.1 Which services or extensions should be a part of every platform from the start?
This section explains how to choose initial control plane services and extensions based on a platform’s needs, while identifying foundational capabilities and practices that support adoption and growth.
- Stakeholder outcome and API ownership: Explain how stakeholders can influence platform requirements without imposing solutions that create friction. Describe the two approaches the section recommends.
Why it matters: This keeps organizational requirements compatible with a self-service platform experience. - Realistic technology proof of concept: Justify testing a proposed service on the actual engineering platform infrastructure before committing to it.
Why it matters: A realistic trial reveals operational difficulties that a selection checklist may miss. - Operational observability and self-service: Describe the observability coverage and customer-facing capabilities the section calls for in an engineering platform.
Why it matters: Teams need visibility into both their applications and the platform, without depending on operators for each observability change. - Node autoscaling for resilience: Explain why node autoscaling belongs in the platform and when operators may need to supply it as a control plane service.
Why it matters: The platform needs the capability even when its provider determines who manages it. - Deployment methods and secrets support: Distinguish direct pipeline deployment using service account credentials from deployment through a service such as Argo or Flux, and explain the associated secrets-management need.
Why it matters: The deployment choice determines both how teams reach the cluster and how application secrets must be supplied. - Initial security service baseline: Explain why every cluster needs essential security services from the outset and how those guardrails should evolve.
Why it matters: Early guardrails give adopters confidence without making security a lasting obstacle to delivery.
Key terms: stakeholders, outcomes, APIs, manual handoffs, software selection criteria, proof of concept, engineering platform infrastructure, operational observability, logs, metrics
8.3 Control plane services
This section proposes a simple starting point for deploying control plane services and extensions and explains why nonproduction environments should test production-like resilience.
- Separate initial release pipelines: Explain why the platform starts with basic release pipelines that deploy services and extensions separately.
Why it matters: This explains why a deliberately simple deployment setup can still support later growth. - Production-like nonproduction resilience: Justify testing high-availability and resilience configurations outside production, despite the cost of nonproduction environments.
Why it matters: Production-like resilience testing makes releases more trustworthy and helps avoid costly developer disruption.
Key terms: services, extensions, release pipelines, domain boundary, alpha teams, high-availability (HA), resilience, nonproduction environments, production-like behavior
8.3.1 Services pipeline orchestration
This section outlines how to deploy pinned control-plane services to each cluster with a Kubernetes-focused pipeline, configure and scan their Helm charts, and test that the services work.
- Cluster services pipeline flow: Describe how the services pipeline deploys a pinned version of each service to a cluster with Helm and then runs integration tests. Explain that this pipeline uses the Kubernetes API rather than provisioning AWS-managed resources through the AWS API.
Why it matters: It establishes what this pipeline releases and how it differs from the earlier infrastructure pipelines. - Pipeline environment and stages: Explain how the pipeline obtains cluster access and how its deployment and repeat-test stages are organized. Describe the sandbox deployment on a main-branch change, the production deployment on a Git tag, and nightly reuse of the tests.
Why it matters: Cluster credentials and reusable stages let deployments and scheduled checks run against the intended environment. - Helm chart security and configuration: Explain why merely mirroring third-party Helm charts does not guarantee availability or meaningful security review, and describe the pipeline-based scanning and automated mirroring proposed instead. Describe how pinned versions and cluster-specific values files configure deployments.
Why it matters: The proposed approach seeks useful security checks without turning chart adoption and upgrades into a slow ticket process. - Service state and functional tests: Distinguish state checks from functional tests for deployed services. Give the section’s metrics-server example: use an application with a Horizontal Pod Autoscaler, generate load, and check whether its pods scale up.
Why it matters: Testing both health and actual behavior catches services that appear to be running but are not usable.
Key terms: services pipeline, extensions pipeline, Helm, pinned version, Kubernetes API, set-environment, kubeconfig, pipeline service account, sandbox cluster, nightly job
8.4 Control plane extensions
Introduces common control plane extension categories and previews their treatment in the Epetech example.
8.4.1 Kubernetes storage classes
Explains why Epetech uses AWS-managed Kubernetes storage classes by default and when additional storage capabilities would count as control plane extensions.
- Storage class extension boundary: Explain why Epetech does not add storage classes as routine control plane extensions, and when a storage capability should be treated as one.
Why it matters: This distinction keeps already-managed storage separate from capabilities the platform team would need to extend.
Key terms: storage classes, control plane extensions, Kubernetes API, Elastic Block Store, Elastic File System
8.4.2 Service mesh
This section explains how a service mesh adds application-independent traffic capabilities and walks through deploying and testing Istio, cert-manager, and external-dns as platform extensions.
- Service mesh proxy model: Explain how a service mesh uses managed proxies to provide communication capabilities without changing application code, and describe the tradeoff between dedicated and shared proxies.
Why it matters: The proxy model explains how the platform can add traffic features without requiring every application team to build them. - Mesh capability boundaries: Describe the kinds of capabilities the mesh can provide and justify the section's caution about bundling them tightly with the container network.
Why it matters: Keeping capabilities separable helps the platform evolve without making upgrades or security decisions unnecessarily entangled. - Initial ingress extension stack: Trace the distinct jobs of Istio, external-dns, and cert-manager in making an application reachable through a platform-managed HTTPS domain.
Why it matters: Each extension solves a different part of the path from a domain name to an application over HTTPS. - Extension deployment and permissions: Describe how the extensions pipeline prepares AWS permissions and deploys the initial extensions, including why its role test is limited.
Why it matters: The extensions need working cloud permissions before they can manage DNS and certificates. - Istio upgrade tradeoffs: Explain why the starting platform uses in-place Istio upgrades and what operational precautions or follow-up they require.
Why it matters: A simple initial upgrade method still has consequences for application availability and sidecar versions. - Default ingress resources and validation: Describe the default resources and tests that establish whether the newly deployed extensions can deliver HTTPS traffic to an application.
Why it matters: An HTTPS request to a test application checks the combined result rather than merely whether extension pods are running.
Key terms: service mesh, sidecar proxy servers, control plane, Kubernetes Gateway API, CNI, domains of change, zero-trust networking, Istio ingressgateway, external-dns, Route53
8.4.3 Using operators for persistent data platform capabilities
This section explains how operators can make common persistent data resources available through the Kubernetes API, and why infrastructure starter kits do not offer the same platform-service model.
- Operator-backed persistent data resources: Explain how infrastructure operators let developers provision common persistent data resources through the Kubernetes API while platform engineers retain responsibility for their operational lifecycle.
Why it matters: The API can simplify developers’ work without leaving them responsible for operating the underlying infrastructure. - Operator adoption tradeoffs: Justify the section’s cautious approach to operators as an alternative to traditional infrastructure as code.
Why it matters: The potential improvement in developer experience must be weighed against the platform team’s operational learning curve. - Starter kits versus platform services: Distinguish an infrastructure starter kit from a platform capability delivered as a service interface.
Why it matters: A copyable template can speed up provisioning without solving the continuing support problem that a platform service addresses. - Starter kit value and ownership: Explain the lasting value and support cost of infrastructure starter kits, and why the authors recommend separate ownership for them.
Why it matters: Recognizing the ongoing support work helps preserve the platform team’s capacity to build platform services.
Key terms: infrastructure operators, Kubernetes API, persistent data resources, Helm chart, operational lifecycle, operator pattern, traditional IaC, Terraform Operator, infrastructure starter kits, self-serve
8.5 Platform management APIs
The section explains how team-based authorization and lightweight management APIs can give developers self-service access to an engineering platform across its many systems.
- Team-based platform access: Explain why the platform should authorize developers through their teams and let teams manage onboarding and membership rather than requiring individual access requests for each system.
Why it matters: Team-based access removes a recurring source of delay for developers. - Authentication and membership authority: Distinguish authenticating a user from deciding their team-based authorization, and describe the section’s GitHub-team approach and its unresolved source-of-truth question.
Why it matters: Signing in alone does not tell the platform which team resources a developer may use. - Team onboarding configuration: Describe how a known list of platform customer teams could drive standard namespace creation, access bindings, gateways, and necessary membership synchronization.
Why it matters: A customer-team list turns onboarding into repeatable platform configuration rather than manual setup. - Management APIs and integration events: Explain why lightweight management APIs are proposed for integration gaps and how team events can support configuration maintenance, self-healing, and contributions from other technical teams.
Why it matters: These APIs help preserve a unified access experience as tools change and more teams contribute to the platform.
Key terms: development team, authorization, team onboarding, team membership, authentication, source of truth, GitHub teams, OIDC integration, engineering platform customers, standard team namespaces
8.5.1 Managing teams and namespaces for early adopters
This section describes a temporary way to manage early-adopter teams and namespaces before the platform management API is ready.
- Interim team and namespace management: Explain how Epetech can configure a few early-adopter teams and standard namespaces before its management API is ready, and why a simple, non-self-serve approach is sufficient at the alpha stage.
Why it matters: Early adopters can start deploying applications and giving feedback without waiting for the management API.
Key terms: early-adopter teams, standard namespaces, customer management pipeline, management API, alpha stage
8.6 Summary
Where this is used later
- (chapter intro) (chapter 9) · Frames why architecture changes for scale follow an initial stage of platform delivery.
- Scaling the orchestration of control plane services and extensions (chapter 9) · Revisits orchestration of services and extensions as the platform scales.
- Dynamic release pipeline (chapter 9) · Orchestration of control plane service pipelines.
- Scaling the creation of OpenID Connect Assumable Roles (chapter 9) · The use of pipelines to orchestrate control plane services.
- Scaling the control plane roles (chapter 9) · The service mesh whose dynamic routing can support customized traffic flows
- Scaling through platform event streaming (chapter 9) · Builds on event-based integration as the platform scales.
Concepts explained in this chapter
- gateway apiThe Kubernetes Gateway API is a Kubernetes API standard for configuring traffic ingress and routing through role-oriented gateway resources.
- proxyA proxy server is an intermediary that forwards, filters, modifies, or manages network traffic between applications or services.
- service meshA service mesh is an infrastructure layer that manages communication, routing, security, and observability between application services.
- sidecar processA sidecar proxy is a proxy deployed alongside an application workload to handle communication without requiring application-code changes.
- control plane services pipelineA control plane services pipeline is an automated workflow that deploys and tests services managed by a Kubernetes control plane.
- integration testAn integration test evaluates whether multiple software or infrastructure components work together correctly through their real interfaces.
- smoke testA smoke test is a shallow test that checks whether a system or service is broadly operational before deeper testing.
- scalabilityScalability is the ability of a system or organization to handle increasing workload or scope while maintaining required performance and operation.
- ArgoArgo CD is a Kubernetes continuous-delivery tool that synchronizes applications with declarative configuration stored in version control.
- complianceCompliance is adherence to applicable laws, regulations, policies, and prescribed controls.
- data governanceGovernance is the set of policies, controls, and decision processes that direct and constrain organizational technology practices.
- deployment serviceA deployment service is a system component that performs application deployments to a target runtime environment.
- experimentationExperimentation is the systematic evaluation of alternative designs or implementations under realistic conditions to inform decisions.
- observabilityObservability is the ability to determine and explain a software system’s internal state and usefulness from its output data.
- prototypingA prototype is an early interactive or visual representation of a product feature used to explore and evaluate a design.
- secret managementA secrets manager is a system that securely stores, controls access to, and rotates sensitive credentials and configuration values.
- trajectoryTracing is the recording and analysis of request paths and spans across components of a distributed system.
- vulnerability scanningA vulnerability scan is an automated examination of software or artifacts for known security weaknesses.
- authentication and authorizationAuthorization is the determination of whether an authenticated caller is permitted to perform a requested action or access a resource.
- platform management APIA platform management API is a custom service interface that manages engineering-platform configuration or integrations unsupported by existing tools.
- starter kitA language starter kit is a preconfigured set of resources for beginning development in a particular programming language.
- Kubernetes operatorThe operator pattern is a software pattern in which a controller automates the management and lifecycle of resources through an API.
- infrastructure operatorAn infrastructure operator is a controller that provisions and manages infrastructure resources through a platform control-plane API.
- persistent data resourceA persistent data resource is infrastructure that stores or manages data across application restarts, such as a database, message queue, file share, or cache.
- GitHub teamA GitHub team is a named group of GitHub organization members used to manage shared repository access and membership.
- authenticationAuthentication is the process of verifying the identity of a user, service, or automated process.
- integrations APIAn integrations API is a custom service interface that maintains authorization-related configuration in external tools or systems.
- namespace apiA namespace API is an interface that ensures the required team namespaces and their resource configuration exist in designated clusters.
- openid connectOpenID Connect is an identity layer built on OAuth 2.0 that enables clients to verify user identity and obtain standardized identity claims.
- team synchronization eventA team synchronization event is an emitted event carrying team or team-membership changes for consumption by integrated systems.
- control plane extensionA control plane extension is an added capability that extends a system control plane's API or resource-management behavior beyond its existing functionality.
- control plane serviceA control plane service is a control plane application categorized as a service that provides an independently managed capability within the control plane.
- distributed deployment patternA distributed deployment pattern is a deployment arrangement in which independently managed services or extensions each have their own release orchestration pipeline.
- platform extensionA platform extension is a cluster capability that extends the Kubernetes API by exposing a new resource type or developer-configurable experience.
- platform serviceA platform service is a cluster capability deployed as part of standard cluster configuration without exposing a uniquely provisionable resource type to developers.
- engineering platform teamA platform product team is a team responsible for developing and evolving an internal platform product.
- pipelineA pipeline workflow is a defined arrangement of automation steps or jobs that executes as a coordinated process.
- deployment pipelineAn automated deployment pipeline is a tool-driven sequence that builds, validates, and deploys software with minimal manual intervention.
- uptimeHigh availability is the design of a system to maintain service access despite component failures or maintenance.
- preview environmentA preview environment is a nonproduction environment in which a software change can be evaluated before release.
These guides are generated from the text of Manning books by Manning's knowledge graph and link to the sections they draw on. The full books are available on liveBook and at manning.com.
