Ardan Labs Live in London (Nov 1 - 4, 2022)

4 In-Person Ultimate Go and K8s Workshops - Ardan Labs Live in London in partnership with Utility Warehouse.

DATES

Nov 1, 2022, from 9 AM to 6 PM
Workshop: Hands-on Introduction to Kubernetes
Instructor: David Flanagan
Level: Beginner - Intermediate

Nov 2, 2022, from 9 AM to 6 PM
Workshop: Deploying Real World Applications to Kubernetes
Instructor: David Flanagan
Level: Intermediate - Advanced

Nov 3, 2022, from 9 AM to 6 PM
Workshop: Ultimate Go: Service with Kubernetes
Instructor: Bill Kennedy
Level: Beginner - Intermediate

Nov 4, 2022, from 9 AM to 6 PM
Workshop: Ultimate Go: Advanced Engineering
Instructor: Bill Kennedy
Level: Intermediate - Advanced

WORKSHOPS

Session 1 – Hands-on Introduction to Kubernetes

Summary

Kubernetes, the flagship project from the Cloud Native Foundation, has become the de-facto standard for running our container workloads. Unfortunately, Kubernetes is a fast-moving, ever-evolving, sea of complexity. From Pods to Deployments, ConfigMaps to Secrets, and PersistantVolumeClaims to StatefulSets; this training will get you on-course.

In this full-day training class, David will walk you through a series of labs that will teach you everything you need to know to take your container-based application and deploy it as a self-healing, redundant and resilient application on top of Kubernetes.

What a student is expected to learn

How Kubernetes Works

  • Control Plane
  • Controllers
  • Scheduler

Kubernetes Primitives

  • Deployments, ReplicaSets, & Pods
  • Services
  • ConfigMaps
  • Secrets
  • Namespaces

Stateful Workloads

  • Persistent Volume
  • StatefulSets

Multi-Container Patterns

  • Init-containers
  • Sidecars
  • Mac/Windows: Docker Desktop
  • Linux: Docker Desktop, Minikube, or KinD
  • Computers should be capable of modern software development, such as access to install and run binaries, install a code editor, etc.
  • Sign up for a GitHub account, if you do not already have one

Pre-Install

  • Please review this link for the tooling you should have installed before you come to class. Install Requirements
  • Please make sure the following images have been pulled from DockerHub
  • Nginx: latest, postgres:14-alpine, alpine:3.16
  • For Docker Desktop, please ensure Kubernetes is enabled

Session 2 – Deploying Production Applications to Kubernetes

Summary

Following on from our “Hands-on Introduction to Kubernetes”, this training class will build on-top of the Kubernetes primitives and show you how to run and operate a production application on Kubernetes.

This class dives into the different deployment strategies for testing new releases in a production environment with automatic rollbacks. As well as securing and protecting your data and applications from malicious users with strict network policies and runtime configuration. Also takes a look at the tools available to improve your deployment pipeline with templates, packages, and a Git focused delivery pipeline known as “GitOps”.

What a student is expected to learn

Production Grade Deployments:

  • Rollout Strategies
  • Affinities & Taints
  • Probes
  • Resource Management (Requests + Limits)

Security:

  • Network Policies
  • Runtime Security
  • Contexts
  • Capabilities
  • Profiles

Deploying to Kubernetes with:

  • Helm
  • Kustomize
  • CDK8s

GitOps:

  • CI/CD in a Kubernetes environment
  • Mac/Windows: Docker Desktop
  • Linux: Docker Desktop, Minikube, or KinD
  • Computers should be capable of modern software development, such as access to install and run binaries, install a code editor, etc.
  • Sign up for a GitHub account, if you do not already have one

Pre-Install

  • Please make sure the following images have been pulled from DockerHub
  • Nginx:latest, postgres:14-alpine, alpine:3.16
  • For Docker Desktop, please ensure Kubernetes is enabled

Session 3 - Ultimate Go: Service with Kubernetes

Summary

This class teaches how to build production-level services in Go with a focus on macro-level engineering decisions. From the beginning you will pair program with the instructor, walking through the design philosophies and guidelines used to engineer the code. With each new feature, you will learn more about the transition from programming to engineering and the points of refactoring required to write production-level applications. Throughout the class, Go modules and Kubernetes will be a focus. Everyone will be making better engineering decisions after this class.

What a student is expected to learn

  • Service Design and Engineering
  • Web Design and Engineering
  • Go Modules
  • Project Setup and Structure
  • Kubernetes For Developers
  • Logging and Configuration
  • Web Framework with Middleware
  • Error Handling
  • Install and configure an editor for Go
  • Have a functioning Go environment installed with Go 1.18 or later
  • Sign up for a GitHub account, if you do not already have one
  • Computers should be capable of modern software development, such as access to install and run binaries, install a code editor, etc.

Pre-Install

  • Please review this link for the tooling you should have installed before you come to class. See Requirements

  • Please make sure the following images have been pulled from DockerHub – golang:1.19, postgres:14-alpine, alpine:3.16, kindest/node:v1.24.0

Session 4 - Ultimate Go: Advanced Engineering

Summary

Learn advanced Go concepts by building a reference implementation of a blockchain in Go. The goal of this full-day workshop is to share how to code complex engineering tasks required to build a blockchain technology. From the beginning, you will pair program with the instructor, walking through the design philosophies and guidelines used to engineer the code. Throughout the class, you will learn more about Go and the advanced engineering features of the language. Check out the Ardan blockchain project on GitHub.

What a student is expected to learn

  • Service Design and Engineering
  • Digital accounts with electronic signatures and verification
  • Transaction distribution and synchronization between computers
  • Redundant storage of a single ledger on different computers
  • Consensus by different computers to process and store new transactions
  • Detection of any forgery of past transactions

Suggested Reading

Pre-Install

  • Install and configure an editor for Go
  • Have a functioning Go environment installed with Go 1.18 or later
  • Sign up for a GitHub account, if you do not already have one
  • Computers should be capable of modern software development, such as access to install and run binaries, install a code editor, etc.

ABOUT THE INSTRUCTORS

David Flanagan

David is a Kubernetes contributor, host of the Kubernetes Office Hours live stream, and Rawkode Academy’s education channel on YouTube. For nearly 20 years, David has been developing software professionally where he started with embedded systems written in C back in 2004. Since then he has spent time learning the paradigms of different programming languages, such as C++, PHP, Java, and Haskell. More recently David prefers to program in Go, Rust, and Pony.

William Kennedy

Bill is a managing partner at Ardan Labs in Miami, Florida, a group of passionate engineers, artists, and business professionals focused on building and delivering reliable, secure, and scalable solutions. He is also a co-author of the book Go in Action, the author of the blog GoingGo.Net, and a founding member of GoBridge which is working to increase Go adoption through diversity.