blob: 052d6b6b9c2a397a3dc8e2f600a8705945e7ced1 [file] [log] [blame]
---
layout: page
title: Apache Karaf - Projects
permalink: /projects
---
<div class="container pt-5 pb-3">
<div class="jumbotron p-3 p-md-5 text-white bg-primary">
<div class="col-md-12 px-0">
<h1 class="display-4 font-italic">Apache Karaf is a project and a bunch of subprojects !</h1>
<p class="lead my-3">Karaf provides enterprise ready features like shell console, remote access, hot deployment, dynamic configuration and many more. Karaf subprojects provide additional features like clustering, complete monitoring and alerting, application repository.</p>
<p class="lead mb-0">Let's start !</p>
</div>
</div>
</div>
<div class="container mb-5">
<div class="row mb-2">
<div class="col">
<div class="card flex-md-row mb-4 box-shadow h-md-250">
<div class="card-body d-flex flex-column align-items-start">
<strong class="d-inline-block mb-2 text-primary"><i class="fas fa-flask"></i> Runtime</strong>
<h3 class="mb-0">
<a class="text-dark">Karaf Runtime</a>
</h3>
<p class="card-text mb-auto">Karaf Runtime is a modulith runtime.</p>
<p>
<small class="text-muted">Latest 4.3.0 <a href="/download.html"><i class="fas fa-download"></i></a></small>
</p>
</div>
</div>
</div>
<div class="col">
<div class="card flex-md-row mb-4 box-shadow h-md-250">
<div class="card-body d-flex flex-column align-items-start">
<strong class="d-inline-block mb-2 text-primary"><i class="fas fa-server"></i> Clustering</strong>
<h3 class="mb-0">
<a class="text-dark">Karaf Cellar</a>
</h3>
<p class="card-text mb-auto">Karaf Cellar is a clustering solution for Karaf.</p>
<p>
<small class="text-muted">Latest 4.2.0 <a href="/download.html"><i class="fas fa-download"></i></a></small>
</p>
</div>
</div>
</div>
<div class="col">
<div class="card flex-md-row mb-4 box-shadow h-md-250">
<div class="card-body d-flex flex-column align-items-start">
<strong class="d-inline-block mb-2 text-primary"><i class="fas fa-warehouse"></i> Repository</strong>
<h3 class="mb-0">
<a class="text-dark">Karaf Cave</a>
</h3>
<p class="card-text mb-auto">Karaf Cave is an artifact repository.</p>
<p>
<small class="text-muted">Latest 4.2.1 <a href="/download.html"><i class="fas fa-download"></i></a></small>
</p>
</div>
</div>
</div>
<div class="col">
<div class="card flex-md-row mb-4 box-shadow h-md-250">
<div class="card-body d-flex flex-column align-items-start">
<strong class="d-inline-block mb-2 text-primary"><i class="fas fa-tachometer-alt"></i> Monitoring</strong>
<h3 class="mb-0">
<a class="text-dark">Karaf Decanter</a>
</h3>
<p class="card-text mb-auto">Karaf Decanter provides ready to use monitoring solution.</p>
<p>
<small class="text-muted">Latest 2.7.0 <a href="download.html"><i class="fas fa-download"></i></a></small>
</p>
</div>
</div>
</div>
</div>
</div>
<main role="main">
<div class="container">
<!-- karaf-container -->
<div class="row pb-5 border-bottom">
<div class="col-md-12">
<h5 class="project-heading">Run your applications in <span class="text-muted">Karaf Runtime</span></h5>
<div class="pb-4 mb-3">
<p class="lead">Karaf Runtime is a modulith runtime. It's a lightweight, powerful, and enterprise ready.
<br/>Karaf supports several frameworks and programming model: REST/API, web, Spring Boot, ...
<br/>Karaf can be use as a standalone immuatable runtime, or in a mutable runtime that you can manage remotely.</p>
<p>
<a class="btn btn-primary" href="/download.html" role="button">Download &raquo;</a>
<a class="btn btn-outline-primary" href="/documentation.html" role="button">Documentation &raquo;</a>
<a class="btn btn-outline-dark" href="https://github.com/apache/karaf" role="button" target="_blank">View on GitHub &raquo;</a>
</p>
</div>
<h2 class="pb-3 mb-4 font-italic">Architecture</h2>
<div class="col-md-10 offset-md-1">
<div class="bg-dark p-2 mb-2 mt-2 text-white text-center">
Enterprise Features
</div>
<div class="bg-dark p-2 mb-2 mt-2 text-white text-center">
WebContainer (Pax Web)
</div>
<div class="row p-2 mb-2 mt-2">
<div class="col bg-secondary text-white p-2 ml-2 mr-2 text-center">
Instance
</div>
<div class="col bg-secondary text-white p-2 ml-2 mr-2 text-center">
JMX
</div>
<div class="col bg-secondary text-white p-2 ml-2 mr-2 text-center">
ConfigAdmin
</div>
<div class="col bg-secondary text-white p-2 ml-2 mr-2 text-center">
Security
</div>
</div>
<div class="row pb-2 pl-2 pr-2 mb-2 mt-2 ">
<div class="col bg-secondary text-white p-2 ml-2 mr-2 text-center">
Shell / SSH
</div>
<div class="col bg-secondary text-white p-2 ml-2 mr-2 text-center">
Logging
</div>
<div class="col bg-secondary text-white p-2 ml-2 mr-2 text-center">
Deployers
</div>
<div class="col bg-secondary text-white p-2 ml-2 mr-2 text-center">
Provisioning
</div>
</div>
<div class="border p-2 mb-2 mt-2 text-center">
Programming Model (Spring / BluePrint / DeclarativeService)
</div>
<div class="border p-2 mb-2 mt-2 text-center">
OSGi Framework (Apache Felix / Eclipse Equinox)
</div>
<div class="bg-primary p-2 mb-2 mt-2 text-white text-center">
JVM
</div>
</div><!-- architecture -->
<h2 class="pb-3 mb-4 pt-3 mt-4 font-italic">Key features</h2>
<div class="card-deck mb-3">
<div class="card">
<div class="card-body">
<h5 class="card-title text-dark">Hot deployment</h5>
<p class="card-text">You can directly drop your applications in the Karaf deploy folder, they will be directly deployed for you. You can also create your own deployer.</p>
<p class="card-text"><small class="text-muted">Since 4.x</small></p>
</div>
</div>
<div class="card">
<div class="card-body">
<h5 class="card-title text-dark">Dynamic configuration</h5>
<p class="card-text">All configurations (for Karaf itself and applications) are located in the Karaf etc folder. All changes in the configuration files are taken on the flyv: no need to restart.</p>
<p class="card-text"><small class="text-muted">Since 4.x</small></p>
</div>
</div>
<div class="card">
<div class="card-body text-dark">
<h5 class="card-title">Logging system</h5>
<p class="card-text">Karaf uses a centralized logging back end, supporting popular frameworks (log4j, slf4j, logback, ...).</p>
<p class="card-text"><small class="text-muted">Since 4.x</small></p>
</div>
</div>
</div>
<div class="card-deck mb-3">
<div class="card">
<div class="card-body">
<h5 class="card-title text-dark">Provisioning</h5>
<p class="card-text">Karaf provides a very convenient way to provision applications: the Karaf Features.</p>
<p class="card-text"><small class="text-muted">Since 4.x</small></p>
</div>
</div>
<div class="card">
<div class="card-body">
<h5 class="card-title text-dark">Shell Console</h5>
<p class="card-text">Karaf provides a complete Unix like shell console, allowing to manage your container and applications. This shell supports completion, contextual help, key bindings, and much more.</p>
<p class="card-text"><small class="text-muted">Since 4.x</small></p>
</div>
</div>
<div class="card">
<div class="card-body text-dark">
<h5 class="card-title">Remote management</h5>
<p class="card-text">Karaf embeds a SSH server allowing you to remotely access the shell using any SSH client. On the other hand, Karaf also provides JMX MBean server allowing to manage the container using any JMX client.</p>
<p class="card-text"><small class="text-muted">Since 4.x</small></p>
</div>
</div>
</div>
<div class="card-deck mb-3">
<div class="card">
<div class="card-body">
<h5 class="card-title text-dark">WebConsole</h5>
<p class="card-text">In addition of ssh and JMX, you can also manage Karaf Runtime using a simple browser thanks to the Karaf WebConsole.</p>
<p class="card-text"><small class="text-muted">Since 4.x</small></p>
</div>
</div>
<div class="card">
<div class="card-body">
<h5 class="card-title text-dark">Security</h5>
<p class="card-text">Karaf fully supports JAAS based security framework. It also supports a complete RBAC system for shell commands and JMX objects. You can directly use this security layer in your own applications.</p>
<p class="card-text"><small class="text-muted">Since 4.x</small></p>
</div>
</div>
<div class="card">
<div class="card-body text-dark">
<h5 class="card-title">Instances management</h5>
<p class="card-text">You can manage several children instances inside the Karaf Runtime root instance. It's a very convenient way to test applications or configurations without impacting your existing running instances.</p>
<p class="card-text"><small class="text-muted">Since 4.x</small></p>
</div>
</div>
</div>
<div class="card-deck w-34 mb-3">
<div class="card">
<div class="card-body">
<h5 class="card-title text-dark">Docker & Cloud ready</h5>
<p class="card-text">Manage your Docker containers and images via Karaf shell console, provisionning a running instance in the simpliest way.</p>
<p class="card-text"><small class="text-muted">Since 4.x</small></p>
</div>
</div>
</div>
</div>
</div><!-- karaf-container -->
<!-- karaf-cellar -->
<div class="row pb-5 pt-5 border-bottom">
<div class="col-md-12">
<h5 class="project-heading">Manage bunch of clustered instances with <span class="text-muted">Karaf Cellar</span></h5>
<div class="pb-4 mb-3">
<p class="lead">You have bunch of Karaf Runtime instances running ? You want to manage those instances as one, spreading the configuration, deployment, etc ? Karaf Cellar is for you.<br/>
Karaf Cellar is a clustering solution for Karaf. It allows you to manage multiple instances, with synchronization between the instances.</p>
<p>
<a class="btn btn-primary" href="/download.html" role="button">Download &raquo;</a>
<a class="btn btn-outline-primary" href="/documentation.html" role="button">Documentation &raquo;</a>
<a class="btn btn-outline-dark" href="https://github.com/apache/karaf-cellar" role="button" target="_blank">View on GitHub &raquo;</a>
</p>
</div>
<h2 class="pb-3 mb-4 font-italic">Architecture</h2>
<div class="col-md-6 offset-md-3">
<div class="bg-dark p-4 mb-2 mt-2 text-white text-center">
Discovery
</div>
<div class="bg-secondary p-4 mb-2 mt-2 text-white text-center">
Cluster groups
</div>
<div class="bg-secondary p-4 mb-2 mt-2 text-white text-center">
Sync and distribute resources
</div>
<div class="bg-primary p-4 mb-2 mt-2 text-white text-center">
DOSGi
</div>
</div>
<h2 class="pb-3 mb-4 pt-3 mt-4 font-italic">Key features</h2>
<div class="card-deck mb-3">
<div class="card">
<div class="card-body">
<h5 class="card-title text-dark">Discovery</h5>
<p class="card-text">Each Karaf node is discovered automatically by the others, supporting different mechanisms (multicast, unicast, whiteboard, ...).</p>
<p class="card-text"><small class="text-muted">Since 4.x</small></p>
</div>
</div>
<div class="card">
<div class="card-body">
<h5 class="card-title text-dark">Cluster groups</h5>
<p class="card-text">You can target the synchronization on a subset of nodes using cluster groups.</p>
<p class="card-text"><small class="text-muted">Since 4.x</small></p>
</div>
</div>
<div class="card">
<div class="card-body text-dark">
<h5 class="card-title">Sync and distribute resources</h5>
<p class="card-text">Cellar is able to synchronize and distribute applications (features, bundles, non-OSGi application), configuration, or local event.</p>
<p class="card-text"><small class="text-muted">Since 4.x</small></p>
</div>
</div>
<div class="card">
<div class="card-body text-dark">
<h5 class="card-title">DOSGi</h5>
<p class="card-text">Cellar support DOSGi (Distributed OSGi), allowing you to implement remote call between your applications.</p>
<p class="card-text"><small class="text-muted">Since 4.x</small></p>
</div>
</div>
</div>
<h2 class="pb-3 mb-4 pt-3 mt-4 font-italic">Extras</h2>
<!-- 4:3 aspect ratio -->
<div class="embed-responsive embed-responsive-16by9 w-75 d-flex justify-content-center">
<iframe class="embed-responsive-item" width="560" height="315" src="https://www.youtube.com/embed/Q-lreKSZMCs?rel=0&amp;showinfo=0" frameborder="0" allowfullscreen></iframe>
</div>
</div>
</div><!-- karaf-cellar -->
<div class="row pb-5 pt-5 border-bottom">
<div class="col-md-12">
<h5 class="project-heading">Manage your artifacts repositories with <span class="text-muted">Karaf Cave</span></h5>
<div class="pb-4 mb-3">
<p class="lead">Karaf Cave is an implementation of OSGi Repository specification. It can be used by the Karaf Features Resolver to provide resources, dealing with the requirements and capabilities of artifacts.</p>
<p>
<a class="btn btn-primary" href="/download.html" role="button">Download &raquo;</a>
<a class="btn btn-outline-primary" href="/documentation.html" role="button">Documentation &raquo;</a>
<a class="btn btn-outline-dark" href="https://github.com/apache/karaf-cave" role="button" target="_blank">View on GitHub &raquo;</a>
</p>
</div>
<h2 class="pb-3 mb-4 font-italic">Architecture</h2>
<div class="col-md-6 offset-md-3">
<div class="bg-dark p-4 mb-2 mt-2 text-white text-center">
Repository metadata
</div>
<div class="bg-secondary p-4 mb-2 mt-2 text-white text-center">
Repository proxy and populate
</div>
<div class="bg-secondary p-4 mb-2 mt-2 text-white text-center">
Maven support
</div>
<div class="bg-primary p-4 mb-2 mt-2 text-white text-center">
Storage
</div>
</div>
<h2 class="pb-3 mb-4 pt-3 mt-4 font-italic">Key features</h2>
<div class="card-deck mb-3">
<div class="card">
<div class="card-body">
<h5 class="card-title text-dark">Storage</h5>
<p class="card-text">Cave includes a pluggable storage back end.</p>
<p class="card-text"><small class="text-muted">Since 4.x</small></p>
</div>
</div>
<div class="card">
<div class="card-body">
<h5 class="card-title text-dark">Repository metadata</h5>
<p class="card-text">Cave is able to generate the metadata for a complete repository.</p>
<p class="card-text"><small class="text-muted">Since 4.x</small></p>
</div>
</div>
<div class="card">
<div class="card-body text-dark">
<h5 class="card-title">Maven support</h5>
<p class="card-text">Cave provides a complete Maven repository support.</p>
<p class="card-text"><small class="text-muted">Since 4.x</small></p>
</div>
</div>
<div class="card">
<div class="card-body text-dark">
<h5 class="card-title">Repository proxy and populate</h5>
<p class="card-text">In addition of a complete repository, Cave is able to proxy an existing repository, adding the metadata.</p>
<p class="card-text"><small class="text-muted">Since 4.x</small></p>
</div>
</div>
</div>
</div>
</div><!-- karaf-cave -->
<div class="row pb-5 pt-5 border-bottom">
<div class="col-md-12">
<h5 class="project-heading">Monitoring, alerting, and BAM with <span class="text-muted">Karaf Decanter</span></h5>
<div class="pb-4 mb-3">
<p class="lead">You need a monitoring solution for Karaf and related ? You need a BAM (Business Activity Monitoring) platform for your application ? Karaf Decanter can be very convenient for you !<br/>
Decanter provides ready to use monitoring solution. It's also completely extensible and customizable.</p>
<p>
<a class="btn btn-primary" href="/download.html" role="button">Download &raquo;</a>
<a class="btn btn-outline-primary" href="/documentation.html" role="button">Documentation &raquo;</a>
<a class="btn btn-outline-dark" href="https://github.com/apache/karaf-decanter" role="button" target="_blank">View on GitHub &raquo;</a>
</p>
<p>
You can learn more about Karaf Decanter in this ApacheCon talk slideshow by Jean-Baptiste Onofré : <a href="https://schd.ws/hosted_files/apachecon2016/33/Monitoring%20and%20Alerting%20with%20Apache%20Karaf%20Decanter.pdf">View presentation</a>
</p>
</div>
<h2 class="pb-3 mb-4 font-italic">Architecture</h2>
<div class="col-md-6 offset-md-3">
<div class="bg-dark p-4 mb-2 mt-2 text-white text-center">
Collectors
</div>
<div class="bg-secondary p-4 mb-2 mt-2 text-white text-center">
Dispatcher
</div>
<div class="bg-secondary p-4 mb-2 mt-2 text-white text-center">
SLA
</div>
<div class="bg-dark p-4 mb-2 mt-2 text-white text-center">
Appenders
</div>
</div>
<h2 class="pb-3 mb-4 pt-3 mt-4 font-italic">Key features</h2>
<div class="card-deck mb-3">
<div class="card">
<div class="card-body">
<h5 class="card-title text-dark">Collectors</h5>
<p class="card-text">The <strong>collectors</strong> harvest the monitored data (JMX metrics, log messages, ...).</p>
<p class="card-text"><small class="text-muted">Since 1.x</small></p>
</div>
</div>
<div class="card">
<div class="card-body">
<h5 class="card-title text-dark">Dispatcher</h5>
<p class="card-text">A <strong>dispatcher</strong> (powered by OSGi EventAdmin) forwarding the collected data to the appenders and SLA.</p>
<p class="card-text"><small class="text-muted">Since 1.x</small></p>
</div>
</div>
<div class="card">
<div class="card-body text-dark">
<h5 class="card-title">Appenders</h5>
<p class="card-text">The <strong>appenders</strong> receive the collected data and store data into a back end (elasticsearch, cassandra, JDBC, ...).</p>
<p class="card-text"><small class="text-muted">Since 1.x</small></p>
</div>
</div>
<div class="card">
<div class="card-body text-dark">
<h5 class="card-title">SLA</h5>
<p class="card-text"><strong>SLA</strong> (Service Level Agreement) is a special kind of appender, checking the collected data, and eventually raising an alert (to a back end).</p>
<p class="card-text"><small class="text-muted">Since 1.x</small></p>
</div>
</div>
</div>
</div><!-- karaf-decanter -->
</div><!-- /.container -->
</main>