注意:

在 Kubernetes 上使用 OCI DevOps CI/CD 管線部署您的應用系統

簡介

Oracle Cloud Infrastructure (OCI) DevOps 服務是一個完整的持續整合 / 持續交付 (CI/CD) 平台,可供開發人員簡化和自動化其軟體開發生命週期。OCI DevOps 服務使開發人員和操作員能夠協作開發、建置、測試和部署軟體。

目標

必要條件

作業 1:設定 OCI DevOps 專案

  1. 按一下 DevOps 服務下的 Create DevOps project 。輸入「專案」名稱並選取先前建立的主題。

    建立 DevOps 專案

    建立專案之後,您將會看到 OCI DevOps 服務中提供的選項清單。

    DevOps 服務清單

  2. 按一下程式碼儲存區域,然後輸入儲存區域名稱。設定代碼儲存庫並在儲存庫中上傳應用程式檔案。

    建立程式碼儲存區域

  3. 建立 Dockerfile 以建立 NodeJS 應用程式的 Docker 映像檔,然後將它推送至程式碼儲存區域。

    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. 建立名為 build_spec.yamlbuild Specification 檔案。將此檔案推送至儲存庫的根目錄。

    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
    
    

    建立規格

  5. 組建管線包含定義組建處理作業的階段,以便在部署之前順利編譯、測試及執行軟體應用程式。按一下建立組建管線並輸入名稱。

    組建管線

    1. 按一下所建立組建管線底下的新增階段,然後選擇管理組建階段

    2. 輸入階段名稱並新增主要代碼儲存庫。

    3. 選取「連線」類型作為 OCI 程式碼儲存區域,並選取應用程式程式碼所在的程式碼儲存區域。

    4. 按一下選取 (Select)

      新增階段

    5. 請按一下新增

  6. 按一下新增使用者自建物件。指定類型為容器映像檔儲存區域,並提供先前建立的登錄完整路徑。

    新增使用者自建物件

  7. 此階段會將應用程式映像檔使用者自建物件推送至容器登錄。在預先建立的組建管線中,新增另一個傳遞使用者自建物件類型的階段。按一下選取使用者自建物件,然後選取建立的使用者自建物件。

    1. 提供組建組態 / 結果使用者自建物件名稱作為 myapp-image,因為我們在 build_spec.yaml 檔案中提到此使用者自建物件名稱。

    2. 按一下新增 (Add)

      傳遞使用者自建物件

  8. 依下列方式建立 manifest.yaml 檔案,以在 Kubernetes 上部署應用程式容器。將此資訊清單檔案上傳至建立的使用者自建物件登錄。

    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
    
    

    建立資訊清單檔案

  9. 按一下建立環境。提供名稱並在「環境詳細資訊」頁面中,選取將部署應用程式的 OKE 叢集。

    建立環境

  10. 新增此資訊清單至使用者自建物件。按一下新增使用者自建物件 (Add Artifact) ,然後選取類型作為 Kubernetes 資訊清單。選取先前建立的使用者自建物件登錄儲存區域。選取資訊清單檔案作為使用者自建物件。依下列影像所示填入表單。

    新增資訊清單至使用者自建物件

  11. 按一下建立部署管線並提供名稱。新增階段類型套用資訊清單至您的 Kubernetes 叢集。選取先前步驟中建立的環境和使用者自建物件。

    建立部署管線

  12. 新增第三個階段至建立的組建管線。選取階段類型作為觸發部署。提供階段名稱並選取建立的部署管線。

    新增部署管線

  13. 按一下日誌以啟動組建管線。提供儲存日誌的日誌群組,然後按一下啟用日誌

    啟用日誌

  14. 組建管線會顯示在下列影像中。按一下開始手動執行以執行管線。

    開始管道

已順利執行管線。我們使用負載平衡器類型服務存取應用程式,因此將會建立負載平衡器。若要存取此應用程式,您可以存取所建立負載平衡器的公用 IP 位址。

成功業績預測

確認

其他學習資源

探索 docs.oracle.com/learn 的其他實驗室,或者存取更多 Oracle Learning YouTube 頻道上的免費學習內容。此外,請瀏覽 education.oracle.com/learning-explorer 以成為 Oracle Learning 檔案總管。

如需產品文件,請造訪 Oracle Help Center