Slide 1

Slide 1 text

2025/11/8(水) JAWS-UG 茨城 #9 1周年だよ!水戸に集合だぁ! AWS 環境で GitLab Self-managed を 試してみた

Slide 2

Slide 2 text

自己紹介 2 ● 最近やっていた・いること ○ Terraform を用いた AWS リソース構築支援 ○ AWS Control Tower を用いたマルチアカウント環境での AWS Security Hub、Amazon GuardDuty 展開 ○ AWS リソース負荷軽減、構成検討 ○ コスト最適化アセスメント ○ Amazon QuickSight や Amazon Athena を利用した データ分析・可視化 ● 名前(ニックネーム) ○ 木谷 映見(emi) ● 部署 ○ クラスメソッド株式会社 ○ クラウド事業本部コンサルティング部 ● 趣味 ○ コーヒー、ドーナツ、サウナ、 ホットヨガ、漫画、音楽など AWS Certified Cloud Practitioner バ ッ ジ AWS Certified AI Practitioner バ ッ ジ AWS Certified Solutions Architect - Professional バ ッ ジ AWS Certified DevOps Engineer - Professional バ ッ ジ AWS Certified Advanced Networking - Specialty バ ッ ジ AWS Certified Machine Learning - Specialty AWS Certified Security - Specialty バ ッ ジ AWS Certified SysOps Administrator - Associate バ ッ ジ AWS Certified Developer - Associate バ ッ ジ AWS Certified Solutions Architect - Associate バ ッ ジ AWS Certified Data Engineer - Associate バ ッ ジ AWS Certified Machine Learning Engineer - Associate バ ッ ジ AWS Certified Cloud Practitioner バ ッ ジ AWS Certified AI Practitioner バ ッ ジ AWS Certified Solutions Architect - Professional バ ッ ジ AWS Certified DevOps Engineer - Professional バ ッ ジ AWS Certified Advanced Networking - Specialty バ ッ ジ AWS Certified Machine Learning - Specialty AWS Certified Security - Specialty バ ッ ジ AWS Certified SysOps Administrator - Associate バ ッ ジ AWS Certified Developer - Associate バ ッ ジ AWS Certified Solutions Architect - Associate バ ッ ジ AWS Certified Data Engineer - Associate バ ッ ジ AWS Certified Machine Learning Engineer - Associate バ ッ ジ 最近はカフェインを控えています

Slide 3

Slide 3 text

目次 3 ⚫ 背景 ⚫ 構築したもの ⚫ GitLab パーソナルアクセストークン取得 ⚫ AWS CodeConnections 連携 ⚫ 接続できたりできなかったり問題 ⚫ おわりに

Slide 4

Slide 4 text

背景 4 ⚫ 背景 ⚫ 構築したもの ⚫ GitLab パーソナルアクセストークン取得 ⚫ AWS CodeConnections 連携 ⚫ 接続できたりできなかったり問題 ⚫ おわりに

Slide 5

Slide 5 text

背景

Slide 6

Slide 6 text

6 ⚫ GitLab ⚫ ソースコード管理(Git)を中心としたソフトウェア開発を一元管理できるプラットフォーム ⚫ Issue 管理・Merge Request(レビュー)・CI/CD・Container Registry など、開発に必要な 機能を統合提供 ⚫ クラウド/SaaS 版と、自前環境に構築できる Self-Managed 版がある 背景

Slide 7

Slide 7 text

7 ⚫ Self-Managed GitLab が選ばれるケース ⚫ セキュリティ & コンプライアンス ⚫ クラウド型 GitLab.com や GitHub.com が使えない ⚫ コードや成果物を SaaS(クラウド)に持ち出せない、オンプレや閉域網での運用が必須 ⚫ カスタマイズ性 ⚫ 外部認証方式・CI/CD 設計を独自にカスタムしたい ⚫ プラグイン / 独自インテグレーションを組み込みたい ⚫ コスト管理 ⚫ SaaS のユーザー課金より自前で構築した方がコストを抑えられる場合がある ⚫ Self-Managed で構築した GitLab が CodeConnections でうまくいかない ケースがあり、調査のために自分でも構築を試してみた 背景

Slide 8

Slide 8 text

構築したもの 8 ⚫ 背景 ⚫ 構築したもの ⚫ GitLab パーソナルアクセストークン取得 ⚫ AWS CodeConnections 連携 ⚫ 接続できたりできなかったり問題 ⚫ おわりに

Slide 9

Slide 9 text

構築したもの

Slide 10

Slide 10 text

10 構築したもの

Slide 11

Slide 11 text

11 構築したもの 色々あって NLB にしたのですが接続 でうまくいかないことが多発

Slide 12

Slide 12 text

12 ⚫ NLB のターゲットグループ 構築したもの

Slide 13

Slide 13 text

13 ⚫ NLB のターゲットグループ 構築したもの

Slide 14

Slide 14 text

14 ⚫ NLB 構築したもの

Slide 15

Slide 15 text

15 ⚫ NLB リスナー(ACM 証明書を設定) 構築したもの

Slide 16

Slide 16 text

16 ⚫ セキュリティグループ 構築したもの

Slide 17

Slide 17 text

17 ⚫ Route 53 構築したもの NLB に対するエイリアスレコード

Slide 18

Slide 18 text

18 ⚫ EC2 へ GitLab Community Edition(CE)をインストール ⚫ Amazon Linux 2023 に GitLab Community Edition をインストールする | DevelopersIO https://dev.classmethod.jp/articles/amazon-linux-2023-gitlab-ce/ ⚫ sudo dnf install -y policycoreutils-python-utils openssh-server openssh-clients perl ⚫ GitLab を動かすために必要な基本パッケージ(SSH/Perl 等)を先にインストール ⚫ curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash ⚫ GitLab CE 用のリポジトリを追加するスクリプトを取得&実行。この後に dnf install gitlab-ce が可能になる ⚫ sudo EXTERNAL_URL=“https://<設定するドメイン名>" dnf install -y gitlab-ce ⚫ GitLab CE 本体インストール。環境変数 EXTERNAL_URL で公開 URL を指定しておくとセットアップ時にその URL を使うよう構成される ⚫ sudo cat /etc/gitlab/initial_root_password ⚫ 初回ログイン用の管理者(root)パスワードを確認するコマンド。インストール直後のみ有効なファイル 構築したもの

Slide 19

Slide 19 text

19 構築したもの

Slide 20

Slide 20 text

20 構築したもの 繋がったりつながらなかったり

Slide 21

Slide 21 text

GitLab パーソナルアクセストークン取得 21 ⚫ 背景 ⚫ 構築したもの ⚫ GitLab パーソナルアクセストークン取得 ⚫ AWS CodeConnections 連携 ⚫ 接続できたりできなかったり問題 ⚫ おわりに

Slide 22

Slide 22 text

GitLab パーソナルアクセストークン取得

Slide 23

Slide 23 text

23 GitLab パーソナルアクセストークン取得

Slide 24

Slide 24 text

24 GitLab パーソナルアクセストークン取得

Slide 25

Slide 25 text

25 GitLab パーソナルアクセストークン取得

Slide 26

Slide 26 text

26 GitLab パーソナルアクセストークン取得

Slide 27

Slide 27 text

27 GitLab パーソナルアクセストークン取得

Slide 28

Slide 28 text

28 GitLab パーソナルアクセストークン取得

Slide 29

Slide 29 text

AWS CodeConnections 連携 29 ⚫ 背景 ⚫ 構築したもの ⚫ GitLab パーソナルアクセストークン取得 ⚫ AWS CodeConnections 連携 ⚫ 接続できたりできなかったり問題 ⚫ おわりに

Slide 30

Slide 30 text

AWS CodeConnections 連携

Slide 31

Slide 31 text

31 ⚫ Code シリーズのどれかを開き「接続」を作成 AWS CodeConnections 連携

Slide 32

Slide 32 text

32 AWS CodeConnections 連携

Slide 33

Slide 33 text

33 AWS CodeConnections 連携 保留中の接続を更新

Slide 34

Slide 34 text

34 AWS CodeConnections 連携 GitLab の パーソナルアクセストークン を入力

Slide 35

Slide 35 text

35 AWS CodeConnections 連携

Slide 36

Slide 36 text

36 AWS CodeConnections 連携

Slide 37

Slide 37 text

37 ⚫ あとはパイプラインを組んでいただく AWS CodeConnections 連携

Slide 38

Slide 38 text

接続できたりできなかったり問題 38 ⚫ 背景 ⚫ 構築したもの ⚫ GitLab パーソナルアクセストークン取得 ⚫ AWS CodeConnections 連携 ⚫ 接続できたりできなかったり問題 ⚫ おわりに

Slide 39

Slide 39 text

接続できたりできなかったり問題

Slide 40

Slide 40 text

40 ⚫ タイミングによって繋がったりつながらなかったり 接続できたりできなかったり問題

Slide 41

Slide 41 text

41 ⚫ NLB のターゲットグループで Unhealthy だったり Healthy だったり ⚫ Healthy のタイミングで /users/sign_in にアクセスすると一時的には正常表示 ⚫ Unhealthy になるタイミングもあり、接続不良が発生 ⚫ nginx の LISTEN を確認 ⚫ ss –lntp ⚫ ネットワーク接続の状態を確認するコマンド ⚫ 0.0.0.0:80 を nginx が LISTEN → OK 接続できたりできなかったり問題

Slide 42

Slide 42 text

42 ⚫ gitlab.rb の編集 ⚫ gitlab.rb とは? ⚫ 場所: /etc/gitlab/gitlab.rb ⚫ GitLab の設定を一元管理しているファイル。gitlab.rb に書いた内容が nginx、redis、 postgresql… など GitLab を構成する全部のサービスへ自動反映される ⚫ sudo gitlab-ctl reconfigure コマンドでこのファイルを読み、各種サービスの 実設定ファイルが生成され再起動し設定が反映される ⚫ NLB で TLS 終端し、GitLab 本体(同梱 nginx)は HTTP(80) で待ち受ける構成にするため 設定を編集 接続できたりできなかったり問題

Slide 43

Slide 43 text

などなど試しましたが、 結局作業中に接続不良を起こすのは変わらず… 43 接続できたりできなかったり問題

Slide 44

Slide 44 text

44 接続できたりできなかったり問題 色々あって NLB にしたのですが接続 でうまくいかないことが多発 → ALB の方が良かった

Slide 45

Slide 45 text

45 ⚫ ALB なら ⚫ L7 (HTTP) を理解し、アプリ状態に応じた制御ができる ⚫ HTTP レベルの情報(パス / ステータスコード / ヘッダー)を利用したヘルスチェック/コネクション制御 が可能。設定次第で、一時的な遅延や重い処理を Unhealthy と誤判定するリスクを軽減できる ⚫ NLB は L4 のため、バックエンドが遅延すると Health Check Timeout → Connection Close → nginx 499 と記録されやすい ⚫ スティッキーセッション対応 ⚫ アイドルタイムアウトを 1~4000 秒の範囲で調整できる ⚫ NLB は 120 秒まで ⚫ Apache や nginx のタイムアウトと合わせることに注意 ⚫ ELBアイドルタイムアウトを伸ばす場合に注意した事 #AWS - Qiita https://qiita.com/Taishikun0721/items/48711323d5cda6ae8dc7 ⚫ ELB のバックエンドサーバーとして Apache または NGINX を使用する | AWS re:Post https://repost.aws/ja/knowledge-center/apache- backend-elb ⚫ L7 ヘルスチェックが豊富 ⚫ パス、成功コードマッチャ、閾値など細かく調整でき、誤検知で Unhealthy になりにくい 接続できたりできなかったり問題

Slide 46

Slide 46 text

接続できたりできなかったり問題 46 ⚫ 背景 ⚫ 構築したもの ⚫ GitLab パーソナルアクセストークン取得 ⚫ AWS CodeConnections 連携 ⚫ 接続できたりできなかったり問題 ⚫ おわりに

Slide 47

Slide 47 text

おわりに

Slide 48

Slide 48 text

48 ⚫ GitLab についてちょっとだけ勉強できた ⚫ 馴染みのなかった Code シリーズに少し触れられた ⚫ 接続不調のトラブルシューティングで学びがあった おわりに

Slide 49

Slide 49 text

No content