はじめに
2020/5/20(水)開催のGitOps Days 2020に参加してきましたので、 まとめていきたいと思います!
※発表者ではなく、ただ聞くだけです。。。
GitOps Daysは、私が知っている限りではGitOpsに関するはじめての大きめイベントです。 はじめてGitOpsについて学びたい人や、GitOpsの利点を理解するようにチームを説得する人向けのようです。 現在のプロダクトでGitOpsを導入しているので世界的にGitOpsがどのように浸透しているのか?今後の展望はどうなっていくのか?などに興味を持ち参加しました。
GitOpsとは?
まずGitOpsとは何ぞや?という疑問もあると思うので説明します。 GitOpsはWeaveworks社が提唱した、Kubernetesの運用ベストプラクティスであり、 宣言的インフラストラクチャとアプリケーションの「Single source of Truth」としてGitを利用し、システム実行環境やアプリケーションの変更を行う方法です。
簡単に述べるとgitのcodeと環境面が同期して常にcodeの状態が正になる方法です。 メリットとして、codeですべて管理できる、環境構築が容易になる、セキュリティが向上するなどが挙げられます。
過去にGitOpsを実現するfluxを検証したことがあるので興味がある方はご覧ください。 cabi99.hatenablog.com
印象深かったセッションなど
ここでは印象深かったセッション(など)についてまとめていきます。 Day 1ではGitOpsがどのようなものなのか?概念やメリットを説明しています。 他にも具体的なプラクティスを紹介し、導入企業のエンジニアが事例を紹介しています。
10:00 – 10:27 am PT: GitOps Practitioner Highlight – Palo Alto Networks – Javeria Khan
Javeria KhanさんがGitOpsプラクティスを紹介してくれました。
利用する技術以外にもメリットやオンボーディング時の注意点が興味深かいです。
GitOpsの利点
- 可逆性
- 監査証跡
- 透明性
- 反復的なタスクを自動化する
- 開発および運用チーム間のコラボレーション
5番以外の利点は認識としてありました。 GitOpsにより環境が同期するため、コード管理時にDevelopとOperationを意識する。 これによりDevとOpsのようにチームが完全分業体制から共通の概念を持つ one teamとして機能しやすいのだと解釈しました。
Layer別の役割と技術
GitOps導入で技術の統一は必須でなく、それぞれの用途に合う仕組みを採用します。 また、環境なのかアプリケーションなのかでオーナシップを持つメンバーが変化します。
インフラ層(IaC)
ステークホルダー
- SRE
- Infra Engineers
- Management
プロビジョニング(例)
- Terraform → Atlantis
- Salt → Scheduled states
設定情報(例)
Puppet → code manage Flux, Argo → cluster controllers + config repos
アプリ層
ステークホルダー
- Developers
- DevOps, Test Engineers
アプリケーションTemplating, Deployments
- Helm, Kustomize
- Flux, Argo: cluster controllers + app manifest
- Flagger: Blue/Green
オンボーディングで心掛けること
自分たちのチームもGitOpsを導入しているのですが、 オンボーディング時の心掛けはかなり同意です!
Dev
- 時間を先行投資して、仕組みと文化を定着させること
Management
- 個人への依存をなくすこと
12:40 – 1:10 pm PT: GitOps for Cost Efficiency, Compliance, Velocity, Security, Resilience, and more! – Cornelia Davis
@cdavisafcさんによるコスト効率、コンプライアンス、速度などなど良い点をてんこ盛りに説明して頂いてます。
GoogleのDevOps Elite performance reportでは、セキュリティについてあまり言及されていないので、ここでGitOpsだよ!と述べています。 システムの可用性、セキュリティを支えるために、必要な要素がGitOpsによりどのようにカイゼンするか?明確になるセッションでした。
GitOpsを支える5つの要素
- アプリケーションチームの生産性
- アプリケーションチームの自主性
- 安全なネットワークの確立
- 再現性
- 冗長性
ここは動画が公開されてもう一度視聴してからまとめようと思います。。。
1:10 – 1:17 pm PT: Security and GitOps – Maya Kaczorowski
パズルがアイスクリームと同じくらい大好きな @MayaKaczorowski さんによる GitOpsがもたらすセキュリティの利点の説明です。
個人的には従来のCIOpsのようなpush型デプロイからpull型デプロイへ変更されるため kubernetes clusterのip制御が無くなるので、セキュリティホールのリスクが減る認識でした。 このセッションでは、それ以外にもセキュリティの利点があることを学べました。
セキュリティ利点
管理
さまざまな仕組みが「〇〇 as Code」で実現するため、 バージョニングや不変なものをSingleSourceに集約でき、全体を管理しやすくなる。
監視
デプロイ方法が決まるため、監視しやすい
セキュリティアップデート
デプロイが単純化されるため、セキュリティアップデートに集中する時間が取れる。
軽くまとめてみる?
gitログ、PRコメント、およびレビューポリシーにより、責任を共有しセキュリティの脆弱性の解決に対して協力体制が作れるようです。 同じ指標が持てるようになれば、同じ方向に向かって協力できるようになるのが良いです。 なんだかエンジニアリングでプロジェクトをデザインしている感じが好きです。
GitOps = IaC + Config as Code + Policy as code + Policy as code + thing as code
所感
Day 1は主にGitOpsの抽象的な部分を説明が多かったです。 GitOps自体は哲学であり、それを実現する仕組みは1つでなく、目的に併せて変化するものだと感じました。 実際に導入事例の紹介でも企業によって「GitOps = 〇〇 + △△」の定義が異なることも 多く、各企業が自分たちのモデルにあったものを探して適応している印象です。 もしかすると組織のDevOps習熟度で、この辺は変化していきそうな気がします。
※英語を学習中なので、所々説明している内容と異なるかもしれませんがご了承ください。 むしろ、これはこういうことだよとかフィードバックがあると嬉しいです。