SlideShare a Scribd company logo
1 of 32
Download to read offline
GitOps Toolkit による
Kubernetes マニフェスト CD
2020/10/28 Kubernetes Meetup Tokyo #35
薮内 秀仁 (Hidehito Yabuuchi), Preferred Networks, Inc.
自己紹介 - 薮内 秀仁 (Hidehito Yabuuchi)
2020/04 - 現在:Preferred Networks, Inc. (PFN)
社内向け計算機クラスタの開発・運用
● Kubernetes スケジューラの開発
● クラスタ管理用 Kubernetes
マニフェストの CI/CD
● etc.
2
自己紹介 - 薮内 秀仁 (Hidehito Yabuuchi)
2020/04 - 現在:Preferred Networks, Inc. (PFN)
社内向け計算機クラスタの開発・運用
● Kubernetes スケジューラの開発
● クラスタ管理用 Kubernetes
マニフェストの CI/CD
● etc.
3
詳しくは PFN 大村による
CNDT 2020 での発表
自己紹介 - 薮内 秀仁 (Hidehito Yabuuchi)
2020/04 - 現在:Preferred Networks, Inc. (PFN)
社内向け計算機クラスタの開発・運用
● Kubernetes スケジューラの開発
● クラスタ管理用 Kubernetes
マニフェストの CI/CD
● etc.
4
今回はこちらのお話
今回お話しする内容
● GitOps Toolkit の紹介
○ Git リポジトリ上の Kubernetes マニフェストを自動で適用
● PFN のクラスタ開発・運用チームにおける
Kubernetes マニフェスト CD の取り組み
○ CD ツールを補完し 正しいマニフェストが適用されるように
5
GitOps Toolkit
6
Kubernetes 向け CD ツール
● CD パイプライン構築系
○ Jenkins X
○ Spinnaker
● ワークフローエンジン系
○ Tekton
● GitOps 系
○ Argo CD
○ Flux v1
○ GitOps Toolkit (Flux v2)
7
GitOps とは
2017/08 Weaveworks が提唱
https://www.weave.works/blog/gitops-operations-by-pull-request
8
Person outline icon made by iconixar from www.flaticon.com
Git logo made by Jason Long
Robot icon made by Zlatko Najdenovski from www.flaticon.com
push
merge clone
apply
delete
Git リポジトリに Kubernetes
マニフェストを push すると…
GitOps ツールが
自動でクラスタに適用
GitOps とは
2017/08 Weaveworks が提唱
https://www.weave.works/blog/gitops-operations-by-pull-request
9
push
merge clone
apply
delete
Git リポジトリが
Source of Truth に
Person outline icon made by iconixar from www.flaticon.com
Git logo made by Jason Long
Robot icon made by Zlatko Najdenovski from www.flaticon.com
Flux v1
2017/08 v1.0 リリース
10
Person outline icon made by iconixar from www.flaticon.com
Git logo made by Jason Long
クラスタ
push
merge clone
apply
delete
Flux デーモン API サーバ
Git リポジトリを
ポーリング
● マニフェストを kubectl apply
● リポジトリから消えたリソースを
kubectl delete
Flux v1 - マニフェスト生成
Git リポジトリ内の .flux.yaml ファイルに書かれたコマンドで
生成したマニフェストを kubectl apply
例:
Clone したリポジトリで kustomize build を実行した
出力結果を kubectl apply
11
patchUpdated:
generators:
- command: kustomize build
...
クラスタ
apply
delete
Flux デーモン API サーバ
Flux v1 - コンテナイメージの自動更新
12
イメージタグの
更新を commit
Git logo made by Jason Long
Containers icon made by Freepik from www.flaticon.com
Pod テンプレートの
spec.containers[].image を
新しいタグに更新
新しいイメージの
タグを取得
コンテナイメージレジストリ
GitOps Toolkit (Flux v2)
● Flux v1 の後継として開発中
● 2020/10/01 v0.1 リリース
○ CRD の API version が v1beta1 に
○ Flux v1 はメンテナンスモードに
● Argo CD と Flux が協力して ひとつの GitOps ツールを
開発する計画もあったが 中止に
13
GitOps Toolkit = CRD / コントローラの集まり
14
https://toolkit.fluxcd.io より
GitOps Toolkit = CRD / コントローラの集まり
15
https://toolkit.fluxcd.io より
Source controller がリポジトリを clone し…
GitOps Toolkit = CRD / コントローラの集まり
16
Kustomize controller が
1. source controller からリポジトリを取得
2. kustomize build の出力を kubectl apply
https://toolkit.fluxcd.io より
Source Controller
17
https://toolkit.fluxcd.io/components/source/controller/ より
Source Controller
18
リポジトリの
URL, ref を指定
定期的に clone
.tar.gz に圧縮
HTTP GET
Kustomize
controller など
https://toolkit.fluxcd.io/components/source/controller/ より
Kustomize Controller
19
https://toolkit.fluxcd.io/components/kustomize/controller/ より
Kustomize Controller
20
リポジトリを取得
kustomize build の
出力を kubectl apply
https://toolkit.fluxcd.io/components/kustomize/controller/ より
Kustomization CRD
21
apiVersion: kustomize.toolkit.fluxcd.io/v1beta1
kind: Kustomization
metadata: { … }
spec:
sourceRef:
kind: GitRepository
name: repo
path: ./my-app/overlays/prod
validation: server
prune: true
healthChecks:
- apiVersion: apps/v1
kind: Deployment
namespace: gotk-system
name: source-controller
interval: 1m0s
リポジトリの取得先
kustomize build するパス
apply の前に
kubectl apply --dry-run=server
リポジトリから消えたリソースを
kubectl delete
apply の成否を kstatus で 確認
kustomization.yaml がない場合は
対象ディレクトリ以下の YAML を読む kustomization.yaml を生成
(kustomize init --recursive --autodetect に相当)
Kustomization CRD
22
<spec.path>
├─ deployment.yaml
├─ namespace.yaml
└─ subdir
└─ service.yaml
apiVersion: …
kind: Kustomization
resources:
- deployment.yaml
- namespace.yaml
- subdir/service.yaml
生成
kustomization.yaml
通知
● GitRepository, Kustomization
などの更新を外部に通知
● Provider CRD で通知先を設定
○ Slack
○ GitHub のコミットステータス
○ etc.
● Alert CRD で何のイベントを
通知するか設定
23
Slack 通知の例
開発状況(2020/10/28 現在)
コンテナイメージの更新機能以外は Flux v1 と同じ機能を提供できている
(残り 10% は移行ガイド)
24
https://toolkit.fluxcd.io/roadmap/ より
コンテナイメージの更新機能は API デザインが完了
情報ソース
● 公式ドキュメント
○ https://toolkit.fluxcd.io
● GitHub
○ https://github.com/fluxcd/toolkit
● Weaveworks ブログ - flux カテゴリ
○ https://www.weave.works/blog/category/flux/
● CNCF Slack ワークスペース - #flux, #flux-dev チャンネル
○ cloud-native.slack.com
● Flux developer community メーリングリスト
○ https://lists.cncf.io/g/cncf-flux-dev
25
PFN のクラスタ開発・運用チームにおける
Kubernetes マニフェスト CD の取り組み
26
注意していただきたい点
● クラスタ開発・運用チーム での事例です
○ クラスタ自体に作用したり 権限に関するマニフェストも扱い、
アプリケーションのデプロイとは性質が異なるところもあります
● GitOps Toolkit の運用は始めて1ヶ月足らずです
○ 今後 運用方法が変わる可能性もあります
27
運用中の CD ツール
● 一部のクラスタでは GitOps Toolkit を運用中
○ とくに問題なく動いている
● その他のクラスタでは Flux v1 を運用中
○ 今後 GitOps Toolkit に移行予定
28
マニフェスト生成
Kustomize controller の kustomize build 機能は使わず
Git リポジトリ上に生成結果がおかれた状態 にしている
なぜ? ➔ 生成結果のマニフェストを確認したい
● クラスタ自体や権限に関する 影響の大きいマニフェストも扱う
● 間違ったマニフェストの apply や 意図しない delete の被害が大きい
とはいえ人手で生成したくはない ➔ CI で生成
29
CI でのマニフェスト生成
30
Person outline icon made by iconixar from www.flaticon.com
Robot icon made by Zlatko Najdenovski from www.flaticon.com
PR generated ブランチを clone
- deployment.yaml
- kustomization.yaml
- namespace.yaml
CI
● kustomize build などで生成し
結果を generated ブランチに push
● master との差異を PR にコメント
- generated.yaml
マニフェストのバリデーション
形式が間違っているマニフェストの検知
● GitOps Toolkit を使っているクラスタでは:
○ Kustomization CR のオプションで
apply --dry-run=server が失敗したら apply しないよう設定
● Flux を使っているクラスタでは:
○ CI 上で kubeval を使いスキーマに適合するかチェック
31
まとめ
● GitOps Toolkit の紹介
○ Git リポジトリ上の Kubernetes マニフェストを自動で適用
○ CRD / コントローラの集まり
● PFN のクラスタ開発・運用チームにおける
Kubernetes マニフェスト CD の取り組み
○ CD ツールを補完し 正しいマニフェストが適用されるように
○ Git リポジトリ上 (CI) でマニフェスト生成を済ませる
○ Kustomize controller や kubeval によるバリデーション
32
✔
✔

More Related Content

What's hot

Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)NTT DATA Technology & Innovation
 
Harbor RegistryのReplication機能
Harbor RegistryのReplication機能Harbor RegistryのReplication機能
Harbor RegistryのReplication機能Masanori Nara
 
Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説貴仁 大和屋
 
Fargate起動歴1日の男が語る運用の勘どころ
Fargate起動歴1日の男が語る運用の勘どころFargate起動歴1日の男が語る運用の勘どころ
Fargate起動歴1日の男が語る運用の勘どころYuto Komai
 
Kubernetes雑にまとめてみた 2020年8月版
Kubernetes雑にまとめてみた 2020年8月版Kubernetes雑にまとめてみた 2020年8月版
Kubernetes雑にまとめてみた 2020年8月版VirtualTech Japan Inc.
 
Istioサービスメッシュ入門
Istioサービスメッシュ入門Istioサービスメッシュ入門
Istioサービスメッシュ入門Yoichi Kawasaki
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Kohei Tokunaga
 
Kubernetes 基盤における非機能試験の deepdive(Kubernetes Novice Tokyo #17 発表資料)
Kubernetes 基盤における非機能試験の deepdive(Kubernetes Novice Tokyo #17 発表資料)Kubernetes 基盤における非機能試験の deepdive(Kubernetes Novice Tokyo #17 発表資料)
Kubernetes 基盤における非機能試験の deepdive(Kubernetes Novice Tokyo #17 発表資料)NTT DATA Technology & Innovation
 
Rootlessコンテナ
RootlessコンテナRootlessコンテナ
RootlessコンテナAkihiro Suda
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Etsuji Nakai
 
インフラCICDの勘所
インフラCICDの勘所インフラCICDの勘所
インフラCICDの勘所Toru Makabe
 
root権限無しでKubernetesを動かす
root権限無しでKubernetesを動かす root権限無しでKubernetesを動かす
root権限無しでKubernetesを動かす Akihiro Suda
 
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~Daisuke Morishita
 
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)Yoshiro Tokumasu
 
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動するStargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動するKohei Tokunaga
 
containerdの概要と最近の機能
containerdの概要と最近の機能containerdの概要と最近の機能
containerdの概要と最近の機能Kohei Tokunaga
 
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話JustSystems Corporation
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル貴志 上坂
 
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCマイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCdisc99_
 
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #1320210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13Amazon Web Services Japan
 

What's hot (20)

Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
 
Harbor RegistryのReplication機能
Harbor RegistryのReplication機能Harbor RegistryのReplication機能
Harbor RegistryのReplication機能
 
Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説
 
Fargate起動歴1日の男が語る運用の勘どころ
Fargate起動歴1日の男が語る運用の勘どころFargate起動歴1日の男が語る運用の勘どころ
Fargate起動歴1日の男が語る運用の勘どころ
 
Kubernetes雑にまとめてみた 2020年8月版
Kubernetes雑にまとめてみた 2020年8月版Kubernetes雑にまとめてみた 2020年8月版
Kubernetes雑にまとめてみた 2020年8月版
 
Istioサービスメッシュ入門
Istioサービスメッシュ入門Istioサービスメッシュ入門
Istioサービスメッシュ入門
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
Kubernetes 基盤における非機能試験の deepdive(Kubernetes Novice Tokyo #17 発表資料)
Kubernetes 基盤における非機能試験の deepdive(Kubernetes Novice Tokyo #17 発表資料)Kubernetes 基盤における非機能試験の deepdive(Kubernetes Novice Tokyo #17 発表資料)
Kubernetes 基盤における非機能試験の deepdive(Kubernetes Novice Tokyo #17 発表資料)
 
Rootlessコンテナ
RootlessコンテナRootlessコンテナ
Rootlessコンテナ
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
 
インフラCICDの勘所
インフラCICDの勘所インフラCICDの勘所
インフラCICDの勘所
 
root権限無しでKubernetesを動かす
root権限無しでKubernetesを動かす root権限無しでKubernetesを動かす
root権限無しでKubernetesを動かす
 
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
 
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
 
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動するStargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
 
containerdの概要と最近の機能
containerdの概要と最近の機能containerdの概要と最近の機能
containerdの概要と最近の機能
 
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル
 
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCマイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPC
 
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #1320210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
 

Similar to Kubernetes Meetup Tokyo #35_GitOps Toolkit による Kubernetes マニフェスト CD

BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能Kohei Tokunaga
 
Kubernetes1.9でWindowsコンテナーをクラスタ化
Kubernetes1.9でWindowsコンテナーをクラスタ化Kubernetes1.9でWindowsコンテナーをクラスタ化
Kubernetes1.9でWindowsコンテナーをクラスタ化Takashi Kanai
 
KueCon 2020 NA Recap - Building a Global Supercomputer with Virtual Kubelet /...
KueCon 2020 NA Recap - Building a Global Supercomputer with Virtual Kubelet /...KueCon 2020 NA Recap - Building a Global Supercomputer with Virtual Kubelet /...
KueCon 2020 NA Recap - Building a Global Supercomputer with Virtual Kubelet /...Preferred Networks
 
Kubernetes Operator for vSphere VM
Kubernetes Operator for vSphere VMKubernetes Operator for vSphere VM
Kubernetes Operator for vSphere VMMasanori Nara
 
Kubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみた
Kubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみたKubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみた
Kubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみたAkihito Inoh
 
Kubernetes Meetup Tokyo #23 kubebuilder-v2
Kubernetes Meetup Tokyo #23 kubebuilder-v2Kubernetes Meetup Tokyo #23 kubebuilder-v2
Kubernetes Meetup Tokyo #23 kubebuilder-v2Kazuhito Matsuda
 
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜Masaya Aoyama
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Masahito Zembutsu
 
VirtualBox と Rocky Linux 8 で始める Pacemaker ~ VirtualBox でも STONITH 機能が試せる! Vi...
VirtualBox と Rocky Linux 8 で始める Pacemaker  ~ VirtualBox でも STONITH 機能が試せる! Vi...VirtualBox と Rocky Linux 8 で始める Pacemaker  ~ VirtualBox でも STONITH 機能が試せる! Vi...
VirtualBox と Rocky Linux 8 で始める Pacemaker ~ VirtualBox でも STONITH 機能が試せる! Vi...ksk_ha
 
BuildKitによる高速でセキュアなイメージビルド (LT)
BuildKitによる高速でセキュアなイメージビルド (LT)BuildKitによる高速でセキュアなイメージビルド (LT)
BuildKitによる高速でセキュアなイメージビルド (LT)Akihiro Suda
 
Rtコンポーネント作成入門
Rtコンポーネント作成入門Rtコンポーネント作成入門
Rtコンポーネント作成入門openrtm
 
3.RTCプログラミング演習
3.RTCプログラミング演習3.RTCプログラミング演習
3.RTCプログラミング演習openrtm
 
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門Preferred Networks
 
Kube con + cloudnativecon 2017 社内報告会(外部公開用)
Kube con + cloudnativecon 2017 社内報告会(外部公開用)Kube con + cloudnativecon 2017 社内報告会(外部公開用)
Kube con + cloudnativecon 2017 社内報告会(外部公開用)Masaya Aoyama
 
201110 03
201110 03201110 03
201110 03openrtm
 
もっとも簡単なKubernetes構築 on Raspberry pi (July tech festa winter 2021)
もっとも簡単なKubernetes構築 on Raspberry pi  (July tech festa winter 2021)もっとも簡単なKubernetes構築 on Raspberry pi  (July tech festa winter 2021)
もっとも簡単なKubernetes構築 on Raspberry pi (July tech festa winter 2021)Kamon Nobuchika
 
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50Preferred Networks
 

Similar to Kubernetes Meetup Tokyo #35_GitOps Toolkit による Kubernetes マニフェスト CD (20)

BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
 
Kubernetes1.9でWindowsコンテナーをクラスタ化
Kubernetes1.9でWindowsコンテナーをクラスタ化Kubernetes1.9でWindowsコンテナーをクラスタ化
Kubernetes1.9でWindowsコンテナーをクラスタ化
 
KueCon 2020 NA Recap - Building a Global Supercomputer with Virtual Kubelet /...
KueCon 2020 NA Recap - Building a Global Supercomputer with Virtual Kubelet /...KueCon 2020 NA Recap - Building a Global Supercomputer with Virtual Kubelet /...
KueCon 2020 NA Recap - Building a Global Supercomputer with Virtual Kubelet /...
 
Tekton 入門
Tekton 入門Tekton 入門
Tekton 入門
 
Kubernetes Operator for vSphere VM
Kubernetes Operator for vSphere VMKubernetes Operator for vSphere VM
Kubernetes Operator for vSphere VM
 
Kubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみた
Kubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみたKubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみた
Kubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみた
 
Kubernetes Meetup Tokyo #23 kubebuilder-v2
Kubernetes Meetup Tokyo #23 kubebuilder-v2Kubernetes Meetup Tokyo #23 kubebuilder-v2
Kubernetes Meetup Tokyo #23 kubebuilder-v2
 
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
 
VirtualBox と Rocky Linux 8 で始める Pacemaker ~ VirtualBox でも STONITH 機能が試せる! Vi...
VirtualBox と Rocky Linux 8 で始める Pacemaker  ~ VirtualBox でも STONITH 機能が試せる! Vi...VirtualBox と Rocky Linux 8 で始める Pacemaker  ~ VirtualBox でも STONITH 機能が試せる! Vi...
VirtualBox と Rocky Linux 8 で始める Pacemaker ~ VirtualBox でも STONITH 機能が試せる! Vi...
 
BuildKitによる高速でセキュアなイメージビルド (LT)
BuildKitによる高速でセキュアなイメージビルド (LT)BuildKitによる高速でセキュアなイメージビルド (LT)
BuildKitによる高速でセキュアなイメージビルド (LT)
 
Mercurial入門
Mercurial入門Mercurial入門
Mercurial入門
 
Rtコンポーネント作成入門
Rtコンポーネント作成入門Rtコンポーネント作成入門
Rtコンポーネント作成入門
 
GTC Japan 2017
GTC Japan 2017GTC Japan 2017
GTC Japan 2017
 
3.RTCプログラミング演習
3.RTCプログラミング演習3.RTCプログラミング演習
3.RTCプログラミング演習
 
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
 
Kube con + cloudnativecon 2017 社内報告会(外部公開用)
Kube con + cloudnativecon 2017 社内報告会(外部公開用)Kube con + cloudnativecon 2017 社内報告会(外部公開用)
Kube con + cloudnativecon 2017 社内報告会(外部公開用)
 
201110 03
201110 03201110 03
201110 03
 
もっとも簡単なKubernetes構築 on Raspberry pi (July tech festa winter 2021)
もっとも簡単なKubernetes構築 on Raspberry pi  (July tech festa winter 2021)もっとも簡単なKubernetes構築 on Raspberry pi  (July tech festa winter 2021)
もっとも簡単なKubernetes構築 on Raspberry pi (July tech festa winter 2021)
 
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50
 

More from Preferred Networks

PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57
PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57
PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57Preferred Networks
 
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3Preferred Networks
 
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...Preferred Networks
 
深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...
深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...
深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...Preferred Networks
 
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55Preferred Networks
 
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2Preferred Networks
 
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2Preferred Networks
 
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2Preferred Networks
 
スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演
スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演
スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演Preferred Networks
 
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)Preferred Networks
 
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)Preferred Networks
 
自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)
自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)
自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)Preferred Networks
 
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語る
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語るKubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語る
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語るPreferred Networks
 
Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張
Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張
Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張Preferred Networks
 
PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会
PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会
PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会Preferred Networks
 
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...Preferred Networks
 
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...Preferred Networks
 
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...Preferred Networks
 
Topology Managerについて / Kubernetes Meetup Tokyo 50
Topology Managerについて / Kubernetes Meetup Tokyo 50Topology Managerについて / Kubernetes Meetup Tokyo 50
Topology Managerについて / Kubernetes Meetup Tokyo 50Preferred Networks
 
PFN Summer Internship 2021 / Kohei Shinohara: Charge Transfer Modeling in Neu...
PFN Summer Internship 2021 / Kohei Shinohara: Charge Transfer Modeling in Neu...PFN Summer Internship 2021 / Kohei Shinohara: Charge Transfer Modeling in Neu...
PFN Summer Internship 2021 / Kohei Shinohara: Charge Transfer Modeling in Neu...Preferred Networks
 

More from Preferred Networks (20)

PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57
PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57
PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57
 
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
 
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
 
深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...
深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...
深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...
 
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
 
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
 
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
 
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
 
スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演
スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演
スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演
 
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
 
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
 
自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)
自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)
自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)
 
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語る
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語るKubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語る
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語る
 
Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張
Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張
Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張
 
PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会
PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会
PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会
 
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
 
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
 
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
 
Topology Managerについて / Kubernetes Meetup Tokyo 50
Topology Managerについて / Kubernetes Meetup Tokyo 50Topology Managerについて / Kubernetes Meetup Tokyo 50
Topology Managerについて / Kubernetes Meetup Tokyo 50
 
PFN Summer Internship 2021 / Kohei Shinohara: Charge Transfer Modeling in Neu...
PFN Summer Internship 2021 / Kohei Shinohara: Charge Transfer Modeling in Neu...PFN Summer Internship 2021 / Kohei Shinohara: Charge Transfer Modeling in Neu...
PFN Summer Internship 2021 / Kohei Shinohara: Charge Transfer Modeling in Neu...
 

Kubernetes Meetup Tokyo #35_GitOps Toolkit による Kubernetes マニフェスト CD

  • 1. GitOps Toolkit による Kubernetes マニフェスト CD 2020/10/28 Kubernetes Meetup Tokyo #35 薮内 秀仁 (Hidehito Yabuuchi), Preferred Networks, Inc.
  • 2. 自己紹介 - 薮内 秀仁 (Hidehito Yabuuchi) 2020/04 - 現在:Preferred Networks, Inc. (PFN) 社内向け計算機クラスタの開発・運用 ● Kubernetes スケジューラの開発 ● クラスタ管理用 Kubernetes マニフェストの CI/CD ● etc. 2
  • 3. 自己紹介 - 薮内 秀仁 (Hidehito Yabuuchi) 2020/04 - 現在:Preferred Networks, Inc. (PFN) 社内向け計算機クラスタの開発・運用 ● Kubernetes スケジューラの開発 ● クラスタ管理用 Kubernetes マニフェストの CI/CD ● etc. 3 詳しくは PFN 大村による CNDT 2020 での発表
  • 4. 自己紹介 - 薮内 秀仁 (Hidehito Yabuuchi) 2020/04 - 現在:Preferred Networks, Inc. (PFN) 社内向け計算機クラスタの開発・運用 ● Kubernetes スケジューラの開発 ● クラスタ管理用 Kubernetes マニフェストの CI/CD ● etc. 4 今回はこちらのお話
  • 5. 今回お話しする内容 ● GitOps Toolkit の紹介 ○ Git リポジトリ上の Kubernetes マニフェストを自動で適用 ● PFN のクラスタ開発・運用チームにおける Kubernetes マニフェスト CD の取り組み ○ CD ツールを補完し 正しいマニフェストが適用されるように 5
  • 7. Kubernetes 向け CD ツール ● CD パイプライン構築系 ○ Jenkins X ○ Spinnaker ● ワークフローエンジン系 ○ Tekton ● GitOps 系 ○ Argo CD ○ Flux v1 ○ GitOps Toolkit (Flux v2) 7
  • 8. GitOps とは 2017/08 Weaveworks が提唱 https://www.weave.works/blog/gitops-operations-by-pull-request 8 Person outline icon made by iconixar from www.flaticon.com Git logo made by Jason Long Robot icon made by Zlatko Najdenovski from www.flaticon.com push merge clone apply delete Git リポジトリに Kubernetes マニフェストを push すると… GitOps ツールが 自動でクラスタに適用
  • 9. GitOps とは 2017/08 Weaveworks が提唱 https://www.weave.works/blog/gitops-operations-by-pull-request 9 push merge clone apply delete Git リポジトリが Source of Truth に Person outline icon made by iconixar from www.flaticon.com Git logo made by Jason Long Robot icon made by Zlatko Najdenovski from www.flaticon.com
  • 10. Flux v1 2017/08 v1.0 リリース 10 Person outline icon made by iconixar from www.flaticon.com Git logo made by Jason Long クラスタ push merge clone apply delete Flux デーモン API サーバ Git リポジトリを ポーリング ● マニフェストを kubectl apply ● リポジトリから消えたリソースを kubectl delete
  • 11. Flux v1 - マニフェスト生成 Git リポジトリ内の .flux.yaml ファイルに書かれたコマンドで 生成したマニフェストを kubectl apply 例: Clone したリポジトリで kustomize build を実行した 出力結果を kubectl apply 11 patchUpdated: generators: - command: kustomize build ...
  • 12. クラスタ apply delete Flux デーモン API サーバ Flux v1 - コンテナイメージの自動更新 12 イメージタグの 更新を commit Git logo made by Jason Long Containers icon made by Freepik from www.flaticon.com Pod テンプレートの spec.containers[].image を 新しいタグに更新 新しいイメージの タグを取得 コンテナイメージレジストリ
  • 13. GitOps Toolkit (Flux v2) ● Flux v1 の後継として開発中 ● 2020/10/01 v0.1 リリース ○ CRD の API version が v1beta1 に ○ Flux v1 はメンテナンスモードに ● Argo CD と Flux が協力して ひとつの GitOps ツールを 開発する計画もあったが 中止に 13
  • 14. GitOps Toolkit = CRD / コントローラの集まり 14 https://toolkit.fluxcd.io より
  • 15. GitOps Toolkit = CRD / コントローラの集まり 15 https://toolkit.fluxcd.io より Source controller がリポジトリを clone し…
  • 16. GitOps Toolkit = CRD / コントローラの集まり 16 Kustomize controller が 1. source controller からリポジトリを取得 2. kustomize build の出力を kubectl apply https://toolkit.fluxcd.io より
  • 18. Source Controller 18 リポジトリの URL, ref を指定 定期的に clone .tar.gz に圧縮 HTTP GET Kustomize controller など https://toolkit.fluxcd.io/components/source/controller/ より
  • 20. Kustomize Controller 20 リポジトリを取得 kustomize build の 出力を kubectl apply https://toolkit.fluxcd.io/components/kustomize/controller/ より
  • 21. Kustomization CRD 21 apiVersion: kustomize.toolkit.fluxcd.io/v1beta1 kind: Kustomization metadata: { … } spec: sourceRef: kind: GitRepository name: repo path: ./my-app/overlays/prod validation: server prune: true healthChecks: - apiVersion: apps/v1 kind: Deployment namespace: gotk-system name: source-controller interval: 1m0s リポジトリの取得先 kustomize build するパス apply の前に kubectl apply --dry-run=server リポジトリから消えたリソースを kubectl delete apply の成否を kstatus で 確認
  • 22. kustomization.yaml がない場合は 対象ディレクトリ以下の YAML を読む kustomization.yaml を生成 (kustomize init --recursive --autodetect に相当) Kustomization CRD 22 <spec.path> ├─ deployment.yaml ├─ namespace.yaml └─ subdir └─ service.yaml apiVersion: … kind: Kustomization resources: - deployment.yaml - namespace.yaml - subdir/service.yaml 生成 kustomization.yaml
  • 23. 通知 ● GitRepository, Kustomization などの更新を外部に通知 ● Provider CRD で通知先を設定 ○ Slack ○ GitHub のコミットステータス ○ etc. ● Alert CRD で何のイベントを 通知するか設定 23 Slack 通知の例
  • 24. 開発状況(2020/10/28 現在) コンテナイメージの更新機能以外は Flux v1 と同じ機能を提供できている (残り 10% は移行ガイド) 24 https://toolkit.fluxcd.io/roadmap/ より コンテナイメージの更新機能は API デザインが完了
  • 25. 情報ソース ● 公式ドキュメント ○ https://toolkit.fluxcd.io ● GitHub ○ https://github.com/fluxcd/toolkit ● Weaveworks ブログ - flux カテゴリ ○ https://www.weave.works/blog/category/flux/ ● CNCF Slack ワークスペース - #flux, #flux-dev チャンネル ○ cloud-native.slack.com ● Flux developer community メーリングリスト ○ https://lists.cncf.io/g/cncf-flux-dev 25
  • 27. 注意していただきたい点 ● クラスタ開発・運用チーム での事例です ○ クラスタ自体に作用したり 権限に関するマニフェストも扱い、 アプリケーションのデプロイとは性質が異なるところもあります ● GitOps Toolkit の運用は始めて1ヶ月足らずです ○ 今後 運用方法が変わる可能性もあります 27
  • 28. 運用中の CD ツール ● 一部のクラスタでは GitOps Toolkit を運用中 ○ とくに問題なく動いている ● その他のクラスタでは Flux v1 を運用中 ○ 今後 GitOps Toolkit に移行予定 28
  • 29. マニフェスト生成 Kustomize controller の kustomize build 機能は使わず Git リポジトリ上に生成結果がおかれた状態 にしている なぜ? ➔ 生成結果のマニフェストを確認したい ● クラスタ自体や権限に関する 影響の大きいマニフェストも扱う ● 間違ったマニフェストの apply や 意図しない delete の被害が大きい とはいえ人手で生成したくはない ➔ CI で生成 29
  • 30. CI でのマニフェスト生成 30 Person outline icon made by iconixar from www.flaticon.com Robot icon made by Zlatko Najdenovski from www.flaticon.com PR generated ブランチを clone - deployment.yaml - kustomization.yaml - namespace.yaml CI ● kustomize build などで生成し 結果を generated ブランチに push ● master との差異を PR にコメント - generated.yaml
  • 31. マニフェストのバリデーション 形式が間違っているマニフェストの検知 ● GitOps Toolkit を使っているクラスタでは: ○ Kustomization CR のオプションで apply --dry-run=server が失敗したら apply しないよう設定 ● Flux を使っているクラスタでは: ○ CI 上で kubeval を使いスキーマに適合するかチェック 31
  • 32. まとめ ● GitOps Toolkit の紹介 ○ Git リポジトリ上の Kubernetes マニフェストを自動で適用 ○ CRD / コントローラの集まり ● PFN のクラスタ開発・運用チームにおける Kubernetes マニフェスト CD の取り組み ○ CD ツールを補完し 正しいマニフェストが適用されるように ○ Git リポジトリ上 (CI) でマニフェスト生成を済ませる ○ Kustomize controller や kubeval によるバリデーション 32 ✔ ✔