Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
GILT FÜR: Alle API Management-Ebenen
Mit dem strategischen Wert von APIs im Unternehmen wurde die Einführung von DevOps Continuous Integration (CI) und continuous deployment (CD)-Techniken zu einem wichtigen Aspekt der API-Entwicklung. In diesem Artikel werden die Entscheidungen erörtert, die Sie treffen müssen, um DevOps-Prinzipien für die Verwaltung von APIs zu übernehmen.
API DevOps besteht aus drei Teilen:
Jeder Teil der API DevOps-Pipeline wird unten besprochen.
API-Definition
Ein API-Entwickler schreibt eine API-Definition, indem er eine Spezifikation, Einstellungen (z. B. Protokollierung, Diagnose und Backend-Einstellungen) und Richtlinien bereitstellt, die auf die API angewendet werden sollen. Die API-Definition stellt die Informationen bereit, die zum Bereitstellen der API in einem Azure API Management-Dienst erforderlich sind. Die Spezifikation basiert möglicherweise auf einer standardsbasierten API-Spezifikation (z . B. WSDL, OpenAPI oder GraphQL), oder sie kann mithilfe der Azure Resource Manager (ARM)-APIs definiert werden (z. B. eine ARM-Vorlage, die die API und Vorgänge beschreibt). Die API-Definition ändert sich im Laufe der Zeit und sollte als "Quellcode" betrachtet werden. Stellen Sie sicher, dass die API-Definition unter quellcoderechtlicher Kontrolle gespeichert ist und vor der Einführung über eine entsprechende Überprüfung verfügt.
Es gibt mehrere Tools, die bei der Erstellung der API-Definition helfen:
- Das Azure APIOps-Toolkit stellt einen Workflow bereit, der auf einem Git-Quellcodeverwaltungssystem (wie GitHub oder Azure Repos) aufbaut. Es verwendet einen Extraktor , um eine API-Definition zu erstellen, die dann von einem Herausgeber auf einen Ziel-API-Verwaltungsdienst angewendet wird. APIOps unterstützt derzeit REST- und GraphQL-APIs.
- Das dotnet-apim-Tool konvertiert eine wohlgeformte YAML-Definition in eine ARM-Vorlage für die spätere Bereitstellung. Das Tool konzentriert sich auf REST-APIs.
- Terraform ist eine Alternative zu Azure Resource Manager, um Ressourcen in Azure zu konfigurieren. Sie können eine Terraform-Konfiguration (zusammen mit Richtlinien) erstellen, um die API auf die gleiche Weise zu implementieren, wie eine ARM-Vorlage erstellt wird.
Sie können auch IDE-basierte Tools für Editoren wie Visual Studio Code verwenden, um die Artefakte zu erstellen, die zum Definieren der API erforderlich sind. Beispielsweise gibt es mehr als 90 Plug-Ins zum Bearbeiten von OpenAPI-Spezifikationsdateien auf dem Visual Studio Code Marketplace. Sie können auch Codegeneratoren verwenden, um die Artefakte zu erstellen. Mit der TypeSpec-Sprache können Sie Clouddienst-APIs und -Shapes definieren und hoch erweiterbar sein, mit Grundtypen, die API-Shapes beschreiben können, die zwischen REST, OpenAPI, gRPC und anderen Protokollen gemeinsam verwendet werden.
API-Zulassung
Sobald die API-Definition erstellt wurde, sendet der Entwickler die API-Definition zur Überprüfung und Genehmigung. Wenn Sie ein gitbasiertes Quellcodeverwaltungssystem (z. B. GitHub oder Azure Repos) verwenden, kann der Entwickler über Pull-Anforderung senden. Eine Pull-Anforderung informiert andere über Änderungen, die an der API-Definition vorgeschlagen wurden. Sobald die Freigabe-Gates bestätigt wurden, führt ein Genehmiger den Pull-Request in das Haupt-Repository zusammen, um zu bestätigen, dass die API-Definition in der Produktion bereitgestellt werden kann. Der Pull-Anforderung-Prozess befähigt den Entwickler, alle Probleme zu beheben, die während des Genehmigungsprozesses gefunden wurden.
Sowohl GitHub als auch Azure Repos ermöglichen es Ihnen, Genehmigungspipelines zu konfigurieren, die ausgeführt werden, wenn eine Pullanforderung übermittelt wird. Sie können die Genehmigungspipelines so konfigurieren, dass sie Tools wie die folgenden ausführen:
- API-Spezifikations-Linters wie Spectral, um sicherzustellen, dass die Definition den von der Organisation geforderten API-Standards entspricht.
- Erkennung von Breaking Changes mit Tools wie openapi-diff.
- Tools für Sicherheitsaudits und -bewertungen. OWASP verwaltet eine Liste von Tools für Sicherheitsscans.
- Automatisierte API-Testframeworks.
Hinweis
Azure-APIs müssen strengen Richtlinien entsprechen, die Sie als Ausgangspunkt für Ihre eigenen API-Richtlinien verwenden können. Es gibt eine Spectral-Konfiguration zur Durchsetzung der Richtlinien.
Sobald die automatisierten Tools ausgeführt wurden, wird die API-Definition vom menschlichen Auge überprüft. Tools werden nicht alle Probleme abfangen. Ein menschlicher Prüfer stellt sicher, dass die API-Definition die organisatorischen Kriterien für APIs erfüllt, einschließlich der Einhaltung von Sicherheits-, Datenschutz- und Konsistenzrichtlinien.
API-Veröffentlichung
Die API-Definition wird über eine Releasepipeline in einem API-Verwaltungsdienst veröffentlicht. Die zum Veröffentlichen der API-Definition verwendeten Tools hängen von dem Tool ab, das zum Erstellen der API-Definition verwendet wurde:
- Bei Verwendung des Azure APIOps-Toolkits enthält das Toolkit einen Herausgeber, der die API-Definition in den Zieldienst schreibt.
- Wenn Sie dotnet-apim verwenden, wird die API-Definition als ARM-Vorlage dargestellt. Aufgaben sind für Azure Pipelines und GitHub-Actions verfügbar, um eine ARM-Vorlage bereitzustellen.
- Wenn Sie Terraform verwenden, stellen CLI-Tools die API-Definition für Ihren Dienst bereit. Es sind Aufgaben für Azure Pipelines und GitHub Actions verfügbar.
Kann ich andere Quellcodeverwaltungs- und CI/CD-Systeme verwenden?
Ja. Der beschriebene Prozess funktioniert mit jedem Quellcode-Kontrollsystem (obwohl APIOps erfordert, dass das Quellcode-Kontrollsystem Git-basiert ist). Ebenso können Sie jede CI/CD-Plattform verwenden, solange sie durch ein Einchecken ausgelöst werden kann, und Befehlszeilentools ausführen, die mit Azure kommunizieren.
Bewährte Methoden
Es gibt keinen Industriestandard zum Einrichten einer DevOps-Pipeline zum Veröffentlichen von APIs, und keines der genannten Tools funktioniert in allen Situationen. Die meisten Situationen werden jedoch durch die Verwendung einer Kombination der folgenden Tools und Dienste abgedeckt:
- Azure Repos speichert die API-Definitionen in einem Git-Repository.
- Azure Pipelines führt die automatisierten API-Genehmigungs- und API-Veröffentlichungsprozesse aus.
- Das Azure APIOps-Toolkit bietet Tools und Workflows zum Veröffentlichen von APIs.
Wir haben den größten Erfolg bei Kundeneinführungen mithilfe der folgenden Methoden gesehen:
- Richten Sie entweder GitHub oder Azure Repos für Ihr Quellcodeverwaltungssystem ein. Diese Auswahl bestimmt auch Ihre Auswahl des Pipeline-Ausführers. GitHub kann Azure Pipelines oder GitHub Actions verwenden, während Azure Repos Azure Pipelines verwenden muss.
- Richten Sie für jeden API-Entwickler einen Azure API Management-Dienst ein, damit er zusammen mit dem API-Dienst API-Definitionen entwickeln kann. Verwenden Sie beim Erstellen des Diensts die Verbrauchs- oder Entwickler-SKU.
- Verwenden Sie Richtlinienfragmente, um die neue Richtlinie zu reduzieren, die Entwickler für jede API schreiben müssen.
- Verwenden Sie benannte Werte und Back-Ends, um sicherzustellen, dass Richtlinien generisch sind und auf jede API Management-Instanz angewendet werden können.
- Verwenden Sie das Azure APIOps-Toolkit, um eine funktionierende API-Definition aus dem Entwicklerdienst zu extrahieren.
- Richten Sie einen API-Genehmigungsprozess ein, der bei jeder Pull-Anforderung ausgeführt wird. Der API-Genehmigungsprozess sollte Breaking Change Detection, Linting und automatisierte API-Tests umfassen.
- Verwenden Sie den Azure APIOps-Toolkit-Herausgeber, um die API in Ihrem API Management-Produktionsdienst zu veröffentlichen.
Weitere Informationen zum Konfigurieren und Ausführen einer CI/CD-Bereitstellungspipeline mit APIOps finden Sie unter Automatisierte API-Bereitstellungen mit APIOps im Azure Architecture Center.
References
- Azure DevOps Services umfasst Azure Repos und Azure Pipelines.
- Das Azure APIOps-Toolkit bietet einen Workflow für API Management DevOps.
- Spectral stellt einen Linter für OpenAPI-Spezifikationen bereit.
- openapi-diff bietet einen Breaking-Change-Detektor für OpenAPI v3-Definitionen.