• Stars
    star
    6,485
  • Rank 5,854 (Top 0.2 %)
  • Language
  • Created over 1 year ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A roadmap to learn Kubernetes from scratch (Beginner to Advanced level)

Hit the Star! โญ

If you are planning to use this repo for reference, please hit the star. Thanks!

Kubernetes Learning Roadmap

The Kubernetes Learning Roadmap is constantly updated with new content, so you can be sure that you're getting the latest and most up-to-date information available.

Kubernetes Certification Coupon

๐Ÿš€ CKA, CKAD, CKS, or KCNA exam aspirants can save $80 today using code DCUBE20 atย https://kube.promo/devops. It is a limited-time offer from Linux Foundation.

For the best savings, opt for the CKA + CKS bundle ($210 Savings). Use code DCUBE20 at https://kube.promo/bundle

Note: You have one year of validity to appear for the certification exam after registration

Table of Contents

Kubernetes Learning Prerequisites

If you want to learn Kubernetes, it's important to start with the basics. That means brushing up on your IT fundamentals first because Kubernetes builds on those. Once you have a good grasp of the basics, learning Kubernetes can be fun and easy. So don't skip the fundamentals โ€“ take some time to study them before diving into Kubernetes!

Learn Kubernetes Architecture

The following image shows the high-level kubernetes architecture and how external services connect to the cluster.

kubernetes-architecture

Refer to the following documents to learn the Kubernetes Architecture.

$1000+ Free Cloud Credits to Launch Clusters

Launching large clusters in the cloud can be costly. So utilize the available cloud credits to practice deploying clusters as if you work on a real project. All cloud platforms offer managed Kubernetes services.

Learn Kubernetes Cluster Setup & Administration

As DevOps engineers, gaining a thorough understanding of each component and cluster configuration is crucial to work in production environments. Though there are various methods for deploying a Kubernetes cluster, it is advisable to learn how to set up multi-node clusters from scratch. This allows you to gain knowledge on concepts such as High Availability, Scaling, and Networking and simulates a real-world project.

Additionally, mastering the configuration of multi-node clusters can be beneficial for interviews and building confidence in your abilities. The following are recommended ways to establish a Kubernetes cluster.

Following are some of the important cluster administrative tasks

Understand KubeConfig File

As a DevOps engineer, it is important to become familiar with the Kubeconfig file. It is crucial for tasks such as setting up cluster authentication for CI/CD systems, providing cluster access to developers, and more.

A Kubeconfig file is a YAML file that stores information and credentials for connecting to a Kubernetes cluster. It is used by command-line tools such as kubectl and other client libraries to authenticate with the cluster and interact with its resources.

The Kubeconfig file can be used to store information for multiple clusters and users, allowing users to switch between different clusters and contexts easily. It is an important tool for managing access to and interacting with Kubernetes clusters.

Refer the following document to learn about Kubeconfig File in detail.

Understand Kubernetes Objects And Resources

In Kubernetes, an object is a persisted entity in the cluster that represents a desired state of the system. It is created and managed by the Kubernetes API server and is stored in the etcd key-value store. Examples of Kubernetes objects include pods, services, and deployments.

Here is an example of a Pod Object

apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
  - name: nginx
    image: nginx:1.14.2
    ports:
    - containerPort: 80

A resource is a representation of a Kubernetes object that is exposed by the Kubernetes API. It is a way for clients to interact with and manipulate objects in the cluster.

A resource refers to a specific API URL used to access an object. Resources are typically accessed through the Kubernetes API using HTTP verbs such as GET, POST, and DELETE. For instance, the /api/v1/pods resource can be used to retrieve a list of v1 Pod objects. Additionally, an individual v1 Pod object can be obtained from the /api/v1/namespaces/namespace-name/pods/pod-name resource.

Detailed Blog: Kubernetes Objects & Resources Explained

Learn About the Object YAML Structure

Every object in Kubernetes is represented/created using a YAML file. Kubernetes has many native objects (20+), however, every object YAML follows a hierarchical structure as shown below.

apiVersion: <API version>
kind: <Kind of object>
metadata:
  name:  <Name of the object>
spec:
  <Specification of the object>>

Here is what each section means.

  • apiVersion: Specifies the Kubernetes API version used for the object.
  • kind: Defines the type of Kubernetes object being created or modified.
  • metadata: Contains information about the object.
  • spec: Defines the desired state of the object, including its configuration and behavior. Under spec, there could be many subfields depending upon the object type.

The structure remains the same for all native Kubernetes objects. While learning about each object, you can check the hierarchy, and you will be able to relate.

Learn About Pod & Associated Resources

<--In Progress-->

Learn About Pod Dependent Objects

<--In Progress-->

Deploy End to End Application on Kubernetes

<--In Progress-->

Learn About Securing Kubernetes Cluster

<--In Progress-->

Learn About Kubernetes Operator Pattern

<--In Progress-->

Learn Important Kubernetes Configurations

<--In Progress-->

Learn Kubernetes Best Practices

<--In Progress-->

Learn Kubernetes Logging & Monitoring

<--In Progress-->

Learn Kubernetes Templating Tools

Helm and Kustomize are both tools that are used to manage Kubernetes manifests. They are similar in many ways but have some key differences.

Helm is a package manager for Kubernetes that allows users to easily install, manage, and upgrade applications on a Kubernetes cluster. It uses a concept called "charts" which are pre-configured sets of Kubernetes resources that can be easily deployed, upgraded, and rolled back.

Kustomize, on the other hand, is a tool that allows users to customize and configure existing Kubernetes manifests. It uses a concept called "patches" which can be applied to existing manifests to customize them for different environments and use cases. Unlike Helm, Kustomize does not include built-in support for versioning and rollback, and does not have a concept of "packages" or "repositories".

Kubernetes Deployment Tools (GitOps Based)

GitOps is a technical practice that uses Git as a single source of truth for declarative infrastructure and application code.

Some popular GitOps-based tools for deploying applications to Kubernetes clusters are:

Learn Kubernetes Production Best Practices

Real-World Kubernetes Case Studies

If you do not have real-world Kubernetes experience, it is better to read case studies of other companies using kubernetes.

Kubernetes Failures/Learnings

More Repositories

1

vagrant-kubeadm-kubernetes

Vagrantfile & Scripts to setup Kubernetes Cluster using Kubeadm for CKA, CKAD and CKS practice environment
Shell
573
star
2

kubernetes-prometheus

Kubernetes Manifest files for setting up Prometheus monitoring on the Kubernetes cluster.
358
star
3

python-for-devops

Python for DevOps repo with useful python scripts to learn and implement in your day-to-day devops automation tasks.
Python
277
star
4

devops-projects

DevOps Real World Projects for Aspiring DevOps Engineers [Beginner to Advanced]
HCL
219
star
5

devops-tools

Curated List of Best DevOps Tools
136
star
6

how-to-mlops

Curated list of resources to learn MLOPS
72
star
7

kubeadm-scripts

Scripts & Kubernetes manifests for Kubeadm Kubernetes cluster setup
Shell
52
star
8

jenkins-shared-library

A Jenkins shared library code examples with Jenkinfiles
Groovy
30
star
9

packer-templates

Hashicorp packer Tempaltes for learning
HCL
12
star
10

podman

Podman examples
HTML
12
star
11

pipeline-as-code-demo

demo for pipeline as code
9
star
12

helm-tutorial

helm Chart examples and tutorial resoruces
9
star
13

kubernetes-certification-guide

CKA, CKAD, CKS & KCNA Free Certification Guides
Shell
9
star
14

docker-image-examples

Dockerfile examples for different applications.
HTML
7
star
15

eksctl

AWS EKS example cluster configurations using eksctl
5
star
16

devops-kit

Essential Tool Kit for DevOps
4
star
17

java-demo

Java Spring Boot Demo Application To Learn Java CI/CD
3
star
18

aws-cli

AWS CLI examples for ec2, IAM, s3, EKS and Other Services
3
star
19

ansible-playbook-examples

3
star
20

techiescamp

Config files for my GitHub profile.
3
star
21

aws-cloudwatch-agent

Configurations for Custom application logs and metrics using cloudwatch agent
2
star
22

consul-demo

Service Discovery demo using Consul
2
star
23

gitlab-tutorial

HCL
1
star
24

kubernetes-projects

Practical real-world hands-on projects to practice and learn Kubernetes implementations
1
star
25

aws-devops

Tasks to Learn DevOps With AWS Cloud
1
star
26

argocd-guide

Resources & examples to master ArgoCD
1
star