502 Eine Applikation als Container mit CI pipelines deployen [4 PT]

In diesem Kapitel wirst du eine Applikation in ein Containerimage verpacken und dieses via CI/CD bauen. Anschließend baust du die notwendige Infrastruktur für das Deployment mit Terraform und lässt die Terraform Aufgaben auch in CI/CD laufen. Dieses Kapitel ist sehr praxisnah und ähnliche Aufgaben werden dich auch später erwarten.

Ziele

  • Du verstehst wie du eine Applikation als Container Image bauen und deployen kannst
  • Du hast gelernt wie CI Jobs in Gitlab funktionieren
    • Du weißt was Pipelines und Jobs sind
    • Du kannst erklä...

503 Kubernetes Basics [0.5 PT]

In diesem Kapitel lernst du die grundsätzlichen Konzepte von Kubernetes kennen. Hier geht es weniger um die API Objekte wie Deployments, Pods oder Service, sondern um die maßgebenden Prinzipien wie Kubernetes funktioniert und wie ein Cluster aufgebaut wird.

Ziele

  • Du verstehst die Cross-Cutting Concerns, die Alan Hohn für alle Container Orchestrierungslösungen anführt:
    • Dynamic scheduling
    • Distributed state
    • Multitenancy
    • Hardware isolation
  • Für was dient die Kubernetes Control Plane und was genau kann man sich d...

504 Kubernetes Ressourcen um Workloads/Applikationen zu deployen [0.5 PT]

Ziele

  • Du verstehst, was ein Pod ist und warum es Sinn macht, Container auf diese Weise zu gruppieren.
    • Du verstehst auch wann Container nicht innerhalb des gleichen Pods laufen sollten
    • Du weißt auf welchen Ebenen die Container im gleichen Pod voneinander isoliert sind (bzw. nicht isoliert sind im vgl. zu anderen Pods)
  • Du verstehst was ein Deployment ist und wo der Unterschied zu einem DaemonSet ist.
    • Was ist ein ReplicaSet?
  • Wie weiß ein ReplicaSet oder ein Deployment welche Pods zu ihm gehören?
  • Was ist ein `C...

505 Kubernetes Networking [1.5 PT]

In dieser Card geht es um Netzwerke in Kubernetes. Schau noch einmal kurz auf Netzwerke zurück und schau dir die Ziele dort an, ob du noch fit in Netzwerkthemen bist. Wichtig ist auch, dass du die Netzwerkthemen bezüglich der Namespaces aus Funktionsweise von Containern verstanden hast.

Du wirst feststellen, dass die Komplexität relativ hoch ist. Das ist der Grund, w...

506 Debugging Kubernetes Pod scheduling [0.25 PT]

In diesem kurzen Kapitel lernst du die Grundlagen wie du Probleme von Workloads auf Kubernetes untersuchst. Dabei wird primär auf Scheduling Probleme von Pods eingegangen. Komplexe Probleme mit Controllern oder API Probleme bleiben außen vor, da dies den Rahmen sprengen würde.

Wenn du ein YAML manifest in kubernetes anwendest, und die Syntax an sich valide ist, wird es erfolgreich in den cluster state aufgenommen. Das bedeutet aber noch nicht, dass die Ressourcen auch wirklich funktionieren. Beispielsweise könnte bei einem Deployment das C...

507 Kubernetes Authorization and RBAC [0.5 PT]

Ziele

  • Du verstehst, welche Aufgaben der Kubernetes API Server übernimmt.
  • Du weißt, wie der API Server in das Management des Cluster States involviert ist.
  • Du weißt, auf welchem Port der API Server per Default hört und welches Protokoll gesprochen wird.
  • Du weißt, dass der API Server ein self signed Certificate verwendet und wie du diesem auf einem anderen System vertrauen kannst
  • Du kennst die 3 default Plugins für Authentifizierung am API server
  • Du weißt, wie die Authentifizierung und Role Zuweisung mit `Client Certific...

508 Kubernetes Container Runtime [0.25 PT]

Ziele

  • Du weißt, welcher Linux Service für das starten/stoppen/löschen von Containern zuständig ist.
  • Wie wird die Authentifizierung für Requests zum kubelet konfiguriert?
  • Du weißt, warum Container Runtimes für den kubelet leicht austauschbar sind.
  • Du weißt, warum ein so genannter pod-infra-container gestartet wird und warum hier bevorzugt gerne pause verwendet wird.
  • Du weißt, wie die DNS Konfiguration für den Kubernetes Nameserver in die Container kommt.
  • kubelet lässt unter anderem auch die Komponenten für die Control...

509 Kubernetes Persistent Storage [0.5 PT]

Ziele

  • Du weißt, für was man persistenten Speicherplatz in Kubernetes braucht.
  • Was ist eine StorageClass?
  • Für das Einbinden eines storage providers muss es mit `Container Storage Interface (CSI) kompatibel sein. Was sind hier die wichtigsten Eigenschaften?
  • Du weißt, wie du persistenten Storage für ein StatefulSet konfigurierst.
  • Du weißt, was ein Persistent Volume Claim (PVC) ist.
  • Was passiert, wenn ein StatefulSet mit einem via volumeClaimTemplates erstellten PVC gelöscht wird?
  • Bei StatefulSets will man unab...

510 Kubernetes Applikations Konfiguration und Secrets [0.5 PT]

Ziele

  • Du weißt, was ConfigMaps und Secrets sind.
  • Warum sollte man Secrets und ConfigMaps verwenden?
  • Was ist GITOPS?
  • Wird ein Pod automatisch Änderungen an einer ConfigMap, die er verwendet, anwenden?
  • Du weißt, wie Secrets verschlüsselt werden.
  • Du weißt, wie du Konfigurationsänderungen mit ConfigMaps/Secrets ausrollst und welche Fallstricke es gibt
  • Für was sind immutable ConfigMaps?
  • Was ist etcd?
  • Für was wird etcd bei Kubernetes eingesetzt?
  • Du kannst in eigenen Worten raft erklären.

Inhalte

-...

511 EKS Cluster und mehrere Terraform States [4 PT]

Im Kapitel 502 Eine Applikation als Container mit CI pipelines deployen hast du eine Applikation auf AWS deployed. In diesem Kapitel wirst du das Setup auf die Verwendung von Kubernetes umbauen und deinen Terraform Code weiter modularisieren.

Ziele

  • Du kannst deinen Terraform Code in mehrere Module und State/Workspaces aufteilen.
  • Du kannst ein EKS Cluster aufsetzen.
  • Du weißt, wie du dich am EKS Cluster authe...

512 k8s Workload Health and Resources [1 PT]

Ziele

  • Du verstehst, warum man Healthchecks u.ä. haben möchte. Du weißt auch, dass solche Checks nicht exklusiv für Kubernetes vorhanden sind.
  • Du kennst die 3 Typen von Probes, die man für Container anlegen kann
    • Du weißt, wann du welchen zum Einsatz bringst und wie sich die Probes verhalten.
  • Du kennst die 3 Einsatzzwecke für Probes und weißt, wie sich diese unterscheiden.
  • Warum braucht man neben Liveness und Startup noch die Readiness Probes?
  • Du kennst named ports und kannst dir vorstellen warum das nützlich s...

513 k8s Custom Resources and Operators [0.5 PT]

Ziele

  • Du verstehst was eine Custom Resource ist und warum das nützlich sein kann.
  • Du weißt, was ein Operator ist und wie dieser funktioniert.

Inhalte

Aufgaben

  1. Sprich mit deinem Mentor über Anhang A
  2. Sprich mit deinem Mentor über die labels aus Anhang B.

Anhang A

apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  na...

514 Applikations Stabilität und Monitoring [0.5 PT]

In diesem Kapitel lernst du wie man eine Applikation so betreibt, dass diese im Idealfall keine Ausfälle hat. Ein wichtiger Bestandteil ist dabei auch das Monitoring. Im Buch wird hier auf Prometheus eingegangen. In der Welt von Kubernetes ist Prometheus weit verbreitet, deswegen solltest du davon schon einmal gehört haben und grundsätzlich wissen, wie man es verwendet.

Prometheus selbst ist aber auch ein sehr umfangreiches Thema. Achte deswegen darauf dich für den Moment auf ein eher oberflächliches Wissen zu konzentrieren, da du im Folg...

515 Infrastruktur auf AWS Monitoren [2 PT]

Das Standardtool für Monitoring auf AWS ist Cloudwatch. Du hast dir in den AWS Kapiteln Cloudwatch sicherlich schon grundsätzlich angesehen. In diesem Kapitel wirst du es aber konkret kennenlernen. Du wirst Custom Metriken zu Cloudwatch pushen und Alarme erstellen.

Ziele

  • Erfülle alle Aufgaben
  • Du verstehst was ein Prometheus Label ist und warum man relabel_config braucht.
  • Du verstehst den Unterschied zwischen relabel_configs und metric_relabel_configs.

Inhalte

  • [Amazon CloudWatch instance-level metrics for Amazon RDS...