Upgrade to Pro — share decks privately, control downloads, hide ads and more …

5min_operator101

capsmalt
March 12, 2021

 5min_operator101

Title: 5分でキメる "Kubernetes Operator 完全に理解した"
Speaker: Kazufumi Saito (Red Hat)
Twitter: @capsmalt
Event: CloudNative Days 2021 Spring ONLINE (CNDO2021)
Hashtag: #CNDO2021
---
Contents overview: Operator 101 for K8s engineer (beginner) / Non-engineer

capsmalt

March 12, 2021
Tweet

More Decks by capsmalt

Other Decks in Technology

Transcript

  1. 4 想定視聴者 (ALL)Kubernetes やったことある が, “Operator” って聞くと「︖︖︖」なヒト § イメージビルドして,コンテナ使ってる §

    Deployment, Service, ConfigMap, etc. 使ってK8s上でコンテナ使ってる § Prometheus でモニタリングとかしてる § CI とか CD も意識してる § Helm でパッケージ化してデプロイとかしてる § 何らかのサービスを本番提供してる § etc. (⾮エンジニア) Operator を ふわっとでも良いから知っておくべき ヒト § K8sもよく分かってないのに「時代はOperatorだろ︖」と⾔われて疲弊してる § 銀の弾丸 of 銀の弾丸だと思っている § ちゃんと理解したいんだけど,⼿を動かす機会も無いしよくわからん § ⾃社ソフトウェアを Operator 化するマーケ施策が絶賛⾛ってるがマーケなので分からん § etc. @capsmalt
  2. 5 話さないコト § Operator の歴史 (CoreOSが頑張っていました。ググってみてください) § Operator 実装の詳細 §

    特定 Operator の挙動 § Operator Maturity Model (Operator Capability Level ) § Operator Framework の詳細 § Operator 開発の詳細 § Operator 運⽤の詳細 § ... ↑ 今⽇は,詳細系の話はしません。 @capsmalt
  3. Kazufumi Saito (斎藤 和史) Who am I Specialist Solution Architect

    for Kubernetes / OpenShift Role: - Red Hat K.K. ⽣息地︓ クラウドネイティブ界隈 成⻑促進剤︓ IPA🍺 /ラーメン🍜/ラムチョップ🥩 オススメ2選︓ モニター/ダメ着 EV3895 ダメ着ヒーター付 6 @capsmalt
  4. 8 Control Loop (Reconciliation Loop) Contoller が Resource(宣⾔的記述)のDesired State を維持するように

    Reconcile ロジックをループし続ける Observe Analyze (diff) Act 現在の状態 を観測 現在の状態と あるべき状態を⽐較 あるべき状態になるように処理 Desired State Kubernetes Core Concept ※ご注意︓敢えて極端に簡略化した説明をしています @capsmalt
  5. 9 復習)Pod が作成されるまで (例: ReplicaSet) ctl Desired State ※ご注意︓敢えて極端に簡略化した説明をしています リソースを記述したマニフェストをK8sに登録すると,Pod

    がK8s上に作成される api-server: リソース(Podなど)に対するCRUD scheduler: リソースの配置 kubelet: リソースの起動 ctl controller: リソースの調整(Reconcileロジックの実⾏) 参考) @capsmalt $ kubectl apply
  6. 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
  7. 11 Control Loop (Reconciliation Loop) Desired State act Contoller が

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

    Resource(宣⾔的記述)のDesired State を維持するように Reconcile ロジックをループし続ける ※ご注意︓敢えて極端に簡略化した説明をしています ctl diff Desired State replicas: 3 watch $ kubectl apply @capsmalt ✗
  9. 13 Kubernetes Operator 運⽤知⾒をコード化(ソフトウェア化)し,アプリやクラスター運⽤を K8s API を拡張することで実現する ※ご注意︓敢えて極端に簡略化した説明をしています Kubernetes Applications

    アプリ運⽤における運⽤の知⾒をコード化し, パッケージ化したもの。 アプリケーション運⽤に必要な以下のような 作業を⾃動的に⾏う。 ・インストール ・リソーススケーリング ・バックアップ ・アップデート Operator - Installation - Backup - Monitoring @capsmalt
  10. 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
  11. 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
  12. 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
  13. 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
  14. 出典: 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
  15. 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
  16. Happy Kubernetes Life ^ Please Follow me :) 24 @capsmalt

    ※わたしが5分でキメられませんでした....🙏