Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Strimzi: How Apache Kafka has fallen in love with Kubernetes

354 views

Published on

Apache Kafka has emerged as a leading platform for building real-time data pipelines but operating such a distributed system at scale can be complex and tedious, and must address concerns such as scalability, elasticity, reliability and resilience. Kubernetes eases the operational burden by addressing these concerns out-of-the box. It seems that there are too many challenges for Apache Kafka to fall in love with Kubernetes but it's where the Strimzi project comes to help. During this session, we'll see how it can be true love.

Published in: Software
  • Be the first to comment

Strimzi: How Apache Kafka has fallen in love with Kubernetes

  1. 1. STRIMZI: HOW APACHE KAFKA HAS FALLEN IN LOVE WITH KUBERNETES Running Apache Kafka on Kubernetes Paolo Patierno Principal Software Engineer, Messaging & IoT team 3/4/2019
  2. 2. INSERT DESIGNATOR, IF NEEDED2 MY CUSTOM RESOURCE kubectl apply -f paolopatierno.yaml apiVersion: redhat/v1 kind: PrincipalSoftwareEngineer metadata: name: Paolo Patierno namespace: Red Hat, Messaging & IoT team annotations: eclipse/committer: Vert.x, Hono & Paho microsoft/mvp: Azure & IoT labels: family: dad of two, husband of one sports: running, swimming, motogp, vr46, ssc napoli spec: replicas: 1 containers: - image: patiernohub.io/paolo:latest @ppatierno
  3. 3. INSERT DESIGNATOR, IF NEEDED3 WHAT AM I GOING TO TELL YOU? … a true love story
  4. 4. INSERT DESIGNATOR, IF NEEDED4 APACHE KAFKA What is that? “ … a publish/subscribe messaging system …” “ … a streaming data platform …” “ … a distributed, horizontally-scalable, fault-tolerant, commit log …”
  5. 5. INSERT DESIGNATOR, IF NEEDED5 APACHE KAFKA What is that? ● Developed at Linkedin back in 2010, open sourced in 2011 ● Designed to be fast, scalable, durable and available ● Distributed by nature ● Data partitioning (sharding) ● High throughput / low latency ● Ability to handle huge number of consumers
  6. 6. INSERT DESIGNATOR, IF NEEDED6 APACHE KAFKA What is that? ● Messages are sent to and received from a topic ○ Topics are split into one or more partitions (aka shards) ○ All actual work is done on partition level, topic is just a virtual object ● Each message is written only into a one selected partition ○ Partitioning is usually done based on the message key ○ Message ordering within the partition is fixed ● Retention ○ Based on size / message age ○ Compacted based on message key ● Replication ○ Each partition can exist in one or more Backup copies to achieve high availability in case of node failures
  7. 7. INSERT DESIGNATOR, IF NEEDED7 KUBERNETES What is that? “ A system for …” “ … automating deployment …” “ … scaling …” “ … management …” “ … of containerized applications …” “ It’s like a Linux kernel … but for distributed systems”
  8. 8. INSERT DESIGNATOR, IF NEEDED8 KUBERNETES What is that? ● Comes from Google experience with project “Borg” ● Abstract the underlying hardware in terms of “nodes” ● On the nodes a set of different “resources” can be deployed and handled ● Containerized applications are deployed, using and sharing “resources”
  9. 9. INSERT DESIGNATOR, IF NEEDED9 KUBERNETES What is that? Container scheduling Self healing Horizontal scaling Service discovery Load balancing Automated rollout/rollback Secret & configuration management Storage orchestration Batch execution
  10. 10. INSERT DESIGNATOR, IF NEEDED10 “ … every love story has many challenges …”
  11. 11. INSERT DESIGNATOR, IF NEEDED11 THE CHALLENGES … of running Apache Kafka on Kubernetes ● A Kafka cluster requires … ○ … a stable broker identity and stable network address ○ … a way for brokers to discover each other and communicate ○ … durable state on brokers and storage recovery ○ … to have brokers accessible from clients, directly ● … and if it’s not enough, it runs alongside a Zookeeper ensemble which requires … ○ … each node has the configuration of the others ○ … to have nodes able to communicate each others ● Accessing Kafka isn’t so simple
  12. 12. INSERT DESIGNATOR, IF NEEDED12 THE CHALLENGES … how Kubernetes can help on that? ● Kubernetes provides … ○ … StatefulSets for stable identity and network … ○ … together with Headless services for internal discovery ○ … Services for accessing the cluster ○ … Secrets and ConfigMap for handling configurations ○ … PersistentVolume and PersistentVolumeClaim for durable storage
  13. 13. INSERT DESIGNATOR, IF NEEDED13 “ … but it’s not so easy …”
  14. 14. INSERT DESIGNATOR, IF NEEDED14 “ … you would need an operator handling all these Kubernetes resources for you …” “ … you could ask him to apply the changes you want for you or recovery from problems automatically …” “ … that’s a great idea! Why not?”
  15. 15. INSERT DESIGNATOR, IF NEEDED15 THE OPERATOR “Someone” who works for you ● It has the knowledge of the application to control ● It lets you to “describe” your application … ○ … and deploy it for you ● It watches the “desired” state and the “actual” state … ○ … taking appropriate actions ● It can handle the entire lifecycle of an application ○ Upgrades, security, … Observe Analyze Act
  16. 16. INSERT DESIGNATOR, IF NEEDED16 OPERATORS FTW! Welcome to their new home ● OperatorHub.io ○ A new home for the Kubernetes community to share operators ● Operators available today: ○ AWS service ○ Etcd ○ MongoDB ○ Prometheus ○ Redis ○ … and many more
  17. 17. INSERT DESIGNATOR, IF NEEDED17 WELCOME TO STRIMZI The open source Apache Kafka operator
  18. 18. INSERT DESIGNATOR, IF NEEDED18 WELCOME TO STRIMZI The open source Apache Kafka operator ● Open source project licensed under Apache License 2.0 ● Focuses on running Apache Kafka on Kubernetes and OpenShift: ○ Container images for Apache Kafka and Apache Zookeeper ○ Operators for managing and configuring Kafka clusters, topics or users ● Provides Kubernetes-native experience for running Kafka on Kubernetes and OpenShift ○ Kafka cluster, topic and user as Kubernetes custom resources Web site: http://strimzi.io/ GitHub: https://github.com/strimzi Twitter: @strimziio
  19. 19. INSERT DESIGNATOR, IF NEEDED19 Red Hat AMQ Streams Apache Kafka for the Enterprise ● Part of the Red Hat AMQ suite ● AMQ Streams on OCP ○ Running Apache Kafka on OpenShift Container Platform ○ Based on the Strimzi project ● AMQ Streams on RHEL ○ Running Apache Kafka on “bare metal” Web site: https://access.redhat.com/products/red-hat-amq#streams
  20. 20. Topic & User operators 20 Zookeeper cluster Kafka cluster Cluster operator Kafka Custom Resource KAFKA CLUSTER How to deploy
  21. 21. Topic & User operators 21 Zookeeper cluster Kafka cluster Cluster operator Kafka Custom Resource KAFKA CLUSTER How to update
  22. 22. 22 Web Servers Service / Loadbalancer KUBERNETES APPLICATIONS How to access
  23. 23. INSERT DESIGNATOR, IF NEEDED23 “ … but load balancing cannot work with Kafka!”
  24. 24. Bootstrap Service 24 Kafka brokers Headless Service KAFKA CLUSTER How to access: inside Kubernetes
  25. 25. Per-pod Service Bootstrap Service 25 Kafka brokers Headless Service KAFKA CLUSTER How to access: from outside Kubernetes Load balancers, node ports, OpenShift routes
  26. 26. FEATURES It’s really more 26 Scale Down Affinity Tolerations Encryption Authorization Scale Up Logging Metrics Healthchecks Zookeeper Off cluster access Configuration Source2Image Topic JVM Configuration Authentication Storage HA Mirroring Kafka Connect CPU and RAMUsers Pod Disruption Budgets Annotations ImagePullSecrets Labels Upgrades Secrets ACLs Network Policies Prometheus Grafana
  27. 27. INSERT DESIGNATOR, IF NEEDED27 “Do you want to see this really working? Demo time!”
  28. 28. 28 DEMO IoT devices monitoring
  29. 29. INSERT DESIGNATOR, IF NEEDED29
  30. 30. INSERT DESIGNATOR, IF NEEDED30 RESOURCES Where I can find more? ● Strimzi : https://strimzi.io/ ● OperatorHub.io : https://www.operatorhub.io/ ● Apache Kafka : https://kafka.apache.org/ ● Kubernetes : https://kubernetes.io/ ● OpenShift : https://www.openshift.com/ ● Operator framework : https://github.com/operator-framework ● Demo: https://github.com/ppatierno/modern-integration-and-application-development-day-2019
  31. 31. THANK YOU!! @ppatierno
  32. 32. INSERT DESIGNATOR, IF NEEDED32
  33. 33. INSERT DESIGNATOR, IF NEEDED33

×