注意:
- 此教程需要访问 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 Runner。
-
设置 CI/CD 管道。
先决条件
-
活动的 OCI 账户。
-
具有公共端点的正在运行的 OKE 集群。有关更多信息,请参见适用于 Kubernetes 的容器引擎概述。
-
具有足够权限的 GitLab 帐户。
方法 1:使用短期生成的令牌从 GitLab CI/CD 部署到 OKE
任务 1:准备 OCI 计算实例
您需要为 GitLab Runner 提供 OCI 计算实例,例如虚拟机 (VM)。
-
在 VM 上安装 kubectl。有关更多信息,请参见 Install and Set Up kubectl on Linux 。
-
安装 OCI CLI 并创建用于向 OCI 租户验证的配置文件(或者在运行集群访问步骤时将提示您创建配置文件)。有关更多信息,请参见 Install OCI CLI 和 SDK and CLI Configuration File 。
-
设置对 OKE 群集的访问权限。转至访问集群,然后在 OCI 控制台中单击本地访问说明。
-
在 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 和项目
-
登录到 GitLab,转到项目并创建新项目或使用现有项目。
-
创建跑步者或使用现有跑步者。要创建新的运行程序,请转至设置、 CI/CD 、运行程序和展开。单击新建项目运行程序并选择平台(例如:Linux),添加标记,稍后在配置部署管道时,将在
.gitlab-ci.yaml
文件中使用该标记,然后单击创建运行程序。 -
向 VM 注册运行程序。
注:如果以后需要,请记下运行程序验证令牌。
-
运行
gitlab-runner register
命令并输入以下信息。- GitLab 实例 URL :接受默认值
https://gitlab.com
。 - Runner Name :在
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(以及适用于方法 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 服务账户并将其令牌添加到
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 -Adina Nicolescu(高级云工程师),Guido Alejandro Ferreyra(首席云架构师)
更多学习资源
浏览 docs.oracle.com/learn 上的其他实验室,或者通过 Oracle Learning YouTube 频道访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Deploy to OCI Container Engine for Kubernetes from GitLab CI/CD
F92408-01
February 2024
Copyright © 2024, Oracle and/or its affiliates.