自宅の Kubernetes クラスタ(クラスタになっていない)に GitHub Action Runner を立てられるようにした。

よく自作アプリをコンテナ形式にするので、それを公開リポジトリにしなくてもビルドできるようにするのが目的。 Runner に加えて Container Registry もクラスタ内に置くことで、すべてを自己完結させることを目指した。

buildkitd を常駐させたり、セキュリティを考慮して NetworkPolicy を追加するなどしていたが、一番難儀したのが Container Registry のネットワーク上の経路。

最初一度インターネット上の経路を経由するようにしてしまい、イメージを push するときに Cloudflare Tunnel の上限にかかるなどしてしまっていたのだが、その後 CoreDNS とか、ノードの /etc/hosts を書き換えるなどして、 push から pull までがクラスタ内のローカルで完結されるようになった。

まあ今後も続けてこういったローカルインフラ構築をやっていく。