Hinweis: Dieser Blogbeitrag stammt aus der Zeit vor dem Zusammenschluss und wurde von ARS realisiert – heute Teil von ATVANTAGE. Unsere Erfahrung bleibt – nur unser Name hat sich geändert. Hier finden Sie weitere Informationen rund um die Fusion.

Lesezeit: 4 Minuten

 

Infrastructure as Code (IaC)


Moderne Softwaresysteme zeichnen sich durch ihre Fähigkeit zur Skalierung und ihre Robustheit aus und werden zunehmend für Cloud- und Multi-Cloud-Infrastrukturen entwickelt. Diese Art von Software basiert auf einer Vielzahl von unterschiedlichen Infrastrukturressourcen, deren effizientes Management eine immer größere Herausforderung darstellt.

Infrastructure as Code hat eine Technologie etabliert, mit der die Konfiguration und Verwaltung von Cloud-Infrastrukturen auf dieselbe Weise wie der Anwendungscode verwaltet werden können. Das bedeutet, dass die Konfiguration wie Quellcode in einem Quellcode-Verwaltungssystem (normalerweise in einem Git-Repository) gespeichert wird und als Quelle für weitere Automatisierungsprozesse auf Basis von CI/CD-Pipelines oder GitOps-Bereitstellungen dient. Diese innovative Methode ermöglicht eine effiziente und skalierbare Verwaltung der Infrastruktur und sorgt für eine nahtlose Integration in den Entwicklungsprozess.

Alle Cloud-Anbieter stellen in der ein oder anderen Form Tools für IaC bereit - hier ein paar populäre Beispiele:

  • AWS CloudFormation
  • Azure Resource Manager
  • GCP Deployment Manager

Aufgrund der komplizierten Syntax und ihrer begrenzten Leistungsfähigkeit werden sie jedoch fast nicht verwendet. Das ist einer der Gründe, warum sich Terraform so schnell als Standard für diesen Einsatzzweck entwickelt hat.

Terraform adressiert zwei wesentliche Schwächen nativer Cloud-Tools:

  • Komplexität - Die Verwendung der HCL-Sprache in Terraform ist sehr einfach und intuitiv
  • Portabilität – Terraform bietet eine Abstraktionsebene, die den Umgang mit Multi-Cloud Szenarien erheblich vereinfacht

Als Terraform eingeführt wurde, gab es kaum Alternativen und im Laufe der Zeit haben sich darüber hinaus auch unsere Anforderungen geändert.

Zwei neue IaC-Tools sind angetreten, um die neuen Herausforderungen anzunehmen und Schwächen von Terraform zu beheben:

  • Pulumi
  • Crossplane

Pulumi ist eine Open Source Plattform, die gängige Programmiersprachen (TypeScript, Go, .NET, Python, and Java) und Markup Sprachen (YAML, CUE) verwendet, um die Einschränkungen der HCL-Syntax in Terraform zu umgehen. Allerdings geht damit einher, dass der Code komplexer wird und nicht so leicht lesbar und verständlich ist.

Auch Crossplane ist Open Source, jedoch unterscheidet es sich dadurch, dass es ein Projekt der CNCF ist und auf der Kubernetes Control Plane basiert.

Bereitstellung von Infrastruktur mithilfe der Kubernetes-API

Soll die Cloud-Infrastruktur mit einem einfachen Yaml-Dateimanifest bereitgestellt werden, wie in Kubernetes?

Nachstehend ein Beispiel für die EKS-Cluster-Bereitstellung in AWS mithilfe des Claim-Konstrukts in Crossplane:

 

Angenommen, man bevorzugt Azure AKS statt EKS. Was muss geändert werden, um diese Plattform zu unterstützen?

Es ist in der Tat sehr einfach: Durch die Auswahl eines anderen Clusternamens können wir die EKS-Zusammensetzung durch AKS ersetzen.

 

Auf die gleiche einfache Art und Weise kann man fast jede Ressource in der Multi-Cloud mithilfe einer ähnlichen, sehr einfachen Yaml-Datei bereitstellen.

Wie funktioniert Crossplane?

Schauen wir uns das CNCF-Inkubationsprojekt Crossplane  genauer an.

Crossplane nutzt die Leistung der Kubernetes-API, um eine umfassende Infrastruktur in der Cloud bereitzustellen. Das Tool automatisiert die Synchronisierung mehrerer Umgebungen und ermöglicht die Überwachung des aktuellen Zustands der Infrastruktur. Darüber hinaus erkennt und behebt es automatisch Abweichungen in der Konfiguration.

Crossplane basiert auf vier wesentlichen Konzepten, die es zu einer leistungsstarken Lösung machen:

  1. Packages - Crossplane ermöglicht die Erweiterung seiner Funktionalität durch den Bau und die Integration neuer Packages.
  2. Providers - Es ermöglicht die Bereitstellung von Infrastrukturressourcen von externen Anbietern.
  3. Managed Resources - Crossplane verwendet Kubernetes Custom Resources, um die Eigenschaften der Infrastruktur darzustellen und zu verwalten.
  4. Composite Resources - Es unterstützt die Erstellung individueller Ressourcen basierend auf den Custom Resource Definitions (CRDs) von Kubernetes.

Diese Konzepte tragen dazu bei, dass Crossplane eine flexible und umfassende Lösung für die Bereitstellung und Verwaltung von Cloud-Infrastrukturen ist. Durch die Integration neuer Packages können zusätzliche Funktionen hinzugefügt werden, während die Nutzung der Kubernetes-API eine nahtlose Integration mit der bestehenden Infrastruktur ermöglicht. Mit Crossplane können Unternehmen die Komplexität der Infrastrukturverwaltung reduzieren und gleichzeitig die Flexibilität und Skalierbarkeit verbessern.

Um auf die Kubernetes-API zugreifen zu können, benötigen wir einen Kubernetes-Cluster. Dies kann entweder ein verwalteter Kubernetes-Cluster in der Cloud oder eine lokale Installation von Kubernetes mit einem Tool wie Rancher oder Orbstack sein. Wichtig ist eine Control Plane, die die Funktionalität der Kubernetes-API unterstützt.

Eine übersichtliche Aufzählung der notwendigen Schritte sieht wie folgt aus:

  1. Crossplane im Kubernetes-Cluster installieren (z. B. mit Helm-Chart)
  2. Installation des Providers für die entsprechende Cloud-Plattform sowie die Konfiguration der Zugangsdaten für diese Plattform
  3. Erstellen einer Custom Resource Definition (CRD), um eine neue Kubernetes-Ressource für die Cloud-Infrastruktur zu definieren
  4. Erstellen einer Komposition für den erforderlichen Cloud-Anbieter

Details sind in folgendem GitHub Projekt nachzulesen.

Sobald all dies vorhanden ist, ist es möglich, Cloud-Ressourcen mithilfe einer einfachen Yaml-Datei zu erstellen. Durch eine solche Struktur können wir die Komplexität der Cloud-Infrastruktur vollständig verbergen und nur die minimalen Informationen zur Verfügung stellen, die für die Bereitstellung der benötigten Ressourcen erforderlich sind. Dadurch beschränken sich die Ops-Tätigkeiten auf eine möglichst einfache Definition der Infrastruktur, die vom gesamten Entwicklerteam leicht verstanden und übernommen werden kann.
 

Die Rolle von Operations (Betrieb)

Tauchen wir etwas tiefer in die Ops-Rolle ein.

Normalerweise ist es die Aufgabe des Betriebs, die Infrastruktur zu definieren, da umfangreiche spezifische Kenntnisse über die verschiedenen Cloud-Angebote erforderlich sind. Im Rahmen der Ops-Arbeit erstellen die Software-Ingenieure dann die Crossplane-Artefakte, mit denen sie die Eigenschaften der Ressourcen beschreiben, die für die Bereitstellung der Software auf der definierten Cloud-Infrastruktur erforderlich sind.

Im Falle der ManageKubernetes CRD handelt es sich dabei um folgende Eigenschaften:

  • Cluster-ID
  • Kubernetes-Version
  • Bereitstellungsregion
  • Knotengröße
  • Anzahl der Knoten

Die CRD Definition ist eine Standard-Kubernetes Erweiterung, welche die Erweiterung von Kubernetes-APIs ermöglicht.

Eine besondere Herausforderung für die Ops-Rolle sind jedoch die Crossplane Compositions. Diese Templates ermöglichen es, mehrere verwaltete Ressourcen in einem einzigen Objekt zu bündeln. Dadurch entstehen größere und komplexere, aber auch wiederverwendbare Ressourcen. Diese stellen eine komfortable Lösung dar, um mit den verschiedenen Cloud-Anbietern in einem Multi-Cloud-Szenario umzugehen und gleichzeitig die Komplexität zu reduzieren.

 
Fazit

Es ist erstrebenswert, die Infrastruktur in der gleichen Weise zu verwalten wie die Softwareentwicklung, indem man den Infrastrukturcode parallel zum Anwendungscode verwaltet. Obwohl es ein Standardtool namens Terraform gibt, das von den meisten Unternehmen verwendet wird, weist es einige Schwächen auf und stößt bei speziellen Anforderungen in Multi-Cloud- und Kubernetes-Umgebungen an seine Grenzen. In der heutigen Zeit benötigen wir vermehrt Tools, die ähnlich wie die Kubernetes-API funktionieren. Wir möchten gerne definieren, was wir benötigen, und die Umsetzung der Infrastruktur Kubernetes überlassen. Das Tool sollte kontinuierlich den gewünschten Zustand der eingesetzten Infrastruktur überwachen und uns bei der Erkennung von Änderungen und Reparaturen unterstützen. Die gute Nachricht ist, dass es mit Crossplane ein solches Tool gibt, das von der CNCF entwickelt wird. Wir hoffen, dass dieser kurze Einblick dazu ermutigt, das Crossplane-Projekt als möglichen Ersatz für Terraform genauer in Betracht zu ziehen.

Blogautor

Andrzej Kozlowski
Senior Cloud Engineer ARS Computer und Consulting GmbH

Ihr Erfolg ist unser Ziel

Stehen Sie vor komplexen IT-Projekten? Mit unserer Expertise bieten wir Ihnen maßgeschneiderte Lösungen. Erfahren Sie mehr.

Werde Teil unseres Teams

Wir suchen ständig nach neuen Talenten. Für dich haben wir genau die richtige Stelle. Schau dir unsere offenen Positionen an.

Noch Fragen? Wir helfen Ihnen gerne!

Blog 02.02.24

So kommt Ordnung in den Infrastructure as Code-Werkzeugkaste

Ordnung im IaC-Dschungel: Welches Tool passt? Dieser Artikel gibt Überblick über die wichtigsten Werkzeuge für Infrastructure as Code.

Blog 26.04.24

Team Topology: Ein Wegweiser für effektive DevOps-Kultur

Erfahren Sie, wie Team Topology und effektive Kommunikationsmodi die DevOps-Kultur fördern und die Softwareentwicklung revolutionieren. Ein Wegweiser für erfolgreiches Teammanagement.

Blog 19.09.24

Die Zukunft datenbankzentrierter IT-Architekturen

Datenbankzentrierte IT-Architekturen prägen viele Unternehmen. Doch ist dieser Ansatz noch zukunftsfähig? Dieser Artikel beleuchtet die Herausforderungen und Alternativen.

Blog 18.07.24

Ticket-Schneiden: Best Practices und Agile Methoden

Erfahren Sie, wie Sie effektive Tickets für die Softwareentwicklung schreiben und schneiden, um Probleme zu vermeiden. Mehr über die Bedeutung von User Stories und deren korrekte Umsetzung.

Blog 07.09.23

Platform as a Service vs. Infrastructure as a Service

Die Cloud-Transformation stellt Sie vor die Frage: Platform as a Service oder Infrastructure as a Service? Beitrag über Vor- und Nachteile von PaaS und IaaS.

Blog 01.08.24

Migration von HOST-Anwendungen zu AWS: Modernisierung

Lernen Sie, wie moderne AWS-Services nahtlos in bestehende Host-Landschaften integriert werden und profitieren Sie von den Vorteilen von Serverless-Technologien.

Referenz

DRV: Digitalisierung und Datenaustausch mit EESSI

ARS begleitet die Deutsche Rentenversicherung bei der digitalen Transformation mit EESSI. Der sichere Datenaustausch von Sozialversicherungsinformationen verbessert Prozesse und Effizienz.

Blog 02.02.23

Computer Aided Cloud Transformation

Was bedeutet Computer aided cloud transformation? Warum ist Enterprise Architecture Management wichtig? Wie gelingt das Asset- und Ressourcenmanagement?

Blog 16.02.23

Keine Angst vor Komplexität

Wie kann man die Komplexität der Organisation u. Technologie, die neue Plattformen, Architekturen und neue Entwicklerkultur mit sich bringen, beherrschen?

Blog 27.10.22

Architekturarbeit im Zeitalter Cloud-nativer Architekturen 1

Die beschleunigte Digitalisierung und ihr Einfluss auf Softwarearchitekturen und IT-Teams beschreibt der Autor. Sind Cloud-native-Strategien sinnvoll?

Blog 19.01.23

Digitalisierung und das richtige Mindset

Digitalisierung erfordert Umdenken weg von Projekten hin zu Produkten. DevOps und offene Fehlerkultur bestimmen moderne IT-Organisationen - auch bei Ihnen?

Blog 05.01.23

Teil 6 - Die Architektenrolle in DevOps-Teams/Organisationen

Erfahren Sie in diesem Blogbeitrag mehr über die Rolle der Architekten in DevOps-Teams und wie sich die Architekturarbeit im cloud-native Umfeld verändert hat.

Blog 10.11.22

Architekturarbeit im Zeitalter Cloud-nativer Architekturen 2

Aufgaben von Softwarearchitekten im Cloud-native-Umfeld, benötigte Skills und ihr Arbeitsalltag zwischen Kundenanforderungen, Zieldefinition und Deadlines.

Blog 08.12.22

Teil 4: Eigenschaften einer Cloud-native Architektur

Beitrag zu Cloud-native Architekturen, ihre Möglichkeiten und Zielsetzungen sowie die Philosophie und Arbeitsweise, die daraus folgt.

Blog 30.03.23

Eine API kommt selten allein - APIs in der freien Wildbahn

API's als Produkt zu verstehen ist ein Merkmal agiler Arbeitsweise. API's sind immer im Kontext des geplanten Services und des Ökosystems zu betrachten.

Blog 22.12.22

Teil 5 - Einfluss von Cloud-native auf die Architekturarbeit

Wir beleuchten technische Aspekte von cloud-native Architekturen, die Vorteile verteilter Systeme und wie wichtig API-Management-System ist.

Blog 16.03.23

Bedeutung von APIs als Interaktionsmodell

APIs sind mehr als Schnittstellen, sie sind Teil der Interaktion zwischen Geschäftspartnern. Eine API First Strategie schafft echte Wertschöpfung.

Blog 04.07.24

Warum Shift Left jetzt unverzichtbar ist

Erfahren Sie, warum Shift Left und Feedbackschleifen unverzichtbar für eine erfolgreiche Softwareentwicklung sind. Verbessern Sie Qualität, Sicherheit und Effizienz in Ihrem Unternehmen.

Teaserbild zum Blogbeitrag: "Welches Low-Code-Tool ist das richtige?"
Blog 12.05.23

Welches Low-Code-Tool ist das richtige für mein Unternehmen?

Wichtige Auswahlkriterien ✅ Vergleich zwischen Anbietern wie Microsoft, Mendix, HCL und SAP ✅ Wir erleichtern Ihnen im Blog die Entscheidung!

Teaserbild Unternehmensprozesse mit Low-Code digitalisieren
Blog 04.04.23

Unternehmensprozesse digitalisieren – am besten mit Low-Code

Auch heute geht das Digitalisieren von Unternehmensprozessen eher schleppend voran. Low-Code Plattformen von Anbietern wie Mendix können hier Abhilfe leisten.