什么是跑步者?有自营的吗?为什么我要在 Kubernetes 集群上使用它?

Github 运行器是运行在您的 github 操作工作流中定义的步骤的机器——它们是基本上代表您执行命令的机器。默认情况下,存储库在 Github 托管的虚拟机上运行这些步骤。更多关于这里

自托管运行器是您拥有或控制的机器,可以在 github 操作上运行构建工作流中的步骤。您可以通过运行 github 提供的附加该机器并使其在您的 github 帐户中可用的步骤来获得此信息。您可以在存储库(repo)级别和组织(org)级别附加一个 github 运行程序 - 如果您希望一个自托管运行程序可用于您的组织中的多个存储库。文件

在 Kubernetes 上拥有一个自托管运行器可以增加启动、停止和扩展这些运行器的灵活性。

如何在 Kubernetes 上部署

先决条件

  • 一个github账号——当然

  • 一个 Kubernetes 集群 -

  • 一个 github 个人访问令牌。如何创建

  • 个人访问令牌/或任何令牌所需的权限。权限

  • [optional] 用于 github 访问的私有 ssh 密钥。 添加 ssh 密钥

  • 克隆以下 repo -github.com/nebed/self-hosted-runners-onk8s-git clone https://github.com/nebed/self-hosted-runners-onk8s

  • 进入克隆 repo 的目录 -cd self-hosted-runners-onk8s

  • 编辑文件以匹配您要部署到的 github 存储库或组织。

  • 如果您使用的是组织,请编辑entrypoint.sh,注释第一个 GITHUB_ENDPOINT 并取消注释组织的注释

#!/bin/sh
GITHUB_ENDPOINTu003d"${GITHUB_OWNER}/${GITHUB_REPOSITORY}"
#对于组织
#GITHUB_ENDPOINTu003d组织名称
registration_urlu003d"https://api.github.com/repos/${GITHUB_ENDPOINT}/actions/runners/registration-token"
#对于组织
#https://api.github.com/orgs/${GITHUB_ENDPOINT}/actions/runners/registration-token
echo "在 '${registration_url}' 处请求注册 URL"

如果不需要,请删除 ssh 配置 从文件中删除这个 👇 整个块

mkdir $HOME/.ssh
触摸 $HOME/.ssh/agent-environment
触摸 $HOME/.ssh/known_hosts
sudo cp /data/secrets/id_rsa /home/github/.ssh/id_rsa
sudo chown -R github:github /home/github/.ssh/id_rsa
猫 > .bashrc <<'SH'
SSH_ENVu003d"$HOME/.ssh/agent-environment"

功能启动代理{
echo "正在初始化新的 SSH 代理..."
/usr/bin/ssh-代理 | sed 's/^echo/#echo/' > "${SSH_ENV}"
回显成功
chmod 600 "${SSH_ENV}"
. "${SSH_ENV}" > /dev/null
/usr/bin/ssh-add /home/github/.ssh/id_rsa;
}

# 源 SSH 设置(如果适用)

如果 [ -f "${SSH_ENV}" ];然后
. "${SSH_ENV}" > /dev/null
#ps ${SSH_AGENT_PID} 在 cygwin 下不起作用
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
启动代理;
}
别的
启动代理;
菲
上海
ssh-keyscan -H github.com >> $HOME/.ssh/known_hosts
  • 编辑 deployment.yaml 文件并使用环境变量更新规范部分
容器:
- 名称:github-runner
图片:{{docker-repo}}/k8s-github-runner:latest
imagePullPolicy:总是
环境:
- 名称:GITHUB_OWNER
价值: ””
- 名称:GITHUB_REPOSITORY
价值: ””
- 名称:GITHUB_PAT
值来自:
秘钥参考:
名称:github-pat
关键:拍
体积安装:
- 名称:git-private-key
mountPath: "/data/secrets/"
卷:
- 名称:git-private-key
秘密:
秘密名称:github-private-key
默认模式:0600

如果您删除了entrypoint.sh的 ssh 密钥部分,请删除此部分

体积安装:
- 名称:git-private-key
mountPath: "/data/secrets/"
卷:
- 名称:git-private-key
秘密:
秘密名称:github-private-key
默认模式:0600
  • Build Docker Image 将 {{ docker repo }} 替换为您的 docker repo。并确保您已登录到 docker
docker login
docker build . -t {{ docker repo }}/k8s-github-runner:latest
docker push {{ docker repo }}/k8s-github-runner:latest
  • 创建 kubernetes 命名空间 'github'kubectl create ns github

  • 为 github PAT 令牌和 ssh 密钥创建 kubernetes Secrets

kubectl create secret generic github-pat --from-literalu003d'patu003d{{ private access token }}' -n github
kubectl create secret generic github-private-key --from-fileu003did_rsau003d{{ cicd-buildbot 的 github 私钥 }} -n github
  • 创建 Kubernetes 部署kubectl apply -f deployment.yaml

图像.png

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐