注意:
- 此教學課程需要存取 Oracle Cloud。若要註冊免費帳戶,請參閱開始使用 Oracle Cloud Infrastructure Free Tier 。
- 它會使用 Oracle Cloud Infrastructure 證明資料、租用戶及區間的範例值。完成實驗室時,請將這些值替代為您雲端環境特定的值。
在 Kubernetes 上使用 OCI DevOps CI/CD 管線部署您的應用系統
簡介
Oracle Cloud Infrastructure (OCI) DevOps 服務是一個完整的持續整合 / 持續交付 (CI/CD) 平台,可供開發人員簡化和自動化其軟體開發生命週期。OCI DevOps 服務使開發人員和操作員能夠協作開發、建置、測試和部署軟體。
目標
- 瞭解如何使用 OCI DevOps 組建管線。
- 在 Kubernetes 上使用 CI/CD 管線部署簡單的 NodeJs 應用程式。
必要條件
- 建立主題,讓 DevOps 服務能夠從您的管線執行傳送訊息至此通知主題,以取得重要事件。
- 建立並設定將部署應用程式的 Container Engine for Kubernetes 。
- 建立 OCI 容器登錄以推送應用程式映像檔。
- 建立用於儲存使用者自建物件的使用者自建物件登錄。
- 建立日誌群組以啟用組建管線的記錄日誌。
作業 1:設定 OCI DevOps 專案
- 
    按一下 DevOps 服務下的 Create DevOps project 。輸入「專案」名稱並選取先前建立的主題。  建立專案之後,您將會看到 OCI DevOps 服務中提供的選項清單。  
- 
    按一下程式碼儲存區域,然後輸入儲存區域名稱。設定代碼儲存庫並在儲存庫中上傳應用程式檔案。  
- 
    建立 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" ]
- 
    建立名為 build_spec.yaml的 build 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 
- 
    組建管線包含定義組建處理作業的階段,以便在部署之前順利編譯、測試及執行軟體應用程式。按一下建立組建管線並輸入名稱。  - 
        按一下所建立組建管線底下的新增階段,然後選擇管理組建階段。 
- 
        輸入階段名稱並新增主要代碼儲存庫。 
- 
        選取「連線」類型作為 OCI 程式碼儲存區域,並選取應用程式程式碼所在的程式碼儲存區域。 
- 
        按一下選取 (Select) 。  
- 
        請按一下新增。 
 
- 
        
- 
    按一下新增使用者自建物件。指定類型為容器映像檔儲存區域,並提供先前建立的登錄完整路徑。  
- 
    此階段會將應用程式映像檔使用者自建物件推送至容器登錄。在預先建立的組建管線中,新增另一個傳遞使用者自建物件類型的階段。按一下選取使用者自建物件,然後選取建立的使用者自建物件。 - 
        提供組建組態 / 結果使用者自建物件名稱作為 myapp-image,因為我們在 build_spec.yaml檔案中提到此使用者自建物件名稱。
- 
        按一下新增 (Add) 。  
 
- 
        
- 
    依下列方式建立 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 
- 
    按一下建立環境。提供名稱並在「環境詳細資訊」頁面中,選取將部署應用程式的 OKE 叢集。  
- 
    新增此資訊清單至使用者自建物件。按一下新增使用者自建物件 (Add Artifact) ,然後選取類型作為 Kubernetes 資訊清單。選取先前建立的使用者自建物件登錄儲存區域。選取資訊清單檔案作為使用者自建物件。依下列影像所示填入表單。  
- 
    按一下建立部署管線並提供名稱。新增階段類型套用資訊清單至您的 Kubernetes 叢集。選取先前步驟中建立的環境和使用者自建物件。  
- 
    新增第三個階段至建立的組建管線。選取階段類型作為觸發部署。提供階段名稱並選取建立的部署管線。  
- 
    按一下日誌以啟動組建管線。提供儲存日誌的日誌群組,然後按一下啟用日誌。  
- 
    組建管線會顯示在下列影像中。按一下開始手動執行以執行管線。  
已順利執行管線。我們使用負載平衡器類型服務存取應用程式,因此將會建立負載平衡器。若要存取此應用程式,您可以存取所建立負載平衡器的公用 IP 位址。

相關連結
確認
- 作者:Nikhil Khandelwal (企業雲架構師)
其他學習資源
探索 docs.oracle.com/learn 的其他實驗室,或者存取更多 Oracle Learning YouTube 頻道上的免費學習內容。此外,請瀏覽 education.oracle.com/learning-explorer 以成為 Oracle Learning 檔案總管。
如需產品文件,請造訪 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.