-
Notifications
You must be signed in to change notification settings - Fork 38
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Update site documentation before release
- Loading branch information
1 parent
ffcd0da
commit f23099e
Showing
230 changed files
with
30,249 additions
and
10 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,323 @@ | ||
<!DOCTYPE html> | ||
<html class="no-js" lang="en"> | ||
|
||
<head> | ||
<title>Architecture · Otoroshi</title> | ||
<meta charset="utf-8"/> | ||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/> | ||
<meta name="description" content='otoroshi-manual'/> | ||
<link href="https://fonts.googleapis.com/css?family=Roboto:100normal,100italic,300normal,300italic,400normal,400italic,500normal,500italic,700normal,700italic,900normal,900italicc" rel="stylesheet" type="text/css"/> | ||
<script type="text/javascript" src="lib/jquery/jquery.min.js"></script> | ||
<script type="text/javascript" src="js/page.js"></script> | ||
<script type="text/javascript" src="js/groups.js"></script> | ||
<link rel="stylesheet" type="text/css" href="lib/normalize.css/normalize.css"/> | ||
<link rel="stylesheet" type="text/css" href="lib/foundation/dist/foundation.min.css"/> | ||
<link rel="stylesheet" type="text/css" href="css/page.css"/> | ||
|
||
<!-- | ||
<link rel="shortcut icon" href="images/favicon.ico" /> | ||
--> | ||
</head> | ||
|
||
<body> | ||
<div class="off-canvas-wrapper"> | ||
<div class="off-canvas-wrapper-inner" data-off-canvas-wrapper> | ||
|
||
<div class="off-canvas position-left" id="off-canvas-menu" data-off-canvas> | ||
<nav class="off-canvas-nav"> | ||
<div class="nav-home"> | ||
<a href="index.html" > | ||
<span class="home-icon">⌂</span>Otoroshi | ||
</a> | ||
<div class="version-number"> | ||
1.4.5 | ||
</div> | ||
</div> | ||
<div class="nav-toc"> | ||
<ul> | ||
<li><a href="about.html" class="page">About Otoroshi</a></li> | ||
<li><a href="archi.html" class="active page">Architecture</a></li> | ||
<li><a href="features.html" class="page">Features</a></li> | ||
<li><a href="quickstart.html" class="page">Try Otoroshi in 5 minutes</a></li> | ||
<li><a href="videos.html" class="page">Video tutorials</a></li> | ||
<li><a href="getotoroshi/index.html" class="page">Get Otoroshi</a> | ||
<ul> | ||
<li><a href="getotoroshi/fromsources.html" class="page">From sources</a></li> | ||
<li><a href="getotoroshi/frombinaries.html" class="page">From binaries</a></li> | ||
<li><a href="getotoroshi/fromdocker.html" class="page">From docker</a></li> | ||
</ul></li> | ||
<li><a href="firstrun/index.html" class="page">First run</a> | ||
<ul> | ||
<li><a href="firstrun/datastore.html" class="page">Choose your datastore</a></li> | ||
<li><a href="firstrun/configfile.html" class="page">Config. with files</a></li> | ||
<li><a href="firstrun/env.html" class="page">Config. with ENVs</a></li> | ||
<li><a href="firstrun/initialstate.html" class="page">Import initial state</a></li> | ||
<li><a href="firstrun/host.html" class="page">Setup your hosts</a></li> | ||
<li><a href="firstrun/run.html" class="page">Run Otoroshi</a></li> | ||
</ul></li> | ||
<li><a href="setup/index.html" class="page">Setup Otoroshi</a> | ||
<ul> | ||
<li><a href="setup/admin.html" class="page">Manage admin users</a></li> | ||
<li><a href="setup/dangerzone.html" class="page">Configure the Danger zone</a></li> | ||
</ul></li> | ||
<li><a href="usage/index.html" class="page">Using Otoroshi</a> | ||
<ul> | ||
<li><a href="usage/1-groups.html" class="page">Managing service groups</a></li> | ||
<li><a href="usage/2-services.html" class="page">Managing services</a></li> | ||
<li><a href="usage/3-apikeys.html" class="page">Managing API keys</a></li> | ||
<li><a href="usage/4-monitor.html" class="page">Monitoring services</a></li> | ||
<li><a href="usage/5-sessions.html" class="page">Managing sessions</a></li> | ||
<li><a href="usage/6-audit.html" class="page">Auditing Otoroshi</a></li> | ||
<li><a href="usage/7-metrics.html" class="page">Otoroshi global metrics</a></li> | ||
<li><a href="usage/8-importsexports.html" class="page">Import and export</a></li> | ||
<li><a href="usage/9-auth.html" class="page">Authentication</a></li> | ||
</ul></li> | ||
<li><a href="integrations/index.html" class="page">Third party Integrations</a> | ||
<ul> | ||
<li><a href="integrations/analytics.html" class="page">Analytics</a></li> | ||
<li><a href="integrations/mailgun.html" class="page">Mailgun</a></li> | ||
<li><a href="integrations/statsd.html" class="page">StatsD / Datadog</a></li> | ||
<li><a href="integrations/clevercloud.html" class="page">Clever Cloud</a></li> | ||
</ul></li> | ||
<li><a href="topics/index.html" class="page">Detailed topics</a> | ||
<ul> | ||
<li><a href="topics/snow-monkey.html" class="page">Chaos engineering with the Snow Monkey</a></li> | ||
<li><a href="topics/service-mesh.html" class="page">Service mesh with Otoroshi</a></li> | ||
<li><a href="topics/jwt-verifications.html" class="page">JWT Tokens verification</a></li> | ||
<li><a href="topics/ssl.html" class="page">SSL/TLS termination with Otoroshi</a></li> | ||
<li><a href="topics/mtls.html" class="page">Mutual TLS with Otoroshi</a></li> | ||
<li><a href="topics/clustering.html" class="page">Otoroshi clustering</a></li> | ||
<li><a href="topics/req-transformers.html" class="page">Request transformers</a></li> | ||
</ul></li> | ||
<li><a href="api.html" class="page">Admin REST API</a></li> | ||
<li><a href="embedding.html" class="page">Embedding Otoroshi</a></li> | ||
<li><a href="cli.html" class="page">Rust CLI</a></li> | ||
<li><a href="deploy/index.html" class="page">Deploy to production</a> | ||
<ul> | ||
<li><a href="deploy/clevercloud.html" class="page">Clever Cloud</a></li> | ||
<li><a href="deploy/other.html" class="page">Others</a></li> | ||
<li><a href="deploy/scaling.html" class="page">Scaling Otoroshi *</a></li> | ||
</ul></li> | ||
<li><a href="connectors/index.html" class="page">Connectors</a> | ||
<ul> | ||
<li><a href="connectors/clevercloud.html" class="page">Clever Cloud *</a></li> | ||
<li><a href="connectors/kubernetes.html" class="page">Kubernetes *</a></li> | ||
<li><a href="connectors/rancher.html" class="page">Rancher *</a></li> | ||
</ul></li> | ||
</ul> | ||
</div> | ||
|
||
</nav> | ||
</div> | ||
|
||
<div class="off-canvas-content" data-off-canvas-content> | ||
|
||
<header class="site-header expanded row"> | ||
<div class="small-12 column"> | ||
<a href="#" class="off-canvas-toggle hide-for-medium" data-toggle="off-canvas-menu"><svg class="svg-icon svg-icon-menu" version="1.1" id="Menu" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 20 20" enable-background="new 0 0 20 20" xml:space="preserve"> <path class="svg-icon-menu-path" fill="#53CDEC" d="M16.4,9H3.6C3.048,9,3,9.447,3,10c0,0.553,0.048,1,0.6,1H16.4c0.552,0,0.6-0.447,0.6-1C17,9.447,16.952,9,16.4,9z M16.4,13 | ||
H3.6C3.048,13,3,13.447,3,14c0,0.553,0.048,1,0.6,1H16.4c0.552,0,0.6-0.447,0.6-1C17,13.447,16.952,13,16.4,13z M3.6,7H16.4 | ||
C16.952,7,17,6.553,17,6c0-0.553-0.048-1-0.6-1H3.6C3.048,5,3,5.447,3,6C3,6.553,3.048,7,3.6,7z"/></svg> | ||
</a> | ||
<div class="title-wrapper"> | ||
<div class="title-logo"></div> | ||
<div class="title"><a href="index.html">Otoroshi</a></div> | ||
</div> | ||
<!-- | ||
<a href="https://www.example.com" class="logo show-for-medium">logo</a> | ||
--> | ||
</div> | ||
</header> | ||
|
||
<div class="expanded row"> | ||
|
||
<div class="medium-3 large-2 show-for-medium column"> | ||
<nav class="site-nav"> | ||
<div class="nav-home"> | ||
<a href="index.html" > | ||
<span class="home-icon">⌂</span>Otoroshi | ||
</a> | ||
<div class="version-number"> | ||
1.4.5 | ||
</div> | ||
</div> | ||
<div class="nav-toc"> | ||
<ul> | ||
<li><a href="about.html" class="page">About Otoroshi</a></li> | ||
<li><a href="archi.html" class="active page">Architecture</a></li> | ||
<li><a href="features.html" class="page">Features</a></li> | ||
<li><a href="quickstart.html" class="page">Try Otoroshi in 5 minutes</a></li> | ||
<li><a href="videos.html" class="page">Video tutorials</a></li> | ||
<li><a href="getotoroshi/index.html" class="page">Get Otoroshi</a> | ||
<ul> | ||
<li><a href="getotoroshi/fromsources.html" class="page">From sources</a></li> | ||
<li><a href="getotoroshi/frombinaries.html" class="page">From binaries</a></li> | ||
<li><a href="getotoroshi/fromdocker.html" class="page">From docker</a></li> | ||
</ul></li> | ||
<li><a href="firstrun/index.html" class="page">First run</a> | ||
<ul> | ||
<li><a href="firstrun/datastore.html" class="page">Choose your datastore</a></li> | ||
<li><a href="firstrun/configfile.html" class="page">Config. with files</a></li> | ||
<li><a href="firstrun/env.html" class="page">Config. with ENVs</a></li> | ||
<li><a href="firstrun/initialstate.html" class="page">Import initial state</a></li> | ||
<li><a href="firstrun/host.html" class="page">Setup your hosts</a></li> | ||
<li><a href="firstrun/run.html" class="page">Run Otoroshi</a></li> | ||
</ul></li> | ||
<li><a href="setup/index.html" class="page">Setup Otoroshi</a> | ||
<ul> | ||
<li><a href="setup/admin.html" class="page">Manage admin users</a></li> | ||
<li><a href="setup/dangerzone.html" class="page">Configure the Danger zone</a></li> | ||
</ul></li> | ||
<li><a href="usage/index.html" class="page">Using Otoroshi</a> | ||
<ul> | ||
<li><a href="usage/1-groups.html" class="page">Managing service groups</a></li> | ||
<li><a href="usage/2-services.html" class="page">Managing services</a></li> | ||
<li><a href="usage/3-apikeys.html" class="page">Managing API keys</a></li> | ||
<li><a href="usage/4-monitor.html" class="page">Monitoring services</a></li> | ||
<li><a href="usage/5-sessions.html" class="page">Managing sessions</a></li> | ||
<li><a href="usage/6-audit.html" class="page">Auditing Otoroshi</a></li> | ||
<li><a href="usage/7-metrics.html" class="page">Otoroshi global metrics</a></li> | ||
<li><a href="usage/8-importsexports.html" class="page">Import and export</a></li> | ||
<li><a href="usage/9-auth.html" class="page">Authentication</a></li> | ||
</ul></li> | ||
<li><a href="integrations/index.html" class="page">Third party Integrations</a> | ||
<ul> | ||
<li><a href="integrations/analytics.html" class="page">Analytics</a></li> | ||
<li><a href="integrations/mailgun.html" class="page">Mailgun</a></li> | ||
<li><a href="integrations/statsd.html" class="page">StatsD / Datadog</a></li> | ||
<li><a href="integrations/clevercloud.html" class="page">Clever Cloud</a></li> | ||
</ul></li> | ||
<li><a href="topics/index.html" class="page">Detailed topics</a> | ||
<ul> | ||
<li><a href="topics/snow-monkey.html" class="page">Chaos engineering with the Snow Monkey</a></li> | ||
<li><a href="topics/service-mesh.html" class="page">Service mesh with Otoroshi</a></li> | ||
<li><a href="topics/jwt-verifications.html" class="page">JWT Tokens verification</a></li> | ||
<li><a href="topics/ssl.html" class="page">SSL/TLS termination with Otoroshi</a></li> | ||
<li><a href="topics/mtls.html" class="page">Mutual TLS with Otoroshi</a></li> | ||
<li><a href="topics/clustering.html" class="page">Otoroshi clustering</a></li> | ||
<li><a href="topics/req-transformers.html" class="page">Request transformers</a></li> | ||
</ul></li> | ||
<li><a href="api.html" class="page">Admin REST API</a></li> | ||
<li><a href="embedding.html" class="page">Embedding Otoroshi</a></li> | ||
<li><a href="cli.html" class="page">Rust CLI</a></li> | ||
<li><a href="deploy/index.html" class="page">Deploy to production</a> | ||
<ul> | ||
<li><a href="deploy/clevercloud.html" class="page">Clever Cloud</a></li> | ||
<li><a href="deploy/other.html" class="page">Others</a></li> | ||
<li><a href="deploy/scaling.html" class="page">Scaling Otoroshi *</a></li> | ||
</ul></li> | ||
<li><a href="connectors/index.html" class="page">Connectors</a> | ||
<ul> | ||
<li><a href="connectors/clevercloud.html" class="page">Clever Cloud *</a></li> | ||
<li><a href="connectors/kubernetes.html" class="page">Kubernetes *</a></li> | ||
<li><a href="connectors/rancher.html" class="page">Rancher *</a></li> | ||
</ul></li> | ||
</ul> | ||
</div> | ||
|
||
</nav> | ||
</div> | ||
|
||
<div class="small-12 medium-9 large-10 column"> | ||
<section class="site-content"> | ||
|
||
<div class="page-header row"> | ||
<div class="medium-12 show-for-medium column"> | ||
<div class="nav-breadcrumbs"> | ||
<ul> | ||
<li><a href="index.html">Otoroshi</a></li> | ||
<li>Architecture</li> | ||
</ul> | ||
</div> | ||
</div> | ||
</div> | ||
|
||
<div class="page-content row"> | ||
<div class="small-12 large-9 column" id="docs"> | ||
<h1><a href="#architecture" name="architecture" class="anchor"><span class="anchor-link"></span></a>Architecture</h1> | ||
<p>When we started the development of Otoroshi, we had several classical patterns in mind like <code>Service gateway</code>, <code>Service locator</code>, <code>Circuit breakers</code>, etc …</p> | ||
<p>At start we thought about providing a bunch of librairies that would be included in each microservice or app to perform these tasks. But the more we were thinking about it, the more it was feeling weird, unagile, etc, it also prevented us to use any technical stack we wanted to use. So we decided to change our approach to something more universal.</p> | ||
<p>We chose to make Otoroshi the central part of our microservices system, something between a reverse-proxy, a service gateway and a service locator where each call to a microservice (even from another microservice) must pass through Otoroshi. There are multiple benefits to do that, each call can be logged, audited, monitored, integrated with a circuit breaker, etc without imposing libraries and technical stack. Any service is exposed through its own domain and we rely only on DNS to handle the service location part. Any access to a service is secured by default with an api key and is supervised by a circuit breaker to avoid cascading failures.</p><div class="centered-img"> | ||
<img src="./img/architecture-1-bis.png" /></div> | ||
<p>Otoroshi tries to embrace our <a href="about.html#philosophy">global philosophy</a> by providing a full featured REST admin api, a gorgeous admin dashboard written in <a href="https://reactjs.org/">React</a> that uses the api, by generating traffic events, alerts events, audit events that can be consumed by several channels. Otoroshi also supports a bunch of datastores to better match with different use cases.</p><div class="centered-img"> | ||
<img src="./img/architecture-2-bis.png" /></div> | ||
<div class="nav-next"> | ||
<p><strong>Next:</strong> <a href="features.html">Features</a></p> | ||
</div> | ||
</div> | ||
<div class="large-3 show-for-large column" data-sticky-container> | ||
</div> | ||
</div> | ||
|
||
</section> | ||
</div> | ||
|
||
</div> | ||
|
||
<footer class="site-footer"> | ||
|
||
<section class="site-footer-nav"> | ||
<div class="expanded row"> | ||
<div class="small-12 large-offset-2 large-10 column"> | ||
<div class="row site-footer-content"> | ||
|
||
<div class="small-12 medium-4 large-3 text-center column"> | ||
<div class="nav-links"> | ||
<ul> | ||
<!-- <li><a href="https://www.example.com/products/">Products</a> --> | ||
</ul> | ||
</div> | ||
</div> | ||
|
||
</div> | ||
</div> | ||
</div> | ||
</section> | ||
|
||
<section class="site-footer-base"> | ||
<div class="expanded row"> | ||
<div class="small-12 large-offset-2 large-10 column"> | ||
<div class="row site-footer-content"> | ||
|
||
<div class="small-12 text-center large-9 column"> | ||
|
||
<!-- | ||
<div class="copyright"> | ||
<span class="text">© 2019</span> | ||
<a href="https://www.example.com" class="logo">logo</a> | ||
</div> | ||
--> | ||
</div> | ||
|
||
</div> | ||
</div> | ||
</div> | ||
</section> | ||
</footer> | ||
|
||
</div> | ||
</div> | ||
</div> | ||
</body> | ||
|
||
<script type="text/javascript" src="lib/foundation/dist/foundation.min.js"></script> | ||
<script type="text/javascript">jQuery(document).foundation();</script> | ||
<script type="text/javascript" src="js/magellan.js"></script> | ||
|
||
<style type="text/css">@import "lib/prettify/prettify.css";</style> | ||
<script type="text/javascript" src="lib/prettify/prettify.js"></script> | ||
<script type="text/javascript" src="lib/prettify/lang-scala.js"></script> | ||
<script type="text/javascript">jQuery(function(){window.prettyPrint && prettyPrint()});</script> | ||
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/elasticlunr/0.9.5/elasticlunr.js"></script> | ||
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-112498312-1"></script> | ||
<script> | ||
window.dataLayer = window.dataLayer || []; | ||
function gtag(){dataLayer.push(arguments);} | ||
gtag('js', new Date()); | ||
|
||
gtag('config', 'UA-112498312-1'); | ||
</script> | ||
</html> | ||
|
||
|
||
|
||
|
Oops, something went wrong.