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で登録トークンを確認
- GitLabに管理者アカウントでログイン
- 管理者エリア > Runnerページ (/admin/runners) に移動
- 「Set up a shared Runner manually」の手順に表示されているURLと登録トークンを確認
Rancherで登録コマンドを実行
対話型で登録する方法や別のオプションもあります。必要に応じて公式ドキュメントも見てください。
https://docs.gitlab.com/runner/register/#docker(公式)
- Rancherにログイン
- ワークロードを表示
- GitLab Runnerワークロードのメニューから「シェルを実行」をクリック
コマンドラインに次を入力(変数部は置き換えて実行)
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で登録されたことを確認
- GitLabに管理者アカウントでログイン
- 管理者エリア > Runnerページ (/admin/runners) に移動
- Runnerの一覧に登録したRunnerが表示されていることを確認
DockerがHTTPでプライベートレジストリにアクセスするように設定
GitLab Container RegistryはHTTPサービスとして稼働しています。 DockerからのレジストリへのアクセスはデフォルトではHTTPSとして接続されるため、そのままではエラーになります。 このレジストリへはHTTPで接続するように設定します。
RancherOSで設定を行います。
{
"insecure-registries": [
"registry.gitlab.home:80"
]
}
registry.gitlab.home:80
は前の記事で登録したレジストリのホストです。 ポート番号(:80)も明示しないとうまく動作しませんでした。
RancherOSを再起動すると設定が反映されます。 DockerやRancherでイメージを指定するときは registry.gitlab.home:80/foo/foo:latest
のようにポート込みで指定します。
Rancherにレジストリのログイン情報を登録
Rancherがプライベートレジストリにアクセスできるように認証情報を登録します。
- Rancherにログイン
- メニューからプロジェクトを選択し、「リソース」 > 「シークレット」をクリック
- 「レジストリ」タブを選択し、「レジストリを追加」ボタンをクリック
項目 | 入力例 | 備考 |
---|---|---|
名前 | gitlab | 任意の名前 |
アドレス | カスタム: registry.gitlab.home:80 | レジストリのホスト |
ユーザー名 | GitLabのユーザー | |
パスワード | GitLabのユーザーのパスワード |
これで、プライベートレジストリに登録したイメージをRancherからデプロイできるようになりました。
GitLabのプロジェクト毎の設定
前記の手順では、各サービスを連携させて、以下の流れを半自動的に行える環境を構築しました。
- GitLabのリポジトリにコミット/Push
- テスト・ビルドを自動的に実行
- Dockerイメージを自動生成してプライベートリポジトリに自動登録
- Rancherでプライベートリポジトリのイメージをデプロイ
1 のパイプラインの起動条件や、2,3 のジョブの処理内容は、GitLabに作成したリポジトリのルートに .gitlab-ci.yml
というファイルを置くことで指定します。 GitLabのプロジェクトの詳細ページにある「CI/CDを設定」ボタンを押すと、GitLabのUIからテンプレートを元に生成することもできます。
ファイルの詳細については公式ドキュメントを見てください。
https://docs.gitlab.com/ce/ci/yaml/README.html(公式)
バックアップについて
次の記事ではバックアップの仕組みを構築します。 バックアップ対象はGitLabに登録したリポジトリやプロジェクトです。 バックアップ処理もRancherを使って定期的に自動実行するようにします。