注意:

从 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 计算实例

您需要为 GitLab Runner 提供 OCI 计算实例,例如虚拟机 (VM)。

OCI 计算实例

  1. 在 VM 上安装 kubectl。有关更多信息,请参见 Install and Set Up kubectl on Linux

  2. 安装 OCI CLI 并创建用于向 OCI 租户验证的配置文件(或者在运行集群访问步骤时将提示您创建配置文件)。有关更多信息,请参见 Install OCI CLISDK and CLI Configuration File

  3. 设置对 OKE 群集的访问权限。转至访问集群,然后在 OCI 控制台中单击本地访问说明。

    OCI OKE 访问集群

  4. 在 VM 上安装 GitLab Runner。以 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 Runner 的工作。

    gitlab-runner list
    

任务 2:配置 GitLab Runner 和项目

  1. 登录到 GitLab,转到项目并创建新项目或使用现有项目。

    GitLab 项目

  2. 创建跑步者或使用现有跑步者。要创建新的运行程序,请转至设置CI/CD运行程序展开。单击新建项目运行程序并选择平台(例如:Linux),添加标记,稍后在配置部署管道时,将在 .gitlab-ci.yaml 文件中使用该标记,然后单击创建运行程序

    GitLab 赛跑选手

  3. 向 VM 注册运行程序。

    注:如果以后需要,请记下运行程序验证令牌

    注册跑步者

    • 运行 gitlab-runner register 命令并输入以下信息。

      • GitLab 实例 URL :接受默认值 https://gitlab.com
      • Runner Name :在 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(以及适用于方法 1 的 OCI CLI)。

    $ 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 帮助中心