0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitHubAdvent Calendar 2024

Day 11

GitHubActionsのDockerとInsecureなレジストリを使いたいぼくの格闘記

Posted at

はじめに

みなさん、GitHubActionsって使ったことありますか?
多分これを読んでいる方は使ったことがあるのだと思います。

今回は、GitHubActionsで自前のDockerRegistryにPushしようとして詰まった話を書いていきたいと思います。

何があったのか

当時、私の構築したDockerRegistryはMicrok8sのアドオンのContainer-registryで建てたものでした。
しかし、これは当たり前ですが、Nginxを通していなかったので、SSL化されていませんでした。

なぜNginxを通していなかったかというとですね...グローバルIPの固定がされていなかったため、IngressのIPv6→Cloudflareという形でIPv4もプロキシを通して公開できるようにしていたのです。
しかし、ここで問題があり、Cloudflareを通すと、一回のアップロード制限がかかり、DockerPushに失敗するのです。

そこで、IPv6をそのまま指定したり、IPv4のポート指定でゴリ押そうとしたりしてハマったことを書いていこうと思います。

IPv6は使えない

まず、GitHub側が用意してくれているDockerPushのWorkflowのホストのところをIPv6にして実行してみました。

結果

そもそもホストに辿り着かない皆のエラー...
ふぁ!?ですよね。
なぜだと思って、調べてみましたが、全く見つからず...

pingを飛ばすflowも組んでみましたが、GoogleのIPv6にすら繋がらなかったので、もしかするとGitHubActionsがIPv6に対応していないのかもしれません。

何はともあれ、IPv6は諦めました。

Insecureの設定をする

ローカルのDockerでやった設定を思い出すと、何やらJSONのDockerの設定ファイルを編集した覚えがあります。
つまりは...「GitHubActions上でもDockerConfigをいじっちゃえばいいんだ!!」
ということで、/etc/docker/daemon.jsonを編集してみました。

- name: Enable Docker configuration
  run: |
    SW_JSON=""
    SW_JSON="$(sudo cat /etc/docker/daemon.json | jq '.+{ "insecure-registries":["${{ secrets.K8S_DOCKER_REGISTHOST }}"],"max-concurrent-uploads": 1,"debug":true }')"
    echo "${SW_JSON}" | sudo bash -c 'cat -- > /etc/docker/daemon.json'
    sudo cat /etc/docker/daemon.json
    sudo systemctl restart docker || sudo journalctl -xeu docker.service
    sudo systemctl status docker
  shell: bash

上から何をしているかというと、

  1. SW_KSONに元からある/etc/docker/daemon.jsonを編集して、insecure-registriesに対象のホストを追加
  2. /etc/docker/daemon.jsonに書き込む
  3. dockerを再起動し、ログを表示
  4. 最後にステータスを表示

これで、DockerにInsecureRegistry(SSL通信ができないRegistry)であることを設定でき、問題なく動貸すことができました。

最後に

今回のは少々やばいRegistryを使っていたんですよね。
というのも、認証もSSLもないとかいうガバガバだったのですよ...

最終的には、HarborというHelmChartのRepoにもなるようなものを導入しました。
IPv4問題は、VPSにNginxを入れてリバースプロキシさせて解決しました。

Harborについては、以下の記事でも紹介しているので、興味がある方は読んでいただくと幸せになれるかもしれません。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?