Why not find your favorite GitOps tools?

D1b28ca276bee52e56ba11785f70d2d6?s=47 makocchi
September 09, 2020

Why not find your favorite GitOps tools?

CNDT 2020 での発表資料です
「GitOps ツール徹底比較!あなたに必要なツールがきっと見つかる」

D1b28ca276bee52e56ba11785f70d2d6?s=128

makocchi

September 09, 2020
Tweet

Transcript

  1. Presented by @makocchi 1 CNDT 2020 GitOps ツール徹底比較! あなたにぴったりな GitOps

    ツールがきっと見つかる GitOps しようよ!
  2. CNDT 2020 | @makocchi 2 Makoto Hasegawa Working at //

    AI Division, CyberAgent, Inc Currently // Develop and maintain private OpenStack cloud. Develop and maintain Kubernetes as a Service platform. CKA (Certified Kubernetes Administrator) CKA-1700-0150-0100 CKAD (Certified Kubernetes Application Developper) CKAD-1800-0005-0100 Job Title // Technical Lead Infrastructure Engineer WHO am I Twitter // @makocchi Facebook // makocchi0923 Hobby // Playing bass
  3. CNDT 2020 | @makocchi 3 Japan Container Days V18.04 「Docker

    だけじゃないコンテナ runtime 徹底比較」 https://speakerdeck.com/makocchi/about-container-runtimes-japan-container-days- v18-dot-04 Japan Container Days V18.12 「runc だけじゃないコンテナ low level runtime 徹底比較」 https://speakerdeck.com/makocchi/jkd-20181205-about-low-level-runtimes CloudNative Days Tokyo 2019 「Kubernetes に Audit log を求めるのは間違っているのだろうか?」 https://speakerdeck.com/makocchi/cndt2019-kubernetes-audit-log- c4d4c5f6-6058-40f9-a5fc-abbb36073a19 Makoto Hasegawa
  4. Presented by @makocchi CNDT 2020 Why not find your favorite

    GitOps tools? #CNDT2020 #CNDT2020_A 4 やった! いっぱい撮るぞ 今日の発表資料は後ほど公開します 写真は撮る必要ありませんが、 撮りたい人は好きなだけ撮って下さい だってオンラインだもの
  5. CNDT 2020 | @makocchi Why not find your favorite GitOps

    tools? #CNDT2020 #CNDT2020_A 5 いい感じにスベった暖まってきたところで・・
  6. TODAY'S AGENDA #CNDT2020 #CNDT2020_A 6 GitOps とは? GitOps ツール比較 GitOps

    Engine について まとめ GitOps の仕組み
  7. CNDT 2020 | @makocchi Why not find your favorite GitOps

    tools? #CNDT2020 #CNDT2020_A 7 さっそくですが "GitOps" とは? について説明していきます
  8. CNDT 2020 @makocchi #CNDT2020 #CNDT2020_A 8 GitOps とは? https://www.weave.works/blog/gitops-operations-by-pull-request 言葉として広まったのは

    Weaveworks 社が blog で 発表してからと言われています blog「Operations by Pull Request」(2017/08) Weaveworks 社では 2016 年から使われているようです 簡単に言うと、、、 Gitへの変更をコミットし、 Pull Request を作成して、 それを承認する、
 というサイクルで Kubernetes 上のリソースを管理するということです
  9. CNDT 2020 @makocchi #CNDT2020 #CNDT2020_A 9 Kubectl apply Kubectl apply

    -k Kubectl set image helm upgrade https://static.sched.com/hosted_files/kccncna19/a4/flux-cd-deep-dive.pdf } git push GitOps とは? ざっくり言ってしまうと、上記のような操作を git push(merge) で自動で行う手法です
  10. CNDT 2020 @makocchi #CNDT2020 #CNDT2020_A 10 GitOps とは? GitOps を実現する上で欠かせないルールがいくつかあります

    例えばこんな感じです。 すべての Kubernetes のリソース構成を Git リポジトリに保存する Git リポジトリのリソースは Pull Request 経由でのみ変更する Git リポジトリのリソースが変更されたら、その変更を自動でクラスターに適用する クラスターの実際の状態が Git リポジトリのリソースと違っている場合は、それを修正する ここらへんの定義は運用しているチームによって若干違ってくる場合があると思いますが、 概ねこんな感じになるのではないでしょうか
  11. CNDT 2020 @makocchi #CNDT2020 #CNDT2020_A 11 GitOps とは? GitOps によってもたらされるメリットとしては下記のようなものがあります

    環境に対する変更が Git の履歴によって分かりやすくなる 誰がいつ何を変更したのかが分かる いつでも前の環境に戻すことができる 環境に対する変更の差分が分かりやすくなる Pull Request によるレビュープロセスを通すことで組織のガバナンスを適用することができる 自動化による運用コスト軽減 Deploy に関してコマンドラインは一切使う必要が無い すごいでしょ
  12. CNDT 2020 @makocchi #CNDT2020 #CNDT2020_A 12 GitOps とは? CI/CD のパイプラインを考えた時に、GitOps

    が担当する部分は CD の部分になります (諸説あります) CI パイプライン Image Registry コードの更新 Pull Request 作成 Pull Request の merge いい感じに自動で Deploy CI CD
  13. CNDT 2020 @makocchi #CNDT2020 #CNDT2020_A 13 GitOps とは? CI/CD のパイプラインを考えた時に、GitOps

    が担当する部分は CD の部分になります (諸説あります) CI パイプライン コードの更新 Pull Request 作成 Pull Request の merge いい感じに自動で Deploy Image Registry
  14. CNDT 2020 @makocchi #CNDT2020 #CNDT2020_A 14 GitOpsの仕組み Git のリポジトリの更新を検知する方法によって 2

    通りの GitOps の手法が存在します つまり
  15. CNDT 2020 @makocchi #CNDT2020 #CNDT2020_A 15 GitOpsの仕組み Git のリポジトリの更新を検知する方法によって 2

    通りの GitOps の手法が存在します つまり Push 型 Webhook いい感じに Deploy してくれるやつ
  16. CNDT 2020 @makocchi #CNDT2020 #CNDT2020_A 16 GitOpsの仕組み Git のリポジトリの更新を検知する方法によって 2

    通りの GitOps の手法が存在します つまり Push 型 1VMMܕ Webhook Polling いい感じに Deploy してくれるやつ このようにアプローチの仕方で分かれます
  17. CNDT 2020 @makocchi #CNDT2020 #CNDT2020_A 17 GitOpsの仕組み Push 型の最たるパターンは Git

    リポジトリからの Webhook を受けて Deploy が実行されることでしょう Webhook の飛ばし先としては・・・・ Push 型 Webhook
  18. CNDT 2020 @makocchi #CNDT2020 #CNDT2020_A 18 GitOpsの仕組み Push 型の最たるパターンは Git

    リポジトリからの Webhook を受けて Deploy が実行されることでしょう このように Circle CI や GitHub Actions のようになると思います Push 型 Webhook Circle CI GitHub Actions Travis CI ... and so on { Push 型の場合は Circle CI や GitHub Actions 内で Kubernetes に 対して Deploy をすることになります (CIOps とも言われています) apply
  19. CNDT 2020 @makocchi #CNDT2020 #CNDT2020_A 19 GitOpsの仕組み Push 型の場合は Kubernetes

    のクラスターに対する認証情報を外部に(Deploy するやつ)に持たせないといけません Push 型 また、対象の Kubernetes のクラスターは API の endpoint を外部にさらさないといけません 組織によってはセキュリティ要件的に不可能なケースもあるかもしれません 一方で、manifest 内の暗号化した文字列を apply 前に復号化するといった作業はしやすいメリットがあります (例 : sealed secret など https://github.com/bitnami-labs/sealed-secrets)
  20. CNDT 2020 @makocchi #CNDT2020 #CNDT2020_A 20 GitOpsの仕組み Pull 型の場合は Kubernetes

    クラスター内に展開した Agent のようなものが GitHub レポジトリを定期的に見に行く(Polling) ことになります 1VMMܕ Polling なのでもう少し分かりやすくすると・・・・
  21. CNDT 2020 @makocchi #CNDT2020 #CNDT2020_A 21 GitOpsの仕組み Pull 型の場合は Kubernetes

    クラスター内に展開した Agent のようなものが GitHub レポジトリを定期的に見に行く(Polling) ことになります 1VMMܕ Polling Polling 自分自身に対して Deploy する
  22. CNDT 2020 @makocchi #CNDT2020 #CNDT2020_A 22 GitOpsの仕組み Pull 型は Kubernetes

    の API を外部にさらす必要はありません (オンプレミス内でもOK!) また Kubernetes クラスターの認証情報もクラスター内に留めておくことが可能です 1VMMܕ Polling 自分自身に対して Deploy する 一方で manifest 内で暗号化されている部分を復号化して apply するといったことは少し困難になります Kubernetes External Secrets のようなものと一緒に使うのがいいでしょう (https://github.com/godaddy/kubernetes-external-secrets)
  23. CNDT 2020 @makocchi #CNDT2020 #CNDT2020_A 23 結局 Push 型と 1VMM

    ܕどちらがいいの? どちらが良い、悪いというのは一概には言えない部分があります ご自身や所属チームが運用しやすいと思った方式で良いと思います 個人的にはよりセキュアに運用できる Pull 型をオススメします Pull 型のほうが オススメ
  24. CNDT 2020 | @makocchi Why not find your favorite GitOps

    tools? #CNDT2020 #CNDT2020_A 24 "GitOps" について理解が深まったところで さっそくツールの話に入っていきます! ようやく本題
  25. CNDT 2020 | @makocchi Why not find your favorite GitOps

    tools? #CNDT2020 #CNDT2020_A 25 先に謝っておきます 本セッションは Pull 型のツールの話をします Push 型のファンの皆様ごめんなさい!
  26. CNDT 2020 | @makocchi Why not find your favorite GitOps

    tools? #CNDT2020 #CNDT2020_A 26 それでは本日の主役の ツール達に登場してもらいましょう
  27. CNDT 2020 @makocchi #CNDT2020 #CNDT2020_A 27

  28. CNDT 2020 | @makocchi Why not find your favorite GitOps

    tools? #CNDT2020 #CNDT2020_A 28 まずは表面的な比較からいきましょう Google Trend / Github Status / Contributors / Foundation
  29. CNDT 2020 @makocchi #CNDT2020 #CNDT2020_A 29 GitOps ツール比較 〜 Google

    Trend 〜 直近 1 年間の Google Trend です Argo CD が少し Trend 的には優勢のようですね
  30. CNDT 2020 @makocchi #CNDT2020 #CNDT2020_A 30 GitOps ツール比較 〜 Google

    Trend 番外編〜 少し話がずれてしまいますが、GitOps の Trend です 近年徐々に広まっているということが分かりますね Weaveworksによる Blog の発表
  31. CNDT 2020 @makocchi #CNDT2020 #CNDT2020_A 31 GitOps ツール比較 〜 開発状況編〜

    GitHub Stars GitHub commits Contributors Foundaion 5400+ 4800+ 230+ CNCF (sandbox) 3700+ 2400+ 270+ CNCF (Incubating)※ 3700+ 9500+ 190+ CDF Flux と Argo CD は CNCF によって管理されています 一方で Jenkins X は Jenkins と共に CDF (Continuous Delivery Foundation) によって管理されています とは言っても CDF は Linux Foundation 配下なので、CNCF とあまり違いは無いかもしれません (※ 正確には CNCF に登録されているのは Argo workflow のほう) ※2020/09/01時点
  32. CNDT 2020 | @makocchi Why not find your favorite GitOps

    tools? #CNDT2020 #CNDT2020_A 32 続いて機能の比較をしていきます
  33. CNDT 2020 | @makocchi Why not find your favorite GitOps

    tools? #CNDT2020 #CNDT2020_A 33 https://github.com/fluxcd/flux Flux は一言で言ってしまうと非常にシンプルな作りになっています Flux の設定・操作は fluxctl を使います Flux の Agent をクラスターに展開する際に Git のリポジトリや ディレクトリ、Namespace 等を指定して起動させます つまり 1 Agent = 1 リポジトリ定義 になります 複数のリポジトリ定義、例えば Production や Staging 等を branch を分けている場合、同一のクラスターに展開したい場合は定義毎に Flux の Agent を起動させないといけません (※注意事項あり) ということでマルチテナント環境の場合においても、それぞれのテ ナントの環境毎に Agent が必要になります 複数動かす場合は serviceaccount と clusterrolebinding に注意 (flux という名前固定で serviceaccount や clusterrolebinding が作 成されるので後から install するやつに上書きされる可能性あり)
  34. CNDT 2020 | @makocchi Why not find your favorite GitOps

    tools? #CNDT2020 #CNDT2020_A 34 https://github.com/fluxcd/flux Flux のインストール手順 (公式手順より) # namespace Λ࡞੒ $ kubectl create ns flux # flux ͷ deployment Λ࡞੒ $ export GHUSER="makocchi-git" $ fluxctl install \ --git-user=${GHUSER} \ --git-email=${GHUSER}@users.noreply.github.com \ --git-url=git@github.com:${GHUSER}/flux-get-started \ --git-path=namespaces,workloads \ --namespace=flux | kubectl apply -f - # public key Λੜ੒͢Δ # ͜ΕΛ github ͷ repo ͷ deploykey ʹొ࿥͢Δ # write ݖݶ͕ඞཁ $ fluxctl identity --k8s-fwd-ns flux ssh-rsa AAAA..... ※ もちろん Helm による install もサポートされています (https://charts.fluxcd.io)
  35. CNDT 2020 | @makocchi Why not find your favorite GitOps

    tools? #CNDT2020 #CNDT2020_A 35 https://github.com/fluxcd/flux デフォルトでは Flux は sync state を Git の tag で管理します 場合によっては Git の tag を勝手につけて欲しくない場合もあるか もしれませんが、その場合にはリポジトリに Deploy key を登録する 際に権限を readonly にしておきましょう。その際に Agent に "--git-readonly" を渡すのを忘れずに 通常は Polling で一定間隔で Git リポジトリを見ていますが、手動 で sync させることももちろん可能です (fluxctl sync) # ϚχϡΞϧͰ sync ͤ͞Δ $ fluxctl sync --k8s-fwd-ns flux Synchronizing with ssh://git@github.com/makocchi-git/flux-get- started Revision of master to apply is 116fca5 Waiting for 116fca5 to be applied ... Done.
  36. CNDT 2020 | @makocchi Why not find your favorite GitOps

    tools? #CNDT2020 #CNDT2020_A 36 https://github.com/fluxcd/flux Flux の Agent は port 3031 経由で metrics を取得することができ ます(Prometheus 形式) 例えば "flux_daemon_sync_manifests{success='false'} > 0" のよ うに監視しておけば、manifest の apply に失敗した場合検知するこ とができます シンプルな作りなゆえ、実行に必要なリソースは非常に軽量 version 1.20.2 において binary は 60MB 程 / メモリ使用は 40MB 以下 が、Flux にできることはこれだけじゃない!
  37. CNDT 2020 | @makocchi Why not find your favorite GitOps

    tools? #CNDT2020 #CNDT2020_A 37 https://github.com/fluxcd/flux Flux が監視するのは実は Git リポジトリだけではなくて、Image を 監視することもできます (flux 的には「policy」という定義) Image が更新されたら deployment も更新される仕組み Policy は annotation で自由に設定が可能です 例えばコンテナ名が "myapp" で image に "nginx:1.18.0" を使用 していたとすると・・・ "fluxcd.io/tag.myapp: glob:1.18.*" としておくと 1.18.x の image が更新される度に deployment を更新してくれます Git の更新(image tag の更新)は flux が自動でやってくれます これはもはや GitOps というか ImageOps(造語)
  38. CNDT 2020 | @makocchi Why not find your favorite GitOps

    tools? #CNDT2020 #CNDT2020_A 38 Argo CD の特徴としては、なんといっても GUI があることではないで しょうか 設定や状態の確認、マニュアルの Sync 操作等すべて GUI から可能です 誰でも見れるデモサイトがあります https://cd.apps.argoproj.io/ https://github.com/argoproj/argo-cd
  39. CNDT 2020 | @makocchi Why not find your favorite GitOps

    tools? #CNDT2020 #CNDT2020_A 39 Argo CD は Git リポジトリや ディレクトリ や deploy 先のクラスター等 の定義を「Application」という名前で定義します Application である程度細かく権限を設定できるのでマルチテナントで も問題なく運用できるでしょう (別途 Argo CD 管理者が居たほうがいい と思いますが) Argo CD は各種設定が Custom Resource で定義されるので、いわゆる Argo CD で Argo CD を管理することが可能です この手法を「App Of Apps Pattern」といいます https://argoproj.github.io/argo-cd/operator-manual/cluster-bootstrapping/#app-of-apps-pattern https://github.com/argoproj/argo-cd
  40. CNDT 2020 | @makocchi Why not find your favorite GitOps

    tools? #CNDT2020 #CNDT2020_A 40 Argo CD のインストール手順 (公式手順より) # namespace Λ࡞੒ $ kubectl create namespace argocd # ֤छίϯϙʔωϯτͷ install $ kubectl apply -n argocd -f https://raw.githubusercontent.com/ argoproj/argo-cd/stable/manifests/install.yaml # ha ߏ੒Ͱ install ͢Δ manifest ΋༻ҙ͞Ε͍ͯ·͢ $ kubectl apply -n argocd -f https://raw.githubusercontent.com/ argoproj/argo-cd/stable/manifests/ha/install.yaml Install 後、「kubectl port-forward」や LoadBalancer を定義すること で argocd-server の Pod にアクセスすると GUI 操作が可能になります GUI の初期 password は argocd-server の Pod 名 (例えばこんな感じ argocd-server-77875446bc-mtl2v) です https://github.com/argoproj/argo-cd
  41. CNDT 2020 | @makocchi Why not find your favorite GitOps

    tools? #CNDT2020 #CNDT2020_A 41 Argo CD は複数の「Application」を動かすことができるので、例えばこ のように中央集権 Argo CD を立てて、多数のクラスターを管理すると いったことも可能です イケてるクラスター ステキなクラスター ワンダフルなクラスター まとめて 面倒みちゃる イケてるApplication ワンダフルApplication ステキApplication https://github.com/argoproj/argo-cd
  42. CNDT 2020 | @makocchi Why not find your favorite GitOps

    tools? #CNDT2020 #CNDT2020_A 42 もちろんこういったパターンや イケてるクラスター ステキなクラスター ワンダフルなクラスター https://github.com/argoproj/argo-cd
  43. CNDT 2020 | @makocchi Why not find your favorite GitOps

    tools? #CNDT2020 #CNDT2020_A 43 こういったパターンも有りかなと思います イケてるクラスター ステキなクラスター ワンダフルなクラスター 要件に応じていろいろな構成パターンが組めるのは Argo CD の魅力だと思います https://github.com/argoproj/argo-cd
  44. CNDT 2020 | @makocchi Why not find your favorite GitOps

    tools? #CNDT2020 #CNDT2020_A 44 Argo CD も各種 metrics を Prometheus 形式で取得可能です Install 手順に従っていれば "argocd-metrics" 及び "argocd-server- metrics" の Service のエンドポイントが作成されています Prometheus 側は scrape 先に上記のエンドポイントを port 8082 で設 定するだけ Grafana の dashboard もあります https://github.com/argoproj/argo-cd
  45. CNDT 2020 | @makocchi Why not find your favorite GitOps

    tools? #CNDT2020 #CNDT2020_A 45 https://github.com/jenkins-x/jx Jenkins X が提供するものは前述の Flux や Argo CD とは少し異な り、CI/CD のパイプラインそのものを構築します (GitOps が組み込 まれている) 様々な OSS が組み合わさって Jenkins X が成り立っています Helm V3 Skaffold Kaniko Nexus ChartMuseum Velero Prow Tekton Lighthouse Vault UI は octant の plugin が提供されている (https://github.com/jenkins-x/octant-jx) 言い換えると、これだけのものがインストールされるということ
  46. CNDT 2020 | @makocchi Why not find your favorite GitOps

    tools? #CNDT2020 #CNDT2020_A 46 https://github.com/jenkins-x/jx Jenkins という名前が入っていますが、いわゆるあの "Jenkins" と は違ったものです https://jenkins-x.io/docs/resources/content/ ちょっと前までは ワシがロゴじゃったのよ・・
  47. CNDT 2020 | @makocchi Why not find your favorite GitOps

    tools? #CNDT2020 #CNDT2020_A Jenkins X は jx コマンドで操作します jx コマンドは何でもできてしまう・・すごいやつ (Jenkins X の設定や 操作はもちろんのこと、Kubernetes クラスターの作成も可能、istio や flagger といったアドオンもインストールすることができます) 「jx boot」でインストールが可能 (従来の「jx install」は deprecated) 無事にインストールが終わると staging 用と production 用の 2 つの Git リポジトリが作成され、これが GitOps 用のリポジトリになります dev の Git リポジトリも作成されるが、これは「jx boot」用 アプリケーションの Git リポジトリを Jenkins X に import もしくは 「jx create quickstart」することでやっと準備が整います 47 https://github.com/jenkins-x/jx
  48. CNDT 2020 | @makocchi Why not find your favorite GitOps

    tools? #CNDT2020 #CNDT2020_A 少しアーキテクチャが複雑なのが残念なところですね・・ 48 https://github.com/jenkins-x/jx
  49. CNDT 2020 | @makocchi Why not find your favorite GitOps

    tools? #CNDT2020 #CNDT2020_A 簡単にするとこうなります(1/3) 49 https://github.com/jenkins-x/jx Preview Pull Request Webhook App Staging Production Tekton Registry
  50. CNDT 2020 | @makocchi Why not find your favorite GitOps

    tools? #CNDT2020 #CNDT2020_A 簡単にするとこうなります(2/3) 50 https://github.com/jenkins-x/jx Preview Merge Webhook App Staging Production Tekton Registry Pull Request & merge Webhook Staging
  51. CNDT 2020 | @makocchi Why not find your favorite GitOps

    tools? #CNDT2020 #CNDT2020_A 簡単にするとこうなります(3/3) 51 https://github.com/jenkins-x/jx Preview App Staging Production Tekton Registry Staging jx promote Pull Request & merge Webhook Production
  52. CNDT 2020 @makocchi #CNDT2020 #CNDT2020_A 52 GitOps ツール比較 〜 機能編〜

    インストール Multi Tenancy GUI ImageOps その他 (※) ChatOps૊ΈࠐΈ CI/CD ͢΂ͯΧόʔ Jenkins X はインストール自体は簡単ですが、使用するコンポーネントが多く時間がかかる点や、設定の複雑さがあります Flux は Multi Tenancy が必要な時にも対応は可能ですが、すこし手がかかります (こちらにベストプラクティスが載っています https://github.com/fluxcd/multi-tenancy) Argo CDは強力な GUI を使えるメリットがあります ※2020/09/01時点
  53. CNDT 2020 | @makocchi Why not find your favorite GitOps

    tools? #CNDT2020 #CNDT2020_A 53 各種 GitOps ツールについて みなさんのお気に入りは 見つかりましたでしょうか?
  54. CNDT 2020 | @makocchi Why not find your favorite GitOps

    tools? #CNDT2020 #CNDT2020_A 54 GitOps Engine のお話
  55. CNDT 2020 @makocchi #CNDT2020 #CNDT2020_A 55 Argo CD + Flux

    = Argo Flux 2019 年 11 月に衝撃的なニュースが飛び込んできました なんと Argo CD と Flux おんなじようなことやってるから 一緒になっちゃおうぜ!って発表がありました GitOps Engine という仕組みでお互いを共通化していき、 お互いに不足している部分をカバーしあっていこうという 素晴らしい動きだと思いました https://www.weave.works/blog/argo-flux-join-forces ちょwおまww
  56. CNDT 2020 @makocchi #CNDT2020 #CNDT2020_A 56 GitOps Engine のリリース 発表以来しばらく動きが無かったのですが、

    2020 年 6 月についに最初の GitOps Engine がリリース! Argo と Flux 統合は進んでいるかのように見えたのですが・・ 世の中そう上手くいくことばかりでは無かったのです https://blog.argoproj.io/argo-cd-v1-6-democratizing-gitops-with-gitops-engine-5a17cfc87d62
  57. CNDT 2020 @makocchi #CNDT2020 #CNDT2020_A 57 Argo Flux 計画の破綻 Flux

    は GitOps Engine を取り込んで Flux v2 として提供できるように いろいろ検証を進めていたのですが、 「我々(コントリビューター)が考えるビジョン (v2) を提供するためには  GitOps Engine では駄目だ」 と結論付け、新たに「GitOps Toolkit」を作成し、 Flux v2 へ組み込む道を選びました GitOps 界の戦国時代はまだまだ続きそうですね 音楽性の違いってやつ? GitOps Toolkit 作るわ GitOps Engine 続けるわ
  58. CNDT 2020 @makocchi #CNDT2020 #CNDT2020_A 58 GitOps Toolkit について GitOps

    Toolkit についてはこちらにアーキテクチャやドキュメントが 記載されていますので、是非御覧ください GitOps Toolkit についての発表は こちらの Weaveworks の blog をどうぞ https://toolkit.fluxcd.io/ https://www.weave.works/blog/gitops-with-flux-v2
  59. CNDT 2020 | @makocchi Why not find your favorite GitOps

    tools? #CNDT2020 #CNDT2020_A 59 というわけで さっそく GitOps Toolkit 触ってみた GitOps Toolkit やっぱ気になるよね!
  60. CNDT 2020 | @makocchi Why not find your favorite GitOps

    tools? #CNDT2020 #CNDT2020_A 60 GitOps Toolkit https://github.com/fluxcd/toolkit fluxctl ではなく gotk というコマンドラインツールになりました Git リポジトリの定義や sync の間隔、リポジトリ内のどのディレクトリ を見るか等の設定はすべて Custom Resource に移行されました gitrepositories.source.toolkit.fluxcd.io kustomizations.kustomize.toolkit.fluxcd.io などなど インストールは 「gotk bootstrap」 で行います gitops-system namespace が作成され、ここに controller 達が Deploy されます インフラ用の Git リポジトリが作成され、Deploy key も自動で登録さ れます (Flux v1では手動だったので便利になった) リポジトリには初期の bootstrap される manifest 達が入っています GitOps Toolkit だよね・・多分
  61. CNDT 2020 | @makocchi Why not find your favorite GitOps

    tools? #CNDT2020 #CNDT2020_A 61 GitOps Toolkit https://github.com/fluxcd/toolkit bootstrap が終わればあとは Git リポジトリを更新するとクラスターへ適 用してくれるようになります いろいろな設定が Custom Resource になったので、Flux(v1) の時のよう に複数の agent/controller を動かす必要が無くなりました 通知(アラート)の機能が備わっています! これは slack の例。他には Discord や Teams などにも対応しています
  62. CNDT 2020 | @makocchi Why not find your favorite GitOps

    tools? #CNDT2020 #CNDT2020_A 62 GitOps Toolkit https://github.com/fluxcd/toolkit Flux(v1) の時にあった Image の更新検知は・・・? 残念ながら現段階ではできない様子 ロードマップに載っているんですが・・現在はデザインもされていない https://toolkit.fluxcd.io/roadmap/ GUI 対応もロードマップに無いので、予定は無さそうですね
  63. CNDT 2020 @makocchi #CNDT2020 #CNDT2020_A インストール Multi Tenancy GUI ImageOps

    その他 (※) ChatOps૊ΈࠐΈ CI/CD ͢΂ͯΧόʔ ઈࢍ։ൃத 63 GitOps ツール比較 v2 〜 機能編〜 ※2020/09/01時点 GitOps Toolkit GitOps Toolkit は Flux の弱点を上手く克服してきていますね 今後に期待できそうです
  64. CNDT 2020 | @makocchi Why not find your favorite GitOps

    tools? #CNDT2020 #CNDT2020_A 64 本日のまとめ
  65. CNDT 2020 | @makocchi Why not find your favorite GitOps

    tools? #CNDT2020 #CNDT2020_A 65 ?? ? とりあえず手軽に GitOps というものを 体験してみたい
  66. CNDT 2020 | @makocchi Why not find your favorite GitOps

    tools? #CNDT2020 #CNDT2020_A 66 ?? ? もう Git をいちいち更新するのも面倒くさい 新しい Image を Push したら 勝手に Deployしてほしい
  67. CNDT 2020 | @makocchi Why not find your favorite GitOps

    tools? #CNDT2020 #CNDT2020_A 67 ?? ? GUI 見ながらリソースが適用されていく 様子を見てニヤニヤしたい
  68. CNDT 2020 | @makocchi Why not find your favorite GitOps

    tools? #CNDT2020 #CNDT2020_A 68 ?? ? 「CI/CD のパイプラインをいい感じに作っといて。 あ 明日までね。 ついでに Git リポジトリもよろしく」 「!?」
  69. CNDT 2020 | @makocchi Why not find your favorite GitOps

    tools? #CNDT2020 #CNDT2020_A 69 ?? ? タコが好きです
  70. CNDT 2020 | @makocchi Why not find your favorite GitOps

    tools? #CNDT2020 #CNDT2020_A 70 ?? ? 新しいのが大好き! 触ってみたい! GitOps Toolkit
  71. CNDT 2020 | @makocchi Why not find your favorite GitOps

    tools? #CNDT2020 #CNDT2020_A 71 みなさんにお願い!! GitOps に興味が出てきた人は 是非試してみてください! セッションを見るだけで終わらせずに、 何らかのアクションをしてみましょう! 約束だぞ!  
  72. Presented by @makocchi 72 CNDT 2020 GitOps ツール徹底比較! あなたにぴったりな GitOps

    ツールがきっと見つかる GitOps しようよ! FINISH ご清聴ありがとうございました!! GitOps ツール徹底比較! あなたにぴったりな GitOps ツールがきっと見つかる All images in this presentation are picked from pixabay.com