Einrichten von Tekton-Pipelines für die kontinuierliche Integration mit DevSecOps
Mit diesem Tutorial können Sie die Tekton-Pipeline für kontinuierliche Integration (CI) einrichten und Ihre Toolchain mit Compliance erstellen.
Vorbereitende Schritte
-
Erstellen Sie einen Kubernetes-Cluster auf IBM Cloud® Kubernetes Service, um Ihre Anwendung bereitzustellen (*).
-
Installieren Sie die IBM Cloud CLI auf Ihrem Betriebssystem, um mit IBM Cloud Ressourcen zu interagieren.
-
Erstellen Sie einen Artefaktsignierschlüssel mit der richtigen Kodierung, um Ihre Anwendungs-Docker-Artefakte zu signieren.
-
Erstellen Sie Toolchain-Geheimnisse, um auf verschiedene Integrationen zuzugreifen und diese zu sichern.
-
Konfigurieren IBM Cloud® Object Storage als Archiv für Compliance-Nachweise zur dauerhaften Aufbewahrung von Nachweisen über die Durchführung von Leitungsarbeiten.
-
Überprüfen Sie Ihre IBM Cloud® Identity and Access Management(IAM)-Berechtigungen, die den entsprechenden Integrationen zugewiesen sind.
(*) Kubernetes cluster: nur während der Einrichtung erforderlich - kann nach der Erstellung der Toolchain geändert werden. Es ist nicht zwingend erforderlich, einen eigenen Cluster zu erstellen, insbesondere wenn ein anderes Bereitstellungsziel verwendet wird (wie CodeEngine ). Sie können einen IBM Cloud API-Schlüssel eingeben, mit dem Sie auf jeden Cluster zugreifen können.
Die CI-Pipeline verwendet den GaraSign Code Signing Service, um Build-Artefakte zu signieren, die eine Registrierung und ein Onboarding erfordern. GaraSign verwendet das interne Netz IBM. Der Zugang zu diesem Netz ist innerhalb der gemeinsam genutzten Arbeitsplätze von IBM möglich, die über einen Netzzugang verfügen. IBM können gemeinsam genutzte Arbeitsplätze mit Zugang zum internen Netz 9.X genutzt werden.
- Sehen Sie sich das folgende Video an:
Setup der CI-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.
- Siehe „ Infrastructure as Code “.
- Klicken Sie auf die Kachel CI - Entwickeln Sie eine sichere Infrastruktur als Code 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 in das IBM Cloud ein.
-
Wählen Sie eine Region aus aus der Dropdown-Liste.
-
Wählen Sie eine Ressourcengruppe aus 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 Assistenten 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 zeigen Ihnen standardmäßig die Mindestkonfiguration an. Erfahrene Benutzer, die eine detailliertere Steuerung benötigen, können jedoch auf die Umschaltfläche „Zur erweiterten Konfiguration wechseln“ klicken, um die Optionen für die zugrunde liegende Integration anzuzeigen.
Integrationen von CI-Tools einrichten
Überprüfen Sie die Standardeinstellungen und stellen Sie die benutzerdefinierten Konfigurationen bereit, wo immer dies zur Einrichtung der CI-Tool-Integration erforderlich ist. Konfigurieren Sie während des Setups mehrere Repositories. Sie können die Beispiel-Repositories klonen oder Ihre eigenen verwenden, aber die Toolchain unterstützt nur die Verknüpfung mit den vorhandenen Git Repos and Issue Tracking Repositories.
Anwendung
Überprüfen Sie die Standardinformationen für die Toolchain-Einstellungen:
- Sie können die in der Vorlage enthaltene Standardkonfiguration übernehmen.
- Klicken Sie auf „Weiter“
Bestand
Im Bestandsrepository werden Details zu Artefakten aufgezeichnet, die von den CI-Toolchains erstellt werden.
- 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.
- 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.
- 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 Art der Autorisierung aus der Dropdown-Liste aus.
- Klicken Sie auf Weiter.
Nachweisspeicher
Das Evidence Repository speichert alle Beweise und Artefakte, die von der DevSecOps CI-Pipeline erzeugt werden.
- Schalten Sie den IBM Cloud Object Storage Bucket-Schieberegler um, um alle Beweise im IBM Cloud Object Storage Bucket zu speichern, der auf der nächsten Seite konfiguriert werden kann.
- Übernehmen Sie die Standardeinstellungen.
- 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 Compliance Evidence Locker fungiert.
- 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 Inventarziel und den Cluster „ Kubernetes “, in dem die Anwendung bereitgestellt ist:
-
Der Standardname der App lautet „
hello-compliance-app“. -
Geben Sie Ihren API-Schlüssel für „ IBM Cloud “ ein. Der API-Schlüssel wird bei verschiedenen Aufgaben für die Interaktion mit dem CLI-Tool „ IBM Cloud “ 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 durch Klicken auf „Neu +“ ein neuer Schlüssel erstellt werden.
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 an Ihre Konfiguration anpassen.
-
Klicken Sie auf Weiter.
Artefaktsignierung
Die Artefakte werden von der Toolchain erstellt und in das Inventar aufgenommen und müssen signiert werden, bevor sie in der Produktion eingesetzt werden. Die Pipeline verwendet Skopeo als Standardwerkzeug, um die Artefaktsignierung zu ermöglichen. Sie können einen vorhandenen GPG-Schlüssel verwenden oder ein neues GPG-Schlüsselpaar erstellen.
- Geben Sie den GnuPG Private Key ein. Alternativ können Sie auch einen neuen GPG-Schlüssel erstellen, indem Sie auf NEU klicken. Weitere Informationen finden Sie unter Generieren eines GPG-Schlüssels.
- Klicken Sie auf Weiter.
DevOps Insights
Die IBM Cloud DevOps Insights ist in der Toolchain enthalten. Zeigen Sie Ihre Pipeline-Testergebnisse für jeden Build, für jede Bereitstellung und jede Umgebung an.
- Übernehmen Sie die Standardkonfiguration.
- 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.
- Gib deinen 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 beispielsweise 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.
Gemeinsame DevOps Insights Toolchain
DevOps Insights kann optional in die erstellte Toolchain aufgenommen werden, und nach jeder Konformitätsprüfung werden die Nachweise veröffentlicht. Die Toolchain kann eine vorhandene „ DevOps Insights “-Instanz nutzen, um die Bereitstellungsdatensätze in Insights zu veröffentlichen. Sie können die „ DevOps Insights “-Integration aus einer anderen Toolchain heraus 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. Die „ URL “ einer Toolchain folgt diesem Muster: https://cloud.ibm.com/devops/toolchains/<toolchain-ID-comes-here>?env_id=ibm:yp:us-south. Wenn die URL
„ URL “ lautet: https://cloud.ibm.com/devops/toolchains/aaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee?env_id=ibm:yp:us-south, dann lautet die ID der Toolchain: 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 von „ DevOps Insights “ festlegen. Dieser Parameter ist optional und wird anstelle der Zielumgebung aus dem Inventar verwendet.
DevOps Insights
Sie können eine Instanz von DevOps Insights erstellen, die für die Toolchain verwendet wird. Wenn keine Konfiguration erforderlich ist, verwendet die CI-Pipeline automatisch die Insights-Instanz, die in der Toolchain enthalten ist.
Delivery Pipeline Private Worker
Artefakte, die von der Toolchain erstellt und in das Inventar aufgenommen werden, müssen mit GaraSign, signiert werden, einem Code Signing Service, der von Garantir betrieben wird, bevor die Images in der Produktion eingesetzt werden können. Um die GaraSign Artefaktsignierung zu aktivieren, benötigen Sie einen TaaS privaten Mitarbeiter und ein IBM CISO Signierzertifikat.
Das Delivery Pipeline Private Worker Tool Integration stellt eine Verbindung zu einem oder mehreren Private Workern her, die Delivery Pipeline Workloads isoliert ausführen können.
SonarQube
Konfigurieren Sie SonarQube als Werkzeug für die statische Codeanalyse für die Toolchain. SonarQube bietet eine Übersicht über den Gesamtzustand und die Qualität Ihres Quellcodes und markiert Probleme, die in neuem Code gefunden werden. Die statischen Code-Analysatoren erkennen knifflige Fehler wie Null-Zeiger-Dereferenzen, Logikfehler und Ressourcenlecks in verschiedenen Programmiersprachen.
- Übernehmen Sie die Standardkonfiguration.
- Klicken Sie auf Weiter.
CI-Toolchain erstellen
- Klicken Sie auf der Seite 'Übersicht' auf Erstellen.
- Warten Sie auf die Erstellung der Toolchain. Dieser Vorgang kann einige Minuten in Anspruch nehmen.
CI-Toolchain erkunden
Nun ist die CD-Toolchain mit zwei Pipelines erstellt, wie im Screenshot zu sehen ist. Klicken Sie auf die Kachel ci-pipeline, um die Werbepipeline zu öffnen und auszuführen.
Führen Sie die PR-CI-Pipeline aus
Um den „ ci-pr pipeline “ zu starten, müssen Sie in Ihrem Anwendungs-Repository einen Merge-Request erstellen.
-
Klicken Sie auf der Seite der CI-Toolchain auf die Kachel
pr pipeline. Standardmäßig wird sie mit dem Namencompliance-app-<timestamp>erstellt. -
Erstellen Sie einen Zweig aus dem Master-Zweig.
-
Aktualisieren Sie den Code in der Anwendung oder fügen Sie eine Readme-Datei hinzu, und speichern Sie die Änderungen.
-
Merge-Anfrage einreichen.
-
Klicken Sie auf der Seite „CI-Toolchain“ auf die Kachel „ pr-pipeline “. Überprüfen Sie, ob die
ci-pr pipelinedurch die Erstellung der Zusammenführungsanfrage ausgelöst wird. -
Warten Sie, bis der „
ci-pr pipeline“-Lauf abgeschlossen ist. Der entsprechende Zusammenführungsantrag in Ihrem Anwendungs-Repository befindet sich im ZustandPending, bis alle Phasen der PR-Pipeline erfolgreich abgeschlossen sind. -
Wenn der PR-Pipeline-Lauf erfolgreich war, klicken Sie auf die Pipeline, um die zahlreichen abgeschlossenen Schritte zu prüfen und die Seite anzuzeigen. Um den Zusammenführungsantrag zu bearbeiten und erneut einzureichen, folgen Sie den Schritten 3 bis 7.
DevSecOps PR-Pipeline erfolgreich
Vereinfachter Ablauf von Aufgaben in der Pipeline
Im DevSecOps PR-Pipeline-Aufgabenfluss werden die Utility-Aufgaben weggelassen. Zum Beispiel die Aktualisierung des Status auf GitHub, das Abrufen von Anmeldeinformationen und so weiter. In der Welt von DevSecOps ist Shift Left eine Praxis, die Probleme wie Defekte und Sicherheitslücken verhindert und findet. Wie in der Abbildung dargestellt, führt Shift Left auch früh im Softwareauslieferungsprozess Konformitätsprüfungen durch.
- Prüfungen, die auf den Code/das Repository angewendet werden können und die nicht gebaut werden müssen. Das Artefakt sollte so früh wie möglich ausgeführt werden, um zu verhindern, dass nicht konformer Code in den Hauptzweig des Repositorys eingebunden wird. Die Beweise werden nicht in der PR-Pipeline gesammelt. Ziel der Pipeline ist es, die Überprüfung der Einhaltung der Vorschriften so weit wie möglich nach links zu verlagern.
- Alle Prüfungen werden durchgeführt, wenn eine Pipeline läuft. Selbst wenn eine vorherige Prüfung fehlschlägt, läuft die Pipeline zur nächsten weiter. Um festzustellen, ob bei Ihrem Lauf Fehler aufgetreten sind, müssen Sie den letzten Schritt Ihrer Pipeline überprüfen, der einen Pipeline-Evaluator enthält.
- Wenn Sie versuchen, eine Notfallkorrektur zusammenzuführen und die Konformitätsprüfungen umgehen wollen. Fügen Sie Ihrer Zusammenführungsanforderung ein Etikett hinzu, um die Korrektur zu kennzeichnen. Bei der Ausführung der CD-Pipeline muss dasselbe Label angegeben werden.
PR-Pipeline ausführen
Sie können die CI-Pipeline auf eine der folgenden Arten starten:
- Automatisch: Nach einer erfolgreich ausgeführten PR-Pipeline, durch Freigeben und Zusammenführen der Pull-Anforderung mit dem Masterzweig.
- Manuell: Um die CI-Pipeline manuell auszulösen, wählen Sie die Karte der Bereitstellungspipeline aus, klicken Sie auf „ Pipeline ausführen “ und wählen Sie „ Manueller Trigger “.
In diesem Tutorial wurde die CI-Pipeline ausgelöst, nachdem Sie Ihre Codeänderungen in den Master-Zweig Ihres Anwendungs-Repositorys zusammengeführt hatten.
- Klicken Sie auf der Seite „ CI-Toolchain “ auf die Kachel „ ci-pipeline “.
- Klicken Sie auf Ausführen neben dem Namen Ihrer Pipeline. Beobachten Sie, dass ein Pipelinelauf läuft. Warten Sie, bis der Pipeline-Lauf abgeschlossen ist.
- Nachdem die CI-Pipeline erfolgreich ausgeführt wurde, klicken Sie auf die Pipeline, um die abgeschlossenen Schritte zu erkunden und die Seite wie im Screenshot zu sehen.
CI-Pipeline ausführen
In diesem Dokument wurde die CI-Pipeline ausgelöst, nachdem Sie Ihre Codeänderungen in den Master-Zweig Ihres Anwendungs-Repositorys zusammengeführt hatten.
- Klicken Sie auf der Seite „CI-Toolchain“ auf die Kachel „ ci-pipeline “.
- Beobachtung: Eine Ausführung der Pipeline ist aktiv. Warten Sie, bis die Ausführung der Pipeline abgeschlossen ist.
Nachdem die CI-Pipeline erfolgreich ausgeführt wurde, können Sie auf die Pipeline-Aufgaben klicken, um die abgeschlossenen Schritte anzuzeigen.
Vereinfachter Ablauf von Aufgaben in der Pipeline
Im DevSecOps CI-Pipeline-Aufgabenfluss werden die Utility-Aufgaben weggelassen. Zum Beispiel die Aktualisierung des Status auf GitHub, das Abrufen von Anmeldeinformationen und so weiter. Grün dargestellte Tasks geben Nachweise aus.
Die bei allen Konformitätsprüfungen in der CI-Pipeline gesammelten Nachweise werden in das Repository „evidence-locker“ übertragen, das bei der Einrichtung der Toolchain bereitgestellt wurde. Die von CI bereitgestellten Belege sind unter
raw/ci/<pipeline-run-id>/*.json zu finden.
Die Nachweise werden in der Instanz „ DevOps Insights “ innerhalb der Toolchain veröffentlicht. Sie können durch Anklicken der Werkzeugkarte DevOps Insights in der Werkzeugkette navigieren. Die erfassten Nachweise können Sie auf der Seite 'Qualitätsdashboard' überprüfen.
Um festzustellen, ob bei der Ausführung Ihrer Pipeline Fehler aufgetreten sind, müssen Sie den letzten Schritt Ihrer Pipeline überprüfen, der einen Pipeline-Evaluator enthält.
Aktive Anwendung anzeigen
Nach einem erfolgreichen Durchlauf der CI-Pipeline wird die Beispielanwendung auf Ihrem „ Kubernetes “-Cluster bereitgestellt und läuft im Dev-Namespace.
Die Anwendung „ URL “ ist am Ende des Protokolls im Schritt „ run stage “ der Aufgabe „ deploy-dev “ des CI-Pipeline-Laufs zu finden. Verwenden Sie die URL URL, um zu überprüfen, ob die Anwendung läuft.
Pipeline konfigurieren
So fügen Sie eine commit-id Texteigenschaft hinzu.
- Klicken Sie auf Eigenschaft hinzufügen.
- Wählen Sie den Eintrag Texteigenschaft aus.
Wenn Sie die Pipeline manuell ohne commit-id auslösen, nimmt die Pipeline die letzte Commit-ID aus dem Master-Zweig Ihrer Anwendung.
Beispiel
So fügen Sie die Auslöserparameter hinzu.
- Klicken Sie auf Pipeline ausführen.
- Wählen Sie „ Manueller Auslöser “.
- Klicken Sie auf Run.