Einrichten einer CD-Toolchain für Infrastructure as Code

Dieses Tutorial ist Teil 3 einer dreiteiligen Tutorial-Reihe, in der Sie die Best Practices von IBM Cloud® DevSecOps anhand einer vollständigen Referenzimplementierung kennenlernen, die als Service verfügbar ist und von IBM Cloud® Continuous Delivery bereitgestellt wird. In Teil 3 dieser Tutorialreihe verwenden Sie die Toolchain-Vorlage für Continuous Deployment (CD) mit Best Practices für Sicherheit und Compliance in „ DevSecOps “.

Vorbereitende Schritte

Vergewissern Sie sich, dass Sie die folgenden Voraussetzungen erfüllen, bevor Sie mit Teil 3 dieser Lernprogrammreihe beginnen:

  1. Schließen Sie Teil 1 ab: Voraussetzungen einrichten.
  2. Vervollständigen Sie Teil 2: Richten Sie eine CI-Toolchain für Infrastructure as Code(Terraform)ein.
  3. Sehen Sie sich das Video Erste Schritte mit DevSecOps in IBM Cloud- Teil 2 an.

CD - Bereitstellung einer sicheren Anwendung mit DevSecOps Praktiken

Die DevSecOps CD-Toolchain enthält nur eine Pipeline für die kontinuierliche Bereitstellung. Sie implementiert die folgenden bewährten Verfahren:

  • Automatisiertes Änderungsmanagement, um Entwickler, Genehmiger und Prüfer bei Compliance-Aspekten zu unterstützen
  • Erstellt eine Evidenz-Zusammenfassung aus der Evidenz, die in der CI-Pipeline gesammelt wurde.
  • Erstellt eine Änderungsanfrage im Git Repos and Issue Tracking basierten Änderungsmanagement-Repository und fügt ihr Verwendungsnachweise hinzu.
  • Verwendet das Inventar-Repository, um erstellte Artefakte in Bereitstellungsumgebungen wie Staging und Prod zu übertragen.
  • Prüft den CR und genehmigt ihn automatisch, wenn alle Prüfungen bestanden sind.
  • Wird die CR genehmigt oder handelt es sich um einen Notfall, stellt die Toolchain das Image aus dem Inventar in der Produktion bereit.

Setup-Assistent für CD-Toolchain - Übersicht

Für jede Methode im vorliegenden Lernprogramm wird der Setup-Assistent verwendet. Sie werden durch den Einrichtungsprozess der Toolchain geführt und erhalten die empfohlenen Konfigurationsoptionen, die für die Erstellung Ihrer Toolchain erforderlich sind.

Ein Fortschrittsanzeiger zeigt die Schritte zum Ausführen der Konfiguration an. Sie können die Fortschrittsanzeige verwenden, um zu einem vorherigen Schritt zu navigieren. Die Konfigurationsoptionen für den aktuellen Schritt werden im Hauptbereich der Seite angezeigt.

DevSecOps Startseite der Continuous Deployment Toolchain Abbildung 1.
DevSecOps Startseite der Toolchain für die kontinuierliche Bereitstellung

Um den nächsten Schritt aufzurufen, klicken Sie auf die Schaltfläche Weiter. Der nächste Schritt kann erst aufgerufen werden, wenn die Konfiguration für den aktuellen Schritt ordnungsgemäß abgeschlossen ist. Um den vorherigen Schritt aufzurufen, klicken Sie auf die Schaltfläche Zurück.

Einige Schritte beinhalten einen Schalter für die erweiterte Konfiguration. Diese Schritte bieten Ihnen standardmäßig die minimal erforderliche Konfiguration. Fortgeschrittene Benutzer, die eine feinere Steuerung benötigen, können jedoch auf die Schaltfläche Zur erweiterten Konfiguration wechseln klicken, um alle Optionen für die zugrunde liegende Integration anzuzeigen.

DevSecOps Umschalter für die erweiterte Konfiguration Abbildung 2.
DevSecOps Umschalter für erweiterte Konfiguration

Wenn alle Schritte erfolgreich abgeschlossen sind, erstellen Sie die Toolchain, indem Sie im Schritt Zusammenfassung auf Erstellen klicken.

Im Installationsassistenten können Sie jederzeit die vorherigen Schritte erneut aufrufen. Das Toolchain-Installationsprogramm behält alle Konfigurationseinstellungen aus den aufeinander folgenden Schritten bei.

Setup der CD-Toolchain starten

Starten Sie den Konfigurationsprozess für die CD-Toolchain mit einer der folgenden Optionen:

  • Klicken Sie auf Toolchain erstellen.

    Toolchain erstellen

  • Klicken Sie IBM Cloud der Cloud-Konsole auf das Menüsymbol und wählen Sie DevOps aus. Klicken Sie auf der Seite Toolchains auf Create toolchain. Klicken Sie auf der Seite Erstellen einer Toolchain auf CD-Entwicklung mit DevSecOps Praktiken.

Einrichten des CD-Toolchain-Namens und der Region

Überprüfen Sie die Standardinformationen für die Toolchain-Einstellungen. Der Name der Toolchain macht sie in IBM Cloud identifizierbar. Stellen Sie sicher, dass der Name der Toolchain innerhalb Ihrer Toolchains für dieselbe Region und Ressourcengruppe in IBM Cloud eindeutig ist.

Wählen Sie die zugehörige CI-Toolchain in der Dropdown-Liste, um einen Teil der CI-Konfiguration zu kopieren, um die Einrichtung dieser CD-Toolchain zu unterstützen.

DevSecOps zugehörige CI-Toolchain Abbildung 3.
DevSecOps zugehörige CI-Toolchain

Warnung: Bei dieser Aktion werden möglicherweise einige der bereits eingegebenen Werte überschrieben.

CD-Tool-Integrationen einrichten

Wenn Sie bereits im Willkommensschritt eine Verknüpfung zu einer bestehenden CI-Toolchain hergestellt haben, werden die Namen der anwendungsbezogenen Repositorys, die in dieser Toolchain verwendet werden, vorausgefüllt. Überprüfen Sie die Repository-URLs und fahren Sie dann mit den nächsten Schritten fort.

Anwendungsbezogene Repositorys

Wenn Sie Ihre CD-Toolchain von Grund auf neu einrichten wollen, konfigurieren Sie diese Repositories während der Erstellung der CI-Toolchain und verwenden Sie sie dann oder verlinken Sie sie hier.

Um die entsprechende URL abzurufen, gehen Sie zur CI-Pipeline und wählen Sie die entsprechende Werkzeugkarte aus. Klicken Sie mit der rechten Maustaste auf die Werkzeugkarte, und wählen Sie Linkadresse kopieren.

  • Inventarisierung: Das Inventar-Repository zeichnet Details der Artefakte auf, die von den CI- und CD-Pipelines erstellt werden. Beispiel: https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-inventory
  • Probleme: Das Issues-Repository zeichnet Probleme auf, die während der Ausführung der CI-Pipeline gefunden werden. Beispiel: https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-issues.
  • Angaben: Alle unformatierten Konformitätsnachweise, die zu der Anwendung gehören, werden hier erfasst. Beispiel: https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-evidence.

Die Toolchain unterstützt derzeit nur die Verknüpfung mit bestehenden IBM-gehosteten Git Repos and Issue Tracking Repositorys.

Bestand

Repository URL: URL des Inventar-Repositorys, das in Ihrer CI-Toolchain konfiguriert ist, wie im vorherigen Schritt erfasst.

Probleme

Repository URL: URL des Issues Repository, das in Ihrer CI-Toolchain konfiguriert ist, wie im vorherigen Schritt erfasst.

Pipeline-Konfiguration

Das Pipeline-Konfigurationsrepository enthält YAML-Dateien und Scripts, die für die Bereitstellung, für Tests und für andere angepasste Tasks erforderlich sind.

Für dieses Tutorial ist das Repository für die Pipeline-Konfiguration das gleiche, das für DevSecOps CI für Infrastructure as Code ( IaC ) definiert wurde. Wählen Sie Vorhandenes Bereitstellungskonfigurations-Repository verwenden und wählen Sie das Repository, das für die Pipeline-Konfiguration der CI-Toolchain verwendet wird.

Weitere Informationen über Git Repos finden Sie unter Konfigurieren Ihres Git Repos and Issue Tracking. Weitere Informationen zu anpassbaren Skripts finden Sie unter Benutzerdefinierte Skripts.

Geheime Schlüssel

Mehrere Werkzeuge in dieser Toolchain und möglicherweise in Ihren anpassbaren Skripten benötigen Geheimnisse für den Zugriff auf privilegierte Ressourcen. Ein IBM Cloud-API-Schlüssel ist ein Beispiel für ein solches Geheimnis. Speichern Sie diese Geheimnisse sicher in einem von IBM empfohlenen Programm zur Verwaltung von Geheimnissen, wie z. B IBM Key Protect for IBM Cloud, IBM Cloud® Secrets Manager, oder HashiCorp Vault. Das Tool zur Verwaltung von Geheimnissen kann in die Toolchain integriert werden, so dass Sie die Geheimnisse in Ihrer Tekton-Pipeline einfach referenzieren können.

Dieses Lernprogramm verwendet IBM Cloud® Secrets Manager als Tresor für Geheimnisse.

Nachweisspeicher

Das Evidenzfach speichert Evidenz für alle Aufgaben, die die Pipeline ausführt. Dieser Nachweis wird von der Pipeline während des Pipelinelaufs gesammelt.

Wählen Sie den konfigurierten Cloud Object Storage (COS) Bucket für Ihre Continuous Integration (CI) Toolchain. Stellen Sie sicher, dass derselbe COS-Bucket in den Toolchains Continuous Integration (CI), Continuous Delivery (CD) und Continuous Compliance (CC) verwendet wird.

Es empfiehlt sich, einen Cloud Object Storage Bucket als Evidence Locker zu verwenden, um alle Evidenzen und Artefakte zu speichern, die während des Pipeline-Laufs gesammelt werden.

Weitere Informationen zur Speicherung von Beweisen finden Sie unter Beweise.

Nachweis

Repository URL: URL des Evidence Locker Repository, das in Ihrer CI Toolchain konfiguriert ist, wie im vorherigen Schritt erfasst.

Cloud-Bucket Object Storage

Um diese Funktion nutzen zu können, benötigen Sie eine Cloud- Object Storage-Instanz und einen Bucket. Klicken Sie auf „ Cloud- Object Storage-Buckets als Beweisspeicher verwenden “, um eine Cloud- Object Storage-Instanz zu erstellen. Weitere Informationen zum Konfigurieren eines Buckets, der als Compliance-Beweisspeicher dienen kann, finden Sie unter Konfigurieren von Cloud- Object Storage en zum Speichern von Beweismitteln.

  • Die Felder Cloud Object Storage instance, Bucket name und Cloud Object Storage endpoint werden automatisch ausgefüllt.
  • Geben Sie den Service-ID-API-Schlüssel ein
    • Bevorzugt: Ein vorhandener Schlüssel kann durch Anklicken des Schlüsselsymbols aus einem geheimen Tresor importiert werden.
    • Ein vorhandener Schlüssel kann kopiert und eingefügt werden.

Das Feld Endpunkt ist optional. Wählen Sie den Endpunkt während der Einrichtung der Toolchain oder während des Pipelinelaufs aus oder geben Sie ihn an.

Implementierungsziel

Für den Anwendungsfall DevSecOps for Terraform wählen Sie die Option Custom deployment.

Benutzerdefiniertes Ziel

Diese Option erfordert den IBM Cloud API-Schlüssel, der in den Bereitstellungsskripten der Pipeline verwendet wird. Die bereitgestellten Deployment-Skripte verwenden Schematics, um das Terraform-Konfigurationsartefakt in den Schematics Workspace hochzuladen und verwenden Schematics CLI plan und apply Befehle, um die Terraform-Konfiguration auf IBM Cloud bereitzustellen.

IBM Cloud API-Schlüssel

Der API-Schlüssel interagiert mit dem IBM Cloud CLI-Tool bei verschiedenen Aufgaben:

  • Bevorzugt: Importieren Sie einen vorhandenen Schlüssel aus einem geheimen Tresor, indem Sie auf das Schlüsselsymbol klicken.
  • Kopieren und Einfügen eines vorhandenen Schlüssels.
  • Erstellen Sie einen Schlüssel, indem Sie auf die Schaltfläche Neu + klicken.

Speichern Sie den neu generierten API-Schlüssel in einem Geheimnistresor.

Änderungsanforderungsmanagement

Verwenden Sie ein IBM Cloudgehostetes Git Repos and Issue Tracking Repository, um Änderungsanforderungen zu verwalten. Weitere Informationen finden Sie unter Änderungsmanagement automatisieren.

DevOps einblicke Toolchain

Verknüpfen Sie eine vorhandene DevOps insights-Instanz aus einer anderen Toolchain mit dieser Pipeline, damit alle Build-, Deployment- und Test-Datensätze aus den CI- und CD-Toolchain-Pipelines am selben Ort gesammelt werden.

Die CD-Toolchain kann die Deployment-Datensätze in einer bestehenden DevOps insights-Instanz veröffentlichen. Um diese Funktion zu aktivieren, geben Sie die ID der Toolchain an, die die vorhandene DevOps Insights Instanz enthält, indem Sie sie in der Dropdown-Liste DevOps insights toolchain ID auswählen.

Optionale Tools

Slack

Konfigurieren Sie das Slack-Tool, um Benachrichtigungen über Ihre PR/CI-Pipeline-Ereignisse zu erhalten:

  • Slack-Webhook
  • Bevorzugt: Ein vorhandener Webhook kann durch Klicken auf das Schlüsselsymbol aus einem Geheimnisträger importiert werden.
  • Kopieren Sie einen vorhandenen Webhook und fügen Sie ihn ein.
  • Slack-Kanal: Senden Sie eine Nachricht an einen bestehenden Slack-Kanal.
  • Slack-Teamname: der Satz vor . slack.com in unserem Team URL. Wenn Ihr Team URL beispielsweise https://team.slack.com ist, lautet der Teamname Team.
  • Automatisierte Slack-Benachrichtigungen: Passen Sie Ihre Auswahl an, indem Sie die Ereignisse auswählen, für die Sie Benachrichtigungen erhalten möchten.

Sie können das Slack Tool nach der Erstellung der Toolchain hinzufügen.

Nachdem Sie Ihre Toolchain erstellt haben, schalten Sie das Senden von Benachrichtigungen mit der Umgebungseigenschaft slack-notifications in Ihrer CD-Pipeline um (0 = aus, 1 = an)

CD-Toolchain erstellen

Klicken Sie auf der Seite Zusammenfassung auf Erstellen und warten Sie, bis die Toolchain erstellt wurde.

Konfigurieren Sie die einzelnen Toolchain-Integrationen, nachdem die Pipeline erstellt wurde.

DevSecOps CD Toolchain Erstellt Abbildung 4.
DevSecOps CD Toolchain erstellt

CD-Toolchain durchsuchen

Nachdem die CD Toolchain erstellt wurde, klicken Sie auf die Karte cd-pipeline, um die Promotion Pipeline zu öffnen und auszuführen.

Promotion-Pipeline ausführen

Vergewissern Sie sich, dass die CI-Pipeline erfolgreich ausgeführt wurde, bevor Sie die Promotion-Pipeline starten.

Die Promotion-Pipeline erstellt eine Pull-Anforderung mit dem Inhalt des Bestands in der Verzweigung "Inventory Source Environment" (z. B. "master"), der auf den Zweig "Inventory Target Environment" (z. B. Staging oder Prod) abzielt.

  • Klicken Sie im cd-pipeline Dashboard auf Pipeline ausführen und wählen Sie den manuellen Beförderungsauslöser. Klicken Sie auf Ausführen, um die Pipeline zu starten.
  • Warten Sie den Abschluss des Promotion-Pipeline-Laufs ab und prüfen Sie das Ausführungsprotokoll.
  • Nach erfolgreicher Beendigung der Promotion-Pipeline enthält das Aufgabenprotokoll promote einen Link zum Pull-Request im Inventory Repository. Der Name der Pull-Anfrage hat das Format promote <Inventory Source Environment> to <Inventory Target Environment>.
  1. Öffnen Sie die Pull-Anfrage in Ihrem Browser über den im Protokoll angegebenen Link. Vervollständigen Sie die Angaben in den folgenden Abschnitten:

    • Priorität: (obligatorisch) Eine der Prioritäten Kritisch, Hoch, Mäßig, Niedrig, Planung.
    • Change Request assignee: (obligatorisch) E-Mail-ID des Beauftragten.
    • Zusätzliche Beschreibung: Beschreibung der Änderungen in der Anwendung.
    • Zweck: Zweck der Änderungen, die an der Anwendung vorgenommen werden.
    • Erläuterung der Auswirkungen: Auswirkung der Änderung auf das Anwendungsverhalten oder die Umgebung.
    • Zurücksetzungsplan: Schritte zum Zurücksetzen bei einem Implementierungsfehler.
  2. Füllen Sie die Felder im Pull Request aus und klicken Sie auf Speichern.

  3. Fügen Sie das Label EMERGENCY zu Ihrem PR hinzu, wenn die Konformitätsprüfungen in CI fehlgeschlagen sind und Sie mit der Bereitstellung fortfahren möchten

  4. Führen Sie die Pull-Anforderung aus Git Repos and Issue Trackingzusammen.

Die Details des Pull Requests werden von der CD-Pipeline verwendet, um während des CD-Pipeline-Laufs einen Change Request im Change Request Management Repository zu erstellen.

Konfigurieren Sie die CD-Pipeline

Terraform-Variablen

Geben Sie für dieses Lernprogramm den Namen der Schlüsselschutzinstanz an, die in der Produktionsumgebung erstellt werden soll.

Wählen Sie dazu in der cd-Pipeline Umgebungseigenschaften und klicken Sie auf Hinzufügen.

CD-Pipeline-Konfiguration
Abbildung 5. CD-Pipeline-Konfiguration

Fügen Sie eine Eigenschaft vom Typ Text Value mit dem Namen TF_VAR_key_protect_instance hinzu. Legen Sie einen aussagekräftigen Wert fest, der die Übergabe an die Produktionsumgebung angibt, z. B. key-protect-production-202210191453. Der Wert dieser Umgebungseigenschaft wird als Wert für die Konfigurationsvariable key_protect_instance terraform eingespeist.

Sie müssen auch den IBM Cloud Provider für Terraform mit dem entsprechenden ibmcloud_api_key konfigurieren, der sich mit dem IBM Cloud authentifiziert, wie unter Konfigurieren des IBM Cloud Provider-Plugins beschrieben

Fügen Sie eine Eigenschaft vom Typ Secure Value mit dem Namen TF_VAR_ibmcloud_api_key hinzu. Setzen Sie den Wert auf den API-Schlüssel, der für die Erstellung von IBM Cloud Ressourcen verwendet werden soll.

Das in diesem Tutorial verwendete Beispiel erwartet ein resource_group zum Erstellen der Instanz „ KeyProtect “. Der Standardname resource_group lautet Default. Wenn dies für Ihr Konto nicht geeignet ist, ersetzen Sie die Standardvariable resource_group in der Datei variables.tf oder geben Sie den zu verwendenden Wert der Variable resource_group an, indem Sie die Umgebungseigenschaft TF_VAR_resource_group auf den entsprechenden Ressourcengruppennamen setzen.

Zweig "Pipeline-Konfiguration

Der Zweig des Pipeline-Konfigurations-Repositorys ist in den CD-Pipeline-Umgebungseigenschaften standardmäßig als master definiert. Ändern Sie den Zweig für dieses Tutorial in main.

Wählen Sie dazu in der cd-Pipeline Umgebungseigenschaften und klicken Sie auf edit, um den Wert auf main

CD Pipeline-Konfigurationszweig
Abbildung 6. CD-Pipeline-Konfigurationszweig

CD-Pipeline ausführen

Starten Sie eine CD-Pipeline auf eine der folgenden Arten:

  • Bevorzugt: Manuelle Auslösung der CD-Pipeline.
  • Optional: automatisch nach jeder Merge Aktion im Bestandsverzeichnis. Ein Git Repos and Issue Tracking Trigger ist eingerichtet, um die automatische CD-Pipeline auszulösen, ist aber standardmäßig deaktiviert.

Sie können die CD-Pipeline auch jederzeit manuell auslösen, aber wenn seit der letzten erfolgreichen Bereitstellung keine Änderungen vorgenommen wurden, bricht die CD-Pipeline vorzeitig ab, da es nichts zu verteilen gibt. Sie können force-redeploy-Variable hinzufügen und verwenden, um die CD ohne Codeänderungen erneut auszuführen.

Eine erfolgreiche CD-Pipeline-Ausführung sieht wie folgt aus:

DevSecOps CD-Pipeline erfolgreich Abbildung 7.
DevSecOps CD-Pipeline erfolgreich

Nach einem erfolgreichen Lauf der CD-Pipeline finden Sie den Instanzdienst KeyProtect in der Ressourcenliste.

KeyProtect dienstinstanz erstellt Abbildung 8.
KeyProtect service-Instanz erstellt