Compare commits

..

50 Commits

Author SHA1 Message Date
syedmouaazfarrukh
77dad8461f 101-cluster-setup-and-configuration 2023-02-08 19:49:32 -08:00
syedmouaazfarrukh
8aa7004513 Added content to 100-kubernetes-introduction 2023-02-08 10:57:14 -08:00
andran777
5bca9834fb Update Spring Boot scope content (#3398) 2023-02-08 17:42:45 +00:00
Jesse Chang
dde6e3d3df Remove beego link (#3403)
* Update 100-beego.md

New official documentation website.

* Update src/roadmaps/golang/content/104-go-web-frameworks/100-beego.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-02-08 16:12:05 +00:00
Khushi Kothari
6fe8fee25f Add MDN link to Asynchronous JavaScript (#3404)
* Update index.md

* Update src/roadmaps/javascript/content/112-javascript-asynchronous-javascript/index.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-02-08 16:09:55 +00:00
Hans Elde
f3622a1b1c Fix the availability numbers (#3410)
* Update 102-availability-in-numbers.md

Updated downtime #s using https://uptime.is/

* Update src/roadmaps/system-design/content/105-availability-patterns/102-availability-in-numbers.md

* Update src/roadmaps/system-design/content/105-availability-patterns/102-availability-in-numbers.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-02-08 16:00:25 +00:00
Muhammad Kamal Fergany
a92bda38f4 Fix a typo in 103-load-balancer.md (#3414) 2023-02-08 15:58:18 +00:00
Kamran Ahmed
b194d167be Make youtube banner non-sticky 2023-02-08 12:29:30 +00:00
Kamran Ahmed
ec04b582a6 Add note for feedback 2023-02-08 12:22:09 +00:00
Kamran Ahmed
f55159a12b Update title for kubernetes page 2023-02-08 11:19:58 +00:00
Kamran Ahmed
938c7796d1 Update title for best practices pages 2023-02-08 11:19:58 +00:00
Paul Reichetanz
e04bd9db05 Fix typos in frontend/123-bonus-content.md (#3423) 2023-02-08 11:00:30 +00:00
Kamran Ahmed
7c837d14da Add link to Kubernetes roadmap 2023-02-07 20:59:11 +00:00
Kamran Ahmed
cc05587d9e Add kubernetes roadmap 2023-02-07 20:49:14 +00:00
Kamran Ahmed
2172014d6e Add dimensions 2023-02-07 20:21:03 +00:00
Kamran Ahmed
98d43e76b7 Add kubernetes roadmap 2023-02-07 20:19:39 +00:00
Kamran Ahmed
7665970813 Add kubecampus snippet 2023-02-06 21:55:55 +00:00
Kamran Ahmed
d96e5890b9 Add content to TypeScript roadmap 2023-02-06 21:26:56 +00:00
Kamran Ahmed
659bd93094 Add content to TypeScript roadmap 2023-02-06 21:26:56 +00:00
syedmouaazfarrukh
a4dddfb19b Adding content to 101-typescript-types 2023-02-06 21:26:56 +00:00
syedmouaazfarrukh
12a4be2227 Adding content to 104-undefined 2023-02-06 21:26:56 +00:00
syedmouaazfarrukh
9edcb35acb Adding content to 115-type-assertions 2023-02-06 21:26:56 +00:00
syedmouaazfarrukh
1df4e4b836 Adding content to 111-utility-types 2023-02-06 21:26:56 +00:00
syedmouaazfarrukh
49e78cf1c0 102-type-inference, 103-type-compatibility, 110-decorators 2023-02-06 21:26:56 +00:00
syedmouaazfarrukh
a4a29b4efa 114-ecosystem 2023-02-06 21:26:56 +00:00
syedmouaazfarrukh
3e49e7f91d 113-modules 2023-02-06 21:26:56 +00:00
syedmouaazfarrukh
7627bc73b5 112-advanced-types 2023-02-06 21:26:56 +00:00
syedmouaazfarrukh
26eaa40dc1 Adding content to 109-generics 2023-02-06 21:26:56 +00:00
syedmouaazfarrukh
45a0b53d5f Adding content to 108-classes 2023-02-06 21:26:56 +00:00
syedmouaazfarrukh
7bac3c3444 Adding content to 107-interfaces 2023-02-06 21:26:56 +00:00
syedmouaazfarrukh
62905bda7a Adding content to 106-functions 2023-02-06 21:26:56 +00:00
syedmouaazfarrukh
179bf366cc Adding content to 104-combining-types 2023-02-06 21:26:56 +00:00
syedmouaazfarrukh
59d47c5b1e Adding content to 100-typescript 2023-02-06 21:26:56 +00:00
syedmouaazfarrukh
d23ea8e577 Adding content to 103-running-typescript 2023-02-06 21:26:56 +00:00
syedmouaazfarrukh
07f001f8be Adding content to 102-install-configure 2023-02-06 21:26:56 +00:00
Kamran Ahmed
754a91acef Fix invalid link 2023-02-06 15:09:55 +00:00
Kamran Ahmed
16c550211b Fix invalid link 2023-02-06 15:08:33 +00:00
Kamran Ahmed
a56710c43d Remove ambassador and tigera links 2023-02-02 00:11:20 +04:00
CodeGuage
00f94e031e Add link to switch in JS Roadmap (#3380) 2023-01-31 20:56:37 +04:00
Tianzhou (天舟)
d1556c85df docs: add PostGIS and Bytebase to the postgresql-dba roadmap. (#3390) 2023-01-31 20:55:55 +04:00
tim-laue
1885d6d304 Fix broken link (#3381)
Fixed broken link
2023-01-31 20:55:13 +04:00
Zanin Andrea
3b8c8316b3 Add HTTPs content (#3384)
I have added a brief explanation of how the HTTPS protocol works and a new resource to learn more
2023-01-31 20:54:30 +04:00
mohd-e-mustafa
034fd16a1f Add combination content in RxJS (#3385) 2023-01-31 20:53:24 +04:00
Diego Kfuri
aa9bf2f263 fix typo in system designs roadmap (#3395) 2023-01-31 20:52:12 +04:00
syedmouaazfarrukh
6a5df98f4f Add content to flutter roadmap (#3389)
* Adding content to 100-dart-basics

* Adding content to 102-setup-development-environment

* Adding content to 102-styled-widgets

* Adding content to 102-widgets

* Adding content to 103-working-with-assets

* Adding content to 105-repo-hosting-services

* Adding content to 106-design-principles

* Adding content to 107-package-manager

* Adding content to 108-working-with-apis

* Adding content to 102-firebase

* Adding content to 109-storage

* Adding content to 114-reactive programming

* Adding content to 115-dev-tools

* Adding content to 116-flutter-internals

* Adding content to 117-ci-cd

* Adding content to 118-analytics

* Adding content to 119-deployment

* Adding content to 110-advanced-dart

* Adding content to 111-state-management

* Adding content to 112-animations

* Adding content to 113-testing

* Adding content to 102-flutter-bloc, 101-flutter-outline

* Update src/roadmaps/flutter/content/100-dart-basics/104-operators.md

* Update src/roadmaps/flutter/content/101-setup-development-environment/101-ides/index.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-01-31 20:49:28 +04:00
Kamran Ahmed
ea02c8835a Add typescript roadmap reference in frontend roadmap 2023-01-31 14:23:18 +04:00
Kamran Ahmed
e13733a503 Add link to TypeScript roadmap 2023-01-31 04:28:24 +04:00
Kamran Ahmed
6f0ad58764 Add TypeScript roadmap (#3391)
* Add typescript roadmap

* Add typescript content

* Add typescript roadmap
2023-01-31 04:05:46 +04:00
Kamran Ahmed
f68c303ffa Fix canonicals on best-practices topic page 2023-01-31 01:19:54 +04:00
Kamran Ahmed
b2c79ff395 Fix canonicals on topic pages 2023-01-31 01:15:13 +04:00
237 changed files with 6907 additions and 125 deletions

View File

Before

Width:  |  Height:  |  Size: 101 KiB

After

Width:  |  Height:  |  Size: 101 KiB

View File

Before

Width:  |  Height:  |  Size: 1.0 MiB

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 542 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 544 KiB

View File

@@ -38,6 +38,7 @@ Here is the list of available roadmaps with more being actively worked upon.
- [Software Architect Roadmap](https://roadmap.sh/software-architect)
- [Software Design and Architecture Roadmap](https://roadmap.sh/software-design-architecture)
- [JavaScript Roadmap](https://roadmap.sh/javascript)
- [TypeScript Roadmap](https://roadmap.sh/typescript)
- [React Roadmap](https://roadmap.sh/react)
- [Vue Roadmap](https://roadmap.sh/vue)
- [Angular Roadmap](https://roadmap.sh/angular)
@@ -54,6 +55,11 @@ Here is the list of available roadmaps with more being actively worked upon.
- [Blockchain Roadmap](https://roadmap.sh/blockchain)
- [ASP.NET Core Roadmap](https://roadmap.sh/aspnet-core)
- [System Design Roadmap](https://roadmap.sh/system-design)
- [Kubernetes Roadmap](https://roadmap.sh/kubernetes)
We have also added a new form of visual content covering best practices:
- [Frontend Performance Best Practices](https://roadmap.sh/best-practices/frontend-performance)
![](https://i.imgur.com/waxVImv.png)

View File

@@ -2,11 +2,11 @@
jsonUrl: "/jsons/best-practices/frontend-performance.json"
pdfUrl: "/pdfs/best-practices/frontend-performance.pdf"
order: 1
featuredTitle: "Frontend Performance"
featuredDescription: "Frontend Performance Best Practices"
briefTitle: "Frontend Performance"
briefDescription: "Frontend Performance Best Practices"
isNew: true
isUpcoming: false
title: "Frontend Performance"
title: "Frontend Performance Best Practices"
description: "Detailed list of best practices to improve your frontend performance"
dimensions:
width: 968

View File

@@ -17,6 +17,6 @@ const { roadmap, roadmapId } = Astro.props;
<span class='hidden sm:inline'>Click to visit the interactive version of</span>
<span class='inline sm:hidden'>Visit complete</span>
<span class='sm:lowercase ml-0.5 font-medium underline underline-offset-1'>{roadmap.featuredTitle} roadmap</span>
<span class='sm:lowercase ml-0.5 font-medium underline underline-offset-1'>{roadmap.briefTitle} roadmap</span>
</span>
</a>

View File

@@ -29,7 +29,7 @@ const isRoadmapReady = !isUpcoming;
<div class='py-5 sm:py-12 container relative'>
<YouTubeAlert />
<div class='mt-0 mb-3 sm:mb-6 sm:mt-4'>
<div class='mt-0 mb-3 sm:mb-4 sm:mt-4'>
<h1 class='text-2xl sm:text-4xl mb-0.5 sm:mb-2 font-bold'>
{title}
</h1>

View File

@@ -2,7 +2,8 @@
import Icon from './Icon.astro';
---
<div class='sticky top-0 border-b border-b-yellow-300 z-20 flex h-[37px]' youtube-banner>
<!-- sticky top-0 -->
<div class='border-b border-b-yellow-300 z-20 flex h-[37px]' youtube-banner>
<a
href='https://youtube.com/theroadmap?sub_confirmation=1'
target='_blank'

View File

@@ -5,8 +5,8 @@ export interface BestPracticeFrontmatter {
jsonUrl: string;
pdfUrl: string;
order: number;
featuredTitle: string;
featuredDescription: string;
briefTitle: string;
briefDescription: string;
title: string;
description: string;
isNew: boolean;

View File

@@ -113,7 +113,7 @@ export async function getRoadmapTopicFiles(): Promise<Record<string, RoadmapTopi
url: '/roadmaps',
},
{
title: currentRoadmap.featuredTitle,
title: currentRoadmap.briefTitle,
url: `${roadmapUrl}`,
},
{

View File

@@ -5,8 +5,8 @@ export interface RoadmapFrontmatter {
jsonUrl: string;
pdfUrl: string;
order: number;
featuredTitle: string;
featuredDescription: string;
briefTitle: string;
briefDescription: string;
title: string;
description: string;
hasTopics: boolean;

View File

@@ -28,9 +28,9 @@ const { file, breadcrumbs, roadmapId, roadmap, heading } = Astro.props as Roadma
<BaseLayout
title={`${heading} - roadmap.sh`}
description={`Free resources to learn ${heading} in ${roadmap.featuredTitle}. Everything you need to know about ${heading} and how it realtes to ${roadmap.featuredTitle}.`}
description={`Free resources to learn ${heading} in ${roadmap.briefTitle}. Everything you need to know about ${heading} and how it realtes to ${roadmap.briefTitle}.`}
noIndex={true}
permalink={`/${topicId}`}
permalink={`/${roadmapId}/${topicId}`}
>
<RoadmapBanner roadmapId={roadmapId} roadmap={roadmap} />
<div class='bg-gray-50'>

View File

@@ -76,7 +76,7 @@ const contentContributionLink = `https://github.com/kamranahmedse/developer-road
{
!roadmapData.isUpcoming && roadmapData.jsonUrl && (
<div class='max-w-[1000px] container relative'>
<ShareIcons description={roadmapData.featuredDescription} pageUrl={`https://roadmap.sh/${roadmapId}`} />
<ShareIcons description={roadmapData.briefDescription} pageUrl={`https://roadmap.sh/${roadmapId}`} />
<TopicOverlay contentContributionLink={contentContributionLink} />
<FrameRenderer

View File

@@ -30,7 +30,7 @@ const roadmapData = roadmapFile.frontmatter as RoadmapFrontmatter;
>
<RoadmapHeader
description={roadmapData.description}
title={`${roadmapData.featuredTitle} Topics`}
title={`${roadmapData.briefTitle} Topics`}
roadmapId={roadmapId}
hasSearch={true}
hasTopics={false}

View File

@@ -26,9 +26,9 @@ const { file, bestPracticeId, bestPractice, heading } = Astro.props as BestPract
<BaseLayout
title={`${heading} - roadmap.sh`}
description={`Free resources to learn ${heading} in ${bestPractice.featuredTitle}. Everything you need to know about ${heading} and how it realtes to ${bestPractice.featuredTitle}.`}
description={`Free resources to learn ${heading} in ${bestPractice.briefTitle}. Everything you need to know about ${heading} and how it realtes to ${bestPractice.briefTitle}.`}
noIndex={true}
permalink={`/${topicId}`}
permalink={`/best-practices/${bestPracticeId}/${topicId}`}
>
<div class='bg-gray-50'>
<div class='container py-16 prose prose-p:mt-0 prose-h1:mb-4 prose-h2:mb-3 prose-h2:mt-0'>

View File

@@ -69,7 +69,7 @@ const contentContributionLink = `https://github.com/kamranahmedse/developer-road
!bestPracticeData.isUpcoming && bestPracticeData.jsonUrl && (
<div class='max-w-[1000px] container relative'>
<ShareIcons
description={bestPracticeData.featuredDescription}
description={bestPracticeData.briefDescription}
pageUrl={`https://roadmap.sh/best-practices/${bestPracticeId}`}
/>
<TopicOverlay contentContributionLink={contentContributionLink} />

View File

@@ -25,7 +25,7 @@ const bestPractices = await getAllBestPractices();
<GridItem
url={`/best-practices/${bestPractice.id}`}
isNew={bestPractice.frontmatter.isNew}
title={bestPractice.frontmatter.title}
title={bestPractice.frontmatter.briefTitle}
description={bestPractice.frontmatter.description}
/>
))

View File

@@ -44,7 +44,7 @@ const videos = await getAllVideos();
<FeaturedItems
heading='Role based Roadmaps'
featuredItems={roleRoadmaps.map((roadmapItem) => ({
text: roadmapItem.frontmatter.featuredTitle,
text: roadmapItem.frontmatter.briefTitle,
url: `/${roadmapItem.id}`,
isNew: roadmapItem.frontmatter.isNew,
isUpcoming: roadmapItem.frontmatter.isUpcoming,
@@ -54,7 +54,7 @@ const videos = await getAllVideos();
<FeaturedItems
heading='Skill based Roadmaps'
featuredItems={skillRoadmaps.map((roadmapItem) => ({
text: roadmapItem.frontmatter.featuredTitle === 'Go' ? 'Go Roadmap' : roadmapItem.frontmatter.featuredTitle,
text: roadmapItem.frontmatter.briefTitle === 'Go' ? 'Go Roadmap' : roadmapItem.frontmatter.briefTitle,
url: `/${roadmapItem.id}`,
isNew: roadmapItem.frontmatter.isNew,
isUpcoming: roadmapItem.frontmatter.isUpcoming,
@@ -64,7 +64,7 @@ const videos = await getAllVideos();
<FeaturedItems
heading='Best Practices'
featuredItems={bestPractices.map((bestPractice) => ({
text: bestPractice.frontmatter.featuredTitle,
text: bestPractice.frontmatter.briefTitle,
url: `/best-practices/${bestPractice.id}`,
isNew: bestPractice.frontmatter.isNew,
isUpcoming: bestPractice.frontmatter.isUpcoming,

View File

@@ -20,6 +20,7 @@ Here is the list of PDF links for each of the roadmaps.
* **Software Design and Architecture Roadmap** - [Roadmap Link](https://roadmap.sh/software-design-architecture) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/software-design-architecture.pdf)
* **JavaScript Roadmap** - [Roadmap Link](https://roadmap.sh/javascript) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/javascript.pdf)
* **Node.js Roadmap** - [Roadmap Link](https://roadmap.sh/nodejs) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/nodejs.pdf)
* **TypeScript Roadmap** - [Roadmap Link](https://roadmap.sh/typescript) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/typescript.pdf)
* **GraphQL Roadmap** - [Roadmap Link](https://roadmap.sh/graphql) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/graphql.pdf)
* **Angular Roadmap** - [Roadmap Link](https://roadmap.sh/angular) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/angular.pdf)
* **React Roadmap** - [Roadmap Link](https://roadmap.sh/react) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/react.pdf)
@@ -30,6 +31,7 @@ Here is the list of PDF links for each of the roadmaps.
* **Spring Boot Roadmap** - [Roadmap Link](https://roadmap.sh/spring-boot) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/spring-boot.pdf)
* **Python Roadmap** - [Roadmap Link](https://roadmap.sh/python) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/python.pdf)
* **System Design** - [Roadmap Link](https://roadmap.sh/system-design) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/system-design.pdf)
* **Kubernetes** - [Roadmap Link](https://roadmap.sh/kubernetes) / [PDF Link](https://roadmap.sh/pdfs/roadmaps/kubernetes.pdf)
Here is the list of PDF links for each of the best practices:

View File

@@ -2,8 +2,8 @@
# jsonUrl: "/jsons/roadmaps/android.json"
pdfUrl: "/pdfs/roadmaps/android.pdf"
order: 4
featuredTitle: "Android"
featuredDescription: "Step by step guide to becoming an Android Developer in 2023"
briefTitle: "Android"
briefDescription: "Step by step guide to becoming an Android Developer in 2023"
title: "Android Developer"
description: "Step by step guide to becoming an Android developer in 2023"
hasTopics: false

View File

@@ -2,8 +2,8 @@
jsonUrl: "/jsons/roadmaps/angular.json"
pdfUrl: "/pdfs/roadmaps/angular.pdf"
order: 3
featuredTitle: "Angular"
featuredDescription: "Step by step guide to become a Angular Developer in 2023"
briefTitle: "Angular"
briefDescription: "Step by step guide to become a Angular Developer in 2023"
title: "Angular Developer"
description: "Everything that is there to learn about Angular and the ecosystem in 2023."
hasTopics: true

View File

@@ -1 +1,29 @@
# Combination
# Combination
Combination operators in RxJS are used to combine multiple observables into a single observable. There are several types of combination operators, including:
- Merge: merges multiple observables into a single observable that emits items from each source observable in a sequence.
- Concat: concatenates multiple observables into a single observable that emits the items from each source observable in sequence, one after the other.
- Zip: combines the items from multiple observables into a single observable by combining the items from each observable at a corresponding index.
- CombineLatest: combines the latest values from multiple observables into a single observable by emitting an item whenever any of the source observables emit an item.
- WithLatestFrom: combines the latest value from one observable with the latest values from multiple other observables.
- ForkJoin: combines the items from multiple observables into a single observable by emitting an item only after all of the source observables have emitted an item.
Further documentation can be found in the official RxJS documentation:
- Merge: https://rxjs.dev/api/operators/merge
- Concat: https://rxjs.dev/api/operators/concat
- Zip: https://rxjs.dev/api/operators/zip
- CombineLatest: https://rxjs.dev/api/operators/combineLatest
- WithLatestFrom: https://rxjs.dev/api/operators/withLatestFrom
- ForkJoin: https://rxjs.dev/api/operators/forkJoin

View File

@@ -2,8 +2,8 @@
jsonUrl: "/jsons/roadmaps/aspnet-core.json"
pdfUrl: "/pdfs/roadmaps/aspnet-core.pdf"
order: 9
featuredTitle: "ASP.NET Core"
featuredDescription: "Step by step guide to becoming an ASP.NET Core Developer in 2023"
briefTitle: "ASP.NET Core"
briefDescription: "Step by step guide to becoming an ASP.NET Core Developer in 2023"
title: "ASP.NET Core Developer"
description: "Step by step guide to becoming an ASP.NET core developer in 2023"
isNew: false

View File

@@ -2,24 +2,24 @@
jsonUrl: "/jsons/roadmaps/backend.json"
pdfUrl: "/pdfs/roadmaps/backend.pdf"
order: 2
featuredTitle: "Backend"
featuredDescription: "Step by step guide to becoming a backend developer in 2023"
briefTitle: "Backend"
briefDescription: "Step by step guide to becoming a backend developer in 2023"
title: "Backend Developer"
description: "Step by step guide to becoming a modern backend developer in 2023"
hasTopics: true
dimensions:
width: 968
height: 2840.4
sponsor:
expiryDate: "2023-02-02"
url: "https://www.getambassador.io/api-gateway-to-success?utm_source=roadmap-sh&utm_medium=ebook&utm_campaign=edgestack-guide"
title: "API Gateways"
imageUrl: "/images/ambassador-img.png"
description: "Learn about the benefits and challenges of using API Gateway in cloud native environments."
event:
category: "SponsorClick"
action: "Ambassador Redirect"
label: "Clicked Ambassador Link"
# sponsor:
# expiryDate: "2023-02-02"
# url: "https://www.getambassador.io/api-gateway-to-success?utm_source=roadmap-sh&utm_medium=ebook&utm_campaign=edgestack-guide"
# title: "API Gateways"
# imageUrl: "/images/ambassador-img.png"
# description: "Learn about the benefits and challenges of using API Gateway in cloud native environments."
# event:
# category: "SponsorClick"
# action: "Ambassador Redirect"
# label: "Clicked Ambassador Link"
schema:
headline: "Backend Developer Roadmap"
description: "Learn how to become a Backend Developer with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place."

View File

@@ -2,6 +2,10 @@
HTTPS is a secure way to send data between a web server and a browser.
A communication through HTTPS starts with the handshake phase during which the server and the client agree on how to encrypt the communication, in particular they choose an encryption algorithm and a secret key. After the handshake all the communication between the server and the client will be encrypted using the agreed upon algorithm and key.
The handshake phase uses a particular kind of cryptography, called asymmetric cryptography, to communicate securely even though client and server have not yet agreed on a secret key. After the handshake phase the HTTPS communication is encrypted with symmetric cryptography, which is much more efficient but requires client and server to both have knowledge of the secret key.
Visit the following resources to learn more:
- [What is HTTPS?](https://www.cloudflare.com/en-gb/learning/ssl/what-is-https/)
@@ -10,3 +14,4 @@ Visit the following resources to learn more:
- [How HTTPS works (comic)](https://howhttps.works/)
- [SSL, TLS, HTTP, HTTPS Explained](https://www.youtube.com/watch?v=hExRDVZHhig)
- [HTTPS — Stories from the field](https://www.youtube.com/watch?v=GoXgl9r0Kjk)
- [HTTPS explained with carrier pigeons](https://baida.dev/articles/https-explained-with-carrier-pigeons)

View File

@@ -2,8 +2,8 @@
jsonUrl: "/jsons/roadmaps/blockchain.json"
pdfUrl: "/pdfs/roadmaps/blockchain.pdf"
order: 6
featuredTitle: "Blockchain"
featuredDescription: "Step by step guide to becoming a blockchain developer in 2023"
briefTitle: "Blockchain"
briefDescription: "Step by step guide to becoming a blockchain developer in 2023"
title: "Blockchain Developer"
description: "Step by step guide to becoming a blockchain developer in 2023."
isNew: false

View File

@@ -2,8 +2,8 @@
jsonUrl: "/jsons/roadmaps/computer-science.json"
pdfUrl: "/pdfs/roadmaps/computer-science.pdf"
order: 1
featuredTitle: "Computer Science"
featuredDescription: "Curriculum with free resources for a self-taught developer."
briefTitle: "Computer Science"
briefDescription: "Curriculum with free resources for a self-taught developer."
title: "Computer Science"
description: "Computer Science curriculum with free resources for a self-taught developer."
isNew: true

View File

@@ -1,7 +1,7 @@
---
order: 12
featuredTitle: "Cyber Security"
featuredDescription: "Step by step guide to becoming a Cyber Security Expert in 2023"
briefTitle: "Cyber Security"
briefDescription: "Step by step guide to becoming a Cyber Security Expert in 2023"
title: "Cyber Security Expert"
description: "Step by step guide to becoming a Cyber Security developer in 2023"
isUpcoming: true

View File

@@ -2,8 +2,8 @@
jsonUrl: "/jsons/roadmaps/design-system.json"
pdfUrl: "/pdfs/roadmaps/design-system.pdf"
order: 13
featuredTitle: "Design System"
featuredDescription: "Step by step guide to building a modern Design System"
briefTitle: "Design System"
briefDescription: "Step by step guide to building a modern Design System"
title: "Design System"
description: "Learn how to create a design system with this step by step guide"
isNew: false

View File

@@ -1,8 +1,8 @@
# Load Balancer
Load Balancer acts as the **traffic cop** sitting in front of your servers and routing client requests across all servers capable of fulfilling those requests in a manner that maximizes speed and capacity utilization and ensures that no one server is overworked. If a one of the servers goes down, the load balancer redirects traffic to the remaining online servers.
Load Balancer acts as the **traffic cop** sitting in front of your servers and routing client requests across all servers capable of fulfilling those requests in a manner that maximizes speed and capacity utilization and ensures that no one server is overworked. If one of the servers goes down, the load balancer redirects traffic to the remaining online servers.
Visit the following resources to learn more:
- [What is Load Balancing?](https://www.nginx.com/resources/glossary/load-balancing/)
- [Load Balancing concepts and algorithms](https://www.cloudflare.com/en-gb/learning/performance/what-is-load-balancing/)
- [Load Balancing concepts and algorithms](https://www.cloudflare.com/en-gb/learning/performance/what-is-load-balancing/)

View File

@@ -2,8 +2,8 @@
jsonUrl: "/jsons/roadmaps/devops.json"
pdfUrl: "/pdfs/roadmaps/devops.pdf"
order: 3
featuredTitle: "DevOps"
featuredDescription: "Step by step guide for DevOps or operations role in 2023"
briefTitle: "DevOps"
briefDescription: "Step by step guide for DevOps or operations role in 2023"
title: "DevOps Roadmap"
description: "Step by step guide for DevOps, SRE or any other Operations Role in 2023"
hasTopics: true
@@ -17,14 +17,14 @@ schema:
datePublished: "2023-01-05"
dateModified: "2023-01-20"
sponsor:
url: "https://www.tigera.io/lp/kubernetes-security-and-observability-ebook/?utm_campaign=O%27Reilly-book-final-release&utm_medium=web&utm_source=Insight-Partners-popup"
title: "Free eBook"
imageUrl: "/images/devops-ebook.png"
description: "Learn how to secure and troubleshoot your cloud-native applications with this free eBook."
url: "https://kubecampus.io/?utm_source=NewStack&utm_medium=email&utm_campaign=devops"
title: "Learn Kubernetes"
imageUrl: "/images/partners/kubecampus.png"
description: "Free Kubernetes courses to learn basic or advanced Kubernetes skills at your own pace."
event:
category: "SponsorClick"
action: "Tigera EBook Redirect"
label: "Clicked Tigera EBook Link"
action: "KubeCampus Courses Redirect"
label: "Clicked KubeCampus Courses Link"
seo:
title: "DevOps Roadmap: Learn to become a DevOps Engineer or SRE"
description: "Community driven, articles, resources, guides, interview questions, quizzes for DevOps. Learn to become a modern DevOps engineer by following the steps, skills, resources and guides listed in this roadmap."

View File

@@ -2,7 +2,7 @@
Material Widgets are a set of Flutter widgets that implement Material Design, Google's visual language for design. They are designed to provide a consistent look and feel on both Android and iOS devices. Some common Material Widgets include:
- ElevatedButton
- RaisedButton
- Scaffold
- AppBar
- TextField
@@ -18,4 +18,4 @@ Visit the following resources to learn more:
- [Material Components widgets](https://docs.flutter.dev/development/ui/widgets/material)
- [Flutter Material Design](https://www.geeksforgeeks.org/flutter-material-design/)
- [Widget catalog in Flutter](https://docs.flutter.dev/development/ui/widgets)
- [Material Designs Guidlines](https://m2.material.io/design/guidelines-overview)
- [Material Designs Guidlines](https://m2.material.io/design/guidelines-overview)

View File

@@ -2,8 +2,8 @@
jsonUrl: "/jsons/roadmaps/flutter.json"
pdfUrl: "/pdfs/roadmaps/flutter.pdf"
order: 10
featuredTitle: "Flutter"
featuredDescription: "Step by step guide to becoming a Flutter Developer in 2023"
briefTitle: "Flutter"
briefDescription: "Step by step guide to becoming a Flutter Developer in 2023"
title: "Flutter Developer"
description: "Step by step guide to becoming a Flutter developer in 2023"
isNew: true

View File

@@ -8,7 +8,7 @@ Visit the following resources to learn more:
- [What is HTTPS?](https://www.cloudflare.com/en-gb/learning/ssl/what-is-https/)
- [Why HTTPS Matters](https://developers.google.com/web/fundamentals/security/encrypt-in-transit/why-https)
- [Enabling HTTPS on Your Servers](https://developers.google.com/web/fundamentals/security/encrypt-in-transit/enable-https)
- [Enabling HTTPS on Your Servers](https://web.dev/enable-https/)
- [How HTTPS works (comic)](https://howhttps.works/)
- [SSL, TLS, HTTP, HTTPS Explained](https://www.youtube.com/watch?v=hExRDVZHhig)
- [HTTPS — Stories from the field](https://www.youtube.com/watch?v=GoXgl9r0Kjk)

View File

@@ -2,15 +2,15 @@
It is not required to complete the bonus content, it just expands on the topics covered in the roadmap and has the items which were missed in the roadmap. Go through them if you want.
* **UI / UX Knowledge** - Gaining UI/UX knowledge is not a must for a Frontend Developer but having an eye for design and a good understanding of UI/UX will help you in your career.
* **[Design Systems](/design-system)** - Learn how to create and work with design systems.
* **Visual Programming** — it is entirely possible to be a successful, competent frontend developer without it, but for many frontend developers this path represents a serious chunk of their workload, and represents a very in-demand option for frontend development especially for developers who are have a visual aptitude.
* **For Animations**: [GSAP](https://greensock.com/gsap/), [Lottie](https://airbnb.design/lottie/), [Framer Motion](https://github.com/framer/motion) or [MoJs](https://mojs.github.io/)
* **Web Graphics Library (WebGL)**: [WebGL MDN](https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API/Tutorial), [WebGL Fundamentals](https://webglfundamentals.org/webgl/lessons/webgl-fundamentals.html)
* **2D Graphics**: [Canvas](https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API), [PixiJS](https://pixijs.com/), [PhaserJS](https://phaser.io/)
* **3D Graphics**: [ThreeJS](https://threejs.org/), [BabylonJS](https://www.babylonjs.com/)
* Have a look at [Qwik](https://qwik.builder.io/) and **[Partytown](https://partytown.builder.io/)**.
* [Houdini](https://developer.mozilla.org/en-US/docs/Web/Guide/Houdini) — Here is a good [introductory article to houdini](https://www.smashingmagazine.com/2020/03/practical-overview-css-houdini/).
* **[WebRTC](https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API)** - WebRTC is a free, open project that provides browsers and mobile applications with Real-Time Communications (RTC) capabilities via simple APIs. The WebRTC components have been optimized to best serve this purpose.
* **[IDLs](https://developer.mozilla.org/en-US/docs/Glossary/IDL)** - Not every developer will have a need for understanding [IDLs](https://developer.mozilla.org/en-US/docs/Glossary/IDL) but but there's a good argument for having more JavaScript developers aware of their existence and hopefully the ability for making use of them as well.
* **[WebAssembly](https://developer.mozilla.org/en-US/docs/WebAssembly)** - WebAssembly is a comparatively new technology that allows you to run code written in languages other than JavaScript on the web. It's a low-level assembly-like language with a compact binary format that runs with near-native performance and provides languages such as C/C++ and Rust with a compilation target so that they can run on the web.
- **UI / UX Knowledge** - Gaining UI/UX knowledge is not a must for a Frontend Developer but having an eye for design and a good understanding of UI/UX will help you in your career.
- **[Design Systems](/design-system)** - Learn how to create and work with design systems.
- **Visual Programming** — it is entirely possible to be a successful, competent frontend developer without it, but for many frontend developers this path represents a serious chunk of their workload, and represents a very in-demand option for frontend development especially for developers who have a visual aptitude.
- **For Animations**: [GSAP](https://greensock.com/gsap/), [Lottie](https://airbnb.design/lottie/), [Framer Motion](https://github.com/framer/motion) or [MoJs](https://mojs.github.io/)
- **Web Graphics Library (WebGL)**: [WebGL MDN](https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API/Tutorial), [WebGL Fundamentals](https://webglfundamentals.org/webgl/lessons/webgl-fundamentals.html)
- **2D Graphics**: [Canvas](https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API), [PixiJS](https://pixijs.com/), [PhaserJS](https://phaser.io/)
- **3D Graphics**: [ThreeJS](https://threejs.org/), [BabylonJS](https://www.babylonjs.com/)
- Have a look at [Qwik](https://qwik.builder.io/) and **[Partytown](https://partytown.builder.io/)**.
- [Houdini](https://developer.mozilla.org/en-US/docs/Web/Guide/Houdini) — Here is a good [introductory article to houdini](https://www.smashingmagazine.com/2020/03/practical-overview-css-houdini/).
- **[WebRTC](https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API)** - WebRTC is a free, open project that provides browsers and mobile applications with Real-Time Communications (RTC) capabilities via simple APIs. The WebRTC components have been optimized to best serve this purpose.
- **[IDLs](https://developer.mozilla.org/en-US/docs/Glossary/IDL)** - Not every developer will have a need for understanding [IDLs](https://developer.mozilla.org/en-US/docs/Glossary/IDL) but there's a good argument for having more JavaScript developers aware of their existence and hopefully the ability for making use of them as well.
- **[WebAssembly](https://developer.mozilla.org/en-US/docs/WebAssembly)** - WebAssembly is a comparatively new technology that allows you to run code written in languages other than JavaScript on the web. It's a low-level assembly-like language with a compact binary format that runs with near-native performance and provides languages such as C/C++ and Rust with a compilation target so that they can run on the web.

View File

@@ -2,14 +2,14 @@
jsonUrl: "/jsons/roadmaps/frontend.json"
pdfUrl: "/pdfs/roadmaps/frontend.pdf"
order: 1
featuredTitle: "Frontend"
featuredDescription: "Step by step guide to becoming a frontend developer in 2023"
briefTitle: "Frontend"
briefDescription: "Step by step guide to becoming a frontend developer in 2023"
title: "Frontend Developer"
description: "Step by step guide to becoming a modern frontend developer in 2023"
hasTopics: true
dimensions:
width: 968
height: 2734.48
height: 2807.36
schema:
headline: "Frontend Developer Roadmap"
description: "Learn how to become a Frontend Developer with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place."

View File

@@ -5,4 +5,3 @@ Beego is used for rapid development of enterprise application in Go, including R
Visit the following resources to learn more:
- [Github Repository](https://github.com/beego/beego)
- [Official Website](https://beego.vip/quickstart)

View File

@@ -2,8 +2,8 @@
jsonUrl: "/jsons/roadmaps/golang.json"
pdfUrl: "/pdfs/roadmaps/golang.pdf"
order: 11
featuredTitle: "Go"
featuredDescription: "Step by step guide to becoming a Go developer in 2023"
briefTitle: "Go"
briefDescription: "Step by step guide to becoming a Go developer in 2023"
title: "Go Developer"
description: "Step by step guide to becoming a Go developer in 2023"
hasTopics: true

View File

@@ -2,8 +2,8 @@
jsonUrl: "/jsons/roadmaps/graphql.json"
pdfUrl: "/pdfs/roadmaps/graphql.pdf"
order: 12
featuredTitle: "GraphQL"
featuredDescription: "Step by Step guide to learn GraphQL in 2023"
briefTitle: "GraphQL"
briefDescription: "Step by Step guide to learn GraphQL in 2023"
title: "GraphQL"
description: "Step by step guide to learn GraphQL in 2023"
isNew: true

View File

@@ -2,8 +2,8 @@
jsonUrl: "/jsons/roadmaps/java.json"
pdfUrl: "/pdfs/roadmaps/java.pdf"
order: 9
featuredTitle: "Java"
featuredDescription: "Step by step guide to becoming a Java Developer in 2023"
briefTitle: "Java"
briefDescription: "Step by step guide to becoming a Java Developer in 2023"
title: "Java Developer"
description: "Step by step guide to becoming a Java developer in 2023"
hasTopics: true

View File

@@ -24,4 +24,5 @@ switch (expression) {
Visit the following resources to learn more:
- [switch - MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch)
- [The `switch` Statement: Why, What and How - CodeGuage](https://www.codeguage.com/courses/js/conditions-switch)
- [The switch statement - javascript.info](https://javascript.info/switch)

View File

@@ -12,3 +12,4 @@ So even though you may not have to implement your own asynchronous functions ver
Visit the following resources to learn more:
- [Asynchronous JavaScript - MDN](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Asynchronous/Introducing)

View File

@@ -2,8 +2,8 @@
jsonUrl: "/jsons/roadmaps/javascript.json"
pdfUrl: "/pdfs/roadmaps/javascript.pdf"
order: 5
featuredTitle: "JavaScript"
featuredDescription: "Step by step guide to learn JavaScript in 2023"
briefTitle: "JavaScript"
briefDescription: "Step by step guide to learn JavaScript in 2023"
title: "JavaScript Roadmap"
description: "Step by step guide to learn JavaScript in 2023"
isNew: true

View File

@@ -0,0 +1,13 @@
# What is Kubernetes
Kubernetes can be described as a platform for managing and running containers. Containers are a type of virtualization technology that allow you to package applications and their dependencies into a single, isolated unit, known as a container image.
Kubernetes provides a way to deploy, manage, and scale these containerized applications in a clustered environment. This makes it easier to deploy, scale, and manage applications, especially microservices-based applications, in a consistent and reliable manner.
Kubernetes provides features such as automatic load balancing, self-healing, and rolling updates, which makes it a popular choice for running production-grade applications. With Kubernetes, you can deploy, manage, and scale your applications in a controlled, predictable, and efficient way, regardless of whether you're running them on-premise, in the cloud, or in a hybrid environment.
Learn more from the following links:
- [Kuberenetes Documentation](https://kubernetes.io/docs/home/)
- [Overview of Kubernetes](https://kubernetes.io/docs/concepts/overview/)
- [Tutorial - What is Kubernetes](https://www.youtube.com/watch?v=VnvRFRk_51k)

View File

@@ -0,0 +1,20 @@
# Concepts and Terminologies
Following are the main concepts and terminologies in Kubernetes:
1. Cluster: A group of machines, either physical or virtual, that run Kubernetes and work together to host your applications.
2. Node: A single machine in a cluster that runs containers.
3. Pod: The smallest and simplest unit in the Kubernetes object model, representing a single instance of a running process in your cluster.
4. Deployment: A higher-level object that manages replicas of your application and updates to them. A deployment ensures that a specified number of pods are running at any given time.
5. Service: An abstraction that defines a logical set of pods and a policy by which to access them. Services enable communication between pods and expose your application to the network.
6. Volume: A way to persist data generated by and used by containers. Volumes allow data to survive beyond the lifetime of a single pod.
7. Label: A key-value pair that can be attached to objects in Kubernetes, used to organize and select subsets of objects.
8. Namespace: A virtual cluster for organizing resources within a physical cluster. Used for isolating resources and sharing cluster access.
9. Kubelet: An agent that runs on each node in the cluster and communicates with the control plane to ensure that containers are running as expected.
10. kubectl: A command-line tool for interacting with a Kubernetes cluster.
Learn more from the following links:
- [Concepts - Kubernetes](https://kubernetes.io/docs/concepts/)
- [Overview of Kubernetes](https://kubernetes.io/docs/concepts/overview/)
- [Kubernetes Basics](https://www.youtube.com/watch?v=B_X4l4HSgtc)

View File

@@ -0,0 +1,20 @@
# Kubernetes vs other Container Orchestration Tools
Kubernetes is one of the most popular and widely used container orchestration tools, but there are several other tools available for managing containers, such as:
- Docker Swarm
- Apache Mesos
- Amazon ECS (Elastic Container Service)
- Hashicorp Nomad
When comparing these tools to Kubernetes, there are several key differences to consider:
1. Complexity: Kubernetes is more complex than other tools, but provides more features and greater flexibility for deploying and managing containers.
2. Community: Kubernetes has a large and active community, providing a wealth of resources and support.
3. Portability: Kubernetes has better portability and can run on multiple platforms, including on-premise, in the cloud, or in a hybrid environment.
4. Integrations: Kubernetes has a large number of integrations with other tools and services, making it easier to manage and operate containers.
Learn more from the following resources:
- [Production-Grade Container Orchestration](https://kubernetes.io/)
- [Docker vs Kubernetes vs Docker Swarm](https://www.youtube.com/watch?v=9_s3h_GVzZc)

View File

@@ -0,0 +1,9 @@
# Introduction
Kubernetes is an open-source platform for automating deployment, scaling, and management of containerized applications. It helps in organizing and scheduling containers on a cluster of machines and ensures that they run as intended. It provides features like self-healing, rollouts and rollbacks, service discovery, and secret management. Kubernetes helps in building and deploying highly available, scalable applications that run in containers. It has become a popular platform for deploying microservices-based applications and is widely adopted in the industry.
Learn more from the following resources:
- [Kubernetes Documentation](https://kubernetes.io/docs/home/)
- [Kubernetes Tutorial for Beginners](https://www.youtube.com/watch?v=X48VuDVv0do)
- [Introduction To Kubernetes](https://www.youtube.com/watch?v=ISUmszlMQPU)

View File

@@ -0,0 +1,19 @@
# Setting up a Cluster
Setting up a cluster in Kubernetes can seem like a daunting task, but it can be broken down into a few simple steps. Here's a basic overview of how to get started:
- Install and configure the necessary software: You'll need to install the Kubernetes command line tool, kubectl, and a software package manager such as Docker, Minikube, or MicroK8s to help manage your cluster.
- Choose a cloud provider or physical hardware: You can either set up a cluster on a cloud provider such as AWS, Google Cloud, or Microsoft Azure, or on physical hardware such as a computer or a cluster of computers.
- Initialize the cluster: Once you have the necessary software installed, you can use kubectl to initialize your cluster. This step will create the necessary components, such as the control plane and worker nodes, and configure them to work together.
- Deploy applications: Once your cluster is up and running, you can use kubectl to deploy your applications. You can either create manifests for your applications or use a pre-existing container image from a registry such as Docker Hub.
- Monitor and manage the cluster: It's important to monitor and manage your cluster to ensure that it's running smoothly. You can use tools like kubectl and Kubernetes dashboards to monitor resource usage, check the status of your applications, and troubleshoot any issues that may arise.
Learn more from the following links:
- [Getting started with Kubernetes](https://kubernetes.io/docs/setup/)
- [Build a Kubernetes Home Lab from Scratch](https://www.youtube.com/watch?v=_WW16Sp8-Jw)
- [Install Kubernetes Cluster](https://www.youtube.com/watch?v=Ro2qeYeisZQ)

View File

@@ -0,0 +1,14 @@
# Configuring Nodes
Configuring nodes in Kubernetes involves setting up individual machines that will host the containers managed by a cluster. Following is the procedure to do so:
- Install a container runtime: In order to run containers, a node must have a container runtime installed, such as Docker or CRI-O.
- Install kubeadm, kubelet and kubectl: Kubeadm is a tool that helps you bootstrap a Kubernetes cluster. Kubelet is an agent that runs on each node and makes sure that containers are running as expected. Kubectl is a command-line tool for controlling the cluster.
- Join the node to the cluster: The node must be registered with the cluster so that it can receive instructions from the control plane components. You can do this by using the `kubeadm join` command, which you run on the node and pass it the join token and cluster discovery information that you got when you created the cluster.
- Assign labels and taints to nodes: Labels and taints are used to control which pods can run on a node. Labels are used to categorize nodes and taints are used to mark nodes as unschedulable for certain pods. You can assign labels and taints to a node using the `kubectl label` and `kubectl taint` commands.
- Monitor node health: It's important to monitor the health of your nodes to make sure they are running as expected and that the containers they host are healthy. You can monitor node health by using tools like `kubectl get nodes`, `kubectl describe node`, and Kubernetes Dashboard.
Learn more from the following links:
- [Nodes in Kubernetes](https://kubernetes.io/docs/concepts/architecture/nodes/)
- [Setup Kubernetes Master and Worker Node](https://www.youtube.com/watch?v=ftrAFHL6w2c)

View File

@@ -0,0 +1,16 @@
# Cluster Networking
Cluster networking in Kubernetes refers to the communication between different components of a Kubernetes cluster, such as pods, services, and nodes. In order to understand how cluster networking works in Kubernetes, it's helpful to understand some basic concepts.
A pod is the smallest unit of deployment in Kubernetes, and it contains one or more containers. Pods have a unique IP address and can communicate with other pods through the network.
A service is a logical abstraction over a set of pods, and it provides a stable IP address and DNS name for those pods. Services allow communication between pods and external clients.
Nodes are the worker machines in a Kubernetes cluster, and they run the pods. Nodes communicate with each other and with the control plane components, such as the API server, to manage the cluster.
By default, Kubernetes uses the Container Network Interface (CNI) plugin to implement cluster networking. CNI plugins are responsible for allocating network addresses, creating network interfaces for pods, and setting up network routes.
Learn more from the following links:
- [Cluster Networking](https://kubernetes.io/docs/concepts/cluster-administration/networking/)
- [Kubernetes Networking](https://www.youtube.com/watch?v=OaXWwBLqugk)

View File

@@ -0,0 +1,16 @@
# Cluster Federation
Cluster Federation in Kubernetes is a feature that allows multiple individual Kubernetes clusters to be joined into a single, federated cluster. This enables administrators to manage multiple clusters as a single entity, providing a unified view and management of resources across multiple clusters.
Here's a simple explanation of the concept:
- Create multiple individual Kubernetes clusters, each with its own resources.
- Set up a federated control plane that acts as a central management system for the individual clusters.
- Use the federated control plane to manage and orchestrate resources across all the individual clusters.
Applications running on the individual clusters can be made available to other clusters through the federation, enabling cross-cluster communication and sharing of resources.
Learn more from the following links:
- [Kubernetes Federation Evolution](https://kubernetes.io/blog/2018/12/12/kubernetes-federation-evolution/)
- [Kubernetes Cluster Federation](https://www.youtube.com/watch?v=86jZdmAjWns)

View File

@@ -0,0 +1,12 @@
# Multi Cluster Management
Multi-cluster management in Kubernetes refers to the process of managing multiple Kubernetes clusters as a single entity. This allows for the centralized management of resources across multiple clusters, making it easier to manage and deploy applications at scale.
For example, a multi-cluster management system might allow you to manage multiple Kubernetes clusters in different regions, and deploy an application to multiple clusters with a single command. Additionally, it can provide a unified view of resources across multiple clusters, making it easier to understand the state of your infrastructure.
Multi-cluster management in Kubernetes can be achieved through various tools and solutions, such as the Kubernetes federation API, and various multi-cluster management platforms like OpenShift and Anthos.
Learn more from the following links:
- [Configure Access to Multiple Clusters](https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters/)
- [Tutorial - Kubernetes Multi-Cluster Management](https://www.youtube.com/watch?v=CsTLmRj5Xo8)

View File

@@ -0,0 +1,26 @@
# Cluster Setup and Configuration
Setting up a k8s cluster can be a complex task, but there are various tools and resources available to help beginners get started.
Here's a basic step-by-step guide to setting up a k8s cluster:
1. Requirements:
- A set of machines (physical or virtual) to act as nodes in your cluster.
- A machine to act as the master node, which will manage the other nodes.
- A way to network the nodes together so they can communicate with each other.
2. Install k8s:
- Choose the appropriate installation method for your setup. You can install k8s using a package manager, or you can use a tool such as kubeadm to automate the process.
3. Initialize the Cluster:
- Use the kubeadm tool to initialize your cluster and create the necessary configuration files.
4. Join Nodes to the Cluster:
- Use the kubeadm tool to join additional nodes to your cluster.
5. Verify the Cluster:
- Use the kubectl command-line tool to verify that your nodes are healthy and that the cluster is functioning as expected.
6. Deploy Applications:
- Use kubectl to deploy and manage applications on your k8s cluster.
Learn more from the following links:
- [Getting started with Kubernetes](https://kubernetes.io/docs/setup/)
- [Configure Access to Multiple Clusters](https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters/)
- [Cluster Architecture in Kubernetes](https://kubernetes.io/docs/concepts/architecture/)

View File

@@ -0,0 +1 @@
# Pods and their role

View File

@@ -0,0 +1 @@
# Creating and managing pods

View File

@@ -0,0 +1 @@
# Replication and scaling

View File

@@ -0,0 +1 @@
# Deployment strategies

View File

@@ -0,0 +1 @@
# Pods and replication

View File

@@ -0,0 +1 @@
# Networking pods and communication

View File

@@ -0,0 +1 @@
# Understanding and using services

View File

@@ -0,0 +1 @@
# Network load balancing with services

View File

@@ -0,0 +1 @@
# External access to services

View File

@@ -0,0 +1 @@
# Services and networking

View File

@@ -0,0 +1 @@
# Config management and config maps

View File

@@ -0,0 +1 @@
# Using secrets

View File

@@ -0,0 +1 @@
# Usage in pods and controllers

View File

@@ -0,0 +1 @@
# Configmaps and secrets

View File

@@ -0,0 +1 @@
# Storage options

View File

@@ -0,0 +1 @@
# Persistent storage

View File

@@ -0,0 +1 @@
# Volumes

View File

@@ -0,0 +1 @@
# Storage and volumes

View File

@@ -0,0 +1 @@
# Resource consumption and limits

View File

@@ -0,0 +1 @@
# Assigning namespace quotas

View File

@@ -0,0 +1 @@
# Resource usage and performance monitoring

View File

@@ -0,0 +1 @@
# Resource management and quotas

View File

@@ -0,0 +1 @@
# Securing a kubernetes cluster

View File

@@ -0,0 +1 @@
# Role based access control

View File

@@ -0,0 +1 @@
# Cluster and network security

View File

@@ -0,0 +1 @@
# Container and pod security

View File

@@ -0,0 +1 @@
# Security

View File

@@ -0,0 +1 @@
# Cluster and pod health monitoring

View File

@@ -0,0 +1 @@
# Log collection and analysis

View File

@@ -0,0 +1 @@
# Monitoring tools setup

View File

@@ -0,0 +1 @@
# Monitoring and logging

View File

@@ -0,0 +1 @@
# Scheduling pods on nodes

View File

@@ -0,0 +1 @@
# Configuring taints and tolerations

View File

@@ -0,0 +1 @@
# Automated scheduling and self healing

View File

@@ -0,0 +1 @@
# Managing and upgrading cluster

View File

@@ -0,0 +1 @@
# Scheduling and management

View File

@@ -0,0 +1 @@
# Stateful vs stateless apps

View File

@@ -0,0 +1 @@
# Statefulset patterns and usecases

View File

@@ -0,0 +1 @@
# Persistent storage and network identity

Some files were not shown because too many files have changed in this diff Show More