Santana.dev
Published on

Skaffold book review

Authors
Skaffold book

I recently read the book Effortless Cloud-Native App Development Using Skaffold by Ashish Choudhary

TLDR: The book is a good tutorial book that shows different uses cases from starting from scratch to integrating tools to the final stage of deployment to production. I highly recommend this book if you are looking for a guided learning experience with skaffold.

This Skaffold book is for cloud-native engineers working with Kubernetes to optimize their DevOps practices. You will need some basic knowledge of Docker, Kubernetes, and Java since the examples use SpringBoot and Jib.

The book has 230 pages split into ten chapters, and these chapters get organized into three sections.

I would highly recommend the book as it's a comprehensive guided tutorial and covers all aspects of the Skaffold tool. The official documentation of Skaffold would benefit from adding this level of documentation to their site. One of the things I find most difficult is reading the reference for the skaffold.yaml.

I was already familiar with Skaffold; I recently gave a talk and set up an example Skaffold project using Knative. This book gave me some tips on improving my demo and clear guidance on why dev and debug modes are separated.

I'm planning on my Knative skaffold example as one of the tools I'm using for my UX research for the Knative UX working group.

In this book, one thing to notice is heavy on using Java and Jib examples. If your using another language like node.js or Go, you would not find specific examples here, but the Skaffold Github repository has an example for all languages.

Here is the table of contents to better understand the topics covered.

Chapter 1, Code, Build, Test, and Repeat - The Application Development Inner Loop, defines the inner loop of application development and its importance. It also compares the inner and outer development loop and covers the typical development workflows for traditional monolith and container-native microservices applications.

Chapter 2, Developing Cloud-Native Applications with Kubernetes – A Developer's Nightmare, explains the problems that developers problems while developing cloud-native applications with Kubernetes.

Chapter 3, Skaffold – Easy-Peasy Cloud-Native Kubernetes Application Development, provides a high-level overview of Skaffold. We will also demonstrate Skaffold's basic features by building and deploying a Spring Boot application.

Chapter 4, Understanding Skaffold's Features and Architecture, explores Skaffold's features and internals by looking at its architecture, workflow, and configuration file, skaffold.yaml.

Chapter 5, Installing Skaffold and Demystifying Its Pipeline Stages, explains Skaffold installation and standard CLI commands used in different pipeline stages.

Chapter 6, Working with Skaffold Container Image Builders and Deployers, explains various tools used to build (Docker, Jib, kaniko, Buildpacks) and deploy (Helm, kubectl, kustomize) container images to Kubernetes with Skaffold.

Chapter 7, Building and Deploying a Spring Boot Application with the Cloud Code Plugin, introduces you to the Cloud Code plugin developed by Google. It explains how to build and deploy a Spring Boot application to a Kubernetes cluster using the Cloud Code plugin with an IDE such as IntelliJ.

Chapter 8, Deploying a Spring Boot Application to Google Kubernetes Engine Using Skaffold, explains how you can deploy a Spring Boot application to Google Kubernetes Engine, a managed Kubernetes service provided by Google Cloud Platform with Skaffold.

Chapter 9, Creating a Production-Ready CI/CD Pipeline with Skaffold, explains how to create a production-ready continuous integration and deployment pipeline of a Spring Boot application using Skaffold and GitHub actions.

Chapter 10, Exploring Skaffold Alternatives, Best Practices, and Pitfalls, looks at Skaffold alternative tools such as Telepresence and covers Skaffold best practices and traps.

I would highly recommend the book as it's a comprehensive guided tutorial and covers all aspects of the Skaffold tool. The official documentation of Skaffold would benefit from adding this level of documentation to their site. One of the things I find most difficult is reading the reference for the skaffold.yaml.

PS: This blog post was authored on my iPad with magic Keyboard using github.dev. The exeprience was not that bad.