Slide 1

Slide 1 text

GitOps と Apache Kafka Part 1

Slide 2

Slide 2 text

GitOps と Kafka

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

Kafka の GitOps 環境を作る

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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 としてリソースを運用 外部ストレージで機密情報を 保管し復号防止

Slide 12

Slide 12 text

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を実現

Slide 13

Slide 13 text

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な どを管理する

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

Thank you

Slide 16

Slide 16 text

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をハンズオンをしてみたい

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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