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 full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  6. Gitlabと愉快な仲間たち

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  9. Gitlab Operator

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

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

    View full-size slide

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

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

    View full-size slide

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

    Gitlab Operatorの挙動

    View full-size slide

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

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

    View full-size slide

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

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

    View full-size slide

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

    View full-size slide