Seite wählen

NETWAYS Blog

stackconf 2023 | It´s time to rebuild DevOps

Let’s dive into the memories of stackconf 2023 together, which provided us with numerous insights and first-class expert knowledge. As part of this blog series, we would like to introduce you to the featured speakers and their presentations. Today – Paul Stack and his talk „It’s time to rebuild DevOps“ on how to inspire new tool development.

 

A short Summary

Paul’s approach emphasizes the need to redefine DevOps tools to meet the original goals of the movement by breaking down existing silos and improving communication. The featured systems initiative presents a modern, simulation-based workflow that enables real-time, multiplayer and multimodal collaboration to increase productivity in infrastructure management.

 

 

 

Watch Paul’s Talk

Take a deep dive into Paul’s reflection from his long journey through DevOps-lessons. Explore his presentation video and his slides.

YouTube player

Stay tuned

Save the date for stackconf 2024, the first speakers are already online. Mark June 18 and 19 in your calendar. Secure your ticket and stay up to date by signing up for our newsletter!

Sebastian Zwing
Sebastian Zwing
Marketing Specialist

Sebastian verstärkt seit November 2023 unser Marketingteam. Als Marketing Specialist wird er die Kommunikation der NETWAYS GmbH weiter mit ausbauen und neue Ideen einbringen. Seine Freizeit verbringt Sebastian gerne auf Reisen, als Hobbykoch in der Küche oder am Grill, an der frischen Luft, an und auf dem Wasser, oder auf dem Zweirad.

Starte durch mit unseren Cloud Native Schulungen: GitLab, Kubernetes, Argo CD

In der dynamischen Welt der Informationstechnologie sind Cloud Native Technologien unverzichtbar geworden. Hier präsentieren wir Dir eine Auswahl unserer nächsten Cloud Native Trainings, die Dich von den Grundlagen bis zur Expertise in verschiedenen Schlüsseltechnologien führen.

GitLab Fundamentals

GitLab ist eine Anwendung zur Versionskontrolle für Softwareprojekte auf Basis von Git und das Tool für alle Phasen des DevOps-Lifecycles. GitLab ermöglicht es Teams, in einer einzigen Anwendung zusammenzuarbeiten, anstatt mehrere Arbeitsschritte über verschiedene Tools hinweg verwalten zu müssen. Dein Vorteil: weniger Kontext-Switches und größere Produktivität. In unserem GitLab Fundamentals Training erhältst Du einen tiefen Einblick in die Basics von Git, dessen Konfiguration sowie Shell- und GUI-Clients. Zudem bekommst Du GitLab-Grundwissen rund um Repositories, Issues, Releases und übst die Konfliktlösung in unterschiedlichen Git-Historien und Branches. GitLab Fundamentals wird Dich Schritt für Schritt mit Theorie und praktischen Übungen an GitLab heranführen.

Mit dem Code GITLAB_FEB_10 erhältst Du 10% Rabatt auf die Schulung am 14. + 15. Mai. Melde Dich gleich an!

Kubernetes Fundamentals

Kubernetes bietet Dir eine effiziente, skalierbare und flexible Lösung zur Bereitstellung und Verwaltung von Containeranwendungen in einer Container-Orchestrierungsumgebung. In unserer Einführung in die Welt von Containern und Kubernetes erfährst Du alles, was Du als Anfänger wissen musst. Als Hands-On-Einstieg ermöglicht unsere Kubernetes Fundamentals Schulung erste Erfahrungen in der Nutzung von Kubernetes aus der Entwickler- und Operations-Perspektive. Du lernst, wie Container funktionieren, wie man diese in Kubernetes startet und betreibt, der Zugriff auf die Anwendungen von außen, sowie die Arbeit mit persistenten Daten. Dies veranschaulichen wir Dir anhand von vielen praktischen Übungen, sodass Du direkt praxisnahe Erfahrungen machen kannst.

Finde dein Training zum nächstmöglichen Termin.

Argo CD mit Kubernetes

Argo CD ist ein Open-Source-Tool für Continuous Delivery, das speziell für Kubernetes entwickelt wurde. Argo CD hält die Möglichkeit bereit, Deine Anwendungen in Kubernetes-Clustern bereitzustellen, zu verwalten und zu aktualisieren. Einen echten Mehrwert bietet das Tool Entwicklern durch zahlreiche Funktionen zur Automatisierung, Überwachung und Alarmierung. So unterstützt es Dich beispielsweise bei Rollbacks auf vorherige Versionen von Anwendungen und ermöglicht eine schnelle Wiederherstellung bei unerwarteten Problemen. In unserer Argo CD Schulung geht es nach einer kurzen Einführung in das Thema GitOps auch gleich los mit Argo CD. Wir zeigen Dir, was Argo CD ist, wie Du es einsetzen kannst und wie Du Deine ersten Deployments starten kannst.

Finde dein Training zum nächstmöglichen Termin.

Starte Deine Reise zum IT-Experten

Mit diesen Trainings bieten wir Dir die Möglichkeit, Dich in den zukunftsweisenden Cloud Native Technologien zu vertiefen. Ob Kubernetes, GitLab oder ArgoCD – jede Schulung ebnet Dir den Weg, um Dein IT-Wissen auf ein neues Level zu heben. Nutze die Gelegenheit, um Deine Fähigkeiten zu erweitern und ein Experte in den Schlüsseltechnologien der Zukunft zu werden. Wir begleiten Dich Schritt für Schritt auf diesem aufregenden Weg! Buche Dein Training über unserem Schulungskalender oder nimm Kontakt zu unseren Experten auf.

Sebastian Zwing
Sebastian Zwing
Marketing Specialist

Sebastian verstärkt seit November 2023 unser Marketingteam. Als Marketing Specialist wird er die Kommunikation der NETWAYS GmbH weiter mit ausbauen und neue Ideen einbringen. Seine Freizeit verbringt Sebastian gerne auf Reisen, als Hobbykoch in der Küche oder am Grill, an der frischen Luft, an und auf dem Wasser, oder auf dem Zweirad.

Kubernetes 101: Aufbau eines K8s-Cluster und die Möglichkeiten der API

In meinem ersten Blogpost ging es zuerst einmal darum zu klären, was Kubernetes denn eigentlich ist. Jetzt, wo wir ergründet haben, welche Ansätze und Ideen Kubernetes verfolgt und warum diese sinnvoll sein können, gehen wir einen Schritt weiter, und schauen uns an, wie diese umgesetzt werden. Dafür wollen wir zwei Aspekte betrachten: Zum Einen der Aufbau eines Kubernetes-Clusters selbst, inklusive aller Teilbausteine, die für den reibungslosen Betrieb benötigt werden. Zum Anderen die im letzten Blogpost bereits mehrfach erwähnte API, wir als Schnittstelle nutzen und die uns eine ganze Bandbreite an API-Ressourcen anbietet, mit denen wir auf Kubernetes arbeiten können. Let’s get going!

Aufbau eines Kubernetes-Clusters

Beginnen wir mit einem sog. „Ten-Thousand Foot View„, um uns den groben Aufbau eines Clusters auf Infrastrukturebene vor Augen zu führen:

Überblick eines Clusteraufbaus, bestehend aus Dataplane, Workernodes und Loadbalancer

Wir sehen hier ein Cluster bestehend aus 8 Nodes – drei sog. Leader-Nodes und fünf Follower-Nodes. Die Leader-Nodes bilden zusammen die sog. Controlplane des Clusters und stellen Dienste wie clusterinternes DNS und die Kubernetes-API bereit. Um die API und damit letzten Endes das Cluster hochverfügbar zu machen, wird der Controlplane ein Loadbalancer vorgelagert. In Cloud-Umgebungen ist dies oft per Default die bereitgestellte Lösung des jeweiligen Providers, in eigenen Rechenzentren oder on-premise kann hierfür auf Lösungen wie HAProxy oder MetalLB zurückgegriffen werden. Best Practices diktieren, dass auf den Leader-Nodes möglichst keine Anwendungen deployed werden sollten, die nicht für den Betrieb des Clusters selbst benötigt werden.

Hierfür sind die fünf Follower-Nodes gedacht, die mit der Kubernetes-API ebenfalls via Loadbalancer interagieren und die für den jeweiligen Node gescheduleten Anwendungen ausführen. Auf diesen Nodes können beliebige Anwendungen entsprechend der jeweils verfügbaren Ressourcen deployed werden. Die API in der Controlplane kümmert sich hierbei um ein passendes Scheduling, damit Ressourcen auf den Follower-Nodes nicht erschöpft werden und angegebene Voraussetzungen wie bspw. spezielle benötigte Hardware (GPU, SSD, etc.) auf dem jeweiligen Node erfüllt werden.
Die letzte im Schaubild dargestellte Komponente stellt eine lokale Terminalsession auf Seiten eines Endnutzers dar. Dieser kommuniziert via kubectl mit der Softwareschnittstelle, dem de-facto Standardtool für Interaktion mit der API von außerhalb des Clusters.

Doch welche Komponenten laufen denn nun auf den jeweiligen Node-Klassen? Gehen wir doch einmal etwas weiter ins Detail:

Wir sehen hier exemplarisch jeweils einen Leader und Follower-Node als VMs in der Detailansicht, mit all den Anwendungen, die auf den jeweiligen Node-Klassen typischerweise installiert sind. Gehen wir die verschiedenen Anwendungen doch einmal durch:

  • etcd – Key/Value-Store für den Zustand und die Historie der Kubernetes-API; Wird normalerweise auf den Leader-Nodes installiert, kann allerdings auch auf externe Maschinen ausgelagert werden
  • kube-apiserver – PI-Server des Kubernetes-Clusters; Wird für Hochverfügbarkeit auf allen Leader-Nodes installiert
  • kube-scheduler – Kümmert sich um das Scheduling der in das Cluster deployten Anwendungen; Wird auf Leader-Nodes installiert
  • kube-controller-manager – Ein Bündel an sog. Kubernetes-Controllern, das sich um die Verwaltung verschiedener Kubernetes-Ressourcen kümmert; Wird auf Leader-Nodes installiert
  • kubeletKommuniziert mit der API und der lokalen Container-Runtime, um Container auf den Nodes auszuführen; Wird auf allen Nodes installiert
  • kube-proxyRoutet Netzwerk-Traffic zu Containern, sobald dieser auf den jeweiligen Nodes ankommt; Wird auf allen Nodes installiert
  • Container Runtime – Im Beispiel containerd; andere Implementierungen sind möglich, bspw. CRI-o; Wird auf allen Nodes installiert

Zu erwähnen ist, dass nicht alle Cluster so aussehen müssen. Beispielsweise ließe sich auch eine Controlplane umsetzen, auf der keinerlei Container ausgeführt werden – in diesem Fall könnte man auf die Installation von kubelet, kube-proxy und containerd auf Leader-Nodes verzichten (für eine Referenzinstallation s. Kubernetes the Hard Way auf GitHub). Auf Clustern in der Cloud wird man außerdem fast immer einen sog. cloud-controller-manager auf Leader-Nodes finden, der gewisse Funktionalitäten im Cloud-Bereich integriert, bspw. automatische Provisionierung benötigter Loadbalancer in der hostenden Cloud.

Auch können sich die genauen Ausprägungen einer Kubernetes-Installation je nach Kubernetes-Distribution unterscheiden – momentan listet die CNCF 59 zertifizierte Distributionen. K3s bspw. bündelt die verschiedenen Komponenten in eine Binary, was den Betrieb im Alltag etwas erleichtern kann und den Ressourcen-Fußabdruck des Clusters senkt.

Die Kubernetes‘ API – endlose Weiten

Haben wir unser Cluster nun wie oben skizziert (oder ganz anders) installiert, möchten wir natürlich mit ihm interagieren – hierfür gibt es verschiedene Möglichkeiten, angefangen bei cURL über das offizielle Kubernetes Dashboard bis zu Wrappern für das lokale Terminal. Letzteres ist der gängigste Weg – fast alle Tutorials und technische Dokumentationen zu Kubernetes und darauf zu installierende Anwendungen erwähnen kubectl, was sich auf jedem gängigen Betriebssystem paketiert installieren lassen sollte. Haben wir kubectl lokal installiert und eingerichtet (wir benötigen eine sog. kubeconfig, die Verbindungsinformationen für unser(e) Cluster enthält), können wir uns zum ersten Mal die API anschauen:

beispielhafter Aufruf von kubectl api-resources mit wordcount nach Zeilen: 70

Je nach Cluster (im Beispiel ein Rancher Desktop Cluster) scheint uns Kubernetes zwischen 60 und 70 verschiedene API-Objekte anzubieten! Wo also anfangen und wo aufhören? Oder gleich alle 70 behandeln? Fangen wir doch einfach mit der kleinsten Einheit an Workload an, die K8s für uns bereit hält – dem Pod. Ein Pod kapselt einen oder mehrere Container in einem Bündel, das sich Netzwerk- und Speicherressourcen teilt.

Daraus folgt, dass alle Container eines Pods immer auf demselben Node gescheduled werden. Ein Pod alleine profitiert allerdings noch nicht von Kubernetes‘ Orchestrierungsmöglichkeiten – ist bspw. der hostende Node nicht erreichbar, können wir auch die in unserem Pod laufenden Anwendungen nicht mehr erreichen.

Wir benötigen also eine weitere Abstraktionsebene, die es uns erlaubt, mehrere identische Pods auf verschiedene Nodes zu schedulen: das sog. Deployment. Ein Deployment definiert ein Pod-Template, sowie eine Anzahl an gewünschten Repliken und weitere Konfiguration, die von Kubernetes zur Orchestrierung des Deployments genutzt wird. Unter der Haube wird dann vom API-Server ein ReplicaSet erzeugt, das die gerenderte Version des Pod-Templates enthält.

Auf diese Weise ermöglicht eine Deployment-Ressource uns nicht nur die Ausführung mehrerer Repliken eines einzelnen Pods, sondern auch eine Versionierung verschiedener ReplicaSets – wieviele genau von der API gespeichert werden, hängt von den Einstellungen des API-Servers zusammen. Hier nochmal ein Schaubild zu den Zusammenhängen:

Ein Überblick der Zusammenhänge zwischen Deployments, ReplicaSets und Pods in Kubernetes

Zu sehen ist ein Deployment mit drei dazugehörigen ReplicaSets, die sich in der Anzahl der definierten Replicas unterscheiden (Kubernetes erstellt bei jeglicher Änderung eines Deployments ein neues ReplicaSet, nicht nur bei Änderung der Replicas). Das momentan aktive ReplicaSet wiederum verwaltet der Konfiguration entsprechend fünf Pods.

Möchte man seine deployten Anwendungen nun untereinander oder für Endnutzer außerhalb des Clusters verfügbar machen, kommen Services ins Spiel. Ein Service ist eine API-Ressource, die einen gewissen Pool an Pods als Endpoints definiert und für diese als Round-Robin Loadbalancer fungiert. Auf diese Weise benötigt man nur eine IP, um zuverlässig einen funktionalen Pod eines Deployments zu erreichen. Kubernetes kümmert sich hierbei automatisch darum, Traffic nur zu funktionalen Pods weiterzuleiten.
Es gibt drei Arten von Services:

  • ClusterIP – der Service erhält eine innerhalb des Clusters erreichbare IP-Adresse, ist von außerhalb des Clusters aber nicht ohne Weiteres zu erreichen
  • NodePort – der Service wird auf jedem Node auf einem zufälligen, hohen Port (ca. 30.000+) verfügbar gemacht
  • Loadbalancer – eine Erweiterung des NodePort-Typs, wobei den Ports ein Loadbalancer vorgelagert wird; funktioniert am reibungslosesten in Public Clouds

Zusätzlich gibt es die Möglichkeit, HTTP-Traffic anstatt mittels Loadbalancer auf L4 mit einem sog. Ingress auf L7 zu routen – die Konfiguration unterscheidet sich hierbei abhängig vom genutzten IngressController.

Weitere nennenswerte, grundlegende API-Ressourcen innerhalb von Clustern wären bspw. Namespaces zur Trennung von anwendungslogisch zusammenhängenden Deployments etc. sowie zur Umsetzung von role-based access control (RBAC), Secrets zur Bereitstellung vertraulicher Daten wie bspw. Passwörtern, Zertifikaten, oder Token, und ConfigMaps für häufig genutzte Konfigurationssnippets. Wer mitgezählt hat wird merken, dass wir gerade erst bei 7 von den oben angezeigten 70 Ressourcentypen angekommen sind – und das ist noch lange nicht das Ende der Fahnenstange, da eine der Stärken der Kubernetes-API schließlich ihre Erweiterung durch sog. CustomResourceDefinitions (CRDs) ist. Für einen ersten Einblick soll der momentane Stand trotzdem fürs Erste genügen.

kubectl – das Schweizer Taschenmesser für Kubernetes

Bereits im letzten Absatz eingangs erwähnt, ist jetzt der Moment für kubectl gekommen, das offizielle Kommandozeilentool für den täglichen Umgang mit Kubernetes und seiner API. Ich könnte an dieser Stelle mehrere 1000 Wörter über den Gebrauch schreiben und trotzdem noch sehr viel unerwähnt lassen, und genau aus diesem Grund folgt nun gemäß dem Motto „Ein Bild sagt mehr als tausend Worte“ lediglich eine Auflistung einiger gängiger und oft genutzter kubectl Kommandos, um einen ersten Eindruck von der Nutzung des Tools zu bekommen.

Screenshot eines Terminals mit mehreren Ausgaben von kubectl

Hier zu sehen sind einige der häufigsten Kommandos, zu denen neben get und create wohl auch noch apply, logs und describe gehören dürften. Neben dem expliziten (imperativen) Erstellen von API-Ressourcen via CLI können mit kubectl auch bestehende Kubernetes-Manifeste (in YAML oder JSON) in das Cluster „gepusht“ werden, was einem deklarativen Ansatz entspricht und in der Praxis der gängigere Weg ist.

Für heute war das aber genug trockene Theorie rund um Architektur, API-Aufbau und Clusterkomponenten – im nächsten Teil der Serie werden wir uns genauer anschauen, wie wir uns denn nun basierend auf der in diesem Artikel erläuterten Architektur unser eigenes Cluster installieren können, entweder auf lokaler Infrastruktur, in der Cloud (z.B. Managed Kubernetes bei NMS), oder auf deinem persönlichen Rechner! Abonniere also gerne auch den RSS-Feed unseres Blogs und sei bereit für den nächsten Artikel der Kubernetes 101 Reihe!

Daniel Bodky
Daniel Bodky
Platform Advocate

Daniel kam nach Abschluss seines Studiums im Oktober 2021 zu NETWAYS und beriet zwei Jahre lang Kunden zu den Themen Icinga2 und Kubernetes, bevor es ihn weiter zu Managed Services zog. Seitdem redet und schreibt er viel über cloud-native Technologien und ihre spannenden Anwendungsfälle und gibt sein Bestes, um Neues und Interessantes rund um Kubernetes zu vermitteln. Nebenher schreibt er in seiner Freizeit kleinere Tools für verschiedenste Einsatzgebiete, nimmt öfters mal ein Buch in die Hand oder widmet sich seinem viel zu großen Berg Lego. In der wärmeren Jahreszeit findet man ihn außerdem oft auf dem Fahrrad oder beim Wandern.

Cloud Services and NWS-ID – It’s a match!

We’re starting the new year with a new integration for you! As announced last year, the integration of further products with NWS-ID will continue in 2023! From now on the NWS Cloud Services are integrated with NWS-ID.

What are the advantages of integrating our Cloud Services with NWS-ID?

Combining these two services makes your daily work easier, because now you can:

  1. use a single login for both interfaces (Customer Interface and Cloud Interface)
  2. effortless switch between OpenStack projects, in the Customer Interface, in the Cloud Interface (Horizon) and on the OpenStack CLI
  3. use two-factor authentication for your Cloud Services
  4. authorise your colleagues to access your OpenStack projects in the NWS-ID group management

How can you use the Cloud Interface with NWS-ID?

Select NWS-ID at cloud.netways.de, log in and you’re done – simple as that! If you’re not an admin in your organization, they must authorize your NWS-ID. This happens as usual in the user group management in the customer interface.

How do I use the OpenStack-CLI with NWS ID?

As usual, you need an OpenStack Environment File. You can find a version adapted for NWS-ID under Get Started in your OpenStack project in the Customer Interface or in our NWS Docs.
If you’re a member of several OpenStack projects, you can easily switch between them. Simply source the OpenStack Environment File again to get a selection.
Don’t have the official OpenStack CLI client yet? No problem – you can get help in the NWS Docs!

What happens to the existing login?

The existing login can still be used, e.g. in your scripts or tools like Terraform. The password can be changed as usual on cloud.netways.de or via the OpenStack CLI.

What’s coming next?

For a more effortless access, we will gradually integrate our portfolio with NWS-ID. We are already playing with kubelogin and we are looking for a simple Vault SSH integration to extend the reach of your NWS-ID to your OpenStack Cloud Servers.
The same procedure as last year still applies. Please give us a little time to implement the integrations and we will of course come back to you as soon as possible! If you have any questions along the way, please feel free to contact us – we’re always there to help answer any open questions.

Achim Ledermüller
Achim Ledermüller
Senior Manager Cloud

Der Exil Regensburger kam 2012 zu NETWAYS, nachdem er dort sein Wirtschaftsinformatik Studium beendet hatte. In der Managed Services Abteilung ist er für den Betrieb und die Weiterentwicklung unserer Cloud-Plattform verantwortlich.

stackconf 2022 | Cloud Provisioning with Ansible? Is that possible?

Ansible

In his talk „Cloud Provisioning with Ansible? Is that possible?“, Nils Magnus went over ways to make cloud provisioning possible with Ansible, how you would need to architecturally build it, and some important terms.In the first part of his talk, Nils went over the difference between provisioning and configuring and why he thinks they are the same thing.
He then went into the benefits such as disaster recovery, updating and code hygiene or knowledge sharing that come with automating the infrastructure.

 

 

 

Forms of provisioning

He described the various forms of provisioning, whether you use it as a Bash script, as a domain-specific language or manually. Depending on the type of application, the code needs to be specific and precise. Infrastructure as code should be declarative, convergent to the target, and idempotent so that each iteration produces the same result. It is also important that it can capture and manage the state of the infrastructure. This is not a trivial point to overlook.
Typical representatives of infrastructure as code are programs like Terraform, Heat or Pulumi. The big question now is whether Ansible also belongs to this list and can perform the same tasks.

 

 

How functions change

Furthermore Nils went into some more technical terms of Ansible and Cloud like targets, tasks, SDK and Bastion and briefly explained how Ansible works.
He explained how the functions change when Ansible is used as a provisioning tool. Initially, there will not be the systems that you want to work on, you have to create them first through the cloud interface. For this, requests are sent to the SDK via the localhost, which prepares it for the interface.
Once the infrastructure is built via the cloud interface, you can connect to it.

 

Many ways to connect to Ansible

Openstack has many ways to connect to Ansible here and offers tools to simplify working with Ansible and IaC. Nils also walked us through a sample installation. He talked about some best practices, such as dealing with credentials in the configuration files,
Nils‘ talk at stackconf also ended with the demonstration of an installation.

The recording of Nils‘ talk and all other conference talks can be found in our Archives! Check it out!

 

Stay tuned!

We enjoyed connecting with different people from the community and had pleasure listening in the different conversations.

stackconf 2023 will take place from September 13 – 14 in Berlin. Stay tuned for the event and subscribe to our newsletter. You’re also invited to follow our Twitter, Facebook and LinkedIn account to stay up to date with our event’s preparations.

Michael Kübler
Michael Kübler
Systems Engineer

Michael war jahrelang in der Gastronomie tätig, bevor er 2022 seine Umschulung als Fachinformatiker bei Netways abschloss. Seitdem unterstützt er unsere Kunden bei ihren Projekten als MyEngineer und sucht auch nebenbei kleinere Projekte, die er realisieren kann. Privat geht er gerne Campen und fährt Rad. Er genießt auch einen entspannten Abend daheim mit einem Buch und Whisky.