Unterrichtsressourcen

[[TOC]]

Überblick über die Unterrichtsressourcen

Ressourcen in Unterordnern ablegen und in dieser Übersichtsseite sinnvolle Hinweise und Verlinkungen ergänzen

Infrastruktur erstellen

git clone https://gitlab.com/ch-tbz-wb/Stud/cnc
cd cnc/2_Unterrichtsressourcen

terraform init

terraform plan

terraform apply -parallelism=1 -auto-approve 

Hinweis: Terraform verwendet 10 Threads das ist zuviel für das MAAS.

Für mehrere Studenten

export TF_VAR_host_no=10
for stud in 01 02 03 04 05 06 07 08 09 10 11 12
do
    terraform workspace new ws${stud}
    terraform workspace select ws${stud}
    terraform init
    terraform apply -parallelism=1 -auto-approve
    TF_VAR_host_no=$((TF_VAR_host_no + 6))
done

Hinweis: falls MAAS sich mit Fehler meldet, einloggen in den entsprechende KVM-Host und VMs mittels virsh list --all und virsh undefine xxx manuell weglöschen.

Der Zugriff, ohne Password, kann mittels lerncloud SSH-Key erfolgen.

ssh -i ~/.ssh/lerncloud ubuntu@ws01-10-cnc-controlplane-01.maas

Cluster joinen

export TF_VAR_host_no=10
for stud in 01 02 03 04 05 06 07 08 09 10 11 12
do 
    CPLANE="ws${stud}-${TF_VAR_host_no}-cnc-controlplane-01.maas"
    JOIN="$(ssh -i ~/.ssh/lerncloud ubuntu@${CPLANE} -- microk8s add-node --token-ttl 3600 | sed -n '2p')"
    for cp in 02 03
    do
        TF_VAR_host_no=$((TF_VAR_host_no + 1))
        ssh -i ~/.ssh/lerncloud ubuntu@ws${stud}-${TF_VAR_host_no}-cnc-controlplane-${cp}.maas -- ${JOIN}
    done
    for worker in 01 02 03
    do
        TF_VAR_host_no=$((TF_VAR_host_no + 1))
        ssh -i ~/.ssh/lerncloud ubuntu@ws${stud}-${TF_VAR_host_no}-cnc-worker-${worker}.maas -- ${JOIN} --worker
    done
    TF_VAR_host_no=$((TF_VAR_host_no + 1))
done  

Joint einen Kubernetes Cluster mit 3 x Control Plan und 3 x Worker.

Kontrollieren

ssh -i ~/.ssh/lerncloud ubuntu@ws01-10-cnc-controlplane-01.maas

kubectl get nodes -o wide
kubectl get nodes -l node.kubernetes.io/microk8s-controlplane=microk8s-controlplane
kubectl get nodes -l node.kubernetes.io/microk8s-worker=microk8s-worker    

Einzelne Node (module) löschen

Wurde die Node bereits dem Kubernetes Cluster hinzufügen, ist diese zuerst zu entfernen microk8s leave. Mehr Informationen hier.

Dann kann die Node einzeln gelöscht werden:

terraform destroy -target=module.controlplane-01 -auto-approve 

Erstellen einfach wieder mit:

terraform apply -parallelism=1 -auto-approve  

oder gezielt mit:

terraform apply -target=module.controlplane-01

Container Image erstellen (nicht für Produktive Umgebungen)

Auf der controlplan-01 ist neben docker und podman auch podman-compose installiert.

Mit allen drei können Container Images erstellt werden. Diese sind dann im jeweiligen Image Verzeichnis des Tools abgelegt und für microk8s nicht direkt erreichbar.

Lösung: Container Images ins tar Format exportieren und in microk8s importieren.

docker save catalog -o catalog.tar
microk8s ctr catalog import catalog.tar

Beim Starten mit Kubernetes die IfNotPresent Policy verwenden.

kubectl run catalog --image catalog --image-pull-policy="IfNotPresent" --restart=Never

Wurde schon ein Cluster erstellt, d.h. es sind mehrere Kubernetes Nodes vorhanden, ist der Container explizit auf der ersten Node zu starten:

kubectl run catalog --image catalog --image-pull-policy="IfNotPresent" --restart=Never \
--overrides='{ "apiVersion": "v1", "spec": { "nodeName": "ws01-10-cnc-controlplane-01" } }'     

Aufräumen

export TF_VAR_host_no=10
for stud in 01 02 03 04
do
    terraform workspace select ws${stud}    
    terraform destroy -auto-approve
    TF_VAR_host_no=$((TF_VAR_host_no + 6))
done  

Weitere Microservices

Wo finde ich weitere Applikationen und Microservices zum Üben