From 285efd1ac47957812c71828956106cb98d987bd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Bj=C3=B8ralt?= Date: Mon, 2 Sep 2024 15:32:15 +0200 Subject: [PATCH] draft first tasks --- README.md | 50 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index d1c016b..6607069 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,57 @@ Sørg for å ha følgende installert: - Docker, containerd, eller podman - kubectl + - Ha et lokalt cluster, f eks via minikube # Del 1: Hallo verden +## 1.1 - Deploy et enkelt API +Før vi starter, la oss se om vi har noen pods kjørende: +``` +kubectl get pod +``` + +I et nytt terminalvindu, følg med på pods, deployments og services: +``` +watch -n 0.5 kubectl get pod,deploy,svc +``` +Denne vil kjøre kommandoen hvert 0.5 sekund, så du ser når ting skjer i clusteret. + + +Så kan vi spinne opp helt enkelt API i én pod: +``` +kubectl run --image ghcr.io/varianter/k8s-101:v1.0.1 myapi +``` + +Voila! Da kjører apiet fint. Men - åssen kan vi få brukt det? + +## 1.2 - Eksponer APIet +Først - la oss få litt mer info om poden: +``` +kubectl get pod -o wide +``` + +Merk deg IP-addressen. Dette er IPen _inne i clusteret_, som betyr at andre pods kan nå den på den IPen. Vi derimot, kan ikke nå den. +Derfor skal vi først pinge den fra inni clusteret: +``` +kubectl run --image nginx tmp #Start en pod vi kan kjøre curl fra +kubectl exec -it tmp -- curl /info #Ping +kubectl delete pod tmp #Rydde opp +``` + +Så må vi få eksponert appen utad også +``` +kubectl expose pod myapi --target-port 8080 --type NodePort --name myservice +``` +Dette lager en _NodePort_ -service som lar oss nå poden via _Noden den kjører på_. Typisk i produksjon vil du heller bruke en _IngressController_ el. + +For Minikube, bruk følgende for å få en link til å nå serivcen vi laget, og kopier den. +``` +# Mac: +minikube service myservice --url | pbcopy +``` + +Prøv å åpne `/swagger` i nettleseren. + -## 1.1 - Deploy et enkelt API/nettside - deploye en applikasjon `k create deploy myapp --image=img` eller via yaml - Konfigurere med miljøvariabler - Koble på en service og eksponer appen