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
- Erstellen Sie einen Kubernetes-Cluster auf IBM Cloud® Kubernetes Service, um Ihre Anwendung einzusetzen.
- Erstellen Sie geheime Toolchain-Schlüssel, um auf verschiedene Integrationen zuzugreifen und sie zu schützen.
- Compliance Continuous Integration(CI)Toolchain konfiguriert mit IBM Cloud® DevOps Insights Integrationen.
- Optional. Konfigurieren Sie IBM Cloud® Object Storage als Schließfach für Compliance-Nachweise, um Nachweise für Pipeline-Läufe zu speichern.
- Überprüfen Sie Ihre IBM Cloud® Identity and Access Management(IAM)-Berechtigungen, die den entsprechenden Integrationen zugewiesen sind.
- Sehen Sie sich das folgende Video an, um einen Überblick über den Einrichtungsprozess der CD-Toolchain zu erhalten.
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.
- Klicken Sie in der Cloud- IBM Cloud auf das Menüsymbol
> Plattformautomatisierung > Toolchains.
- Klicken Sie auf der Seite 'Toolchains' auf die Option Toolchain erstellen.
- 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.
-
Klicken Sie auf Starten.
-
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.
-
Wählen Sie eine Region aus der Dropdown-Liste.
Die Region der Toolchain kann sich von der Region des Clusters und der Registry unterscheiden.
-
Wählen Sie eine Ressourcengruppe aus der Dropdown-Liste.
-
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.
- Sie können die in der Vorlage enthaltene Standardkonfiguration übernehmen.
- Klicken Sie auf Weiter.
Probleme
Das Issues-Repository zeichnet Probleme auf, die während der Ausführung der CI-Pipeline gefunden werden.
- Sie können die in der Vorlage enthaltene Standardkonfiguration übernehmen.
- 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.
-
Ü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.
-
Geben Sie einen neuen Repository-Namen ein.
-
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.
- 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.
- Geben Sie Ihren Secrets Manager Instanznamen ein.
- Wählen Sie die Berechtigungsart aus der Dropdown-Liste aus.
- Klicken Sie auf Weiter.
Nachweisspeicher
Der Evidence Locker speichert alle Evidenzen und Artefakte, die von der DevSecOps CI-Pipeline erzeugt werden.
- Wählen Sie eine Vorhandene Asservatenkammer verwenden.
- 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.
- Schalten Sie den IBM Cloud Object Storage Schieberegler um, um alle Beweise im IBM Cloud Object Storage Schaufel zu speichern.
- 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.
- Die Felder Cloud Object Storage instance, Bucket name und Cloud Object Storage endpoint werden automatisch ausgefüllt.
- 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.
- 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:
-
Der Standardname der App ist
hello-compliance-app. -
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.
-
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.
-
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
- Ü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.
- Klicken Sie auf Fortfahren, um die Clusterseite anzuzeigen.
- 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.
- Überprüfen Sie Ihre Cluster-Region, Ressourcengruppe, Cluster-Name, und Cluster-Namensraum Felder, in denen Ihr Zielcluster erstellt wird.
- Klicken Sie auf Weiter.
Änderungsanforderungsmanagement
- 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.
- 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.
- Geben Sie Ihren DevOps Insights IBM Cloud API Key an.
- Übernehmen Sie die Standardkonfiguration.
- Überprüfen Sie Ihre Region, Ressourcengruppe, DevOps Insights toolchain ID, und DevOps Insights Zielumgebung Felder, in denen Ihre Zielumgebung erstellt wird.
- Klicken Sie auf Weiter.
Verknüpfung mit der bestehenden DevOps Insights Toolchain
DevOps Insights kann optional in die erstellte Toolchain aufgenommen werden und nach jeder Konformitätsprüfung wird ein Nachweis veröffentlicht. Die Toolchain kann eine vorhandene DevOps Insights-Instanz verwenden, um die Bereitstellungsdatensätze für Insights zu veröffentlichen. Sie können DevOps Insights Integration von einer anderen Toolchain verknüpfen, indem Sie die Integrations-ID angeben.
- Übernehmen Sie die Aktuelle Toolchain.
- Klicken Sie auf Weiter.
Sie können die Toolchain-ID aus der URL Ihrer Toolchain kopieren. Eine Toolchain URL folgt diesem Muster: https://cloud.ibm.com/devops/toolchains/<toolchain-ID-comes-here>?env_id=ibm:yp:us-south. Wenn die URL lautet: https://cloud.ibm.com/devops/toolchains/aaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee?env_id=ibm:yp:us-south dann ist die ID der Werkzeugkette: aaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee. Geben Sie nur die ID an, nicht die vollständige URL.
Sie können auch eine Zielumgebung für die Interaktionen auf DevOps Insights festlegen. Dieser Parameter ist optional und wird anstelle der Zielumgebung aus dem Inventar verwendet.
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.
- Geben Sie Ihren Slack-Webhook ein. Weitere Informationen finden Sie unter Slack webhook.
- Geben Sie Ihren Slack-Kanal ein, um eine Nachricht zu veröffentlichen.
- Geben Sie den Namen des Slack-Teams ein. Wenn Ihr Team zum Beispiel URL
https://team.slack.comheißt, lautet der Teamnameteam. - Auswahl der Ereignisse, für die Sie Benachrichtigungen für Automatisierte Slack-Benachrichtigungen erhalten möchten.
- 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.
- Geben Sie einen Namen für den privaten Mitarbeiter der Lieferungspipeline ein.
- 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.
- Klicken Sie auf Weiter.
CD-Toolchain erstellen
- Klicken Sie auf der Seite 'Übersicht' auf Erstellen.
- Warten Sie die Erstellung der Toolchain ab, um die Übersichtsseite wie im Screenshot zu sehen. Dieser Vorgang kann einige Minuten in Anspruch nehmen.
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.
-
Klicken Sie auf cd-pipeline.
-
Klicken Sie auf Ausführen für die Manuelle Promotion Trigger Pipeline.
-
Klicken Sie auf Ausführen, um die Pipeline zu starten.
-
Klicken Sie auf Manueller Beförderungsauslöser >
#1promotion-pipelinerunPipeline. 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.stagingoderproduction. -
Nach erfolgreicher Beendigung der Promotion-Pipeline enthält das Aufgabenprotokoll
promoteeinen Link zur Pull-Anforderung im Inventar-Repository. Der Name der Pull-Anfrage hat das Formatpromote <inventory source environment> to <inventory target environment>, zum Beispielpromote master to prod -
Ö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,LowoderPlanning. - Change Request assignee: (obligatorisch)
Email-IDdes 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.
- Priorität: (obligatorisch) Festgelegt als
-
Füllen Sie die Felder im Pull Request aus und klicken Sie auf Speichern.
-
Fügen Sie das Label
EMERGENCYzu Ihrem Pull-Request hinzu, wenn eine Konformitätsprüfung in CI fehlgeschlagen ist und Sie mit der Bereitstellung fortfahren -
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
-
Vergewissern Sie sich, dass die CI-Pipeline erfolgreich gelaufen ist, bevor Sie die
Promotion Pipelineausführen. -
Die Aktionspipeline erstellt ein
Pull Requestmit dem Inhalt des Bestands in der Bestandsquellenumgebung. Zum Beispiel:masterVerzweigung, die auf die Verzweigung der Zielumgebung des Inventars abzielt, zum Beispielstagingoderprod. 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 -
Nach erfolgreicher Beendigung der Aufgabe
Promotion Pipelineerhalten Sie über die Aufgabepromoteeinen Link zu der zuvor erwähnten AufgabePull Requestim Inventar-Repository. Der Name der Pull-Anfrage hat das folgende Format:promote <Inventory Source Environment> to <Inventory Target Environment> -
Öffnen Sie die
Pull Requestin 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
-
Füllen Sie die Felder für die
Pull Requestaus und speichern Sie die Angaben. -
Führen Sie die
Pull Requestvon 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.
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:
Ablauf der Tasks in der CD-Pipeline:
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.