This commit is contained in:
Shriram Rajagopalan 2017-04-20 10:50:17 -04:00
commit 7d9c4325ad
29 changed files with 888 additions and 461 deletions

7
.gitignore vendored Normal file
View File

@ -0,0 +1,7 @@
_site
# Eclipse artifacts
.project
.pydevproject
*.iml
.idea/

View File

@ -1,129 +1,203 @@
GEM
remote: https://rubygems.org/
specs:
RedCloth (4.2.9)
activesupport (4.2.1)
activesupport (4.2.7)
i18n (~> 0.7)
json (~> 1.7, >= 1.7.7)
minitest (~> 5.1)
thread_safe (~> 0.3, >= 0.3.4)
tzinfo (~> 1.1)
blankslate (2.1.2.4)
celluloid (0.16.0)
timers (~> 4.0.0)
classifier-reborn (2.0.3)
fast-stemmer (~> 1.0)
addressable (2.5.1)
public_suffix (~> 2.0, >= 2.0.2)
coffee-script (2.4.1)
coffee-script-source
execjs
coffee-script-source (1.9.1.1)
colorator (0.1)
execjs (2.5.2)
fast-stemmer (1.0.2)
ffi (1.9.8)
gemoji (2.1.0)
github-pages (34)
RedCloth (= 4.2.9)
github-pages-health-check (~> 0.2)
jekyll (= 2.4.0)
coffee-script-source (1.12.2)
colorator (1.1.0)
ethon (0.10.1)
ffi (>= 1.3.0)
execjs (2.7.0)
faraday (0.12.0.1)
multipart-post (>= 1.2, < 3)
ffi (1.9.18)
forwardable-extended (2.6.0)
gemoji (3.0.0)
github-pages (134)
activesupport (= 4.2.7)
github-pages-health-check (= 1.3.3)
jekyll (= 3.4.3)
jekyll-avatar (= 0.4.2)
jekyll-coffeescript (= 1.0.1)
jekyll-mentions (= 0.2.1)
jekyll-redirect-from (= 0.6.2)
jekyll-sass-converter (= 1.2.0)
jekyll-sitemap (= 0.8.1)
jemoji (= 0.4.0)
kramdown (= 1.5.0)
liquid (= 2.6.1)
maruku (= 0.7.0)
jekyll-default-layout (= 0.1.4)
jekyll-feed (= 0.9.2)
jekyll-gist (= 1.4.0)
jekyll-github-metadata (= 2.3.1)
jekyll-mentions (= 1.2.0)
jekyll-optional-front-matter (= 0.1.2)
jekyll-paginate (= 1.1.0)
jekyll-readme-index (= 0.1.0)
jekyll-redirect-from (= 0.12.1)
jekyll-relative-links (= 0.4.0)
jekyll-sass-converter (= 1.5.0)
jekyll-seo-tag (= 2.2.0)
jekyll-sitemap (= 1.0.0)
jekyll-swiss (= 0.4.0)
jekyll-theme-architect (= 0.0.4)
jekyll-theme-cayman (= 0.0.4)
jekyll-theme-dinky (= 0.0.4)
jekyll-theme-hacker (= 0.0.4)
jekyll-theme-leap-day (= 0.0.4)
jekyll-theme-merlot (= 0.0.4)
jekyll-theme-midnight (= 0.0.4)
jekyll-theme-minimal (= 0.0.4)
jekyll-theme-modernist (= 0.0.4)
jekyll-theme-primer (= 0.1.8)
jekyll-theme-slate (= 0.0.4)
jekyll-theme-tactile (= 0.0.4)
jekyll-theme-time-machine (= 0.0.4)
jekyll-titles-from-headings (= 0.1.5)
jemoji (= 0.8.0)
kramdown (= 1.13.2)
liquid (= 3.0.6)
listen (= 3.0.6)
mercenary (~> 0.3)
pygments.rb (= 0.6.1)
rdiscount (= 2.1.7)
redcarpet (= 3.1.2)
minima (= 2.0.0)
rouge (= 1.11.1)
terminal-table (~> 1.4)
github-pages-health-check (0.3.0)
net-dns (~> 0.6)
public_suffix (~> 1.4)
hitimes (1.2.2)
html-pipeline (1.9.0)
github-pages-health-check (1.3.3)
addressable (~> 2.3)
net-dns (~> 0.8)
octokit (~> 4.0)
public_suffix (~> 2.0)
typhoeus (~> 0.7)
html-pipeline (2.5.0)
activesupport (>= 2)
nokogiri (~> 1.4)
i18n (0.7.0)
jekyll (2.4.0)
classifier-reborn (~> 2.0)
colorator (~> 0.1)
jekyll-coffeescript (~> 1.0)
jekyll-gist (~> 1.0)
jekyll-paginate (~> 1.0)
nokogiri (>= 1.4)
i18n (0.8.1)
jekyll (3.4.3)
addressable (~> 2.4)
colorator (~> 1.0)
jekyll-sass-converter (~> 1.0)
jekyll-watch (~> 1.1)
kramdown (~> 1.3)
liquid (~> 2.6.1)
liquid (~> 3.0)
mercenary (~> 0.3.3)
pygments.rb (~> 0.6.0)
redcarpet (~> 3.1)
pathutil (~> 0.9)
rouge (~> 1.7)
safe_yaml (~> 1.0)
toml (~> 0.1.0)
jekyll-avatar (0.4.2)
jekyll (~> 3.0)
jekyll-coffeescript (1.0.1)
coffee-script (~> 2.2)
jekyll-gist (1.2.1)
jekyll-mentions (0.2.1)
html-pipeline (~> 1.9.0)
jekyll (~> 2.0)
jekyll-default-layout (0.1.4)
jekyll (~> 3.0)
jekyll-feed (0.9.2)
jekyll (~> 3.3)
jekyll-gist (1.4.0)
octokit (~> 4.2)
jekyll-github-metadata (2.3.1)
jekyll (~> 3.1)
octokit (~> 4.0, != 4.4.0)
jekyll-include-cache (0.1.0)
jekyll (~> 3.3)
jekyll-mentions (1.2.0)
activesupport (~> 4.0)
html-pipeline (~> 2.3)
jekyll (~> 3.0)
jekyll-optional-front-matter (0.1.2)
jekyll (~> 3.0)
jekyll-paginate (1.1.0)
jekyll-redirect-from (0.6.2)
jekyll (~> 2.0)
jekyll-sass-converter (1.2.0)
sass (~> 3.2)
jekyll-sitemap (0.8.1)
jekyll-watch (1.2.1)
listen (~> 2.7)
jemoji (0.4.0)
gemoji (~> 2.0)
html-pipeline (~> 1.9)
jekyll (~> 2.0)
json (1.8.2)
kramdown (1.5.0)
liquid (2.6.1)
listen (2.10.0)
celluloid (~> 0.16.0)
jekyll-readme-index (0.1.0)
jekyll (~> 3.0)
jekyll-redirect-from (0.12.1)
jekyll (~> 3.3)
jekyll-relative-links (0.4.0)
jekyll (~> 3.3)
jekyll-sass-converter (1.5.0)
sass (~> 3.4)
jekyll-seo-tag (2.2.0)
jekyll (~> 3.3)
jekyll-sitemap (1.0.0)
jekyll (~> 3.3)
jekyll-swiss (0.4.0)
jekyll-theme-architect (0.0.4)
jekyll (~> 3.3)
jekyll-theme-cayman (0.0.4)
jekyll (~> 3.3)
jekyll-theme-dinky (0.0.4)
jekyll (~> 3.3)
jekyll-theme-hacker (0.0.4)
jekyll (~> 3.3)
jekyll-theme-leap-day (0.0.4)
jekyll (~> 3.3)
jekyll-theme-merlot (0.0.4)
jekyll (~> 3.3)
jekyll-theme-midnight (0.0.4)
jekyll (~> 3.3)
jekyll-theme-minimal (0.0.4)
jekyll (~> 3.3)
jekyll-theme-modernist (0.0.4)
jekyll (~> 3.3)
jekyll-theme-primer (0.1.8)
jekyll (~> 3.3)
jekyll-theme-slate (0.0.4)
jekyll (~> 3.3)
jekyll-theme-tactile (0.0.4)
jekyll (~> 3.3)
jekyll-theme-time-machine (0.0.4)
jekyll (~> 3.3)
jekyll-titles-from-headings (0.1.5)
jekyll (~> 3.3)
jekyll-watch (1.5.0)
listen (~> 3.0, < 3.1)
jemoji (0.8.0)
activesupport (~> 4.0)
gemoji (~> 3.0)
html-pipeline (~> 2.2)
jekyll (>= 3.0)
json (1.8.6)
kramdown (1.13.2)
liquid (3.0.6)
listen (3.0.6)
rb-fsevent (>= 0.9.3)
rb-inotify (>= 0.9)
maruku (0.7.0)
mercenary (0.3.5)
mini_portile (0.6.2)
minitest (5.6.1)
rb-inotify (>= 0.9.7)
mercenary (0.3.6)
mini_portile2 (2.1.0)
minima (2.0.0)
minitest (5.10.1)
multipart-post (2.0.0)
net-dns (0.8.0)
nokogiri (1.6.6.2)
mini_portile (~> 0.6.0)
parslet (1.5.0)
blankslate (~> 2.0)
posix-spawn (0.3.11)
public_suffix (1.5.1)
pygments.rb (0.6.1)
posix-spawn (~> 0.3.6)
yajl-ruby (~> 1.2.0)
rb-fsevent (0.9.4)
rb-inotify (0.9.5)
nokogiri (1.6.8.1)
mini_portile2 (~> 2.1.0)
octokit (4.7.0)
sawyer (~> 0.8.0, >= 0.5.3)
pathutil (0.14.0)
forwardable-extended (~> 2.6)
public_suffix (2.0.5)
rb-fsevent (0.9.8)
rb-inotify (0.9.8)
ffi (>= 0.5.0)
rdiscount (2.1.7)
redcarpet (3.1.2)
rouge (1.11.1)
safe_yaml (1.0.4)
sass (3.4.13)
terminal-table (1.4.5)
thread_safe (0.3.5)
timers (4.0.1)
hitimes
toml (0.1.2)
parslet (~> 1.5.0)
tzinfo (1.2.2)
sass (3.4.23)
sawyer (0.8.1)
addressable (>= 2.3.5, < 2.6)
faraday (~> 0.8, < 1.0)
terminal-table (1.7.3)
unicode-display_width (~> 1.1.1)
thread_safe (0.3.6)
typhoeus (0.8.0)
ethon (>= 0.8.0)
tzinfo (1.2.3)
thread_safe (~> 0.1)
yajl-ruby (1.2.1)
unicode-display_width (1.1.3)
PLATFORMS
ruby
DEPENDENCIES
github-pages
jekyll-include-cache (~> 0.1)
BUNDLED WITH
1.10.5
1.14.6

View File

@ -9,3 +9,9 @@ see the Istio [contribution guidelines](https://github.com/istio/istio/blob/mast
The website uses [Jekyll](http://jekyllrb.com/) templates and is hosted on GitHub Pages. Please make sure you are
familiar with these before editing.
To run the site locally with Docker, use the following command:
```bash
docker run --rm --label=jekyll --volume=$(pwd):/srv/jekyll -it -p 127.0.0.1:4000:4000 jekyll/jekyll jekyll serve
```

View File

@ -1,18 +1,13 @@
<div class="container">
<div class="row">
<div class="col-md-11 nofloat center-block">
<ul class="col-sm-10 doc-nav">
{% assign current = page.url | downcase | split: '/' %}
<li class="tab docs-tab"><a href="{{ site.baseurl }}/docs/">Docs</a></li>
<span class="doc-caret">></span>
<li class="tab"><a href="{{ site.baseurl }}/docs/" {% if page.url == '/docs/' %}class='current'{% endif %}>Home</a></li>
<li class="tab"><a href="{{ site.baseurl }}/docs/concepts" {% if current[2] == 'concepts' %}class='current'{% endif %}>Concepts</a></li>
<li class="tab"><a href="{{ site.baseurl }}/docs/tasks" {% if current[2] == 'tasks' %}class='current'{% endif %}>Tasks</a></li>
<!--
<li class="tab"><a href="{{ site.baseurl }}/docs/tutorials" {% if current[2] == 'tutorials' %}class='current'{% endif %}>Tutorials</a></li>
-->
<li class="tab"><a href="{{ site.baseurl }}/docs/samples" {% if current[2] == 'samples' %}class='current'{% endif %}>Samples</a></li>
<li class="tab"><a href="{{ site.baseurl }}/docs/reference" {% if current[2] == 'reference' %}class='current'{% endif %}>Reference</a></li>
<div class="col-md-11 nofloat center-block" style="margin-top: 3px;">
<ul class="col-sm-10 nav nav-tabs">
{% assign active = page.url | downcase | split: '/' %}
<li role="presentation" {% if page.url == '/docs/' %}class='active'{% endif %}><a href="{{ site.baseurl }}/docs/">Welcome</a></li>
<li role="presentation" {% if active[2] == 'concepts' %}class='active'{% endif %}><a href="{{ site.baseurl }}/docs/concepts">Concepts</a></li>
<li role="presentation" {% if active[2] == 'tasks' %}class='active'{% endif %}><a href="{{ site.baseurl }}/docs/tasks">Tasks</a></li>
<li role="presentation" {% if active[2] == 'samples' %}class='active'{% endif %}><a href="{{ site.baseurl }}/docs/samples">Samples</a></li>
<li role="presentation" {% if active[2] == 'reference' %}class='active'{% endif %}><a href="{{ site.baseurl }}/docs/reference">Reference</a></li>
</ul>
{% include contribute-links.html %}
</div>

View File

@ -1,3 +1,4 @@
<ul class="doc-side-nav doc-side-nav-home">
{% assign current = page.url | downcase | split: '/' %}
<li><h5 class="doc-side-nav-title">Welcome</h5></li>
</ul>

View File

@ -6,7 +6,7 @@
<div class="right-links">
<div class="col-md-3 col-sm-3 col-xs-12 footer-documentation">
<ul class="toggle">
<p class="right-link-headers">Documentation</p>
<p class="right-link-headers">Docs</p>
<li><a href="{{ site.baseurl }}/docs/"><p>Home</p></a></li>
<li><a href="{{ site.baseurl }}/docs/concepts"><p>Concepts</p></a></li>
<li><a href="{{ site.baseurl }}/docs/tasks"><p>Tasks</p></a></li>

View File

@ -4,6 +4,7 @@
<div class="col-md-11 nofloat center-block">
<a class="col-xs-2" href="{{ site.baseurl }}/">
<img class="nav-logo" src="{{ site.baseurl }}/img/logo.png" alt="Istio">
<span class="page-headline">Istio</span>
</a>
<div class="col-xs-2 col-xs-offset-8">

View File

@ -1,3 +1,7 @@
---
layout: compress
---
<!DOCTYPE html>
<html lang="en" itemscope itemtype="https://schema.org/WebPage">
<head>

10
_layouts/compress.html Normal file
View File

@ -0,0 +1,10 @@
---
# Jekyll layout that compresses HTML
# v3.0.2
# http://jch.penibelst.de/
# © 20142015 Anatol Broder
# MIT License
---
{% capture _LINE_FEED %}
{% endcapture %}{% if site.compress_html.ignore.envs contains jekyll.environment %}{{ content }}{% else %}{% capture _content %}{{ content }}{% endcapture %}{% assign _profile = site.compress_html.profile %}{% if site.compress_html.endings == "all" %}{% assign _endings = "html head body li dt dd p rt rp optgroup option colgroup caption thead tbody tfoot tr td th" | split: " " %}{% else %}{% assign _endings = site.compress_html.endings %}{% endif %}{% for _element in _endings %}{% capture _end %}</{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _end %}{% endfor %}{% if _profile and _endings %}{% assign _profile_endings = _content | size | plus: 1 %}{% endif %}{% for _element in site.compress_html.startings %}{% capture _start %}<{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _start %}{% endfor %}{% if _profile and site.compress_html.startings %}{% assign _profile_startings = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.comments == "all" %}{% assign _comments = "<!-- -->" | split: " " %}{% else %}{% assign _comments = site.compress_html.comments %}{% endif %}{% if _comments.size == 2 %}{% capture _comment_befores %}.{{ _content }}{% endcapture %}{% assign _comment_befores = _comment_befores | split: _comments.first %}{% for _comment_before in _comment_befores %}{% if forloop.first %}{% continue %}{% endif %}{% capture _comment_outside %}{% if _carry %}{{ _comments.first }}{% endif %}{{ _comment_before }}{% endcapture %}{% capture _comment %}{% unless _carry %}{{ _comments.first }}{% endunless %}{{ _comment_outside | split: _comments.last | first }}{% if _comment_outside contains _comments.last %}{{ _comments.last }}{% assign _carry = false %}{% else %}{% assign _carry = true %}{% endif %}{% endcapture %}{% assign _content = _content | remove_first: _comment %}{% endfor %}{% if _profile %}{% assign _profile_comments = _content | size | plus: 1 %}{% endif %}{% endif %}{% assign _pre_befores = _content | split: "<pre" %}{% assign _content = "" %}{% for _pre_before in _pre_befores %}{% assign _pres = _pre_before | split: "</pre>" %}{% assign _pres_after = "" %}{% if _pres.size != 0 %}{% if site.compress_html.blanklines %}{% assign _lines = _pres.last | split: _LINE_FEED %}{% capture _pres_after %}{% for _line in _lines %}{% assign _trimmed = _line | split: " " | join: " " %}{% if _trimmed != empty or forloop.last %}{% unless forloop.first %}{{ _LINE_FEED }}{% endunless %}{{ _line }}{% endif %}{% endfor %}{% endcapture %}{% else %}{% assign _pres_after = _pres.last | split: " " | join: " " %}{% endif %}{% endif %}{% capture _content %}{{ _content }}{% if _pre_before contains "</pre>" %}<pre{{ _pres.first }}</pre>{% endif %}{% unless _pre_before contains "</pre>" and _pres.size == 1 %}{{ _pres_after }}{% endunless %}{% endcapture %}{% endfor %}{% if _profile %}{% assign _profile_collapse = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.clippings == "all" %}{% assign _clippings = "html head title base link meta style body article section nav aside h1 h2 h3 h4 h5 h6 hgroup header footer address p hr blockquote ol ul li dl dt dd figure figcaption main div table caption colgroup col tbody thead tfoot tr td th" | split: " " %}{% else %}{% assign _clippings = site.compress_html.clippings %}{% endif %}{% for _element in _clippings %}{% assign _edges = " <e;<e; </e>;</e>;</e> ;</e>" | replace: "e", _element | split: ";" %}{% assign _content = _content | replace: _edges[0], _edges[1] | replace: _edges[2], _edges[3] | replace: _edges[4], _edges[5] %}{% endfor %}{% if _profile and _clippings %}{% assign _profile_clippings = _content | size | plus: 1 %}{% endif %}{{ _content }}{% if _profile %} <table id="compress_html_profile_{{ site.time | date: "%Y%m%d" }}" class="compress_html_profile"> <thead> <tr> <td>Step <td>Bytes <tbody> <tr> <td>raw <td>{{ content | size }}{% if _profile_endings %} <tr> <td>endings <td>{{ _profile_endings }}{% endif %}{% if _profile_startings %} <tr> <td>startings <td>{{ _profile_startings }}{% endif %}{% if _profile_comments %} <tr> <td>comments <td>{{ _profile_comments }}{% endif %}{% if _profile_collapse %} <tr> <td>collapse <td>{{ _profile_collapse }}{% endif %}{% if _profile_clippings %} <tr> <td>clippings <td>{{ _profile_clippings }}{% endif %} </table>{% endif %}{% endif %}

View File

@ -18,7 +18,7 @@ bodyclass: docs
{{ content }}
</div>
<div id="toc" class="toc col-sm-2">
<div id="toc" class="toc">
</div>
</div>
</div>

View File

@ -1,14 +1,13 @@
// Brand Colors
$mainBrandColor: #466BB0; //#2DA6B0;
$secondBrandColor: #286AC7; //#01959f;
$thirdBrandColor: #98B2E0; //#E7F3F4;
$mainBrandColor: #466BB0;
$secondBrandColor: #286AC7;
$thirdBrandColor: #98B2E0;
$inverseBrandColor: #FFFFFF;
// Use as an accent color in small quantities to balance out the main theme.
$popBrandColor: hsl(3, 90%, 75%);
$lightPopBrandColor: lighten($popBrandColor, 15%);
// General Colors
$black: #2E2E2E;
$white: #FFFFFF;
@ -16,13 +15,12 @@ $gray: #737373;
$light-gray: lighten($gray, 52%);
$dark-gray: darken($gray, 20%);
$linkColor: $mainBrandColor;
$linkHoverColor: darken($linkColor, 10%);
$linkColorSecondary: $white;
$linkColorTertiary: $gray;
$codeColor: darken($linkColor, 20%);
$codeBkColor: $thirdBrandColor; //#ebfaf8;
$codeBkColor: lighten($thirdBrandColor, 10%);
$wellColor: #F9F9F9;
$textColor: #535f61;
$titleColor: #555555;

View File

@ -33,20 +33,24 @@
border-left: 2px solid $light-gray;
display: none !important;
padding: 0;
position: absolute;
right: 45px;
margin-top: 10px;
@media (min-width: 768px) {
display: block !important;
margin-left: 20px;
}
ul {
list-style-type: none !important;
padding-left: 10px;
font-size: 12px;
font-weight: 500;
font-size: 90%; //12px;
//font-weight: 500;
ul {
font-weight: 400;
font-size: 11px;
//font-weight: 400;
font-size: 90%; //11px;
}
a {

View File

@ -56,7 +56,7 @@ pre, pre.prettyprint {
background-color: $codeBkColor;
color: #000000;
border: none !important;
font-size: 14px !important;
//font-size: 14px !important;
padding: 9.5px !important;
}

View File

@ -1,3 +1,12 @@
// Bootstrap override - looks like this is missing?
.nav-tabs>li.active>a {
margin-right: 2px;
line-height: 1.42857143;
border: 1px solid #ddd;
border-bottom-color: transparent;
border-radius: 4px 4px 0 0;
}
// Documentation Navigation Bar
.doc-nav {
display: block;
@ -57,7 +66,7 @@
// Documentation Side Navigation
.doc-side-nav {
background-color: $light-gray;
//background-color: $light-gray;
margin-bottom: 20px;
@media (min-width: $tablet) {
@ -67,11 +76,13 @@
// Add caret to current page
.current:before{
content: '> ';
//content: '> ';
background-color: $gray;
}
.doc-side-nav-title {
padding: $spacing--s;
font-weight: bold;
}
.doc-side-nav-list-item {
@ -80,15 +91,16 @@
width: 100%;
a {
font-size: 13px;
color: $dark-gray;
//font-size: 13px;
//color: $dark-gray;
font-weight: 400;
}
}
h6 {
color: $dark-gray;
font-size: 13px;
color: $mainBrandColor; //$dark-gray;
font-size: 100%; // hack
font-weight: 400;
line-height: 22px;
}
@ -99,13 +111,18 @@
.submenu-link {
display: block;
font-size: 12px;
font-size: 100%;
font-weight: 400;
line-height: 22px;
color: $gray;
color: $mainBrandColor; //$gray;
&.active:before {
margin-left: -0.80em;
content: '> ';
}
&.active {
line-height: 30px;
}
}
}

View File

@ -1,6 +1,6 @@
// Footer
footer {
background-color: $footerColor;
background: linear-gradient(to right, $mainBrandColor, $secondBrandColor);
box-shadow: 0px 500px 0px 500px $footerColor;
color: $white;
overflow: hidden;

View File

@ -1,7 +1,6 @@
// Background for nav and hero
.nav-hero-container {
//background: url('../img/hero-bg.png') no-repeat center/cover;
background: $mainBrandColor no-repeat center/cover;
background: $mainBrandColor linear-gradient(to right, $mainBrandColor, $secondBrandColor) no-repeat center/cover;
z-index: 9010;
position: relative;
}

View File

@ -199,12 +199,12 @@
// Sticky Nav
#sticky-nav{
@extend #common-nav;
//background: url('../img/hero-bg.png') no-repeat center/cover;
background: $mainBrandColor no-repeat center/cover;
background: $mainBrandColor no-repeat center/cover;
position: fixed;
width: 100%;
z-index: 9000;
top: -61px;
padding-bottom: 10px;
transition: $transition--secondary;
&.on-page {
top: 0;

View File

@ -51,16 +51,28 @@
}
.landing-image {
height: auto;
max-width: 300px;
max-width: 500px;
object-fit: contain;
object-position: top;
@media (min-width: $tablet) {
max-width: initial;
//max-width: initial;
padding-bottom: 50px;
}
}
.landing-image-small {
height: auto;
max-width: 250px;
object-fit: contain;
object-position: top;
@media (min-width: $tablet) {
//max-width: initial;
padding-bottom: 50px;
}
}
.btn-read-more {
margin: 30px 0 40px;
}

View File

@ -12,7 +12,7 @@ headline: 'Our Community'
<div class="community col-lg-9 col-md-10 col-sm-12">
<section class="lead">
<p>
Istio has an active community that supports its use and on-going development. We'd love for you
Istio is an open source project with an active community that supports its use and on-going development. We'd love for you
to join us and get involved!
</p>
</section>

View File

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 62 KiB

View File

Before

Width:  |  Height:  |  Size: 348 KiB

After

Width:  |  Height:  |  Size: 348 KiB

View File

@ -9,7 +9,7 @@ type: markdown
{% capture overview %}
This page describes the Istio mixer's configuration model.
This page describes Mixer's configuration model.
{% endcapture %}
@ -19,7 +19,7 @@ This page describes the Istio mixer's configuration model.
Istio is a sophisticated system with hundreds of independent features. An Istio deployment can be a sprawling
affair potentially involving dozens of microservices, with a swarm of Envoy proxies and Mixer instances to
support them. In large deployments, many different operators, each with different scope and areas of responsibility,
support them. In large deployments, many different operators, each with different scopes and areas of responsibility,
may be involved in managing the overall deployment.
Mixer's configuration model makes it possible to exploit all of its capabilities and flexibility, while
@ -40,30 +40,29 @@ enabling operators unprecedented control over the policies used and telemetry pr
the potential for bad configuration changes leading to service outages.
- **Extensible**. The model is designed to support Istio's overall extensibility story. New or custom
[adapters]({{site.baseurl}}/docs/concepts/mixer.html#adapters)
can be added to Istio and be fully manipulated using the same general mechanisms as any other adapter.
[adapters](./mixer.html#adapters)
can be added to Istio and be fully manipulated using the same general mechanisms as existing adapters.
## Concepts
Mixer is an attribute processing machine. Requests arrive at Mixer with a set of [*attributes*]({{site.baseurl}}/docs/attributes.html),
and based on these attributes, Mixer generates calls to a variety of backend systems. The set of
attributes determines which backend systems Mixer calls for a given request and what parameters
they are given. In order to hide the details of individual backend systems, Mixer uses modules
known as [*adapters*]({{site.baseurl}}/docs/concepts/mixer.html#adapters) which you can think of as
*device drivers* for backend systems.
each is given. In order to hide the details of individual backend systems, Mixer uses modules
known as [*adapters*]({{site.baseurl}}/docs/concepts/mixer.html#adapters).
Mixer's configuration has two central responsibilities:
- Describe which adapters are being used and how they operate.
- Describe how to map request attributes into adapter parameters.
Configuration is expressed using a YAML format. It is built on top of five core
Configuration is expressed using a YAML format built around five core
abstractions:
|Concept |Description
|----------------------------|-----------
|[Adapters](#adapters) | Low-level operationally-focused configuration state for individual mixer adapters.
|[Aspects](#aspects) | High-level intent-focused configuration state for individual mixer adapters.
|[Adapters](#adapters) | Low-level operationally-focused configuration for individual mixer adapters.
|[Aspects](#aspects) | High-level intent-focused configuration for individual mixer adapters.
|[Descriptors](#descriptors) | Description of parameters used with individual aspects.
|[Scopes](#scopes) | Mechanism to select which aspects and descriptors to use based on a request's attributes.
|[Manifests](#manifests) | Description of various static characteristics of an Istio deployment.
@ -73,7 +72,8 @@ The following sections explain these concepts in detail.
### Adapters
[Adapters]({{site.baseurl}}/docs/concepts/mixer.html#adapters) are the foundational work horses that the Istio mixer is built around. Adapters
encapsulate the logic necessary to interface Mixer with specific external backend systems such as Prometheus or NewRelic. Individual adapters
encapsulate the logic necessary to interface Mixer with specific external backend systems such as [Prometheus](https://prometheus.io),
[New Relic](https://newrelic.com), or [Stackdriver](https://cloud.google.com/logging). Individual adapters
generally need to be provided some basic operational parameters in order to do their work. For example, a logging adapter may need
to know the IP address and port where it's log data should be pumped.
@ -90,20 +90,27 @@ adapters:
refresh_interval: 60s
```
The `name` field gives a name to the chunk of adapter configuration so it can be referenced from elsewhere. The
The `name` field gives a name to the block of adapter configuration so it can be referenced from elsewhere. The
`kind` field indicates the [aspect kind](#aspects) that this configuration applies to.
The `impl` field gives the name of the adapter being configured. Finally, the `params` section is where the
actual adapter-specific configuration parameters are specified. In this case, this is configuring the URL the
adapter should use in its queries and defines the interval at which it should refresh its local caches.
For each available adapter, you can define any number of blocks of independent configuration state. This allows the same adapter
For each available adapter implementation, you can define any number of independent configuration blocks. This allows the
same adapter
to be used multiple times within a single deployment. Depending on the situation, such as which microservice is involved, one
block of configuration will be used versus another. For example, here's another block of configuration that can coexist
configuration block will be used versus another. For example, here are two more configuration blocks that can coexist
with the previous one:
```yaml
adapters:
- name: mySecondaryListChecker
kind: lists
impl: ipListChecker
params:
publisher_url: https://mysecondlistserver:912
refresh_interval: 3600s
- name: myTernaryListChecker
kind: lists
impl: genericListChecker
params:
@ -113,7 +120,7 @@ adapters:
"402"
```
Here's another example adapter block:
And yet one more:
```yaml
adapters:
@ -130,7 +137,7 @@ adapters and their specific configuration format can be found in *TBD*.
### Aspects
Aspects define high-level configuration state (what is sometimes called intent-based configuration),
Aspects define high-level configuration (what is sometimes called intent-based configuration),
independent of the particular implementation details of a specific adapter type. Whereas adapters focus
on *how* to do something, aspects focus on *what* to do.
@ -150,13 +157,13 @@ of aspects are shown in the following table.
|Kind |Description
|-----------------|-----------
|quotas |Enforce quotas and rate limits.
|metrics |Produce metrics.
|lists |Enforce simple whitelist- or blacklist-based access control.
|access-logs |Produces fixed-format access logs for every request.
|application-logs |Produces flexible application logs for every request.
|attributes |Produces supplementary attributes for every request.
|denials |Systematically produces a predictable error code.
|lists |Verifies a symbol against a list.
|metrics |Produces a metric that measures some runtime property.
|quotas |Tracks a quota value.
In the example above, the aspect declaration specifies the `lists` kind which indicates
we're configuring an aspect whose purpose is to enable the use of whitelists or
@ -194,15 +201,14 @@ aspects:
source: source.name
target: target.name
service: api.name
method: api.method
response_code: response.code
```
This defines an aspect that produces metrics which are sent to the myMetricsCollector adapter,
which was defined previously. The `metrics` stanza defines the set of metrics that are
generated during request processing for this aspect. The `descriptor_name` field specifies
the name of a *descriptor* which is a separate chunk of configuration, described [below](#descriptors) which declares
the kind of metric this is. The `value` field and he five label fields describe which attributes to use
the name of a *descriptor* which is a separate configuration block, described [below](#descriptors), which declares
the kind of metric this is. The `value` field and the four label fields describe which attributes to use
at request time in order to produce the metric.
Each aspect kind defines its own particular format of configuration data. The exhaustive set of
@ -220,34 +226,40 @@ We've already seen a few simple attribute expressions in the previous examples.
source: source.name
target: target.name
service: api.name
method: api.method
response_code: response.code
```
The sequences on the right-hand side of the colons are the simplest forms of attribute expressions.
They only consist of attribute names. In the above, the `source` label will be assigned the value
of the `source.name` attribute.
of the `source.name` attribute. Here's an example of a conditional expression:
```yaml
service: api.name | target.name
```
With the above, the service label will be assigned the value of the api.name attribute, or if that attribute
is not defined, it will be assigned the value of the target.name attribute.
The attributes that can be used in attribute expressions must be defined in an
[*attribute manifest*](#manifests) for the deployment. Within the manifest, each attribute has
a type which represents the kind of data that this attribute carries. In the
a type which represents the kind of data that the attribute carries. In the
same way, attribute expressions are also typed, and their type is derived from
the attributes in the expression and the operators applied to these attributes.
The type of an attribute expression is used to ensure consistency in which attributes
are used in what situation. For example, if a metric descriptor specifies that
a particular label is of type INT64, then only attribute expressions that produce a
64-bit integers can be used to fill-in that label. This is the case for the `response_code`
64-bit integer can be used to fill-in that label. This is the case for the `response_code`
label above.
Attribute expressions include the following features:
1. Check variables for equality against constants
2. Check string variables for wildcard matches
1. Check attributes for equality against constants
2. Check string attributes for wildcard matches
3. Logical AND/OR/NOT operators
4. Grouping semantics
5. String Concatenation
6. Substring
6. Substring Production
7. Comparison (<, <=, ==, >=, >)
Refer to *TBD* for the full attribute expression syntax.
@ -274,7 +286,6 @@ aspects:
source: source.name
target: target.name
service: api.name
method: api.method
response_code: response.code
```
@ -333,8 +344,10 @@ programming language. Doing so enables a few important scenarios:
by Mixer. For example, a metric descriptor provides all the information needed to program a backend system to accept metrics
that conform to the descriptor's shape (it's value type and its set of labels).
- Descriptors can be referenced and reused from multiple aspects.
- It enables type checking of the deployment's configuration. Since attributes have strong types, and so do descriptors,
Istio can provide a number of strong correctness guarantees of the system's configuration. Basically, if a chunk of
Istio can provide a number of strong correctness guarantees of the system's configuration. Basically, if a block of
configuration is accepted into the Istio system, it means the configuration passes a minimum correctness bar. Again, this
plays the same role as types in a programming language.
@ -346,9 +359,66 @@ The different descriptor types are detailed in *TBD*
An Istio deployment can be responsible for managing a large number of services. Organizations
often have dozens or hundreds of interacting services, and Istio's mission is to make it easy to
manage them all.
manage them all. Mixer's configuration model is designed to support different operators that
manage different parts of an Istio deployment without stepping on each other's feet, while allowing
them to have control over their areas, but not other's.
*TBD*
Here's how this all works:
- The various configuration blocks described in the previous sections (adapters, aspects, and descriptors) are always defined
within the context of a hierarchy.
- The hierarchy is represented by DNS-style dotted names. Like DNS, the hierarchy starts with the rightmost element in
the dotted name.
- Each configuration block is associated with a *scope* and a *subject* which are both dotted names
representing locations within the hierarchy:
- A scope represents the authority that created the configuration block. Authorities
higher up in the hierarchy are more powerful than those lower in it.
- The subject represents the location of the block of state within the hierarchy. The subject
is necessarily always at or below the level of the scope within the hierarchy.
- If multiple blocks of config have the same subject, the blocks associated with the highest scope
in the hierarchy always take precedence.
The individual elements that make up the hierarchy depend on the specifics of the Istio deployment.
A Kubernetes deployment likely uses Kubernetes namespaces as the hierarchy against which Istio configuration
state is deployed. For example, a valid scope might be `svc.cluster.local` while a subject might be
`myservice.ns.svc.cluster.local`
The scoping model is designed to pair up with an access control model to constrain which human is allowed to
create configuration blocks for particular scopes. Operators which have the authority to create
blocks at a scope higher in the hierarchy can impact all configuration associated with lower scopes. Although this is the design
intent, Mixer configuration doesn't yet support access control on its configuration so there are no actual constraints on which
operator can manipulate which scope.
#### Resolution
When a request arrives, Mixer goes through a number of [request processing phases](./mixer.md#request-phases).
The Resolution phase is concerned with identifying the exact configuration blocks to use in order to
process the incoming request. For example, a request arriving at Mixer for service A likely has some configuration differences
with requests arriving for service B. Resolution is about deciding which config to use for a request.
Resolution depends on a well-known attribute to guide its choice, a so-called *identity attribute*.
The value of this attribute is a dotted name which determines where the mixer begins to look in the
hierarchy for configuration blocks to use for the request.
Here's how it all works:
1. A request arrives and Mixer extracts the value of the identity attribute to produce the current
lookup value.
2. Mixer looks for all configuration blocks whose subject matches the lookup value.
3. If Mixer finds multiple blocks that match, it keeps only the block that has the highest scope.
4. Mixer truncates the lowest element from the lookup value's dotted name. If the lookup value is
not empty, then Mixer goes back to step 2 above.
All the configs found in this process are combined together to form the final effective configuration that is used to
evaluate the current request.
### Manifests
@ -381,12 +451,13 @@ manifests:
value_type: STRING
response.code:
value_type: INT64
api.method:
value_type: STRING
api.name:
value_type: STRING
```
## Examples
You can find fully formed examples of Mixer configuration by visiting the [Samples]({{site.baseurl}}/docs/samples). As
a specific example, here is the [BookInfo configuration](https://raw.githubusercontent.com/istio/istio/master/demos/mixer-config-quota-bookinfo.yaml).
## Configuration API
*TBD*

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

@ -1,6 +1,6 @@
---
title: Architecture
headline: Architecture
title: What is Istio?
headline: What is Istio?
sidenav: doc-side-concepts-nav.html
bodyclass: docs
layout: docs
@ -8,46 +8,137 @@ type: markdown
---
{% capture overview %}
The page explains in broad terms the major components of the Istio service mesh design.
This page introduces Istio, a polyglot service mesh.
{% endcapture %}
{% capture body %}
## The proxy
The Istio proxy is designed to mediate inbound and outbound
traffic for all Istio-managed services. The Istio proxy is based on
[Envoy](https://lyft.github.io/envoy/). Istio leverages Envoy's features
such as dynamic service discovery, load balancing, TLS termination, HTTP/2 & gRPC
proxying, circuit breakers, health checks, staged rollouts with %-based
traffic split, fault injection, and a rich set of metrics. In addition,
Istio extends the proxy to interact with the mixer to enforce various
access control policies rate limiting, ACLs, as well as telemetry
reporting.
## Background
## The mixer
As monolithic applications transition towards a distributed microservice architecture they become more difficult to manage and understand. These
architectures need basic necessities such as discovery, load balancing, failure recovery, metrics and monitoring, and more complex operational requirements
such as A/B testing, canary releases, rate limiting, access control, and end-to-end authentication. The term service mesh is used to describe the network of
microservices that make up applications and the interactions between them. As the service mesh grows in size and complexity, it becomes harder to understand
and manage.
The Istio mixer is responsible for enforcing access control
and usage policies across the service mesh and collects telemetry data from
proxies and istio-managed services alike. The Istio proxy extracts request
level attributes that are then evaluated by the mixer. More info on the
attribute extraction and policy evaluation can be found
[here]({{site.baseurl}}/docs/reference/attribute-vocabulary.html). The mixer
includes a flexible plugin model enabling
it to interface to a variety of host environments and configured backends,
abstracting the proxy and Istio-managed services from these details.
Istio provides a complete solution to satisfying these diverse requirements of microservice applications, by providing developers and operators with
behavioral insights and operational control over the service mesh as a whole. Istio does this by providing a number of key capabilities uniformly across the
network of services:
## The manager
- **Traffic Management**. Control the flow of traffic and API calls between services, make calls more reliable and make the network more robust in the face
of adverse conditions.
- **Observability**. Gain understanding of the dependencies between services, the nature and flow of traffic between them and be able to quickly identify
issues.
The Istio manager serves as an interface between the user
and Istio, collecting configuration, validating it and propagating it to
various components. It abstracts platform-specific implementation details
from the mixer and proxies, providing them with an
[abstract representation](model.md) of user's services that is independent
of the underlying platform. In addition, [traffic management rules](../reference/rule-dsl.md)
(i.e. generic layer-4 rules and layer-7 HTTP/gRPC routing rules)
can be programmed at runtime via the Istio Manager.
- **Policy Enforcement**. Apply organizational policy to the interaction between services, ensure access policies are enforced and resources are fairly
distributed among consumers. Policy changes are made by configuring the mesh, not by changing application code.
- **Service Identity and Security**. Provide services in the mesh with a verifiable identity [link] and provide the ability to protect [link] service traffic
as it flows over networks of varying degrees of trustability.
In addition to these behaviors, Istio is designed for extensibility to meet diverse deployment needs:
- **Platform Support**. Istio is designed to run in a variety of environments including ones that span Cloud, on-premise, Kubernetes, Mesos etc. Were
initially focused on Kubernetes but are working to support other environments soon.
- **Integration and Customization**. The policy enforcement component can be extended [link] and customized [link] to integrate with existing solutions for
ACLs, logging, monitoring, quotas, auditing and more.
These capabilities greatly decrease the coupling between application code, the underlying platform and policy. This decreased coupling not only makes
services easier to implement but also makes it simpler for operators to move application deployments between environments or to new policy schemes.
Applications become inherently more portable as a result.
Istios service mesh is logically split into a *data plane* and a *control plane*. The data plane is composed of a set of intelligent (http|grpc|tcp|udp)
proxies deployed as sidecars that mediate and control all network communication between microservices. The control plane is responsible for managing and
configuring proxies to route traffic, as well as enforce policies at runtime.
## Design goals
Istios architecture is informed by a few key design goals that are essential to making the system capable of dealing with services at scale and with high
performance.
- **Maximize Transparency**.
To adopt Istio an operator or developer should be required to do the minimum amount of work possible to get real value from the system. To this end Istio
can automatically inject itself into all the network paths between services. Istio uses sidecar proxies to capture traffic and where possible automatically
program the networking layer to route traffic through those proxies without any changes to the deployed application code. In Kubernetes the proxies are
injected into pods and traffic is captured by programming iptables rules. Once the sidecar proxies are injected and traffic routing is programmed Istio is
able to mediate all traffic. This principle also applies to performance. When applying Istio to a deployment operators should see a minimal increase in
resource costs for the
functionality being provided. Components and APIs must all be designed with performance and scale in mind.
- **Incrementality**.
As operators and developers become more dependent on the functionality that Istio provides, the system must grow with their needs. While we expect to
continue adding new features ourselves, we expect the greatest need will be the ability to extend the policy system, to integrate with other sources of policy and control and to propagate signals about mesh behavior to other systems for analysis. The policy runtime supports a standard extension mechanism for plugging in other services. In addition it allows for the extension of its vocabulary [[link]] to allow policies to be enforced based on new signals that the mesh produces.
- **Portability**.
The ecosystem in which Istio will be used varies along many dimensions. Istio must run on any cloud or on-prem environment with minimal effort. The task of
porting Istio-based services to new environments should be trivial, and it should be possible to operate a single service deployed into multiple
environments (on multiple clouds for redundancy for example) using Istio.
- **Policy Uniformity**.
The application of policy to API calls between services provides a great deal of control over mesh behavior but it can be equally important to apply
policies to resources which are not necessarily expressed at the API level. For example applying quota to the amount of CPU consumed by an ML training task
is more useful than applying quota to the call which initiated the work. To this end the policy system is maintained as a distinct service with its own API
rather than being baked into the proxy, allowing services to directly integrate with it as needed.
## High-level architecture
<img src="./arch.svg" alt="The overall architecture of an Istio-based service." />
### The sidecar model
As monolithic applications are decomposed into a distributed system of microservices that scale dynamically, classic distributed system problems such as
service discovery, load balancing, and failure recovery become increasingly import to solve uniformly. As the application gains more agility, it transitions
towards a process wherein updates are made to different parts of the application at different times. Developers need the ability to experiment with
different features in production, or deploy canary releases, without impacting the system as a whole. Operators need to enforce organization-wide policies,
such as global rate limits, ACLs, etc., without requiring updates to each microservice.
Today, these problems are tackled piecemeal within the industry. Language-specific libraries, such as Ribbon/Hystrix from Netflixs OSS stack, are used to
satisfy basic necessities such as discovery, load balancing and circuit breaking. In a polyglot application, organizations need to maintain
language-specific libraries for every language being used, dramatically increasing the maintenance cost.
A host of API management tools are typically bolted onto the edge of the infrastructure to provide subscription, metering, API metrics monitoring, rate
limiting, etc. Continuous delivery and experimentation of new features in production is restricted to edge services using an edge proxy (e.g., Zuul/Nginx).
Policy enforcement between mid-tier services is difficult or impossible as libraries provide little control over how traffic flows between microservices.
Compared to using language-specific libraries, the out-of-process transparent proxy approach has a much lower maintenance overhead. A single proxy
implementation can be shared across all services in an organization. This single implementation can be optimized for performance while providing a variety
of functions beneficial to all services in the application. It eliminates the need for applications to be rebuilt whenever new functionality is available.
Support for continuous delivery, policy enforcement, and in-depth monitoring of service health can be engineered into the proxy and leveraged across
different services (edge & middle-tier) with minimal effort on behalf of the application developer. As the proxy can act as both an edge proxy as well as a
middle-tier router, middle-tier services can also take advantage of the continuous delivery and policy enforcement features provided. By offloading all
aspects of communication, failure recovery, and policy enforcement to the proxy, the application logic is dramatically simplified.
### Envoy
Istio uses the Envoy proxy, a high-performance proxy developed in C++, to mediate all inbound and outbound traffic for all services in the service mesh.
Istio leverages Envoys many built-in features such as dynamic service discovery, load balancing, TLS termination, HTTP/2 & gRPC proxying, circuit breakers,
health checks, staged rollouts with %-based traffic split, fault injection, and rich metrics. In addition, Istio extends Envoy to interact with Mixer to
enable policy enforcement and to report telemetry.
### Mixer
Mixer is responsible for enforcing access control and usage policies across the service mesh and collects telemetry data from the Envoy proxy and other
services. The proxy extracts request level attributes which are sent to Mixer for evaluation. More information on the attribute extraction and policy
evaluation can be found here. Mixer includes a flexible plugin model enabling it to interface with a variety of host environments and backends, abstracting
the proxy and Istio-managed services from these details.
### Istio Manager
The Manager serves as an interface between the user and Istio, collecting and validating configuration and propagating it to the various Istio components.
It abstracts environment-specific implementation details from the Mixer and Proxy, providing them with an abstract representation of the users services
that is independent of the underlying platform. In addition, traffic management rules (i.e. generic layer-4 rules and layer-7 HTTP/gRPC routing rules) can
be programmed at runtime via the Istio Manager.
### Istio Auth
Istio supports strong service-to-service and end-user authentication using mutual TLS, with built-in identity and credential management.
Istio Auth can be used to upgrade unencrypted traffic in the service mesh, and provides operators the ability to enforce policy based
on service identity rather than network controls. Future releases of Istio will add fine-grained access control and auditing to control
and monitor who accesses your service, API, or resource, using a variety of access control mechanisms, including attribute and
role-based access control as well as authorization hooks.
<img src="{{site.baseurl}}/img/arch.svg" alt="The overall architecture of an Istio-based service." />
{% endcapture %}
{% include templates/concept.md %}

View File

@ -11,20 +11,20 @@ type: markdown
Tasks show you how to do a single specific targeted
activity with the Istio system.
- [Installion](./istio-installation.html). This task shows you how to
setup Istio service mesh.
- [Installation](./istio-installation.html). This task shows you how to
setup the Istio service mesh.
- [Integrating Services into the Mesh](./integrating-services-into-istio.html). This task shows you how to
integrate your applications with Istio service mesh.
integrate your applications with the Istio service mesh.
- [Configuring Ingress/Egress with Envoy](./ingress-egress-envoy.html). This task shows you how to
setup the Istio Ingress controller and the Egress proxy.
setup the Istio ingress controller and the egress proxy.
- [Adding Resilience Features](./resilience-features.html). This task shows you how to
setup timeouts, retries and circuit breakers.
setup timeouts, retries, and circuit breakers.
- [Configuring Request Routing](./request-routing.html). This task shows you how to
configure dynamic request routing based on weights and http headers.
configure dynamic request routing based on weights and HTTP headers.
- [Fault Injection](./fault-injection.html). This task shows how to
inject failures into your application.
@ -33,8 +33,8 @@ activity with the Istio system.
setup Istio-Auth to provide mutual TLS authentication between services.
- [Collecting Metrics and Logs](./metrics-logs.html). This task shows you how to
configure the Istio Mixer to collect metrics and logs from Envoys in
configure Mixer to collect metrics and logs from Envoy instances in
every Pod.
- [Configuring Mixer](./configuring-mixer.html). This task shows you how to
configure the Mixer.
configure Mixer.

View File

@ -1,37 +0,0 @@
---
title: Task X
headline: Task X
sidenav: doc-side-tasks-nav.html
bodyclass: docs
layout: docs
type: markdown
---
{% capture overview %}
This task shows how to do X in a Kubernetes cluster. You'll learn
how to ...
{% endcapture %}
{% capture prerequisites %}
* Do this.
* Do this too.
{% endcapture %}
{% capture steps %}
## Doing ...
1. Do this.
1. Do this next. Possibly read this [related explanation](...).
{% endcapture %}
{% capture discussion %}
## Understanding ...
Here's an interesting thing to know about the steps you just did.
{% endcapture %}
{% capture whatsnext %}
* Learn more about [this](...).
* See this [related task](...).
{% endcapture %}
{% include templates/task.md %}

View File

@ -1,113 +1,257 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 195.7 177.4" enable-background="new 0 0 195.7 177.4" xml:space="preserve">
<g>
<path fill="#452845" d="M190.8,177.4H4.9c-2.7,0-4.9-2.2-4.9-4.9V4.9C0,2.2,2.2,0,4.9,0h185.9c2.7,0,4.9,2.2,4.9,4.9v167.6
C195.7,175.2,193.5,177.4,190.8,177.4z M7,170.4h181.7V7H7V170.4z"/>
</g>
<g>
<path fill="#452845" d="M192.2,29.5H3.5C1.6,29.5,0,27.9,0,26s1.6-3.5,3.5-3.5h188.7c1.9,0,3.5,1.6,3.5,3.5S194.1,29.5,192.2,29.5z
"/>
</g>
<g>
<path fill="#FC7B4D" d="M55.3,46.4h-17c-1.9,0-3.5-1.6-3.5-3.5s1.6-3.5,3.5-3.5h17c1.9,0,3.5,1.6,3.5,3.5S57.3,46.4,55.3,46.4z"/>
</g>
<g>
<path fill="#FC7B4D" d="M111.8,79.9H88.3c-1.9,0-3.5-1.6-3.5-3.5s1.6-3.5,3.5-3.5h23.5c1.9,0,3.5,1.6,3.5,3.5
S113.8,79.9,111.8,79.9z"/>
</g>
<g>
<path fill="#FC7B4D" d="M133.2,128.9H39c-1.9,0-3.5-1.6-3.5-3.5s1.6-3.5,3.5-3.5h94.2c1.9,0,3.5,1.6,3.5,3.5
S135.1,128.9,133.2,128.9z"/>
</g>
<g>
<path fill="#452845" d="M113.2,46.4H82.6c-1.9,0-3.5-1.6-3.5-3.5s1.6-3.5,3.5-3.5h30.5c1.9,0,3.5,1.6,3.5,3.5
S115.1,46.4,113.2,46.4z"/>
</g>
<g>
<path fill="#452845" d="M60.8,79.9H47.2c-1.9,0-3.5-1.6-3.5-3.5s1.6-3.5,3.5-3.5h13.6c1.9,0,3.5,1.6,3.5,3.5S62.8,79.9,60.8,79.9z"
/>
</g>
<g>
<path fill="#452845" d="M106.2,96.2H72.2c-1.9,0-3.5-1.6-3.5-3.5s1.6-3.5,3.5-3.5h33.9c1.9,0,3.5,1.6,3.5,3.5
S108.1,96.2,106.2,96.2z"/>
</g>
<g>
<path fill="#452845" d="M82.6,162.4H38.4c-1.9,0-3.5-1.6-3.5-3.5s1.6-3.5,3.5-3.5h44.3c1.9,0,3.5,1.6,3.5,3.5
S84.6,162.4,82.6,162.4z"/>
</g>
<g>
<path fill="#452845" d="M106.2,112.5H72.2c-1.9,0-3.5-1.6-3.5-3.5s1.6-3.5,3.5-3.5h33.9c1.9,0,3.5,1.6,3.5,3.5
S108.1,112.5,106.2,112.5z"/>
</g>
<g>
<path fill="#452845" d="M166.7,112.5h-51.3c-1.9,0-3.5-1.6-3.5-3.5s1.6-3.5,3.5-3.5h51.3c1.9,0,3.5,1.6,3.5,3.5
S168.6,112.5,166.7,112.5z"/>
</g>
<g>
<path fill="#452845" d="M147.2,145.2H38.4c-1.9,0-3.5-1.6-3.5-3.5s1.6-3.5,3.5-3.5h108.8c1.9,0,3.5,1.6,3.5,3.5
S149.1,145.2,147.2,145.2z"/>
</g>
<g>
<path fill="#452845" d="M172.2,79.9h-30.5c-1.9,0-3.5-1.6-3.5-3.5s1.6-3.5,3.5-3.5h30.5c1.9,0,3.5,1.6,3.5,3.5
S174.1,79.9,172.2,79.9z"/>
</g>
<g>
<path fill="#452845" d="M79,79.9h-6.8c-1.9,0-3.5-1.6-3.5-3.5s1.6-3.5,3.5-3.5H79c1.9,0,3.5,1.6,3.5,3.5S81,79.9,79,79.9z"/>
</g>
<g>
<path fill="#452845" d="M131.5,79.9h-11.8c-1.9,0-3.5-1.6-3.5-3.5s1.6-3.5,3.5-3.5h11.8c1.9,0,3.5,1.6,3.5,3.5
S133.4,79.9,131.5,79.9z"/>
</g>
<g>
<path fill="#452845" d="M106.2,63.5H38.3c-1.9,0-3.5-1.6-3.5-3.5s1.6-3.5,3.5-3.5h67.9c1.9,0,3.5,1.6,3.5,3.5
S108.1,63.5,106.2,63.5z"/>
</g>
<g>
<path fill="#452845" d="M172.2,46.4h-30.5c-1.9,0-3.5-1.6-3.5-3.5s1.6-3.5,3.5-3.5h30.5c1.9,0,3.5,1.6,3.5,3.5
S174.1,46.4,172.2,46.4z"/>
</g>
<g>
<circle fill="#452845" cx="16.3" cy="14.5" r="3.5"/>
</g>
<g>
<circle fill="#452845" cx="21.9" cy="43.7" r="3.5"/>
</g>
<g>
<circle fill="#452845" cx="21.9" cy="60" r="3.5"/>
</g>
<g>
<circle fill="#452845" cx="21.9" cy="76.4" r="3.5"/>
</g>
<g>
<circle fill="#452845" cx="21.9" cy="92.7" r="3.5"/>
</g>
<g>
<circle fill="#452845" cx="21.9" cy="109" r="3.5"/>
</g>
<g>
<circle fill="#452845" cx="21.9" cy="125.4" r="3.5"/>
</g>
<g>
<circle fill="#452845" cx="21.9" cy="141.7" r="3.5"/>
</g>
<g>
<circle fill="#452845" cx="21.9" cy="158" r="3.5"/>
</g>
<g>
<circle fill="#452845" cx="28.9" cy="14.5" r="3.5"/>
</g>
<g>
<circle fill="#452845" cx="41.5" cy="14.5" r="3.5"/>
</g>
<g>
<circle fill="#452845" cx="65.2" cy="42.9" r="3.8"/>
</g>
<g>
<circle fill="#452845" cx="58.8" cy="92.7" r="3.8"/>
</g>
<g>
<circle fill="#452845" cx="124.8" cy="42.9" r="3.8"/>
</g>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Layer_1"
x="0px"
y="0px"
viewBox="0 0 195.7 177.4"
enable-background="new 0 0 195.7 177.4"
xml:space="preserve"
inkscape:version="0.91 r13725"
sodipodi:docname="policy.svg"><metadata
id="metadata131"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
id="defs129" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1440"
inkscape:window-height="852"
id="namedview127"
showgrid="false"
inkscape:zoom="1.330327"
inkscape:cx="97.849998"
inkscape:cy="88.699997"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="Layer_1" /><g
id="g3"
style="fill:#535f61;fill-opacity:1"><path
fill="#452845"
d="M190.8,177.4H4.9c-2.7,0-4.9-2.2-4.9-4.9V4.9C0,2.2,2.2,0,4.9,0h185.9c2.7,0,4.9,2.2,4.9,4.9v167.6 C195.7,175.2,193.5,177.4,190.8,177.4z M7,170.4h181.7V7H7V170.4z"
id="path5"
style="fill:#535f61;fill-opacity:1" /></g><g
id="g7"
style="fill:#535f61;fill-opacity:1"><path
fill="#452845"
d="M192.2,29.5H3.5C1.6,29.5,0,27.9,0,26s1.6-3.5,3.5-3.5h188.7c1.9,0,3.5,1.6,3.5,3.5S194.1,29.5,192.2,29.5z "
id="path9"
style="fill:#535f61;fill-opacity:1" /></g><g
id="g11"
style="fill:#466bb0;fill-opacity:1"><path
fill="#FC7B4D"
d="M55.3,46.4h-17c-1.9,0-3.5-1.6-3.5-3.5s1.6-3.5,3.5-3.5h17c1.9,0,3.5,1.6,3.5,3.5S57.3,46.4,55.3,46.4z"
id="path13"
style="fill:#466bb0;fill-opacity:1" /></g><g
id="g15"
style="fill:#466bb0;fill-opacity:1"><path
fill="#FC7B4D"
d="M111.8,79.9H88.3c-1.9,0-3.5-1.6-3.5-3.5s1.6-3.5,3.5-3.5h23.5c1.9,0,3.5,1.6,3.5,3.5 S113.8,79.9,111.8,79.9z"
id="path17"
style="fill:#466bb0;fill-opacity:1" /></g><g
id="g19"
style="fill:#466bb0;fill-opacity:1"><path
fill="#FC7B4D"
d="M133.2,128.9H39c-1.9,0-3.5-1.6-3.5-3.5s1.6-3.5,3.5-3.5h94.2c1.9,0,3.5,1.6,3.5,3.5 S135.1,128.9,133.2,128.9z"
id="path21"
style="fill:#466bb0;fill-opacity:1" /></g><g
id="g23"
style="fill:#535f61;fill-opacity:1"><path
fill="#452845"
d="M113.2,46.4H82.6c-1.9,0-3.5-1.6-3.5-3.5s1.6-3.5,3.5-3.5h30.5c1.9,0,3.5,1.6,3.5,3.5 S115.1,46.4,113.2,46.4z"
id="path25"
style="fill:#535f61;fill-opacity:1" /></g><g
id="g27"
style="fill:#535f61;fill-opacity:1"><path
fill="#452845"
d="M60.8,79.9H47.2c-1.9,0-3.5-1.6-3.5-3.5s1.6-3.5,3.5-3.5h13.6c1.9,0,3.5,1.6,3.5,3.5S62.8,79.9,60.8,79.9z"
id="path29"
style="fill:#535f61;fill-opacity:1" /></g><g
id="g31"
style="fill:#535f61;fill-opacity:1"><path
fill="#452845"
d="M106.2,96.2H72.2c-1.9,0-3.5-1.6-3.5-3.5s1.6-3.5,3.5-3.5h33.9c1.9,0,3.5,1.6,3.5,3.5 S108.1,96.2,106.2,96.2z"
id="path33"
style="fill:#535f61;fill-opacity:1" /></g><g
id="g35"
style="fill:#535f61;fill-opacity:1"><path
fill="#452845"
d="M82.6,162.4H38.4c-1.9,0-3.5-1.6-3.5-3.5s1.6-3.5,3.5-3.5h44.3c1.9,0,3.5,1.6,3.5,3.5 S84.6,162.4,82.6,162.4z"
id="path37"
style="fill:#535f61;fill-opacity:1" /></g><g
id="g39"
style="fill:#535f61;fill-opacity:1"><path
fill="#452845"
d="M106.2,112.5H72.2c-1.9,0-3.5-1.6-3.5-3.5s1.6-3.5,3.5-3.5h33.9c1.9,0,3.5,1.6,3.5,3.5 S108.1,112.5,106.2,112.5z"
id="path41"
style="fill:#535f61;fill-opacity:1" /></g><g
id="g43"
style="fill:#535f61;fill-opacity:1"><path
fill="#452845"
d="M166.7,112.5h-51.3c-1.9,0-3.5-1.6-3.5-3.5s1.6-3.5,3.5-3.5h51.3c1.9,0,3.5,1.6,3.5,3.5 S168.6,112.5,166.7,112.5z"
id="path45"
style="fill:#535f61;fill-opacity:1" /></g><g
id="g47"
style="fill:#535f61;fill-opacity:1"><path
fill="#452845"
d="M147.2,145.2H38.4c-1.9,0-3.5-1.6-3.5-3.5s1.6-3.5,3.5-3.5h108.8c1.9,0,3.5,1.6,3.5,3.5 S149.1,145.2,147.2,145.2z"
id="path49"
style="fill:#535f61;fill-opacity:1" /></g><g
id="g51"
style="fill:#535f61;fill-opacity:1"><path
fill="#452845"
d="M172.2,79.9h-30.5c-1.9,0-3.5-1.6-3.5-3.5s1.6-3.5,3.5-3.5h30.5c1.9,0,3.5,1.6,3.5,3.5 S174.1,79.9,172.2,79.9z"
id="path53"
style="fill:#535f61;fill-opacity:1" /></g><g
id="g55"
style="fill:#535f61;fill-opacity:1"><path
fill="#452845"
d="M79,79.9h-6.8c-1.9,0-3.5-1.6-3.5-3.5s1.6-3.5,3.5-3.5H79c1.9,0,3.5,1.6,3.5,3.5S81,79.9,79,79.9z"
id="path57"
style="fill:#535f61;fill-opacity:1" /></g><g
id="g59"
style="fill:#535f61;fill-opacity:1"><path
fill="#452845"
d="M131.5,79.9h-11.8c-1.9,0-3.5-1.6-3.5-3.5s1.6-3.5,3.5-3.5h11.8c1.9,0,3.5,1.6,3.5,3.5 S133.4,79.9,131.5,79.9z"
id="path61"
style="fill:#535f61;fill-opacity:1" /></g><g
id="g63"
style="fill:#535f61;fill-opacity:1"><path
fill="#452845"
d="M106.2,63.5H38.3c-1.9,0-3.5-1.6-3.5-3.5s1.6-3.5,3.5-3.5h67.9c1.9,0,3.5,1.6,3.5,3.5 S108.1,63.5,106.2,63.5z"
id="path65"
style="fill:#535f61;fill-opacity:1" /></g><g
id="g67"
style="fill:#535f61;fill-opacity:1"><path
fill="#452845"
d="M172.2,46.4h-30.5c-1.9,0-3.5-1.6-3.5-3.5s1.6-3.5,3.5-3.5h30.5c1.9,0,3.5,1.6,3.5,3.5 S174.1,46.4,172.2,46.4z"
id="path69"
style="fill:#535f61;fill-opacity:1" /></g><g
id="g71"
style="fill:#535f61;fill-opacity:1"><circle
fill="#452845"
cx="16.3"
cy="14.5"
r="3.5"
id="circle73"
style="fill:#535f61;fill-opacity:1" /></g><g
id="g75"
style="fill:#535f61;fill-opacity:1"><circle
fill="#452845"
cx="21.9"
cy="43.7"
r="3.5"
id="circle77"
style="fill:#535f61;fill-opacity:1" /></g><g
id="g79"
style="fill:#535f61;fill-opacity:1"><circle
fill="#452845"
cx="21.9"
cy="60"
r="3.5"
id="circle81"
style="fill:#535f61;fill-opacity:1" /></g><g
id="g83"
style="fill:#535f61;fill-opacity:1"><circle
fill="#452845"
cx="21.9"
cy="76.4"
r="3.5"
id="circle85"
style="fill:#535f61;fill-opacity:1" /></g><g
id="g87"
style="fill:#535f61;fill-opacity:1"><circle
fill="#452845"
cx="21.9"
cy="92.7"
r="3.5"
id="circle89"
style="fill:#535f61;fill-opacity:1" /></g><g
id="g91"
style="fill:#535f61;fill-opacity:1"><circle
fill="#452845"
cx="21.9"
cy="109"
r="3.5"
id="circle93"
style="fill:#535f61;fill-opacity:1" /></g><g
id="g95"
style="fill:#535f61;fill-opacity:1"><circle
fill="#452845"
cx="21.9"
cy="125.4"
r="3.5"
id="circle97"
style="fill:#535f61;fill-opacity:1" /></g><g
id="g99"
style="fill:#535f61;fill-opacity:1"><circle
fill="#452845"
cx="21.9"
cy="141.7"
r="3.5"
id="circle101"
style="fill:#535f61;fill-opacity:1" /></g><g
id="g103"
style="fill:#535f61;fill-opacity:1"><circle
fill="#452845"
cx="21.9"
cy="158"
r="3.5"
id="circle105"
style="fill:#535f61;fill-opacity:1" /></g><g
id="g107"
style="fill:#535f61;fill-opacity:1"><circle
fill="#452845"
cx="28.9"
cy="14.5"
r="3.5"
id="circle109"
style="fill:#535f61;fill-opacity:1" /></g><g
id="g111"
style="fill:#535f61;fill-opacity:1"><circle
fill="#452845"
cx="41.5"
cy="14.5"
r="3.5"
id="circle113"
style="fill:#535f61;fill-opacity:1" /></g><g
id="g115"
style="fill:#535f61;fill-opacity:1"><circle
fill="#452845"
cx="65.2"
cy="42.9"
r="3.8"
id="circle117"
style="fill:#535f61;fill-opacity:1" /></g><g
id="g119"
style="fill:#535f61;fill-opacity:1"><circle
fill="#452845"
cx="58.8"
cy="92.7"
r="3.8"
id="circle121"
style="fill:#535f61;fill-opacity:1" /></g><g
id="g123"
style="fill:#535f61;fill-opacity:1"><circle
fill="#452845"
cx="124.8"
cy="42.9"
r="3.8"
id="circle125"
style="fill:#535f61;fill-opacity:1" /></g></svg>

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 8.9 KiB

View File

@ -19,10 +19,10 @@
sodipodi:docname="routing.svg"
width="746.20001"
height="332.70535"
inkscape:version="0.92.1 r"><metadata
inkscape:version="0.91 r13725"><metadata
id="metadata12729"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
id="defs12727" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
@ -41,10 +41,10 @@
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="1"
inkscape:cx="357.68762"
inkscape:cx="365.22271"
inkscape:cy="79.417908"
inkscape:window-x="1691"
inkscape:window-y="216"
inkscape:window-x="55"
inkscape:window-y="69"
inkscape:window-maximized="0"
inkscape:current-layer="g12722" /><g
id="g12722"
@ -55,22 +55,24 @@
id="path12426"
inkscape:connector-curvature="0"
style="fill:#ffffff" /></g><g
id="g12432"><path
id="g12432"
style="fill:#535f61;fill-opacity:1"><path
d="m 693.1,85.9 c -0.9,0 -1.9,-0.1 -2.8,-0.2 -15.1,-1.6 -25.2,-12.7 -25.2,-27.6 0,-15.2 12.4,-27.6 27.6,-27.6 12.3,0 16.5,6.3 16.9,7 l -6,3.6 0.1,0.1 c -0.1,-0.2 -2.7,-3.7 -11,-3.7 -11.4,0 -20.6,9.2 -20.6,20.6 0,11.3 7.4,19.4 19,20.6 2.1,0.2 9.4,0.5 15.1,-5.1 1.4,-1.4 3.6,-1.4 4.9,0 1.4,1.4 1.4,3.6 0,5 -4.7,4.7 -11.2,7.3 -18,7.3 z"
id="path12430"
inkscape:connector-curvature="0"
style="fill:#452845" /></g></g><g
style="fill:#535f61;fill-opacity:1" /></g></g><g
id="g12444"><g
id="g12438"><path
d="m 492.9,115.8 h -98.6 c -4.6,0 -8.3,-3.7 -8.3,-8.3 V 8.9 c 0,-4.6 3.7,-8.3 8.3,-8.3 h 98.6 c 4.6,0 8.3,3.7 8.3,8.3 v 98.6 c -0.1,4.6 -3.8,8.3 -8.3,8.3 z"
id="path12436"
inkscape:connector-curvature="0"
style="fill:#ffffff" /></g><g
id="g12442"><path
id="g12442"
style="fill:#535f61;fill-opacity:1"><path
d="m 443.8,87.3 c -2.3,0 -4.8,-0.3 -7.2,-0.4 -3.1,-0.1 -6.2,-0.5 -9.6,-0.5 h -3.5 V 49.6 c 0,-11.3 9.1,-20.5 20.3,-20.5 8.6,0 17.3,5.3 17.3,15.6 0,5.4 -1.6,9.6 -4.6,12.4 1.7,1 3.1,2.2 4.3,3.6 3,3.8 3.7,9 2.1,15.5 -2.4,9.5 -10,11.1 -19.1,11.1 z m -13.3,-7.5 c 2.3,0.1 4.4,0.2 6.4,0.2 16.1,0.7 18,-0.9 19.2,-5.6 1.1,-4.2 0.8,-7.4 -0.8,-9.5 -2.1,-2.7 -6.7,-3.5 -10.5,-3.6 -0.4,0 -0.8,0 -1.3,0 h -13 z m 0,-25.4 h 12.4 c 0.6,-0.1 1.2,0 1.8,0 8.2,-0.4 9.4,-4.9 9.4,-9.7 0,-3.9 -2.7,-8.6 -10.3,-8.6 -7.3,0 -13.3,6 -13.3,13.5 z"
id="path12440"
inkscape:connector-curvature="0"
style="fill:#452845" /></g></g><g
style="fill:#535f61;fill-opacity:1" /></g></g><g
id="g12448"><path
d="m 737.9,332.8 h -98.6 c -4.6,0 -8.3,-3.7 -8.3,-8.3 v -98.6 c 0,-4.6 3.7,-8.3 8.3,-8.3 h 98.6 c 4.6,0 8.3,3.7 8.3,8.3 v 98.6 c -0.1,4.6 -3.8,8.3 -8.3,8.3 z"
id="path12446"
@ -82,11 +84,12 @@
id="path12450"
inkscape:connector-curvature="0"
style="fill:#ffffff" /></g><g
id="g12456"><path
id="g12456"
style="fill:#535f61;fill-opacity:1"><path
d="m 443.8,304.3 c -2.3,0 -4.8,-0.3 -7.2,-0.4 -3.1,-0.1 -6.2,-0.5 -9.6,-0.5 h -3.5 v -36.8 c 0,-11.3 9.1,-20.5 20.3,-20.5 8.6,0 17.3,5.3 17.3,15.6 0,5.4 -1.6,9.6 -4.6,12.4 1.7,1 3.1,2.2 4.3,3.6 3,3.8 3.7,9 2.1,15.5 -2.4,9.5 -10,11.1 -19.1,11.1 z m -13.3,-7.5 c 2.3,0.1 4.4,0.2 6.4,0.2 16.1,0.7 18,-0.9 19.2,-5.6 1.1,-4.2 0.8,-7.4 -0.8,-9.5 -2.1,-2.7 -6.7,-3.5 -10.5,-3.6 -0.4,0 -0.8,0 -1.3,0 h -13 z m 0,-25.4 h 12.4 c 0.6,-0.1 1.2,0 1.8,0 8.2,-0.4 9.4,-4.9 9.4,-9.7 0,-3.9 -2.7,-8.6 -10.3,-8.6 -7.3,0 -13.3,6 -13.3,13.5 z"
id="path12454"
inkscape:connector-curvature="0"
style="fill:#452845" /></g></g><g
style="fill:#535f61;fill-opacity:1" /></g></g><g
id="g12474"><g
id="g12462"><path
d="m 247.9,115.8 h -98.6 c -4.6,0 -8.3,-3.7 -8.3,-8.3 V 8.9 c 0,-4.6 3.7,-8.3 8.3,-8.3 h 98.6 c 4.6,0 8.3,3.7 8.3,8.3 v 98.6 c 0,4.6 -3.7,8.3 -8.3,8.3 z"
@ -94,228 +97,255 @@
inkscape:connector-curvature="0"
style="fill:#ffffff" /></g><g
id="g12472"><g
id="g12466"><path
id="g12466"
style="fill:#535f61;fill-opacity:1"><path
d="m 215.6,87.8 c -1.9,0 -3.5,-1.6 -3.5,-3.5 V 50.9 c 0,-7.4 -6,-13.5 -13.5,-13.5 -7.5,0 -13.5,6 -13.5,13.5 v 33.4 c 0,1.9 -1.6,3.5 -3.5,3.5 -1.9,0 -3.5,-1.6 -3.5,-3.5 V 50.9 c 0,-11.3 9.2,-20.5 20.5,-20.5 11.3,0 20.5,9.2 20.5,20.5 v 33.4 c 0,1.9 -1.6,3.5 -3.5,3.5 z"
id="path12464"
inkscape:connector-curvature="0"
style="fill:#452845" /></g><g
style="fill:#535f61;fill-opacity:1" /></g><g
id="g12470"><path
d="m 215.5,62.4 h -30 c -1.9,0 -3.5,-1.6 -3.5,-3.5 0,-1.9 1.6,-3.5 3.5,-3.5 h 30 c 1.9,0 3.5,1.6 3.5,3.5 0,1.9 -1.6,3.5 -3.5,3.5 z"
id="path12468"
inkscape:connector-curvature="0"
style="fill:#452845" /></g></g></g><g
style="fill:#535f61;fill-opacity:0.94117647" /></g></g></g><g
id="g12478"><path
d="m 361.8,75.7 c -1,0 -2,-0.4 -2.6,-1.2 -1.3,-1.5 -1.1,-3.7 0.4,-4.9 l 8.9,-7.7 -8.9,-7.7 c -1.5,-1.3 -1.6,-3.5 -0.3,-4.9 1.3,-1.5 3.5,-1.6 4.9,-0.3 l 14.9,13 -15,12.9 c -0.7,0.5 -1.5,0.8 -2.3,0.8 z"
id="path12476"
inkscape:connector-curvature="0"
style="fill:#e95f6a" /></g><g
id="g12482"><path
style="fill:#466bb0;fill-opacity:1" /></g><g
id="g12482"
style="fill:#466bb0;fill-opacity:1"><path
d="m 688.6,146.8 c -1,0 -2,-0.4 -2.7,-1.2 l -7.7,-8.9 -7.7,8.9 c -1.3,1.5 -3.5,1.6 -4.9,0.3 -1.5,-1.3 -1.6,-3.5 -0.3,-4.9 l 13,-14.9 12.9,15 c 1.3,1.5 1.1,3.7 -0.4,4.9 -0.6,0.5 -1.4,0.8 -2.2,0.8 z"
id="path12480"
inkscape:connector-curvature="0"
style="fill:#e95f6a" /></g><g
style="fill:#466bb0;fill-opacity:1" /></g><g
id="g12486"><path
d="m 603.8,319.7 c -1,0 -2,-0.4 -2.7,-1.2 -1.3,-1.5 -1.1,-3.7 0.4,-4.9 l 8.9,-7.7 -8.9,-7.7 c -1.5,-1.3 -1.6,-3.5 -0.3,-4.9 1.3,-1.5 3.5,-1.6 4.9,-0.3 l 14.9,13 -15,12.9 c -0.6,0.5 -1.4,0.8 -2.2,0.8 z"
id="path12484"
inkscape:connector-curvature="0"
style="fill:#e95f6a" /></g><g
id="g12490"><path
style="fill:#466bb0;fill-opacity:1" /></g><g
id="g12490"
style="fill:#466bb0;fill-opacity:1"><path
d="m 306,100.4 h -39.5 c -1.9,0 -3.5,-1.6 -3.5,-3.5 0,-1.9 1.6,-3.5 3.5,-3.5 H 306 c 10.2,0 18.5,-8.3 18.5,-18.5 V 58.4 h 48 c 1.9,0 3.5,1.6 3.5,3.5 0,1.9 -1.6,3.5 -3.5,3.5 h -41 v 9.5 c 0,14.1 -11.4,25.5 -25.5,25.5 z"
id="path12488"
inkscape:connector-curvature="0"
style="fill:#e95f6a" /></g><g
id="g12494"><path
style="fill:#466bb0;fill-opacity:1" /></g><g
id="g12494"
style="fill:#466bb0;fill-opacity:1"><path
d="m 465.4,207.3 c -1.9,0 -3.5,-1.6 -3.5,-3.5 v -32 h 194.4 c 10.2,0 18.5,-8.3 18.5,-18.5 v -13 c 0,-1.9 1.6,-3.5 3.5,-3.5 1.9,0 3.5,1.6 3.5,3.5 v 13 c 0,14.1 -11.4,25.5 -25.5,25.5 H 468.9 v 25 c 0,1.9 -1.6,3.5 -3.5,3.5 z"
id="path12492"
inkscape:connector-curvature="0"
style="fill:#e95f6a" /></g><g
style="fill:#466bb0;fill-opacity:1" /></g><g
id="g12498"><path
d="m 604.8,75.7 c -1,0 -2,-0.4 -2.6,-1.2 -1.3,-1.5 -1.1,-3.7 0.4,-4.9 l 8.9,-7.7 -8.9,-7.7 c -1.5,-1.3 -1.6,-3.5 -0.3,-4.9 1.3,-1.5 3.5,-1.6 4.9,-0.3 l 14.9,13 -15,12.9 c -0.7,0.5 -1.5,0.8 -2.3,0.8 z"
id="path12496"
inkscape:connector-curvature="0"
style="fill:#e95f6a" /></g><g
id="g12502"><path
style="fill:#466bb0;fill-opacity:1" /></g><g
id="g12502"
style="fill:#466bb0;fill-opacity:1"><path
d="m 615.5,65.4 h -99 c -1.9,0 -3.5,-1.6 -3.5,-3.5 0,-1.9 1.6,-3.5 3.5,-3.5 h 99 c 1.9,0 3.5,1.6 3.5,3.5 0,1.9 -1.6,3.5 -3.5,3.5 z"
id="path12500"
inkscape:connector-curvature="0"
style="fill:#e95f6a" /></g><g
id="g12506"><path
style="fill:#466bb0;fill-opacity:1" /></g><g
id="g12506"
style="fill:#535f61;fill-opacity:1"><path
d="m 683.8,302.8 h -16.2 v -55.2 h 18.5 c 15.1,1.6 25.2,12.7 25.2,27.6 0.1,15.2 -12.2,27.6 -27.5,27.6 z m -9.1,-7 h 9.2 c 11.4,0 20.6,-9.2 20.6,-20.6 0,-11.2 -7.4,-19.3 -18.8,-20.6 h -11 z"
id="path12504"
inkscape:connector-curvature="0"
style="fill:#452845" /></g><g
id="g12510"><path
style="fill:#535f61;fill-opacity:1" /></g><g
id="g12510"
style="fill:#535f61;fill-opacity:1"><path
d="m 473,257.9 c -1.9,0 -3.5,-1.6 -3.5,-3.5 0,-2.1 -1.3,-5.6 -2.5,-6.8 -1.4,-1.4 -1.4,-3.6 0,-5 1.4,-1.4 3.6,-1.4 5,0 2.8,2.8 4.5,8.3 4.5,11.7 0,2 -1.6,3.6 -3.5,3.6 z"
id="path12508"
inkscape:connector-curvature="0"
style="fill:#452845" /></g><g
id="g12532"><g
id="g12514"><path
style="fill:#535f61;fill-opacity:1" /></g><g
id="g12532"
style="fill:#466bb0;fill-opacity:1"><g
id="g12514"
style="fill:#466bb0;fill-opacity:1"><path
d="m 217,143.9 c -1.9,0 -3.5,-1.6 -3.5,-3.5 v -9 c 0,-1.9 1.6,-3.5 3.5,-3.5 1.9,0 3.5,1.6 3.5,3.5 v 9 c 0,1.9 -1.6,3.5 -3.5,3.5 z"
id="path12512"
inkscape:connector-curvature="0"
style="fill:#e95f6a" /></g><g
id="g12518"><path
style="fill:#466bb0;fill-opacity:1" /></g><g
id="g12518"
style="fill:#466bb0;fill-opacity:1"><path
d="m 217,245.9 c -1.9,0 -3.5,-1.6 -3.5,-3.5 v -17 c 0,-1.9 1.6,-3.5 3.5,-3.5 1.9,0 3.5,1.6 3.5,3.5 v 17 c 0,1.9 -1.6,3.5 -3.5,3.5 z m 0,-34 c -1.9,0 -3.5,-1.6 -3.5,-3.5 v -17 c 0,-1.9 1.6,-3.5 3.5,-3.5 1.9,0 3.5,1.6 3.5,3.5 v 17 c 0,1.9 -1.6,3.5 -3.5,3.5 z m 0,-34 c -1.9,0 -3.5,-1.6 -3.5,-3.5 v -17 c 0,-1.9 1.6,-3.5 3.5,-3.5 1.9,0 3.5,1.6 3.5,3.5 v 17 c 0,1.9 -1.6,3.5 -3.5,3.5 z"
id="path12516"
inkscape:connector-curvature="0"
style="fill:#e95f6a" /></g><g
id="g12522"><path
style="fill:#466bb0;fill-opacity:1" /></g><g
id="g12522"
style="fill:#466bb0;fill-opacity:1"><path
d="m 225.5,271.4 h -12 v -12 c 0,-1.9 1.6,-3.5 3.5,-3.5 1.9,0 3.5,1.6 3.5,3.5 v 5 h 5 c 1.9,0 3.5,1.6 3.5,3.5 0,1.9 -1.6,3.5 -3.5,3.5 z"
id="path12520"
inkscape:connector-curvature="0"
style="fill:#e95f6a" /></g><g
id="g12526"><path
style="fill:#466bb0;fill-opacity:1" /></g><g
id="g12526"
style="fill:#466bb0;fill-opacity:1"><path
d="m 345.5,271.4 h -15 c -1.9,0 -3.5,-1.6 -3.5,-3.5 0,-1.9 1.6,-3.5 3.5,-3.5 h 15 c 1.9,0 3.5,1.6 3.5,3.5 0,1.9 -1.6,3.5 -3.5,3.5 z m -30,0 h -15 c -1.9,0 -3.5,-1.6 -3.5,-3.5 0,-1.9 1.6,-3.5 3.5,-3.5 h 15 c 1.9,0 3.5,1.6 3.5,3.5 0,1.9 -1.6,3.5 -3.5,3.5 z m -30,0 h -15 c -1.9,0 -3.5,-1.6 -3.5,-3.5 0,-1.9 1.6,-3.5 3.5,-3.5 h 15 c 1.9,0 3.5,1.6 3.5,3.5 0,1.9 -1.6,3.5 -3.5,3.5 z m -30,0 h -15 c -1.9,0 -3.5,-1.6 -3.5,-3.5 0,-1.9 1.6,-3.5 3.5,-3.5 h 15 c 1.9,0 3.5,1.6 3.5,3.5 0,1.9 -1.6,3.5 -3.5,3.5 z"
id="path12524"
inkscape:connector-curvature="0"
style="fill:#e95f6a" /></g><g
id="g12530"><path
style="fill:#466bb0;fill-opacity:1" /></g><g
id="g12530"
style="fill:#466bb0;fill-opacity:1"><path
d="m 370.5,271.4 h -9 c -1.9,0 -3.5,-1.6 -3.5,-3.5 0,-1.9 1.6,-3.5 3.5,-3.5 h 9 c 1.9,0 3.5,1.6 3.5,3.5 0,1.9 -1.6,3.5 -3.5,3.5 z"
id="path12528"
inkscape:connector-curvature="0"
style="fill:#e95f6a" /></g></g><g
id="g12536"><path
style="fill:#466bb0;fill-opacity:1" /></g></g><g
id="g12536"
style="fill:#466bb0;fill-opacity:1"><path
d="m 612.5,279.4 h -14 c -1.9,0 -3.5,-1.6 -3.5,-3.5 0,-1.9 1.6,-3.5 3.5,-3.5 h 14 c 1.9,0 3.5,1.6 3.5,3.5 0,1.9 -1.6,3.5 -3.5,3.5 z m -28,0 h -14 c -1.9,0 -3.5,-1.6 -3.5,-3.5 0,-1.9 1.6,-3.5 3.5,-3.5 h 14 c 1.9,0 3.5,1.6 3.5,3.5 0,1.9 -1.6,3.5 -3.5,3.5 z m -28,0 h -14 c -1.9,0 -3.5,-1.6 -3.5,-3.5 0,-1.9 1.6,-3.5 3.5,-3.5 h 14 c 1.9,0 3.5,1.6 3.5,3.5 0,1.9 -1.6,3.5 -3.5,3.5 z m -28,0 h -14 c -1.9,0 -3.5,-1.6 -3.5,-3.5 0,-1.9 1.6,-3.5 3.5,-3.5 h 14 c 1.9,0 3.5,1.6 3.5,3.5 0,1.9 -1.6,3.5 -3.5,3.5 z"
id="path12534"
inkscape:connector-curvature="0"
style="fill:#e95f6a" /></g><g
id="g12540"><path
style="fill:#466bb0;fill-opacity:1" /></g><g
id="g12540"
style="fill:#466bb0;fill-opacity:1"><path
d="m 613.5,309.4 h -99 c -1.9,0 -3.5,-1.6 -3.5,-3.5 0,-1.9 1.6,-3.5 3.5,-3.5 h 99 c 1.9,0 3.5,1.6 3.5,3.5 0,1.9 -1.6,3.5 -3.5,3.5 z"
id="path12538"
inkscape:connector-curvature="0"
style="fill:#e95f6a" /></g><g
id="g12572"><g
id="g12550"><g
id="g12544"><path
style="fill:#466bb0;fill-opacity:1" /></g><g
id="g12572"
style="fill:#466bb0;fill-opacity:1"><g
id="g12550"
style="fill:#466bb0;fill-opacity:1"><g
id="g12544"
style="fill:#466bb0;fill-opacity:1"><path
d="m 92.8,27.7 c -1,0 -2,-0.4 -2.6,-1.2 -1.3,-1.5 -1.1,-3.7 0.4,-4.9 L 99.5,13.9 90.6,6.2 C 89.1,4.9 89,2.7 90.3,1.3 91.6,-0.2 93.8,-0.3 95.2,1 L 110.1,14 95,26.8 c -0.6,0.6 -1.4,0.9 -2.2,0.9 z"
id="path12542"
inkscape:connector-curvature="0"
style="fill:#e95f6a" /></g><g
id="g12548"><path
style="fill:#466bb0;fill-opacity:1" /></g><g
id="g12548"
style="fill:#466bb0;fill-opacity:1"><path
d="M 102.5,17.4 H 3.5 C 1.6,17.4 0,15.8 0,13.9 0,12 1.6,10.4 3.5,10.4 h 99 c 1.9,0 3.5,1.6 3.5,3.5 0,1.9 -1.6,3.5 -3.5,3.5 z"
id="path12546"
inkscape:connector-curvature="0"
style="fill:#e95f6a" /></g></g><g
id="g12560"><g
id="g12554"><path
style="fill:#466bb0;fill-opacity:1" /></g></g><g
id="g12560"
style="fill:#466bb0;fill-opacity:1"><g
id="g12554"
style="fill:#466bb0;fill-opacity:1"><path
d="m 92.8,71.7 c -1,0 -2,-0.4 -2.6,-1.2 -1.3,-1.5 -1.1,-3.7 0.4,-4.9 l 8.9,-7.7 -8.9,-7.7 C 89.1,48.9 89,46.7 90.3,45.3 91.6,43.8 93.8,43.7 95.2,45 L 110.1,58 95,70.8 c -0.6,0.6 -1.4,0.9 -2.2,0.9 z"
id="path12552"
inkscape:connector-curvature="0"
style="fill:#e95f6a" /></g><g
id="g12558"><path
style="fill:#466bb0;fill-opacity:1" /></g><g
id="g12558"
style="fill:#466bb0;fill-opacity:1"><path
d="M 102.5,61.4 H 3.5 C 1.6,61.4 0,59.8 0,57.9 0,56 1.6,54.4 3.5,54.4 h 99 c 1.9,0 3.5,1.6 3.5,3.5 0,1.9 -1.6,3.5 -3.5,3.5 z"
id="path12556"
inkscape:connector-curvature="0"
style="fill:#e95f6a" /></g></g><g
id="g12570"><g
id="g12564"><path
style="fill:#466bb0;fill-opacity:1" /></g></g><g
id="g12570"
style="fill:#466bb0;fill-opacity:1"><g
id="g12564"
style="fill:#466bb0;fill-opacity:1"><path
d="m 92.8,116.7 c -1,0 -2,-0.4 -2.6,-1.2 -1.3,-1.5 -1.1,-3.7 0.4,-4.9 l 8.9,-7.7 -8.9,-7.7 C 89.1,93.9 89,91.7 90.3,90.3 91.6,88.8 93.8,88.7 95.2,90 l 14.9,13 -15,12.9 c -0.7,0.5 -1.5,0.8 -2.3,0.8 z"
id="path12562"
inkscape:connector-curvature="0"
style="fill:#e95f6a" /></g><g
id="g12568"><path
style="fill:#466bb0;fill-opacity:1" /></g><g
id="g12568"
style="fill:#466bb0;fill-opacity:1"><path
d="M 102.5,106.4 H 3.5 C 1.6,106.4 0,104.8 0,102.9 0,101 1.6,99.4 3.5,99.4 h 99 c 1.9,0 3.5,1.6 3.5,3.5 0,1.9 -1.6,3.5 -3.5,3.5 z"
id="path12566"
inkscape:connector-curvature="0"
style="fill:#e95f6a" /></g></g></g><g
style="fill:#466bb0;fill-opacity:1" /></g></g></g><g
id="g12606"
style="fill:#452845;fill-opacity:1;stroke:none;stroke-opacity:1"><g
style="fill:#535f61;fill-opacity:1;stroke:none;stroke-opacity:1"><g
id="g12576"
style="fill:#452845;fill-opacity:1;stroke:none;stroke-opacity:1"><path
style="fill:#535f61;fill-opacity:1;stroke:none;stroke-opacity:1"><path
d="m 17.3,139.8 c 0,2 -0.8,3.3 -2.4,3.9 l 3.2,4.5 h -3.5 l -2.8,-4 H 9.9 v 4 H 7 v -12.6 h 4.8 c 2,0 3.4,0.3 4.2,1 0.8,0.7 1.3,1.8 1.3,3.2 z m -3.4,1.5 c 0.3,-0.3 0.5,-0.8 0.5,-1.5 0,-0.7 -0.2,-1.1 -0.5,-1.4 -0.4,-0.3 -1,-0.4 -1.9,-0.4 H 9.9 v 3.7 H 12 c 0.9,0.1 1.5,-0.1 1.9,-0.4 z"
id="path12574"
inkscape:connector-curvature="0"
style="fill:#452845;fill-opacity:1;stroke:none;stroke-opacity:1" /></g><g
style="fill:#535f61;fill-opacity:1;stroke:none;stroke-opacity:1" /></g><g
id="g12580"
style="fill:#452845;fill-opacity:1;stroke:none;stroke-opacity:1"><path
style="fill:#535f61;fill-opacity:1;stroke:none;stroke-opacity:1"><path
d="m 28.3,146.8 c -1.1,1 -2.4,1.5 -3.8,1.5 -1.5,0 -2.7,-0.5 -3.6,-1.4 -0.9,-0.9 -1.4,-2.1 -1.4,-3.6 0,-1.5 0.5,-2.7 1.5,-3.6 1,-0.9 2.1,-1.3 3.5,-1.3 1.4,0 2.5,0.4 3.4,1.2 0.9,0.8 1.4,1.9 1.4,3.3 v 1.4 H 22 c 0.1,0.5 0.4,1 0.8,1.3 0.5,0.3 1,0.5 1.6,0.5 0.9,0 1.7,-0.3 2.3,-1 z m -2.6,-5.7 c -0.4,-0.3 -0.8,-0.5 -1.4,-0.5 -0.6,0 -1,0.2 -1.5,0.5 -0.4,0.3 -0.7,0.8 -0.8,1.3 h 4.2 c 0,-0.5 -0.2,-1 -0.5,-1.3 z"
id="path12578"
inkscape:connector-curvature="0"
style="fill:#452845;fill-opacity:1;stroke:none;stroke-opacity:1" /></g><g
style="fill:#535f61;fill-opacity:1;stroke:none;stroke-opacity:1" /></g><g
id="g12584"
style="fill:#452845;fill-opacity:1;stroke:none;stroke-opacity:1"><path
style="fill:#535f61;fill-opacity:1;stroke:none;stroke-opacity:1"><path
d="m 31.8,147 c -0.9,-0.9 -1.4,-2.1 -1.4,-3.6 0,-1.5 0.5,-2.7 1.3,-3.6 0.9,-0.9 1.9,-1.4 3,-1.4 1.1,0 2.1,0.4 2.9,1.2 v -1.1 h 2.7 v 13.2 h -2.7 v -4.3 c -0.8,0.6 -1.6,0.9 -2.6,0.9 -1.2,0.1 -2.2,-0.4 -3.2,-1.3 z m 1.4,-3.6 c 0,0.8 0.2,1.4 0.7,1.9 0.5,0.5 1,0.7 1.6,0.7 0.6,0 1.2,-0.2 1.6,-0.7 0.4,-0.5 0.6,-1.1 0.6,-1.9 0,-0.8 -0.2,-1.4 -0.6,-2 -0.4,-0.5 -1,-0.8 -1.6,-0.8 -0.6,0 -1.2,0.3 -1.6,0.8 -0.5,0.6 -0.7,1.2 -0.7,2 z"
id="path12582"
inkscape:connector-curvature="0"
style="fill:#452845;fill-opacity:1;stroke:none;stroke-opacity:1" /></g><g
style="fill:#535f61;fill-opacity:1;stroke:none;stroke-opacity:1" /></g><g
id="g12588"
style="fill:#452845;fill-opacity:1;stroke:none;stroke-opacity:1"><path
style="fill:#535f61;fill-opacity:1;stroke:none;stroke-opacity:1"><path
d="m 49.2,143.8 v -5.2 h 2.7 v 9.7 H 49.2 V 147 c -0.7,0.9 -1.5,1.4 -2.6,1.4 -1.1,0 -2,-0.3 -2.7,-1 -0.7,-0.7 -1.1,-1.7 -1.1,-3 v -5.9 h 2.7 v 5.3 c 0,1.5 0.5,2.2 1.6,2.2 0.5,0 1,-0.2 1.4,-0.6 0.5,-0.3 0.7,-0.9 0.7,-1.6 z"
id="path12586"
inkscape:connector-curvature="0"
style="fill:#452845;fill-opacity:1;stroke:none;stroke-opacity:1" /></g><g
style="fill:#535f61;fill-opacity:1;stroke:none;stroke-opacity:1" /></g><g
id="g12592"
style="fill:#452845;fill-opacity:1;stroke:none;stroke-opacity:1"><path
style="fill:#535f61;fill-opacity:1;stroke:none;stroke-opacity:1"><path
d="m 62.9,146.8 c -1.1,1 -2.4,1.5 -3.8,1.5 -1.5,0 -2.7,-0.5 -3.6,-1.4 -0.9,-0.9 -1.4,-2.1 -1.4,-3.6 0,-1.5 0.5,-2.7 1.5,-3.6 1,-0.9 2.1,-1.3 3.5,-1.3 1.4,0 2.5,0.4 3.4,1.2 0.9,0.8 1.4,1.9 1.4,3.3 v 1.4 h -7.1 c 0.1,0.5 0.4,1 0.8,1.3 0.5,0.3 1,0.5 1.6,0.5 0.9,0 1.7,-0.3 2.3,-1 z m -2.6,-5.7 c -0.4,-0.3 -0.8,-0.5 -1.4,-0.5 -0.6,0 -1,0.2 -1.5,0.5 -0.4,0.3 -0.7,0.8 -0.8,1.3 h 4.2 c 0.1,-0.5 -0.1,-1 -0.5,-1.3 z"
id="path12590"
inkscape:connector-curvature="0"
style="fill:#452845;fill-opacity:1;stroke:none;stroke-opacity:1" /></g><g
style="fill:#535f61;fill-opacity:1;stroke:none;stroke-opacity:1" /></g><g
id="g12596"
style="fill:#452845;fill-opacity:1;stroke:none;stroke-opacity:1"><path
style="fill:#535f61;fill-opacity:1;stroke:none;stroke-opacity:1"><path
d="m 72.9,145.2 c 0,1 -0.4,1.7 -1.1,2.3 -0.7,0.6 -1.6,0.9 -2.7,0.9 -0.7,0 -1.5,-0.1 -2.2,-0.4 -0.7,-0.3 -1.5,-0.6 -2.1,-1.1 l 1.2,-1.7 c 1,0.8 2.1,1.2 3.2,1.2 0.3,0 0.6,-0.1 0.8,-0.2 0.2,-0.1 0.3,-0.3 0.3,-0.5 0,-0.2 -0.1,-0.4 -0.4,-0.6 -0.3,-0.2 -0.7,-0.4 -1.2,-0.5 -0.5,-0.1 -0.9,-0.3 -1.2,-0.4 -0.3,-0.1 -0.6,-0.3 -1,-0.5 -0.7,-0.5 -1.1,-1.1 -1.1,-2 0,-0.9 0.4,-1.6 1.1,-2.2 0.7,-0.6 1.7,-0.8 2.8,-0.8 1.1,0 2.3,0.4 3.4,1.2 l -1,1.8 c -0.8,-0.6 -1.7,-0.9 -2.5,-0.9 -0.8,0 -1.3,0.2 -1.3,0.7 0,0.3 0.1,0.5 0.4,0.6 0.3,0.1 0.7,0.3 1.3,0.5 0.6,0.2 1,0.3 1.3,0.4 0.3,0.1 0.6,0.3 0.9,0.5 0.8,0.1 1.1,0.8 1.1,1.7 z"
id="path12594"
inkscape:connector-curvature="0"
style="fill:#452845;fill-opacity:1;stroke:none;stroke-opacity:1" /></g><g
style="fill:#535f61;fill-opacity:1;stroke:none;stroke-opacity:1" /></g><g
id="g12600"
style="fill:#452845;fill-opacity:1;stroke:none;stroke-opacity:1"><path
style="fill:#535f61;fill-opacity:1;stroke:none;stroke-opacity:1"><path
d="m 78.1,140.5 v 4.3 c 0,0.4 0.1,0.7 0.3,0.9 0.2,0.2 0.4,0.3 0.7,0.3 0.5,0 0.9,-0.2 1.3,-0.7 l 1,1.9 c -0.8,0.8 -1.7,1.2 -2.7,1.2 -0.9,0 -1.7,-0.3 -2.4,-0.9 -0.6,-0.6 -1,-1.4 -1,-2.5 v -4.5 h -1.1 v -1.9 h 1.1 v -2.9 H 78 v 2.9 h 2.3 v 1.9 z"
id="path12598"
inkscape:connector-curvature="0"
style="fill:#452845;fill-opacity:1;stroke:none;stroke-opacity:1" /></g><g
style="fill:#535f61;fill-opacity:1;stroke:none;stroke-opacity:1" /></g><g
id="g12604"
style="fill:#452845;fill-opacity:1;stroke:none;stroke-opacity:1"><path
style="fill:#535f61;fill-opacity:1;stroke:none;stroke-opacity:1"><path
d="m 90.1,145.2 c 0,1 -0.4,1.7 -1.1,2.3 -0.7,0.6 -1.6,0.9 -2.7,0.9 -0.7,0 -1.5,-0.1 -2.2,-0.4 -0.7,-0.3 -1.5,-0.6 -2.1,-1.1 l 1.2,-1.7 c 1,0.8 2.1,1.2 3.2,1.2 0.3,0 0.6,-0.1 0.8,-0.2 0.2,-0.1 0.3,-0.3 0.3,-0.5 0,-0.2 -0.1,-0.4 -0.4,-0.6 -0.3,-0.2 -0.7,-0.4 -1.2,-0.5 -0.5,-0.1 -0.9,-0.3 -1.2,-0.4 -0.3,-0.1 -0.6,-0.3 -1,-0.5 -0.7,-0.5 -1.1,-1.1 -1.1,-2 0,-0.9 0.4,-1.6 1.1,-2.2 0.7,-0.6 1.7,-0.8 2.8,-0.8 1.1,0 2.3,0.4 3.4,1.2 l -1,1.8 c -0.8,-0.6 -1.7,-0.9 -2.5,-0.9 -0.8,0 -1.3,0.2 -1.3,0.7 0,0.3 0.1,0.5 0.4,0.6 0.3,0.1 0.7,0.3 1.3,0.5 0.6,0.2 1,0.3 1.3,0.4 0.3,0.1 0.6,0.3 0.9,0.5 0.8,0.1 1.1,0.8 1.1,1.7 z"
id="path12602"
inkscape:connector-curvature="0"
style="fill:#452845;fill-opacity:1;stroke:none;stroke-opacity:1" /></g></g><g
style="fill:#535f61;fill-opacity:1;stroke:none;stroke-opacity:1" /></g></g><g
id="g12620"
style="fill:#452845;fill-opacity:1"><g
style="fill:#535f61;fill-opacity:1"><g
id="g12610"
style="fill:#452845;fill-opacity:1"><path
style="fill:#535f61;fill-opacity:1"><path
d="m 274.5,74.1 v -4 h 9.1 v 2.1 l -5.1,10.5 h -3.1 l 4.9,-10.2 h -3.2 v 1.6 z"
id="path12608"
inkscape:connector-curvature="0"
style="fill:#452845;fill-opacity:1" /></g><g
style="fill:#535f61;fill-opacity:1" /></g><g
id="g12614"
style="fill:#452845;fill-opacity:1"><path
style="fill:#535f61;fill-opacity:1"><path
d="m 290.3,82.8 c -1.7,0 -3,-0.6 -3.9,-1.8 -0.9,-1.2 -1.3,-2.8 -1.3,-4.7 0,-2 0.4,-3.6 1.3,-4.7 0.9,-1.2 2.2,-1.8 3.9,-1.8 1.7,0 3,0.6 3.9,1.8 0.9,1.2 1.3,2.8 1.3,4.7 0,2 -0.4,3.6 -1.3,4.7 -0.9,1.1 -2.2,1.8 -3.9,1.8 z m -1.9,-9.5 c -0.4,0.8 -0.6,1.8 -0.6,3 0,1.3 0.2,2.3 0.6,3 0.4,0.8 1,1.2 1.9,1.2 0.9,0 1.5,-0.4 1.9,-1.2 0.4,-0.8 0.6,-1.8 0.6,-3 0,-1.3 -0.2,-2.3 -0.6,-3 -0.4,-0.8 -1,-1.2 -1.9,-1.2 -0.9,0 -1.5,0.4 -1.9,1.2 z"
id="path12612"
inkscape:connector-curvature="0"
style="fill:#452845;fill-opacity:1" /></g><g
style="fill:#535f61;fill-opacity:1" /></g><g
id="g12618"
style="fill:#452845;fill-opacity:1"><path
style="fill:#535f61;fill-opacity:1"><path
d="m 303,72.9 c 0,0.7 -0.3,1.3 -0.8,1.8 -0.5,0.5 -1.1,0.7 -1.9,0.7 -0.8,0 -1.4,-0.2 -1.9,-0.7 -0.5,-0.5 -0.8,-1.1 -0.8,-1.8 0,-0.7 0.3,-1.3 0.8,-1.8 0.5,-0.5 1.1,-0.7 1.9,-0.7 0.8,0 1.4,0.2 1.9,0.7 0.5,0.5 0.8,1.1 0.8,1.8 z m 6.9,-2.8 -9,12.6 h -3.1 l 9,-12.6 z m -10.1,3.5 c 0.1,0.2 0.3,0.2 0.5,0.2 0.2,0 0.4,-0.1 0.5,-0.2 0.1,-0.2 0.2,-0.4 0.2,-0.6 0,-0.3 -0.1,-0.5 -0.2,-0.7 -0.1,-0.2 -0.3,-0.3 -0.5,-0.3 -0.2,0 -0.4,0.1 -0.5,0.3 -0.1,0.2 -0.2,0.4 -0.2,0.7 0,0.2 0,0.4 0.2,0.6 z m 10.3,6.7 c 0,0.7 -0.3,1.3 -0.8,1.8 -0.5,0.5 -1.1,0.7 -1.9,0.7 -0.8,0 -1.4,-0.2 -1.9,-0.7 -0.5,-0.5 -0.8,-1.1 -0.8,-1.8 0,-0.7 0.3,-1.3 0.8,-1.8 0.5,-0.5 1.1,-0.7 1.9,-0.7 0.8,0 1.4,0.2 1.9,0.7 0.5,0.5 0.8,1.1 0.8,1.8 z m -3.2,0.6 c 0.1,0.2 0.3,0.2 0.5,0.2 0.2,0 0.4,-0.1 0.5,-0.2 0.1,-0.2 0.2,-0.4 0.2,-0.6 0,-0.2 -0.1,-0.5 -0.2,-0.7 -0.1,-0.2 -0.3,-0.3 -0.5,-0.3 -0.2,0 -0.4,0.1 -0.5,0.3 -0.1,0.2 -0.2,0.4 -0.2,0.7 0,0.3 0,0.5 0.2,0.6 z"
id="path12616"
inkscape:connector-curvature="0"
style="fill:#452845;fill-opacity:1" /></g></g><g
style="fill:#535f61;fill-opacity:1" /></g></g><g
id="g12634"
style="fill:#452845;fill-opacity:1"><g
style="fill:#535f61;fill-opacity:1"><g
id="g12624"
style="fill:#452845;fill-opacity:1"><path
style="fill:#535f61;fill-opacity:1"><path
d="m 275,242.3 v -2.4 h 7.7 v 1.9 l -2.6,2.9 c 1,0.2 1.8,0.6 2.3,1.3 0.6,0.7 0.8,1.5 0.8,2.3 0,1.3 -0.4,2.4 -1.3,3.1 -0.9,0.8 -2,1.1 -3.4,1.1 -1.4,0 -2.8,-0.5 -4.2,-1.5 l 1.2,-2.2 c 1.2,0.8 2.2,1.3 3.2,1.3 0.6,0 1,-0.1 1.4,-0.4 0.4,-0.3 0.5,-0.7 0.5,-1.2 0,-0.5 -0.2,-0.9 -0.6,-1.2 -0.4,-0.3 -1,-0.5 -1.7,-0.5 -0.4,0 -1,0.1 -1.7,0.3 V 245 l 2.4,-2.8 h -4 z"
id="path12622"
inkscape:connector-curvature="0"
style="fill:#452845;fill-opacity:1" /></g><g
style="fill:#535f61;fill-opacity:1" /></g><g
id="g12628"
style="fill:#452845;fill-opacity:1"><path
style="fill:#535f61;fill-opacity:1"><path
d="m 290.5,252.6 c -1.7,0 -3,-0.6 -3.9,-1.8 -0.9,-1.2 -1.3,-2.8 -1.3,-4.7 0,-2 0.4,-3.6 1.3,-4.7 0.9,-1.2 2.2,-1.8 3.9,-1.8 1.7,0 3,0.6 3.9,1.8 0.9,1.2 1.3,2.8 1.3,4.7 0,2 -0.4,3.6 -1.3,4.7 -0.9,1.1 -2.1,1.8 -3.9,1.8 z m -1.8,-9.5 c -0.4,0.8 -0.6,1.8 -0.6,3 0,1.3 0.2,2.3 0.6,3 0.4,0.8 1,1.2 1.9,1.2 0.9,0 1.5,-0.4 1.9,-1.2 0.4,-0.8 0.6,-1.8 0.6,-3 0,-1.3 -0.2,-2.3 -0.6,-3 -0.4,-0.8 -1,-1.2 -1.9,-1.2 -0.9,0 -1.5,0.4 -1.9,1.2 z"
id="path12626"
inkscape:connector-curvature="0"
style="fill:#452845;fill-opacity:1" /></g><g
style="fill:#535f61;fill-opacity:1" /></g><g
id="g12632"
style="fill:#452845;fill-opacity:1"><path
style="fill:#535f61;fill-opacity:1"><path
d="m 303.2,242.7 c 0,0.7 -0.3,1.3 -0.8,1.8 -0.5,0.5 -1.1,0.7 -1.9,0.7 -0.8,0 -1.4,-0.2 -1.9,-0.7 -0.5,-0.5 -0.8,-1.1 -0.8,-1.8 0,-0.7 0.3,-1.3 0.8,-1.8 0.5,-0.5 1.1,-0.7 1.9,-0.7 0.8,0 1.4,0.2 1.9,0.7 0.5,0.5 0.8,1.1 0.8,1.8 z m 6.9,-2.8 -9,12.6 H 298 l 9,-12.6 z m -10.1,3.5 c 0.1,0.2 0.3,0.2 0.5,0.2 0.2,0 0.4,-0.1 0.5,-0.2 0.1,-0.2 0.2,-0.4 0.2,-0.6 0,-0.3 -0.1,-0.5 -0.2,-0.7 -0.1,-0.2 -0.3,-0.3 -0.5,-0.3 -0.2,0 -0.4,0.1 -0.5,0.3 -0.1,0.2 -0.2,0.4 -0.2,0.7 0,0.2 0.1,0.4 0.2,0.6 z m 10.3,6.7 c 0,0.7 -0.3,1.3 -0.8,1.8 -0.5,0.5 -1.1,0.7 -1.9,0.7 -0.8,0 -1.4,-0.2 -1.9,-0.7 -0.5,-0.5 -0.8,-1.1 -0.8,-1.8 0,-0.7 0.3,-1.3 0.8,-1.8 0.5,-0.5 1.1,-0.7 1.9,-0.7 0.8,0 1.4,0.2 1.9,0.7 0.5,0.5 0.8,1.1 0.8,1.8 z m -3.2,0.6 c 0.1,0.2 0.3,0.2 0.5,0.2 0.2,0 0.4,-0.1 0.5,-0.2 0.1,-0.2 0.2,-0.4 0.2,-0.6 0,-0.2 -0.1,-0.5 -0.2,-0.7 -0.1,-0.2 -0.3,-0.3 -0.5,-0.3 -0.2,0 -0.4,0.1 -0.5,0.3 -0.1,0.2 -0.2,0.4 -0.2,0.7 0,0.3 0,0.5 0.2,0.6 z"
id="path12630"
inkscape:connector-curvature="0"
style="fill:#452845;fill-opacity:1" /></g></g><g
id="g12642"><path
style="fill:#535f61;fill-opacity:1" /></g></g><g
id="g12642"
style="fill:#466bb0;fill-opacity:1"><path
d="m 372.5,303.4 h -194 v -172 c 0,-1.9 1.6,-3.5 3.5,-3.5 1.9,0 3.5,1.6 3.5,3.5 v 165 h 187 c 1.9,0 3.5,1.6 3.5,3.5 0,1.9 -1.6,3.5 -3.5,3.5 z"
id="path12640"
inkscape:connector-curvature="0"
style="fill:#e95f6a" /></g><g
id="g12646"><path
style="fill:#466bb0;fill-opacity:1" /></g><g
id="g12646"
style="fill:#466bb0;fill-opacity:1"><path
d="m 364.8,312.7 c -1,0 -2,-0.4 -2.6,-1.2 -1.3,-1.5 -1.1,-3.7 0.4,-4.9 l 8.9,-7.7 -8.9,-7.7 c -1.5,-1.3 -1.6,-3.5 -0.3,-4.9 1.3,-1.5 3.5,-1.6 4.9,-0.3 l 14.9,13 -15,12.9 c -0.7,0.5 -1.5,0.8 -2.3,0.8 z"
id="path12644"
inkscape:connector-curvature="0"
style="fill:#e95f6a" /></g></g></svg>
style="fill:#466bb0;fill-opacity:1" /></g></g></svg>

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

@ -48,13 +48,13 @@ title: istio.io
<div class="col-sm-7">
<a href="{{ site.baseurl }}/docs/concepts/mixer.html"><button class="btn btn-grpc waves-effect waves-light btn-read-more">READ MORE</button></a>
</div>
<img class="col-sm-5 nofloat landing-image" src="{{ site.baseurl }}/img/policy.svg" alt="Web">
<img class="col-sm-5 nofloat landing-image-small" src="{{ site.baseurl }}/img/policy.svg" alt="Web">
</div>
</div>
<div class="row" >
<div class="col-md-11 nofloat center-block landing-row">
<img class="col-sm-5 landing-image" src="{{ site.baseurl }}/img/monitoring.svg" alt="In-depth Monitoring of Apis">
<img class="col-sm-5 landing-image-small" src="{{ site.baseurl }}/img/monitoring.svg" alt="In-depth Monitoring of APIs">
<h3 class="col-sm-7 landing-row-title">In-depth Telemetry and Reporting</h3>
<p class="col-sm-7">Understand the dependencies between services, the nature and flow of traffic between them and quickly identify issues with distributed tracing.</p>
<div class="col-sm-7 col-sm-offset-5 col-sm-offset-0">