Hinweis:
- Dieses Tutorial erfordert Zugriff auf Oracle Cloud. Informationen zum Anmelden für einen kostenlosen Account finden Sie unter Erste Schritte mit Oracle Cloud Infrastructure Free Tier.
- Es verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, -Mandanten und -Compartments. Wenn Sie Ihre Übung abgeschlossen haben, ersetzen Sie diese Werte durch die Werte, die für Ihre Cloud-Umgebung spezifisch sind.
Stellen Sie Ihre Anwendung mit der OCI DevOps CI/CD-Pipeline auf Kubernetes bereit
Einführung
Oracle Cloud Infrastructure (OCI) DevOps Service ist eine vollständige CI/CD-Plattform (Continuous Integration/Continuous Delivery), mit der Entwickler ihren Softwareentwicklungslebenszyklus vereinfachen und automatisieren können. Mit dem OCI DevOps-Service können Entwickler und Operatoren gemeinsam Software entwickeln, erstellen, testen und bereitstellen.
Ziele
- Erfahren Sie, wie Sie die OCI DevOps-Build-Pipeline verwenden.
- Stellen Sie eine einfache NodeJs-Anwendung mit CI/CD-Pipeline auf Kubernetes bereit.
Voraussetzungen
- Erstellen Sie ein Thema, damit der DevOps-Service für wichtige Ereignisse aus Pipelineläufen Nachrichten an dieses Benachrichtigungsthema senden kann.
- Erstellen und richten Sie Container Engine for Kubernetes ein, auf dem die Anwendung bereitgestellt wird.
- Erstellen Sie eine OCI-Container-Registry für das Pushing des Anwendungsimages.
- Erstellen Sie eine Artifact Registry zum Speichern von Artefakten.
- Erstellen Sie eine Loggruppe, um das Logging für Build-Pipelines zu aktivieren.
Aufgabe 1: OCI-DevOps-Projekt einrichten
-
Klicken Sie unter DevOps Service auf DevOps-Projekt erstellen. Geben Sie den Projektnamen ein, und wählen Sie das Thema aus, das Sie zuvor erstellt haben.
Nach dem Erstellen des Projekts wird die Liste der verfügbaren Optionen im OCI DevOps-Service angezeigt.
-
Klicken Sie auf Code-Repository, und geben Sie den Repository-Namen ein. Richten Sie das Code-Repository ein, und laden Sie Anwendungsdateien in das Repository hoch.
-
Erstellen Sie Dockerfile, um das Docker-Image der NodeJS-Anwendung zu erstellen und in das Code-Repository zu übertragen.
FROM node:16 # Create app directory WORKDIR /usr/src/app # Install app dependencies COPY package*.json ./ RUN npm install # Bundle app source COPY . . EXPOSE 3000 CMD [ "node", "index.js" ]
-
Erstellen Sie eine Build-Spezifikationsdatei mit dem Namen
build_spec.yaml
. Übertragen Sie diese Datei in das Root-Verzeichnis des Repositorys.version: 0.1 component: build timeoutInSeconds: 6000 runAs: root shell: bash steps: - type: Command timeoutInSeconds: 1200 name: "Build container image" command: | d ${OCI_WORKSPACE_DIR}/node_app docker build -t myapp:v1.0 . outputArtifacts: - name: myapp-image type: DOCKER_IMAGE location: myapp:v1.0
-
Eine Build-Pipeline enthält die Phasen, die den Build-Prozess für das erfolgreiche Kompilieren, Testen und Ausführen von Softwareanwendungen vor dem Deployment definieren. Klicken Sie auf Build-Pipeline erstellen, und geben Sie einen Namen ein.
-
Klicken Sie unter der erstellten Build-Pipeline auf Phase hinzufügen, und wählen Sie Build-Phase verwalten aus.
-
Geben Sie den Phasennamen ein, und fügen Sie das primäre Code-Repository hinzu.
-
Wählen Sie als OCI-Code-Repository den Verbindungstyp aus, und wählen Sie das Code-Repository aus, in dem der Anwendungscode vorhanden ist.
-
Klicken Sie auf Wählen.
-
Klicken Sie auf Hinzufügen.
-
-
Klicken Sie auf Artefakt hinzufügen. Geben Sie den Typ als Containerimage-Repository an, und geben Sie den vollqualifizierten Pfad der zuvor erstellten Registry an.
-
Diese Phase überträgt das Anwendungsimageartefakt in die Container-Registry. Fügen Sie in der vorab erstellten Build-Pipeline eine weitere Phase vom Typ Artefakte übermitteln hinzu. Klicken Sie auf Artefakt(e) auswählen, und wählen Sie das erstellte Artefakt aus.
-
Geben Sie Konfigurations-/Ergebnisartefaktnamen erstellen als Myapp-Image an, weil wir diesen Artefaktnamen in der Datei
build_spec.yaml
angegeben haben. -
Klicken Sie auf Hinzufügen.
-
-
Erstellen Sie die Datei
manifest.yaml
wie folgt, um den Anwendungscontainer auf Kubernetes bereitzustellen. Laden Sie diese Manifestdatei in die erstellte Artefakt-Registry hoch.kind: Namespace apiVersion: v1 metadata: name: default apiVersion: apps/v1 kind: Deployment metadata: name: myapp-deployment namespace: default spec: selector: matchLabels: app: node-app replicas: 2 template: metadata: labels: app: node-app spec: containers: - name: node-app image: iad.ocir.io/orasenatdpltintegration03/demo-registry:latest imagePullPolicy: Always ports: - name: containerport containerPort: 8080 protocol: TCP --- apiVersion: v1 kind: Service metadata: name: myapp-service namespace: default annotations: oci.oraclecloud.com/load-balancer-type: "lb" spec: type: LoadBalancer ports: - name: nodejs-port port: 80 targetPort: 3000 protocol: TCP selector: app: node-app
-
Klicken Sie auf Umgebung erstellen. Geben Sie den Namen an, und wählen Sie auf der Detailseite für die Umgebung das OKE-Cluster aus, auf dem die Anwendung bereitgestellt wird.
-
Dieses Manifest zu Artefakten hinzufügen. Klicken Sie auf Artefakt hinzufügen, und wählen Sie den Typ als Kubernetes-Manifest aus. Wählen Sie das zuvor erstellte Artefakt-Registry-Repository aus. Manifestdatei als Artefakt auswählen. Füllen Sie das Formular aus, wie im folgenden Bild gezeigt.
-
Klicken Sie auf Deployment-Pipeline erstellen, und geben Sie einen Namen an. Fügen Sie den Phasentyp Manifest auf Ihr Kubernetes-Cluster anwenden hinzu. Wählen Sie die Umgebung und das Artefakt aus, die in den vorherigen Schritten erstellt wurden.
-
Fügen Sie der erstellten Build-Pipeline eine dritte Phase hinzu. Wählen Sie als Phasentyp Deployment auslösen aus. Geben Sie den Phasennamen an, und wählen Sie die erstellte Deployment-Pipeline aus.
-
Klicken Sie auf Logs, um die Build-Pipeline zu starten. Geben Sie die Loggruppe an, unter der Logs gespeichert werden, und klicken Sie auf Log aktivieren.
-
Die Build-Pipeline wird im folgenden Image angezeigt. Klicken Sie auf Manuelle Ausführung starten, um die Pipeline auszuführen.
Die Pipeline wurde erfolgreich ausgeführt. Ein Load Balancer wird erstellt, weil wir für den Zugriff auf die Anwendung den Load Balancer-Typservice verwendet haben. Um auf die Anwendung zuzugreifen, können Sie auf die öffentliche IP-Adresse des erstellten Load Balancers zugreifen.
Verwandte Links
- DevOps-Service
- DevOps Servicedokumentation
- Überblick über Container Engine for Kubernetes
- Überblick über Container Registry
- Artifact Registry - Überblick
- Logging - Überblick
- Themen und Abonnements verwalten
Danksagungen
- Autor: Nikhil Khandelwal (Enterprise Cloud Architect)
Weitere Lernressourcen
Sehen Sie sich andere Übungen zu docs.oracle.com/learn an, oder greifen Sie auf weitere kostenlose Lerninhalte im Oracle Learning YouTube-Kanal zu. Besuchen Sie außerdem die Website education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.
Produktdokumentation finden Sie im Oracle Help Center.
Deploy your application using OCI DevOps CI/CD pipeline on Kubernetes
F77637-01
February 2023
Copyright © 2023, Oracle and/or its affiliates.