Skip to content

Commit

Permalink
Update site documentation before release
Browse files Browse the repository at this point in the history
  • Loading branch information
mathieuancelin committed Mar 8, 2019
1 parent 53a36a0 commit 092ab9a
Show file tree
Hide file tree
Showing 255 changed files with 31,395 additions and 11 deletions.
346 changes: 346 additions & 0 deletions docs/manual/about.html

Large diffs are not rendered by default.

347 changes: 347 additions & 0 deletions docs/manual/api.html

Large diffs are not rendered by default.

325 changes: 325 additions & 0 deletions docs/manual/archi.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,325 @@
<!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.7
</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/aws-beanstalk.html" class="page">AWS - Elastic Beanstalk</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.7
</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/aws-beanstalk.html" class="page">AWS - Elastic Beanstalk</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 &hellip;</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">&copy; 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>




Loading

0 comments on commit 092ab9a

Please sign in to comment.