GitHub Actions 自托管 Runner 接入 K8s Master:为 CI/CD 自动构建做准备

一、实验背景

前面我们已经完成了 Harbor(私有镜像仓库)、Kubernetes(K8s)、GitHub、ArgoCD(GitOps 自动发布工具)的部署与联动。

目前已经跑通的 CD(持续部署)链路如下:

GitHub

ArgoCD(GitOps 自动发布工具)

Kubernetes(K8s)

Harbor(私有镜像仓库)

Pod(容器组)运行

浏览器访问成功

接下来要继续补齐 CI(持续集成)部分,也就是让 GitHub Actions 自动执行:

docker build(构建镜像)

docker push(推送镜像到 Harbor)

更新 Kubernetes YAML(资源配置文件)

ArgoCD 自动同步发布

但是这里有一个关键问题:我的 Harbor 地址是内网地址:

172.16.11.142

GitHub 官方云端 Runner 无法直接访问这个内网 Harbor,所以需要在自己的服务器上安装 GitHub Actions Self-hosted Runner(自托管运行器)。

二、什么是 Self-hosted Runner?

Self-hosted Runner(自托管运行器)可以理解为:

把 GitHub Actions 的执行环境放到自己的服务器上

也就是说,GitHub 负责下发任务,而真正执行命令的是我的 k8s-master 节点。

这样它就可以访问内网资源,例如:

Harbor:172.16.11.142
Kubernetes API
本机 Docker
本机 kubectl
三、实验目标

本阶段目标:

1. 在 k8s-master 上安装 GitHub Actions Runner(自托管运行器)
2. 让 Runner 连接到 GitHub 仓库
3. 确认 Runner 状态为 Listening for Jobs
4. 为后续 CI 自动构建镜像做准备

本阶段完成后,GitHub Actions 就可以调用我的 k8s-master 执行 CI/CD 任务。

四、确认 Docker 环境可用

首先确认 k8s-master 上 Docker 正常运行:

docker ps

可以看到 Harbor(私有镜像仓库)相关容器都在运行:

nginx
harbor-jobservice
harbor-core
harbor-portal
registryctl
harbor-db
redis
registry
harbor-log

然后登录 Harbor:

docker login 172.16.11.142

输入 Harbor 用户名和密码后,成功显示:

Login Succeeded

这一步非常关键,说明当前服务器可以直接执行:

docker build
docker push 172.16.11.142/…

也就是具备 CI 自动构建和推送镜像的基础条件。

五、在 GitHub 创建 Self-hosted Runner

进入 GitHub 仓库:

YANYUE0721 / kgale-web-gitops

然后进入:

Settings
→ Actions
→ Runners
→ New self-hosted runner

系统选择:

Linux

架构选择:

x64

GitHub 会生成一组 Runner 安装命令。

六、创建 Runner 安装目录

在 k8s-master 上创建目录:

mkdir -p ~/actions-runner/actions-runner
cd ~/actions-runner/actions-runner
七、下载 GitHub Runner 安装包

GitHub 页面会提供类似下面的下载命令:

curl -o actions-runner-linux-x64-2.334.0.tar.gz -L https://github.com/actions/runner/releases/download/v2.334.0/actions-runner-linux-x64-2.334.0.tar.gz

如果服务器访问 GitHub 较慢,可能会出现下载卡住或超时:

Failed to connect to github.com port 443
Timeout was reached

这种情况下可以使用两种方式解决:

1. 在 Windows 浏览器中下载 Runner 安装包
2. 通过 exHub / Xftp / scp 上传到服务器

上传到服务器后,确认文件存在:

ls -lh actions-runner-linux-x64-2.334.0.tar.gz
八、解压 Runner 安装包
tar xzf actions-runner-linux-x64-2.334.0.tar.gz

解压后可以看到:

config.sh
run.sh
svc.sh
bin
externals

这些文件就是 Runner(自托管运行器)的核心程序。

九、配置 Runner

回到 GitHub 的 Runner 创建页面,复制 Configure 区域里的命令,格式类似:

./config.sh –url https://github.com/YANYUE0721/kgale-web-gitops –token

注意:

这里的 token 是 Runner 注册 token
不是 GitHub Personal Access Token

两者区别:

GitHub PAT:
用于 git push / 认证 GitHub 仓库

Runner 注册 Token:
用于把服务器注册成 GitHub Actions Runner

如果把 PAT 当成 Runner token 使用,会出现类似报错:

404 Not Found
actions/runner-registration

如果把中文占位符复制进去,会出现:

Request headers must contain only ASCII characters

正确执行后会看到:

√ Connected to GitHub
√ Runner successfully added
√ Settings Saved.

配置过程中可以这样填写:

Runner group:直接回车,使用 Default
Runner name:可以使用默认 k8s-master
Labels:直接回车
Work folder:直接回车,使用 _work
十、启动 Runner

配置完成后执行:

./run.sh

成功后显示:

√ Connected to GitHub

Current runner version: ‘2.334.0’
Listening for Jobs

这说明 Runner(自托管运行器)已经连接 GitHub,正在等待 GitHub Actions 下发任务。

十一、当前完成状态

到这里,Self-hosted Runner(自托管运行器)已经成功运行。

当前 CI/CD 进度如下:

Harbor(私有镜像仓库):完成
Kubernetes(K8s):完成
GitHub 仓库:完成
ArgoCD(GitOps 自动发布):完成
Self-hosted Runner(自托管运行器):完成

现在还差最后一部分:

GitHub Actions Workflow(工作流)

也就是编写:

.github/workflows/build-and-deploy.yaml

让 GitHub Actions 自动执行:

拉取代码

docker build(构建镜像)

docker push(推送到 Harbor)

修改 GitOps YAML(资源配置文件)

git push 回 GitHub

ArgoCD 自动同步

Kubernetes 自动发布新版本
十二、实验总结

本次实验完成了 GitHub Actions Self-hosted Runner(自托管运行器)的安装与注册。

由于 Harbor(私有镜像仓库)位于内网:

172.16.11.142

所以 GitHub 官方云端 Runner 无法直接访问它。通过把 Runner 部署到 k8s-master,就可以让 CI 任务在内网执行,从而访问 Harbor、Docker、Kubernetes 等内部资源。

最终效果是:

GitHub 负责触发任务
k8s-master 负责执行任务
Harbor 负责保存镜像
ArgoCD 负责自动发布
Kubernetes 负责运行应用

这一步完成后,整套 CI/CD 已经完成了大约 80%。

下一步只需要编写 GitHub Actions Workflow(工作流),就可以实现真正的自动化流程:

提交代码

自动构建镜像

自动推送 Harbor

自动更新 GitOps 配置

ArgoCD 自动发布

浏览器访问新版本

至此,GitHub Actions Self-hosted Runner 接入 K8s Master 实验完成。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇