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

Java屋だってOperatorが作りたい!

RyuSA
February 16, 2022

 Java屋だってOperatorが作りたい!

OCHaCafe5 #2 Kubernetesで並列分散処理 のLT登壇資料です
https://ochacafe.connpass.com/event/235859/

RyuSA

February 16, 2022
Tweet

More Decks by RyuSA

Other Decks in Programming

Transcript

  1. - “Java” Operator SDK でお⼿軽 Operator ⼊⾨ -
    RyuSA
    Java屋だってOperatorが作りたい︕

    View Slide

  2. RyuSA
    Financial Service Engineer
    Java & SpringBoot / Typescript & React
    Docker / Kubernetes
    : RyuSA
    : ryusa_eng

    View Slide

  3. OCHaCafe Session5 #1 のおさらい
    https://speakerdeck.com/oracle4engineer/kubernetes-operator-introduction

    View Slide

  4. 運⽤やワークロードの⾃動化を⽬的としたKubernetesの拡張機能
    • 俗に⾔う「作業⼿順書」をコードに落とし込んで⾃動化するためのフレームワーク的なもの
    • たとえば、データベースのバックアップ作業やミドルウェアの復旧など
    kubebuilder / operator-sdk
    • Kubernetes の Operator を Go⾔語 で実装できるフレームワーク
    • 統合されたりラッパーになっていたりするが、できることは⼤体⼀緒
    • Operatorの内部処理であるControllerを実装し、CRDを⽣成できます
    Kubernetes Operator とは

    View Slide

  5. Overview – Kubernetes Operator
    Kubernetes Operator
    Deploy

    View Slide

  6. Overview – Kubernetes Operator
    Kubernetes Operator
    Watch 👀

    View Slide

  7. Overview – Kubernetes Operator
    Kubernetes Operator
    Deploy

    View Slide

  8. Overview – Kubernetes Operator
    Kubernetes Operator
    Found CustomResource

    View Slide

  9. Overview – Kubernetes Operator
    Kubernetes Operator
    Reconcile
    Side Effect

    View Slide

  10. Overview – Kubernetes Operator
    Kubernetes Operator
    Reconcile
    Side Effect
    This looks like ...
    DDL
    CREATE TABLE...
    DML
    INSERT ...
    Application
    DCN (implements DatabaseChangeListener)
    Oracle Database

    View Slide

  11. Overview – Kubernetes Operator
    Kubernetes Operator
    Reconcile
    Deploy
    Deploy
    Side Effect
    Watch 👀

    View Slide

  12. Build Kubernetes Operators in Java Without Hassle
    お⼿軽に Kubernetes Operator を Java で作ろうぜ︕

    View Slide

  13. • Kubernetes Operator の⾔葉を Java クラスで実装する
    • Custom Resource Definition
    • = POJO (Plain Old Java Object)
    • Controller
    • = interface Reconciler を実装
    • Integration with ...
    • Quarkus
    • CDI support
    • container build with JIB
    • providing some dev tools
    • Spring Boot
    JOSDK 実装

    View Slide

  14. Greeter
    Watch 👀
    GreeterOperator
    log.info(greeter.message)
    サンプル – Greeter Operator

    View Slide

  15. CRD 実装
    Greeter カスタムリソース
    Greeter クラス

    View Slide

  16. Controller 実装
    Greeter リソースが作成/変更された時
    実⾏されるリコンサイル処理
    Greeter リソースが削除された時
    実⾏される finalize 処理

    View Slide

  17. Operator 実装
    Operator の設定を準備する
    Operatorインスタンスを起動して
    Operatorを起動する

    View Slide

  18. Greeter
    Watch 👀
    GreeterOperator
    log.info(“Hello World”)
    helloworld
    全体の挙動

    View Slide

  19. Kubernetes Operator とは
    • CRD と CR を使って運⽤の⾃動化などを実装できる Kubernetes の拡張機能
    • kubebuilder や operator-sdk といったツールを使って実装することが多い(Go⾔語)
    Java Operator SDK
    • Kubernetes の Operator を Java で実装できるフレームワーク
    • Java の Kubernetes Client をベースに、キャッシュやリキューの機能が追加されている
    • Quarkus/Spring Boot での拡張が可能
    まとめ

    View Slide