附註:
- 此教學課程需要存取 Oracle Cloud。若要註冊免費帳戶,請參閱開始使用 Oracle Cloud Infrastructure Free Tier 。
- 它使用 Oracle Cloud Infrastructure 憑證、租用戶及區間的範例值。完成實驗室時,請將這些值取代為您雲端環境特有的值。
從 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 :使用從 Oracle Cloud Infrastructure 命令行介面 (OCI CLI) 產生的短期權杖。當您使用 OKE 叢集存取指示為叢集設定
kubeconfig
檔案時,預設會包含 OCI CLI 命令,以產生短期、叢集範圍、使用者特定認證記號。CLI 命令產生的認證權杖適用於使用 Kubernetes 命令行工具 (kubectl) 和 Kubernetes 儀表板認證存取叢集的個別使用者。不過,建議將此方法限制為僅供測試之用,而非生產環境。 -
約 2 :使用 Kubernetes 服務帳戶。從方法 1 產生的短期認證記號不適用於驗證存取叢集的程序和工具,例如 CI/CD 工具。為了確保對叢集的存取,這類工具需要使用長效、非使用者特定的驗證記號。您可以使用 Kubernetes 服務帳戶達到此目的。
目標
-
設定 GitLab 執行器。
-
設定 CI/CD 管道。
必要條件
-
作用中的 OCI 帳戶。
-
使用公用端點執行中的 OKE 叢集。如需詳細資訊,請參閱 Overview of Container Engine for Kubernetes 。
-
具備足夠權限的 GitLab 帳戶。
方法 1:使用短期產生的記號從 GitLab CI/CD 部署至 OKE
作業 1:準備 OCI Compute 執行處理
您需要 GitLab 執行器的 OCI Compute 執行處理,例如虛擬機器 (VM)。
-
在 VM 上安裝 kubectl。如需詳細資訊,請參閱 Install and Set Up kubectl on Linux 。
-
安裝 OCI CLI 並建立用於認證 OCI 租用戶的組態檔 (或系統會在執行叢集存取步驟時提示您建立此組態檔)。如需詳細資訊,請參閱安裝 OCI CLI 和 SDK 和 CLI 組態檔。
-
設定 OKE 叢集的存取權。前往存取您的叢集,然後從 OCI 主控台按一下本機存取指示。
-
在 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 執行程式與專案
-
登入 GitLab,前往專案並建立新專案或使用結束專案。
-
建立執行程式或使用現有執行程式。若要建立新的執行程式,請前往設定值、 CI/CD 、執行程式及展開。按一下新建專案執行者並選取平台 (例如:Linux),新增一個標記,我們稍後會在設定部署管線時於
.gitlab-ci.yaml
檔案中使用,然後按一下建立執行者。 -
在 VM 註冊執行程式。
注意:請記下 runner Authenticaton token (稍後需要)。
-
執行
gitlab-runner register
指令並輸入下列資訊。- GitLab 執行處理 URL :接受預設值
https://gitlab.com
。 - 執行者名稱:在
config.toml
檔案的本機有效。例如:gitlab-oke-runner
。 - 輸入執行程式: shell ,使用此值,您選擇 CI/CD 指示將在安裝 kubectl 與 OCI CLI 的本機機器上執行。
- GitLab 執行處理 URL :接受預設值
-
您可以在
$HOME/.gitlab-runner/config.toml
檔案中複查執行程式組態。
-
任務 3:設定 CI/CD 管道
-
將 GitLab 專案複製到您的本機機器。
-
在專案目錄中建立一個名為
.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
-
將變更推送至您的 GitLab 專案,然後前往組建和工作,檢查組建和部署管線是否已順利觸發並執行。
管線在 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 服務帳戶並將其權杖新增至
kubeconfig
檔案。如需詳細資訊,請參閱 Adding a Service Account Authentication Token to a Kubeconfig File 。注意:請確定已使用服務帳戶,而不是使用 OCI CLI 短期權杖。
-
將目前相關資訊環境之
kubeconfig
檔案中指定的使用者設為使用下列 kubectl 命令建立的新服務帳戶使用者。kubectl config set-context --current --user=<service-account-name>
舉例而言:
kubectl config set-context --current --user=kubeconfig-sa
當您使用 Kubernetes 服務帳戶從 GitLab 部署至 OKE 時,該程序涉及使用服務帳戶認證以 Kubernetes 叢集認證 GitLab。
接下來的步驟
您可以使用這些任務,將 GitLab CI/CD 管道部署至 OKE。這些任務可作為其他 CI/CD 工具的參考。此整合有助於持續整合及傳遞,讓 OKE 可快速重複及部署應用程式。
在本教學課程中,說明會採用 Shell 執行程式來測試及處理直接轉送案例。或者,您可以選擇不同的執行程式,例如 Docker 執行程式。在此情況下,管線是在 Docker 容器內執行,而不是在本機機器上執行。使用 Docker 執行程式執行時,您需要指定包含必要公用程式的 Docker 映像檔。因此,建立自訂映像檔可能十分重要,納入 kubectl 和 OCI CLI 等工具以符合特定管線需求。
相關連結
確認書
- Authors - Guido Alejandro Ferreyra (主要雲端架構師) 的 Adina Nicolescu (資深雲端工程師)
其他學習資源
瀏覽 docs.oracle.com/learn 的其他實驗室,或前往 Oracle Learning YouTube 頻道存取更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。
如需產品文件,請造訪 Oracle Help Center 。
Deploy to OCI Container Engine for Kubernetes from GitLab CI/CD
F92409-01
February 2024
Copyright © 2024, Oracle and/or its affiliates.