GitLab Pagesを有効にする
はじめに
- Dockerで起動しているGitLabで、GitLab Pagesを有効にする手順をメモする。
環境
- GitLabをDockerで構築する にて構築した環境
手順
GitLabのDockerコンテナにログイン
$ docker exec -it ${CONTAINER_ID} /bin/bash/etc/gitlab/gitlab.rbを編集pages_external_url "http://XXX.XXX.XXX.XXX/" ## コメントアウトを外して任意のIPやドメインに変更する gitlab_pages['enable'] = true ## コメントアウトを外し、falseになっているのでtrueに変更する gitlab_pages['external_http'] = ['XXX.XXX.XXX.XXX'] ## これよくわかってない下記コマンドで再設定・再起動
# gitlab-ctl reconfigure # gitlab-ctl restartAdmin Area->Dashboardで有効になっていることを確認

参考
gitlab-runnerを設定する
- 2021/07/02 手順番号がおかしくなっていたため修正
はじめに
5月にgitlabをDockerで構築するところまで実施したので、今度はgitlab-runnerを導入してみた。 そのときの導入手順等メモしておく。
gitlab runnerとは
GitLabにはbuildやtest、deploy、releaseなど一連の作業を自動実行するCI/CD機能があるが、 その機能と組み合わせて使うものがGitLab Runner。GitLab Runnerはこれらのジョブを実行してくれるツール。 リポジトリへのcommitを検知してGitLab Runnerがjobを実行し、実行結果をGitLabから確認したりできる。
本記事の表記
- コマンドラインのプロンプトは
$や#で表記する$は一般ユーザで実行することを表す#は特権ユーザで実行することを表す
##のあとはコメントを表す
環境
作業環境は下記の通りGitLabを導入したサーバ上で行う。
- ハードウェア
| 項目 | 値 | 備考 |
|---|---|---|
| OS | Ubuntu 18.04 | |
| CPU | 4 core | 本家推奨は4core以上 |
| MEM | 4 GB | 本家によるとは4GB以上必須 |
手順
基本的な手順は構築したGitLabにログインし、 管理エリア->Runner->ランナーのインストール手順を表示する に遷移すると
記載されているが記載しておく。
システムのバイナリをダウンロード
$ sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64実行権限付与
$ sudo chmod +x /usr/local/bin/gitlab-runnerGitLab CIのユーザを作成
$ sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bashサービスとしてインストール
$ sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner実行
$ sudo gitlab-runner startRunnerの登録
$ sudo gitlab-runner register --url https://<任意のドメイン>/ --registration-token <トークン>
Runtime platform arch=amd64 os=linux pid=21668 revision=c1edb478 version=14.0.1
Running in system-mode.
Enter the GitLab instance URL (for example, https://gitlab.com/):
[https://<任意のドメイン>/]:
Enter the registration token:
[XXXXXX]: ## トークン
Enter a description for the runner:
[gitlab]:
Enter tags for the runner (comma-separated):
shared ## 任意のタグを付与する
Registering runner... succeeded runner=XXXXXXXX
Enter an executor: ssh, virtualbox, docker+machine, docker-ssh+machine, custom, docker, parallels, shell, kubernetes, docker-ssh:
ERROR: Invalid executor specified
Enter an executor: docker, parallels, shell, ssh, virtualbox, docker+machine, docker-ssh+machine, custom, kubernetes, docker-ssh:
docker
Enter the default Docker image (for example, ruby:2.6):
ubuntu:20.04 ## dockerの場合イメージは自身の好みで。centosがよければそちらを使うでもよし
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
あとがき
今回はインストールまで。ここからが本番で .gitlab-ci.yml とかの設定方法とか諸々試してメモしていく予定。
参考
【自分用】PodDisruptionBudgetとは
2021/07/31 スペルミス修正
メモ書き。調査中で検証は未実施。時間見つけてやりたい。。
PodDisruptionBudgetとは
kubernetes で提供されているオブジェクトの一つ。deployされているpodの最小有効数や最大無効数を指定できる。
使い所
ノードを削除する前のdrainで一斉にpodが無効になったりしないようにしたりするときに使えるらしい。
例えばKubernetes クラスタのあるノードを削除したいときに、サービスpodが当該ノードに残っているとする。これをdrainすると、当該ノードにあったpodは削除され、他のノードにスケジューリングされる。 しかし、他のノードに同じpodがない場合にdrainしてしまうと、有効なpodがなくなり、一時的にサービス断が発生してしまう場合がある。
そこで、PodDisruptionBudgetを利用し、サービスpodの最小有効数を設定する。これにより、サービスpod数が0になるのを防ぎつつ、削除対象のノードからpodをdrainすることができる。
やりたいこと(メモ)
スケールインしたときに、system-pod1つのみ残ったノードがたまにできる。こいつが残っているせいで負荷がかかってないのにずっと減らない。 PoddisruptionBudgetを設定したら、いい感じにスケールインしないか試したい。
参考
Kubernetes道場 21日目 - Cordon / Drain / PodDisruptionBudgetについて
GitLabをDockerで構築する
はじめに
ここ数年業務でGitLab使ってますが、gitとかCIとか機能を全然使いこなせてないなと感じていました。 色々試してみたいとは思いつつ、誤ってcommit消してしまったり、ぶっ壊したらどうしようかなとかビビってできませんでしたので、じゃあ、自分で壊してもいい環境作って使い方勉強しようかな?と思いました。今回はその構築したときの手順をまとめておきます。
留意事項
- 自分用のメモのため、詳しいことは本家GitLab - Docsを参照してください
前提条件
構築環境
今回構築は仮想環境を用意し、本環境上でDocker Imageを利用してGitLabを起動します。 用意した環境は下記の通りです。
- ハードウェア
| 項目 | 値 | 備考 |
|---|---|---|
| OS | Ubuntu 18.04 | |
| CPU | 4 core | 本家推奨は4core以上 |
| MEM | 4 GB | 本家によるとは4GB以上必須 |
- ソフトウェア
| 項目 | 値 | 備考 |
|---|---|---|
| Docker Compose | 1.25.5 |
GitLab とは
- Web型のGitリポジトリマネージャー。GitHubのようなソースコード管理や課題管理(issue)はもちろんのこと、DevOpsライフサイクル全体をカバーするアプリケーションです。ライセンスはMIT Licenseです。利用方法はGitLabのホスティングサービスをするか、オンプレミスorクラウド環境にインストールして利用する方法があります。無料版と有料版があります。
手順
利用するDocker Imageはオムニバスのものを利用します。
構築手順は以下の通り。
- 環境変数
GITLAB_HOMEを設定 docker-compose.ymlを作成
web: image: 'gitlab/gitlab-ee:13.9.6-ee.0' restart: always hostname: '${自分のホスト名}' environment: GITLAB_OMNIBUS_CONFIG: | external_url 'http://${自分のホスト名}' # Add any other gitlab.rb configuration here, each on its own line ports: - '80:80' - '2022:22' volumes: - '$GITLAB_HOME/config:/etc/gitlab' - '$GITLAB_HOME/logs:/var/log/gitlab' - '$GITLAB_HOME/data:/var/opt/gitlab'起動
# docker-compose up -d
- アクセスできるようになるまで結構時間がかかりますので待ちます。
あとがき
Docker Image使って建てればあっという間でしょ!と思ってはじめましたが、あまり考えずにやったら繋がらない、起動しないと無駄にハマってしまいました。。 色々調査しましたが詳細はわからず、結局のところVMのスペックを推奨・要求スペックまであげ、1から入れ直したら正常起動しました。。(自分しか使わないから推奨・要求スペックの半分で大丈夫だろとか考えてたのがいけなかったです。) 一応遭遇したエラーを下記に記載しておきます。
- ブラウザでアクセスしてもGitLabにたどり着けない
待てども待てどもアクセスできるようにならず、docker logを確認したところ下記メッセージが。
There was an error running gitlab-ctl reconfigure: database_objects[postgresql] (postgresql::enable line 148) had an error: RuntimeError: postgresql_user[gitlab] (/opt/gitlab/embedded/cookbooks/cache/cookbooks/gitlab/resources/database_objects.rb line 19) had an error: RuntimeError: execute[create gitlab postgresql user] (/opt/gitlab/embedded/cookbooks/cache/cookbooks/postgresql/resources/user.rb line 11) had an error: RuntimeError: Exhausted service checks and database is still not available
PostgresSQLが利用できるようになってないとかエラーが出ておりました。コンテナ内でプロセス確認したところ起動はしているようでしたが、なんでこんなことになってたのかわかりませんでした。この現象はコンテナ再起動しても改善せず、GITLAB_HOME に指定しているディレクトリのデータ全消しして再作成、コンテナ起動したらでなくなりました。
- Grafanaのエラー
パフォーマンスメトリクスの可視化とかできる機能らしいです。それがエラーになってました。
Error executing action `run` on resource 'ruby_block[authorize Grafana with GitLab]'