SlideShare a Scribd company logo
© 2017 UNICAST INC.
2017年7月14日
株式会社ユニキャスト
ゆるUniStudy(仮)
第3回
GitLabを16万8千光年ワープさせた話
GITLAB BIG UPGRADE PROJECT
自己紹介
© 2017 UNICAST INC. 1
株式会社ユニキャスト
ソフトウェアエンジニア
野口 航(Wataru NOGUCHI)
@wnoguchi
https://pg1x.io/
• 茨城大学3年の時にアルバイトとしてユニキャストに参加
• 大学卒業と同時に入社
Acclaim
https://goo.gl/fwxMRB
LPIC
Level1 Certified Engineer
アジェンダ
© 2017 UNICAST INC. 2
1. About GITLAB BIG UPGRADE PROJECT
2. 検証: 7.4.3→7.14.3
3. 検証: 7.14.3→8.0
4. 検証: 8.0→8.11→8.5
5. 検証: MySQL→PostgreSQL RDBMS変換
6. 検証: 8.5→8.17
7. 検証: 8.17→9.0
8. 検証: 9.0→9.2
9. 本番: 7.4.3→9.2
10. 本番: CentOS 6.9 Src. Ver. → Ubuntu Server 16.04 LTS Omnibus Package Ver.
11. 質疑応答
About GITLAB BIG UPGRADE PROJECT(1)
© 2017 UNICAST INC. 3
• Mission: 古くなったGitLabを最新バージョンにアップグレードする
• 方法1: GitLab付属のツールでとったバックアップをインポートする
• マイナーバージョンレベルまで完全に一致していないと無理
• 方法2: リポジトリだけ丸ごと最新GitLabに移し替える
• ユーザー、グループ情報、公開鍵情報が一切引き継がれない
• ゆえに開発、デプロイに大きく支障が出るので廃案
• 方法3: 愚直にGitLab社の提供しているソースバージョンのアップグレード方法を
一個一個実施していく
About GITLAB BIG UPGRADE PROJECT(2)
© 2017 UNICAST INC. 4
戦略(TACTICS)
• 現行本番KVM仮想マシンをシャットダウンしてイメージ丸ごとコピー
• イメージをraw形式からvmdk形式に変換
• VMware Workstation上でバージョンごとにスナップショットをとっていつでも切
り戻しできるようにして検証
(超便利!!超おすすめ!!)
• RDBMSの変換はPythonのバージョンが違ってかなり大変そうなので最新版まで
上げてからやる
(そう思っていた時期が私にもありました)
• なぜRDBMSの変換が必要なのか
• GitLabがPostgreSQLを使うことを強く推奨
• OmnibusパッケージでMySQLがサポートされるのはGitLab EEのみ
• GitLab CEはPostgreSQL一択
• 検証が全部済んだら
• 土日使って一気に本番環境をアップグレード
• ついでにOmnibusパッケージ版にも変換、ディストリビューションもCentOS6.9
からちゃんと公式でテストされているUbuntu Server16.04 LTSに
© 2017 UNICAST INC. 5
結論から言います
© 2017 UNICAST INC. 6
すげえ大変だった。。。。。
検証: 7.4.3→7.14.3
© 2017 UNICAST INC. 7
• 2回失敗
• Redisのソケット化がうまくいかなかった
• 3回目にしてやっと成功
• 本当に大丈夫なのかと思った
• diff取るの大変。。。
7.14.3のGitLabの姿
© 2017 UNICAST INC. 8
検証: 7.14.3→8.0
© 2017 UNICAST INC. 9
• メジャーバージョンアップ
• diff取るの大変。。。
検証: 8.0→8.11→8.5
© 2017 UNICAST INC. 10
• 8.0→8.17までやる予定だった
• だんだんバージョンアップ作業に慣れてきた
• というかこのあたりから必要な新設定ファイルを
git show abc123>8.0/new/gitlab.yml
のように予め8.0,8.1,8.2,…,9.0,9.1,9.2まで抽出しておく
• そして差分をWinMergeで視覚的に比較、慎重にvim :sp Vjy C-b w p する
• という効率的なやり方に切り替えていく
• 頭の切り替えが大変だから
• patchコマンド使っても良かったかもしれない
• でもdiffとるのすごくつらい。。。。
• 0.1増えるだけでちょこちょこ設定ファイルやミドルウェアが変わる
• 8.11でついにMySQLのマイグレーションが失敗するようになった
• mysqldumpもMySQL server gone away
• gone awayしなくなるまでスナップショット戻す
• 8.5まで戻る
• MySQLからPostgreSQLに変換することを真剣に検討しなければいけなくなる
ひたすらdiffをとって設定をコピー
© 2017 UNICAST INC. 11
検証: MySQL→PostgreSQL RDBMS変換
© 2017 UNICAST INC. 12
• CentOS6.9で標準で入っているPythonのバージョンは2.4
• PostgreSQLに変換するにはPython 2.7が必要
• ビルドするのは絶対イヤ
• あちこち探しまくってリポジトリ見つける(一時的にPython 2.7が使える)
• gitlabブランチをチェックアウトして変換実施
• 動いた。。。。。
• なんで動いているのかわからない。。。。
• 奇跡の技では。。。
検証: MySQL→PostgreSQL RDBMS変換
© 2017 UNICAST INC. 13
検証: MySQL→PostgreSQL RDBMS変換
© 2017 UNICAST INC. 14
検証: 8.5→8.17
© 2017 UNICAST INC. 15
• バックエンドをPostgreSQLに改めて再度挑戦
• 今度は8.16まで素直に動く
• 8.16ちょっと詰まる
• けど8.17までアップグレードできた
• diff取るの大変だよ。。。。
検証: 8.17→9.0
© 2017 UNICAST INC. 16
• メジャーバージョンアップ
• あと一息。。
• 相変わらずdiff取るの大変だよ。。。。
検証: 9.0→9.2
© 2017 UNICAST INC. 17
• ガシガシミドルウェアの変更が入る
• いつのまにかグループに公開制御がついていて(8.6あたりから)デフォルトで全
世界に公開する設定になっていて50+個ぐらいのグループをpublicからprivateに
修正。。。
• やっと検証完了(したと思ったら9.3がリリースされた)
• リリースから1ヶ月ぐらい寝かせないとバグ満載で生きた心地しないのでここで
うちやめ
本番: 7.4.3→9.2
© 2017 UNICAST INC. 18
• 今までの検証結果をまとめた手順書ベースに一気にアップグレード
• 大ワープ
• 予め検証済みの設定ファイル一式をバージョンを一つ上げるごとにコピーして行
くのでかなり高速
• 万が一に備えてVMはイメージごとバックアップ
本番: 7.4.3→9.2
© 2017 UNICAST INC. 19
GitLabロードアベレージ上昇中
本番: 7.4.3→9.2
© 2017 UNICAST INC. 20
CPU使用率60%
本番: 7.4.3→9.2
© 2017 UNICAST INC. 21
90%
本番: 7.4.3→9.2
© 2017 UNICAST INC. 22
メモリ使用量も上昇させます。
本番: 7.4.3→9.2
© 2017 UNICAST INC. 23
CPU使用率120%
本番: 7.4.3→9.2
© 2017 UNICAST INC. 24
秒読み開始
本番: 7.4.3→9.2
© 2017 UNICAST INC. 25
3
本番: 7.4.3→9.2
© 2017 UNICAST INC. 26
2
本番: 7.4.3→9.2
© 2017 UNICAST INC. 27
1
本番: 7.4.3→9.2
© 2017 UNICAST INC. 28
ワーーーープ!!!!!!!
本番: 7.4.3→9.2
© 2017 UNICAST INC. 29
ついに、来たんだな、GitLab9.2・・・
本番: 7.4.3→9.2
© 2017 UNICAST INC. 30
ああ・・・そうだ
本番: CentOS 6.9 Src. Ver. → Ubuntu Server 16.04 LTS Omnibus Package Ver.
© 2017 UNICAST INC. 31
• 今度はソースバージョンのGitLabをOmnibusパッケージ版のGitLabに変換
• これは検証間に合ってなかった
• 一発勝負
• ついでにディストリビューションもUbuntu Server 16.04 LTSに変更
• なぜなら開発、テストは主にUbuntu Serverをベースに行われているから
• CentOSは安定している代わりにパッケージのバージョンが圧倒的に古く、無いソ
フトウェアは自力でビルドする必要がある
• 一応うまくいった
• LDAP認証対応(Active Directory)
• httpsのURLクローン対応
所感
© 2017 UNICAST INC. 32
diff取るのすごく大変でした。。。
教訓
© 2017 UNICAST INC. 33
• 導入したソフトウェアのバージョンアップにはアンテナを貼ってこまめにアップ
デートしていくべき
© 2017 UNICAST INC. 34
帰ろう、家へ・・・
今のGitLabの姿
© 2017 UNICAST INC. 35
今のGitLabの姿
© 2017 UNICAST INC. 36
© 2017 UNICAST INC. 37
自宅、、何もかも皆、懐かしい・・・
質疑応答
© 2017 UNICAST INC. 38
39
ご清聴ありがとうございました。
© 2017 UNICAST INC.

More Related Content

What's hot (20)

Docker + Checkpoint/Restore
Docker + Checkpoint/RestoreDocker + Checkpoint/Restore
Docker + Checkpoint/Restore
kawamuray
 
Docker 再入門 2016 update
Docker 再入門 2016 updateDocker 再入門 2016 update
Docker 再入門 2016 update
Shiojiri Ohhara
 
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
Takashi Uemura
 
自動化ーニバルだよ!GDC16に見る自動化技術とテストのトレンド
自動化ーニバルだよ!GDC16に見る自動化技術とテストのトレンド自動化ーニバルだよ!GDC16に見る自動化技術とテストのトレンド
自動化ーニバルだよ!GDC16に見る自動化技術とテストのトレンド
Takehara Ryo
 
Dockerの改修を一緒にやりませんか
Dockerの改修を一緒にやりませんかDockerの改修を一緒にやりませんか
Dockerの改修を一緒にやりませんか
axsh co., LTD.
 
Docker向け軽量os 3製品比較
Docker向け軽量os 3製品比較Docker向け軽量os 3製品比較
Docker向け軽量os 3製品比較
cloudconductor
 
真Drone入門
真Drone入門真Drone入門
真Drone入門
Yutaka Matsubara
 
Docker国内外本番環境サービス事例のご紹介
Docker国内外本番環境サービス事例のご紹介Docker国内外本番環境サービス事例のご紹介
Docker国内外本番環境サービス事例のご紹介
ThinkIT_impress
 
Wordbench fukuoka
Wordbench fukuokaWordbench fukuoka
Wordbench fukuoka
Junji Manno
 
gitを使って、レポジトリの一部抽出forkしてみました
gitを使って、レポジトリの一部抽出forkしてみましたgitを使って、レポジトリの一部抽出forkしてみました
gitを使って、レポジトリの一部抽出forkしてみました
Takako Miyagawa
 
Docker入門 - 基礎編 いまから始めるDocker管理
Docker入門 - 基礎編 いまから始めるDocker管理Docker入門 - 基礎編 いまから始めるDocker管理
Docker入門 - 基礎編 いまから始めるDocker管理
Masahito Zembutsu
 
Moby Project
Moby ProjectMoby Project
Moby Project
Akihiro Suda
 
はじめての CircleCI
はじめての CircleCIはじめての CircleCI
はじめての CircleCI
Yosuke Mizutani
 
wxPython入門(大阪Pythonユーザの集まり2014/03)
wxPython入門(大阪Pythonユーザの集まり2014/03)wxPython入門(大阪Pythonユーザの集まり2014/03)
wxPython入門(大阪Pythonユーザの集まり2014/03)
泰 増田
 
WordPressサイトのバージョン管理
WordPressサイトのバージョン管理WordPressサイトのバージョン管理
WordPressサイトのバージョン管理
lolipopjp
 
Dockerハンズオン
DockerハンズオンDockerハンズオン
Dockerハンズオン
Kazuyuki Mori
 
Docker地雷n本勝負
Docker地雷n本勝負Docker地雷n本勝負
Docker地雷n本勝負
RyutaKoide
 
本格的にコンテナを利用するために ~ Azureでのコンテナ利用パターン
本格的にコンテナを利用するために ~ Azureでのコンテナ利用パターン本格的にコンテナを利用するために ~ Azureでのコンテナ利用パターン
本格的にコンテナを利用するために ~ Azureでのコンテナ利用パターン
雄哉 吉田
 
WordPress サイト制作におけるデプロイメントを考える ~Git とデプロイメントサービスの活用~
WordPress サイト制作におけるデプロイメントを考える ~Git とデプロイメントサービスの活用~WordPress サイト制作におけるデプロイメントを考える ~Git とデプロイメントサービスの活用~
WordPress サイト制作におけるデプロイメントを考える ~Git とデプロイメントサービスの活用~
Toru Miki
 
Docker実践入門
Docker実践入門Docker実践入門
Docker実践入門
hiro nemu
 
Docker + Checkpoint/Restore
Docker + Checkpoint/RestoreDocker + Checkpoint/Restore
Docker + Checkpoint/Restore
kawamuray
 
Docker 再入門 2016 update
Docker 再入門 2016 updateDocker 再入門 2016 update
Docker 再入門 2016 update
Shiojiri Ohhara
 
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
Takashi Uemura
 
自動化ーニバルだよ!GDC16に見る自動化技術とテストのトレンド
自動化ーニバルだよ!GDC16に見る自動化技術とテストのトレンド自動化ーニバルだよ!GDC16に見る自動化技術とテストのトレンド
自動化ーニバルだよ!GDC16に見る自動化技術とテストのトレンド
Takehara Ryo
 
Dockerの改修を一緒にやりませんか
Dockerの改修を一緒にやりませんかDockerの改修を一緒にやりませんか
Dockerの改修を一緒にやりませんか
axsh co., LTD.
 
Docker向け軽量os 3製品比較
Docker向け軽量os 3製品比較Docker向け軽量os 3製品比較
Docker向け軽量os 3製品比較
cloudconductor
 
Docker国内外本番環境サービス事例のご紹介
Docker国内外本番環境サービス事例のご紹介Docker国内外本番環境サービス事例のご紹介
Docker国内外本番環境サービス事例のご紹介
ThinkIT_impress
 
Wordbench fukuoka
Wordbench fukuokaWordbench fukuoka
Wordbench fukuoka
Junji Manno
 
gitを使って、レポジトリの一部抽出forkしてみました
gitを使って、レポジトリの一部抽出forkしてみましたgitを使って、レポジトリの一部抽出forkしてみました
gitを使って、レポジトリの一部抽出forkしてみました
Takako Miyagawa
 
Docker入門 - 基礎編 いまから始めるDocker管理
Docker入門 - 基礎編 いまから始めるDocker管理Docker入門 - 基礎編 いまから始めるDocker管理
Docker入門 - 基礎編 いまから始めるDocker管理
Masahito Zembutsu
 
はじめての CircleCI
はじめての CircleCIはじめての CircleCI
はじめての CircleCI
Yosuke Mizutani
 
wxPython入門(大阪Pythonユーザの集まり2014/03)
wxPython入門(大阪Pythonユーザの集まり2014/03)wxPython入門(大阪Pythonユーザの集まり2014/03)
wxPython入門(大阪Pythonユーザの集まり2014/03)
泰 増田
 
WordPressサイトのバージョン管理
WordPressサイトのバージョン管理WordPressサイトのバージョン管理
WordPressサイトのバージョン管理
lolipopjp
 
Dockerハンズオン
DockerハンズオンDockerハンズオン
Dockerハンズオン
Kazuyuki Mori
 
Docker地雷n本勝負
Docker地雷n本勝負Docker地雷n本勝負
Docker地雷n本勝負
RyutaKoide
 
本格的にコンテナを利用するために ~ Azureでのコンテナ利用パターン
本格的にコンテナを利用するために ~ Azureでのコンテナ利用パターン本格的にコンテナを利用するために ~ Azureでのコンテナ利用パターン
本格的にコンテナを利用するために ~ Azureでのコンテナ利用パターン
雄哉 吉田
 
WordPress サイト制作におけるデプロイメントを考える ~Git とデプロイメントサービスの活用~
WordPress サイト制作におけるデプロイメントを考える ~Git とデプロイメントサービスの活用~WordPress サイト制作におけるデプロイメントを考える ~Git とデプロイメントサービスの活用~
WordPress サイト制作におけるデプロイメントを考える ~Git とデプロイメントサービスの活用~
Toru Miki
 
Docker実践入門
Docker実践入門Docker実践入門
Docker実践入門
hiro nemu
 

Similar to GitLabを16万8千光年ワープさせた話 GITLAB BIG UPGRADE PROJECT (20)

GitLabを16万8千光年ワープさせた話(改)
GitLabを16万8千光年ワープさせた話(改)GitLabを16万8千光年ワープさせた話(改)
GitLabを16万8千光年ワープさせた話(改)
Wataru NOGUCHI
 
GitLabを骨までしゃぶりつくす@ゆるUniStudy#7
GitLabを骨までしゃぶりつくす@ゆるUniStudy#7GitLabを骨までしゃぶりつくす@ゆるUniStudy#7
GitLabを骨までしゃぶりつくす@ゆるUniStudy#7
Wataru NOGUCHI
 
Jenkins+Gitによる検証済みマージ(30分版)
Jenkins+Gitによる検証済みマージ(30分版)Jenkins+Gitによる検証済みマージ(30分版)
Jenkins+Gitによる検証済みマージ(30分版)
Kohsuke Kawaguchi
 
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
Taisuke Inoue
 
Dangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすDangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らす
Shunsuke Maeda
 
Rancherを活用して開発効率を上げる
Rancherを活用して開発効率を上げるRancherを活用して開発効率を上げる
Rancherを活用して開発効率を上げる
Michitaka Terada
 
2023/10/30_CloudOperatorDaysTokyo_開発チームと共に取り組むGCPリソースのGitOps化実践
2023/10/30_CloudOperatorDaysTokyo_開発チームと共に取り組むGCPリソースのGitOps化実践2023/10/30_CloudOperatorDaysTokyo_開発チームと共に取り組むGCPリソースのGitOps化実践
2023/10/30_CloudOperatorDaysTokyo_開発チームと共に取り組むGCPリソースのGitOps化実践
hiroaki yoshii
 
ユニキャスト本社のネットを支える技術
ユニキャスト本社のネットを支える技術ユニキャスト本社のネットを支える技術
ユニキャスト本社のネットを支える技術
Wataru NOGUCHI
 
今すぐ試せるブルーグリーンデプロイメント入門とその実装 - OpenStack最新情報セミナー(2017年3月)
今すぐ試せるブルーグリーンデプロイメント入門とその実装 - OpenStack最新情報セミナー(2017年3月)今すぐ試せるブルーグリーンデプロイメント入門とその実装 - OpenStack最新情報セミナー(2017年3月)
今すぐ試せるブルーグリーンデプロイメント入門とその実装 - OpenStack最新情報セミナー(2017年3月)
VirtualTech Japan Inc.
 
Diskless Compute Nodeを使ったImmutable OpenStack
Diskless Compute Nodeを使ったImmutable OpenStackDiskless Compute Nodeを使ったImmutable OpenStack
Diskless Compute Nodeを使ったImmutable OpenStack
Yuki Yamashita
 
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービスマスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス
Toshiyuki Hirata
 
Dockerのエンタープライズ運用を支える技術 - FlexPod Day 2017 Tokyo
Dockerのエンタープライズ運用を支える技術 - FlexPod Day 2017 TokyoDockerのエンタープライズ運用を支える技術 - FlexPod Day 2017 Tokyo
Dockerのエンタープライズ運用を支える技術 - FlexPod Day 2017 Tokyo
Takao Setaka
 
20170626 さくらインターネット Stripe Magento
20170626 さくらインターネット Stripe Magento20170626 さくらインターネット Stripe Magento
20170626 さくらインターネット Stripe Magento
Hirokazu Nishi
 
Wndows 10 Fall Creators Update Insider Previewから見たアップデート内容
Wndows 10 Fall Creators Update Insider Previewから見たアップデート内容Wndows 10 Fall Creators Update Insider Previewから見たアップデート内容
Wndows 10 Fall Creators Update Insider Previewから見たアップデート内容
Tomokazu Kizawa
 
VyOSの開発とか運用の話
VyOSの開発とか運用の話VyOSの開発とか運用の話
VyOSの開発とか運用の話
Shintaro Hasunuma
 
長寿なゲーム事業におけるアプリビルドの効率化
長寿なゲーム事業におけるアプリビルドの効率化長寿なゲーム事業におけるアプリビルドの効率化
長寿なゲーム事業におけるアプリビルドの効率化
gree_tech
 
決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニー決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニー
Tokuhiro Eto
 
kintoneアプリをjavascriptでいじってみよう
kintoneアプリをjavascriptでいじってみようkintoneアプリをjavascriptでいじってみよう
kintoneアプリをjavascriptでいじってみよう
Kyouhei Kitagawa
 
決済金融から始めるデータドリブンカンパニー #yjmu
決済金融から始めるデータドリブンカンパニー #yjmu決済金融から始めるデータドリブンカンパニー #yjmu
決済金融から始めるデータドリブンカンパニー #yjmu
Yahoo!デベロッパーネットワーク
 
GitLabを16万8千光年ワープさせた話(改)
GitLabを16万8千光年ワープさせた話(改)GitLabを16万8千光年ワープさせた話(改)
GitLabを16万8千光年ワープさせた話(改)
Wataru NOGUCHI
 
GitLabを骨までしゃぶりつくす@ゆるUniStudy#7
GitLabを骨までしゃぶりつくす@ゆるUniStudy#7GitLabを骨までしゃぶりつくす@ゆるUniStudy#7
GitLabを骨までしゃぶりつくす@ゆるUniStudy#7
Wataru NOGUCHI
 
Jenkins+Gitによる検証済みマージ(30分版)
Jenkins+Gitによる検証済みマージ(30分版)Jenkins+Gitによる検証済みマージ(30分版)
Jenkins+Gitによる検証済みマージ(30分版)
Kohsuke Kawaguchi
 
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
Taisuke Inoue
 
Dangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすDangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らす
Shunsuke Maeda
 
Rancherを活用して開発効率を上げる
Rancherを活用して開発効率を上げるRancherを活用して開発効率を上げる
Rancherを活用して開発効率を上げる
Michitaka Terada
 
2023/10/30_CloudOperatorDaysTokyo_開発チームと共に取り組むGCPリソースのGitOps化実践
2023/10/30_CloudOperatorDaysTokyo_開発チームと共に取り組むGCPリソースのGitOps化実践2023/10/30_CloudOperatorDaysTokyo_開発チームと共に取り組むGCPリソースのGitOps化実践
2023/10/30_CloudOperatorDaysTokyo_開発チームと共に取り組むGCPリソースのGitOps化実践
hiroaki yoshii
 
ユニキャスト本社のネットを支える技術
ユニキャスト本社のネットを支える技術ユニキャスト本社のネットを支える技術
ユニキャスト本社のネットを支える技術
Wataru NOGUCHI
 
今すぐ試せるブルーグリーンデプロイメント入門とその実装 - OpenStack最新情報セミナー(2017年3月)
今すぐ試せるブルーグリーンデプロイメント入門とその実装 - OpenStack最新情報セミナー(2017年3月)今すぐ試せるブルーグリーンデプロイメント入門とその実装 - OpenStack最新情報セミナー(2017年3月)
今すぐ試せるブルーグリーンデプロイメント入門とその実装 - OpenStack最新情報セミナー(2017年3月)
VirtualTech Japan Inc.
 
Diskless Compute Nodeを使ったImmutable OpenStack
Diskless Compute Nodeを使ったImmutable OpenStackDiskless Compute Nodeを使ったImmutable OpenStack
Diskless Compute Nodeを使ったImmutable OpenStack
Yuki Yamashita
 
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービスマスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス
Toshiyuki Hirata
 
Dockerのエンタープライズ運用を支える技術 - FlexPod Day 2017 Tokyo
Dockerのエンタープライズ運用を支える技術 - FlexPod Day 2017 TokyoDockerのエンタープライズ運用を支える技術 - FlexPod Day 2017 Tokyo
Dockerのエンタープライズ運用を支える技術 - FlexPod Day 2017 Tokyo
Takao Setaka
 
20170626 さくらインターネット Stripe Magento
20170626 さくらインターネット Stripe Magento20170626 さくらインターネット Stripe Magento
20170626 さくらインターネット Stripe Magento
Hirokazu Nishi
 
Wndows 10 Fall Creators Update Insider Previewから見たアップデート内容
Wndows 10 Fall Creators Update Insider Previewから見たアップデート内容Wndows 10 Fall Creators Update Insider Previewから見たアップデート内容
Wndows 10 Fall Creators Update Insider Previewから見たアップデート内容
Tomokazu Kizawa
 
VyOSの開発とか運用の話
VyOSの開発とか運用の話VyOSの開発とか運用の話
VyOSの開発とか運用の話
Shintaro Hasunuma
 
長寿なゲーム事業におけるアプリビルドの効率化
長寿なゲーム事業におけるアプリビルドの効率化長寿なゲーム事業におけるアプリビルドの効率化
長寿なゲーム事業におけるアプリビルドの効率化
gree_tech
 
決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニー決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニー
Tokuhiro Eto
 
kintoneアプリをjavascriptでいじってみよう
kintoneアプリをjavascriptでいじってみようkintoneアプリをjavascriptでいじってみよう
kintoneアプリをjavascriptでいじってみよう
Kyouhei Kitagawa
 
Ad

More from Wataru NOGUCHI (7)

ユニキャスト社内の無線LANを支える技術
ユニキャスト社内の無線LANを支える技術ユニキャスト社内の無線LANを支える技術
ユニキャスト社内の無線LANを支える技術
Wataru NOGUCHI
 
AWS入門!!
AWS入門!!AWS入門!!
AWS入門!!
Wataru NOGUCHI
 
みんなの知らないネットワークの話
みんなの知らないネットワークの話みんなの知らないネットワークの話
みんなの知らないネットワークの話
Wataru NOGUCHI
 
ネットワーク技術を学ぶ(STP: Spanning Tree Protocol) ~Cisco で学ぶ L2 ネットワークの世界~
ネットワーク技術を学ぶ(STP: Spanning Tree Protocol) ~Cisco で学ぶ L2 ネットワークの世界~ネットワーク技術を学ぶ(STP: Spanning Tree Protocol) ~Cisco で学ぶ L2 ネットワークの世界~
ネットワーク技術を学ぶ(STP: Spanning Tree Protocol) ~Cisco で学ぶ L2 ネットワークの世界~
Wataru NOGUCHI
 
ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)
ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)
ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)
Wataru NOGUCHI
 
ネットワーク7不思議
ネットワーク7不思議ネットワーク7不思議
ネットワーク7不思議
Wataru NOGUCHI
 
できる!KickstartとAnsible!
できる!KickstartとAnsible!できる!KickstartとAnsible!
できる!KickstartとAnsible!
Wataru NOGUCHI
 
ユニキャスト社内の無線LANを支える技術
ユニキャスト社内の無線LANを支える技術ユニキャスト社内の無線LANを支える技術
ユニキャスト社内の無線LANを支える技術
Wataru NOGUCHI
 
みんなの知らないネットワークの話
みんなの知らないネットワークの話みんなの知らないネットワークの話
みんなの知らないネットワークの話
Wataru NOGUCHI
 
ネットワーク技術を学ぶ(STP: Spanning Tree Protocol) ~Cisco で学ぶ L2 ネットワークの世界~
ネットワーク技術を学ぶ(STP: Spanning Tree Protocol) ~Cisco で学ぶ L2 ネットワークの世界~ネットワーク技術を学ぶ(STP: Spanning Tree Protocol) ~Cisco で学ぶ L2 ネットワークの世界~
ネットワーク技術を学ぶ(STP: Spanning Tree Protocol) ~Cisco で学ぶ L2 ネットワークの世界~
Wataru NOGUCHI
 
ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)
ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)
ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)
Wataru NOGUCHI
 
ネットワーク7不思議
ネットワーク7不思議ネットワーク7不思議
ネットワーク7不思議
Wataru NOGUCHI
 
できる!KickstartとAnsible!
できる!KickstartとAnsible!できる!KickstartとAnsible!
できる!KickstartとAnsible!
Wataru NOGUCHI
 
Ad

GitLabを16万8千光年ワープさせた話 GITLAB BIG UPGRADE PROJECT

  • 1. © 2017 UNICAST INC. 2017年7月14日 株式会社ユニキャスト ゆるUniStudy(仮) 第3回 GitLabを16万8千光年ワープさせた話 GITLAB BIG UPGRADE PROJECT
  • 2. 自己紹介 © 2017 UNICAST INC. 1 株式会社ユニキャスト ソフトウェアエンジニア 野口 航(Wataru NOGUCHI) @wnoguchi https://pg1x.io/ • 茨城大学3年の時にアルバイトとしてユニキャストに参加 • 大学卒業と同時に入社 Acclaim https://goo.gl/fwxMRB LPIC Level1 Certified Engineer
  • 3. アジェンダ © 2017 UNICAST INC. 2 1. About GITLAB BIG UPGRADE PROJECT 2. 検証: 7.4.3→7.14.3 3. 検証: 7.14.3→8.0 4. 検証: 8.0→8.11→8.5 5. 検証: MySQL→PostgreSQL RDBMS変換 6. 検証: 8.5→8.17 7. 検証: 8.17→9.0 8. 検証: 9.0→9.2 9. 本番: 7.4.3→9.2 10. 本番: CentOS 6.9 Src. Ver. → Ubuntu Server 16.04 LTS Omnibus Package Ver. 11. 質疑応答
  • 4. About GITLAB BIG UPGRADE PROJECT(1) © 2017 UNICAST INC. 3 • Mission: 古くなったGitLabを最新バージョンにアップグレードする • 方法1: GitLab付属のツールでとったバックアップをインポートする • マイナーバージョンレベルまで完全に一致していないと無理 • 方法2: リポジトリだけ丸ごと最新GitLabに移し替える • ユーザー、グループ情報、公開鍵情報が一切引き継がれない • ゆえに開発、デプロイに大きく支障が出るので廃案 • 方法3: 愚直にGitLab社の提供しているソースバージョンのアップグレード方法を 一個一個実施していく
  • 5. About GITLAB BIG UPGRADE PROJECT(2) © 2017 UNICAST INC. 4 戦略(TACTICS) • 現行本番KVM仮想マシンをシャットダウンしてイメージ丸ごとコピー • イメージをraw形式からvmdk形式に変換 • VMware Workstation上でバージョンごとにスナップショットをとっていつでも切 り戻しできるようにして検証 (超便利!!超おすすめ!!) • RDBMSの変換はPythonのバージョンが違ってかなり大変そうなので最新版まで 上げてからやる (そう思っていた時期が私にもありました) • なぜRDBMSの変換が必要なのか • GitLabがPostgreSQLを使うことを強く推奨 • OmnibusパッケージでMySQLがサポートされるのはGitLab EEのみ • GitLab CEはPostgreSQL一択 • 検証が全部済んだら • 土日使って一気に本番環境をアップグレード • ついでにOmnibusパッケージ版にも変換、ディストリビューションもCentOS6.9 からちゃんと公式でテストされているUbuntu Server16.04 LTSに
  • 6. © 2017 UNICAST INC. 5 結論から言います
  • 7. © 2017 UNICAST INC. 6 すげえ大変だった。。。。。
  • 8. 検証: 7.4.3→7.14.3 © 2017 UNICAST INC. 7 • 2回失敗 • Redisのソケット化がうまくいかなかった • 3回目にしてやっと成功 • 本当に大丈夫なのかと思った • diff取るの大変。。。
  • 10. 検証: 7.14.3→8.0 © 2017 UNICAST INC. 9 • メジャーバージョンアップ • diff取るの大変。。。
  • 11. 検証: 8.0→8.11→8.5 © 2017 UNICAST INC. 10 • 8.0→8.17までやる予定だった • だんだんバージョンアップ作業に慣れてきた • というかこのあたりから必要な新設定ファイルを git show abc123>8.0/new/gitlab.yml のように予め8.0,8.1,8.2,…,9.0,9.1,9.2まで抽出しておく • そして差分をWinMergeで視覚的に比較、慎重にvim :sp Vjy C-b w p する • という効率的なやり方に切り替えていく • 頭の切り替えが大変だから • patchコマンド使っても良かったかもしれない • でもdiffとるのすごくつらい。。。。 • 0.1増えるだけでちょこちょこ設定ファイルやミドルウェアが変わる • 8.11でついにMySQLのマイグレーションが失敗するようになった • mysqldumpもMySQL server gone away • gone awayしなくなるまでスナップショット戻す • 8.5まで戻る • MySQLからPostgreSQLに変換することを真剣に検討しなければいけなくなる
  • 13. 検証: MySQL→PostgreSQL RDBMS変換 © 2017 UNICAST INC. 12 • CentOS6.9で標準で入っているPythonのバージョンは2.4 • PostgreSQLに変換するにはPython 2.7が必要 • ビルドするのは絶対イヤ • あちこち探しまくってリポジトリ見つける(一時的にPython 2.7が使える) • gitlabブランチをチェックアウトして変換実施 • 動いた。。。。。 • なんで動いているのかわからない。。。。 • 奇跡の技では。。。
  • 16. 検証: 8.5→8.17 © 2017 UNICAST INC. 15 • バックエンドをPostgreSQLに改めて再度挑戦 • 今度は8.16まで素直に動く • 8.16ちょっと詰まる • けど8.17までアップグレードできた • diff取るの大変だよ。。。。
  • 17. 検証: 8.17→9.0 © 2017 UNICAST INC. 16 • メジャーバージョンアップ • あと一息。。 • 相変わらずdiff取るの大変だよ。。。。
  • 18. 検証: 9.0→9.2 © 2017 UNICAST INC. 17 • ガシガシミドルウェアの変更が入る • いつのまにかグループに公開制御がついていて(8.6あたりから)デフォルトで全 世界に公開する設定になっていて50+個ぐらいのグループをpublicからprivateに 修正。。。 • やっと検証完了(したと思ったら9.3がリリースされた) • リリースから1ヶ月ぐらい寝かせないとバグ満載で生きた心地しないのでここで うちやめ
  • 19. 本番: 7.4.3→9.2 © 2017 UNICAST INC. 18 • 今までの検証結果をまとめた手順書ベースに一気にアップグレード • 大ワープ • 予め検証済みの設定ファイル一式をバージョンを一つ上げるごとにコピーして行 くのでかなり高速 • 万が一に備えてVMはイメージごとバックアップ
  • 20. 本番: 7.4.3→9.2 © 2017 UNICAST INC. 19 GitLabロードアベレージ上昇中
  • 21. 本番: 7.4.3→9.2 © 2017 UNICAST INC. 20 CPU使用率60%
  • 22. 本番: 7.4.3→9.2 © 2017 UNICAST INC. 21 90%
  • 23. 本番: 7.4.3→9.2 © 2017 UNICAST INC. 22 メモリ使用量も上昇させます。
  • 24. 本番: 7.4.3→9.2 © 2017 UNICAST INC. 23 CPU使用率120%
  • 25. 本番: 7.4.3→9.2 © 2017 UNICAST INC. 24 秒読み開始
  • 26. 本番: 7.4.3→9.2 © 2017 UNICAST INC. 25 3
  • 27. 本番: 7.4.3→9.2 © 2017 UNICAST INC. 26 2
  • 28. 本番: 7.4.3→9.2 © 2017 UNICAST INC. 27 1
  • 29. 本番: 7.4.3→9.2 © 2017 UNICAST INC. 28 ワーーーープ!!!!!!!
  • 30. 本番: 7.4.3→9.2 © 2017 UNICAST INC. 29 ついに、来たんだな、GitLab9.2・・・
  • 31. 本番: 7.4.3→9.2 © 2017 UNICAST INC. 30 ああ・・・そうだ
  • 32. 本番: CentOS 6.9 Src. Ver. → Ubuntu Server 16.04 LTS Omnibus Package Ver. © 2017 UNICAST INC. 31 • 今度はソースバージョンのGitLabをOmnibusパッケージ版のGitLabに変換 • これは検証間に合ってなかった • 一発勝負 • ついでにディストリビューションもUbuntu Server 16.04 LTSに変更 • なぜなら開発、テストは主にUbuntu Serverをベースに行われているから • CentOSは安定している代わりにパッケージのバージョンが圧倒的に古く、無いソ フトウェアは自力でビルドする必要がある • 一応うまくいった • LDAP認証対応(Active Directory) • httpsのURLクローン対応
  • 33. 所感 © 2017 UNICAST INC. 32 diff取るのすごく大変でした。。。
  • 34. 教訓 © 2017 UNICAST INC. 33 • 導入したソフトウェアのバージョンアップにはアンテナを貼ってこまめにアップ デートしていくべき
  • 35. © 2017 UNICAST INC. 34 帰ろう、家へ・・・
  • 38. © 2017 UNICAST INC. 37 自宅、、何もかも皆、懐かしい・・・