☁ïļ
← Apache Camel

Apache Camel 101

āļšāļ—āđ€āļĢāļĩāļĒāļ™āļ§āļąāļ™āļ—āļĩāđˆ 3: Quarkus & Camel K āļšāļ™ Kubernetes

Day 3 Advanced Cloud-Native

āļĒāļāļĢāļ°āļ”āļąāļšāļĢāļ°āļšāļš Integration āļŠāļđāđˆāļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄ Cloud-Native āđāļĨāļ° Kubernetes

āđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰āļāļēāļĢāđƒāļŠāđ‰ Camel Quarkus āđāļĨāļ° Camel K āđ€āļžāļ·āđˆāļ­āļāļēāļĢāļšāļđāļ•āļĢāļ°āļšāļšāļĢāļ°āļ”āļąāļšāļĄāļīāļĨāļĨāļīāļ§āļīāļ™āļēāļ—āļĩāđāļĨāļ°āļāļēāļĢāļ—āļģāļ‡āļēāļ™āđāļšāļš Serverless āļšāļ™ Kubernetes Cluster

1. āļ—āļĪāļĐāļŽāļĩāđāļĨāļ°āļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄ (Cloud-Native Integration)

āļ—āļģāļ„āļ§āļēāļĄāđ€āļ‚āđ‰āļēāđƒāļˆāļ„āļ§āļēāļĄāļŠāļģāļ„āļąāļāļ‚āļ­āļ‡ Fast Startup āđāļĨāļ° Low Memory Footprint āļšāļ™āļĢāļ°āļšāļš Container

1.1 āļ—āļģāđ„āļĄāļ•āđ‰āļ­āļ‡ Quarkus & Camel K āđƒāļ™āļĒāļļāļ„ Kubernetes?

āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļšāļ™ Kubernetes āļ•āđ‰āļ­āļ‡āļāļēāļĢāļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļī 2 āļ›āļĢāļ°āļāļēāļĢāļŦāļĨāļąāļāļ„āļ·āļ­ Fast Startup Time āđāļĨāļ° Low Memory Footprint āđ€āļ™āļ·āđˆāļ­āļ‡āļˆāļēāļāļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄ Java āļ”āļąāđ‰āļ‡āđ€āļ”āļīāļĄāđƒāļŠāđ‰āđ€āļ§āļĨāļēāļšāļđāļ•āļ™āļēāļ™āđāļĨāļ°āđƒāļŠāđ‰āļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄāļˆāļģāļŠāļđāļ‡ Camel āļˆāļķāļ‡āļžāļąāļ’āļ™āļēāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āđ€āļ‰āļžāļēāļ°āļ—āļēāļ‡:

  • Camel Quarkus: āļœāļŠāļēāļ™āļžāļĨāļąāļ‡ Apache Camel āđ€āļ‚āđ‰āļēāļāļąāļš Quarkus Compile āđ€āļ›āđ‡āļ™ Native Executable āļœāđˆāļēāļ™ GraalVM āļĨāļ”āđ€āļ§āļĨāļē Startup āđ€āļŦāļĨāļ·āļ­āļĄāļīāļĨāļĨāļīāļ§āļīāļ™āļēāļ—āļĩāđāļĨāļ°āļ›āļĢāļ°āļŦāļĒāļąāļ” RAM āļĄāļŦāļēāļĻāļēāļĨ
  • Camel K: Lightweight Integration Framework āļŠāļģāļŦāļĢāļąāļšāļĢāļąāļ™āđāļšāļš Native āļšāļ™ Kubernetes āļĢāļ­āļ‡āļĢāļąāļš Serverless Workloads (Scale-down āđ€āļŦāļĨāļ·āļ­ 0 āđ€āļĄāļ·āđˆāļ­āđ„āļĄāđˆāļĄāļĩ Request)

1.2 āđ€āļ›āļĢāļĩāļĒāļšāđ€āļ—āļĩāļĒāļš Runtimes

  • Camel CLI (JBang): āđ€āļŦāļĄāļēāļ°āļŠāļģāļŦāļĢāļąāļš Prototyping āđāļĨāļ°āļ—āļ”āļĨāļ­āļ‡āđ€āļ‚āļĩāļĒāļ™āļŠāļ„āļĢāļīāļ›āļ•āđŒāđ€āļ”āļĩāđˆāļĒāļ§
  • Spring Boot: āđ€āļŦāļĄāļēāļ°āļāļąāļš Enterprise App āļ”āļąāđ‰āļ‡āđ€āļ”āļīāļĄāļšāļ™ Spring Ecosystem
  • Quarkus: āđ€āļŦāļĄāļēāļ°āļāļąāļš Cloud-Native Microservices āļ—āļĩāđˆāļ•āđ‰āļ­āļ‡āļāļēāļĢ Native Compilation
  • Camel K: āđ€āļŦāļĄāļēāļ°āļāļąāļš Kubernetes/Serverless āđ‚āļ”āļĒāļĨāļ”āļ āļēāļĢāļ°āļāļēāļĢāđ€āļ‚āļĩāļĒāļ™āļŠāļ„āļĢāļīāļ›āļ•āđŒ Deployment

1.3 āļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄāđāļĨāļ°āļāļēāļĢāļ—āļģāļ‡āļēāļ™āļ‚āļ­āļ‡ Camel K Operator

āļ āļēāļžāļˆāļģāļĨāļ­āļ‡āļāļēāļĢāļŠāđˆāļ‡āđ„āļŸāļĨāđŒ Integration CRD āđ€āļ‚āđ‰āļēāļŠāļđāđˆ Kubernetes Cluster

āļœāļđāđ‰āļžāļąāļ’āļ™āļēāļŠāđˆāļ‡āđ„āļŸāļĨāđŒ YAML Route ➔ Camel K Operator āļšāļ™ Cluster āđāļ›āļĨāļ‡āđāļĨāļ°āđāļžāđ‡āļāđ€āļāļˆāđ€āļ›āđ‡āļ™ Container Pod āđƒāļŦāđ‰āļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļīāļ—āļąāļ™āļ—āļĩ

📝
YAML Integration Code
kamel run route.yaml
➔
â˜ļïļ
Kubernetes + Camel K Operator
Automatic Build, Package & Deploy Pods
➔
🚀
Serverless Pods (Running)
Auto Scale-to-Zero Support

2. āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āđ‚āļ„āđ‰āļ”āļˆāļĢāļīāļ‡ (Camel Quarkus & Camel K)

āļāļēāļĢāļ•āļąāđ‰āļ‡āļ„āđˆāļē Extension āđāļĨāļ°āļāļēāļĢāđ€āļ‚āļĩāļĒāļ™ Route āđāļšāļš Cloud-Native

📁 CloudNativeOrderRoute.java (Quarkus CDI)
import jakarta.enterprise.context.ApplicationScoped;
import org.apache.camel.builder.RouteBuilder;

@ApplicationScoped
public class CloudNativeOrderRoute extends RouteBuilder {
    @Override
    public void configure() throws Exception {
        from("kafka:cloud-orders")
            .routeId("cloud-native-kafka-to-db")
            .unmarshal().json()
            .to("sql:INSERT INTO cloud_orders (id, amount) VALUES (:#id, :#amount)")
            .log("Processed order ${header.id} in Cloud-Native Runtime");
    }
}

🏋ïļâ€â™‚ïļ āđ‚āļˆāļ—āļĒāđŒāļāļķāļāļ›āļāļīāļšāļąāļ•āļīāļ›āļĢāļ°āļˆāļģāļ§āļąāļ™āļ—āļĩāđˆ 3 (Hands-on Drill)

āļāļķāļāļ­āļ˜āļīāļšāļēāļĒāđāļĨāļ°āđƒāļŠāđ‰āļ‡āļēāļ™āļ„āļģāļŠāļąāđˆāļ‡ Cloud-Native āļšāļ™ Kubernetes

  1. āļ­āļ˜āļīāļšāļēāļĒāļ‚āđ‰āļ­āļ”āļĩāļ‚āļ­āļ‡āļāļēāļĢāđƒāļŠāđ‰ Camel Quarkus + GraalVM Native Compilation āđ€āļ›āļĢāļĩāļĒāļšāđ€āļ—āļĩāļĒāļšāļāļąāļš Spring Boot āļ”āļąāđ‰āļ‡āđ€āļ”āļīāļĄāđƒāļ™āđāļ‡āđˆāļ—āļĢāļąāļžāļĒāļēāļāļĢāļšāļ™ Cloud
  2. āļ—āļ”āļĨāļ­āļ‡āđƒāļŠāđ‰āļ„āļģāļŠāļąāđˆāļ‡ kamel run order-integration.yaml āļšāļ™ Kubernetes Cluster

📝 āđāļšāļšāļ—āļ”āļŠāļ­āļšāļ—āļšāļ—āļ§āļ™āļšāļ—āđ€āļĢāļĩāļĒāļ™āļ§āļąāļ™āļ—āļĩāđˆ 3 (āļ•āļ­āļšāļ›āļļāđŠāļš āļĢāļđāđ‰āļœāļĨāļ›āļąāđŠāļš)

āđ€āļĨāļ·āļ­āļāļ„āļģāļ•āļ­āļšāļ—āļĩāđˆāļ„āļļāļ“āļ„āļīāļ”āļ§āđˆāļēāļ–āļđāļāļ•āđ‰āļ­āļ‡ āļĢāļ°āļšāļšāļˆāļ°āđāļŠāļ”āļ‡āļœāļĨāļĨāļąāļžāļ˜āđŒāđāļĨāļ°āļ„āļģāļ­āļ˜āļīāļšāļēāļĒāļ—āļąāļ™āļ—āļĩ