Slide 1

Slide 1 text

- さぁDay2 Operationをはじめよう- RyuSA Gitlab Operatorと夢⾒るGitlab⾃動化の旅

Slide 2

Slide 2 text

RyuSA Financial Service Engineer Java & SpringBoot / Typescript & React Docker / Kubernetes : RyuSA : ryusa_eng

Slide 3

Slide 3 text

注意 Gitlab Operatorは2021年9⽉時点でv0.1.0が初リリースされました 本番導⼊は、もうすこーし待った⽅が良いでしょう🤔

Slide 4

Slide 4 text

Gitlabの Day-2 Operation がつらい😱

Slide 5

Slide 5 text

• Gitlabに要求される”⾼可⽤性” • 意思決定の場として使われるため、Gitlabが落ちると意思決定が滞る • 継続的開発(CI)を実現するために、Gitlabが落ちると開発が滞る • 継続的デリバリー(CD)を実現するために、Gitlabが落ちるとデリバリーが滞る → いまやGitlabが落ちると、サービス/SLAへの影響が出る可能性がある🤔 • Gitlabの多様な機能への”拡張” • Gitlabの機能拡充により、開発が効率がさらに良くなっていく • 開発者「Gitlab 14の新機能が素晴らしい︕明⽇にでもGitlab(Gitlab 11系)アップグレードしてくれ」 • 管理者「っ……︕︕開発者の⼈っていつもそうですよね︕管理者のことなんだと思って(ry」 → ますますGitlabを迅速にアップグレードできる体制が必要に🤔 加速するGitlab管理者への要求

Slide 6

Slide 6 text

Gitlabと愉快な仲間たち

Slide 7

Slide 7 text

Gitlabと愉快な仲間たち 定期的なデータのバックアップ HA構成 Leader-Follower構成 証明書の更新 などなど。。。

Slide 8

Slide 8 text

運⽤負荷、なんとかしたいですよね

Slide 9

Slide 9 text

Gitlab Operator

Slide 10

Slide 10 text

Gitlab Operator とは - Kubernetes上にGitlabをインストール/管理するためのツール - KubernetesのOperator Patternsに沿って実装 - The Operator offers the benefit of Day 2 operators to the GitLab installation - インストール後の”運⽤フェーズ”で楽するためのツール

Slide 11

Slide 11 text

よくあるGitlab運⽤ なんか……こう……いい感じにGitlabの運⽤よろしく︕ 定期バックアップ インストール リストア 機能拡張 バージョンアップ

Slide 12

Slide 12 text

よくあるGitlab運⽤ なんか……こう……いい感じにGitlabの運⽤よろしく︕ 定期バックアップ インストール リストア 機能拡張 バージョンアップ 完全定型作業 ナレッジ化された定型作業

Slide 13

Slide 13 text

よくあるGitlab運⽤ なんか……こう……いい感じにGitlabの運⽤よろしく︕ 定期バックアップ インストール リストア 機能拡張 バージョンアップ あるべき姿を定義(Custom Resource) 定型作業を⾃動化 Gitlab Operatorのある運⽤ ナレッジを実装して作業の⾃動化

Slide 14

Slide 14 text

Gitlab Operatorをインストール 専⽤スキーマの登録(CRD) Gitlab Operatorのデプロイ Gitlab Operator作成

Slide 15

Slide 15 text

Gitlab Operatorの挙動 “Gitlab”リソース作成(CR) 作成検知

Slide 16

Slide 16 text

“Gitlab”リソース作成(CR) 作成検知 NGINX Gitaly (Cluster) Redis (Cluster) Webservice PostgreSQL … Operatorが“Gitlab”リソースに合わせた プロセス(=Pod)を作成して、管理してくれる Gitlab Operatorの挙動

Slide 17

Slide 17 text

“Gitlab”リソース作成(CR) 作成検知 NGINX Gitaly (Cluster) Redis (Cluster) Webservice PostgreSQL … Kubernetesが起動するプロセス数(=replicas)や プロセス死活管理(=Podが停⽌した際の挙動)をしてくれる Gitlab Operatorの挙動

Slide 18

Slide 18 text

“Gitlab”リソース修正 変更検知 NGINX Gitaly (Cluster) Redis (Cluster) Webservice PostgreSQL … Gitlab Operatorの挙動

Slide 19

Slide 19 text

“Gitlab”リソース修正 変更検知 NGINX Gitaly (Cluster) Redis (Cluster) Webservice PostgreSQL … Gitlab Operatorの挙動 Operatorが“Gitlab”リソースに合わせて Gitlabをあるべき姿に変更していく(=リコンサイルループ)

Slide 20

Slide 20 text

“Gitlab”リソースの管理 Watch NGINX Gitaly (Cluster) Redis (Cluster) Webservice PostgreSQL … まとめ 👀 Podとして管理 Gitlabの設定を反映

Slide 21

Slide 21 text

詳細はブログへ https://ryusa.hatenablog.com/entry/2021/10/09/225436