$30 off During Our Annual Pro Sale. View Details »

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. 5分でキメる
    “Kubernetes Operator 完全に理解した”
    Kazufumi Saito @capsmalt
    1

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    今⽇は,詳細系の話はしません。
    @capsmalt

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  10. 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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  14. 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

    View Slide

  15. 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

    View Slide

  16. 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

    View Slide

  17. 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

    View Slide

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

    View Slide

  19. 出典: 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

    View Slide

  20. 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

    View Slide

  21. 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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide