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 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.

Leistung

Cloud Native

Mit Cloud Native auf dem Weg zum modernen Unternehmen: Der Cloud-Native-Ansatz ermöglicht die Entwicklung und den Betrieb in der Cloud. Dein Vorteil: Einfache Skalierung und schnelle Deployments.

Frau schaut sich am Tablet die No-Code/Low-Code Studie an
Wissen

No-Code / Low-Code Studie 2022

Die neue No-Code / Low-Code Studie 2022 ist da! ? Erfahren Sie die aktuellen Trend aus dem Markt. Jetzt informieren und die Studie kostenlos downloaden! ?

Infrastructure Resource Management
Kompetenz

Infrastructure Resource Management

Ob On-Premise oder in der Cloud: Mit einem modernen Infrastructure Resource Management stellen Sie Ihren Anwendungen jederzeit die richtige Menge an Ressourcen zur Verfügung.

Infrastructure Resource Management
Kompetenz

Infrastructure Resource Management

Ob On-Premise oder in der Cloud: Mit einem modernen Infrastructure Resource Management stellen Sie Ihren Anwendungen jederzeit die richtige Menge an Ressourcen zur Verfügung.

Referenz 31.08.23

EgeTrans – Die Zukunft von individueller Logistiksoftware

Erfahren Sie, wie EgeTrans die Zukunft der Individualsoftware auf der IBM i (AS/400) gestaltet und damit die Logistikbranche neu definiert. Ein Blick in eine innovative Welt, wo Technologie und Fortschritt sich treffen!

Blog 13.07.23

CI-Ops vs. GitOps

Um Entwicklungsprozesse zu automatisieren, sind zwei Ansätze populär: CI-Ops und GitOps. Unser Autor vergleicht beide und gibt Code-Beispiele.

Blog 28.03.24

Grafana Loki: Die nächste Generation des Log-Managements

Grafana Loki: Erfahren Sie mehr über die innovative Log-Verwaltungslösung für Cloud-native Umgebungen und deren Vorteile im Vergleich zu anderen Tools wie ElasticStack und Splunk.

Leistung

Cloud-Infrastruktur

Ob datensouveräne europäische Cloud-Infrastruktur der OVHcloud oder ein Angebot der klassischen Hyperscaler – wir helfen dir von der Konzeption bis zum Betrieb.

Mit Turbonomic IT-Kosten sparen
Blog 22.06.23

So einfach sparen Sie mit IBM Turbonomic IT-Kosten!

Freuen Sie sich mit uns auf eine sechsteilige Blogserie zum Thema Infrastruktur-Optimierung mit IBM Turbonomic. Im ersten Teil klären wir Fragen und Mehrwert von Turbonomic.

Blog 18.04.24

Cloud-Native Netzwerksouveränität mit Cilium und Kubernetes

Erfahren Sie alles über die revolutionäre Cloud-Native Netzwerksouveränität mit Cilium und Kubernetes. Optimieren Sie Ihre Netzwerkinfrastruktur für mehr Sicherheit und Leistung.

Blog 26.05.23

Bare Metal trifft auf Public Cloud

Mit Bare Metal und Public Cloud bietet die OVHcloud zwei unterschiedliche Ansätze, um IT-Infrastruktur bereitzustellen. Beide stehen für unterschiedliche Vor und Nachteile. Mit Bare Metal mietet ein Kunde einen physische Server und erhält die vollständige Kontrolle über die Hardware, das Betriebssystem, die Netzwerk-Konfiguration und die darauf ausgeführten Anwendungen. Somit kann die IT-Infrastruktur komplett an individuelle Anforderungen angepasst werden. Diese Server sind somit speziell für einen Kunden reserviert und niemand anderes nutzt diese Ressourcen parallel.

Partner

AWS – Amazon Web Services

AWS – Amazon Web Services

Leistung

Cloud Transformation

Mit Beratung und einer verlässlichen technischen Umsetzung begleiten wir dich auf dem Weg.

Blog 22.06.23

Cloud Landing Zones: Sicher landen in der Public Cloud

Was sind Cloud Landing Zones? Lesen Sie, wie Sie mit Hilfe von CLZ Ihre Cloud-Strategie definieren und wichtige Learnings für die Transformation gewinnen.

Blog 04.10.22

Erhöhte Sicherheit durch Kubernetes

Die Sicherheit spielt beim Einsatz von Containern eine besonders wichtige Rolle. Das Open-Source-System Kubernetes hat sich zum Standard bei der Automatisierung, Bereitstellung, Skalierung und Verwaltung von Container-Anwendungen entwickelt und erfordert deshalb besonderes Augenmerk bei der Sicherheit.

Blog 04.10.23

Warum sollte eine Multi Cloud mit der OVHcloud ergänzt werde

Dieser Blogbeitrag beschreibt das Konzept der Multi Cloud im Cloud Computing, bei dem Dienste und Ressourcen von verschiedenen Cloud-Anbietern kombiniert werden. Wir erläutern dir die Vorteile einer Multi-Cloud-Strategie und stellen verschiedene Cloud-Anbieter wie Amazon Web Services, Microsoft Azure, Google Cloud Platform und OVHcloud vor. Im Anschluss zeigen wir dir ein mögliches Szenario für die Integration von OVH-Leistungen in eine bestehende Multi-Cloud-Umgebung, um deine Datensouveränität zu gewährleisten.

Daten einfach speichern und verwalten mit Google Cloud
Blog

Kubernetes: ein flexibler Hype

Kubernetes als Basis für das neue Cloud-Projekt? Google das Kubernetes-Projekt als Open-Source-Projekt zur Verfügung gestellt. Wir schauen uns in diesem Beitrag die wichtigsten Vor- & Nachteile an.

Blog 17.12.20

So können Sie Ihre Infrastruktur automatisieren

Ansible ist ein Tool zur Konfiguration und Administration von Servern, um sich wiederholende Aufgaben zu automatisieren. Unabhängig, ob es sich um ein einzelnes System oder sehr viele handelt: Ansible s ist als Open Source Software unter der GNU General Public License für DevOps auf der ganzen Welt verfügbar.

Bleiben Sie mit dem TIMETOACT GROUP Newsletter auf dem Laufenden!