Platform Engineering on Kubernetes

Book description

Empower your team with platforms built on top of Kubernetes using open source tools.

Adopting Kubernetes is complex—especially when you’re working in an organization with multiple teams, deploying to multiple cloud providers, and working with different stacks. Platform Engineering on Kubernetes shows you how to solve these common cloud native problems with open-source tools and emerging best practices from the Kubernetes community.

In Platform Engineering on Kubernetes you will learn about:

  • The principles behind platform engineering and how these apply to Kubernetes
  • Evaluating and adopting open-source projects to build domain specific platforms
  • Creating Platform APIs to enable teams to release more software more efficiently
  • Reducing the cognitive load of a platform for your teams
  • Measuring your platform initiatives using established software delivery metrics
  • Package, version, distribute, and deploy with Helm, Tekton, Dagger and Argo CD
  • Implement a multi-cloud infrastructure strategy using Crossplane
  • Progressive upgrades with Knative Serving and Argo Rollouts
  • Enable development teams with standard application-level APIs with Dapr

A platform helps your team stay focused on delivering amazing software. But building a reliable platform on top of Kubernetes demands real expertise. Platform Engineering on Kubernetes reveals how to combine multiple popular open-source projects into a custom platform that works for your applications and your teams. It’s the perfect guide for your organization’s journey to Kubernetes, simplifying cloud native development for your dev teams and helping them deliver software faster.

About the Technology
Kubernetes is an amazing orchestration tool, but it’s just the start of your journey to the cloud. To efficiently deliver cloud-native software, your team needs a solid build pipeline, an efficient package manager and distribution mechanism, and APIs that reduce your team’s cognitive load. This book will show you how to build custom platforms on top of Kubernetes—all with open-source tools such as Dapr, Knative, Argo CD and Rollouts, and Tekton.

About the Book
Platform Engineering on Kubernetes starts by clearly defining the elements of a great Kubernetes-based platform. Then, it systematically introduces the tools you’ll need to build a platform that exactly matches your organization’s requirements. Hands-on examples and detailed code guide you through each step. By the end, you’ll be able to create a complete platform to efficiently deliver cloud-native software without being tied to a specific cloud provider or vendor.

What's Inside
  • Package, version, distribute, and deploy with Helm, Tekton, Dagger and Argo CD
  • Implement a multi-cloud infrastructure strategy using Crossplane
  • Progressive upgrades with Knative Serving and Argo Rollouts
  • Enable development teams with standard application-level APIs with Dapr


About the Reader
For developers and software architects familiar with the basics of containers and Kubernetes.

About the Author
Mauricio Salatino is currently a Dapr OSS Contributor, a Knative Steering Committee member, and co-lead of the Knative Functions working group.

Quotes
An engaging and captivating hands-on exploration of the CNCF landscape through the prism of platform engineering.
- Viktor Farcic, Upbound/@DevOpsToolkit

The book is a reflection of a mountain of personal experience and the author’s own journey on the windy paths of cloud native.
- Andreas Grabner, Dynatrace

Brims with Mauricio’s unique experience, insights, and deep understanding.
- Thomas Vitale, Systematic

For anyone looking to build a modern, cloud native development platform on Kubernetes. An indispensable guide.
- Lance Ball, Red Hat

A comprehensive exploration of platform engineering.
- Carlos Santana, AWS

Table of contents

  1. Platform Engineering on Kubernetes
  2. Copyright
  3. dedication
  4. contents
  5. front matter
    1. foreword
    2. preface
    3. acknowledgments
    4. about this book
      1. How this book is organized: a roadmap
      2. About the code
      3. liveBook discussion forum
    5. about the author
    6. about the cover illustration
  6. 1 (The rise of) platforms on top of Kubernetes
    1. 1.1 What is a platform, and why do I need one?
      1. 1.1.1 Cloud services and domain-specific needs
      2. 1.1.2 Your job as an organization
      3. 1.1.3 Working with cloud platforms
      4. 1.1.4 GCP dashboard, CLIs, and APIs
      5. 1.1.5 Why do cloud providers work?
    2. 1.2 Platforms built on top of Kubernetes
      1. 1.2.1 The Kubernetes adoption journey
      2. 1.2.2 The CNCF Landscape puzzle
    3. 1.3 Platform engineering
      1. 1.3.1 Why can’t I just buy a platform?
    4. 1.4 The need for a walking skeleton
      1. 1.4.1 Building a Conference application
      2. 1.4.2 Differences between a monolith and a distributed set of services
      3. 1.4.3 Our walking skeleton and building platforms
    5. Summary
  7. 2 Cloud-native application challenges
    1. 2.1 Running our cloud-native applications
      1. 2.1.1 Choosing the best Kubernetes environment for you
      2. 2.1.2 Installing the walking skeleton
    2. 2.2 Installing the Conference application with a single command
      1. 2.2.1 Verifying that the application is up and running
      2. 2.2.2 Interacting with your application
    3. 2.3 Inspecting the walking skeleton
      1. 2.3.1 Kubernetes deployments basics
      2. 2.3.2 Exploring deployments
      3. 2.3.3 ReplicaSets
      4. 2.3.4 Connecting services
      5. 2.3.5 Exploring services
      6. 2.3.6 Service discovery in Kubernetes
      7. 2.3.7 Troubleshooting internal services
    4. 2.4 Cloud-native application challenges
      1. 2.4.1 Downtime is not allowed
      2. 2.4.2 Service’s resilience built-in
      3. 2.4.3 Dealing with the application state is not trivial
      4. 2.4.4 Dealing with inconsistent data
      5. 2.4.5 Understanding how the application is working
      6. 2.4.6 Application security and identity management
      7. 2.4.7 Other challenges
    5. 2.5 Linking back to platform engineering
    6. Summary
  8. 3 Service pipelines: Building cloud-native applications
    1. 3.1 What does it take to deliver cloud-native applications continuously?
    2. 3.2 Service pipelines
    3. 3.3 Conventions that will save you time
    4. 3.4 Service pipeline structure
      1. 3.4.1 Service pipeline in real life
      2. 3.4.2 Service pipeline requirements
      3. 3.4.3 Opinions, limitations, and compromises around service pipelines
    5. 3.5 Service pipelines in action
      1. 3.5.1 Tekton in action
      2. 3.5.2 Pipelines in Tekton
      3. 3.5.3 Tekton advantages and extras
      4. 3.5.4 Dagger in action
      5. 3.5.5 Should I use Tekton, Dagger, or GitHub Actions?
    6. 3.6 Linking back to platform engineering
    7. Summary
  9. 4 Environment pipelines: Deploying cloud-native applications
    1. 4.1 Environment pipelines
      1. 4.1.1 How did this work in the past, and what has changed lately?
      2. 4.1.2 What is GitOps, and how does it relate to environment pipelines?
      3. 4.1.3 Steps involved in an environment pipeline
      4. 4.1.4 Environment pipeline requirements and different approaches
    2. 4.2 Environment pipelines in action
      1. 4.2.1 Creating an Argo CD application
      2. 4.2.2 Dealing with changes the GitOps way
    3. 4.3 Service + environment pipelines
    4. 4.4 Linking back to platform engineering
    5. Summary
  10. 5 Multi-cloud (app) infrastructure
    1. 5.1 The challenges of managing infrastructure in Kubernetes
      1. 5.1.1 Managing your application infrastructure
      2. 5.1.2 Connecting our services to the newly provisioned infrastructure
      3. 5.1.3 I’ve heard about Kubernetes operators. Should I use them?
    2. 5.2 Declarative infrastructure using Crossplane
      1. 5.2.1 Crossplane providers
      2. 5.2.2 Crossplane compositions
      3. 5.2.3 Crossplane components and requirements
      4. 5.2.4 Crossplane behaviors
    3. 5.3 Infrastructure for our walking skeleton
      1. 5.3.1 Connecting our services with the new provisioned infrastructure
    4. 5.4 Linking back to platform engineering
    5. Summary
  11. 6 Let’s build a platform on top of Kubernetes
    1. 6.1 The importance of the platform APIs
      1. 6.1.1 Requesting development environments
    2. 6.2 Platform architecture
      1. 6.2.1 Platform challenges
      2. 6.2.2 Managing more than one cluster
      3. 6.2.3 Isolation and multi-tenancy
    3. 6.3 Our platform walking skeleton
      1. 6.3.1 vcluster for virtual Kubernetes clusters
      2. 6.3.2 The platform experience
    4. 6.4 Linking back to platform engineering
    5. Summary
  12. 7 Platform capabilities I: Shared application concerns
    1. 7.1 What are most applications doing 95% of the time?
      1. 7.1.1 The challenges of coupling application and infrastructure
      2. 7.1.2 Service-to-service interaction challenges
      3. 7.1.3 Storing/reading state challenges
      4. 7.1.4 Asynchronous messaging challenges
      5. 7.1.5 Dealing with edge cases (the remaining 5%)
    2. 7.2 Standard APIs to separate applications from infrastructure
      1. 7.2.1 Exposing platform capabilities challenges
    3. 7.3 Providing application-level platform capabilities
      1. 7.3.1 Dapr in action
      2. 7.3.2 Dapr in Kubernetes
      3. 7.3.3 Dapr and your applications
      4. 7.3.4 Feature flags in action
      5. 7.3.5 Updating our Conference application to consume application-level platform capabilities
    4. 7.4 Linking back to platform engineering
    5. Summary
  13. 8 Platform capabilities II: Enabling teams to experiment
    1. 8.1 Release strategies fundamentals
      1. 8.1.1 Canary releases
      2. 8.1.2 Blue/green deployments
      3. 8.1.3 A/B testing
      4. 8.1.4 Limitations and complexities of using built-in Kubernetes building blocks
    2. 8.2 Knative Serving: Advanced traffic management and release strategies
      1. 8.2.1 Knative Services: Containers-as-a-Service
      2. 8.2.2 Advanced traffic-splitting features
    3. 8.3 Argo Rollouts: Release strategies automated with GitOps
      1. 8.3.1 Argo Rollouts canary rollouts
      2. 8.3.2 Argo Rollouts blue/green deployments
      3. 8.3.3 Argo Rollouts analysis for progressive delivery
      4. 8.3.4 Argo Rollouts and traffic management
    4. 8.4 Linking back to platform engineering
    5. Summary
  14. 9 Measuring your platforms
    1. 9.1 What to measure: DORA metrics and high-performant teams
      1. 9.1.1 The integration problem
    2. 9.2 How to measure our platform: CloudEvents and CDEvents
      1. 9.2.1 CloudEvents for continuous delivery: CDEvents
      2. 9.2.2 Building a CloudEvents-based metrics collection pipeline
      3. 9.2.3 Data collection from event sources
      4. 9.2.4 Knative Eventing event sources
      5. 9.2.5 Data transformation to CDEvents
      6. 9.2.6 Metrics calculation
      7. 9.2.7 Working example
    3. 9.3 Keptn Lifecycle Toolkit
    4. 9.4 What’s next on the platform engineering journey?
    5. 9.5 Final thoughts
    6. Summary
  15. index

Product information

  • Title: Platform Engineering on Kubernetes
  • Author(s): Mauricio Salatino
  • Release date: January 2024
  • Publisher(s): Manning Publications
  • ISBN: 9781617299322