Was war zuerst da, das Huhn oder das Ei? Ziemlich seltsamer Anfang für einen Artikel über Infrastructure-as-Code, nicht wahr?
Was ist ein Ei?
In den meisten Fällen handelt es sich bei Infrastructure-as-Code (IaC) um eine deklarative Methode zur Darstellung der Infrastruktur. Darin beschreiben wir den Zustand, den wir erreichen wollen, angefangen beim Hardwareteil bis hin zur Softwarekonfiguration. Daher wird IaC verwendet für:
Ressourcenbereitstellung. Dies sind VMs, S3, VPCs usw. Grundlegende Werkzeuge für die Arbeit: Terraform и Wolkenbildung.
Jeder Code befindet sich in Git-Repositorys. Und früher oder später entscheidet der Teamleiter, dass es notwendig wäre, die Dinge in Ordnung zu bringen. Und er wird umgestalten. Und etwas Struktur schaffen. Und er wird sehen, dass es gut ist.
Gut ist auch, dass es das schon gibt Gitlab и GitHub-Anbieter für Terraform (und das ist Softwarekonfiguration). Mit ihrer Hilfe können Sie das gesamte Projekt verwalten: Teammitglieder, CI/CD, Git-Flow usw.
Woher kam das Ei?
Hier nähern wir uns allmählich der Hauptfrage.
Zunächst müssen Sie mit einem Repository beginnen, das die Struktur anderer Repositorys, einschließlich Ihres eigenen, beschreibt. Und natürlich müssen Sie innerhalb von GitOps CI hinzufügen, damit Änderungen automatisch implementiert werden.
Ist Git noch nicht erstellt?
Wie speichere ich es in Git?
Wie CI vermasseln?
Wenn wir Gitlab auch mit IaC und sogar in Kubernetes bereitstellen?
Und GitLab Runner auch in Kubernetes?
Und Kubernetes bei einem Cloud-Anbieter?
Was war zuerst da: GitLab, wo ich meinen Code hochladen werde, oder Code, der beschreibt, welche Art von GitLab ich brauche?
Holen Sie sich MY_SELECTEL_TOKEN vom Panel my.selectel.ru.
Erstellen Sie einen Kubernetes-Cluster, indem Sie das Token vom Konto an ihn übergeben.
Holen Sie sich KUBECONFIG aus dem erstellten Cluster.
Installieren Sie GitLab in Kubernetes.
Holen Sie sich das für den Benutzer generierte GitLab-Token von GitLab Wurzel.
Erstellen Sie eine Projektstruktur in GitLab mit dem GitLab-Token.
Vorhandenen Code an GitLab übertragen.
???
Gewinn!
Schritt 1. Der Token ist im Abschnitt erhältlich API-Schlüssel.
Schritt 2. Wir bereiten unser Terraform für das „Backen“ eines Clusters aus 2 Knoten vor. Wenn Sie sicher sind, dass Sie über genügend Ressourcen für alle verfügen, können Sie automatische Kontingente aktivieren:
Wir werden den Standard für viele verwenden Nginx-Ingress. Anleitungen zur Installation liegen bereits reichlich vor, daher gehen wir nicht näher darauf ein.
Schritt 8. Wir bringen die Git-Repositories mithilfe des Gitlab-Providers in die richtige Hierarchie.
cd ../internal/gitlab/hierarchy && terraform apply -input=false -auto-approve planfile
Leider verfügt der Terraform-GitLab-Anbieter über ein Floating ein Fehler. Anschließend müssen Sie die in Konflikt stehenden Projekte manuell löschen, damit tf.state behoben werden kann. Führen Sie dann den Befehl „$ make all“ erneut aus
Schritt 9. Wir übertragen lokale Repositories auf den Server.
Wir haben erreicht, dass wir alles deklarativ von unserem lokalen Rechner aus verwalten können. Jetzt möchte ich all diese Aufgaben auf CI übertragen und nur noch Knöpfe drücken. Dazu müssen wir unsere lokalen Zustände (Terraform-Zustand) nach CI übertragen. Wie das geht, erfahren Sie im nächsten Teil.
Abonnieren Sie unseren Blogum die Veröffentlichung neuer Artikel nicht zu verpassen!