GitLab Pagesを有効にする

はじめに

  • Dockerで起動しているGitLabで、GitLab Pagesを有効にする手順をメモする。

環境

手順

  1. GitLabのDockerコンテナにログイン

     $ docker exec -it ${CONTAINER_ID} /bin/bash
    
  2. /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']  ## これよくわかってない 
    
  3. 下記コマンドで再設定・再起動

     # gitlab-ctl reconfigure
     # gitlab-ctl restart
    
  4. Admin Area->Dashboard で有効になっていることを確認

f:id:jitien:20210702000541p:plain

参考

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をDockerで構築する

手順

基本的な手順は構築したGitLabにログインし、 管理エリア->Runner->ランナーのインストール手順を表示する に遷移すると 記載されているが記載しておく。

  1. システムのバイナリをダウンロード

     $ sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
    
  2. 実行権限付与

     $ sudo chmod +x /usr/local/bin/gitlab-runner
    
  3. GitLab CIのユーザを作成

     $ sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
    
  4. サービスとしてインストール

    $ sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
    
  5. 実行

    $ sudo gitlab-runner start
    
  6. Runnerの登録

$ 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を参照してください

前提条件

  • メールの設定は行いません。
  • SSL/TLSの設定も行いません。
  • docker composeを利用して起動するようにします。

構築環境

今回構築は仮想環境を用意し、本環境上で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はオムニバスのものを利用します。
構築手順は以下の通り。

  1. 環境変数 GITLAB_HOME を設定
  2. 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'
    
  3. 起動

# 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]'

参考

  1. GitLab日本語情報サイト
  2. GitLab - Docs
  3. Qiita - GitLab をインストールしよう! (Docker Image)