Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Gitlab Operatorと夢見るGitlab自動化の旅

RyuSA
October 15, 2021

Gitlab Operatorと夢見るGitlab自動化の旅

Gitlab OperatorはKubernetes上にGitlabをデプロイし、Day-2 Operationの自動化を行なってくれるKubernetes Operatorです

詳細:https://ryusa.hatenablog.com/entry/2021/10/09/225436

RyuSA

October 15, 2021
Tweet

More Decks by RyuSA

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

  4. Gitlabの Day-2 Operation がつらい😱

    View Slide

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

    View Slide

  6. Gitlabと愉快な仲間たち

    View Slide

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

    View Slide

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

    View Slide

  9. Gitlab Operator

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  16. “Gitlab”リソース作成(CR)
    作成検知
    NGINX
    Gitaly (Cluster)
    Redis (Cluster)
    Webservice
    PostgreSQL

    Operatorが“Gitlab”リソースに合わせた
    プロセス(=Pod)を作成して、管理してくれる
    Gitlab Operatorの挙動

    View Slide

  17. “Gitlab”リソース作成(CR)
    作成検知
    NGINX
    Gitaly (Cluster)
    Redis (Cluster)
    Webservice
    PostgreSQL

    Kubernetesが起動するプロセス数(=replicas)や
    プロセス死活管理(=Podが停⽌した際の挙動)をしてくれる
    Gitlab Operatorの挙動

    View Slide

  18. “Gitlab”リソース修正
    変更検知
    NGINX
    Gitaly (Cluster)
    Redis (Cluster)
    Webservice
    PostgreSQL

    Gitlab Operatorの挙動

    View Slide

  19. “Gitlab”リソース修正
    変更検知
    NGINX
    Gitaly (Cluster)
    Redis (Cluster)
    Webservice
    PostgreSQL

    Gitlab Operatorの挙動
    Operatorが“Gitlab”リソースに合わせて
    Gitlabをあるべき姿に変更していく(=リコンサイルループ)

    View Slide

  20. “Gitlab”リソースの管理
    Watch
    NGINX
    Gitaly (Cluster)
    Redis (Cluster)
    Webservice
    PostgreSQL

    まとめ
    👀
    Podとして管理
    Gitlabの設定を反映

    View Slide

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

    View Slide