1
0
Fork 0

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:
Vojtěch Mareš 2023-01-11 15:45:51 +01:00
parent b1aa7f7550
commit 6daa1a6d03
19 changed files with 603 additions and 644 deletions

View file

@ -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
View 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
View 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} />
);

View file

@ -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;

View 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} />
);

View 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} />
);