附註:

從 GitLab CI/CD 部署至 OCI Container Engine for Kubernetes

簡介

在 DevOps 和雲端原生開發的快速發展環境中,需要簡化版本控制系統與容器協調平台之間的整合非常重要。Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE) 提供強大且可擴展的解決方案,用於管理容器化應用程式。不過,有些團隊可能會有特定的偏好和需求,導致他們尋求 Oracle Cloud Infrastructure (OCI) 原生 DevOps 服務的替代方案。

GitLab 是多功能且全面的版本控制和持續整合和持續交付 / 部署 (CI/CD) 平台,不僅符合這些偏好,還為 OCI DevOps 服務提供極具吸引力的替代方案。在本教學課程中,我們將引導您完成將 GitLab 順暢連線至 Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE) 的程序。本教學課程中提供的整合不僅與現有的 GitLab 解決方案保持一致,還能為團隊提供統一的版本控制、持續整合和 Kubernetes 協調流程解決方案。

在接下來的章節中,本教學課程介紹了兩種旨在實現此整合的不同方法。

目標

必要條件

方法 1:使用短期產生的記號從 GitLab CI/CD 部署至 OKE

作業 1:準備 OCI Compute 執行處理

您需要 GitLab 執行器的 OCI Compute 執行處理,例如虛擬機器 (VM)。

OCI Compute 執行處理

  1. 在 VM 上安裝 kubectl。如需詳細資訊,請參閱 Install and Set Up kubectl on Linux

  2. 安裝 OCI CLI 並建立用於認證 OCI 租用戶的組態檔 (或系統會在執行叢集存取步驟時提示您建立此組態檔)。如需詳細資訊,請參閱安裝 OCI CLISDK 和 CLI 組態檔

  3. 設定 OKE 叢集的存取權。前往存取您的叢集,然後從 OCI 主控台按一下本機存取指示。

    OCI OKE 存取叢集

  4. 在 VM 上安裝 GitLab 執行程式。以 root 身分執行下列指令。

    sudo curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash
    sudo yum install -y gitlab-runner
    

    檢查 GitLab 執行器是否運作。

    gitlab-runner list
    

作業 2:設定 GitLab 執行程式與專案

  1. 登入 GitLab,前往專案並建立新專案或使用結束專案。

    GitLab 專案

  2. 建立執行程式或使用現有執行程式。若要建立新的執行程式,請前往設定值CI/CD執行程式展開。按一下新建專案執行者並選取平台 (例如:Linux),新增一個標記,我們稍後會在設定部署管線時於 .gitlab-ci.yaml 檔案中使用,然後按一下建立執行者

    GitLab 執行器

  3. 在 VM 註冊執行程式。

    注意:請記下 runner Authenticaton token (稍後需要)。

    註冊執行者

    • 執行 gitlab-runner register 指令並輸入下列資訊。

      • GitLab 執行處理 URL :接受預設值 https://gitlab.com
      • 執行者名稱:在 config.toml 檔案的本機有效。例如:gitlab-oke-runner
      • 輸入執行程式shell ,使用此值,您選擇 CI/CD 指示將在安裝 kubectl 與 OCI CLI 的本機機器上執行。

      註冊執行者

    • 您可以在 $HOME/.gitlab-runner/config.toml 檔案中複查執行程式組態。

任務 3:設定 CI/CD 管道

  1. 將 GitLab 專案複製到您的本機機器。

  2. 在專案目錄中建立一個名為 .gitlab-ci.yaml 的檔案,其中包含建置和建置指示。在部署區段中,請確定包含您在之前建立執行程式時所設定的執行程式標記。

    $ cat ~/demo-oke/.gitlab-ci.yml
    stages:
      - build
      - deploy
    
    build_job:
      stage: build
      script:
        - echo "Building the ServiceAccount project..."
    
    deploy_job:
      stage: deploy
      script:
        - echo "Deploying an nginx pod to the OKE cluster"
        - kubectl run nginx --image=nginx
      tags:
        - shell-executor
    
  3. 將變更推送至您的 GitLab 專案,然後前往組建工作,檢查組建和部署管線是否已順利觸發並執行。

    CICD 管線

    部署工作

    管線在 OKE 叢集中部署了 nginx Pod。

    備註:記下標記與索引鍵。我們將選擇將使用本機機器資源的 Shell 執行程式。否則,如果您選擇 Docker,就需要在指示中提供在容器中安裝 kubectl (和 OCI CLI for approach 1) 的映像檔。

    $ kubectl get pods
    NAME    READY   STATUS    RESTARTS   AGE
    nginx   1/1     Running   0          47h
    

方法 2:使用 Kubernetes 服務帳戶從 GitLab CI/CD 部署至 OKE

從方法 1 重複工作 1、2 和 3 以設定本機 VM (安裝 kubectl、OCI CLI、GitLab Runner)、註冊執行程式、建立管線檔案 .gitlab-ci.yaml

作業 1:建立 Kubernetes 服務帳戶並新增其權杖

當您使用 Kubernetes 服務帳戶從 GitLab 部署至 OKE 時,該程序涉及使用服務帳戶認證以 Kubernetes 叢集認證 GitLab。

接下來的步驟

您可以使用這些任務,將 GitLab CI/CD 管道部署至 OKE。這些任務可作為其他 CI/CD 工具的參考。此整合有助於持續整合及傳遞,讓 OKE 可快速重複及部署應用程式。

在本教學課程中,說明會採用 Shell 執行程式來測試及處理直接轉送案例。或者,您可以選擇不同的執行程式,例如 Docker 執行程式。在此情況下,管線是在 Docker 容器內執行,而不是在本機機器上執行。使用 Docker 執行程式執行時,您需要指定包含必要公用程式的 Docker 映像檔。因此,建立自訂映像檔可能十分重要,納入 kubectl 和 OCI CLI 等工具以符合特定管線需求。

確認書

其他學習資源

瀏覽 docs.oracle.com/learn 的其他實驗室,或前往 Oracle Learning YouTube 頻道存取更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。

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