GitOps mit copebit – Modernes Continuous Deployment für Kubernetes

copebit entwickelt seit 2018 containerbasierte Anwendungsplattformen und nutzt dabei die umfassende Erfahrung seines Teams mit Technologien wie Docker, Kubernetes und ECS. Diese Historie hat tiefe Einblicke geliefert, wie Containerisierung die Sicherheit und Agilität des Application Engineering in der Cloud beschleunigt und verbessert.
Die Entwicklung dieser Container-Umgebungen hat zu einer erhöhten Komplexität geführt, was die Einführung von DevSecOps-Praktiken vorantreibt, um eine gemeinsame Verantwortung für Infrastruktur- und Anwendungsunterstützung zu fördern.
Unser Ansatz beim Aufbau von Infrastruktur hat stets die vollständige Automatisierung und die Prinzipien von Infrastructure-as-Code betont. Anfänglich nutzten wir Terraform für die Infrastrukturprovisionierung und Push-basierte CD-Pipelines für Kubernetes-Bereitstellungen. Doch mit der Skalierung von Kubernetes-Umgebungen und dem Anstieg der Dienstanzahl wurden Einschränkungen innerhalb grosser Terraform-Stacks und komplexer CD-Pipelines offensichtlich.
Um diese Herausforderungen zu überwinden, haben wir die Continuous-Delivery-Aspekte und In-Cluster-Operationen auf ein GitOps-Modell umgestellt. Dieser strategische Wandel hat unseren Kunden ermöglicht, schnellere, sicherere und hochautomatisierte Bereitstellungen zu erreichen, was die schnelle und risikoarme Implementierung inkrementeller Änderungen erleichtert.
Zusätzlich bietet GitOps eine robuste Grundlage für Plattform-Engineering-Architekturen.
Technologiestack & Architektur

GitOps
GitOps mit Flux nutzt Git als einzige Quelle der Wahrheit für Infrastruktur- und Anwendungskonfigurationen und synchronisiert automatisch den gewünschten Zustand in Git mit dem Live-Cluster. Flux, ein GitOps-Tool, überwacht Git-Repositories auf Änderungen und wendet sie auf Kubernetes an, wodurch Bereitstellungen deklarativ und auditierbar werden. copebit verwendet Flux, um die Bereitstellung von Kubernetes-Diensten und -Anwendungen durch die Verwaltung von Konfigurationsdateien in Git zu automatisieren, was schnellere, sicherere und inkrementelle Änderungen an Client-Umgebungen ermöglicht.
Flux führt eine „Immutability-Firewall“ ein, indem es Änderungen am Cluster nur durch Git-Commits zulässt, manuelle direkte Modifikationen verhindert und die Konsistenz der Konfiguration erzwingt. copebit nutzt diese Immutability-Firewall, um eine klare und auditierbare Historie der Bereitstellungen zu führen, das Risiko von Konfigurationsdrift zu reduzieren und sicherzustellen, dass die Bereitstellungen mit dem deklarierten Zustand in Git übereinstimmen.
Im GitOps-Modell ist die Quellcodeverwaltung von grösster Bedeutung; ein stabiles Git-Repository führt direkt zu stabilen Operationen. Wir empfehlen die Nutzung zuverlässiger Git-Plattformen wie GitLab.com oder GitHub.com, wobei selbst gehostete Alternativen ebenfalls praktikabel sind.
Unser integriertes Setup priorisiert die Sicherheit, insbesondere im Bereich des Secretsmanagements. Wir nutzen Secrets-Stores wie AWS Secrets Manager oder HashiCorp Vault, um robusten Schutz und ein hohes Mass an Sicherheit für sensible Informationen zu ermöglichen.
Ein kompaktes Dashboard bietet eine visuelle Darstellung der GitOps-Operationen. Darüber hinaus bietet die Integration von Flux mit GitLab eine umfassende Statusüberwachung direkt im Quellcodeverwaltungssystem, das als primäre Schnittstelle für Entwickler dient.

Sicherer Betrieb
Das Pull-basierte Continuous-Deployment-Modell von Flux ermöglicht vollständig private Cluster ohne exponierte Endpunkte. Folglich können die administrativen Berechtigungen der DevOps-Teams reduziert werden, wobei Git als primäre Schnittstelle dient.

Pull Basierend
Flux fungiert als Kubernetes-Controller, der mit einem Git-Repository verbunden ist. Er ruft Änderungen aus dem Repository ab und wendet sie direkt auf den Cluster an. Diese Änderungen werden als native Kubernetes-Objekte unter Verwendung von Standard-Manifesten implementiert, wodurch zusätzliche Abstraktionsebenen vermieden werden.

Vollständige Kontrolle
Flux macht administrative Berechtigungen für DevOps-Personal überflüssig, indem es erhöhte Cluster-Berechtigungen nutzt. Es synchronisiert sich kontinuierlich mit dem Repository und stellt so sicher, dass der Cluster-Status den Repository-Inhalten entspricht. Umgekehrt werden alle Cluster-Modifikationen automatisch auf den Zustand des Repositorys zurückgesetzt, wodurch eine vollständige und fortlaufende Synchronisation zwischen beiden gewährleistet ist.

Native Developer Tools
Anwendungsentwickler nutzen ihre vertrauten Tools, um Änderungen an der Kubernetes-Plattform vorzunehmen. Ihr Workflow umfasst das Committen von Code in ein Repository, die Überprüfung und das Merging, gefolgt von einem automatischen Pull auf den Cluster durch den Controller, sobald der gesamte Code-Review-Prozess abgeschlossen ist. Dieser gesamte Prozess wird über die Konsole und die täglichen Standard-Tools der Entwickler verwaltet. copebit nutzt Git-Branching-Strategien, um Änderungen schrittweise auf verschiedene EKS-Umgebungen auszurollen.

Deployment Optionen
Flux und andere GitOps-Tools wie ArgoCD unterstützen verschiedene Bereitstellungsartefakte: Kubernetes-Manifeste, HelmCharts, Kustomize-Dateien und andere. Es können nicht nur Git-Repos synchronisiert werden, sondern auch HelmRegistries und andere OCI-konforme Repositories.
Implementations Blueprint

copebit nutzt Terraform/Tofu, um Infrastruktur zu konstruieren und alle notwendigen Ressourcen als Infrastructure as Code zu kodifizieren.
Die Infrastruktur wird bereitgestellt und der Flux-Controller wird über einen vollständig privaten, sicheren und automatisierten Prozess auf dem Cluster installiert.
Ein Git-Repository wird eingerichtet, das auf die gründlich getesteten Helm-Charts von copebit verweist. Diese Charts erleichtern die Bereitstellung wesentlicher Kubernetes-Dienste, die derzeit etwa 15 hoch angesehene Dienste umfassen, darunter external-secrets, Speicherlösungen (Block und Datei), Ingress-Controller und Sicherheitstools wie der Kyverno Admission Controller.
Zusätzliche Repositorys für kundenspezifische Anwendungsbereitstellungen können integriert und unabhängig verwaltet werden.
Diese Methodik gewährleistet eine strukturierte, sichere und automatisierte Erstbereitstellung und fördert gleichzeitig die einfache Bedienung.
copebit pflegt kontinuierlich alle Tofu-Codes und Helm-Charts, wobei jeder von umfassenden automatisierten Testsuiten profitiert, um zuverlässige Bereitstellungsartefakte für Kundenumgebungen zu gewährleisten.
Warum copebit für eine GitOps-basierte CD-Pipeline?

Wichtige Vorteile mit GitOps und Flux
- GitOps-gesteuerte Beratung: Nutzen Sie unser Fachwissen, um Full-Stack-Cloud-native Lösungen zu implementieren, die vollständig durch GitOps-Prinzipien und Flux CD verwaltet werden, um Infrastruktur als Code und automatisierte Bereitstellungen zu gewährleisten.
- Sichere Verwaltung über GitOps: Infrastruktur- und Anwendungsänderungen werden über sichere Git-Repositories und Flux verwaltet, wodurch externe Exposition und Shadow-Telemetrie eliminiert werden.
- Produktionsreif mit Flux CD: Wir wenden von Anfang an robuste Plattform-Engineering-Praktiken an – IaC, GitOps-Workflows, die von Flux unterstützt werden, sichere Bereitstellungspipelines und umfassende Observability.
- Transparente und versionierte Assets: Profitieren Sie vom vollständigen Zugriff auf alle Projektmaterialien, einschliesslich Infrastrukturdefinitionen, die von OpenTofu und Flux verwaltet werden, und Architekturdiagramme, die unter Versionskontrolle gepflegt werden.
Warum sollten Sie sich für GitOps und Flux entscheiden?
Als zuverlässiger Partner mit einer ausgewiesenen Erfolgsbilanz bei AWS-Projekten, die GitOps nutzen, bieten wir unübertroffene Präzision und Wiederholbarkeit für Ihre Einführung mit Flux CD als Kernstück.