image
Deploying A Cloud Native Application into Kubernetes
Introduction
Difficulty
Advanced
Duration
1h 26m
Students
1161
Ratings
4.7/5
starstarstarstarstar-half
Description

This training course is designed to help you master the skills of deploying cloud-native applications into Kubernetes.

Observe first hand the end-to-end process of deploying a sample cloud-native application into a Kubernetes cluster. By taking this course you'll not only get to see firsthand the skills required to perform a robust enterprise-grade deployment into Kubernetes, but you'll also be able to apply them yourself as all code and deployment assets are available for you to perform your own deployment:

https://github.com/cloudacademy/voteapp-frontend-react
https://github.com/cloudacademy/voteapp-api-go
https://github.com/cloudacademy/voteapp-k8s

Kubernetes Resources

This training course provides you with in-depth coverage and demonstrations of the following Kubernetes resources:

  1. Namespace
  2. Deployment/ReplicaSet
  3. Pod
  4. Service
  5. Ingress/Ingress Controller
  6. StatefulSet
    1. Persistent Volume
    2. Persistent Volume Claim
    3. Headless Service
  7. NetworkPolicy

Learning Objectives

What you'll learn:

  • Learn and understand the basic principles of deploying cloud-native applications into a Kubernetes cluster
  • Understand how to set up and configure a locally provisioned Kubernetes cluster using Minikube
  • Understand how to work with and configure many of the key Kubernetes cluster resources such as Pods, Deployments, Services, etc.
  • And finally, you’ll learn how to manage deployments and Kubernetes cluster resources through their full lifecycle.

Demonstration

This training course provides you with many hands-on demonstrations where you will observe first hand how to

  • Create and provision a Minikube Kubernetes cluster
  • Install the Cilium CNI plugin
  • Build and deploy Docker containers
  • Create and configure Kubernetes resources using kubectl

Prerequisites

  • A basic understanding of containers and containerization
  • A basic understanding of software development and the software development life cycle
  • A basic understanding of networks and networking

Intended Audience

  • Anyone interested in learning Kubernetes
  • Software Developers interested in Kubernetes containerization, orchestration, and scheduling
  • DevOps Practitioners
Transcript

- [Instructor] Hello and welcome to this CloudAcademy course on deploying a cloud native application into Kubernetes. In this lecture, we'll cover off the course agenda, intended audience, learning objectives, and course prerequisites. I'm really excited to be taking you through this course. 

Kubernetes itself is right now one of the most popular technologies and is the platform of choice for deploying cloud native applications into. Before we start, I would like to introduce myself. My name is Jeremy Cook. I'm one of the trainers here at CloudAcademy, specializing in DevOps. Feel free to connect with either myself or the wider team here at CloudAcademy regarding anything about this course. You can either email myself or the CloudAcademy team at support@cloudacademy.com. 

This training course takes you through the process of a real world cloud native architected web application into a Kubernetes cluster. You'll get to see firsthand the skills required and the techniques used to build and deploy a fully working solution into a Kubernetes cluster. Now, for those unfamiliar with Kubernetes, a quick introduction. "Kubernetes, or in shorter form K8s, is, as described on the Kubernetes home page, an open-source system for automating deployment, scaling, and management of containerized applications. Kubernetes has become the defacto go-to platform for container scheduling and orchestration. It has fast become a highly sought-after skill in the wider IT industry. Having Kubernetes skills is an absolute must for those looking to build and deploy cloud native applications. 

This course, as already mentioned, is going to be centered around demonstrating to you the end-to-end process of deploying a sample cloud native application into a Kubernetes cluster. The sample cloud native application has been designed and built in the previous course, called Building A Cloud Native Application Using React, Go, MongoDB, and Docker. Take a look at it if you're interested in how the internals of the application have been architected. Each of the core components used to build the cloud native application, the frontend, the API, and database have each been containerized, and in this course, will now be deployed into a Kubernetes cluster. The deployment within the cluster will use the following configuration as seen here. Don't worry. We'll dive much deeper into this Kubernetes deployment configuration as the course progresses.

To help you follow along, all of the coding assets as used and demonstrated within this course are hosted within the following three CloudAcademy GitHub repositories. You are encouraged to clone these repositories and perform the same deployment within your own Kubernetes cluster. Don't have a Kubernetes cluster available? No problems. We've got you covered.

The Kubernetes deployment demonstration as used within this course utilizes a Minikube provisioned Kubernetes cluster. Minikube is a fantastic tool for running a Kubernetes cluster locally on your own workstation. I've purposely taken this approach to give yourself the opportunity to follow along, ensuring that you can run a locally-hosted Kubernetes cluster free of charge. Besides, Minikube is just a great solution for prototyping, learning, and testing Kubernetes deployments before you go into production. For those who want to get up and running fast, we've also created a custom public AMI image located in the Oregon region of the AWS cloud, which has all of the prerequisites, including Minikube preinstalled. Spinning up an EC2 instance based on this image will provide you with Minikube ready to roll. With all this in mind and the fact that this course is going to focus on deploying a real world cloud native application, exactly which Kubernetes resources will we use? 

The full list of Kubernetes resources that we'll use, deploy, and setup are shown here. While this doesn't cover all of the available resources that can be used within a Kubernetes cluster, it does cover off the predominant resources that you are likely to use time and again. As we proceed through the course and the deployment, we'll introduce you quickly to each resource and ensure that you understand the fundamentals of working with the resource in question. The intended audience for this course includes anyone interested in learning Kubernetes, software developers interested in Kubernetes containerization, orchestration, and/or scheduling, and DevOps Practitioners. 

By completing this course you will learn and understand the basic principles of deploying cloud native applications into a Kubernetes cluster, understand how to set up and configure a locally-provisioned Kubernetes cluster using Minikube, understand how to work with and configure many of the key Kubernetes cluster resources, such as Pods, Deployments, Services, etc. And finally, you'll learn how to manage deployments and Kubernetes cluster resources through their full lifecycle. 

The following prerequisites will be both useful and helpful for this course. A basic understanding of containers and containerization. A basic understanding of software development and the software development lifecycle. And a basic understanding of networks and networking. 

Okay, the course introduction has now been completed. Go ahead and close this lecture, and we'll see you shortly in the next one.

About the Author
Students
132675
Labs
68
Courses
112
Learning Paths
183

Jeremy is a Content Lead Architect and DevOps SME here at Cloud Academy where he specializes in developing DevOps technical training documentation.

He has a strong background in software engineering, and has been coding with various languages, frameworks, and systems for the past 25+ years. In recent times, Jeremy has been focused on DevOps, Cloud (AWS, Azure, GCP), Security, Kubernetes, and Machine Learning.

Jeremy holds professional certifications for AWS, Azure, GCP, Terraform, Kubernetes (CKA, CKAD, CKS).