DevOps mit Kubernetes

Schulung / Webinar

Kubernetes bringt in Verbindung mit einer Container Plattform, die Möglichkeit, in Projekten von Anfang an die Themen Skalierbarkeit, Load Balancing und High Availability bei geringem Aufwand mit einzuplanen. Durch seinen deklarativen Stil muss dabei vom Anwender keine Programmlogik verstanden werden, sondern der Soll-Zustand beschrieben werden. Mit dieser Idee wird einerseits die automatische Reaktion auf Hardware-Fehler Teil des Regelverhaltens. Andererseits eröffnet sich ein Universum an Tools, sei es zur Auto-Generierung der kompletten Infrastruktur aus Code oder zum Monitoring des Systemzustands.

Im Seminar wirst Du eine Beispiel-Software-Komponente als Docker Container auf einem Kubernetes-Cluster deployen. Nach manuellem Skalieren und Load Balancing werden wir dann sehen, wie wir diese Aufgaben automatisieren können. Deine Komponente wird dann selbst mit Kubernetes interagieren. Wir werden Möglichkeiten kennenlernen, wie die Komponente ihren Zustand in der Cloud erhalten kann, und verstehen, was das für Auswirkungen auf die Architektur von Software hat, bevor sie sich wirklich cloud native nennen darf.

Kurze Einführung in Docker (Wiederholung)

  • Überblick über die Docker Architektur (Engine, Client, Images, Container)
  • Konstruktion eines Beispiel-Containers
  • Ausrollen eines Images auf mehreren Rechnern mit dem Hub ("Docker Registry")
  • Was bringt Container Orchestration?

Kubernetes Installation und Konfiguration

  • Aufsetzen eines Test-Clusters mit Minikube
  • Bestandteile einer Installation
  • Planung und Dimensionierung eines produktiven Clusters

Kubernetes Konzepte

  • Bestandteile von Kubernetes
  • Gruppierung von Software-Komponenten in Pods
  • Skalierung und Failover mit Replication Controllern
  • Differenzierung der Maschinen mit Labels
  • Load Balancing mit Services
  • Behandlung des eingehenden Cluster-Datenverkehrs, Pods auf den Eingangsmaschinen, Daemon Sets
  • Aufgabenverteilung mit Jobs
  • Das Container Network Interface am Beispiel von Apache Project Calico: Network as Code

Kubernetes API

  • Zugriff auf Kubernetes Komponenten über die API
  • Verwendung von kubectl auf der Kommandozeile

Architektur Muster in der Cloud

  • Was ist Cloud Native Software?
  • Refactoring einer Beispielanwendung in eine Cloud-Anwendung
  • Wie kann man Service Discovery in der Cloud realisieren? (Sky-DNS)
  • Was gehört in ein Docker Image? (ConfigMaps, Secrets)
  • Wie mache ich ein Update meiner Cloud-basierten Software? (Deployments)
  • Wie bekomme ich Netzwerk Traffic in den Cluster? (Ingress)

Speichern im Cluster

  • Wie halte ich Zustand im Container?
  • Volumes: Lokale Verzeichnisse, Netzwerkbasierte Dateisysteme (NFS, CephFS)
  • Deklarative Zustandsbeschreibung
  • Migration existierender Software in den Cluster
  • Verwendung von Replication-basierter Software im Cluster (z.B. PostgreSQL oder ActiveMQ/replicatedLevelDB)
  • Wie realisiere ich Backup in der Cloud?

Betrieb eines Kubernetes Clusters

  • Infrastructure as Code: Beschreibung des Clusters unter Git Verwaltung
  • Monitoring des Clusterbetriebs mit Heapster und dem Kubernetes Dashboard
  • Continous Integration: Automatisierung des Cluster-Setup Prozesses
  • Wie entdecke ich Performance Bottlenecks? (Monitoring mit Prometheus und Grafana)
  • Logging - Oder, was hat mein Container zu sagen?

Entwicklung von Cloud Anwendungen

  • Migration einer Anwendung auf Kubernetes
  • Erstellen von Deployments (mit Probes)
  • Was muss ich bei der Entwicklung einer Cloud Ready Software beachten?
  • Microservices im k8s Cluster
  • Helm als Kubernetes-Paketmanager?
  • Continous Integration: Bauen und Deployen von Anwendungen (u.a. Jenkins, ArgoCD)
  • Ausblick: CI/CD Pipelines mit Tekton, Servicemesh (Istio), knative

Security

  • Container Security - Wie sichere ich meinen Container und mein System vor schädlichen Anwendungen?
  • Image Security - Welche Bedrohungen verbergen sich in (Docker) Images?
  • cgroups und namespaces - Wie weit kann ich meine Container beschränken?
  • AppArmor - Profilgesteuerte Isolierung meiner Container
  • Automatischer Security Check von Images
  • Zugriffsberechtigungen, Service Accounts, Auditing, Risiken
  • Wie werden Geheimnisse verteilt? (Secrets)
  • In welcher Konfiguration darf mein Pod laufen? (PodSecurityPolicy, PodSecurity)

Ausblick

  • Vendor Lock-In? Nein, danke.
  • Vergleich zwischen Docker und Rocket
  • Kommende Features in Kubernetes
  • Aktuelle Arbeit im Open Source Bereich
  • Kubernetes basierte Plattformen: OpenShift, CaaS

Zielgruppe

Administratoren, Entwickler, Architekten und DevOps Spezialisten

Vorkenntnisse

  • Grundlegende IT Kenntnisse
  • Grundverständnis von Docker und Linux wäre hilfreich
  • Ziele

    • Du verstehst Container Orchestration.
    • Du bist in der Lage ein Kubernetes Cluster aufzusetzen und zu betreiben.
    • Du weißt, wordurch sich "cloud native" Anwendungen auszeichnen und wie man solche entwirft und betreibt.
    • Du bist in der Lage Docker und Kubernetes in einer CI/CD Pipeline zu verwenden.

    Dauer

    2 Tag

    Kursunterlage

  • Handouts aller in der Schulung präsentierten Folien.
  • Skript mit praxisbezogenen Übungen.
  • Unsere Trainer auf YouTube