Slide 1

Slide 1 text

5分でキメる “Kubernetes Operator 完全に理解した” Kazufumi Saito @capsmalt 1

Slide 2

Slide 2 text

2 本⽇のミッション 「得体のしれない何か」 だと思っているヒトへお伝えしたい。 結局 Kubernetes Operator ってなんやねん︖ @capsmalt 🤔

Slide 3

Slide 3 text

@capsmalt 3 本⽇のミッション 「得体のしれない何か」 だと思っているヒトへお伝えしたい。真実を。 結局 Kubernetes Operator ってなんやねん︖ 🤔 “Operator 完全に理解した” https://twitter.com/ito_yusaku/statu s/1042604780718157824?s=20

Slide 4

Slide 4 text

4 想定視聴者 (ALL)Kubernetes やったことある が, “Operator” って聞くと「︖︖︖」なヒト § イメージビルドして,コンテナ使ってる § Deployment, Service, ConfigMap, etc. 使ってK8s上でコンテナ使ってる § Prometheus でモニタリングとかしてる § CI とか CD も意識してる § Helm でパッケージ化してデプロイとかしてる § 何らかのサービスを本番提供してる § etc. (⾮エンジニア) Operator を ふわっとでも良いから知っておくべき ヒト § K8sもよく分かってないのに「時代はOperatorだろ︖」と⾔われて疲弊してる § 銀の弾丸 of 銀の弾丸だと思っている § ちゃんと理解したいんだけど,⼿を動かす機会も無いしよくわからん § ⾃社ソフトウェアを Operator 化するマーケ施策が絶賛⾛ってるがマーケなので分からん § etc. @capsmalt

Slide 5

Slide 5 text

5 話さないコト § Operator の歴史 (CoreOSが頑張っていました。ググってみてください) § Operator 実装の詳細 § 特定 Operator の挙動 § Operator Maturity Model (Operator Capability Level ) § Operator Framework の詳細 § Operator 開発の詳細 § Operator 運⽤の詳細 § ... ↑ 今⽇は,詳細系の話はしません。 @capsmalt

Slide 6

Slide 6 text

Kazufumi Saito (斎藤 和史) Who am I Specialist Solution Architect for Kubernetes / OpenShift Role: - Red Hat K.K. ⽣息地︓ クラウドネイティブ界隈 成⻑促進剤︓ IPA🍺 /ラーメン🍜/ラムチョップ🥩 オススメ2選︓ モニター/ダメ着 EV3895 ダメ着ヒーター付 6 @capsmalt

Slide 7

Slide 7 text

テックコミュニティ活動 - CloudNative 関係 国内最⼤のコンテナ/K8sを主軸とした クラウドネイティブテックカンファレンス (CloudNative Days) Cloud Native Meetup Tokyo Cloud Native Developer JP Japan Rook OpenShift Meetup 各種テックコミュニティ 7 @capsmalt

Slide 8

Slide 8 text

8 Control Loop (Reconciliation Loop) Contoller が Resource(宣⾔的記述)のDesired State を維持するように Reconcile ロジックをループし続ける Observe Analyze (diff) Act 現在の状態 を観測 現在の状態と あるべき状態を⽐較 あるべき状態になるように処理 Desired State Kubernetes Core Concept ※ご注意︓敢えて極端に簡略化した説明をしています @capsmalt

Slide 9

Slide 9 text

9 復習)Pod が作成されるまで (例: ReplicaSet) ctl Desired State ※ご注意︓敢えて極端に簡略化した説明をしています リソースを記述したマニフェストをK8sに登録すると,Pod がK8s上に作成される api-server: リソース(Podなど)に対するCRUD scheduler: リソースの配置 kubelet: リソースの起動 ctl controller: リソースの調整(Reconcileロジックの実⾏) 参考) @capsmalt $ kubectl apply

Slide 10

Slide 10 text

10 Control Loop (Reconciliation Loop) ctl diff Desired State Contoller が Resource(宣⾔的記述)のDesired State を維持するように Reconcile ロジックをループし続ける Observe Analyze (diff) Act コントローラーは,現在の状態と, あるべき状態を⽐較(diff)し続ける 差分があったら,あるべき状態になる ように制御させるループを回し続ける ※ご注意︓敢えて極端に簡略化した説明をしています Desired State replicas: 3 watch $ kubectl apply @capsmalt

Slide 11

Slide 11 text

11 Control Loop (Reconciliation Loop) Desired State act Contoller が Resource(宣⾔的記述)のDesired State を維持するように Reconcile ロジックをループし続ける ※ご注意︓敢えて極端に簡略化した説明をしています ctl diff Desired State replicas: 3 watch $ kubectl apply @capsmalt

Slide 12

Slide 12 text

12 Control Loop (Reconciliation Loop) Desired State act Contoller が Resource(宣⾔的記述)のDesired State を維持するように Reconcile ロジックをループし続ける ※ご注意︓敢えて極端に簡略化した説明をしています ctl diff Desired State replicas: 3 watch $ kubectl apply @capsmalt ✗

Slide 13

Slide 13 text

13 Kubernetes Operator 運⽤知⾒をコード化(ソフトウェア化)し,アプリやクラスター運⽤を K8s API を拡張することで実現する ※ご注意︓敢えて極端に簡略化した説明をしています Kubernetes Applications アプリ運⽤における運⽤の知⾒をコード化し, パッケージ化したもの。 アプリケーション運⽤に必要な以下のような 作業を⾃動的に⾏う。 ・インストール ・リソーススケーリング ・バックアップ ・アップデート Operator - Installation - Backup - Monitoring @capsmalt

Slide 14

Slide 14 text

14 Kubernetes Operator 運⽤知⾒をコード化(ソフトウェア化)し,アプリやクラスター運⽤を K8s API を拡張することで実現する ※ご注意︓敢えて極端に簡略化した説明をしています Custom Controller Custom Resource Definition Operator = + Custom Resource Definition (CRD) Custom Controller Kubernetes API を拡張する定義 CRD を K8s に適⽤することで,独⾃リソース(Custom Resource)をK8sで扱える Custom Resource の変更に対して,Reconcile ロジックを実⾏する独⾃コントローラー ロジックを実⾏するコンテナアプリケーション(Pod) @capsmalt

Slide 15

Slide 15 text

15 Kubernetes Operator 運⽤知⾒をコード化(ソフトウェア化)し,アプリやクラスター運⽤を K8s API を拡張することで実現する ※ご注意︓敢えて極端に簡略化した説明をしています Custom Controller Custom Resource Definition Operator = + Custom Resource Definition (CRD) Custom Controller Kubernetes API を拡張する定義 CRD を K8s に適⽤することで,独⾃リソース(Custom Resource)をK8sで扱える Custom Resource の変更に対して,Reconcile ロジックを実⾏する独⾃コントローラー ロジックを実⾏するコンテナアプリケーション(Pod) e.g.) Postgres Operator ctl Postgres Operator (Custom Controller) pgclusters.crunchydata.com pgreplicas.crunchydata.com pgtasks.crunchydata.com pgpolicies.crunchydata.com CRD @capsmalt

Slide 16

Slide 16 text

16 Kubernetes Operator 運⽤知⾒をコード化(ソフトウェア化)し,アプリやクラスター運⽤を K8s API を拡張することで実現する ※ご注意︓敢えて極端に簡略化した説明をしています Custom Controller Custom Resource Definition Operator = + Custom Resource Definition (CRD) Custom Controller Kubernetes API を拡張する定義 CRD を K8s に適⽤することで,独⾃リソース(Custom Resource)をK8sで扱える Custom Resource の変更に対して,Reconcile ロジックを実⾏する独⾃コントローラー ロジックを実⾏するコンテナアプリケーション(Pod) e.g.) Postgres Operator ctl $ kubectl apply -f postgres_cr.yaml Postgres Operator (Custom Controller) pgclusters.crunchydata.com pgreplicas.crunchydata.com pgtasks.crunchydata.com pgpolicies.crunchydata.com CRD @capsmalt Pgcluster Pgreplica Pgtask Pgpolicy Custom Resource

Slide 17

Slide 17 text

17 Kubernetes Operator 運⽤知⾒をコード化(ソフトウェア化)し,アプリやクラスター運⽤を K8s API を拡張することで実現する ※ご注意︓敢えて極端に簡略化した説明をしています Custom Controller Custom Resource Definition Operator = + Custom Resource Definition (CRD) Custom Controller Kubernetes API を拡張する定義 CRD を K8s に適⽤することで,独⾃リソース(Custom Resource)をK8sで扱える Custom Resource の変更に対して,Reconcile ロジックを実⾏する独⾃コントローラー ロジックを実⾏するコンテナアプリケーション(Pod) e.g.) Postgres Operator ctl $ kubectl apply -f postgres_cr.yaml Postgres Operator (Custom Controller) Pgcluster Pgreplica Pgtask Pgpolicy クラスター構成 の運⽤ バックアップ ・リストア pgclusters.crunchydata.com pgreplicas.crunchydata.com pgtasks.crunchydata.com pgpolicies.crunchydata.com CRD Custom Resource SQLポリシー強制 Postgre Operatorの管理 対象 @capsmalt

Slide 18

Slide 18 text

18 How to use~ https://operatorhub.io/ @capsmalt

Slide 19

Slide 19 text

出典: Crunchy Data Solutions, Inc. https://www.crunchydata.com/. ※商標はCrunchy Data Solutions, Incに基づきます。 Postgres Operator (Crunchy Data) postgres-operator ・レプリケーションクラスタのPostgreSQLコンテナの配備 ・レプリカ設定のPostgreSQLクラスタをスケールアップ ・pgpoolとmetricsサイドカーをPostgreSQLクラスタに追加 ・PostgreSQLクラスタにSQLポリシーを適⽤ ・PostgreSQLクラスタにメタデータタグの割り当て ・PostgreSQLのユーザとパスワードを維持 ・PostgreSQLクラスタの マイナー/メジャーアップグレードの実施 ・CSVやJSONファイルをPostgreSQLにロード ・データベースのバックアップの実⾏ Manual Operation(pgo) Auto Operation 必須コンポーネント Operatorが状態に応じて 展開するコンポーネント Crunchy Data is the Trusted Open Source Enterprise PostgreSQL 19

Slide 20

Slide 20 text

20 How to develop~ CRD / Custom Controller を開発 コンテナイメージ化(ビルド) Deployment を作成 (deploy_operatorpod.yaml) $ kubectl apply -f deploy_operatorpod.yaml Custom Resource を作成 (cr.yaml) $ kubectl apply -f cr.yaml Step1) 開発 Step2) 使う 素で開発するのもありだが, オススメは「Operator SDK」 を使うこと 雛形⽣成,デフォでPrometheusメトリクス出⼒,e2eテストなどが可能 https://sdk.operatorframework.io/ @capsmalt

Slide 21

Slide 21 text

21 CNDO2021 - Operator SDK 関連セッション https://event.cloudnativedays.jp/cndo2021/talks/181 https://event.cloudnativedays.jp/cndo2021/talks/971 CNDO2021 Day2 トラックD, 15:05〜15:45 (3/12) CNDO2021 Day2 トラックD, 15:45〜15:15 (3/12) @capsmalt

Slide 22

Slide 22 text

@capsmalt 22 本⽇のミッション 「得体のしれない何か」 だと思っているヒトへお伝えしたい。真実を。 結局 Kubernetes Operator ってなんやねん︖ 🤔 “Operator 完全に理解した” https://twitter.com/ito_yusaku/statu s/1042604780718157824?s=20

Slide 23

Slide 23 text

Happy Kubernetes Life ^ Please Follow me :) 23 @capsmalt

Slide 24

Slide 24 text

Happy Kubernetes Life ^ Please Follow me :) 24 @capsmalt ※わたしが5分でキメられませんでした....🙏