Einrichten von Tekton-Pipelines für die kontinuierliche Bereitstellung mit DevSecOps

Mit diesem Tutorial können Sie eine Pipeline für die kontinuierliche Bereitstellung (CD) und eine Toolchain einrichten, die den Best Practices für die Einhaltung von Richtlinien entsprechen.

Vorbereitende Schritte

Setup der CD-Toolchain starten

Der Continuous Delivery-Dienst bietet Vorlagen, die Sie durch die Einrichtung der Toolchain führen und Prozesse in einer logischen Reihenfolge erstellen. Ein Fortschrittsanzeiger zeigt die Schritte zum Ausführen der Konfiguration an. Folgen Sie den Schritten, um auf die Vorlage für die CI-Toolchain zuzugreifen.

  1. Klicken Sie in der Cloud- IBM Cloud auf das Menüsymbol Menüsymbol > Plattformautomatisierung > Toolchains.
  2. Klicken Sie auf der Seite 'Toolchains' auf die Option Toolchain erstellen.
  3. Klicken Sie auf die Kachel CD-Entwicklung mit DevSecOps Praktiken.

Einrichten der Einstellungen der CI-Toolchain

Die Seite Willkommen fasst den Zweck der Toolchain zusammen und enthält Verweise auf die Dokumentation und zugehörige Materialien.

  1. Klicken Sie auf Starten.

  2. Geben Sie einen Toolchain-Namen innerhalb Ihrer Toolchain für dieselbe Region und Ressourcengruppe im IBM Cloud ein. Stellen Sie sicher, dass der Name der Toolchain innerhalb Ihrer Toolchains für dieselbe Region und Ressourcengruppe in IBM Cloud eindeutig ist.

  3. Wählen Sie eine Region aus der Dropdown-Liste.

    Die Region der Toolchain kann sich von der Region des Clusters und der Registry unterscheiden.

  4. Wählen Sie eine Ressourcengruppe aus der Dropdown-Liste.

  5. Klicken Sie auf Weiter.

    Der nächste Schritt kann erst aufgerufen werden, wenn die Konfiguration für den aktuellen Schritt ordnungsgemäß abgeschlossen ist. Sie können jederzeit auf Zurück klicken, um die vorherigen Schritte im geführten Installationsprogramm anzuzeigen. Das Toolchain-Installationsprogramm behält alle Konfigurationseinstellungen aus den aufeinander folgenden Schritten bei.

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

Einrichten der CD-Tool-Integrationen

Die CD-Tool-Integration umfasst die Einrichtung der verschiedenen Tool- und Service-Integrationen, die die CD-Toolchain verwendet. Wenn Sie eine CI-Pipeline-Toolchain-Vorlage verwenden, um Ihren CI-Prozess einzurichten, beziehen Sie sich auf Ihre CI-Toolchain und kopieren Sie die Namen der Repositories, die in dieser Toolchain verwendet werden.

Anwendungsbezogene Repositorys

Wenn Sie Ihre CI-Toolchain von Grund auf neu einrichten wollen, konfigurieren Sie diese Repositories während der Erstellung der CI-Toolchain.

Bestand
Die Einsatzinformationen werden über dieses Repository verfolgt. Für jeden erfolgreichen Durchlauf der CI-Pipeline erstellt die CD-Pipeline einen neuen Zweig, der nach der erstellten CR-Nummer benannt wird und nach Abschluss der Bereitstellung mit dem Master zusammengeführt wird. Beispiel: https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-inventory.
Probleme
Speichert die Probleme, die während des Build- und Deployment-Prozesses auftreten. Beispiel: https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-issues.
Nachweis
Sammelt alle rohen Compliance-Nachweise, die zur Anwendung gehören. Beispiel: https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-evidence.
Toolchain
Die Tekton-Pipeline-Definitionen, wie z. B. Pipelines, Trigger und Listener, werden in diesem Repository gespeichert. Beispiel: https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-toolchain.

Nachdem Sie die Namen der Repositories aus der CI-Toolchain erfasst haben, fahren Sie mit Guided Setup fort, um mit der Erstellung der CD-Toolchain zu beginnen. Während des Einrichtungsprozesses können Sie für jedes Repository die URL an ein bestehendes IBM-gehostetes Git Repos and Issue Tracking-Repository weiterleiten. Derzeit unterstützt die Toolchain nur die Erstellung von Git Repos and Issue Tracking Repositories. Zukünftige Versionen bieten Unterstützung für die Erstellung von Repositories mit GitHub, GitHub Enterprise (GHE) und anderen SCM-Anbietern.

Bestand

Im Bestandsrepository werden Details zu Artefakten aufgezeichnet, die von den CI-Toolchains erstellt werden. Das Standardverhalten der Toolchain ist Vorhandenes Inventar verwenden, um ein vorhandenes Inventar-Repository für die Toolchain zu verknüpfen. Die Toolchain unterstützt derzeit nur die Verknüpfung mit bestehenden Git Repos and Issue Tracking Repositories. Weitere Informationen finden Sie unter Anwendungsbezogene Repositories.

  1. Sie können die in der Vorlage enthaltene Standardkonfiguration übernehmen.
  2. Klicken Sie auf Weiter.

Probleme

Das Issues-Repository zeichnet Probleme auf, die während der Ausführung der CI-Pipeline gefunden werden.

  1. Sie können die in der Vorlage enthaltene Standardkonfiguration übernehmen.
  2. Weiter klicken

Pipeline-Konfiguration

Das Repository für die Pipeline-Konfiguration enthält YAML-Dateien und Skripte, die für die Bereitstellung, das Testen und andere benutzerdefinierte Aufgaben benötigt werden. Weitere Informationen über Git-Repos finden Sie unter Konfigurieren Ihrer Git Repos and Issue Tracking. Weitere Informationen über anpassbare Skripte finden Sie unter Benutzerdefinierte Skripte.

  1. Übernehmen Sie die Standardeinstellungen für Quellanbieter und Erstellen Sie ein neues Bereitstellungskonfigurations-Repository.

    Die Toolchain klont das Beispiel „hello-compliance-deployment“ in Ihrer Organisation „ Git “. Weitere Informationen zu „ Git “-Repositorys finden Sie unter „ Konfigurieren Ihrer Git Repos and Issue Tracking “. Weitere Informationen über anpassbare Skripte finden Sie unter Benutzerdefinierte Skripte.

  2. Geben Sie einen neuen Repository-Namen ein.

  3. Klicken Sie auf Weiter.

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 Programm zur Verwaltung von Geheimnissen, wie z. B IBM Key Protect for IBM Cloud, IBM Cloud® Secrets Manager, oder HashiCorp Vault. Das Verwaltungswerkzeug für Geheimnisse kann in die Toolchain integriert werden, so dass Sie die Geheimnisse in Ihrer Tekton-Pipeline einfach referenzieren können.

Sie können mit der AppRole authentifizierungsmethode verwenden, um geheime Werte zu lesen.

  1. Dieses Tutorial verwendet IBM Cloud® Secrets Manager als Tresor für Geheimnisse. Die Felder Region, Ressourcengruppe und Dienstleistungsname werden automatisch auf der Grundlage der verfügbaren Auswahlmöglichkeiten ausgefüllt. Klicken Sie auf die Dropdown-Anzeigen, um die anderen Auswahlmöglichkeiten zu sehen.
  2. Geben Sie Ihren Secrets Manager Instanznamen ein.
  3. Wählen Sie die Berechtigungsart aus der Dropdown-Liste aus.
  4. Klicken Sie auf Weiter.

Nachweisspeicher

Der Evidence Locker speichert alle Evidenzen und Artefakte, die von der DevSecOps CI-Pipeline erzeugt werden.

  1. Wählen Sie eine Vorhandene Asservatenkammer verwenden.
  2. Wählen Sie das Repository URL aus, das erstellt wurde, als Sie die CI-Toolchain konfiguriert haben. Weitere Informationen zur Speicherung von Beweisen finden Sie unter Beweise.
  3. Schalten Sie den IBM Cloud Object Storage Schieberegler um, um alle Beweise im IBM Cloud Object Storage Schaufel zu speichern.
  4. Klicken Sie auf Weiter.

Wolke Object Storage Eimer

Sie müssen über die Instanz „ IBM Cloud Object Storage “ und einen Bucket verfügen, der als Speicherort für Compliance-Nachweise dient.

  1. Die Felder Cloud Object Storage instance, Bucket name und Cloud Object Storage endpoint werden automatisch ausgefüllt.
  2. Geben Sie Ihren Service ID API-Schlüssel ein.
    • Bevorzugt: Ein vorhandener Schlüssel kann durch Anklicken des Schlüsselsymbols aus einem Geheimnistresor importiert werden.
    • Ein vorhandener Schlüssel kann kopiert und eingefügt werden.
  3. Klicken Sie auf Weiter.

Das Feld Endpunkt ist optional. Es wird empfohlen, den Endpunkt während der Einrichtung der Toolchain oder während des Pipelinelaufs auszuwählen oder anzugeben.

Bereitstellung

Konfigurieren Sie das Inventarisierungsziel und den Kubernetes-Cluster, in dem die Anwendung bereitgestellt wird:

  1. Der Standardname der App ist hello-compliance-app.

  2. Geben Sie Ihren IBM Cloud API-Schlüssel ein. Der API-Schlüssel wird zur Interaktion mit dem IBM Cloud CLI-Tool bei verschiedenen Aufgaben verwendet.

    • Bevorzugt: Ein vorhandener Schlüssel kann durch Anklicken des Schlüsselsymbols aus einem Geheimnistresor importiert werden.
    • Ein vorhandener Schlüssel kann kopiert und eingefügt werden.
    • Von hier aus kann ein neuer Schlüssel erstellt werden, indem Sie auf das Symbol Neu + klicken.

    Der neu generierte API-Schlüssel kann sofort in einem Geheimnistresor gespeichert werden.

  3. Wenn der API-Schlüssel gültig ist und ausreichenden Zugriff hat, werden die Container Registry, Container Registry namespace, Dev cluster region, Ressource group, Cluster name, Cluster namespace werden automatisch ausgefüllt. Sie können jedes dieser Felder entsprechend Ihrer Konfiguration ändern.

  4. Klicken Sie auf Weiter.

IBM Cloud API-Schlüssel

Der API-Schlüssel wird für die Interaktion mit dem ibmcloud CLI-Tool bei verschiedenen Aufgaben verwendet.

  • Ein bestehender API-Schlüssel kann von einem bestehenden geheimen Anbieter importiert werden, der als Voraussetzung erstellt wurde (empfohlen)
  • Ein vorhandener Schlüssel kann kopiert und eingefügt werden (nicht empfohlen)
  • Ein neuer Schlüssel kann durch Klicken auf Neu + erstellt werden. Erzeugen Sie einen api-key, wenn Sie noch keinen haben. Der neu generierte API-Schlüssel kann sofort in einer vorhandenen Key Protect-Instanz gespeichert werden.

Wenn das Feld API-Schlüssel ausgefüllt ist, werden die Felder für die Registrierung und den Cluster automatisch ausgefüllt.

Bestandsziel und Quellenverzweigungen

  1. Übernehmen Sie die Option Einzelner Cluster (Push-basierte Bereitstellung), um Ihre Anwendung auf Zielen wie virtuellen Serverinstanzen bereitzustellen, oder passen Sie den Bereitstellungsprozess mit der Option Benutzerdefiniert an.
  2. Klicken Sie auf Fortfahren, um die Clusterseite anzuzeigen.
  3. Geben Sie den IBM Cloud API-Schlüssel ein, um bei verschiedenen Aufgaben mit dem CLI-Tool zu interagieren. Hinweis Ein vorhandener Schlüssel kann durch Anklicken des Schlüsselsymbols aus einem Geheimnistresor importiert werden.
  4. Überprüfen Sie Ihre Cluster-Region, Ressourcengruppe, Cluster-Name, und Cluster-Namensraum Felder, in denen Ihr Zielcluster erstellt wird.
  5. Klicken Sie auf Weiter.

Änderungsanforderungsmanagement

  1. Wählen Sie das IBM Cloud gehostete Git Repos and Issue Tracking Repository, um die Änderungsanforderungen zu verwalten. Weitere Informationen finden Sie unter Automatisierung des Änderungsmanagements.
  2. Klicken Sie auf Weiter.

DevOps Insights Werkzeugkette

Verknüpfen Sie eine vorhandene DevOps Insights-Instanz aus einer anderen Toolchain mit dieser Pipeline, so dass alle Build-, Deploy- und Test-Datensätze aus den CI- und CD-Toolchain-Pipelines an derselben Stelle gesammelt werden können.

Die CD-Toolchain kann die Bereitstellungsdatensä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 in der DevOps Insights Toolchain-ID-Liste auswählen.

  1. Geben Sie Ihren DevOps Insights IBM Cloud API Key an.
  2. Übernehmen Sie die Standardkonfiguration.
  3. Überprüfen Sie Ihre Region, Ressourcengruppe, DevOps Insights toolchain ID, und DevOps Insights Zielumgebung Felder, in denen Ihre Zielumgebung erstellt wird.
  4. Klicken Sie auf Weiter.

Optionale Tools

Slack

Konfigurieren Sie den Slack, um Benachrichtigungen über Ihre Pull-Anfragen oder CI-Pipeline-Ereignisse zu erhalten. Sie können das Slack-Tool auch nach der Erstellung der Toolchain hinzufügen.

  1. Geben Sie Ihren Slack-Webhook ein. Weitere Informationen finden Sie unter Slack webhook.
  2. Geben Sie Ihren Slack-Kanal ein, um eine Nachricht zu veröffentlichen.
  3. Geben Sie den Namen des Slack-Teams ein. Wenn Ihr Team zum Beispiel URL https://team.slack.com heißt, lautet der Teamname team.
  4. Auswahl der Ereignisse, für die Sie Benachrichtigungen für Automatisierte Slack-Benachrichtigungen erhalten möchten.
  5. Klicken Sie auf Weiter.

Private Worker

Die Integration des Private-Worker-Tools für die Zustellungspipeline stellt eine Verbindung zu einem oder mehreren Private Workern her, die isoliert Zustellungspipeline-Workloads ausführen können. Weitere Informationen finden Sie im Abschnitt Mit Private Worker-Instanzen arbeiten.

  1. Geben Sie einen Namen für den privaten Mitarbeiter der Lieferungspipeline ein.
  2. Geben Sie Ihren Service ID API-Schlüssel ein.
    • Bevorzugt: Ein vorhandener Schlüssel kann durch Anklicken des Schlüsselsymbols aus einem Geheimnistresor importiert werden.
    • Ein vorhandener Schlüssel kann kopiert und eingefügt werden.
  3. Klicken Sie auf Weiter.

CD-Toolchain erstellen

  1. Klicken Sie auf der Seite 'Übersicht' auf Erstellen.
  2. Warten Sie die Erstellung der Toolchain ab, um die Übersichtsseite wie im Screenshot zu sehen. Dieser Vorgang kann einige Minuten in Anspruch nehmen.

DevSecOps CD-Toolchain erstellt
DevSecOps CD-Toolchain erstellt

Sie können die einzelnen Toolchain-Integrationen konfigurieren, nachdem die Pipeline erstellt wurde.

CD-Toolchain durchsuchen

Promotion-Pipeline ausführen

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

  1. Klicken Sie auf cd-pipeline.

  2. Klicken Sie auf Ausführen für die Manuelle Promotion Trigger Pipeline.

  3. Klicken Sie auf Ausführen, um die Pipeline zu starten.

  4. Klicken Sie auf Manueller Beförderungsauslöser > #1promotion-pipelinerun Pipeline. Warten Sie den Abschluss des Promotions-Pipeline-Laufs ab und prüfen Sie das Ausführungsprotokoll.

    Die Promotionspipeline erstellt eine Pull-Anforderung mit dem Inhalt des Inventars in der Quellumgebung des Inventars, z. B. master, die auf die Zielumgebung des Inventars abzielt, z. B. staging oder production.

  5. Nach erfolgreicher Beendigung der Promotion-Pipeline enthält das Aufgabenprotokoll promote einen Link zur Pull-Anforderung im Inventar-Repository. Der Name der Pull-Anfrage hat das Format promote <inventory source environment> to <inventory target environment>, zum Beispiel promote master to prod

  6. Ö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) Festgelegt als Critical, High, Moderate, Low oder Planning.
    • Change Request assignee: (obligatorisch) Email-ID des Auftragnehmers.
    • Zusätzliche Beschreibung: Beschreibung der Änderungen in der Anwendung.
    • Zweck/Ziel: Zweck der Änderungen, die an der Anwendung vorgenommen werden.
    • Erläuterung der Auswirkungen: Auswirkung der Änderung auf das Anwendungsverhalten oder die Umgebung.
    • Ausstiegsplan: Schritte für den Ausstieg bei einem Ausfall der Bereitstellung.
  7. Füllen Sie die Felder im Pull Request aus und klicken Sie auf Speichern.

  8. Fügen Sie das Label EMERGENCY zu Ihrem Pull-Request hinzu, wenn eine Konformitätsprüfung in CI fehlgeschlagen ist und Sie mit der Bereitstellung fortfahren

  9. Führen Sie den Pull-Request von Git Repos and Issue Tracking zusammen.

Die Details der Pull-Anforderung werden während der CD-Pipeline verwendet, die zum Erstellen und Aktualisieren des Repositorys für Änderungsanforderungen ausgeführt wird.

CD-Pipeline ausführen

Aktionspipeline ausführen

  1. Vergewissern Sie sich, dass die CI-Pipeline erfolgreich gelaufen ist, bevor Sie die Promotion Pipeline ausführen.

  2. Die Aktionspipeline erstellt ein Pull Request mit dem Inhalt des Bestands in der Bestandsquellenumgebung. Zum Beispiel: master Verzweigung, die auf die Verzweigung der Zielumgebung des Inventars abzielt, zum Beispiel staging oder prod. Es wird ein Zwischenzweig für die Pull-Anforderung erstellt, der gelöscht werden kann, nachdem die Pull-Anforderung zusammengeführt wurde.

    Ausführen der Promotion-Pipeline
    Ausführen der Promotion-Pipeline

  3. Nach erfolgreicher Beendigung der Aufgabe Promotion Pipeline erhalten Sie über die Aufgabe promote einen Link zu der zuvor erwähnten Aufgabe Pull Request im Inventar-Repository. Der Name der Pull-Anfrage hat das folgende Format:

    promote <Inventory Source Environment> to <Inventory Target Environment>
    
  4. Öffnen Sie die Pull Request in Ihrem Browser mit dem Link, der im Protokoll bereitgestellt wird. Füllen Sie die Abschnitte wie folgt aus:

    • Priorität: (obligatorisch) Eine von Kritisch, Hoch, Moderat, Niedrig, Planung
    • Änderungsanfragenverantwortlicher: (obligatorisch) E-Mail-ID des Verantwortlichen
    • Zusätzliche Beschreibung: Beschreibung zu den Änderungen in der Anwendung
    • Zweck: Zweck der Änderungen, die an der Anwendung vorgenommen werden
    • Erläuterung der Auswirkung: Auswirkung der Änderung auf das Anwendungsverhalten oder die Umgebung
    • Backout-Plan: Schritte für den Fall, dass die Bereitstellung fehlschlägt
  5. Füllen Sie die Felder für die Pull Request aus und speichern Sie die Angaben.

  6. Führen Sie die Pull Request von der Git Repos and Issue Tracking zusammen.

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

CD-Pipeline ausführen

Sie können eine CD-Pipeline auf manuelle oder automatische Weise auslösen. Sie können die CD-Pipeline jederzeit manuell auslösen, aber wenn sich seit der letzten erfolgreichen Bereitstellung keine Änderungen ergeben haben, wird die CD-Pipeline vorzeitig abgebrochen, da es nichts zu verteilen gibt. Ein Git Repos and Issue Tracking Auslöser ist eingerichtet, um die automatische CD-Pipeline auszulösen, ist aber standardmäßig deaktiviert und kann nach der ersten promotion.You können eine force-redeploy-Variable hinzufügen und verwenden, um die CD ohne Codeänderungen auszuführen. Sehen Sie sich die erfolgreiche Bildschirmaufnahme der DevSecOps CD-Pipeline an.

Manuelle Beförderung DevSecOps-CD-Pipeline
Manuelle Beförderung der DevSecOps-CD-Pipeline

Automatische Beförderung DevSecOps CD-Pipeline
Automatische Beförderung der DevSecOps-CD-Pipeline

Sie können die CD Pipeline auch jederzeit manuell auslösen, aber wenn sich seit der letzten erfolgreichen Implementierung keine Änderungen ergeben haben, wird in der CD Pipeline nichts Neues implementiert.

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

DevSecOps CD-Pipeline erfolgreich
DevSecOps CD-Pipeline erfolgreich

Ablauf der Tasks in der CD-Pipeline:

DevSecOps CD-Aufgaben
DevSecOps CD-Aufgaben

Nach einem erfolgreichen Lauf der CD-Pipeline können Sie die Beispielanwendung finden, die im prod-Namensraum ausgeführt wird. Die App-URL befindet sich unter dem Unterschritt run stage des Schritts prod deployment der CD-Pipeline-Ausführung. Verwenden Sie diese URL, um zu überprüfen, ob die App aktiv ist.

DevSecOps App läuft
DevSecOps-App läuft