いろいろあって、GitLabを構築を試す必要があったので手順のメモ。普段使っている検証用の VMware環境は、kubernetesが動いていて、特にメモリ確保が厳しそうだったので、 WindowsのHyper-V上に作ることにした。
Hyper-Vに仮想マシンを作る
とにかくHyper-Vのネットワークが難解で、デフォルトスイッチで作ると OS起動のたびにIPアドレスが変動するし、 外部ネットワークも下手に作ると母艦で通信できなくなるという なんでこんなことになってるの?って動きをしてくださいますので、 “管理オペレーティング システムにこのネットワーク アダプターの共有を許可する” にチェックをつけて、外部ネットワークにつなげる。 これにより、VMware Playerなどのブリッジ接続と同じになる。
多分これが一番早いと思います。
検索すると、vNICをふたつ作って内部ネットワークを固定して、インターネット通信は デフォルトスイッチにするのがよいってのが多々あったけど、めんどくさいよ。
OSは適当に最新のFedoraのISOをもってきてインストールした。
ホスト名は、シンプルに gitlab.local
にしている。
ちなみに、SELinuxとFirewallは無効化している。
GitLabをインストールする
GitLab EEには魅力的な機能が多数あるが、今回はざっと作るだけなので CEの機能があれば十分。 なのだが、公式サイトにも別にライセンス登録しないEEはCEと変わらんのでEE入れれば?ってあるので GitLab EEを入れることにする。
https://www.gitlab.jp/install/ce-or-ee/
Fedoraは公式には対応していないので、あたかもRHEL8であるかのようにごまかして導入する必要がある。
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh -o script.sh
chmod +x script.sh
os=el dist=8 ./script.sh
EXTERNAL_URL="http://gitlab.local" dnf install -y gitlab-ee
インストールがおわったら、 http://gitlab.local
にアクセスすると、 root
ユーザのパスワード設定が求められ、
設定後ログインが可能になる。
自己署名証明書を作る
イメージレジストリを有効化したいが、こちらはhttpだとdocker操作時に怒られてしまって面倒なので、証明書を準備する。 Let’s Encriptのほうが楽だと思うのだけど、今回は自己署名証明書を作ることにする。
openssl req -newkey rsa:4096 -nodes -sha256 -keyout registry.gitlab.local.key -x509 -days 3650 -out registry.gitlab.local.crt
CNだけ指定した。
Country Name (2 letter code) [XX]:
State or Province Name (full name) []:
Locality Name (eg, city) [Default City]:
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:registry.gitlab.local
Email Address []:
GitLabのイメージレジストリの有効化
mkdir -p /etc/gitlab/ssl
cp registry.gitlab.local.crt registry.gitlab.local.key /etc/gitlab/ssl/
/etc/gitlab/gitlab.rb
を編集して、以下の行を追加(コメント化されてあるので、
コメント化解除して値を書き換え)。
registry_external_url 'https://registry.gitlab.local'
gitlab_rails['registry_host'] = "registry.gitlab.local"
変更を反映する。
gitlab-ctl reconfigure
試しに適当にプロジェクトを作ってみると、コンテナレジストリも有効化されていることがわかる。
イメージをpushする
テストとして、docker login & イメージプッシュしたいが、オレオレ証明書なので そのままでは利用できない。
- Linuxの場合
先ほど作った registry.gitlab.local.crt を クライアント側(docker loginする側)の
/etc/docker/certs.d/registry.gitlab.local/ca.crt
にコピーする。
ディレクトリがなければ作成する。
- Windowsの場合
Docker for Windowsのダッシュボードを開いて、SettingsのDocker Engineから以下のように設定する。
{
"registry-mirrors": [],
"insecure-registries": ["registry.gitlab.local"],
"debug": true,
"experimental": false
}
これで、docker loginならびにdocker pushできるはず。
Share