Kubernetes 集群中安装 Drone

基于 Drone 的 CI/CD(一)

Kubernetes 集群中安装 Drone

基于 Drone 的 CI/CD(一)

标签: kubernetes   devops   drone   ci   cd   github   helm  

基于云原生的应用大多都离不开CI/CD工具或平台。现有很多优秀的开源工具,如:JenkinsGithub Actions 等,对于Jenkins来说比较笨重,占用系统资源较多,而GitHub Actions则依赖于GitHub云服务器,无法和本地k8s集群交互。

有没有一种工具可以在本地环境运行,资源占用少,方便学习和实践。本文将介绍一个比较轻量级的CI工具 - Drone,接下来将采用Helm的方式在Kubernetes中安装 Drone工具。

主流CI工具对比

image-20230719170635454

本机环境

  • Drone 2.12.1
  • Kubernetes 1.26.5
  • Helm 3.12.0

Drone 介绍

Drone CI 是一个开源的持续集成和持续交付(CI/CD)平台,旨在帮助开发者轻松地构建、测试和部署他们的应用程序。它基于容器化架构,使用 Docker 等容器技术来执行构建、测试和部署任务,使得它能够更快速、高效地处理多个项目和并行构建。

以下是 Drone CI 的一些关键特点和优势:

  1. 容器化执行: Drone CI 使用 Docker 容器来运行构建和测试任务,每个任务都在独立的容器中运行。这样可以确保任务之间的隔离,提高可靠性和安全性。
  2. 易于扩展: Drone CI 的插件系统允许用户通过添加自定义插件来扩展其功能。它还支持与其他工具和服务的集成,例如 GitHub、GitLab、Slack 等。
  3. 简单配置: Drone CI 的配置文件使用 YAML 格式,易于理解和编写。用户可以轻松定义构建和部署流程,以满足他们项目的需求。
  4. 轻量级: Drone CI 是一个轻量级的 CI/CD 工具,部署和使用都相对简单。它不需要复杂的服务器和配置,使得它成为个人项目和小型团队的理想选择。
  5. 多平台支持: Drone CI 可以运行在多个平台上,包括云服务、本地服务器或自己的基础设施。
  6. 版本控制集成: Drone CI 紧密集成了流行的版本控制系统,如 GitHub、GitLab 和 Bitbucket。它能够在代码提交时自动触发构建和部署任务。
  7. 可视化界面: Drone CI 提供一个直观的 Web 界面,让用户可以方便地查看构建历史、状态和日志等信息。

Drone CI 的开源性质使得开发者可以自由地使用和修改它,同时社区支持和活跃度也使得它不断得到改进和更新。对于那些寻求简单、高效和灵活的 CI/CD 解决方案的开发者,Drone CI 是一个值得考虑的选择。

Drone 安装

这里将结合 GitHub 和 Drone 使用,首先需要先在 GitHub 中注册一个新的 OAuth 应用程序,登录 GitHub,进入页面 https://github.com/settings/applications/new

Github配置

创建名为Drone的OAuth应用,并记录下用于配置 Drone 的 ClientID 和 ClientSecret。

image-20230719120623246

image-20230719120722724

准备Helm Values文件

先添加Drone的Helm仓库: image-20230719172331225

Drone主要有Drone Server 和 Drone Runner,下面分别是这两个的配置文件。

1)Drone-Values.yaml: 下图中掩码部分就是上面获取到的ClientID和ClientSecrets这两个值。

image-20230719171913917

2)Drone-Runner-Values.yaml: image-20230719172204842

3)本地磁盘存储配置

因为我这边使用的是本地K8S,这里需要配置一下本地的PV,方便数据进行存储,后续应用启停后,数据可以恢复。主要有两个YAML文件。

local-storage-class.yaml: image-20230719172550202

drone-local-pv.yaml: image-20230719172628915

执行安装命令

1)前置命令执行

执行local-storage、drone-local-pv、创建namespace等命令: image-20230719172910589

2)通过helm 安装Drone和Drone Runner image-20230719173047766

安装后的结果展示

Drone Server:

image-20230719161336550 Drone Runner:

image-20230719153914913

到这里我们就本地安装好了Drone CI工具。

Drone 使用

开通外网访问

一般使用Ingress + 域名的方式进行外网的暴露,这里使用NodePort,使用本机的端口进行配置,使用如下命令:

kubectl --namespace drone port-forward $POD_NAME 9000:80

这里将$POD_NAME替换成本地的pod名称。

Github授权

浏览器访问http://localhost:9000,打开Drone页面,如下图,点击CONTINUE后,进行Github 仓库授权。

image-20230719122802640

image-20230719144022029

同步成功后,输入用户信息,如下:

image-20230719122845129

最终可以看到Dashboard中,将github下的代码仓库都同步过来了。

image-20230719175951007

代码仓库激活

点击进入scaffold-onion-architecture项目,打开激活页面,如下:

image-20230719161210822

在代码仓库中配置.drone.yml文件

可以参考代码仓库:scaffold-onion-architecture/.drone.yml at master · amuguelove/scaffold-onion-architecture (github.com)

简单的pipeline配置,如下:

kind: pipeline
type: kubernetes
name: default

steps:
  - name: greeting
    image: alpine
    commands:
      - echo hello
      - echo world

点击+ NEW BUILD后,会进行pipeline构建,如下图所示:

image-20230719162324381

image-20230719161608974

到这儿我们就通过Helm在Kubernetes集群中成功安装了 Drone CI 了。

参考

New OAuth Application (github.com)

Drone CI – Automate Software Testing and Delivery

GitHub | Drone

amuguelove/scaffold-onion-architecture (github.com)

「真诚赞赏,手留余香」

请我喝杯咖啡?

使用微信扫描二维码完成支付

相关文章