Hinweis:

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

Voraussetzungen

Aufgabe 1: OCI-DevOps-Projekt einrichten

  1. 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.

    DevOps-Projekt erstellen

    Nach dem Erstellen des Projekts wird die Liste der verfügbaren Optionen im OCI DevOps-Service angezeigt.

    DevOps Serviceliste

  2. 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.

    Erstellungscode-Repository

  3. 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" ]
    
    
  4. 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
    
    

    Build-Spezifikation

  5. 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.

    Build- Pipeline

    1. Klicken Sie unter der erstellten Build-Pipeline auf Phase hinzufügen, und wählen Sie Build-Phase verwalten aus.

    2. Geben Sie den Phasennamen ein, und fügen Sie das primäre Code-Repository hinzu.

    3. Wählen Sie als OCI-Code-Repository den Verbindungstyp aus, und wählen Sie das Code-Repository aus, in dem der Anwendungscode vorhanden ist.

    4. Klicken Sie auf Wählen.

      Phase hinzufügen

    5. Klicken Sie auf Hinzufügen.

  6. 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.

    Artefakt hinzufügen

  7. 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.

    1. Geben Sie Konfigurations-/Ergebnisartefaktnamen erstellen als Myapp-Image an, weil wir diesen Artefaktnamen in der Datei build_spec.yaml angegeben haben.

    2. Klicken Sie auf Hinzufügen.

      Artefakt übermitteln

  8. 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
    
    

    Manifestdatei erstellen

  9. 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.

    Umgebung erstellen

  10. 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.

    Manifest zu Artefakt hinzufügen

  11. 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.

    Deployment-Pipeline erstellen

  12. 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.

    Deployment-Pipeline hinzufügen

  13. 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.

    Logs aktivieren

  14. Die Build-Pipeline wird im folgenden Image angezeigt. Klicken Sie auf Manuelle Ausführung starten, um die Pipeline auszuführen.

    Pipeline starten

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.

Erfolgspipeline

Danksagungen

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.