Four-Project Series

Deploy Services Using Kubernetes you own this product

'); $(document.body).append('
loading reading lists ...
'); function adjustReadingListIcon(isInReadingList){ $readingListToggle.toggleClass("fa-plus", !isInReadingList); $readingListToggle.toggleClass("fa-check", isInReadingList); var tooltipMessage = isInReadingList ? "edit in reading lists" : "add to reading list"; $readingListToggle.attr("title", tooltipMessage); $readingListToggle.attr("data-original-title", tooltipMessage); } $.ajax({ url: "/readingList/isInReadingList", data: { productId: 3545 } }).done(function (data) { adjustReadingListIcon(data && data.hasProductInReadingList); }).catch(function(e){ console.log(e); adjustReadingListIcon(false); }); $readingListToggle.on("click", function(){ if(codePromise == null){ showToast() } loadCode().then(function(store){ store.requestReadingListSpecificationForProduct({ id: window.readingListsServerVars.externalId, manningId: window.readingListsServerVars.productId, title: window.readingListsServerVars.title }); ReadingLists.ReactDOM.render( ReadingLists.React.createElement(ReadingLists.ManningOnlineReadingListModal, { store: store, }), document.getElementById("reading-lists-modal") ); }).catch(function(e){ console.log("Error loading code reading list code"); }); }); var codePromise var readingListStore function loadCode(){ if(codePromise) { return codePromise } return codePromise = new Promise(function (resolve, reject){ $.getScript(window.readingListsServerVars.libraryLocation).done(function(){ hideToast() readingListStore = new ReadingLists.ReadingListStore( new ReadingLists.ReadingListProvider( new ReadingLists.ReadingListWebProvider( ReadingLists.SourceApp.marketplace, getDeploymentType() ) ) ); readingListStore.onReadingListChange(handleChange); readingListStore.onReadingListModalChange(handleChange); resolve(readingListStore); }).catch(function(){ hideToast(); console.log("Error downloading reading lists source"); $readingListToggle.css("display", "none"); reject(); }); }); } function handleChange(){ if(readingListStore != null) { adjustReadingListIcon(readingListStore.isInAtLeastOneReadingList({ id: window.readingListsServerVars.externalId, manningId: window.readingListsServerVars.productId })); } } var $readingListToast = $("#reading-list-toast"); function showToast(){ $readingListToast.css("display", "flex"); setTimeout(function(){ $readingListToast.addClass("shown"); }, 16); } function hideToast(){ $readingListToast.removeClass("shown"); setTimeout(function(){ $readingListToast.css("display", "none"); }, 150); } function getDeploymentType(){ switch(window.readingListsServerVars.deploymentType){ case "development": case "test": return ReadingLists.DeploymentType.dev; case "qa": return ReadingLists.DeploymentType.qa; case "production": return ReadingLists.DeploymentType.prod; case "docker": return ReadingLists.DeploymentType.docker; default: console.error("Unknown deployment environment, defaulting to production"); return ReadingLists.DeploymentType.prod; } } }); } });
prerequisites
Basics of Docker • bash scripting
skills learned
deploying applications on Kubernetes locally • deploying applications on Kubernetes running on AWS using GitOps
Chris Richardson
4 weeks &middot 6-8 hours per week average &middot INTERMEDIATE

pro $24.99 per month

  • access to all Manning books, MEAPs, liveVideos, liveProjects, and audiobooks!
  • choose one free eBook per month to keep
  • exclusive 50% discount on all purchases

lite $19.99 per month

  • access to all Manning books, including MEAPs!

team

5, 10 or 20 seats+ for your team - learn more


E-commerce takeout company FTGO is ready to move to a microservices-based architecture. In this liveProject series, you’ll be helping them overcome one of the biggest hurdles: deploying all their services to Kubernetes. Stepping into FTGO’s senior architect role, you’ll start by deploying the app’s key infrastructure services, including PostgreSQL and Apache Kafka, on a Kubernetes cluster running on your laptop. From there, you’ll use the Helm package manager for Kubernetes to package the applications and Flux, a GitOps tool, to deploy your services. Finally, you’ll create an AWS EKS cluster and deploy the services to the cloud. When you’re done, you’ll have accomplished one of the most challenging—and most lucrative—tasks you can undertake as a developer! While you'll utilize Java/Kotlin tooling in these liveProjects, the skills you learn can be applied to any language.


This liveProject series utilizes the paid services of AWS and may require you to utilize the paid features of GitHub Actions.
These projects are designed for learning purposes and are not complete, production-ready applications or solutions.

“A complex topic, handled well. Chris has done great work in simplifying things, and with a little bit of extra assistance from the enclosed resources you will be able to develop good understanding of OPS pipeline.”

Amarjit Bhandal, Freelancer

here's what's included

Project 1 Run Services Locally with Kind

In this liveProject, you’ll help takeout delivery company FTGO Inc. take their first steps in moving to a microservices-based architecture. You’ll begin by creating Kubernetes manifests that enable you to deploy your services and their required infrastructures, such as databases, within a cluster environment. You'll use the package manager Helm to seamlessly install and manage infrastructure services like Postgres and Apache Kafka and use kind (Kubernetes in Docker) to create a local Kubernetes cluster that runs on your machine. Finally, you’ll see how GitHub Actions can automate your testing process.

Project 2 Package Services as Helm Charts

Takeout company FTGO has a problem with its Kubernetes-based application—its services are still deployed using vanilla Kubernetes manifests. This makes it hard to tailor services to environments and automatically declare a service’s dependencies. You’ve stepped in to help them—by utilizing Helm, a Kubernetes package manager. You’ll get hands-on experience creating Helm charts for services, configuring deployment pipelines to seamlessly publish them to Helm repositories, and mastering the art of deploying and upgrading services packaged as Helm charts.

Project 3 GitOps Continuous Deployment

Takeout e-commerce company FTGO currently manages their Kubernetes microservices deployments from the command line. So there’s no record of who has deployed what, and it’s very difficult to reproduce past states. Your goal in this liveProject is to help them with a GitOps-based continuous deployment pipeline for their platform. You’ll utilize Flux to establish and build your pipeline and configure the Flagger tool to use the traffic management features of the Linkerd service mesh.

Project 4 Run Services on AWS EKS

FGTO is almost ready to deploy their Kubernetes application—they just need you to help them create a Kubernetes cluster for their production environment. The simplest and most reliable way to do this is to use a managed Kubernetes service, and for this liveProject, you’ll use AWS EKS. You’ll work with various tools, including Terraform and Crossplane, to create and configure the cluster. Terraform helps you configure your cluster with just a small amount of code, while Crossplane ensures you can provision the service and its infrastructure using only Kubernetes manifests. Once the application is deployed, you’ll work to encrypt secrets in Git using SOPS and AWS KMS and promote changes from development to production on EKS. When you’re done, FGTO will have a complete working Kubernetes deployment!


This liveProject utilizes the paid services of AWS and may require you to utilize the paid features of GitHub Actions.

book resources

When you start each of the projects in this series, you'll get full access to the following book for 90 days.

choose your plan

team

monthly
annual
$49.99
$399.99
only $33.33 per month
  • five seats for your team
  • access to all Manning books, MEAPs, liveVideos, liveProjects, and audiobooks!
  • choose another free product every time you renew
  • choose twelve free products per year
  • exclusive 50% discount on all purchases
  • Deploy Services Using Kubernetes project for free

“It outline[s] a comprehensive path that covers a broad spectrum of essential practices and tools for modern cloud-native development and deployment on AWS EKS”

project author

Chris Richardson

Chris Richardson is the author of Manning bestseller Microservices Patterns as well as POJOs in Action, which describes how to build enterprise Java applications with frameworks such as Spring and Hibernate. He’s a developer, an architect, and the creator of Microservices.io, a pattern language for microservices. He is also a Java Champion, a JavaOne rockstar, and the founder of the original CloudFoundry.com, an early Java PaaS for Amazon EC2. He provides microservices consulting and training to organizations that adopt a microservice architecture and is working on his third startup, Eventuate, an application platform for developing transactional microservices. He is a recognized thought leader in microservices and speaks regularly at international conferences.

Prerequisites

This liveProject series is for developers familiar with Java and/or Kotlin who are taking their first steps into learning Kubernetes.


TOOLS
  • Basics of Kubernetes
  • Basics of Helm
  • Basics of Bash scripting

features

Self-paced
You choose the schedule and decide how much time to invest as you build your project.
Project roadmap
Each project is divided into several achievable steps.
Get Help
While within the liveProject platform, get help from other participants and our expert mentors.
Compare with others
For each step, compare your deliverable to the solutions by the author and other participants.
book resources
Get full access to select books for 90 days. Permanent access to excerpts from Manning products are also included, as well as references to other resources.
RECENTLY VIEWED