Slide 1

Slide 1 text

Presented by @makocchi 1 CNDT 2020 GitOps ツール徹底比較! あなたにぴったりな GitOps ツールがきっと見つかる GitOps しようよ!

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

CNDT 2020 | @makocchi Why not find your favorite GitOps tools? #CNDT2020 #CNDT2020_A 5 いい感じにスベった暖まってきたところで・・

Slide 6

Slide 6 text

TODAY'S AGENDA #CNDT2020 #CNDT2020_A 6 GitOps とは? GitOps ツール比較 GitOps Engine について まとめ GitOps の仕組み

Slide 7

Slide 7 text

CNDT 2020 | @makocchi Why not find your favorite GitOps tools? #CNDT2020 #CNDT2020_A 7 さっそくですが "GitOps" とは? について説明していきます

Slide 8

Slide 8 text

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 上のリソースを管理するということです

Slide 9

Slide 9 text

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) で自動で行う手法です

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

CNDT 2020 @makocchi #CNDT2020 #CNDT2020_A 16 GitOpsの仕組み Git のリポジトリの更新を検知する方法によって 2 通りの GitOps の手法が存在します つまり Push 型 1VMMܕ Webhook Polling いい感じに Deploy してくれるやつ このようにアプローチの仕方で分かれます

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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)

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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)

Slide 23

Slide 23 text

CNDT 2020 @makocchi #CNDT2020 #CNDT2020_A 23 結局 Push 型と 1VMM ܕどちらがいいの? どちらが良い、悪いというのは一概には言えない部分があります ご自身や所属チームが運用しやすいと思った方式で良いと思います 個人的にはよりセキュアに運用できる Pull 型をオススメします Pull 型のほうが オススメ

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

CNDT 2020 | @makocchi Why not find your favorite GitOps tools? #CNDT2020 #CNDT2020_A 26 それでは本日の主役の ツール達に登場してもらいましょう

Slide 27

Slide 27 text

CNDT 2020 @makocchi #CNDT2020 #CNDT2020_A 27

Slide 28

Slide 28 text

CNDT 2020 | @makocchi Why not find your favorite GitOps tools? #CNDT2020 #CNDT2020_A 28 まずは表面的な比較からいきましょう Google Trend / Github Status / Contributors / Foundation

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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時点

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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 するやつに上書きされる可能性あり)

Slide 34

Slide 34 text

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 \ [email protected]:${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)

Slide 35

Slide 35 text

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://[email protected]/makocchi-git/flux-get- started Revision of master to apply is 116fca5 Waiting for 116fca5 to be applied ... Done.

Slide 36

Slide 36 text

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 にできることはこれだけじゃない!

Slide 37

Slide 37 text

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(造語)

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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) 言い換えると、これだけのものがインストールされるということ

Slide 46

Slide 46 text

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/ ちょっと前までは ワシがロゴじゃったのよ・・

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

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時点

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

CNDT 2020 | @makocchi Why not find your favorite GitOps tools? #CNDT2020 #CNDT2020_A 54 GitOps Engine のお話

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

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 続けるわ

Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

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

Slide 60

Slide 60 text

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 だよね・・多分

Slide 61

Slide 61 text

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 などにも対応しています

Slide 62

Slide 62 text

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 対応もロードマップに無いので、予定は無さそうですね

Slide 63

Slide 63 text

CNDT 2020 @makocchi #CNDT2020 #CNDT2020_A インストール Multi Tenancy GUI ImageOps その他 (※) ChatOps૊ΈࠐΈ CI/CD ͢΂ͯΧόʔ ઈࢍ։ൃத 63 GitOps ツール比較 v2 〜 機能編〜 ※2020/09/01時点 GitOps Toolkit GitOps Toolkit は Flux の弱点を上手く克服してきていますね 今後に期待できそうです

Slide 64

Slide 64 text

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

Slide 65

Slide 65 text

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

Slide 66

Slide 66 text

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

Slide 67

Slide 67 text

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

Slide 68

Slide 68 text

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

Slide 69

Slide 69 text

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

Slide 70

Slide 70 text

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

Slide 71

Slide 71 text

CNDT 2020 | @makocchi Why not find your favorite GitOps tools? #CNDT2020 #CNDT2020_A 71 みなさんにお願い!! GitOps に興味が出てきた人は 是非試してみてください! セッションを見るだけで終わらせずに、 何らかのアクションをしてみましょう! 約束だぞ!  

Slide 72

Slide 72 text

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