GitLabのCI/CD環境をRancherでインストール (2) - サービスの連携

RancherでGitLabをインストールし、GitLab Container RegistryやGitLab Runnerを連携させてCI/CD環境を構築します。NFSへの永続化やバックアップも考慮します。この記事で前編で構築したサービスを連携します

はじめに

この記事は、前回の記事の続きです。前回は各サービスを稼働させるところまでを行いました。 この記事では、それらを連携させてCI/CD環境を構築します。

前回の記事: GitLabのCI/CD環境をRancherでインストール (1) - サービスの構築

RunnerをGitLabに登録

GitLabで登録トークンを確認

  1. GitLabに管理者アカウントでログイン
  2. 管理者エリア > Runnerページ (/admin/runners) に移動
  3. 「Set up a shared Runner manually」の手順に表示されているURLと登録トークンを確認

Rancherで登録コマンドを実行

対話型で登録する方法や別のオプションもあります。必要に応じて公式ドキュメントも見てください。

https://docs.gitlab.com/runner/register/#docker(公式)

  1. Rancherにログイン
  2. ワークロードを表示
  3. GitLab Runnerワークロードのメニューから「シェルを実行」をクリック
  4. コマンドラインに次を入力(変数部は置き換えて実行)

    gitlab-runner register -n \
      --url $GITLAB_URL \
      --registration-token $REGISTRATION_TOKEN \
      --executor docker \
      --description "Docker Runner" \
      --docker-image "docker:stable" \
      --docker-privileged
    • $GITLAB_URL : 管理者エリアで確認したURL
    • $REGISTRATION_TOKEN : 管理者エリアで確認した登録トークン

GitLabで登録されたことを確認

  1. GitLabに管理者アカウントでログイン
  2. 管理者エリア > Runnerページ (/admin/runners) に移動
  3. Runnerの一覧に登録したRunnerが表示されていることを確認

DockerがHTTPでプライベートレジストリにアクセスするように設定

GitLab Container RegistryはHTTPサービスとして稼働しています。 DockerからのレジストリへのアクセスはデフォルトではHTTPSとして接続されるため、そのままではエラーになります。 このレジストリへはHTTPで接続するように設定します。

RancherOSで設定を行います。

/etc/docker/daemon.json
{
  "insecure-registries": [
    "registry.gitlab.home:80"
  ]
}

registry.gitlab.home:80前の記事で登録したレジストリのホストです。 ポート番号(:80)も明示しないとうまく動作しませんでした。

RancherOSを再起動すると設定が反映されます。 DockerやRancherでイメージを指定するときは registry.gitlab.home:80/foo/foo:latest のようにポート込みで指定します。

Rancherにレジストリのログイン情報を登録

Rancherがプライベートレジストリにアクセスできるように認証情報を登録します。

  1. Rancherにログイン
  2. メニューからプロジェクトを選択し、「リソース」 > 「シークレット」をクリック
  3. 「レジストリ」タブを選択し、「レジストリを追加」ボタンをクリック
項目入力例備考
名前gitlab任意の名前
アドレスカスタム: registry.gitlab.home:80レジストリのホスト
ユーザー名GitLabのユーザー
パスワードGitLabのユーザーのパスワード

これで、プライベートレジストリに登録したイメージをRancherからデプロイできるようになりました。

GitLabのプロジェクト毎の設定

前記の手順では、各サービスを連携させて、以下の流れを半自動的に行える環境を構築しました。

  1. GitLabのリポジトリにコミット/Push
  2. テスト・ビルドを自動的に実行
  3. Dockerイメージを自動生成してプライベートリポジトリに自動登録
  4. Rancherでプライベートリポジトリのイメージをデプロイ

1 のパイプラインの起動条件や、2,3 のジョブの処理内容は、GitLabに作成したリポジトリのルートに .gitlab-ci.yml というファイルを置くことで指定します。 GitLabのプロジェクトの詳細ページにある「CI/CDを設定」ボタンを押すと、GitLabのUIからテンプレートを元に生成することもできます。

ファイルの詳細については公式ドキュメントを見てください。

https://docs.gitlab.com/ce/ci/yaml/README.html(公式)

バックアップについて

次の記事ではバックアップの仕組みを構築します。 バックアップ対象はGitLabに登録したリポジトリやプロジェクトです。 バックアップ処理もRancherを使って定期的に自動実行するようにします。