nakayumcの技術ブログ

エンジニア2年目のブログです。

AlmaLinux 環境に GitLab CE をインストールしてコンテナレジストリを有効化

2023/05/07 GItLab再構成の部分に一部追記しました。


こんにちは、nakayumc です。
最近、仕事でよく GitLab を使用する機会が多くなったので検証環境を作りました。その備忘録として残しておきます。

また、今回はコンテナレジストリ機能を使用するので、有効化する方法も記載しています。

環境

環境は以下の通りです。
今回は AlmaLinux 8.7 に GitLab CE をインストールします。

  • OS: AlmaLinux Relese 8.7
  • GitLab: GitLab-CE 15.11.0

IPアドレスなどは以下の表です。

役割 IPアドレス ホスト名
GitLab 10.32.64.1 gitlab.int.nakayumc.com

GitLab を gitlab.int.nakayumc.com というドメインで動かす想定で、WEBアクセスは HTTPS を使い、コンテナレジストリのポートは 5050/TCP で動かします。

前提条件

以下の条件を満たしていることを前提としています。

  • SELinuxPermissive か、Disabled の状態であること。
  • firewalld は、http, https, 5050/tcp を開けておくか、firewalld が無効化されていること。

構築時は SELinux や firewalld などで引っかかる可能性があるので、適宜設定してください。

インストール

リポジトリの追加

まず、AlmaLinux の デフォルトリポジトリには GitLab が含まれていないため、リポジトリを追加します。

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | bash

以下のようなメッセージが表示されれば成功です。

Generating yum cache for gitlab_gitlab-ce...
Importing GPG key 0x51312F3F:
 Userid     : "GitLab B.V. (package repository signing key) <packages@gitlab.com>"
 Fingerprint: F640 3F65 44A3 8863 DAA0 B6E0 3F01 618A 5131 2F3F
 From       : https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey
Importing GPG key 0xF27EAB47:
 Userid     : "GitLab, Inc. <support@gitlab.com>"
 Fingerprint: DBEF 8977 4DDB 9EB3 7D9F C3A0 3CFC F9BA F27E AB47
 From       : https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey/gitlab-gitlab-ce-3D645A26AB9FBD22.pub.gpg
Generating yum cache for gitlab_gitlab-ce-source...

The repository is setup! You can now install packages.

次に、以下のコマンドを実行して、リポジトリが追加されていることを確認します。

yum repolist

以下のような出力が得られればOKです。

repo id                                           repo name
appstream                                         Rocky Linux 8 - AppStream
baseos                                            Rocky Linux 8 - BaseOS
extras                                            Rocky Linux 8 - Extras
gitlab_gitlab-ce                                  gitlab_gitlab-ce
gitlab_gitlab-ce-source                           gitlab_gitlab-ce-source

GitLab のインストール

次に、下記のコマンドを実行して、GitLab をインストールします。
時間がかかる場合があるので、気長に待ちましょう。

dnf install -y gitlab-ce

GitLab がインストールされると、以下のようなメッセージが表示されます。
タヌキのアイコン (実はキツネではないことを知ってましたか?) とロゴがかっこいいですね。

It looks like GitLab has not been configured yet; skipping the upgrade script.

       *.                  *.
      ***                 ***
     *****               *****
    .******             *******
    ********            ********
   ,,,,,,,,,***********,,,,,,,,,
  ,,,,,,,,,,,*********,,,,,,,,,,,
  .,,,,,,,,,,,*******,,,,,,,,,,,,
      ,,,,,,,,,*****,,,,,,,,,.
         ,,,,,,,****,,,,,,
            .,,,***,,,,
                ,*,.

     _______ __  __          __
    / ____(_) /_/ /   ____ _/ /_
   / / __/ / __/ /   / __ `/ __ \
  / /_/ / / /_/ /___/ /_/ / /_/ /
  \____/_/\__/_____/\__,_/_.___/
  
Thank you for installing GitLab!
GitLab was unable to detect a valid hostname for your instance.
Please configure a URL for your GitLab instance by setting `external_url`
configuration in /etc/gitlab/gitlab.rb file.
Then, you can start your GitLab instance by running the following command:
  sudo gitlab-ctl reconfigure

For a comprehensive list of configuration options please see the Omnibus GitLab readme
https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md

Help us improve the installation experience, let us know how we did with a 1 minute survey:
https://gitlab.fra1.qualtrics.com/jfe/form/SV_6kVqZANThUQ1bZb?installation=omnibus&release=15-11

    Verifying  : gitlab-ce-15.11.0-ce.0.el8.x86_64                        1/1

Installed:
  gitlab-ce-15.11.0-ce.0.el8.x86_64

Complete!

GitLab の設定

次に、GitLab の設定を行います。
ここで変更するのは、「ドメイン名の変更」と、「コンテナレジストリ機能を有効化」を行います。

設定ファイルは /etc/gitlab/gitlab.rb にあります。

vi /etc/gitlab/gitlab.rb

ドメイン名の変更

以下のように、external_urlドメイン名を設定します。
ここで注意が必要なのは、今回はHTTPSでアクセスするので https:// から始まるドメインを設定してください。

IPアドレスで構築したい場合は、ドメインの部分をIPアドレスに読み変えてください。
(32行目あたり)

# external_url 'http://gitlab.example.com'
external_url 'https://gitlab.int.nakayumc.com'

コンテナレジストリ機能を有効化

次に、コンテナレジストリ機能を有効化します。
今回は、コンテナレジストリのポート番号を 5050 に設定します。
(861行目あたり)

# registry_external_url 'https://registry.example.com'
registry_external_url 'https://gitlab.int.nakayumc.com:5050'

以上で、GitLab の設定は完了です。

GitLab の再構成

続いて、GitLab の再構成を行います。以下のコマンドを実行してください。
この操作は数分かかるので、気長に待ちましょう。

gitlab-ctl reconfigure

以下のような出力が得られればOKです。

Running handlers:
[2023-04-28T12:30:09-04:00] INFO: Running report handlers
Running handlers complete
[2023-04-28T12:30:09-04:00] INFO: Report handlers complete
Infra Phase complete, 13/852 resources updated in 03 minutes 57 seconds
gitlab Reconfigured!

再構成時のエラー

2023/05/07 追記

設定ファイルを変更して、再構成すると以下のエラーが起きました。

[2023-05-07T14:06:14+09:00] ERROR: Running exception handlers
There was an error running gitlab-ctl reconfigure:

letsencrypt_certificate[gitlab.int.nakayumc.com] (letsencrypt::http_authorization line 6) had an error: RuntimeError: acme_certificate[staging] (letsencrypt::http_authorization line 43) had an error: RuntimeError: ruby_block[create certificate for gitlab.int.nakayumc.com] (letsencrypt::http_authorization line 110) had an error: RuntimeError: [gitlab.int.nakayumc.com] Validation failed, unable to request certificate, Errors: [{url: https://acme-staging-v02.api.letsencrypt.org/acme/chall-v3/6386713374/-CEe9A, status: invalid, error: {"type"=>"urn:ietf:params:acme:error:dns", "detail"=>"no valid A records found for gitlab.int.nakayumc.com; no valid AAAA records found for gitlab.int.nakayumc.com", "status"=>400}} ]

今回は、GitLabサーバを外に公開してないので「LetsEncrypt側から見えないよ」というエラーが起きています。 私の場合は、もう一度 gitlab-ctl reconfigure コマンドを実行することでエラー解消されました。

それでも解消されない方は証明書を発行する必要があるので、以下のサイトが参考になると思われます。 blogs.networld.co.jp

GitLab にログインと動作確認

GitLab にログインするために、ブラウザからアクセスします。
ユーザ名は root、パスワードは /etc/gitlab/initial_root_password で確認できます。

cat /etc/gitlab/initial_root_password

リポジトリの作成

ログインができたら、グループとリポジトリを作成します。
今回はこのような構成にします。

作成が出来ると、以下のような画面が表示されます。

コンテナレジストリの確認

コンテナレジストリは左のサイドバーから、Packages & Registries を選択して、
Container Registry」という項目があれば、正常にコンテナレジストリが有効化されています。

まとめ

今回は、GitLab をインストールして、コンテナレジストリを有効化するまでを行いました。
GitLabのコンテナレジストリで遊んでみたい方は、ぜひ試してみてください。