注意:

建立適用於 Apache Airflow 的 OCI DevOps 管線,然後使用 Helm 進行部署

簡介

這是六個部分教學課程系列的部分,其中顯示如何使用 Golang 微服務 (表示使用 OCI SDK、OCI-CLI、資源管理程式、OCI DevOps 和 Helm) 在 OKE 叢集上部署一組暫時資源,以部署和毀棄 Apache Airflow。

目標

在本教學課程中,您將瞭解如何為 Apache Airflow 建立 OCI DevOps 管線,然後使用 Helm 進行部署。

必要條件

作業 1:建立 Apache Airflow 的 DevOps 使用者自建物件

建立 DevOps 組建管線之前,必須先建立將與組建結果 (Helm 套裝程式和容器映像檔) 連線的使用者自建物件。

  1. 前往您為此教學課程建立的 OCI 登錄。

    T1_1

  2. 前往您的 DevOps 專案頁面,按一下使用者自建物件,然後按一下新增使用者自建物件。請填寫下列資訊。

    • 相關資訊環境:這是 Kubernetes 資訊清單,用於實行氣流的輸入。

    • 名稱: airflow-ingress

    • 類型:Kubernetes 資訊清單

    • 使用者自建物件來源:內嵌

    • 欄位中貼上下方的內容。

      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
       generation: 1
       name: airflow-ingress
       namespace: airflow
      spec:
       ingressClassName: nginx
       rules:
       - host: ${APP_HOST}
         http:
           paths:
           - backend:
               service:
                 name: airflow-web
                 port:
                   number: 8080
             path: /
             pathType: ImplementationSpecific
      
      
  3. 重複步驟 2 並填寫下列資訊。

    • 相關資訊環境:這是 Kubernetes 資訊清單,用於實行氣流的輸入。

    • 名稱: airflow-namespace

    • 類型:Kubernetes 資訊清單

    • 使用者自建物件來源:內嵌

    • 欄位中貼上下方的內容:

      apiVersion: v1
      kind: Namespace
      metadata:
        name: airflow
      
      
  4. 重複步驟 2 並填寫下列資訊。

    • 內容:這是 Helm 圖表登錄位置。
    • 名稱: helm-airflow
    • 類型:Helm Chart
    • Helm 圖表 URL:oci://gru.ocir.io/yournamespace/airflow-helm/airflow
    • 版本: 8.6.1

    注意:請記得從您的 OCI 登錄取代日誌空間。此登錄是建立在此教學課程的較早階段。

  5. 重複步驟 2 並填寫下列資訊。

    • 內容:這是氣流部署的 Helm 值。

    • 名稱: values-airflow-helm

    • 類型:一般使用者自建物件

    • 使用者自建物件來源:內嵌

    • 欄位中貼上下方的內容。這會強制部署至新的 node-pool。

      nodeSelector:
      name: extra_workload
      

此時,您應該要有下列使用者自建物件。

T1_1

作業 2:建立氣流的 DevOps 組建管線

儲存庫中沒有任何程式碼,只有 build_spec.yaml 檔案。這是因為我們將使用 Apache Airflow 的官方 Helm 圖表。

  1. 前往您的 OCI DevOps 專案,按一下程式碼儲存區域,然後建立名為 airflow-helm 的儲存區域。

    T2_1

  2. 按一下複製,然後記下您的儲存區域 ssh url

    T2_1

  3. 請前往堡壘主機 Shell 終端機,下載 build_spec.yaml 檔案,然後將它推送至 OCI 上您自己的程式碼儲存區域。

    cd $HOME
    git clone <your ssh code repository>
    wget https://docs.us.oracle.com/en/learn/resource-manager-airflow-oke-part5/files/build_spec.yaml
    git add .
    git commit -m "new build spec added"
    git push
    

    T2_3

    T2_3

    T2_3

作業 3:建立 Airflow-helm 的組建管線

  1. 前往您的 DevOps 專案,按一下組建管線,然後按一下建立組建管線

    T3_1

  2. 按一下新增階段,然後選取受管理組建類型。

    T3_2

  3. 選取「主要程式碼」儲存區域,然後選取 airflow-helm

    T3_3

  4. 收集此氣流派管所需的保存庫加密密碼。

    1. 在 Oracle 雲端主控台上,按一下身分識別與安全,然後按一下保存庫,然後選取您的保存庫。

    2. 取得 OCIRUserOCIRToken 加密密碼的 OCID,這是您在本教學課程前幾個步驟中建立的加密密碼。

      T3_4

  5. 前往您的 DevOps 專案,按一下組建管線,為 airflow-helm 選取您的組建管線,然後按一下參數頁籤,然後新增下列參數:

    參數名稱
    VAULT_HELM_REPO_USER 取得您登錄使用者的保存庫加密密碼 OCID OCIRUser
    VAULT_USER_AUTH_TOKEN 取得您登錄權杖 OCIRToken 的保存庫加密密碼 OCID
    COMPARTMENT_ID 取得您的區間 OCID
    HELM_REPO gru.ocir.io
    HELM_REPO_URL oci://gru.ocir.io/your_namespace/airflow-helm
    APP_HOST airflow.superocilab.com

    注意:請確定您在 REPO URL 上正確設定您的區域。本教學課程為 "gru.ocir.io"

    T3_5

  6. 按一下組建管線頁籤,然後按一下開始手動執行以手動執行組建管線。

    T3_6 T3_6

作業 4:建立 Airflow-helm 的部署管線

  1. 前往您的 DevOps 專案,按一下部署管線,然後建立一個名為 airflow-helm-deploy 的新管線。

    T4_1

  2. 建立新階段以在 OKE 中建立新命名空間,選取套用資訊清單至您的 Kubernetes 叢集

    T4_2

  3. 建立新階段以在 OKE 中安裝氣流,選取套用資訊清單至您的 Kubernetes 叢集

    T4_3

    T4_3

  4. 建立新階段以在 OKE 中建立通風輸入,選取套用資訊清單至您的 Kubernetes 叢集。由於我們設定了壓力控制器,從外部 OKE 存取我們的微服務,因此也需要設定氣流。

    T4_4

    T4_4

  5. 更新您的氣流組建管線,並新增觸發程式以進行部署。為了在組建管線完成後自動啟動部署,我們需要在 airflow-helm 組建管線上新增觸發程式。

    T4_5

    T4_5

    T4_5

您的組建管線現在應該如下所示。

T4_5

作業 5:設定 go-microservice 參數

現在我們需要設定 go-microservice ,才能觸發氣流最近建立的組建管線。

  1. 前往您的 DevOps 專案,按一下組建管線,並記下 airflow-helm 組建管線的 OCID。

    T5_1

  2. 在 Oracle 雲端主控台上,按一下「資源管理程式」下的開發人員服務,按一下堆疊,選取 CLI 額外節點堆疊,並記下 OCID

    T5_2

    T5_2

  3. go-microservice 代碼內設定變數。

    注意:Go-microservices 是一組程式碼,可與 OCI 資源互動。由於我們剛為氣流建立了建構管道,因此需要讓 go-microservices 知道它需要呼叫的建置管道。因此,我們會對 OKE 中容器內插入的組態對應值進行一些變更。

    • 取得 OCI 程式碼儲存區域的 go-microservice ssh URL。

      T5_3_1

    • 開啟堡壘主機蹦現面板主控台,並編輯 go-microservice 程式碼儲存區域中的 configmap/values.yaml 檔案。

      cd $HOME
      rm -rf go-microservice
      git clone your_repo_ssh_url
      cd go-microservice
      vi chart-go-microservice/configmap/values.yaml   
      

      T5_3_1

    • configmap/values.yaml 檔案的結尾新增下列新變數。

      ENV_RM_STACK_ID: "<paste your stack ocid>"
      ENV_DEVOPS_BUILD_ID: "<paste your build pipeline ocid"
      
    • 檢查檔案的最後 3 行,並確定您新增了最後兩個變數。

      tail -3 chart-go-microservice/configmap/values.yaml
      

      T5_3_1

    • 現在,我們需要將變更植入程式碼儲存區域:

       git add .
       git commit -m "added new variables"
       git push
      
      

      T5_3_1

  4. 前往您的 DevOps 專案,選取建立管線,然後按一下 go-microservice-pipeline

    1. 按一下開始手動執行,即可重新執行 go-microservice 的組建管線,並確定組態對應的變更會生效,並且會插入至執行中的容器中。

      T5_3_1

    2. 然後檢查此組建管線觸發的部署管線。

      T5_3_1

您的行動微服務現在已準備好上手了!

下一步

若要繼續前往此學習進程的下一個教學課程,請按一下此處

確認

其他學習資源

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

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