refactor: use mdx for content
- less dependencies - no need for gray-matter - no need for extra utils and interactions with filesystem
This commit is contained in:
parent
b1aa7f7550
commit
6daa1a6d03
19 changed files with 603 additions and 644 deletions
|
|
@ -1,95 +0,0 @@
|
|||
import Head from "next/head";
|
||||
import { useRouter } from "next/router";
|
||||
import ErrorPage from "next/error";
|
||||
|
||||
import TrainingType from "@/types/training";
|
||||
import { getAllTraining, getTrainingBySlug } from "@/lib/cms/training";
|
||||
import markdownToHTML from "@/lib/markdownToHTML";
|
||||
import { Header } from "@/components/layout/Header";
|
||||
import { Footer } from "@/components/layout/Footer";
|
||||
import { Training } from "@/components/trainingpage/Training";
|
||||
|
||||
type Props = {
|
||||
training: TrainingType;
|
||||
featuredTrainingList: TrainingType[];
|
||||
};
|
||||
|
||||
const TrainingPage = ({ training, featuredTrainingList }: Props) => {
|
||||
const router = useRouter();
|
||||
console.log(!router.isFallback);
|
||||
console.log(!training?.slug);
|
||||
console.log(typeof training.draft === "undefined");
|
||||
// if ((!router.isFallback && !training?.slug) || typeof training.draft === 'undefined') {
|
||||
// return <ErrorPage statusCode={404} />
|
||||
// }
|
||||
|
||||
return (
|
||||
<>
|
||||
<Head>
|
||||
<title>
|
||||
Školení {training.name} | Vojtěch Mareš - DevOps konzultant, lektor,
|
||||
engineer
|
||||
</title>
|
||||
|
||||
<meta
|
||||
name="description"
|
||||
content={`Školení ${training.name} | Vojtěch Mareš - DevOps konzultant, lektor, engineer`}
|
||||
/>
|
||||
</Head>
|
||||
<main>
|
||||
<Header />
|
||||
<Training training={training} />
|
||||
</main>
|
||||
<Footer />
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
export default TrainingPage;
|
||||
|
||||
type Params = {
|
||||
params: {
|
||||
slug: string;
|
||||
};
|
||||
};
|
||||
|
||||
export const getStaticProps = async ({ params }: Params) => {
|
||||
const training = getTrainingBySlug(params.slug, [
|
||||
"name",
|
||||
"content",
|
||||
"priceOpen",
|
||||
"priceCompany",
|
||||
"days",
|
||||
"logo",
|
||||
"content",
|
||||
"draft",
|
||||
"new",
|
||||
"featured",
|
||||
]);
|
||||
|
||||
const content = await markdownToHTML(training.content || "");
|
||||
|
||||
return {
|
||||
props: {
|
||||
training: {
|
||||
...training,
|
||||
content,
|
||||
},
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
export const getStaticPaths = async () => {
|
||||
const trainingList = getAllTraining(["slug"]);
|
||||
|
||||
return {
|
||||
paths: trainingList.map((training) => {
|
||||
return {
|
||||
params: {
|
||||
slug: training.slug,
|
||||
},
|
||||
};
|
||||
}),
|
||||
fallback: false,
|
||||
};
|
||||
};
|
||||
49
pages/skoleni/argocd.mdx
Normal file
49
pages/skoleni/argocd.mdx
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
import TrainingLayout from "@/components/trainingpage/TrainingLayout";
|
||||
import logoArgo from "@/images/logos/tools/argo.png";
|
||||
|
||||
export const meta = {
|
||||
name: "ArgoCD",
|
||||
price: {
|
||||
open: 5900,
|
||||
company: 24000,
|
||||
},
|
||||
logo: logoArgo,
|
||||
description:
|
||||
"ArgoCD je GitOps nastroj kterym nasazujeme aplikace do Kubernetes. Pracuje na zaklade deklaraticnich konfiguracnich souboru, ktete si stahuje z Gitu. To znamena, ze vse co commitneme do repozitare, se na nasadi do Kubernetes. O vsech zmenach: co, kdy, kdo udelal budeme mit prehledne zaznami v Gitu.",
|
||||
days: 1,
|
||||
featured: true,
|
||||
weight: 49,
|
||||
};
|
||||
|
||||
# Popis technologie
|
||||
|
||||
ArgoCD je GitOps nastroj kterym nasazujeme aplikace do Kubernetes. Pracuje na zaklade deklaraticnich konfiguracnich souboru, ktete si stahuje z Gitu. To znamena, ze vse co commitneme do repozitare, se na nasadi do Kubernetes. O vsech zmenach: co, kdy, kdo udelal budeme mit prehledne zaznami v Gitu.
|
||||
|
||||
# Co Vás naučím
|
||||
|
||||
- Uvod do CD
|
||||
- Co je ArgoCD
|
||||
- Instalace a konfigurace
|
||||
- GitOps
|
||||
- Plain Kubernetes manifests
|
||||
- Helm packages
|
||||
- Kustomize
|
||||
- Jsonnet
|
||||
- Rollbacks
|
||||
- Best Practices
|
||||
- User Management
|
||||
|
||||
# Pro koho je školení určeno
|
||||
|
||||
Školení je určeno pro vývojáře a DevOpsáky, kteří chteji automaticky nasazovat do Kubernetes podle GitOps principu.
|
||||
|
||||
# Předchozí znalosti
|
||||
|
||||
Zakladni znalost Kubernetes
|
||||
Technické požadavky
|
||||
Webový prohlížeč
|
||||
Přístup na internet
|
||||
|
||||
export default ({ children }) => (
|
||||
<TrainingLayout content={children} meta={meta} />
|
||||
);
|
||||
52
pages/skoleni/git.mdx
Normal file
52
pages/skoleni/git.mdx
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
import TrainingLayout from "@/components/trainingpage/TrainingLayout";
|
||||
import logoGit from "@/images/logos/tools/git.png";
|
||||
|
||||
export const meta = {
|
||||
name: "Git",
|
||||
price: {
|
||||
open: 5900,
|
||||
company: 24000,
|
||||
},
|
||||
logo: logoGit,
|
||||
description:
|
||||
"Git je moderní verzovaci nástroj, který se stal de facto standardem mezi vývojáři. Používají jej na denní bázy jednotlivci, startupy i korporace. Git vám nabízí jednoduchou kolaboraci na projektu s více lidmi a práci na více částech současně aniž byste si zasahovali do rozdělaných věcí nebo je jinak narušovali. Spolupráci na vývoji projektu ještě zlepšuje Gitlab, což je kolaborativni platforma na návrh, vývoj a provozování software (více o Gitlabu v samostatném kurzu).",
|
||||
days: 1,
|
||||
weight: 1,
|
||||
};
|
||||
|
||||
# Co je to Git?
|
||||
|
||||
Git je moderní verzovaci nástroj, který se stal de facto standardem mezi vývojáři. Používají jej na denní bázy jednotlivci, startupy i korporace. Git vám nabízí jednoduchou kolaboraci na projektu s více lidmi a práci na více částech současně aniž byste si zasahovali do rozdělaných věcí nebo je jinak narušovali. Spolupráci na vývoji projektu ještě zlepšuje Gitlab, což je kolaborativni platforma na návrh, vývoj a provozování software (více o Gitlabu v samostatném kurzu).
|
||||
|
||||
# Jak školení probíhá
|
||||
|
||||
Na školení formou workshopu si vysvětlíme proč je dobré Git používat, jak funguje (proč dnes nemá konkurenty) a best practice. Ukážeme si vše od instalace a základního nastavení Gitu, přes jednoduchou práci na jedné větvi až po práci v teamu a s více větvemi za pomoci různých mergovacích strategií (merge, rebase). Ukážeme si výhody a nevýhody obou z nich a je pak na Vás jak to budete dělat. Také si ukážeme jak se dostat ze špatných situací, jako omylem jsem si všechno smazal a podobně.
|
||||
|
||||
# Co Vás naučím
|
||||
|
||||
Konfigirace GITu
|
||||
Vytvořit nový repozitář
|
||||
Základní ovládání GITu
|
||||
Práce v jedné větvi
|
||||
Práce ve větvích - merge, rebase (silná stránka Gitu)
|
||||
Práce se vzdálenými repozitáři
|
||||
Záchrana smazaných dat z repozitáře
|
||||
|
||||
# Pro koho je školení určeno
|
||||
|
||||
Školení je určeno primárně pro vývojáře, kteří neverzují vůbec nebo nepoužívají Git. Zároveň je vhodné i pro ty, kteří Git nevyužívají na 100% (git commit, git pull, git push). Ať jde o malé weby nebo velké projekty, Git si najde uplatnění. Dále je kurz vhodný i pro ty, kteří nepíšou kód tak často, ale občas potřebují něco zaverzovat, například nějaké migrační skripty DB anebo konfiguraci serveru. Git pomůže i DBA nebo DevOps.
|
||||
|
||||
## Předchozí znalosti
|
||||
|
||||
Základy programování
|
||||
Základy práce v terminálu výhodou
|
||||
Základní znalost Gitu výhodou
|
||||
|
||||
## Technické požadavky
|
||||
|
||||
Nainstalovaný Git
|
||||
Přístup na internet - ideálně bez korporátní proxy, případně nastavenou proxy v prohlížeči
|
||||
|
||||
export default ({ children }) => (
|
||||
<TrainingLayout content={children} meta={meta} />
|
||||
);
|
||||
|
|
@ -1,56 +0,0 @@
|
|||
import Head from "next/head";
|
||||
|
||||
import { Header } from "@/components/layout/Header";
|
||||
import { Footer } from "@/components/layout/Footer";
|
||||
import { getAllTraining } from "@/lib/cms/training";
|
||||
import TrainingType from "@/types/training";
|
||||
import { TrainingListGrid } from "@/components/trainingpage/TrainingListGrid";
|
||||
|
||||
export const getStaticProps = async () => {
|
||||
const allTraining = getAllTraining([
|
||||
"name",
|
||||
"slug",
|
||||
"logo",
|
||||
"description",
|
||||
"days",
|
||||
"weight",
|
||||
"featured",
|
||||
"new",
|
||||
"draft",
|
||||
]);
|
||||
|
||||
return {
|
||||
props: { allTraining },
|
||||
};
|
||||
};
|
||||
|
||||
type Props = {
|
||||
allTraining: TrainingType[];
|
||||
};
|
||||
|
||||
const TrainingList = ({ allTraining }: Props) => {
|
||||
// remove drafts
|
||||
const trainingList = allTraining.filter((val) => !val.draft);
|
||||
|
||||
return (
|
||||
<>
|
||||
<Head>
|
||||
<title>
|
||||
Moje školení | Vojtěch Mareš - DevOps konzultant, lektor, engineer
|
||||
</title>
|
||||
|
||||
<meta
|
||||
name="description"
|
||||
content="Moje školení | Vojtěch Mareš - DevOps konzultant, lektor, engineer"
|
||||
/>
|
||||
</Head>
|
||||
<main>
|
||||
<Header />
|
||||
<TrainingListGrid trainingList={trainingList} />
|
||||
</main>
|
||||
<Footer />
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
export default TrainingList;
|
||||
52
pages/skoleni/kubernetes.mdx
Normal file
52
pages/skoleni/kubernetes.mdx
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
import logoKubernetes from "@/images/logos/tools/kubernetes.png";
|
||||
import TrainingLayout from "@/components/trainingpage/TrainingLayout";
|
||||
|
||||
export const meta = {
|
||||
name: "Kubernetes",
|
||||
price: {
|
||||
open: 11900,
|
||||
company: 44000,
|
||||
},
|
||||
logo: logoKubernetes,
|
||||
description:
|
||||
"Kubernetes jsou dnes nejrozšířenější platformou na hostování Docker kontejnerů a jsou podporovány velkými hráči na trhu (Google, Amazon, Microsoft) skrz Cloud Native Computing Foundation. Kubernetes pro provoz používají všechny velikosti firem, od startupu po korporace.",
|
||||
days: 2,
|
||||
featured: true,
|
||||
weight: 50,
|
||||
};
|
||||
|
||||
# Popis technologie
|
||||
|
||||
Kubernetes jsou dnes nejrozšířenější platformou na hostování Docker kontejnerů a jsou podporovány velkými hráči na trhu (Google, Amazon, Microsoft) skrz Cloud Native Computing Foundation. Kubernetes pro provoz používají všechny velikosti firem, od startupu po korporace.
|
||||
|
||||
# Jak školení probíhá
|
||||
|
||||
Školeni probíhá formou workshopů, vše si prakticky vyzkoušíme a osaháme. Ukážeme jak spustit Kubernetes lokálně (pro vývoj) a na cloudové platformě DigitalOcean. Dozvíme se základní strukturu Kubernetes a projdeme si jeho komponenty. Naučíme se jak napsat Kubernetes manifest a jak jim nasadit aplikaci v Dockeru. Dále si ukážeme jak pracovat s právama v Kubernetes a jak používat (a psát) Kubernetes balíčky v Helmu.
|
||||
|
||||
# Co Vás naučím
|
||||
|
||||
- Teoretický úvod do Kubernetes
|
||||
- Instalace Minikube a kubectl (pro ty kteří nenainstalovali doma)
|
||||
- Popis Kubernetes komponent
|
||||
- Deployment do Kubernetes
|
||||
- Práce s právy v Kubernetes clusteru
|
||||
- Teoretický úvod do Helm balíčku
|
||||
- Instalace / Deployment pomocí Helmu
|
||||
- Psaní vlastního Helm balíčku
|
||||
|
||||
# Pro koho je školení určeno
|
||||
|
||||
Školení je určeno pro lidi (vývojáři a devops), kteří mají zájem provozovat své Docker aplikace v Kubernetes.
|
||||
|
||||
# Předchozí znalosti
|
||||
|
||||
Základy práce s Dockerem
|
||||
Základy práce s Linuxem
|
||||
Základy práce v terminálu
|
||||
Technické požadavky
|
||||
Nainstalovaný Kubernetes
|
||||
Přístup na internet - ideálně bez korporátní proxy, případně nastavenou proxy v prohlížeči
|
||||
|
||||
export default ({ children }) => (
|
||||
<TrainingLayout content={children} meta={meta} />
|
||||
);
|
||||
59
pages/skoleni/terraform.mdx
Normal file
59
pages/skoleni/terraform.mdx
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
import TrainingLayout from "@/components/trainingpage/TrainingLayout";
|
||||
import logoTerraform from "@/images/logos/tools/terraform.png";
|
||||
|
||||
export const meta = {
|
||||
name: "Terraform",
|
||||
price: {
|
||||
open: 5900,
|
||||
company: 24000,
|
||||
},
|
||||
logo: logoTerraform,
|
||||
description:
|
||||
"Terraform je nástroj, který se používá ke správě infrastruktury v cloudu, jak veřejném (AWS, Azure, GCP), tak privátním (OpenStack, VMware vSphere). Terraform Vám umožní spravovat infrastruktutru jako kód, to znamená verzovanou v Gitu, přidávání resources pomocí merge (pull) requestů a mnoho dalších výhod. Infrastrukturu můžete dále nasadit do testovacího prostředí přesně tak, jako je v produkci bez zbytečného úsilí. O všech komponentách máte přehled a můžete predikovat ceny. Konec klikání infrastruktury, zkuste Terraform. Terraform umožnuje spravovat více cloudových providerů současne, zároveň umožnuje pracovat s hibridními cloudy (část v privátním cloudu, část ve veřejném).",
|
||||
days: 1,
|
||||
featured: true,
|
||||
weight: 31,
|
||||
};
|
||||
|
||||
# Co to je Terraform a k čemu se používá?
|
||||
|
||||
Terraform je nástroj, který se používá ke správě infrastruktury v cloudu, jak veřejném (AWS, Azure, GCP), tak privátním (OpenStack, VMware vSphere).
|
||||
|
||||
Terraform Vám umožní spravovat infrastruktutru jako kód, to znamená verzovanou v Gitu, přidávání resources pomocí merge (pull) requestů a mnoho dalších výhod. Infrastrukturu můžete dále nasadit do testovacího prostředí přesně tak, jako je v produkci bez zbytečného úsilí. O všech komponentách máte přehled a můžete predikovat ceny. Konec klikání infrastruktury, zkuste Terraform.
|
||||
|
||||
Terraform umožnuje spravovat více cloudových providerů současne, zároveň umožnuje pracovat s hibridními cloudy (část v privátním cloudu, část ve veřejném).
|
||||
|
||||
# Jak školení probíhá
|
||||
|
||||
Školení je formou workshopu, všechno si podrobně vyzkoušíme a vysvětlíme. Ukážeme si jak Terraform pracuje, jak jej používat v teamu a jak jím spravovat infrastukturu. Uděláme si příklad infrastruktury jednoduché aplikace, kde nastavíme vše - od DNS, přes Kubernetes cluster po S3 file storage.
|
||||
|
||||
# Co Vás naučím
|
||||
|
||||
- Základní koncept Terraformu
|
||||
- Výhody Terraformu proti Ansible, Puppetu, ...
|
||||
- Konfigurace Terraformu pro práci v teamu
|
||||
- Ovládání Terraform CLI
|
||||
- Úvod do Terraform Configuration Language (HCL)
|
||||
- Terraform Providers - napojení na cloudy
|
||||
- Práce s resources v Terraformu
|
||||
- Terraform moduly
|
||||
- Best Practice
|
||||
|
||||
# Pro koho je školení určeno
|
||||
|
||||
Školení je určeno pro DevOps a adminy, kteří chtějí lépe a efektivněji spravovat infrastrukturu. Zároveň také pro vývojáře, kteří se starají o nejakou infrastrukturu v cloudech.
|
||||
|
||||
# Předchozí znalosti
|
||||
|
||||
Základní znalost veřejných cloudů (AWS, DigitalOcean, Azure, ...)
|
||||
Základy práce v terminálu
|
||||
|
||||
# Technické požadavky
|
||||
|
||||
Nainstalovaný Terraform
|
||||
Přístup na internet (ideálně bez korporatni proxy)
|
||||
Vlastní účet v DigitalOceanu výhodou
|
||||
|
||||
export default ({ children }) => (
|
||||
<TrainingLayout content={children} meta={meta} />
|
||||
);
|
||||
Reference in a new issue