<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Academy on Example Academy</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/</link><description>Recent content in Academy on Example Academy</description><generator>Hugo</generator><language>en</language><atom:link href="https://layer5io.github.io/layer5-academy/pr-preview/pr-202/index.xml" rel="self" type="application/rss+xml"/><item><title>Characteristics of the Pre-DevOps Era</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/introduction-to-devops-and-sre/pre-devops/characteristics/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/introduction-to-devops-and-sre/pre-devops/characteristics/</guid><description>&lt;h3 id="key-characteristics-of-the-pre-devops-era" class="heading-link">
 Key Characteristics of the Pre-DevOps Era
 &lt;a href="#key-characteristics-of-the-pre-devops-era" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>The pre-DevOps era in software development was a starkly different landscape than what we see today. It was a time of siloed teams, rigid methodologies, and a lot of manual work, which often led to slow and unreliable software delivery.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Waterfall Model&lt;/strong>
The dominant methodology was the &lt;a href="https://en.wikipedia.org/wiki/Waterfall_model">Waterfall model&lt;/a>, a linear approach where each stage had to be completed before moving on to the next. This made it difficult to adapt to changes and respond quickly to new requirements.&lt;/li>
&lt;li>&lt;strong>Siloed Teams&lt;/strong>
Developers, testers, and operations teams worked independently, often with little communication or collaboration. This created a &amp;ldquo;throw it over the wall&amp;rdquo; mentality, where each team blamed the other for problems.&lt;/li>
&lt;li>&lt;strong>Manual Processes&lt;/strong>
Most tasks, from testing to deployment, were done manually. This was time-consuming and error-prone, leading to delays and inconsistencies.&lt;/li>
&lt;li>&lt;strong>Limited Automation&lt;/strong>
There were few tools available to automate repetitive tasks, making it difficult to scale software development.&lt;/li>
&lt;li>&lt;strong>Slow and Unreliable Delivery&lt;/strong>
Releases were infrequent and often buggy, causing frustration for both developers and users.
Next, let’s take a look at some specific examples of the challenges faced in the pre-DevOps era.&lt;/li>
&lt;/ul></description></item><item><title>CI/CD Overview</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/ci-cd/cicd/overview/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/ci-cd/cicd/overview/</guid><description>&lt;h3 id="continuous-delivery" class="heading-link">
 Continuous Delivery
 &lt;a href="#continuous-delivery" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>&lt;a href="https://www.atlassian.com/continuous-delivery/principles">Continuous Delivery (CD)&lt;/a> is a software development practice that aims to automate the process of releasing software changes to production environments in a frequent and reliable manner. It builds upon the concept of Continuous Integration (CI) by extending the automated pipeline to include deployment and release processes. In continuous delivery, the goal is to have software in a state where it can be released to production at any given time.&lt;/p></description></item><item><title>DevOps and Site Reliability Engineering</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/introduction-to-devops-and-sre/what-is-devops/introduction/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/introduction-to-devops-and-sre/what-is-devops/introduction/</guid><description>&lt;p>&lt;a href="https://en.wikipedia.org/wiki/DevOps">DevOps&lt;/a> (Development + Operations) is a set of practices, principles, and cultural philosophies that aim to enhance collaboration and communication between software development (Dev) and IT operations (Ops) teams. The primary goal is to automate and streamline the processes of software delivery and infrastructure changes, fostering a culture of continuous improvement and faster, more reliable releases.&lt;/p>
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Site_reliability_engineering">Site Reliability Engineering&lt;/a>, or SRE, is a discipline that incorporates aspects of software engineering and applies them to infrastructure and operations problems. It was developed at Google to create scalable and highly reliable software systems.&lt;/p></description></item><item><title>Emergence of DevOps</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/introduction-to-devops-and-sre/devops/emergence/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/introduction-to-devops-and-sre/devops/emergence/</guid><description>&lt;h3 id="the-devops-era" class="heading-link">
 The DevOps Era
 &lt;a href="#the-devops-era" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>DevOps software development methodology that emphasizes collaboration and communication between development and operations teams, didn&amp;rsquo;t appear overnight. Its roots can be traced back to several contributing factors and key turning points.&lt;/p>

&lt;h4 id="early-influences" class="heading-link">
 Early Influences
 &lt;a href="#early-influences" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h4>
&lt;ul>
&lt;li>Agile movement: The Agile movement, emerging in the 1990s and formally established in 2001, emphasized iterative development and collaboration, paving the way for DevOps&amp;rsquo; focus on faster delivery and team integration.&lt;/li>
&lt;li>Automation: The rise of automation tools throughout the software development lifecycle (SDLC) simplified manual tasks, allowing teams to focus on higher-level activities.&lt;/li>
&lt;li>Cloud computing: The emergence of cloud platforms provided a scalable and flexible environment for development and deployment, further facilitating collaboration and faster delivery.&lt;/li>
&lt;/ul>

&lt;h4 id="formative-years-2007-2009" class="heading-link">
 Formative Years (2007-2009)
 &lt;a href="#formative-years-2007-2009" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h4>
&lt;ul>
&lt;li>Patrick Debois: In 2007, frustrated with the traditional silos between development and operations, Patrick Debois, a Belgian consultant and project manager, began advocating for closer collaboration. He coined the term &amp;ldquo;DevOps&amp;rdquo; in 2009, which resonated with the growing desire for a more integrated approach to software development. To learn more, you can read &lt;a href="https://devops.com/the-origins-of-devops-whats-in-a-name/">&amp;ldquo;The Origins of DevOps: What&amp;rsquo;s in a Name?&amp;rdquo;&lt;/a> article, by Steve Mezak or watch &lt;a href="https://www.youtube.com/watch?v=o7-IuYS0iSE">&amp;ldquo;The (Short) History of DevOps&amp;rdquo;&lt;/a> video.&lt;/li>
&lt;li>Agile Infrastructure: Around the same time, the &amp;ldquo;Agile Infrastructure&amp;rdquo; movement emerged, focusing on applying Agile principles to infrastructure management, aligning it with development practices.&lt;/li>
&lt;/ul>

&lt;h4 id="gaining-momentum-2010s" class="heading-link">
 Gaining Momentum (2010s)
 &lt;a href="#gaining-momentum-2010s" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h4>
&lt;ul>
&lt;li>Continuous Integration and Continuous Delivery (CI/CD): The adoption of CI/CD practices became instrumental in accelerating software delivery and improving feedback loops between development and operations.&lt;/li>
&lt;li>DevOps tools and platforms: A surge of specialized DevOps tools and platforms emerged, automating tasks and providing shared visibility throughout the SDLC.&lt;/li>
&lt;li>Increased awareness and adoption: DevOps became a popular topic in conferences and publications, leading to increased awareness and adoption across various industries.&lt;/li>
&lt;/ul>

&lt;h4 id="continuous-evolution-present-day" class="heading-link">
 Continuous Evolution (Present Day)
 &lt;a href="#continuous-evolution-present-day" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h4>
&lt;ul>
&lt;li>DevOps continues to evolve: As technology and business needs change, new DevOps practices and tools emerge, focusing on areas like security, compliance, and automation in cloud environments.&lt;/li>
&lt;li>Shift towards DevOps culture: The focus expands beyond tools and processes to create a collaborative culture that fosters communication, shared responsibility, and continuous improvement.&lt;/li>
&lt;/ul></description></item><item><title>Infrastructure as Code</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/iac/iac/overview/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/iac/iac/overview/</guid><description>&lt;h3 id="overview" class="heading-link">
 Overview
 &lt;a href="#overview" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Infrastructure_as_code">Infrastructure as Code (IaC)&lt;/a> is a revolutionary approach in the space of software development and IT operations, transforming the way we build, manage, and scale infrastructure. At its core, IaC involves describing and provisioning infrastructure elements through machine-readable script files, treating infrastructure in a manner similar to software code.&lt;/p>
&lt;p>In traditional setups, infrastructure deployment was a manual and often error-prone process. With IaC, this paradigm shifts towards automation, enabling developers to define infrastructure configurations using high-level programming languages. One of the key advantages is the ability to version control the infrastructure code, ensuring traceability, reproducibility, and easy collaboration across development teams.&lt;/p></description></item><item><title>Lab 1. Installing OpenTofu</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/getting-started-with-opentofu/lab/lab1/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/getting-started-with-opentofu/lab/lab1/</guid><description>&lt;h3 id="overview" class="heading-link">
 Overview
 &lt;a href="#overview" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>In this hands-on activity, we will learn how to install OpenTofu and verify the installation.&lt;/p>

&lt;h3 id="installing-opentofu" class="heading-link">
 Installing OpenTofu
 &lt;a href="#installing-opentofu" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>

&lt;h4 id="linux-environment-setup" class="heading-link">
 Linux Environment Setup
 &lt;a href="#linux-environment-setup" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h4>
&lt;p>While this section presents various setup options, we will install OpenTofu on an Ubuntu 22.04 host.
Depending on the operating system and the installation method, there are several ways to install OpenTofu.
The most convenient is to use the installation script provided by the official OpenTofu documentation.&lt;/p></description></item><item><title>Lab Overview</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/ci-cd/lab/overview/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/ci-cd/lab/overview/</guid><description>&lt;p>In this lab, you will gain hands-on experience installing the Jenkins Server using Docker containers. The Jenkins container image is a stripped down version of Jenkins and does not contain all the plugins. We will understand how to set up Jenkins in a matter of a few minutes and create a simple job.&lt;/p></description></item><item><title>Lab Overview</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/introduction-to-observability/lab/overview/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/introduction-to-observability/lab/overview/</guid><description>&lt;h3 id="overview" class="heading-link">
 Overview
 &lt;a href="#overview" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>Prometheus and Grafana are two powerful open source tools widely used in the monitoring and visualization of metrics in cloud native environments. They serve complementary roles: Prometheus is primarily used for metrics collection and alerting, while Grafana is leveraged for visualizing the data collected by Prometheus. Let&amp;rsquo;s explore both tools, including how they work together to provide a comprehensive monitoring solution.&lt;/p>

&lt;h3 id="prerequisites" class="heading-link">
 Prerequisites
 &lt;a href="#prerequisites" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>Ensure you have an Ubuntu 20.04 host. You can follow the previous lab to provision a virtual machine for yourself.&lt;/p></description></item><item><title>Lab Overview</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-containers-and-kubernetes/lab/overview/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-containers-and-kubernetes/lab/overview/</guid><description>&lt;p>This lab provides practical experience installing Docker and Podman and setting up a Kubernetes cluster using kind. Once we have installed the container engine, we will understand the most commonly used container lifecycle operations and move on to build a container image using Dockerfile. We will uninstall Docker and install Podman to understand the Docker alternate tool. While there are many ways in which we can set up a Kubernetes cluster, we will use a simple method of setting up the cluster using kind.&lt;/p></description></item><item><title>Overview</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/getting-started-with-opentofu/opentofu/overview/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/getting-started-with-opentofu/opentofu/overview/</guid><description>&lt;h3 id="chapter-overview" class="heading-link">
 Chapter Overview
 &lt;a href="#chapter-overview" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>Managing IT infrastructure can be complicated, but Infrastructure as Code (IaC) makes it easier to define infrastructure using code. In this chapter, you’ll learn what IaC is, why it’s important, and how it helps manage infrastructure faster, more reliably, and more easily scale. You’ll also explore two main ways to write IaC: declarative, where you describe the desired outcome, and imperative, where you list the steps to get there.&lt;/p></description></item><item><title>Overview</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/iac/lab/overview/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/iac/lab/overview/</guid><description>&lt;p>In this lab, you will gain hands-on experience installing Terraform - an infrastructure as code tool that enables you to safely and predictably provision and manage infrastructure in any cloud. We will provision a Google Compute Engine using Terraform and then move on to implementing OpenTofu, which is a fork of Terraform that is open source, community-driven, and managed by the Linux Foundation.&lt;/p>

&lt;h3 id="pre-requisites" class="heading-link">
 Pre-Requisites
 &lt;a href="#pre-requisites" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>Ensure you have an Ubuntu 20.04 host. If not, then provision a virtual machine from Google Cloud Platform as per the lab in chapter 3.&lt;/p></description></item><item><title>Overview</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-cloud/lab/overview/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-cloud/lab/overview/</guid><description>&lt;p>This lab provides practical experience of creating a Google Cloud Compute Engine VM. There are different public cloud providers like AWS, Azure, Digital Ocean, etc. In our lab we will use GCP.
Creating and consuming the infrastructure is similar across different cloud providers with a few vendor-specific differences. In this exercise we will learn how to create a Google Cloud Compute Engine (Virtual Machine).&lt;/p>

&lt;h3 id="pre-requisites" class="heading-link">
 Pre-Requisites
 &lt;a href="#pre-requisites" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>Ensure you have a &lt;a href="https://cloud.google.com/">Google Cloud&lt;/a> account. If not, create an account on Google Cloud; new customers get 300$ free credits to evaluate, run, test and deploy workloads.&lt;/p></description></item><item><title>What Are Containers?</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-containers-and-kubernetes/containers/what/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-containers-and-kubernetes/containers/what/</guid><description>&lt;p>Containers have revolutionized Application Packaging and Deployment. In today&amp;rsquo;s fast-paced world, the ability to quickly and efficiently deploy software applications is critical for businesses of all sizes. Containers have emerged as a revolutionary technology that addresses this need by providing a lightweight, portable, and isolated environment for applications to run.&lt;/p>
&lt;p>Imagine a container as a standardized box that holds everything your application needs to run - its code, libraries, runtime environment, and system configuration. Unlike virtual machines, which virtualize the entire hardware stack, containers share the underlying operating system (OS) with other containers, making them much more lightweight and efficient.&lt;/p></description></item><item><title>What Is Observability?</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/introduction-to-observability/observability/what/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/introduction-to-observability/observability/what/</guid><description>&lt;p>Observability is the ability to understand the internal state of a system based on its external outputs. This means being able to infer what is happening inside the system based on the information it produces, such as logs, metrics, and traces.&lt;/p>
&lt;p>Observability is becoming increasingly important in the modern world of software development, where systems are becoming ever more complex and distributed. With traditional monitoring approaches, it can be difficult to understand what is happening inside a system and why it is behaving in a certain way. Observability provides a way to overcome this challenge by giving us a more holistic view of the system.&lt;/p></description></item><item><title>What is Site Reliability Engineering (SRE)?</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/sre/sre/what/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/sre/sre/what/</guid><description>&lt;h3 id="overview" class="heading-link">
 Overview
 &lt;a href="#overview" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>Site Reliability Engineering (SRE) is an approach to running large-scale, reliable services. &lt;a href="https://sre.google/">Google&lt;/a> is widely credited with formalizing and popularizing the term &amp;ldquo;SRE&amp;rdquo; and has since been adopted by many other tech companies. SRE blends aspects of software engineering with traditional IT and focuses on creating scalable and highly reliable software systems. The primary focus of SRE is to improve the reliability of services. Reliability is often measured through service level indicators (SLIs), service level objectives (SLOs), and service level agreements (SLAs). These metrics help define the performance and availability levels expected from a service.&lt;/p></description></item><item><title>What Is the Cloud?</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-cloud/cloud/what/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-cloud/cloud/what/</guid><description>&lt;h3 id="overview" class="heading-link">
 Overview
 &lt;a href="#overview" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>Picture the sky as a boundless expanse where you can store your digital dreams, access them from anywhere, and scale your ambitions limitlessly. That, in essence, is the magic of the cloud.&lt;/p>
&lt;p>The cloud is not an elusive fortress in the sky; it&amp;rsquo;s a virtual space, a digital playground where data finds its home. Instead of hoarding information on your personal devices, the cloud allows you to offload it to powerful servers that float, metaphorically, in this digital sky. These servers are not tied to a physical location; they are dispersed worldwide, forming a network that operates seamlessly.&lt;/p></description></item><item><title>Challenges: Example 1: Sony PlayStation Network Outage (2011)</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/introduction-to-devops-and-sre/pre-devops/challenge-1/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/introduction-to-devops-and-sre/pre-devops/challenge-1/</guid><description>&lt;h3 id="psn-outage" class="heading-link">
 PSN Outage
 &lt;a href="#psn-outage" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>In April 2011, &lt;a href="https://en.wikipedia.org/wiki/2011_PlayStation_Network_outage">the Sony PlayStation Network (PSN) experienced a massive outage&lt;/a> that lasted for 23 days and affected over 100 million users. This incident is considered a classic example of the challenges faced in the pre-DevOps era and serves as a cautionary tale for organizations transitioning to modern development practices.&lt;/p>

&lt;h4 id="pre-devops-challenges-contributing-to-the-psn-outage" class="heading-link">
 Pre-DevOps Challenges Contributing to the PSN Outage
 &lt;a href="#pre-devops-challenges-contributing-to-the-psn-outage" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h4>
&lt;ul>
&lt;li>&lt;strong>Silos and Communication Gaps&lt;/strong>: The development and operations teams at Sony worked in separate silos with limited communication and collaboration. This led to a lack of understanding of each other&amp;rsquo;s work and challenges, making it difficult to respond effectively to the evolving situation during the outage.&lt;/li>
&lt;li>&lt;strong>Manual and Slow Processes&lt;/strong>: Deployments and infrastructure changes were performed manually, requiring significant time and effort. This slowness hampered Sony&amp;rsquo;s ability to quickly assess the situation and implement necessary fixes.&lt;/li>
&lt;li>&lt;strong>Limited Scalability and Flexibility&lt;/strong>: The PSN&amp;rsquo;s infrastructure was not designed to handle the surging demand caused by the attack, leading to widespread outages and service disruptions.&lt;/li>
&lt;li>&lt;strong>Lack of Visibility and Tracking&lt;/strong>: Sony lacked effective monitoring tools to identify and diagnose the source of the outage promptly. This delayed the response time and made it difficult to determine the full scope of the attack.&lt;/li>
&lt;li>&lt;strong>Culture of Blame and Finger-Pointing&lt;/strong>: The siloed environment and lack of communication led to blame and finger-pointing between different teams, hindering collaboration and problem-solving efforts.&lt;/li>
&lt;/ul>

&lt;h4 id="consequences-of-the-psn-outage" class="heading-link">
 Consequences of the PSN Outage
 &lt;a href="#consequences-of-the-psn-outage" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h4>
&lt;ul>
&lt;li>&lt;strong>Financial Losses&lt;/strong>: Sony estimated the outage cost the company approximately $170 million in lost revenue and legal settlements.&lt;/li>
&lt;li>&lt;strong>Reputation Damage&lt;/strong>: The incident severely damaged Sony&amp;rsquo;s reputation and eroded user trust in the PSN platform.&lt;/li>
&lt;li>&lt;strong>Customer Frustration&lt;/strong>: Millions of users were frustrated by the prolonged outage and lack of information from Sony.&lt;/li>
&lt;/ul>

&lt;h4 id="lessons-learned-from-the-psn-outage" class="heading-link">
 Lessons Learned from the PSN Outage
 &lt;a href="#lessons-learned-from-the-psn-outage" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h4>
&lt;p>Here are some of the lessons learned from the PSN outage:&lt;/p></description></item><item><title>CI/CD - Why Should You Bother?</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/ci-cd/cicd/why/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/ci-cd/cicd/why/</guid><description>&lt;h3 id="why-cicd-matters" class="heading-link">
 Why CI/CD Matters?
 &lt;a href="#why-cicd-matters" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>In the ever-evolving landscape of software development, the adoption of Continuous Integration and Continuous Delivery (CI/CD) has become not just a trend but a fundamental necessity. This chapter aims to provide a comprehensive understanding of why developers and engineers must prioritize and embrace CI/CD practices.&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>The Need for Speed &amp;amp; Efficiency&lt;/strong>: One of the primary reasons to incorporate CI/CD is the need for rapid and efficient software delivery. In a world where time-to-market is a critical success factor, developers face immense pressure to deliver high-quality code quickly. CI/CD automates and streamlines the entire development pipeline, from code integration to deployment, ensuring a swift and efficient release process.&lt;/p></description></item><item><title>Infrastructure as Code (IaC)</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/getting-started-with-opentofu/opentofu/iac/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/getting-started-with-opentofu/opentofu/iac/</guid><description>&lt;h3 id="infrastructure-provisioning-the-manual-way" class="heading-link">
 Infrastructure Provisioning: The Manual Way
 &lt;a href="#infrastructure-provisioning-the-manual-way" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>Applications fuel the growth and efficiency of modern businesses. They depend on infrastructure—such as compute, storage, and networking—to run effectively. Traditionally, system administrators and IT professionals managed this infrastructure manually, physically setting up servers, network devices, and other hardware components needed for business applications.&lt;/p>
&lt;p>In the early days, every business application required dedicated physical hardware. This meant deploying and configuring individual servers for each application—a time-intensive and resource-heavy process. Virtualization revolutionized this approach by allowing multiple virtual machines (VMs) to run on a single physical server using hypervisors, making better use of underutilized hardware. Despite this innovation, infrastructure provisioning and configuration were still mostly done manually, which brought its own set of challenges.&lt;/p></description></item><item><title>Install Docker</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-containers-and-kubernetes/lab/e1/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-containers-and-kubernetes/lab/e1/</guid><description>&lt;p>In this exercise, we will install Docker and understand the most commonly used container lifecycle commands
and then build an image using Dockerfile.&lt;/p>
&lt;p>We can install Docker using the Docker’s apt repository, or install it manually, or use a convenient script
provided by Docker. For simplicity’s sake, we will use the below method.&lt;/p>
&lt;ol>
&lt;li>Install Docker:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>curl -fsSL https://get.docker.com/ | sh
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>Enable Docker to start on boot:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>sudo systemctl enable --now docker
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>Check that the Docker service is running:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>sudo systemctl status docker
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>Add current user to the docker group:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>sudo usermod -aG docker $USER
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>Refresh shell session (by exiting &amp;amp; logging in again).&lt;/li>
&lt;li>Verify the Docker installation:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>docker ps
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Install Terraform</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/iac/lab/e1/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/iac/lab/e1/</guid><description>&lt;p>In this exercise, we will install Terraform on our Ubuntu host.&lt;/p>
&lt;ol>
&lt;li>Download the public signing key for the package repositories. To get started, execute the following commands:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>/usr/share/keyrings/hashicorp-archive-keyring.gpg
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>Add the appropriate apt repository:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>echo &lt;span style="color:#e6db74">&amp;#34;deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg]
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">https://apt.releases.hashicorp.com &lt;/span>&lt;span style="color:#66d9ef">$(&lt;/span>lsb_release -cs&lt;span style="color:#66d9ef">)&lt;/span>&lt;span style="color:#e6db74"> main&amp;#34;&lt;/span> | sudo tee
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>/etc/apt/sources.list.d/hashicorp.list
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>Update the apt package index and install Terraform:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>sudo apt update &lt;span style="color:#f92672">&amp;amp;&amp;amp;&lt;/span> sudo apt install terraform
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>Verify the Terraform installation.&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>terraform --version
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Terraform v1.7.4
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>on linux_amd64
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Key Factors Contributing to the Emergence of DevOps</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/introduction-to-devops-and-sre/devops/factors/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/introduction-to-devops-and-sre/devops/factors/</guid><description>&lt;h3 id="key-factors" class="heading-link">
 Key Factors
 &lt;a href="#key-factors" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Need for Faster Software Delivery&lt;/strong>: Increased competition and evolving customer expectations drove the need for faster and more frequent software releases.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Inefficiencies of Siloed Teams&lt;/strong>: Traditional separation between development and operations led to communication gaps, delays, and finger-pointing.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Rise of Automation Tools&lt;/strong>: Automation enabled teams to focus on higher-level activities and eliminate manual work, improving efficiency and accuracy.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Cloud Computing&lt;/strong>: Cloud platforms offered scalability, flexibility, and access to shared resources, facilitating collaboration and faster deployments.&lt;/p></description></item><item><title>Lab 2. Learning the Basics of OpenTofu</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/getting-started-with-opentofu/lab/lab2/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/getting-started-with-opentofu/lab/lab2/</guid><description>&lt;h3 id="overview" class="heading-link">
 Overview
 &lt;a href="#overview" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>In this lab, you will gain hands-on experience with the basics of the OpenTofu command line and be introduced to the OpenTofu configuration language, which specifies the resources OpenTofu would create and the providers it would use.&lt;/p>

&lt;h3 id="prerequisites" class="heading-link">
 Prerequisites
 &lt;a href="#prerequisites" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>You will need OpenTofu installed as per Lab 1.&lt;/p>

&lt;h3 id="initialize-and-create-a-local-resource" class="heading-link">
 Initialize and Create a Local Resource
 &lt;a href="#initialize-and-create-a-local-resource" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>In this exercise, we will write a basic OpenTofu code to create a resource locally and understand the basic
workflow to create any infrastructure in OpenTofu.&lt;/p></description></item><item><title>SRE versus DevOps</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/sre/sre/devops-vs-sre/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/sre/sre/devops-vs-sre/</guid><description>&lt;h3 id="characteristics-of-sre" class="heading-link">
 Characteristics of SRE
 &lt;a href="#characteristics-of-sre" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Focus on Reliability&lt;/strong>: SRE places a primary emphasis on ensuring the reliability and availability of services. SREs are specifically tasked with maintaining a high level of service reliability and meeting defined Service Level Objectives (SLOs).&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Error Budgets&lt;/strong>: SRE introduces the concept of error budgets, which quantifies the allowable amount of downtime or errors within a specific timeframe. This allows for a balance between reliability and innovation, as long as the error budget is not exhausted.&lt;/p></description></item><item><title>The Difference Between Containers and Virtual Machines</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-containers-and-kubernetes/containers/difference/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-containers-and-kubernetes/containers/difference/</guid><description>&lt;h3 id="virtual-machines-isolated-and-versatile" class="heading-link">
 Virtual Machines: Isolated and Versatile
 &lt;a href="#virtual-machines-isolated-and-versatile" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>Virtual machines provide a fully isolated virtual environment, complete with an operating system and all necessary dependencies. Each VM runs on a hypervisor, a layer that abstracts the physical hardware and allows multiple VMs to coexist on a single physical machine.&lt;/p>
&lt;p>Here are some key characteristics of virtual machines:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Strong isolation&lt;/p>
&lt;p>Each VM operates as an independent entity, with its own dedicated resources and a separate OS instance. This isolation makes VMs highly secure, as vulnerabilities within one VM do not impact others.&lt;/p></description></item><item><title>The Three Pillars of Observability</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/introduction-to-observability/observability/pillars/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/introduction-to-observability/observability/pillars/</guid><description>&lt;h3 id="logs" class="heading-link">
 Logs
 &lt;a href="#logs" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>Logs are digital records of events that have occurred within a system. These records are sequential and time-stamped, offering a granular, time-stamped audit trail of activities. Logs can include a wide range of data, from the simple recording of user access to detailed error messages that software developers use to debug issues. In the context of observability, logs provide the narrative detail that complements the quantitative data from metrics and the flow information from traces. They enable developers and operations teams to drill down to the root cause of issues, understand system behavior over time, and maintain operational excellence.&lt;/p></description></item><item><title>Why Should You Bother?</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/iac/iac/why/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/iac/iac/why/</guid><description>&lt;h3 id="software-engineers" class="heading-link">
 Software Engineers
 &lt;a href="#software-engineers" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>

&lt;h4 id="efficiency-and-consistency" class="heading-link">
 Efficiency and Consistency
 &lt;a href="#efficiency-and-consistency" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h4>
&lt;p>Consider a scenario where a software engineer needs to set up a development environment with specific server configurations. With IaC, they can script these configurations, ensuring consistency across different environments, be it development, testing, or production.&lt;/p>

&lt;h4 id="collaboration-and-version-control" class="heading-link">
 Collaboration and Version Control
 &lt;a href="#collaboration-and-version-control" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h4>
&lt;p>When multiple engineers collaborate on infrastructure changes, version control becomes crucial. IaC enables engineers to use tools like Git to manage changes, track history, and collaborate seamlessly, just like they do with application code.&lt;/p></description></item><item><title>Why Should You Bother?</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-cloud/cloud/why/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-cloud/cloud/why/</guid><description>&lt;h3 id="why-should-you-bother" class="heading-link">
 Why Should You Bother?
 &lt;a href="#why-should-you-bother" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>Scaling Success with Flexibility
Imagine you&amp;rsquo;re a software developer working on an e-commerce platform. During a major sale event, your application experiences a surge in traffic as customers rush to make purchases. Without cloud infrastructure, you would be limited by the server capacity you initially set up. If the traffic exceeds expectations, the website could crash, leading to lost sales and frustrated customers.&lt;/p></description></item><item><title>A Brief History of the Cloud</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-cloud/cloud/history/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-cloud/cloud/history/</guid><description>&lt;h3 id="1-precursors-and-pioneers-1950s-1990s" class="heading-link">
 1. Precursors and Pioneers (1950s-1990s)
 &lt;a href="#1-precursors-and-pioneers-1950s-1990s" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>The roots of the cloud can be traced back to the 1950s, when mainframe computers laid the groundwork for centralized computing. However, it wasn&amp;rsquo;t until the 1990s that the term &amp;ldquo;cloud computing&amp;rdquo; began to take shape (To learn more, check out TechTarget’s &amp;ldquo;The history of Cloud Computing Explained&amp;rdquo;). Early pioneers like Salesforce and Amazon Web Services (AWS) began experimenting with the concept of delivering computing power and storage as a service.&lt;/p></description></item><item><title>Brief History of Containers</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-containers-and-kubernetes/containers/history/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-containers-and-kubernetes/containers/history/</guid><description>&lt;h3 id="chroot-1970s" class="heading-link">
 Chroot (1970s)
 &lt;a href="#chroot-1970s" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>The concept of isolation dates back to the chroot system call in Unix operating systems, which was introduced in the 1970s. &lt;a href="https://en.wikipedia.org/wiki/Chroot">Chroot&lt;/a> allows a process to have its own isolated view of the filesystem.&lt;/p>

&lt;h3 id="freebsd-jails-2000" class="heading-link">
 FreeBSD Jails (2000)
 &lt;a href="#freebsd-jails-2000" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>FreeBSD introduced the concept of &lt;a href="https://en.wikipedia.org/wiki/FreeBSD_jail">jails&lt;/a>, which provided lightweight virtualization by isolating processes, filesystems, and networking. This was an early form of containerization.&lt;/p></description></item><item><title>Categories of Infrastructure As Code Tools</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/iac/iac/categories/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/iac/iac/categories/</guid><description>&lt;h3 id="declarative-iac-tools" class="heading-link">
 Declarative IaC Tools
 &lt;a href="#declarative-iac-tools" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>Declarative tools focus on describing the desired state of the infrastructure. Users specify what they want, and the tool ensures the system reaches that state.&lt;/p>
&lt;p>Examples:&lt;/p>
&lt;ul>
&lt;li>Terraform allows users to define infrastructure using a declarative configuration language. It supports various providers like AWS, Azure, and Google Cloud, enabling multi-cloud and hybrid cloud scenarios.&lt;/li>
&lt;li>Pulumi provides Infrastructure as Code in multiple programming languages like Python, TypeScript, and Go. It allows integration with various cloud providers and offers flexibility.&lt;/li>
&lt;li>SaltStack is an open source platform with YAML configuration files for IaC. It focuses on automation and offers centralized infrastructure management.&lt;/li>
&lt;/ul>

&lt;h3 id="configuration-management-tools" class="heading-link">
 Configuration Management Tools
 &lt;a href="#configuration-management-tools" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>These tools focus on configuring and maintaining software applications on existing infrastructure. While not purely IaC, they play a crucial role in managing the software layer.&lt;/p></description></item><item><title>Challenges: Example 2: The Launch of healthcare.gov Website (2013)</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/introduction-to-devops-and-sre/pre-devops/challenge-2/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/introduction-to-devops-and-sre/pre-devops/challenge-2/</guid><description>&lt;h3 id="the-launch-of-healthcaregov-website" class="heading-link">
 The Launch of healthcare.gov Website
 &lt;a href="#the-launch-of-healthcaregov-website" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>The launch of the &lt;a href="https://d3.harvard.edu/platform-rctom/submission/the-failed-launch-of-www-healthcare-gov/">United States Department of Health and Human Services&amp;rsquo; healthcare.gov website&lt;/a> in 2013 was plagued by technical problems, causing major delays and embarrassment for the government. This was due in part to the use of outdated technology and a lack of collaboration between development and operations teams.&lt;/p>
&lt;p>The pre-DevOps era was a time of significant challenges for software development. However, it also laid the groundwork for the emergence of DevOps, which has revolutionized the way software is built and delivered.&lt;/p></description></item><item><title>DevOps and SRE: A Simplified Analogy</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/introduction-to-devops-and-sre/what-is-devops/simplified/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/introduction-to-devops-and-sre/what-is-devops/simplified/</guid><description>&lt;h3 id="overview" class="heading-link">
 Overview
 &lt;a href="#overview" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>DevOps and SRE are two different disciplines of Software Engineering, but they are deeply interconnected and rely on each other for success. DevOps focuses on creating new features and improvements, while SRE focuses on ensuring the reliability and stability of the system. Both DevOps and SRE require strong collaboration and communication to achieve common goals. Anyone interested in a career in tech should consider exploring both DevOps and SRE to understand the full picture of software development and delivery.&lt;/p></description></item><item><title>Introducing OpenTofu</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/getting-started-with-opentofu/opentofu/opentofu/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/getting-started-with-opentofu/opentofu/opentofu/</guid><description>&lt;h3 id="introducing-opentofu" class="heading-link">
 Introducing OpenTofu
 &lt;a href="#introducing-opentofu" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>According to its &lt;a href="https://opentofu.org/docs/intro/">documentation&lt;/a>,&lt;/p>
&lt;p>&lt;em>OpenTofu is an infrastructure as code tool that lets you define both cloud and on-prem resources in human-readable configuration files that you can version, reuse, and share. You can then use a consistent workflow to provision and manage all of your infrastructure throughout its lifecycle. OpenTofu can manage low-level components like compute, storage, and networking resources, as well as high-level components like DNS entries and SaaS features.&lt;/em>&lt;/p></description></item><item><title>Key Principles of DevOps</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/introduction-to-devops-and-sre/devops/principles/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/introduction-to-devops-and-sre/devops/principles/</guid><description>&lt;h3 id="key-principles-of-devops" class="heading-link">
 Key Principles of DevOps
 &lt;a href="#key-principles-of-devops" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>Adhering to the key principles of DevOps will ensure a more successful development, delivery, and implementation of applications and services.&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Collaboration&lt;/strong>: DevOps emphasizes breaking down silos between development and operations teams, encouraging shared responsibilities and improved communication.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Automation&lt;/strong>: Automation is a core tenet of DevOps, involving the use of tools to automate manual and repetitive tasks in the software development and delivery pipeline.&lt;/p></description></item><item><title>Lab 3. Creating a Virtual Machine using OpenTofu</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/getting-started-with-opentofu/lab/lab3/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/getting-started-with-opentofu/lab/lab3/</guid><description>&lt;h3 id="overview" class="heading-link">
 Overview
 &lt;a href="#overview" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>In this lab, you will gain hands-on experience creating a virtual machine from code using OpenTofu. OpenTofu
can also create infrastructure across various providers. In this exercise, we will use AWS and create an EC2
instance for demonstration purposes.&lt;/p>

&lt;h3 id="prerequisites" class="heading-link">
 Prerequisites
 &lt;a href="#prerequisites" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;ol>
&lt;li>OpenTofu installed as per Lab 1.&lt;/li>
&lt;li>AWS account created - access and secret keys.
Note: It is out of scope for this course to help you create an AWS account. Please refer to the official AWS
docs (for example, How to create an account and How to configure user).&lt;/li>
&lt;/ol>

&lt;h3 id="creating-an-ec2-virtual-machine-with-opentofu" class="heading-link">
 Creating an EC2 Virtual Machine with OpenTofu
 &lt;a href="#creating-an-ec2-virtual-machine-with-opentofu" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;ol>
&lt;li>Create a separate directory for storing your OpenTofu code:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>mkdir newproject &lt;span style="color:#f92672">&amp;amp;&amp;amp;&lt;/span> cd newproject
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>Using the editor of your choice, create the file main.tf with the content below:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-hcl" data-lang="hcl">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">provider&lt;/span> &lt;span style="color:#e6db74">&amp;#34;aws&amp;#34;&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> region &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;us-east-1&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> access_key &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;xxxxxxxxxxxxxxxxxxxxxxx&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> secret_key &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;xxxxxxxxxxxxxxxxxxxxxxxx&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">resource&lt;/span> &lt;span style="color:#e6db74">&amp;#34;aws_instance&amp;#34; &amp;#34;firstvm&amp;#34;&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ami &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;ami-053b0d53c279acc90&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> instance_type &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;t2.micro&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> subnet_id &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;subnet-xxxxxxxxxx&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Note&lt;/strong>: Please replace the “access_key”, “secret_key” and “subnet_id” with your credentials and subnet
ID.&lt;/p></description></item><item><title>Manage Container Lifecycle with Docker</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-containers-and-kubernetes/lab/e2/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-containers-and-kubernetes/lab/e2/</guid><description>&lt;ol>
&lt;li>Now that we have installed and verified Docker, let’s create our first container. This command pulls the hello-world image from Docker Hub and runs it as a container.&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>student@ubuntu:~$ sudo docker container run hello-world
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Output:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>Unable to find image &lt;span style="color:#e6db74">&amp;#39;hello-world:latest&amp;#39;&lt;/span> locally
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>latest: Pulling from library/hello-world
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>c1ec31eb5944: Pull complete
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Digest:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sha256:ac69084025c660510933cca701f615283cdbb3aa0963188770b54c31c8962493
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Status: Downloaded newer image &lt;span style="color:#66d9ef">for&lt;/span> hello-world:latest
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Hello from Docker!
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>This message shows that your installation appears to be working correctly.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>To generate this message, Docker took the following steps:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>1. The Docker client contacted the Docker daemon.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>2. The Docker daemon pulled the &lt;span style="color:#e6db74">&amp;#34;hello-world&amp;#34;&lt;/span> image from the Docker Hub.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">(&lt;/span>amd64&lt;span style="color:#f92672">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>3. The Docker daemon created a new container from that image which runs the
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>executable that produces the output you are currently reading.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>4. The Docker daemon streamed that output to the Docker client, which sent
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>it
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>to your terminal.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>To try something more ambitious, you can run an Ubuntu container with:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ docker run -it ubuntu bash
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Share images, automate workflows, and more with a free Docker ID:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>https://hub.docker.com/
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>For more examples and ideas, visit:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>https://docs.docker.com/get-started/
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>List the container running on our host, by executing the following command:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>student@ubuntu:~$ sudo docker container ls
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Output:&lt;/p></description></item><item><title>Measuring Reliability with SLIs</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/sre/sre/reliability/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/sre/sre/reliability/</guid><description>&lt;h3 id="service-level-indicators-slis" class="heading-link">
 Service Level Indicators (SLIs)
 &lt;a href="#service-level-indicators-slis" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>SLIs are specific, quantitative metrics that define the performance and reliability of a service. They are typically expressed as a ratio, percentage, or a specific numerical value. SLIs represent the aspects of a service that are most critical to its users. Selecting the right SLIs is crucial. They should align with user expectations and business goals. For example, if users value a fast response time, latency might be a critical SLI.&lt;/p></description></item><item><title>Set up the GCP Service Account and Configure Google Cloud SDK</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/iac/lab/e2/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/iac/lab/e2/</guid><description>&lt;p>In this exercise, we will install Google Cloud SDK, configure Google Cloud account to create a service account and use the credentials to create infrastructure using Terraform.&lt;/p>
&lt;ol>
&lt;li>Before you install the gcloud CLI, update the packages:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>sudo apt-get update
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>Install the curl and apt-transport-https packages:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>sudo apt-get install apt-transport-https ca-certificates gnupg curl
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>Import the Google Cloud public key:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>-o /usr/share/keyrings/cloud.google.gpg
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>Add the gcloud CLI distribution URI as a package source:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>echo &lt;span style="color:#e6db74">&amp;#34;deb [signed-by=/usr/share/keyrings/cloud.google.gpg]
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">https://packages.cloud.google.com/apt cloud-sdk main&amp;#34;&lt;/span> | sudo tee -a
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>/etc/apt/sources.list.d/google-cloud-sdk.list
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>Update and install the gcloud CLI:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>sudo apt-get update &lt;span style="color:#f92672">&amp;amp;&amp;amp;&lt;/span> sudo apt-get install google-cloud-cli
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>After installing the SDK, initialize it by running the following command and follow the prompts:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>gcloud init
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Welcome! This command will take you through the configuration of gcloud.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Your current configuration has been set to: &lt;span style="color:#f92672">[&lt;/span>default&lt;span style="color:#f92672">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>You can skip diagnostics next time by using the following flag:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>gcloud init --skip-diagnostics
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Network diagnostic detects and fixes local network connection issues.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Checking network connection...done.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Reachability Check passed.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Network diagnostic passed &lt;span style="color:#f92672">(&lt;/span>1/1 checks passed&lt;span style="color:#f92672">)&lt;/span>.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Choose the account you would like to use to perform operations &lt;span style="color:#66d9ef">for&lt;/span> this
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>configuration:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Follow the prompts and enter your project details accordingly.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>Create a Service Account:&lt;/li>
&lt;/ol>
&lt;p>You&amp;rsquo;ll need to create a service account in your Google Cloud project. This service account will be used by
applications and scripts to authenticate with Google Cloud APIs.&lt;/p></description></item><item><title>What Is Continuous Integration?</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/ci-cd/cicd/ci/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/ci-cd/cicd/ci/</guid><description>&lt;h3 id="continuous-integration-ci" class="heading-link">
 Continuous Integration (CI)
 &lt;a href="#continuous-integration-ci" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>Continuous Integration (CI) is a pivotal methodology in software development, reshaping the way teams collaborate and deliver high-quality code. At its core, CI involves the regular merging of code changes from multiple contributors into a shared repository. This iterative process serves as a proactive measure to identify and rectify integration issues at an early stage, fostering a development environment characterized by stability and efficiency.&lt;/p></description></item><item><title>Why Is Observability Needed?</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/introduction-to-observability/observability/why/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/introduction-to-observability/observability/why/</guid><description>&lt;h3 id="why" class="heading-link">
 Why?
 &lt;a href="#why" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>Observability is a crucial DevOps concept, playing a pivotal role in ensuring the reliability, performance, and overall success of software applications and services. It goes beyond traditional monitoring to offer a comprehensive, real-time insight into the health and behavior of systems. Here are several key reasons why observability is needed in DevOps.&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Complexity of Modern Systems&lt;/strong>: With the rise of microservices architecture, cloud computing, and distributed systems, applications have become more complex. Observability is crucial for understanding and managing this complexity.&lt;/p></description></item><item><title>Benefits of DevOps</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/introduction-to-devops-and-sre/devops/benefits/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/introduction-to-devops-and-sre/devops/benefits/</guid><description>&lt;h3 id="benefits-of-devops-includes" class="heading-link">
 Benefits of DevOps Includes
 &lt;a href="#benefits-of-devops-includes" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Speed&lt;/strong>: DevOps enables faster software delivery by automating processes and eliminating manual handoffs between development and operations teams. By breaking down silos between teams, DevOps promotes a more agile and efficient approach to software development.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Rapid Delivery&lt;/strong>: DevOps allows organizations to release new features and updates quickly and reliably. Continuous integration, delivery, and deployment ensure that software is always in a deployable state and ready to be released.&lt;/p></description></item><item><title>Components of an Observability Stack</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/introduction-to-observability/observability/components/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/introduction-to-observability/observability/components/</guid><description>&lt;h3 id="key-components-of-an-observability-stack" class="heading-link">
 Key Components of an Observability Stack
 &lt;a href="#key-components-of-an-observability-stack" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>An observability stack is a collection of tools and technologies that work together to provide insights into the health, performance, and behavior of your software systems. These insights help you identify and resolve issues quickly, optimize performance, and ensure a smooth user experience. A well-integrated observability stack is essential for maintaining high-performing and reliable systems in today&amp;rsquo;s complex digital environments. It empowers teams with the insights needed to make informed decisions and maintain optimal operational efficiency.&lt;/p></description></item><item><title>Create a Google Cloud Compute Engine Instance Using Terraform</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/iac/lab/e3/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/iac/lab/e3/</guid><description>&lt;ol>
&lt;li>Create a directory to store our Terraform code:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>mkdir -p ~/code
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>Create a Terraform configuration file and save the file as main.tf with the following configuration:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-hcl" data-lang="hcl">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">provider&lt;/span> &lt;span style="color:#e6db74">&amp;#34;google&amp;#34;&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> project &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&amp;lt;ADD YOUR PROJECT ID HERE&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> region &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;us-central1&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> zone &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;us-central1-a&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">resource&lt;/span> &lt;span style="color:#e6db74">&amp;#34;google_compute_instance&amp;#34; &amp;#34;my_instance&amp;#34;&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> name &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;my-instance&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> machine_type &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;n1-standard-1&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> zone &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;us-central1-a&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">boot_disk&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">initialize_params&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> image &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;debian-cloud/debian-10&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">network_interface&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> network &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;default&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">access_config&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#960050;background-color:#1e0010">//&lt;/span> &lt;span style="color:#66d9ef">Ephemeral&lt;/span> &lt;span style="color:#66d9ef">IP&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Note: Replace &amp;quot; ADD YOUR PROJECT ID HERE &amp;quot; with your Google Cloud project ID. You can also customize other parameters like the instance name, machine type, zone, and image.&lt;/strong>&lt;/p></description></item><item><title>Docker: What’s under the hood?</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-containers-and-kubernetes/containers/docker/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-containers-and-kubernetes/containers/docker/</guid><description>&lt;h3 id="docker" class="heading-link">
 Docker
 &lt;a href="#docker" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>Docker is a platform that uses containerization technology to simplify the development, deployment, and scaling of applications. Under the hood, Docker relies on several key components and technologies to achieve its functionality.&lt;/p>

&lt;h3 id="docker-engine" class="heading-link">
 Docker Engine
 &lt;a href="#docker-engine" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>Docker Engine, often simply referred to as Docker, is the heart of Docker technology, providing the necessary functionality to create and manage container lifecycle. Its architecture allows for seamless development, shipment, and running of applications in containers. Docker Engine is modular in nature and consists of many modules which help in container lifecycle management:&lt;/p></description></item><item><title>Embracing Risks with SLOs and Error Budgets</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/sre/sre/slos/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/sre/sre/slos/</guid><description>&lt;h3 id="slos-and-error-budgets" class="heading-link">
 SLOs and Error Budgets
 &lt;a href="#slos-and-error-budgets" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>In SRE, embracing risks is an inherent part of the approach, and it&amp;rsquo;s managed through the concepts of Service Level Objectives (SLOs) and error budgets. Let&amp;rsquo;s explore how SLOs and error budgets enable teams to balance innovation and reliability while embracing a certain level of risk.&lt;/p>

&lt;h4 id="service-level-objectives-slos" class="heading-link">
 Service Level Objectives (SLOs)
 &lt;a href="#service-level-objectives-slos" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h4>
&lt;p>SLOs are specific, measurable targets that define the acceptable level of reliability for a service. They are expressed as a percentage or ratio and represent the agreed-upon performance level that a service should achieve.&lt;/p></description></item><item><title>Five Fundamental Features of an IaC Tool</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/iac/iac/fundamentals/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/iac/iac/fundamentals/</guid><description>&lt;h3 id="features-of-iac-tools" class="heading-link">
 Features of IaC Tools
 &lt;a href="#features-of-iac-tools" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>In the dynamic landscape of modern software development, Infrastructure as Code (IaC) tools have become indispensable for automating and managing infrastructure. Let&amp;rsquo;s dive into five fundamental features that make these tools essential for developers, using straightforward scenarios and relatable examples.&lt;/p>

&lt;h4 id="declarative-configuration" class="heading-link">
 Declarative Configuration
 &lt;a href="#declarative-configuration" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h4>
&lt;p>&lt;strong>What is it?&lt;/strong>&lt;/p>
&lt;p>Declarative configuration allows users to specify the desired state of their infrastructure without detailing the steps to reach that state. It&amp;rsquo;s like ordering a meal in a restaurant without instructing the chef on how to cook it.&lt;/p></description></item><item><title>Image Management with Docker</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-containers-and-kubernetes/lab/e3/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-containers-and-kubernetes/lab/e3/</guid><description>&lt;ol>
&lt;li>List the available images on our host. Notice when the images are not available on the host, they are by default downloaded from DockerHub.&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>student@ubuntu:~$ sudo docker image ls
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>REPOSITORY TAG IMAGE ID CREATED SIZE
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ubuntu latest 174c8c134b2a &lt;span style="color:#ae81ff">3&lt;/span> weeks ago 77.9MB
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>nginx latest d453dd892d93 &lt;span style="color:#ae81ff">2&lt;/span> months ago 187MB
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>hello-world latest d2c94e258dcb &lt;span style="color:#ae81ff">8&lt;/span> months ago 13.3kB
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>If the image is already existing on the host, then creating a container is very quick. Let’s see how to pull an image from the registry:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>student@ubuntu:~$ sudo docker image pull alpine
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Using default tag: latest
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>latest: Pulling from library/alpine
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>661ff4d9561e: Pull complete
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Digest:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sha256:51b67269f354137895d43f3b3d810bfacd3945438e94dc5ac55fdac340352f48
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Status: Downloaded newer image &lt;span style="color:#66d9ef">for&lt;/span> alpine:latest
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>docker.io/library/alpine:latest
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>By default, the Daemon is configured to fetch the image from the Docker Hub registry and from the user account library, where Docker stores all the publicly available official images and fetches the image with tag as latest. We can override the default behavior by specifying what we want.&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>student@ubuntu:~$ sudo docker image pull gcr.io/google-samples/hello-app:2.0
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>2.0: Pulling from google-samples/hello-app
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>07a64a71e011: Pull complete
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>fe5ca62666f0: Pull complete
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>b02a7525f878: Pull complete
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>1933f300df8c: Pull complete
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>36cc1f0ec872: Pull complete
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Digest:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sha256:7104356ed4e3476a96a23b96f8d7c04dfa7a1881aa97d66a76217f6bc8a370d0
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Status: Downloaded newer image &lt;span style="color:#66d9ef">for&lt;/span> gcr.io/google-samples/hello-app:2.0
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>gcr.io/google-samples/hello-app:2.0
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>Let us build a simple image using Dockerfile. We will use the index.html file we created in an earlier step and copy it to our new image.&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>student@ubuntu:~$ cat &amp;gt; Dockerfile &lt;span style="color:#e6db74">&amp;lt;&amp;lt;EOF
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">&amp;gt; FROM nginx
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">&amp;gt; COPY . /usr/share/nginx/html
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">&amp;gt; EXPOSE 80/tcp
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">&amp;gt; CMD [&amp;#34;nginx&amp;#34;, &amp;#34;-g daemon off;&amp;#34;]
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">&amp;gt; EOF&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>student@ubuntu:~$ sudo docker image build . -t nginx:version1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">[&lt;/span>+&lt;span style="color:#f92672">]&lt;/span> Building 0.4s &lt;span style="color:#f92672">(&lt;/span>7/7&lt;span style="color:#f92672">)&lt;/span> FINISHED
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>docker:default
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt; &lt;span style="color:#f92672">[&lt;/span>internal&lt;span style="color:#f92672">]&lt;/span> load .dockerignore
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>0.1s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt; &lt;span style="color:#f92672">=&lt;/span>&amp;gt; transferring context: 2B
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>0.0s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt; &lt;span style="color:#f92672">[&lt;/span>internal&lt;span style="color:#f92672">]&lt;/span> load build definition from Dockerfile
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>0.1s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt; &lt;span style="color:#f92672">=&lt;/span>&amp;gt; transferring dockerfile: 123B
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>0.0s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt; &lt;span style="color:#f92672">[&lt;/span>internal&lt;span style="color:#f92672">]&lt;/span> load metadata &lt;span style="color:#66d9ef">for&lt;/span> docker.io/library/nginx:latest
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>0.0s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt; &lt;span style="color:#f92672">[&lt;/span>internal&lt;span style="color:#f92672">]&lt;/span> load build context
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>0.1s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt; &lt;span style="color:#f92672">=&lt;/span>&amp;gt; transferring context: 5.74kB
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>0.0s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt; &lt;span style="color:#f92672">[&lt;/span>1/2&lt;span style="color:#f92672">]&lt;/span> FROM docker.io/library/nginx
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>0.1s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt; &lt;span style="color:#f92672">[&lt;/span>2/2&lt;span style="color:#f92672">]&lt;/span> COPY . /usr/share/nginx/html
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>0.1s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt; exporting to image
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>0.0s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt; &lt;span style="color:#f92672">=&lt;/span>&amp;gt; exporting layers
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>0.0s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt; &lt;span style="color:#f92672">=&lt;/span>&amp;gt; writing image
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sha256:69be93e604b157a2dda142b3444100e5e24013f2c29db16bd25c0c8de84c28b2
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>0.0s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">=&lt;/span>&amp;gt; &lt;span style="color:#f92672">=&lt;/span>&amp;gt; naming to docker.io/library/nginx:version1
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>Create a container using the image we built and access the application.&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>student@ubuntu:~$ sudo docker container run -dit --name webapp -p 8081:80
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>nginx:version1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>8fd1b47bafda05c96faba7d46486ca90f4a828c221cb5fd689e819592b839c84
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>student@ubuntu:~$ curl localhost:8081
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Welcome to Docker Training!!
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>Clean up the unused images on the host by executing the following command:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>student@ubuntu:~$ sudo docker image prune -a
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>WARNING! This will remove all images without at least one container
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>associated to them.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Are you sure you want to &lt;span style="color:#66d9ef">continue&lt;/span>? &lt;span style="color:#f92672">[&lt;/span>y/N&lt;span style="color:#f92672">]&lt;/span> y
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Deleted Images:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>untagged: alpine:latest
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>untagged:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>alpine@sha256:51b67269f354137895d43f3b3d810bfacd3945438e94dc5ac55fdac340352f
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">48&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>deleted:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sha256:f8c20f8bbcb684055b4fea470fdd169c86e87786940b3262335b12ec3adef418
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>deleted:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sha256:5af4f8f59b764c64c6def53f52ada809fe38d528441d08d01c206dfb3fc3b691
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>untagged: gcr.io/google-samples/hello-app:2.0
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;lt;Output truncated&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>There are additional image options; explore the sudo docker image &amp;ndash;help command and try
additional options.&lt;/li>
&lt;/ol></description></item><item><title>OpenTofu: Installation, Workflow, and Building Blocks</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/getting-started-with-opentofu/opentofu/installation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/getting-started-with-opentofu/opentofu/installation/</guid><description>&lt;h3 id="installing-opentofu" class="heading-link">
 Installing OpenTofu
 &lt;a href="#installing-opentofu" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>OpenTofu is very easy to install and works on various Linux, Windows, and MacOS distributions. The installation method differs depending on your choice of operating system. The easiest is to use the installer script made available in the &lt;a href="https://opentofu.org/docs/intro/install/">official documentation&lt;/a>.&lt;/p>
&lt;ol>
&lt;li>Download the Installer script:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>curl -fsSL https://get.opentofu.org/install-opentofu.sh -o install-opentofu.sh
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>Grant execute permissions and review the script:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>chmod +x install-opentofu.sh &lt;span style="color:#f92672">&amp;amp;&amp;amp;&lt;/span> less install-opentofu.sh
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>Install using the script:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>./install-opentofu.sh --install-method standalone
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;h3 id="how-does-opentofu-work" class="heading-link">
 How Does OpenTofu Work?
 &lt;a href="#how-does-opentofu-work" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>OpenTofu leverages &lt;a href="https://en.wikipedia.org/wiki/API">application programming interfaces (APIs)&lt;/a> to create and manage resources on cloud platforms and other services. Through providers, OpenTofu can interact with virtually any platform or service that has an accessible API.&lt;/p></description></item><item><title>Types of Clouds</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-cloud/cloud/types/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-cloud/cloud/types/</guid><description>&lt;h3 id="infrastructure-as-a-service-iaas" class="heading-link">
 Infrastructure as a Service (IaaS)
 &lt;a href="#infrastructure-as-a-service-iaas" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>&lt;strong>What it is&lt;/strong>: Imagine you&amp;rsquo;re building a house. IaaS is like renting the land and the basic utilities (electricity, water, etc.). You have the freedom to design and build your house the way you want.&lt;/p>
&lt;p>&lt;strong>For developers&lt;/strong>: With IaaS in the cloud, developers get the basic tools (servers, storage, and networking) to create and manage their own digital &amp;lsquo;houses&amp;rsquo; (applications). It&amp;rsquo;s like having your own digital construction site.&lt;/p></description></item><item><title>What Is Continuous Delivery (CD)?</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/ci-cd/cicd/c-delivery/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/ci-cd/cicd/c-delivery/</guid><description>&lt;h3 id="continuous-delivery-cd" class="heading-link">
 Continuous Delivery (CD)
 &lt;a href="#continuous-delivery-cd" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>Continuous Delivery is a software development practice that extends the principles of Continuous Integration to ensure that the codebase is always in a deployable state. The primary objective is to make software releases reliable, predictable, and sustainable. In a Continuous Delivery pipeline, automated testing, and deployment processes are integral components.&lt;/p>

&lt;h3 id="key-characteristics" class="heading-link">
 Key Characteristics
 &lt;a href="#key-characteristics" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Automated Testing&lt;/strong>: Similar to Continuous Integration, Continuous Delivery places a strong emphasis on automated testing. This includes unit tests, integration tests, and other forms of testing that validate the correctness and functionality of the codebase.&lt;/p></description></item><item><title>Cloud Deployment Models</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-cloud/cloud/deployment-models/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-cloud/cloud/deployment-models/</guid><description>&lt;p>Next, let&amp;rsquo;s delve into the different cloud deployment models:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Public Cloud&lt;/strong>&lt;/p>
&lt;p>In the realm of public cloud, computing resources are provided by a third-party cloud service provider and are made accessible to the general public over the internet. Most prominent examples are the top three providers - Amazon Web Services (AWS), Google Cloud Platform (GCP) and Microsoft Azure, who offer a comprehensive public cloud platform offering a myriad of services such as virtual machines, databases, and AI capabilities. Other notable players are Alibaba Cloud, IBM Cloud, Oracle Cloud Infrastructure (OCI), and DigitalOcean who offer similar features.&lt;/p></description></item><item><title>Core Concepts of OpenTofu</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/getting-started-with-opentofu/opentofu/core/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/getting-started-with-opentofu/opentofu/core/</guid><description>&lt;h3 id="providers" class="heading-link">
 Providers
 &lt;a href="#providers" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>OpenTofu uses &lt;a href="https://opentofu.org/docs/language/providers/">providers&lt;/a>, which are plugins enabling it to communicate with platforms like cloud services, SaaS applications, and APIs. To use OpenTofu, you must specify the providers your infrastructure needs. These providers are then downloaded and configured to work within your environment. Some may require additional details, such as the region of a cloud service or specific API endpoints, to function properly.&lt;/p>
&lt;p>Providers allow OpenTofu to manage specific types of resources and data. OpenTofu cannot interact with infrastructure platforms without providers, as a provider implements every resource type. Most providers are designed to handle a particular platform, whether a cloud service or an on-premises system. Some offer utility functions like generating unique identifiers or handling small automation tasks.&lt;/p></description></item><item><title>Infrastructure as Code (IaC) with Meshery</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/iac/iac/meshery/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/iac/iac/meshery/</guid><description>&lt;h3 id="meshery-as-infrastructure-as-code-iac" class="heading-link">
 Meshery as Infrastructure as Code (IaC)
 &lt;a href="#meshery-as-infrastructure-as-code-iac" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>Meshery is a cloud native management plane that enables Infrastructure as Code (IaC) through declarative configuration management. Using Meshery Designs, users can define, import, manage, and deploy infrastructure configurations in a structured and repeatable manner.&lt;/p>

&lt;h3 id="meshery-designs-the-foundation-of-iac" class="heading-link">
 Meshery Designs: The Foundation of IaC
 &lt;a href="#meshery-designs-the-foundation-of-iac" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>Meshery Designs are YAML-based configurations that serve as the core construct for managing infrastructure as code. They provide a declarative approach similar to Kubernetes manifests.&lt;/p></description></item><item><title>Observability in DevOps and SRE</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/introduction-to-observability/observability/devops-sre/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/introduction-to-observability/observability/devops-sre/</guid><description>&lt;h3 id="observability-in-devops" class="heading-link">
 Observability in DevOps
 &lt;a href="#observability-in-devops" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>Continuous Monitoring:&lt;/p>
&lt;ul>
&lt;li>Objective: DevOps emphasizes continuous integration, continuous delivery (CI/CD), and continuous monitoring. Observability is integrated into the monitoring phase to provide real-time insights into the health and performance of applications.&lt;/li>
&lt;li>Role: DevOps teams use observability tools to monitor application metrics, logs, and traces, enabling them to detect and address issues quickly.&lt;/li>
&lt;/ul>
&lt;p>Feedback Loops:&lt;/p>
&lt;ul>
&lt;li>Objective: DevOps practices involve shortening feedback loops to facilitate rapid iteration and improvement. Observability contributes to these feedback loops by providing actionable insights into the impact of changes on the system.&lt;/li>
&lt;li>Role: Developers receive feedback on how code changes affect system behavior, helping them make informed decisions and improvements.&lt;/li>
&lt;/ul>
&lt;p>Collaboration Across Teams:&lt;/p></description></item><item><title>Podman: An Alternative to Docker</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-containers-and-kubernetes/containers/podman/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-containers-and-kubernetes/containers/podman/</guid><description>&lt;h3 id="podman-overview" class="heading-link">
 Podman Overview
 &lt;a href="#podman-overview" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>Podman (Pod Manager) is an open source tool for managing OCI (Open Container Initiative) containers and pods. Its architecture and approach differ in several key aspects from Docker, particularly in how it operates without a daemon. Podman is a powerful container management tool that can be considered a potential alternative to Docker Engine.&lt;/p>

&lt;h3 id="key-features-of-podman" class="heading-link">
 Key Features of Podman
 &lt;a href="#key-features-of-podman" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Daemonless Architecture&lt;/strong>&lt;/p></description></item><item><title>Service Level Agreements (SLAs)</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/sre/sre/sla/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/sre/sre/sla/</guid><description>&lt;h3 id="sla" class="heading-link">
 SLA
 &lt;a href="#sla" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>An SLA is a formal contract between a service provider and its customers, outlining the expected level of service. It defines the agreed-upon quality of service, including performance metrics, availability, and support expectations. In Site Reliability Engineering (SRE), a Service Level Agreement (SLA) plays a crucial role in managing expectations and ensuring a service meets user needs.&lt;/p>

&lt;h3 id="benefits-of-slas" class="heading-link">
 Benefits of SLAs
 &lt;a href="#benefits-of-slas" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;ul>
&lt;li>Clear Communication: SLAs establish a shared understanding between SREs, developers, and stakeholders regarding the expected performance of a service.&lt;/li>
&lt;li>Improved Reliability: Having defined SLAs motivates SREs to proactively monitor and improve the system&amp;rsquo;s reliability to meet the agreed-upon targets.&lt;/li>
&lt;li>Risk Management: Clear SLAs help manage customer expectations and define potential consequences for outages. This allows for proactive planning and mitigation strategies.&lt;/li>
&lt;/ul>

&lt;h3 id="real-world-example" class="heading-link">
 Real-world Example
 &lt;a href="#real-world-example" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>Let&amp;rsquo;s take a look at an example of an SLA in SRE applied to an e-commerce platform.&lt;/p></description></item><item><title>Setting up OpenTofu</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/iac/lab/e4/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/iac/lab/e4/</guid><description>&lt;p>OpenTofu is a fork of Terraform that is open source, community-driven, and managed by the Linux Foundation.
OpenTofu is an infrastructure as code tool that lets you define both cloud and on-prem resources in
human-readable configuration files that you can version, reuse, and share. You can then use a consistent workflow to provision and manage all of your infrastructure throughout its lifecycle. OpenTofu can manage low-level components like compute, storage, and networking resources, as well as high-level components like DNS entries and SaaS features.&lt;/p></description></item><item><title>Tools in DevOps</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/introduction-to-devops-and-sre/devops/tools/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/introduction-to-devops-and-sre/devops/tools/</guid><description>&lt;h3 id="devops-tools" class="heading-link">
 DevOps Tools
 &lt;a href="#devops-tools" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>There are numerous DevOps tools available that cater to different stages of the software development lifecycle. Let&amp;rsquo;s take a look at some popular tools across various categories.&lt;/p>

&lt;h4 id="version-control" class="heading-link">
 Version Control
 &lt;a href="#version-control" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h4>
&lt;ul>
&lt;li>&lt;strong>Git&lt;/strong> is widely used for version control, and helps track changes in source code during development.&lt;/li>
&lt;li>&lt;strong>Subversion (SVN)&lt;/strong> is a centralized version control system. It allows users to keep track of all changes made to files and directories in a repository. SVN is known for its simplicity and is often used in projects where a centralized, linear workflow is preferred.&lt;/li>
&lt;li>&lt;strong>Bitbucket&lt;/strong> is a cloud-based platform offering Git-based version control, code review, and CI/CD tools. It offers features like code hosting, issue tracking, and pull requests, making it popular for open source projects and collaboration.&lt;/li>
&lt;li>&lt;strong>GitHub&lt;/strong> is a popular cloud-based platform for version control, social coding, and project management.&lt;/li>
&lt;/ul>

&lt;h4 id="continuous-integrationcontinuous-deployment-cicd" class="heading-link">
 Continuous Integration/Continuous Deployment (CI/CD)
 &lt;a href="#continuous-integrationcontinuous-deployment-cicd" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h4>
&lt;ul>
&lt;li>&lt;strong>Jenkins&lt;/strong> is an open source automation server that facilitates building, testing, and deploying code changes.&lt;/li>
&lt;li>&lt;strong>Travis CI&lt;/strong> is a CI/CD service that integrates with GitHub repositories for automated testing and deployment.&lt;/li>
&lt;li>&lt;strong>CircleCI&lt;/strong> is a cloud-based CI/CD platform supporting automation and parallel testing.&lt;/li>
&lt;/ul>

&lt;h4 id="configuration-management" class="heading-link">
 Configuration Management
 &lt;a href="#configuration-management" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h4>
&lt;ul>
&lt;li>&lt;strong>Ansible&lt;/strong> is an open source automation tool that simplifies configuration management, application deployment, and task automation.&lt;/li>
&lt;li>&lt;strong>Chef&lt;/strong> enables infrastructure automation and configuration management using reusable scripts called recipes.&lt;/li>
&lt;li>&lt;strong>Puppet&lt;/strong> is a configuration management tool for automating the provisioning and management of infrastructure.&lt;/li>
&lt;/ul>

&lt;h4 id="containerization-and-orchestration" class="heading-link">
 Containerization and Orchestration
 &lt;a href="#containerization-and-orchestration" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h4>
&lt;ul>
&lt;li>&lt;strong>Docker&lt;/strong> is a very popular platform for developing, shipping, and running applications in containers.&lt;/li>
&lt;li>&lt;strong>Podman&lt;/strong> is an open source container engine that offers a Docker-compatible command-line interface and runtime. It features image creation, management, and deployment, but lacks some advanced features like built-in orchestration.&lt;/li>
&lt;li>&lt;strong>LXC (Linux Containers)&lt;/strong> is a lightweight containerization technology built into the Linux kernel, offering efficient resource utilization and isolation. It is popular for its simplicity and portability, but lacks some advanced features of other tools.&lt;/li>
&lt;li>&lt;strong>Kubernetes&lt;/strong> is an open source container orchestration platform for automating the deployment, scaling, and management of containerized applications. It is considered the de facto orchestration platform for containers due to its popularity.&lt;/li>
&lt;li>&lt;strong>OpenShift&lt;/strong> is a container platform developed by Red Hat. It extends Kubernetes and provides additional features for enterprise applications, including source-to-image builds and developer-focused tools.&lt;/li>
&lt;li>&lt;strong>Apache Mesos&lt;/strong> is an open source cluster management and orchestration platform designed to simplify the management of distributed applications and resources in data centers or cloud environments.&lt;/li>
&lt;/ul>

&lt;h4 id="infrastructure-as-code-iac" class="heading-link">
 Infrastructure as Code (IaC)
 &lt;a href="#infrastructure-as-code-iac" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h4>
&lt;ul>
&lt;li>&lt;strong>Meshery&lt;/strong> is a cloud native management plane that provides lifecycle, performance, and configuration management for cloud native infrastructure, including service meshes and Kubernetes.&lt;/li>
&lt;li>&lt;strong>Terraform&lt;/strong> is a tool for building, changing, and versioning infrastructure efficiently and safely.&lt;/li>
&lt;li>&lt;strong>AWS CloudFormation&lt;/strong> is Amazon&amp;rsquo;s IaC service for provisioning and managing AWS resources using templates.&lt;/li>
&lt;li>&lt;strong>OpenTofu&lt;/strong> is a fork of Terraform that is open source, community-driven, and managed by the Linux Foundation.&lt;/li>
&lt;/ul>

&lt;h4 id="continuous-monitoring" class="heading-link">
 Continuous Monitoring
 &lt;a href="#continuous-monitoring" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h4>
&lt;ul>
&lt;li>&lt;strong>Prometheus&lt;/strong> is an open source monitoring and alerting toolkit designed for reliability and scalability.&lt;/li>
&lt;li>&lt;strong>Zabbix&lt;/strong> is a comprehensive monitoring solution for servers, networks, applications, and other IT infrastructure. It offers monitoring capabilities, alerting, and reporting features. It supports various monitoring protocols and provides extensive customization options.&lt;/li>
&lt;li>&lt;strong>Nagios&lt;/strong> is a mature and popular open source monitoring tool with a focus on server and network monitoring. It offers a flexible plugin system for extending its monitoring capabilities and features robust alerting and notification options.&lt;/li>
&lt;li>&lt;strong>OpenNMS&lt;/strong> is an open source network management system with built-in monitoring capabilities. It provides comprehensive network discovery, mapping, and monitoring features, and offers a web-based interface for managing and visualizing network performance.&lt;/li>
&lt;li>&lt;strong>Grafana&lt;/strong> is a visualization platform that integrates with various data sources, including Prometheus, for creating interactive and shareable dashboards.&lt;/li>
&lt;li>&lt;strong>Meshery&lt;/strong> is a cloud native management plane that provides performance analysis and monitoring for cloud native applications.&lt;/li>
&lt;/ul>

&lt;h4 id="collaboration-and-communication" class="heading-link">
 Collaboration and Communication
 &lt;a href="#collaboration-and-communication" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h4>
&lt;ul>
&lt;li>&lt;strong>Slack&lt;/strong> is a team collaboration tool for communication and sharing updates.&lt;/li>
&lt;li>&lt;strong>Microsoft Teams&lt;/strong> is a communication and collaboration platform that integrates with other Microsoft tools.&lt;/li>
&lt;/ul>

&lt;h4 id="logging" class="heading-link">
 Logging
 &lt;a href="#logging" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h4>
&lt;ul>
&lt;li>&lt;strong>ELK Stack (Elasticsearch, Logstash, Kibana)&lt;/strong> is a set of tools for log management, enabling search, analysis, and visualization of log data.&lt;/li>
&lt;li>&lt;strong>Fluentd&lt;/strong> is a lightweight and high-performance log collector and forwarder. It offers flexible configuration and supports various input plugins for collecting logs from different sources. It integrates seamlessly with other logging tools and platforms.&lt;/li>
&lt;li>&lt;strong>Splunk&lt;/strong> is a comprehensive logging platform offering log collection, indexing, search, analysis, and visualization. It provides powerful real-time analytics and AI-driven insights for troubleshooting and security.&lt;/li>
&lt;li>&lt;strong>Datadog&lt;/strong> is a comprehensive monitoring platform offering log management, metrics collection, and application performance monitoring functionalities.&lt;/li>
&lt;/ul>

&lt;h4 id="source-code-management-scm" class="heading-link">
 Source Code Management (SCM)
 &lt;a href="#source-code-management-scm" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h4>
&lt;ul>
&lt;li>&lt;strong>Bitbucket&lt;/strong> is a Git repository management solution with features for code collaboration, continuous delivery, and more.&lt;/li>
&lt;li>&lt;strong>GitLab&lt;/strong> is a web-based Git repository manager with CI/CD, code review, and collaboration features.&lt;/li>
&lt;li>&lt;strong>GitHub&lt;/strong> is a very popular web-based platform that allows developers to store, track changes, and collaborate on code.&lt;/li>
&lt;/ul>
&lt;p>These tools, along with many others, form an ecosystem that supports the principles of DevOps, facilitating collaboration, automation, and efficiency throughout the software development lifecycle. It&amp;rsquo;s essential to choose tools based on your specific needs, the technologies you use, and your team&amp;rsquo;s preferences.&lt;/p></description></item><item><title>Uninstall Docker</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-containers-and-kubernetes/lab/e4/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-containers-and-kubernetes/lab/e4/</guid><description>&lt;ol>
&lt;li>Uninstall the Docker Engine, CLI, containerd, and Docker Compose packages:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>student@ubuntu:~$ sudo apt-get purge docker-ce docker-ce-cli containerd.io
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Reading package lists... Done
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Building dependency tree
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Reading state information... Done
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>The following packages were automatically installed and are no longer
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>required:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>libatasmart4 libblockdev-fs2 libblockdev-loop2 libblockdev-part-err2
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>libblockdev-part2 libblockdev-swap2 libblockdev-utils2 libblockdev2
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>libmbim-glib4 libmbim-proxy libmm-glib0 libnspr4
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>libnss3 libnuma1 libparted-fs-resize0 libqmi-glib5 libqmi-proxy
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>libudisks2-0 libxmlb2 pigz slirp4netns usb-modeswitch usb-modeswitch-data
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Use &lt;span style="color:#e6db74">&amp;#39;sudo apt autoremove&amp;#39;&lt;/span> to remove them.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>The following packages will be REMOVED:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>containerd.io* docker-buildx-plugin* docker-ce* docker-ce-cli*
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>docker-ce-rootless-extras* docker-compose-plugin*
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">0&lt;/span> upgraded, &lt;span style="color:#ae81ff">0&lt;/span> newly installed, &lt;span style="color:#ae81ff">6&lt;/span> to remove and &lt;span style="color:#ae81ff">10&lt;/span> not upgraded.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>After this operation, &lt;span style="color:#ae81ff">410&lt;/span> MB disk space will be freed.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Do you want to &lt;span style="color:#66d9ef">continue&lt;/span>? &lt;span style="color:#f92672">[&lt;/span>Y/n&lt;span style="color:#f92672">]&lt;/span> y
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">(&lt;/span>Reading database ... &lt;span style="color:#ae81ff">62643&lt;/span> files and directories currently installed.&lt;span style="color:#f92672">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Removing docker-ce-rootless-extras &lt;span style="color:#f92672">(&lt;/span>5:24.0.7-1~ubuntu.20.04~focal&lt;span style="color:#f92672">)&lt;/span> ...
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Removing docker-ce &lt;span style="color:#f92672">(&lt;/span>5:24.0.7-1~ubuntu.20.04~focal&lt;span style="color:#f92672">)&lt;/span> ...
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;lt;Output Trucncated&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>Images, containers, volumes, or custom configuration files on your host aren&amp;rsquo;t automatically removed.
To delete all images, containers, and volumes, run:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>student@ubuntu:~$ sudo rm -rf /var/lib/docker
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>student@ubuntu:~$ sudo rm -rf /var/lib/containerd
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>What Is Continuous Deployment (CD)?</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/ci-cd/cicd/cd/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/ci-cd/cicd/cd/</guid><description>&lt;h3 id="continuous-deployment-cd" class="heading-link">
 Continuous Deployment (CD)
 &lt;a href="#continuous-deployment-cd" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>Continuous Deployment takes the principles of Continuous Delivery a step further by automatically deploying every code change that passes automated testing directly to the production environment. The goal is to maximize efficiency and deliver new features or bug fixes to end-users as quickly as possible.&lt;/p>

&lt;h3 id="key-characteristics" class="heading-link">
 Key Characteristics
 &lt;a href="#key-characteristics" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Automated Production Deployment&lt;/strong>: The hallmark of Continuous Deployment is the automatic deployment of code changes to the production environment once they pass automated tests. This minimizes manual intervention in the release process.&lt;/p></description></item><item><title>Challenges in Observability</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/introduction-to-observability/observability/challenges/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/introduction-to-observability/observability/challenges/</guid><description>&lt;h3 id="what-observability-challenges-can-you-expect" class="heading-link">
 What observability challenges can you expect?
 &lt;a href="#what-observability-challenges-can-you-expect" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>

&lt;h4 id="data-volume-and-overhead" class="heading-link">
 Data Volume and Overhead
 &lt;a href="#data-volume-and-overhead" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h4>
&lt;p>&lt;strong>Challenge&lt;/strong>: Modern systems generate vast amounts of data, including logs, metrics, and traces. Managing and analyzing this volume of data can be overwhelming, leading to challenges in storage, processing, and the associated costs.&lt;/p>
&lt;p>&lt;strong>Solution&lt;/strong>: Implementing intelligent data sampling and aggregation techniques can help reduce the data volume without sacrificing essential insights.&lt;/p></description></item><item><title>Continuous Deployment and Continuous Delivery</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/ci-cd/cicd/cicd/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/ci-cd/cicd/cicd/</guid><description>&lt;p>Continuous Deployment (CD) and Continuous Delivery (CD) are practices closely related to Continuous Integration (CI) in the realm of software development. While they share some similarities, each has distinct characteristics that contribute to the overall goal of delivering high-quality software efficiently.&lt;/p>
&lt;p>In summary, Continuous Delivery and Continuous Deployment are practices that extend the benefits of Continuous Integration. Continuous Delivery emphasizes a reliable and automated process up to the production environment, with human intervention required for the final release decision. On the other hand, Continuous Deployment takes automation further by automatically deploying code changes to production, providing immediate access to new features for end-users. The choice between Continuous Delivery and Continuous Deployment depends on factors such as the organization&amp;rsquo;s risk tolerance, regulatory requirements, and the need for human oversight in the release process.&lt;/p></description></item><item><title>Installing Podman</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-containers-and-kubernetes/lab/e5/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-containers-and-kubernetes/lab/e5/</guid><description>&lt;ol>
&lt;li>Let’s &lt;a href="https://podman-desktop.io/downloads/">download&lt;/a> the latest Podman binaries and extract them to set up Podman on our host. Note: If you are running Ubuntu 20.10 or higher, you can simply use the package manager to install Podman.&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>student@ubuntu:~$ curl -fsSL -o podman-linux-amd64.tar.gz &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>https://github.com/mgoltzsche/podman-static/releases/latest/download/podmanlinux-amd64.tar.gz
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>student@ubuntu:~$ tar -xf podman-linux-amd64.tar.gz
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>student@ubuntu:~$ sudo cp -r podman-linux-amd64/usr podman-linux-amd64/etc /
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>student@ubuntu:~$ sudo ln -s /usr/bin/podman /usr/local/bin/podman
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>Verify the Podman installation:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>student@ubuntu:~$ podman --version
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>podman version 4.8.2
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>To explore all the available options with Podman, execute:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>student@ubuntu:~$ podman --help
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Usage:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>podman &lt;span style="color:#f92672">[&lt;/span>options&lt;span style="color:#f92672">]&lt;/span> &lt;span style="color:#f92672">[&lt;/span>command&lt;span style="color:#f92672">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Available Commands:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>attach Attach to a running container
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>auto-update Auto update containers according to their auto-update policy
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>build Build an image using instructions from Containerfiles
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>commit Create new image based on the changed container
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>compose Run compose workloads via an external provider such as
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>docker-compose or podman-compose
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>container Manage containers
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cp Copy files/folders between a container and the local
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>filesystem
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>create Create but &lt;span style="color:#66d9ef">do&lt;/span> not start a container
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>diff Display the changes to the object&lt;span style="color:#e6db74">&amp;#39;s file system
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">events Show podman system events
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">exec Run a process in a running container
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">export Export container&amp;#39;&lt;/span>s filesystem contents as a tar archive
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>generate Generate structured data based on containers, pods or volumes
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>healthcheck Manage health checks on containers
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>help Help about any command
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;lt;Output Truncated&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>List the existing container, by executing the following command:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>student@ubuntu:~$ sudo podman container ps
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>NAMES
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>Create a container, by executing the following command:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>student@ubuntu:~$ sudo podman container run hello-world
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>✔ docker.io/library/hello-world:latest
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Trying to pull docker.io/library/hello-world:latest...
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Getting image source signatures
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Copying blob c1ec31eb5944 &lt;span style="color:#66d9ef">done&lt;/span> |
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Copying config d2c94e258d &lt;span style="color:#66d9ef">done&lt;/span> |
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Writing manifest to image destination
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Hello from Docker!
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>This message shows that your installation appears to be working correctly.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>To generate this message, Docker took the following steps:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>1. The Docker client contacted the Docker daemon.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>2. The Docker daemon pulled the &lt;span style="color:#e6db74">&amp;#34;hello-world&amp;#34;&lt;/span> image from the Docker Hub.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">(&lt;/span>amd64&lt;span style="color:#f92672">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>3. The Docker daemon created a new container from that image which runs the
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>executable that produces the output you are currently reading.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>4. The Docker daemon streamed that output to the Docker client, which sent
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>it
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>to your terminal.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>To try something more ambitious, you can run an Ubuntu container with:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ docker run -it ubuntu bash
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Share images, automate workflows, and more with a free Docker ID:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>https://hub.docker.com/
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>We can list the available images on our host by executing the following command:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>student@ubuntu:~$ sudo podman image ls
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>REPOSITORY TAG IMAGE ID CREATED SIZE
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>docker.io/library/hello-world latest d2c94e258dcb &lt;span style="color:#ae81ff">8&lt;/span> months ago 26.3
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>kB
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>An Image can be built using Podman as well. We will use the same Dockerfile as in the earlier lab exercise.&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>student@ubuntu:~$ sudo podman image build . -t nginx:podman
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>STEP 1/4: FROM nginx
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>✔ docker.io/library/nginx:latest
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Trying to pull docker.io/library/nginx:latest...
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Getting image source signatures
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Copying blob af107e978371 &lt;span style="color:#66d9ef">done&lt;/span> |
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Copying blob 5e99d351b073 &lt;span style="color:#66d9ef">done&lt;/span> |
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Copying blob 336ba1f05c3e &lt;span style="color:#66d9ef">done&lt;/span> |
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Copying blob 8c37d2ff6efa &lt;span style="color:#66d9ef">done&lt;/span> |
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Copying blob 51d6357098de &lt;span style="color:#66d9ef">done&lt;/span> |
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Copying blob 782f1ecce57d &lt;span style="color:#66d9ef">done&lt;/span> |
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Copying blob 7b73345df136 &lt;span style="color:#66d9ef">done&lt;/span> |
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Copying config d453dd892d &lt;span style="color:#66d9ef">done&lt;/span> |
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Writing manifest to image destination
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>STEP 2/4: COPY . /usr/share/nginx/html
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>--&amp;gt; 95fa83a8887f
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>STEP 3/4: EXPOSE 80/tcp
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>--&amp;gt; aecf247e1625
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>STEP 4/4: CMD &lt;span style="color:#f92672">[&lt;/span>&lt;span style="color:#e6db74">&amp;#34;nginx&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;-g daemon off;&amp;#34;&lt;/span>&lt;span style="color:#f92672">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>COMMIT nginx:podman
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>--&amp;gt; 7958e43aed3c
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Successfully tagged localhost/nginx:podman
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>7958e43aed3c9591ca7ab5cae328dfdc8344a8a5420b07ac473bed169319869d
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>Podman provides a command line interface (CLI) familiar to anyone who has used the Docker Container Engine. Most users can simply alias Docker to Podman (alias docker=podman) without any problems. Explore further options and commands using Podman.&lt;/li>
&lt;/ol></description></item><item><title>Introduction to Terraform</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/iac/iac/terraform/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/iac/iac/terraform/</guid><description>&lt;h3 id="what-is-terraform" class="heading-link">
 What is Terraform?
 &lt;a href="#what-is-terraform" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>Imagine this: you&amp;rsquo;re a software developer, coding away on an amazing new app. But then comes the dreaded task – setting up the infrastructure for your application. Manually provisioning servers, configuring networks, and managing databases sounds like a nightmare, right?&lt;/p>
&lt;p>Well, fear no more! Infrastructure as Code (IaC) tools like Terraform are here to save the day. Think of Terraform as your personal infrastructure chef, taking care of all the tedious infrastructure setup and management tasks with ease.&lt;/p></description></item><item><title>Major Cloud Services</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-cloud/cloud/cloud-services/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-cloud/cloud/cloud-services/</guid><description>&lt;h3 id="cloud-services" class="heading-link">
 Cloud Services
 &lt;a href="#cloud-services" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Compute Services&lt;/strong>&lt;/p>
&lt;p>Compute services are like the engine of the cloud, providing the power to run applications and process data. Imagine them as the virtual brains behind your software. Virtual Machines (VMs) act as versatile computing environments, while containers, like those managed by Google Kubernetes Engine (GKE), Azure Kubernetes Service (AKS) or Rancher, offer a lightweight and scalable way to package and deploy applications.&lt;/p></description></item><item><title>The 7 Principles of SRE</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/sre/sre/principles/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/sre/sre/principles/</guid><description>&lt;h3 id="principles-of-sre" class="heading-link">
 Principles of SRE
 &lt;a href="#principles-of-sre" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>Site Reliability Engineering (SRE) follows a set of principles that guide the approach to building and maintaining reliable, scalable, and efficient software systems. These principles are key to the SRE philosophy.&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Embracing Risk&lt;/strong>&lt;/p>
&lt;p>SREs aim to identify the acceptable level of risk and manage it appropriately. No system is ever truly perfect. SRE acknowledges that there will be failures and focuses on minimizing their impact and ensuring fast recovery.&lt;/p></description></item><item><title>The Future of DevOps: Exciting Trends and Predictions</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/introduction-to-devops-and-sre/devops/future/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/introduction-to-devops-and-sre/devops/future/</guid><description>&lt;h3 id="the-future-of-devops" class="heading-link">
 The Future of DevOps
 &lt;a href="#the-future-of-devops" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>DevOps has revolutionized software development by fostering collaboration, automation, and rapid feedback loops. As technology continues to evolve at an unprecedented rate, it&amp;rsquo;s natural to wonder what the future holds for this vital practice.&lt;/p>

&lt;h4 id="emerging-trends" class="heading-link">
 Emerging Trends
 &lt;a href="#emerging-trends" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h4>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>AI-powered automation&lt;/strong>&lt;/p>
&lt;p>Artificial Intelligence (AI) and Machine Learning (ML) are poised to significantly impact DevOps. AI-powered tools will automate tedious tasks, predict failures, and optimize software delivery processes, freeing up human resources for higher-level thinking and strategic decisions.&lt;/p></description></item><item><title>The Need for Container Orchestration</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-containers-and-kubernetes/containers/need/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-containers-and-kubernetes/containers/need/</guid><description>&lt;h3 id="why-is-container-orchestration-essential" class="heading-link">
 Why is Container Orchestration Essential?
 &lt;a href="#why-is-container-orchestration-essential" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>As containerization has become increasingly popular for deploying applications, the need for container orchestration has also grown. While individual containers offer many advantages, managing a large number of them across different environments can quickly become complex and cumbersome. Container orchestration platforms address this challenge by automating the deployment, scaling, and management of containerized applications.&lt;/p>

&lt;h4 id="automating-container-management" class="heading-link">
 Automating container management
 &lt;a href="#automating-container-management" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h4>
&lt;p>Manually managing a large number of containers is error-prone and time-consuming. Container orchestration platforms automate many tasks, including:&lt;/p></description></item><item><title>Building SRE Practices in Your Organization</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/sre/sre/sre-practice/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/sre/sre/sre-practice/</guid><description>&lt;h3 id="building-sre-practices" class="heading-link">
 Building SRE Practices
 &lt;a href="#building-sre-practices" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>Building a robust Site Reliability Engineering (SRE) practice within your organization requires a multi-pronged approach.&lt;/p>

&lt;h4 id="gain-buy-in-and-support" class="heading-link">
 Gain buy-in and support
 &lt;a href="#gain-buy-in-and-support" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h4>
&lt;p>Demonstrate the value of SRE: Highlight the benefits of improved reliability, performance, and efficiency to key stakeholders.&lt;/p>
&lt;p>Secure funding and resources: Allocate budget and personnel to build and maintain a dedicated SRE team.&lt;/p>
&lt;p>Foster a culture of collaboration: Encourage collaboration between SRE, development, and operations teams.&lt;/p></description></item><item><title>Challenges and Opportunities</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/introduction-to-devops-and-sre/devops/challenges/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/introduction-to-devops-and-sre/devops/challenges/</guid><description>&lt;h3 id="challenges" class="heading-link">
 Challenges
 &lt;a href="#challenges" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>Despite the exciting possibilities, the future of DevOps also presents challenges. These include:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Managing the complexity of new technologies&lt;/strong>&lt;/p>
&lt;p>Integrating AI, ML, cloud platforms, and other advanced technologies can be complex and require significant expertise.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Ensuring security in a rapidly evolving environment&lt;/strong>&lt;/p>
&lt;p>The increasing reliance on automation and self-service platforms raises security concerns that need to be addressed effectively.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Fostering a culture of collaboration and shared responsibility&lt;/strong>&lt;/p></description></item><item><title>Continuous Integration (CI) Principles and Practices</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/ci-cd/cicd/ci-principles/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/ci-cd/cicd/ci-principles/</guid><description>&lt;h3 id="continuous-integration-ci-principles" class="heading-link">
 Continuous Integration (CI) Principles
 &lt;a href="#continuous-integration-ci-principles" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Frequent Code Integration&lt;/strong>: Developers integrate their code changes into a shared repository frequently, ensuring that the codebase is continuously evolving in a collaborative manner.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Automated Builds&lt;/strong>: Every integration triggers an automated build process, including compiling the code, running tests, and creating executable artifacts. Automation ensures consistency and reliability.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Automated Testing&lt;/strong>: A comprehensive suite of automated tests, including unit tests and integration tests, is run with each integration to detect and address issues early in the development process.&lt;/p></description></item><item><title>Introduction to OpenTofu</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/iac/iac/opentofu/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/iac/iac/opentofu/</guid><description>&lt;h3 id="what-is-opentofu" class="heading-link">
 What is OpenTofu?
 &lt;a href="#what-is-opentofu" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>&lt;a href="https://opentofu.org/">OpenTofu&lt;/a> is an open source IaC tool forked from Terraform version 1.5. It inherits the familiar syntax and functionality of Terraform, making it easy for existing Terraform users to pick up and use. However, OpenTofu goes beyond simply replicating Terraform. It introduces several key enhancements and features that cater to the needs of the open source community and address the limitations of the BSL.&lt;/p></description></item><item><title>Kubernetes: The Orchestrator of Containerized Applications</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-containers-and-kubernetes/containers/kubernetes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-containers-and-kubernetes/containers/kubernetes/</guid><description>&lt;h3 id="overview" class="heading-link">
 Overview
 &lt;a href="#overview" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>Kubernetes, often abbreviated as k8s, is an open source platform for automating the deployment, scaling, and management of containerized applications. It has become the de facto standard for container orchestration, powering a vast number of applications across various industries.&lt;/p>
&lt;p>Imagine you have a large orchestra with many different instruments. Each instrument plays its own unique part, but they all need to work together in harmony to create beautiful music. Kubernetes is like the conductor of this orchestra, coordinating the different containerized applications (instruments) to ensure your application runs smoothly and efficiently.&lt;/p></description></item><item><title>Popular Observability Tools</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/introduction-to-observability/observability/tools/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/introduction-to-observability/observability/tools/</guid><description>&lt;h3 id="tools" class="heading-link">
 Tools
 &lt;a href="#tools" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>

&lt;h4 id="monitoring-and-metrics" class="heading-link">
 Monitoring and Metrics
 &lt;a href="#monitoring-and-metrics" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h4>
&lt;p>&lt;strong>Prometheus&lt;/strong> is an open source monitoring and alerting toolkit designed for reliability and scalability. It collects metrics from configured targets, stores them, and makes them available for querying.&lt;/p>
&lt;p>&lt;strong>Grafana&lt;/strong> is a popular open source platform for visualizing and analyzing metrics. Grafana integrates with various data sources, including Prometheus, InfluxDB, and Elasticsearch.&lt;/p>
&lt;p>&lt;strong>InfluxDB&lt;/strong> is a high-performance, distributed, and scalable time-series database. It is commonly used for storing and querying metrics data.&lt;/p></description></item><item><title>Setting up a Kubernetes Cluster with kind</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-containers-and-kubernetes/lab/e6/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-containers-and-kubernetes/lab/e6/</guid><description>&lt;p>&lt;a href="https://kind.sigs.k8s.io/">kind&lt;/a> is a tool for running local Kubernetes clusters using Docker container nodes. kind was primarily designed for testing Kubernetes itself, but may be used for local development or CI. We have uninstalled Docker in exercise 4; kind needs Docker as a prerequisite; let’s follow Exercise 4.1 steps and install Docker.
Note: Docker should be installed on the node before proceeding further.
To interact with our Kubernetes cluster, kubectl is the primary go to command line tool. Let us install kubectl on our node by executing these commands:&lt;/p></description></item><item><title>Continuous Delivery (CD) and Continuous Deployment (CD) Principles and Practices</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/ci-cd/cicd/cd-principles/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/ci-cd/cicd/cd-principles/</guid><description>&lt;h3 id="principles" class="heading-link">
 Principles
 &lt;a href="#principles" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Consistent Deployment Process&lt;/strong>: Ensure that the deployment process is consistent and repeatable, reducing the risk of errors and ensuring that each release is reliable.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Automated Deployment&lt;/strong>: Automate the deployment process to create a streamlined and efficient method for releasing software. This includes deploying to staging environments for additional testing.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Environment Parity&lt;/strong>: Strive for parity between different environments, such as development, staging, and production, to minimize issues related to environment-specific differences.&lt;/p></description></item><item><title>Deploy a Sample Application</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-containers-and-kubernetes/lab/e7/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-containers-and-kubernetes/lab/e7/</guid><description>&lt;p>In this exercise, we will deploy a sample application in Kubernetes and access it.&lt;/p>
&lt;ol>
&lt;li>Create webapp.yaml file with contents below.
This file defines a Kubernetes deployment for your Sample Application.&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">apiVersion&lt;/span>: &lt;span style="color:#ae81ff">apps/v1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">kind&lt;/span>: &lt;span style="color:#ae81ff">Deployment&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">metadata&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">name&lt;/span>: &lt;span style="color:#ae81ff">webapp&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">spec&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">replicas&lt;/span>: &lt;span style="color:#ae81ff">2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">selector&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">matchLabels&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">app&lt;/span>: &lt;span style="color:#ae81ff">webapp&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">template&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">metadata&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">labels&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">app&lt;/span>: &lt;span style="color:#ae81ff">webapp&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">spec&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">containers&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f92672">image&lt;/span>: &lt;span style="color:#ae81ff">nginx&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">name&lt;/span>: &lt;span style="color:#ae81ff">nginx&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>Deploy the application:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>kubectl apply -f webapp.yaml
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>Verify the deployment:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>kubectl get deployments
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>NAME READY UP-TO-DATE AVAILABLE AGE
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>webapp 2/2 &lt;span style="color:#ae81ff">2&lt;/span> &lt;span style="color:#ae81ff">2&lt;/span> 89s
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>Set up port forwarding to access the application.
In this step, we are establishing a port forwarding rule that redirects network traffic from a specific port on your
local machine to the corresponding port on the Kubernetes pod hosting the server. By doing so, you enable
direct access to the server via &lt;a href="http://localhost:8080">http://localhost:8080&lt;/a> from your local computer. This action bridges the
network gap between your local environment and the isolated Kubernetes pod, allowing you to test and interact
with the deployed application as if it were running locally. It&amp;rsquo;s important to run this in a new terminal tab to
keep the port forwarding active throughout your testing session.&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>kubectl port-forward deploy/webapp 8080:80
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Forwarding from 127.0.0.1:8080 -&amp;gt; &lt;span style="color:#ae81ff">80&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Forwarding from &lt;span style="color:#f92672">[&lt;/span>::1&lt;span style="color:#f92672">]&lt;/span>:8080 -&amp;gt; &lt;span style="color:#ae81ff">80&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>Test the sample application by sending an HTTP request.&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>curl http://localhost:8080/
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;lt;!DOCTYPE html&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;lt;html&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;lt;head&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;lt;title&amp;gt;Welcome to nginx!&amp;lt;/title&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;lt;style&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>html &lt;span style="color:#f92672">{&lt;/span> color-scheme: light dark; &lt;span style="color:#f92672">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;lt;Output Truncated&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>Cleanup by deleting the deployment:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>kubectl delete deploy webapp
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Future Trends and Evolutions in SRE</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/sre/sre/future/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/sre/sre/future/</guid><description>&lt;h3 id="trends-and-evolutions" class="heading-link">
 Trends and Evolutions
 &lt;a href="#trends-and-evolutions" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>The world of Site Reliability Engineering (SRE) is constantly evolving, driven by the ever-changing landscape of technology and the increasing demands for reliable, scalable, and secure systems.&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>AI and Machine Learning Integration&lt;/strong>: SRE teams will increasingly use AI and machine learning to automate routine tasks, predict system failures, and optimize performance. This trend includes the development of self-healing systems that can automatically detect and rectify issues without human intervention.&lt;/p></description></item><item><title>Introduction to AWS CloudFormation</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/iac/iac/aws/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/iac/iac/aws/</guid><description>&lt;h3 id="overview-of-aws-cloudformation" class="heading-link">
 Overview of AWS CloudFormation
 &lt;a href="#overview-of-aws-cloudformation" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>AWS CloudFormation is a powerful Infrastructure as Code (IaC) service offered by Amazon Web Services (AWS) that allows you to define, provision, and manage your cloud infrastructure in a declarative way. With CloudFormation, you can describe your infrastructure using templates, which are written in JSON or YAML and contain a set of instructions for AWS to create and configure the resources you need. This approach provides several key benefits, including:&lt;/p></description></item><item><title>Key Components of Kubernetes</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-containers-and-kubernetes/containers/components/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-containers-and-kubernetes/containers/components/</guid><description>&lt;h3 id="control-plane-node" class="heading-link">
 Control Plane Node
 &lt;a href="#control-plane-node" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>Control plane nodes in Kubernetes play a critical role in managing the cluster&amp;rsquo;s state and configuration. They are responsible for making global decisions about the cluster (like scheduling), as well as detecting and responding to cluster events (like starting up a new pod when a deployment&amp;rsquo;s &lt;strong>replicas&lt;/strong> field is unsatisfied). Here are the key components of control plane nodes:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>API Server&lt;/p></description></item><item><title>Understanding Release Strategies</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/ci-cd/cicd/stategies/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/ci-cd/cicd/stategies/</guid><description>&lt;h3 id="release-strategies" class="heading-link">
 Release Strategies
 &lt;a href="#release-strategies" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>Release strategies play a crucial role in the software development lifecycle, determining how and when new features, enhancements, and bug fixes are delivered to end-users. Different release strategies offer varying degrees of control, risk management, and flexibility.&lt;/p>

&lt;h4 id="rolling-release" class="heading-link">
 Rolling Release
 &lt;a href="#rolling-release" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h4>
&lt;p>In a rolling release strategy, new features and updates are continuously and incrementally released as soon as they are ready. There are no distinct version numbers or major releases. The software is always in a state of evolution.&lt;/p></description></item><item><title>What Kubernetes is Not</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-containers-and-kubernetes/containers/not-kubernetes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-containers-and-kubernetes/containers/not-kubernetes/</guid><description>&lt;h3 id="kubernetes-is-not-a" class="heading-link">
 Kubernetes is NOT a
 &lt;a href="#kubernetes-is-not-a" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>

&lt;h4 id="kubernetes-is-not-a-traditional-virtualization-platform" class="heading-link">
 Kubernetes is not a Traditional Virtualization Platform
 &lt;a href="#kubernetes-is-not-a-traditional-virtualization-platform" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h4>
&lt;p>Kubernetes operates at the container orchestration level, not at the virtual machine level. It doesn&amp;rsquo;t provide virtualization in the same way as hypervisors like VMware or KVM. Instead, it manages and orchestrates containerized applications.&lt;/p>

&lt;h4 id="kubernetes-is-not-a-containerization-platform" class="heading-link">
 Kubernetes is not a Containerization Platform
 &lt;a href="#kubernetes-is-not-a-containerization-platform" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h4>
&lt;p>While Kubernetes works with containers, it is not a containerization platform itself. It relies on container runtimes like containerd or Docker to manage and run containers. Kubernetes focuses on orchestrating and automating container deployment, scaling, and management.&lt;/p></description></item><item><title>Developing Container Technologies</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-containers-and-kubernetes/containers/container-technology/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-containers-and-kubernetes/containers/container-technology/</guid><description>&lt;h4 id="containerd" class="heading-link">
 Containerd
 &lt;a href="#containerd" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h4>
&lt;p>While not exactly emerging (it has been around for a few years), &lt;a href="https://containerd.io/">containerd&lt;/a> is worth mentioning. It&amp;rsquo;s a core container runtime that was originally part of Docker but has become a standalone project and a key component of various container platforms.&lt;/p>

&lt;h4 id="podman" class="heading-link">
 Podman
 &lt;a href="#podman" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h4>
&lt;p>&lt;a href="https://podman.io/">Podman&lt;/a> is an open source container management tool that aims to provide a daemonless, rootless container experience. It allows users to manage containers without requiring a central daemon process, making it a lightweight alternative to Docker.&lt;/p></description></item><item><title>GitOps as a Deployment Tool</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/ci-cd/cicd/gitops/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/ci-cd/cicd/gitops/</guid><description>&lt;h3 id="gitops-overview" class="heading-link">
 GitOps Overview
 &lt;a href="#gitops-overview" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;p>GitOps is a deployment methodology that leverages Git as a single source of truth for infrastructure and application configuration. This approach enables developers to manage their applications and infrastructure in a declarative manner, using familiar Git workflows.&lt;/p>

&lt;h3 id="key-principles-of-gitops" class="heading-link">
 Key principles of GitOps
 &lt;a href="#key-principles-of-gitops" class="heading-anchor" aria-label="Permalink to this heading">🔗&lt;/a>
&lt;/h3>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Declarative configuration&lt;/strong>: The desired state of the infrastructure and application is declared in Git repositories as YAML manifests, Helm charts, or other declarative formats.&lt;/p></description></item><item><title/><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/introduction/course-information/overview/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/introduction/course-information/overview/</guid><description/></item><item><title>Course Test</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/getting-started-with-opentofu/test/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/getting-started-with-opentofu/test/</guid><description/></item><item><title>Course Test</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-meshery/introduction-to-meshery/test/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-meshery/introduction-to-meshery/test/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/ambassador-edge-stack-api-gateway-with-meshery/conclusion/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/ambassador-edge-stack-api-gateway-with-meshery/conclusion/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/ambassador-edge-stack-api-gateway-with-meshery/design-interpretation/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/ambassador-edge-stack-api-gateway-with-meshery/design-interpretation/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/ambassador-edge-stack-api-gateway-with-meshery/edge-stack-configuration/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/ambassador-edge-stack-api-gateway-with-meshery/edge-stack-configuration/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/ambassador-edge-stack-api-gateway-with-meshery/introduction/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/ambassador-edge-stack-api-gateway-with-meshery/introduction/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/deploying-wordpress-and-mysql-with-persistent-volumes-with-meshery/conclusion/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/deploying-wordpress-and-mysql-with-persistent-volumes-with-meshery/conclusion/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/deploying-wordpress-and-mysql-with-persistent-volumes-with-meshery/configure-components/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/deploying-wordpress-and-mysql-with-persistent-volumes-with-meshery/configure-components/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/deploying-wordpress-and-mysql-with-persistent-volumes-with-meshery/deploy/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/deploying-wordpress-and-mysql-with-persistent-volumes-with-meshery/deploy/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/deploying-wordpress-and-mysql-with-persistent-volumes-with-meshery/group-components/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/deploying-wordpress-and-mysql-with-persistent-volumes-with-meshery/group-components/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/deploying-wordpress-and-mysql-with-persistent-volumes-with-meshery/import-designs/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/deploying-wordpress-and-mysql-with-persistent-volumes-with-meshery/import-designs/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/deploying-wordpress-and-mysql-with-persistent-volumes-with-meshery/introduction/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/deploying-wordpress-and-mysql-with-persistent-volumes-with-meshery/introduction/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/deploying-wordpress-and-mysql-with-persistent-volumes-with-meshery/visualize/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/deploying-wordpress-and-mysql-with-persistent-volumes-with-meshery/visualize/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/explore-dapr-with-meshery/conclusion/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/explore-dapr-with-meshery/conclusion/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/explore-dapr-with-meshery/deploy-dapr-control-plane/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/explore-dapr-with-meshery/deploy-dapr-control-plane/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/explore-dapr-with-meshery/deploy-dapr-statestore-component/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/explore-dapr-with-meshery/deploy-dapr-statestore-component/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/explore-dapr-with-meshery/deploy-python-and-nodejs-application/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/explore-dapr-with-meshery/deploy-python-and-nodejs-application/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/explore-dapr-with-meshery/deploy-redis/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/explore-dapr-with-meshery/deploy-redis/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/explore-dapr-with-meshery/introduction/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/explore-dapr-with-meshery/introduction/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/explore-dapr-with-meshery/view-application-logs/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/explore-dapr-with-meshery/view-application-logs/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/scalable-postgres-with-cloudnativepg/introduction/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/scalable-postgres-with-cloudnativepg/introduction/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-meshery/introduction-to-meshery/configuring-meshery/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-meshery/introduction-to-meshery/configuring-meshery/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-meshery/introduction-to-meshery/creating-designs/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-meshery/introduction-to-meshery/creating-designs/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-meshery/introduction-to-meshery/deploying-meshery-designs/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-meshery/introduction-to-meshery/deploying-meshery-designs/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-meshery/introduction-to-meshery/interpreting-meshery-designs/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-meshery/introduction-to-meshery/interpreting-meshery-designs/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-meshery/introduction-to-meshery/meshery-concepts/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-meshery/introduction-to-meshery/meshery-concepts/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-meshery/introduction-to-meshery/reviewing-designs/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-meshery/introduction-to-meshery/reviewing-designs/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-meshery/introduction-to-meshery/using-workspaces-effectively/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-meshery/introduction-to-meshery/using-workspaces-effectively/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/advanced-concepts-of-service-meshes/deploy-an-application/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/advanced-concepts-of-service-meshes/deploy-an-application/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/advanced-concepts-of-service-meshes/expose-services/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/advanced-concepts-of-service-meshes/expose-services/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/advanced-concepts-of-service-meshes/getting-started/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/advanced-concepts-of-service-meshes/getting-started/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/advanced-concepts-of-service-meshes/observability/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/advanced-concepts-of-service-meshes/observability/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/advanced-concepts-of-service-meshes/service-security-capabilities/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/advanced-concepts-of-service-meshes/service-security-capabilities/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/advanced-concepts-of-service-meshes/webassembly-and-intelligent-data-planes/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/advanced-concepts-of-service-meshes/webassembly-and-intelligent-data-planes/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/introduction-to-service-meshes-istio/circuit-breaking/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/introduction-to-service-meshes-istio/circuit-breaking/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/introduction-to-service-meshes-istio/deploy-an-application/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/introduction-to-service-meshes-istio/deploy-an-application/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/introduction-to-service-meshes-istio/expose-services/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/introduction-to-service-meshes-istio/expose-services/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/introduction-to-service-meshes-istio/fault-injection/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/introduction-to-service-meshes-istio/fault-injection/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/introduction-to-service-meshes-istio/getting-started/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/introduction-to-service-meshes-istio/getting-started/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/introduction-to-service-meshes-istio/mutual-tls/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/introduction-to-service-meshes-istio/mutual-tls/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/introduction-to-service-meshes-istio/observability/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/introduction-to-service-meshes-istio/observability/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/introduction-to-service-meshes-istio/routing-and-canary/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/introduction-to-service-meshes-istio/routing-and-canary/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/introduction-to-service-meshes-linkerd/dashboard/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/introduction-to-service-meshes-linkerd/dashboard/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/introduction-to-service-meshes-linkerd/debugging/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/introduction-to-service-meshes-linkerd/debugging/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/introduction-to-service-meshes-linkerd/deploy-an-application/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/introduction-to-service-meshes-linkerd/deploy-an-application/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/introduction-to-service-meshes-linkerd/expose-services/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/introduction-to-service-meshes-linkerd/expose-services/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/introduction-to-service-meshes-linkerd/fault-injection/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/introduction-to-service-meshes-linkerd/fault-injection/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/introduction-to-service-meshes-linkerd/getting-started/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/introduction-to-service-meshes-linkerd/getting-started/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/introduction-to-service-meshes-linkerd/observability/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/introduction-to-service-meshes-linkerd/observability/quiz/</guid><description/></item><item><title>Quiz</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/introduction-to-service-meshes-linkerd/traffic-splitting/quiz/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/introduction-to-service-meshes-linkerd/traffic-splitting/quiz/</guid><description/></item><item><title>Test</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/ci-cd/cicd/test/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/ci-cd/cicd/test/</guid><description/></item><item><title>Test</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/ci-cd/intro/test/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/ci-cd/intro/test/</guid><description/></item><item><title>Test</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/ci-cd/lab/test/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/ci-cd/lab/test/</guid><description/></item><item><title>Test</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/ci-cd/test/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/ci-cd/test/</guid><description/></item><item><title>Test</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/introduction-to-observability/intro/test/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/introduction-to-observability/intro/test/</guid><description/></item><item><title>Test</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/introduction-to-observability/lab/test/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/introduction-to-observability/lab/test/</guid><description/></item><item><title>Test</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/introduction-to-observability/observability/test/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/introduction-to-observability/observability/test/</guid><description/></item><item><title>Test</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/introduction-to-observability/test/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/introduction-to-observability/test/</guid><description/></item><item><title>Test</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/test/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/automation-and-reliability/test/</guid><description/></item><item><title>Test</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/iac/test/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/iac/test/</guid><description/></item><item><title>Test</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-cloud/test/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-cloud/test/</guid><description/></item><item><title>Test</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-containers-and-kubernetes/test/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/cloud-container-and-infrastructure/introduction-to-containers-and-kubernetes/test/</guid><description/></item><item><title>Test</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/introduction-to-devops-and-sre/devops/test/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/introduction-to-devops-and-sre/devops/test/</guid><description/></item><item><title>Test</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/introduction-to-devops-and-sre/introduction/test/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/introduction-to-devops-and-sre/introduction/test/</guid><description/></item><item><title>Test</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/introduction-to-devops-and-sre/pre-devops/test/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/introduction-to-devops-and-sre/pre-devops/test/</guid><description/></item><item><title>Test</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/introduction-to-devops-and-sre/test/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/introduction-to-devops-and-sre/test/</guid><description/></item><item><title>Test</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/introduction-to-devops-and-sre/what-is-devops/test/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/introduction-to-devops-and-sre/what-is-devops/test/</guid><description/></item><item><title>Test</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/sre/intro/test/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/sre/intro/test/</guid><description/></item><item><title>Test</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/sre/sre/test/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/sre/sre/test/</guid><description/></item><item><title>Test</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/sre/test/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/foundations-of-devops-and-sre/sre/test/</guid><description/></item><item><title>Test</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/ambassador-edge-stack-api-gateway-with-meshery/test/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/ambassador-edge-stack-api-gateway-with-meshery/test/</guid><description/></item><item><title>Test</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/deploying-wordpress-and-mysql-with-persistent-volumes-with-meshery/test/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/deploying-wordpress-and-mysql-with-persistent-volumes-with-meshery/test/</guid><description/></item><item><title>Test</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/explore-dapr-with-meshery/test/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/explore-dapr-with-meshery/test/</guid><description/></item><item><title>Test</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/scalable-postgres-with-cloudnativepg/test/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-kubernetes-for-engineers/scalable-postgres-with-cloudnativepg/test/</guid><description/></item><item><title>Test</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/advanced-concepts-of-service-meshes/test/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/advanced-concepts-of-service-meshes/test/</guid><description/></item><item><title>Test</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/introduction-to-service-meshes-istio/test/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/introduction-to-service-meshes-istio/test/</guid><description/></item><item><title>Test</title><link>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/introduction-to-service-meshes-linkerd/test/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/layer5-academy/pr-preview/pr-202/learning-paths/d011fd20-a3f5-4480-883b-dfb34321d168/mastering-service-meshes-for-developers/introduction-to-service-meshes-linkerd/test/</guid><description/></item></channel></rss>