GitLab導入・環境構築の完全ガイド

システム開発

ソフトウェア開発の効率を上げるためにGitLabの導入を検討していませんか?本記事では、GitLabの導入から環境構築までのステップを詳しく解説します。GitLabを使うことで、プロジェクト管理が一元化され、チームの生産性が向上します。この記事を読めば、GitLabのメリットを最大限に活かす方法がわかります。

GitLabとは?導入のメリット

GitLabは、オープンソースのソフトウェア開発プラットフォームで、ソースコード管理(SCM)だけでなく、継続的インテグレーション/継続的デリバリー(CI/CD)、プロジェクト管理、セキュリティスキャンなど、多彩な機能を提供します。GitHubやBitbucketと同様にGitリポジトリをホスティングし、開発者がコードを効率的に管理、共有、レビューすることを可能にします。

導入のメリット

  1. 一元化された管理: GitLabは、プロジェクト管理、コードレビュー、CI/CDなどの機能を一つのプラットフォームに統合しています。これにより、複数のツールを切り替える手間が省け、開発効率が向上します。
  2. 強力なCI/CD機能: GitLabのCI/CD機能を使用すると、コードのビルド、テスト、デプロイを自動化できます。パイプラインを簡単に設定し、開発からリリースまでのプロセスを迅速かつ確実に行うことができます。
  3. オープンソースとセルフホスティング: GitLabはオープンソースで提供されているため、企業は自身のインフラにGitLabをインストールして使用することができます。これにより、データの完全なコントロールとカスタマイズが可能になります。
  4. 豊富なインテグレーション: GitLabは、さまざまなサードパーティツールやサービスとの統合が容易です。これにより、既存の開発環境やワークフローにスムーズに組み込むことができます。
  5. セキュリティ機能の充実: セキュリティスキャンやコード品質チェックなどのセキュリティ機能が充実しており、開発プロセスの早い段階で問題を発見し対処することが可能です。

GitLabの導入により、開発チームは効率的にコラボレーションでき、プロジェクトの全体的な管理が容易になります。多機能で柔軟性が高く、さまざまな規模のプロジェクトに適応できる点が、GitLabの大きな魅力です。

GitLabの環境要件と準備

GitLabをスムーズに導入するためには、システム要件や事前準備が重要です。ここでは、必要なサーバーのスペック、インストール前に用意するべきソフトウェア、ネットワーク設定などを詳しく説明します。

システム要件

  1. ハードウェア要件:
    • CPU: 少なくとも4コア
    • メモリ: 最低4GBのRAM(8GB以上推奨)
    • ストレージ: 10GB以上の空きディスクスペース(プロジェクトの規模に応じて増加)
  2. ソフトウェア要件:
    • オペレーティングシステム: Ubuntu 20.04, Debian 10, CentOS 8などのLinuxディストリビューション
    • 依存パッケージ:
      • curl: データ転送用
      • openssh-server: SSHアクセス用
      • ca-certificates: SSL証明書管理用
      • tzdata: タイムゾーンデータ用
      • perl: スクリプト言語用
    • データベース: デフォルトではPostgreSQLが使用されますが、外部のデータベース(例: MySQL, Oracle)もサポートされています。

ネットワーク設定

  1. ドメイン名: GitLabを利用するためには、FQDN(完全修飾ドメイン名)を設定することが推奨されます。これにより、アクセスや管理が容易になります。
  2. ポート設定:
    • GitLabはデフォルトでHTTP (80)およびHTTPS (443)を使用します。必要に応じてこれらのポートを開放してください。
    • SSHアクセスにはポート22が必要です。
  3. ファイアウォールとセキュリティグループ: ファイアウォールの設定を確認し、必要なポート(80, 443, 22)が開放されていることを確認してください。例えば、以下のコマンドを使用して確認できます。
```bash
sudo ufw status
sudo ufw allow 80
sudo ufw allow 443
sudo ufw allow 22

クラウド環境を使用する場合は、セキュリティグループの設定も適切に行います。

事前準備

  1. ユーザーアカウントの作成: GitLabをインストールする前に、専用のユーザーアカウント(例: gitlab)を作成します。このユーザーはGitLabのサービスを実行するために使用されます。
  2. 必要なパッケージのインストール: GitLabのインストール前に、必要な依存パッケージをインストールします。以下のコマンドを実行して準備を整えます。
    sudo apt-get update
    sudo apt-get install -y curl openssh-server ca-certificates tzdata perl
    
  3. SSL証明書の準備: HTTPSでのセキュアな接続を確保するために、SSL証明書を準備します。Let’s Encryptなどの無料の証明書プロバイダを利用することも可能です。

これらの準備を事前に行うことで、GitLabのインストールをスムーズに進めることができます。次のステップでは、実際のインストール手順について説明します。

GitLabのインストール方法

GitLabのインストールは、公式リポジトリを使用する方法と、Dockerを利用する方法の2つが一般的です。ここでは、それぞれの手順を詳しく解説します。

公式リポジトリからのインストール

  1. リポジトリの追加: まず、GitLabの公式リポジトリを追加します。以下のコマンドを実行してください。
    curl <https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh> | sudo bash
    
  2. GitLabのインストール: リポジトリが追加されたら、GitLabをインストールします。外部URL(EXTERNAL_URL)としてGitLabのドメインを設定してインストールを行います。以下は、ドメインがgitlab.example.comの場合の例です。
    sudo EXTERNAL_URL="<http://gitlab.example.com>" apt-get install -y gitlab-ee
    
  3. GitLabの設定: インストールが完了したら、GitLabの初期設定とサービスの開始を行います。以下のコマンドを実行して設定を読み込み、GitLabサービスを開始します。
    sudo gitlab-ctl reconfigure
    

Dockerを利用したインストール

  1. Dockerのインストール: まず、Dockerがインストールされている必要があります。Dockerがインストールされていない場合は、以下のコマンドを実行してインストールします。
    sudo apt-get update
    sudo apt-get install -y docker-ce docker-ce-cli containerd.io
    
  2. GitLab Dockerイメージの取得: Docker HubからGitLabの公式イメージを取得します。以下のコマンドを実行してください。
    docker pull gitlab/gitlab-ee:latest
    
  3. GitLabコンテナの起動: GitLabコンテナを起動します。以下のコマンドで、GitLabがhttp://gitlab.example.comでアクセスできるように設定します。
    docker run --detach \\
      --hostname gitlab.example.com \\
      --publish 443:443 --publish 80:80 --publish 22:22 \\
      --name gitlab \\
      --restart always \\
      --volume /srv/gitlab/config:/etc/gitlab \\
      --volume /srv/gitlab/logs:/var/log/gitlab \\
      --volume /srv/gitlab/data:/var/opt/gitlab \\
      gitlab/gitlab-ee:latest
    

インストール後の確認

  1. Webブラウザでのアクセス: インストールが完了したら、ブラウザでGitLabのURL(例: http://gitlab.example.com)にアクセスして、ログイン画面が表示されることを確認します。
  2. 初回ログイン: 初回ログイン時には、デフォルトの管理者アカウント(rootユーザー)でログインする必要があります。ログイン画面が表示されたら、指示に従ってrootユーザーの新しいパスワードを設定してください。
  3. 動作確認: ログイン後、基本的な機能(プロジェクトの作成、リポジトリの管理など)が正常に動作するか確認します。

これで、GitLabのインストールは完了です。次に、初期設定とプロジェクト作成の方法について解説します。

GitLabの初期設定とプロジェクト作成

GitLabをインストールした後、初期設定とプロジェクトの作成を行います。これにより、チームメンバーが効率的にコラボレーションできる環境を整えることができます。

初期設定

  1. 管理者アカウントの設定: ブラウザでGitLabのURLにアクセスし、初回アクセス時に表示される画面でrootユーザーのパスワードを設定します。設定後、管理者としてログインし、GitLabの設定を行います。
  2. ユーザーの追加: プロジェクトに参加するユーザーを追加します。管理者ダッシュボードから「ユーザー」セクションに移動し、「新しいユーザーを追加」をクリックします。名前、メールアドレス、ユーザー名、パスワードを入力して「ユーザーを作成」をクリックします。
  3. グループの作成: 複数のプロジェクトを管理する場合、グループを作成することでプロジェクトの整理が容易になります。ダッシュボードから「グループ」を選択し、「新しいグループを作成」をクリックしてグループ名や説明を入力します。
  4. アクセス権の設定: プロジェクトやグループに対するユーザーのアクセス権を設定します。ユーザーをプロジェクトやグループに追加する際に、役割(オーナー、メンテナー、開発者、レポーター、ゲスト)を指定して権限を管理します。

プロジェクトの作成

  1. 新しいプロジェクトの作成: ダッシュボードの「プロジェクト」セクションに移動し、「新しいプロジェクトを作成」をクリックします。プロジェクト名、説明、可視性レベル(公開、内部、非公開)を設定します。
  2. リポジトリの初期化: 新規プロジェクトでは、リポジトリを初期化することが推奨されます。「リポジトリを初期化」オプションを選択し、READMEファイルの追加を行います。
  3. リポジトリのクローン: プロジェクトをローカル環境で作業するために、リポジトリをクローンします。プロジェクトページに移動し、「HTTPS」または「SSH」のURLをコピーし、以下のコマンドを実行してクローンします。
    git clone <https://gitlab.example.com/group/project.git>
    
  4. 初回コミットとプッシュ: ローカルリポジトリでコードを作成し、初回コミットを行います。以下のコマンドを実行します。
    git add .
    git commit -m "Initial commit"
    git push origin main
    

    GitLabに戻り、プロジェクトのリポジトリページでコミットが反映されていることを確認します。

基本的な操作

  1. Issueの作成: プロジェクト内でタスクやバグを管理するために、Issueを作成します。「Issues」セクションに移動し、「新しいIssueを作成」をクリックしてタイトルや説明を入力します。
  2. Merge Requestの作成: コードの変更をプロジェクトに統合するために、Merge Requestを作成します。変更をコミットした後、「Merge Request」セクションで新しいMerge Requestを作成し、レビュープロセスを開始します。
  3. CI/CDの設定: GitLabのCI/CD機能を利用するために、.gitlab-ci.ymlファイルをプロジェクトに追加します。このファイルには、自動ビルド、テスト、デプロイの設定が記述されます。.gitlab-ci.ymlファイルを作成し、プロジェクトのルートディレクトリに配置します。

これで、GitLabの初期設定とプロジェクト作成が完了です。次のステップでは、GitLabのCI/CD機能の設定と活用方法について解説します。

GitLab CI/CDの設定と活用

GitLabの強力なCI/CD(継続的インテグレーション/継続的デリバリー)機能を活用することで、開発プロセスを自動化し、効率を大幅に向上させることができます。ここでは、GitLab CI/CDの設定方法とその活用方法について詳しく説明します。

パイプラインの作成

  1. .gitlab-ci.ymlファイルの作成: GitLab CI/CDの設定は、プロジェクトルートに配置する.gitlab-ci.ymlファイルで行います。このファイルには、ビルド、テスト、デプロイの各ステージを定義します。以下はシンプルな例です。
    stages:
      - build
      - test
      - deploy
    
    build_job:
      stage: build
      script:
        - echo "Compiling the code..."
        - echo "Build complete!"
    
    test_job:
      stage: test
      script:
        - echo "Running tests..."
        - echo "Tests complete!"
    
    deploy_job:
      stage: deploy
      script:
        - echo "Deploying application..."
        - echo "Deployment complete!"
    
  2. パイプラインのトリガー: コードがリポジトリにプッシュされると、GitLabは自動的にパイプラインをトリガーし、定義されたステージを順に実行します。パイプラインの状態はプロジェクトの「CI/CD」セクションで確認できます。

ランナーの設定

  1. GitLab Runnerのインストール: パイプラインを実行するには、GitLab Runnerが必要です。以下のコマンドでランナーをインストールします。
    sudo apt-get update
    sudo apt-get install -y gitlab-runner
    
  2. ランナーの登録: ランナーをGitLabに登録します。プロジェクトの「Settings」->「CI/CD」->「Runners」セクションで登録用のトークンを取得し、以下のコマンドを実行します。
    sudo gitlab-runner register
    

    登録プロセスでは、GitLabのURL、登録トークン、説明、タグ、エグゼキュータ(例: shell)を指定します。

自動デプロイの仕組み

  1. デプロイメントステージの設定: .gitlab-ci.ymlファイルにデプロイメントステージを追加し、デプロイメントスクリプトを定義します。以下は、Herokuへの自動デプロイの例です。
    deploy_to_heroku:
      stage: deploy
      script:
        - apt-get update -qy
        - apt-get install -y ruby-dev
        - gem install dpl
        - dpl --provider=heroku --app=my-app --api-key=$HEROKU_API_KEY
    

    : HEROKU_API_KEYはGitLabの「Settings」->「CI/CD」->「Variables」で環境変数として設定します。my-appはHerokuアプリケーションの名前に置き換えてください。

  2. 環境変数の設定: デプロイメントに必要なシークレットやAPIキーは、プロジェクトの「Settings」->「CI/CD」->「Variables」で設定します。これにより、.gitlab-ci.yml内でシークレットを安全に使用できます。

CI/CDの活用事例

  1. 自動テスト: コードがプッシュされるたびに自動テストを実行し、品質を確保します。テストが失敗した場合、開発者に通知され、修正が促されます。
  2. 自動ビルドとデプロイ: 新しいコードがリリースブランチにマージされると、アプリケーションのビルドとデプロイが自動的に行われます。これにより、人為的なミスを減らし、リリースサイクルを短縮できます。
  3. ステージング環境のセットアップ: 本番環境へのデプロイ前に、ステージング環境にデプロイして動作確認を行います。これにより、本番環境への影響を最小限に抑えながら、リリースの準備が整います。

これで、GitLab CI/CDの基本的な設定と活用方法について理解できました。次に、トラブルシューティングと運用のベストプラクティスについて解説します。

トラブルシューティングと運用のベストプラクティス

GitLabの導入後に直面する可能性がある一般的なトラブルと、それらを解決するための方法について説明します。また、安定した運用を実現するためのベストプラクティスも紹介します。

よくあるトラブルと対処法

  1. インストールエラー: GitLabのインストール中にエラーが発生する場合、ログファイルを確認して原因を特定します。多くの場合、依存パッケージの不足やネットワークの設定ミスが原因です。まず、以下のコマンドでログを確認します。
    sudo gitlab-ctl tail
    

    依存パッケージの不足が原因の場合、以下のコマンドを実行して再度インストールを試みます。

    sudo apt-get update
    sudo apt-get install -f
    sudo EXTERNAL_URL="<http://gitlab.example.com>" apt-get install -y gitlab-ee
    
  2. パイプラインの失敗: パイプラインが失敗する場合、.gitlab-ci.ymlファイルの設定ミスやスクリプトのエラーが考えられます。具体的なエラーメッセージを確認し、設定を修正します。CI/CDジョブのログは、GitLabの「CI/CD」セクションで確認できます。以下の手順を参考に修正してください。 ・「CI/CD」セクションで失敗したジョブをクリックします。 ・ログを確認し、エラーの詳細を把握します。 ・.gitlab-ci.ymlファイルを修正し、再度コミットとプッシュを行い、パイプラインを再実行します。
    git add .gitlab-ci.yml
    git commit -m "Fix CI/CD pipeline"
    git push origin main
    
  3. パフォーマンスの低下: GitLabのパフォーマンスが低下した場合、リソース(CPU、メモリ、ディスクI/O)の使用状況を確認します。必要に応じてサーバーのリソースを増強するか、パフォーマンスチューニングを行います。以下のコマンドでGitLabサービスを再起動して改善することもあります。
    sudo gitlab-ctl restart
    
  4. ネットワーク接続の問題: GitLabへの接続に問題がある場合、ファイアウォールやプロキシの設定を確認します。以下のコマンドでファイアウォールの設定を確認し、必要なポート(80, 443, 22)が開放されているか確認します。
    sudo ufw status
    sudo ufw allow 80
    sudo ufw allow 443
    sudo ufw allow 22
    

    また、GitLabの設定ファイル(/etc/gitlab/gitlab.rb)を編集し、外部URLやポート設定が正しいことを確認します。設定を変更した場合、以下のコマンドでGitLabを再設定します。

    sudo gitlab-ctl reconfigure
    

運用のベストプラクティス

  1. 定期的なバックアップ: データ損失を防ぐために、定期的なバックアップを設定します。GitLabにはバックアップコマンドが組み込まれており、以下のコマンドで手動バックアップを実行できます。
    sudo gitlab-rake gitlab:backup:create
    

    自動バックアップをスケジュールするには、Cronジョブを設定します。以下の手順で設定します。

    1. Cronジョブの設定を編集します。
      sudo crontab -e
      
    2. 以下の行を追加して、毎日深夜2時にバックアップを実行するように設定します。
      0 2 * * * /usr/bin/sudo /opt/gitlab/bin/gitlab-rake gitlab:backup:create
      
  2. セキュリティ対策:
    • アップデートの適用: GitLabの最新バージョンを定期的にチェックし、セキュリティパッチやバグ修正が含まれるアップデートを適用します。
    • ユーザー権限の管理: 最小権限の原則に従い、ユーザー権限を適切に設定します。特に管理者権限を持つユーザーは最小限に抑えます。
    • HTTPSの利用: SSL証明書を設定して、通信を暗号化します。
  3. モニタリングとアラート設定: GitLabのパフォーマンスを監視し、異常が発生した場合に迅速に対応できるようにします。PrometheusやGrafanaを利用して、システムの状態をリアルタイムで監視します。また、異常検知時にはアラートを送信する設定を行います。以下の手順で導入します。
    1. Prometheusのインストール:
      sudo apt-get update
      sudo apt-get install prometheus
      
    2. GitLabの設定ファイルを編集: /etc/gitlab/gitlab.rbを編集し、Prometheusの統合を有効にします。
      prometheus['enable'] = true
      
    3. GitLabの再構成:
      sudo gitlab-ctl reconfigure
      
    4. Grafanaのインストール:
      sudo apt-get install -y software-properties-common
      sudo add-apt-repository "deb <https://packages.grafana.com/oss/deb> stable main"
      sudo apt-get update
      sudo apt-get install grafana
      sudo systemctl start grafana-server
      sudo systemctl enable grafana-server
      
    5. GrafanaでPrometheusをデータソースとして設定:
      • Grafanaのウェブインターフェースにアクセスし、ログインします。
      • データソースの設定からPrometheusを追加し、URLをhttp://localhost:9090に設定します。
  4. パフォーマンスチューニング:
    • キャッシュの利用: GitLabのキャッシュ機能を活用し、パフォーマンスを向上させます。
    • データベースの最適化: PostgreSQLの設定を最適化し、クエリのパフォーマンスを向上させます。
    • リソースのスケーリング: 必要に応じて、サーバーリソースの増強や分散配置を行います。
  5. ドキュメントとナレッジシェア: トラブルシューティングや運用に関する知識をチーム内で共有します。GitLabのWikiやIssueを活用して、ドキュメントを整理し、ナレッジベースを構築します。

これらのトラブルシューティング方法とベストプラクティスを実践することで、GitLabの運用を安定させ、効率的な開発環境を維持できます。

まとめ

本記事では、GitLabの導入から環境構築、運用までの流れを詳しく解説しました。これらの手順を踏むことで、チームのプロジェクト管理が効率化され、生産性が向上します。GitLabを活用して、よりスムーズな開発プロセスを実現しましょう。

コメント

タイトルとURLをコピーしました