Unlike my other books where I typically dive into a single tool or a single process, this time, I chose a different approach. Instead of going to great lengths trying to help someone become proficient in one thing, this time, I am trying to give you a quick introduction into many different tools and processes. We will skip the potentially lengthy discussions and in-depth exercises. What I want, this time, is to help you make decisions. Which tool works the best for a given task? What should we explore in more depth, and what is a waste of time? The goal is not to learn everything about a tool in detail but rather to dive into many concepts and a plethora of tools right away. The aim is to get you up-to-speed fast while producing useful "real world" results. Think of each chapter as a crash-course into something with the outcome that you can use right away.
I will assume that you don't have time to read hundreds of pages to learn something that you are not even sure is useful. Instead, I will guess that you got up to one hour to read a summary, and then decide if a tool is worthwhile a more significant investment.
This is a catalog of the tools, and the processes I believe are useful in this day and age. I will try to transfer what I think works well and what might have been the right choice in the past but is not optimal anymore.
Nevertheless, even if the scope of this book is different than others, some things are still the same. This is not a book with lots of theory. Sure, there will be some text you might need to read, but most of the content consists of hands-on exercises. I always believed that the best way to learn something is through practice, and I am not giving up on that. This is a book full of real-world hands-on examples, and each chapter will let you dive into a different tool or a process. At the end of each, you will be able to say, "now I know what this is about, and now I can make a decision whether it is a worthwhile investment."
Think of this book as a catalog, combined with patterns and blueprints.
Author(s): Viktor Farcic, Darin Pope
Series: The DevOps Toolkit
Edition: 1 (30.12.2020)
Publisher: Leanpub
Year: 2020
Language: English
Pages: 413
Table of Contents
Introduction
I Need Your Help
Who Are We?
About The Requirements
Off We Go
Infrastructure as Code (IaC)
Going Back In Time
Back To Present
Using Terraform To Manage Infrastructure As Code (IaC)
What Are We Going To Do?
Creating And Managing Google Kubernetes Engine (GKE) Clusters With Terraform
Preparing For The Exercises
Exploring Terraform Variables
Creating The Credentials
Defining The Provider
Storing The State In A Remote Backend
Creating The Control Plane
Exploring Terraform Outputs
Creating Worker Nodes
Upgrading The Cluster
Reorganizing The Definitions
Destroying The Resources
Creating And Managing AWS Elastic Kubernetes Service (EKS) Clusters With Terraform
Preparing For The Exercises
Exploring Terraform Variables
Creating The Credentials
Storing The State In A Remote Backend
Creating The Control Plane
Exploring Terraform Outputs
Creating Worker Nodes
Upgrading The Cluster
Reorganizing The Definitions
Destroying The Resources
Creating And Managing Azure Kubernetes Service (AKS) Clusters With Terraform
Preparing For The Exercises
Exploring Terraform Variables
Creating The Credentials
Storing The State In A Remote Backend
Creating The Control Plane
Exploring Terraform Outputs
Creating Worker Nodes
Upgrading The Cluster
Dealing With A Bug That Prevents Upgrade Of Node Pools
Reorganizing The Definitions
Destroying The Resources
Packaging, Deploying, And Managing Applications
Using Helm As A Package Manager For Kubernetes
Defining A Scenario
Preparing For The Exercises
Creating Helm Charts
Adding Application Dependencies
Deploying Applications To Production
Deploying Applications To Development And Preview Environments
Deploying Applications To Permanent Non-Production Environments
Packaging And Deploying Releases
Rolling Back Releases
What Did We Do Wrong?
Destroying The Resources
Using Helm As A Package Manager For Kubernetes
Defining A Scenario
Preparing For The Exercises
Creating Helm Charts
Adding Application Dependencies
Deploying Applications To Production
Deploying Applications To Development And Preview Environments
Deploying Applications To Permanent Non-Production Environments
Packaging And Deploying Releases
Rolling Back Releases
What Did We Do Wrong?
Destroying The Resources
Setting Up A Local Development Environment
Which Operating System Is The Best For Laptops?
Installing Windows Subsystem For Linux (WSL)
Choosing A Shell
A Short Intermezzo
Choosing An IDE And A Terminal
Using Oh My Zsh To Configure Z Shell
Going For A Test Drive With Oh My Zsh
What Should We Do Next?
There Is More
Exploring Serverless Computing
Using Managed Functions As A Service (FaaS)
Deploying Google Cloud Functions (GCF)
Deploying Azure Functions (AF)
Deploying AWS Lambda
To FaaS Or NOT To FaaS?
Choosing The Best Managed FaaS Provider
Personal Thoughts About Managed FaaS
Using Managed Containers As A Service (CaaS)
Discussing The ``Real'' Expectations
Deploying Applications To Google Cloud Run
Deploying Applications To Amazon Elastic Container Service (ECS) With Fargate
Deploying Applications To Azure Container Instances
To CaaS Or NOT To CaaS?
Personal Thoughts About Managed CaaS
Using Self-Managed Containers As A Service (CaaS)
Using Knative To Deploy And Manage Serverless Workloads
Self-Managed Vs. Managed CaaS
There Is More About Serverless
Using Centralized Logging
About Vadim
Why Not Using The ELK Stack?
Using Loki To Store And Query Logs
Destroying The Resources
Deploying Applications Using GitOps Principles
Discussing Deployments And Environments
Off We Go
Applying GitOps Principles Using Argo CD
Installing And Configuring Argo CD
Deploying An Application With Argo CD
Defining Whole Environments
Creating An Environment As An Application Of Applications
Updating Applications Through GitOps Principles
Destroying The Resources
There Is More About GitOps
Applying Progressive Delivery
Using Argo Rollouts To Deploy Applications
Installing And Configuring Argo Rollouts
Exploring Argo Rollouts Definitions
Deploying The First Release
Deploying New Releases Using The Canary Strategy
Rolling Back New Releases
Exploring Prometheus Metrics And Writing Rollout Queries
Exploring Automated Analysis
Deploying Releases With Fully Automated Steps
What Happens Now?
This Is NOT The End