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

GitOps と Apache Kafka Part 1 / GitOps and Apache Kafka Part 1

suzukiry
December 27, 2021

GitOps と Apache Kafka Part 1 / GitOps and Apache Kafka Part 1

suzukiry

December 27, 2021
Tweet

More Decks by suzukiry

Other Decks in Technology

Transcript

  1. GitOps と Apache Kafka
    Part 1

    View Slide

  2. GitOps と Kafka

    View Slide

  3. GitOps とは
    Introduction to GitOpsより
    GitOps*は、Kubernetes Infrastructure-as-Codeのデプロイ、設定、監視、更
    新、管理方法に関する標準的なワークフローです。
    GitOpsのコアとなる考え方は、本番環境で現在望まれるインフラストラクチャの
    宣言的な記述を常に含むGitリポジトリを持ち、本番環境をリポジトリ内の記述
    状態に一致させるための自動化されたプロセスを持つことです。
    *2017年にWeaveworks 社によって作られたコンセプト
    Git
    宣言型インフラストラクチャ
    とアプリケーションのための
    the single source of truth

    View Slide

  4. 1. システム全体が宣言的に記述されていること
    2. Gitでバージョン管理された正規の希望するシステム状態
    3. 自動的に適用できる承認済みの変更点
    4. Software Agentで正しさを保証し、分岐に警告を出す
    GitOps の原則
    Software
    Agent
    check/
    pull
    deploy/
    prune

    View Slide

  5. Kubernetes と GitOps
    ● 宣言的なリソースの管理による
    の簡素化
    ● コントロールループによる継続
    的な監視、差異があれば復元・
    復旧できる仕組み
    ● 開発者は使い慣れたツールを使っ
    てプルリクエストを行い、リソー
    スの操作ができる
    Kubernetes GitOps
    開発者・運用者の両者の視点で、
    デプロイと運用タスクの両方を簡略化できる

    View Slide

  6. ガバナンスにおけるメリット
    ○ プルリクエストでコミットされるので現在の開発フローのガバナンスをそのまま
    利用できる
    ○ すべての変更はGitから確認できるし、検証、監査も可能
    セキュリティにおけるメリット
    ○ CIツールにCluster Adminロールを共有しなくてよい
    ○ Cluster Adminロールのトラックもできる
    ○ Gitのレポジトリやブランチ権限も利用して、セキュリティ管理できる
    リスク管理におけるメリット
    ○ アプリケーションの完全なロールバックとロギング
    GitOps のメリット

    View Slide

  7. Apache Kafka とは
    ● リアルタイムのデータパイプラインを構築するための主要なプラットフォーム
    ○ 分散システム、水平スケーラブル・冗長性・コミットログ
    ○ Pub/Sub型メッセージングシステム
    ● 高いスループットと拡張性が不可欠なさまざまなユースケースをサポート
    ○ イベントを介してサービス同士が通信することが可能
    ○ イベントストリームのSubcribe、保存や処理をリアルタイムで行うことが可能
    ● SparkやCassandraといった分散システムのKubernetes利用と同じく、Kafkaも
    Operator化(例 Strimzi Operatorなど)。コンテナ基盤でのKafka利用も一つの選択
    肢となってきている。

    View Slide

  8. なぜ Apache Kafka on Kubernetes なのか?
    ● 分散システムの課題を、Kubernetes の仕組みで緩和する
    リソースの抽象化
    宣言的な記述だけでインフラリソースの
    作成・管理ができる。
    →開発者がほしいとき構築・変更が可能
    Kubernetesの価値
    自動回復・自動スケーリング
    現在のシステム状態 (Current Status)が
    望ましい状態 (Desired Status)に一致する
    ように繰り返し動作できる。
    →運用者の負担を減らす
    Apache Kafkaの運用面の課題
    分散システムの構築負荷
    アプリ開発者が俊敏性を持ってKafka を
    使った開発をしたい
    複数ノードの運用管理の煩雑さ
    スケーラブルな分、比較的多くなりやす
    いノードの運用管理、障害対応の作業負
    荷は増え続ける

    View Slide

  9. Kafka の
    GitOps 環境を作る

    View Slide

  10. KafkaにGitOpsを採用する意義
    開発者としての意義
    ● 開発チームの独立性
    ○ 必要なTopicや設定をすぐに構築・利用することができる。開発者主導で進めることができる
    ようになり、運用者との連携プレーを減らし、開発作業に注力できる。
    ● アプリケーション+データハブ(Kafka)でのデプロイが可能
    ○ アプリだけでなくデータハブまでを含めてストリーミングプラットフォームアプリケーショ
    ンとして、デプロイ・スケールアウトの操作が行える
    運用者としての意義
    ● 運用軽減
    ○ Topicなどの簡易作業に手を煩わすことなく、Resilency プランニングやカオステスティング
    など、システムにより価値がでる本来の作業に注力ができる。
    ● ガバナンス
    ○ Pull Requestを活用できるので、アプリ側の既存のGitフローをそのまま使えるのでガバナン
    スを保てる

    View Slide

  11. Kafka + GitOps で必要になるツール
    Kubernetes Operator GitOpsツール(CD機能) Secrets管理
    ● Strimzi Operator
    ● Confluent
    Operator
    ● koperator
    ● Aiven Operator
    ● Lense operator
    ● Argo CD
    ● Flux CD
    ● Jenkins X
    ● External Secrets
    ● HashiCorp Vault
    ● Bitnami Sealed
    Secrets
    宣言的にKafka クラスタから
    Topic設定などまで操作が可能
    GitをSingle Source Of Truth
    としてリソースを運用
    外部ストレージで機密情報を
    保管し復号防止

    View Slide

  12. Kafka + GitOps に関連する取り組み
    ● Kubernetesベースの Kafka + GitOps
    種類 概要
    Red Hat ・AMQ Streams(Strimzi) Operatorの提供
    ・GitOpsツール(OpenShift GitOps *Argo CD)も提供しており、Kafka の
    GitOps環境まで構築できる
    Confluent ・Confluent Cloud上で、GitOpsでKafkaを利用するための独立したプロ
    ジェクト(streaming-ops project *中はshell operator+同プロジェクト専用Operator+Flux
    CD+Bitnami Sealed Secrets 構成)。
    ・Confluent Operatorの提供
    Banzai Cloud、
    Aiven、
    Lenses
    ・各社Operator(koperator、Aiven Operator、Lense operator)を提供
    し、CD(Jenkinsなど)と組み合わせGitOpsを実現

    View Slide

  13. Kafka + GitOps に関連する取り組み
    ● 独自ユーティリティを使った Kafka + GitOps
    種類 概要
    Lenses ・lenses-cliユーティリティ
    ・パラメータを管理したyamlを読み込みながら、Kafka クラスタのTopicな
    どを管理する
    Jikkou(Apache 2.0) ・jikkouユーティリティ
    ・パラメータを管理したyamlを読み込みながら、Kafka クラスタのTopicな
    どを管理する
    JulieOps(MIT) ・julie-ops-cli.sh
    ・パラメータを管理したyamlを読み込みながら、Kafka クラスタのTopicな
    どを管理する

    View Slide

  14. Argocd
    Operator
    Strimzi Operator + Argo CD
    StrimziとArgoCDを使った構成イメージ
    Rep
    Kafka Cluster
       (Prod)
    Kafka Cluster
       (DR)
    Strimzi Operator
    開発者
    運用者

    View Slide

  15. Thank you

    View Slide

  16. AMQ Streams
    ● Apache Kafka のエンタープライズ向けディストリビューション
    ○ 2018年から Kafka をサポート、Kubernetes 上でも提供
    ○ Red Hat AMQ Streams としてローンチ
    ● 提供形態
    ○ Red Hat Enterprise Linux
    ○ Red Hat OpenShift Container Platform
    Apache Kafka on Kubernetes 基礎編 ワークショップ:
    https://redhat-open.connpass.com/
      Strimzi/AMQ Streamsをハンズオンをしてみたい

    View Slide

  17. OpenShift GitOps
    ● Argo CDをアップストリームとしたCDプロセスを担うOpenShiftのDeveloper
    Serviceの一つ
    ● マルチクラスタ OpenShift および Kubernetes インフラストラクチャのクラスタと
    アプリケーションの設定を宣言的に管理ができます
    ● Argo CDとTektonを使用することで、エンドツーエンドのGitOpsワークフローを
    構築できます
    OpenShift CI/CD 基礎編 ワークショップ:
    https://redhat-open.connpass.com/
      OpenShift GitOpsをハンズオンをしてみたい

    View Slide

  18. 記事は別途まとめています。
    https://suzukiry.medium.com/gitops-and-apache-kafka-part-1-705bdde95fea

    View Slide