@kyanny's blog

My thoughts, my life. Views/opinions are my own.

Actions Runner Controller (ARC) with Vagrant

TL;DR

Docker/minikute/Helm のインストールまでやってくれる Vagrantfile テンプレートを作った。これ使うと ARC インストール手順の直前までやってくれる。

github.com

wget https://raw.githubusercontent.com/kyanny/vagrantfile-template-docker-minikube/main/Vagrantfile.erb
vagrant init --template Vagrantfile.erb generic/ubuntu2204
vagrant up

アクション ランナー コントローラーのインストール から続きをやれば良い。

Quickstart

docs.github.com

Vagrant

vagrant init generic/ubuntu2204
vagrant up
vagrant ssh

Docker

Vagrant の Docker Provisioner を使えば一撃でインストールしてくれる。一般ユーザー権限で docker コマンド使えるようにするのもやってくれる。が、一応マニュアルの手順も書いておく。

Install Docker Engine on Ubuntu -> Install using the convenience script🔗

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

動作確認

sudo docker run hello-world

sudo なしで docker run できるように

Linux post-installation steps for Docker Engine -> Manage Docker as a non-root user🔗

sudo groupadd docker
sudo usermod -aG docker $USER

一度ログアウトして VM 再起動

logout
vagrant reload
vagrant ssh

動作確認

docker run hello-world

minikute

minikube start

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

クラスター作成

minikube start

動作確認

minikube kubectl -- get po -A

kubectl コマンドが通るように

sudo ln -s $(which minikube) /usr/local/bin/kubectl

動作確認

kubectl get pods -A

Helm

Installing Helm -> From Script

curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh

動作確認

helm

ARC

ここまでがすでに十分長い。。

アクション ランナー コントローラーのインストール

NAMESPACE="arc-systems"
helm install arc \
    --namespace "${NAMESPACE}" \
    --create-namespace \
    oci://ghcr.io/actions/actions-runner-controller-charts/gha-runner-scale-set-controller

ランナー スケール セットの構成

GitHub の Personal Access Token (PAT) を作っておく。

GitHub API に対する認証を行う -> personal access token (classic) で ARC の認証を行う

GITHUB_PAT="ghp_************************************"
GITHUB_CONFIG_URL="https://github.com/<OWNER>/<REPO>"
INSTALLATION_NAME="arc-runner-set"
NAMESPACE="arc-runners"
helm install "${INSTALLATION_NAME}" \
    --namespace "${NAMESPACE}" \
    --create-namespace \
    --set githubConfigUrl="${GITHUB_CONFIG_URL}" \
    --set githubConfigSecret.github_token="${GITHUB_PAT}" \
    oci://ghcr.io/actions/actions-runner-controller-charts/gha-runner-scale-set

動作確認

helm list -A
kubectl get pods -n arc-systems

ワークフロー実行

やっと実際の動作確認。。

ここはランナー スケール セットの使用の手順通り、ワークフローファイルを作ってワークフローを実行できるか確認する。