You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1036 lines
458 KiB

3 years ago
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="Asciidoctor 2.0.10">
<meta name="description" content="Dockerfile instructions">
<meta name="keywords" content="Dockerfile">
<meta name="author" content="Apostolos rootApostolos@swarmlab.io">
<title>Cloud computing - Service mesh and microservices networking!</title>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700">
<style>
/* Asciidoctor default stylesheet | MIT License | https://asciidoctor.org */
/* Uncomment @import statement to use as custom stylesheet */
/*@import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700";*/
article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}
audio,video{display:inline-block}
audio:not([controls]){display:none;height:0}
html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}
a{background:none}
a:focus{outline:thin dotted}
a:active,a:hover{outline:0}
h1{font-size:2em;margin:.67em 0}
abbr[title]{border-bottom:1px dotted}
b,strong{font-weight:bold}
dfn{font-style:italic}
hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}
mark{background:#ff0;color:#000}
code,kbd,pre,samp{font-family:monospace;font-size:1em}
pre{white-space:pre-wrap}
q{quotes:"\201C" "\201D" "\2018" "\2019"}
small{font-size:80%}
sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
sup{top:-.5em}
sub{bottom:-.25em}
img{border:0}
svg:not(:root){overflow:hidden}
figure{margin:0}
fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
legend{border:0;padding:0}
button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
button,input{line-height:normal}
button,select{text-transform:none}
button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}
button[disabled],html input[disabled]{cursor:default}
input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}
button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
textarea{overflow:auto;vertical-align:top}
table{border-collapse:collapse;border-spacing:0}
*,*::before,*::after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}
html,body{font-size:100%}
body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
a:hover{cursor:pointer}
img,object,embed{max-width:100%;height:auto}
object,embed{height:100%}
img{-ms-interpolation-mode:bicubic}
.left{float:left!important}
.right{float:right!important}
.text-left{text-align:left!important}
.text-right{text-align:right!important}
.text-center{text-align:center!important}
.text-justify{text-align:justify!important}
.hide{display:none}
img,object,svg{display:inline-block;vertical-align:middle}
textarea{height:auto;min-height:50px}
select{width:100%}
.center{margin-left:auto;margin-right:auto}
.stretch{width:100%}
.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;direction:ltr}
a{color:#2156a5;text-decoration:underline;line-height:inherit}
a:hover,a:focus{color:#1d4b8f}
a img{border:0}
p{font-family:inherit;font-weight:400;font-size:1em;line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}
p aside{font-size:.875em;line-height:1.35;font-style:italic}
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em}
h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0}
h1{font-size:2.125em}
h2{font-size:1.6875em}
h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em}
h4,h5{font-size:1.125em}
h6{font-size:1em}
hr{border:solid #dddddf;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em;height:0}
em,i{font-style:italic;line-height:inherit}
strong,b{font-weight:bold;line-height:inherit}
small{font-size:60%;line-height:inherit}
code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)}
ul,ol,dl{font-size:1em;line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}
ul,ol{margin-left:1.5em}
ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0;font-size:1em}
ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit}
ul.square{list-style-type:square}
ul.circle{list-style-type:circle}
ul.disc{list-style-type:disc}
ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0}
dl dt{margin-bottom:.3125em;font-weight:bold}
dl dd{margin-bottom:1.25em}
abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help}
abbr{text-transform:none}
blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
blockquote cite{display:block;font-size:.9375em;color:rgba(0,0,0,.6)}
blockquote cite::before{content:"\2014 \0020"}
blockquote cite a,blockquote cite a:visited{color:rgba(0,0,0,.6)}
blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
@media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
h1{font-size:2.75em}
h2{font-size:2.3125em}
h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
h4{font-size:1.4375em}}
table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede}
table thead,table tfoot{background:#f7f8f7}
table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
table tr.even,table tr.alt{background:#f8f8f7}
table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6}
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
.clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table}
.clearfix::after,.float-group::after{clear:both}
:not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed;word-wrap:break-word}
:not(pre)>code.nobreak{word-wrap:normal}
:not(pre)>code.nowrap{white-space:nowrap}
pre{color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;line-height:1.45;text-rendering:optimizeSpeed}
pre code,pre pre{color:inherit;font-size:inherit;line-height:inherit}
pre>code{display:block}
pre.nowrap,pre.nowrap pre{white-space:pre;word-wrap:normal}
em em{font-style:normal}
strong strong{font-weight:400}
.keyseq{color:rgba(51,51,51,.8)}
kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background:#f7f7f7;border:1px solid #ccc;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em white inset;box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em #fff inset;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap}
.keyseq kbd:first-child{margin-left:0}
.keyseq kbd:last-child{margin-right:0}
.menuseq,.menuref{color:#000}
.menuseq b:not(.caret),.menuref{font-weight:inherit}
.menuseq{word-spacing:-.02em}
.menuseq b.caret{font-size:1.25em;line-height:.8}
.menuseq i.caret{font-weight:bold;text-align:center;width:.45em}
b.button::before,b.button::after{position:relative;top:-1px;font-weight:400}
b.button::before{content:"[";padding:0 3px 0 2px}
b.button::after{content:"]";padding:0 2px 0 3px}
p a>code:hover{color:rgba(0,0,0,.9)}
#header,#content,#footnotes,#footer{width:100%;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em}
#header::before,#header::after,#content::before,#content::after,#footnotes::before,#footnotes::after,#footer::before,#footer::after{content:" ";display:table}
#header::after,#content::after,#footnotes::after,#footer::after{clear:both}
#content{margin-top:1.25em}
#content::before{content:none}
#header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0}
#header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #dddddf}
#header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #dddddf;padding-bottom:8px}
#header .details{border-bottom:1px solid #dddddf;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap}
#header .details span:first-child{margin-left:-.125em}
#header .details span.email a{color:rgba(0,0,0,.85)}
#header .details br{display:none}
#header .details br+span::before{content:"\00a0\2013\00a0"}
#header .details br+span.author::before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)}
#header .details br+span#revremark::before{content:"\00a0|\00a0"}
#header #revnumber{text-transform:capitalize}
#header #revnumber::after{content:"\00a0"}
#content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #dddddf;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem}
#toc{border-bottom:1px solid #e7e7e9;padding-bottom:.5em}
#toc>ul{margin-left:.125em}
#toc ul.sectlevel0>li>a{font-style:italic}
#toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0}
#toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none}
#toc li{line-height:1.3334;margin-top:.3334em}
#toc a{text-decoration:none}
#toc a:active{text-decoration:underline}
#toctitle{color:#7a2518;font-size:1.2em}
@media screen and (min-width:768px){#toctitle{font-size:1.375em}
body.toc2{padding-left:15em;padding-right:0}
#toc.toc2{margin-top:0!important;background:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #e7e7e9;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto}
#toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em}
#toc.toc2>ul{font-size:.9em;margin-bottom:0}
#toc.toc2 ul ul{margin-left:0;padding-left:1em}
#toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em}
body.toc2.toc-right{padding-left:0;padding-right:15em}
body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #e7e7e9;left:auto;right:0}}
@media screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0}
#toc.toc2{width:20em}
#toc.toc2 #toctitle{font-size:1.375em}
#toc.toc2>ul{font-size:.95em}
#toc.toc2 ul ul{padding-left:1.25em}
body.toc2.toc-right{padding-left:0;padding-right:20em}}
#content #toc{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
#content #toc>:first-child{margin-top:0}
#content #toc>:last-child{margin-bottom:0}
#footer{max-width:100%;background:rgba(0,0,0,.8);padding:1.25em}
#footer-text{color:rgba(255,255,255,.8);line-height:1.44}
#content{margin-bottom:.625em}
.sect1{padding-bottom:.625em}
@media screen and (min-width:768px){#content{margin-bottom:1.25em}
.sect1{padding-bottom:1.25em}}
.sect1:last-child{padding-bottom:0}
.sect1+.sect1{border-top:1px solid #e7e7e9}
#content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400}
#content h1>a.anchor::before,h2>a.anchor::before,h3>a.anchor::before,#toctitle>a.anchor::before,.sidebarblock>.content>.title>a.anchor::before,h4>a.anchor::before,h5>a.anchor::before,h6>a.anchor::before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em}
#content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible}
#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none}
#content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221}
details,.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em}
details>summary:first-of-type{cursor:pointer;display:list-item;outline:none;margin-bottom:.75em}
.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic}
table.tableblock.fit-content>caption.title{white-space:nowrap;width:0}
.paragraph.lead>p,#preamble>.sectionbody>[class="paragraph"]:first-of-type p{font-size:1.21875em;line-height:1.6;color:rgba(0,0,0,.85)}
table.tableblock #preamble>.sectionbody>[class="paragraph"]:first-of-type p{font-size:inherit}
.admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%}
.admonitionblock>table td.icon{text-align:center;width:80px}
.admonitionblock>table td.icon img{max-width:none}
.admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6)}
.admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
.exampleblock>.content{border-style:solid;border-width:1px;border-color:#e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;-webkit-border-radius:4px;border-radius:4px}
.exampleblock>.content>:first-child{margin-top:0}
.exampleblock>.content>:last-child{margin-bottom:0}
.sidebarblock{border-style:solid;border-width:1px;border-color:#dbdbd6;margin-bottom:1.25em;padding:1.25em;background:#f3f3f2;-webkit-border-radius:4px;border-radius:4px}
.sidebarblock>:first-child{margin-top:0}
.sidebarblock>:last-child{margin-bottom:0}
.sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
.literalblock pre,.listingblock>.content>pre{-webkit-border-radius:4px;border-radius:4px;word-wrap:break-word;overflow-x:auto;padding:1em;font-size:.8125em}
@media screen and (min-width:768px){.literalblock pre,.listingblock>.content>pre{font-size:.90625em}}
@media screen and (min-width:1280px){.literalblock pre,.listingblock>.content>pre{font-size:1em}}
.literalblock pre,.listingblock>.content>pre:not(.highlight),.listingblock>.content>pre[class="highlight"],.listingblock>.content>pre[class^="highlight "]{background:#f7f7f8}
.literalblock.output pre{color:#f7f7f8;background:rgba(0,0,0,.9)}
.listingblock>.content{position:relative}
.listingblock code[data-lang]::before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:inherit;opacity:.5}
.listingblock:hover code[data-lang]::before{display:block}
.listingblock.terminal pre .command::before{content:attr(data-prompt);padding-right:.5em;color:inherit;opacity:.5}
.listingblock.terminal pre .command:not([data-prompt])::before{content:"$"}
.listingblock pre.highlightjs{padding:0}
.listingblock pre.highlightjs>code{padding:1em;-webkit-border-radius:4px;border-radius:4px}
.listingblock pre.prettyprint{border-width:0}
.prettyprint{background:#f7f7f8}
pre.prettyprint .linenums{line-height:1.45;margin-left:2em}
pre.prettyprint li{background:none;list-style-type:inherit;padding-left:0}
pre.prettyprint li code[data-lang]::before{opacity:1}
pre.prettyprint li:not(:first-child) code[data-lang]::before{display:none}
table.linenotable{border-collapse:separate;border:0;margin-bottom:0;background:none}
table.linenotable td[class]{color:inherit;vertical-align:top;padding:0;line-height:inherit;white-space:normal}
table.linenotable td.code{padding-left:.75em}
table.linenotable td.linenos{border-right:1px solid currentColor;opacity:.35;padding-right:.5em}
pre.pygments .lineno{border-right:1px solid currentColor;opacity:.35;display:inline-block;margin-right:.75em}
pre.pygments .lineno::before{content:"";margin-right:-.125em}
.quoteblock{margin:0 1em 1.25em 1.5em;display:table}
.quoteblock:not(.excerpt)>.title{margin-left:-1.5em;margin-bottom:.75em}
.quoteblock blockquote,.quoteblock p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify}
.quoteblock blockquote{margin:0;padding:0;border:0}
.quoteblock blockquote::before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)}
.quoteblock blockquote>.paragraph:last-child p{margin-bottom:0}
.quoteblock .attribution{margin-top:.75em;margin-right:.5ex;text-align:right}
.verseblock{margin:0 1em 1.25em}
.verseblock pre{font-family:"Open Sans","DejaVu Sans",sans;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility}
.verseblock pre strong{font-weight:400}
.verseblock .attribution{margin-top:1.25rem;margin-left:.5ex}
.quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic}
.quoteblock .attribution br,.verseblock .attribution br{display:none}
.quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)}
.quoteblock.abstract blockquote::before,.quoteblock.excerpt blockquote::before,.quoteblock .quoteblock blockquote::before{display:none}
.quoteblock.abstract blockquote,.quoteblock.abstract p,.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{line-height:1.6;word-spacing:0}
.quoteblock.abstract{margin:0 1em 1.25em;display:block}
.quoteblock.abstract>.title{margin:0 0 .375em;font-size:1.15em;text-align:center}
.quoteblock.excerpt>blockquote,.quoteblock .quoteblock{padding:0 0 .25em 1em;border-left:.25em solid #dddddf}
.quoteblock.excerpt,.quoteblock .quoteblock{margin-left:0}
.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:1.0625rem}
.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;text-align:left;margin-right:0}
table.tableblock{max-width:100%;border-collapse:separate}
p.tableblock:last-child{margin-bottom:0}
td.tableblock>.content>:last-child{margin-bottom:-1.25em}
td.tableblock>.content>:last-child.sidebarblock{margin-bottom:0}
table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
table.grid-all>thead>tr>.tableblock,table.grid-all>tbody>tr>.tableblock{border-width:0 1px 1px 0}
table.grid-all>tfoot>tr>.tableblock{border-width:1px 1px 0 0}
table.grid-cols>*>tr>.tableblock{border-width:0 1px 0 0}
table.grid-rows>thead>tr>.tableblock,table.grid-rows>tbody>tr>.tableblock{border-width:0 0 1px}
table.grid-rows>tfoot>tr>.tableblock{border-width:1px 0 0}
table.grid-all>*>tr>.tableblock:last-child,table.grid-cols>*>tr>.tableblock:last-child{border-right-width:0}
table.grid-all>tbody>tr:last-child>.tableblock,table.grid-all>thead:last-child>tr>.tableblock,table.grid-rows>tbody>tr:last-child>.tableblock,table.grid-rows>thead:last-child>tr>.tableblock{border-bottom-width:0}
table.frame-all{border-width:1px}
table.frame-sides{border-width:0 1px}
table.frame-topbot,table.frame-ends{border-width:1px 0}
table.stripes-all tr,table.stripes-odd tr:nth-of-type(odd),table.stripes-even tr:nth-of-type(even),table.stripes-hover tr:hover{background:#f8f8f7}
th.halign-left,td.halign-left{text-align:left}
th.halign-right,td.halign-right{text-align:right}
th.halign-center,td.halign-center{text-align:center}
th.valign-top,td.valign-top{vertical-align:top}
th.valign-bottom,td.valign-bottom{vertical-align:bottom}
th.valign-middle,td.valign-middle{vertical-align:middle}
table thead th,table tfoot th{font-weight:bold}
tbody tr th{display:table-cell;line-height:1.6;background:#f7f8f7}
tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
p.tableblock>code:only-child{background:none;padding:0}
p.tableblock{font-size:1em}
ol{margin-left:1.75em}
ul li ol{margin-left:1.5em}
dl dd{margin-left:1.125em}
dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0}
ol>li p,ul>li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none}
ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em}
ul.unstyled,ol.unstyled{margin-left:0}
ul.checklist{margin-left:.625em}
ul.checklist li>p:first-child>.fa-square-o:first-child,ul.checklist li>p:first-child>.fa-check-square-o:first-child{width:1.25em;font-size:.8em;position:relative;bottom:.125em}
ul.checklist li>p:first-child>input[type="checkbox"]:first-child{margin-right:.25em}
ul.inline{display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap;list-style:none;margin:0 0 .625em -1.25em}
ul.inline>li{margin-left:1.25em}
.unstyled dl dt{font-weight:400;font-style:normal}
ol.arabic{list-style-type:decimal}
ol.decimal{list-style-type:decimal-leading-zero}
ol.loweralpha{list-style-type:lower-alpha}
ol.upperalpha{list-style-type:upper-alpha}
ol.lowerroman{list-style-type:lower-roman}
ol.upperroman{list-style-type:upper-roman}
ol.lowergreek{list-style-type:lower-greek}
.hdlist>table,.colist>table{border:0;background:none}
.hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
td.hdlist1{font-weight:bold;padding-bottom:1.25em}
.literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
.colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top}
.colist td:not([class]):first-child img{max-width:none}
.colist td:not([class]):last-child{padding:.25em 0}
.thumb,.th{line-height:0;display:inline-block;border:solid 4px #fff;-webkit-box-shadow:0 0 0 1px #ddd;box-shadow:0 0 0 1px #ddd}
.imageblock.left{margin:.25em .625em 1.25em 0}
.imageblock.right{margin:.25em 0 1.25em .625em}
.imageblock>.title{margin-bottom:0}
.imageblock.thumb,.imageblock.th{border-width:6px}
.imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em}
.image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0}
.image.left{margin-right:.625em}
.image.right{margin-left:.625em}
a.image{text-decoration:none;display:inline-block}
a.image object{pointer-events:none}
sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super}
sup.footnote a,sup.footnoteref a{text-decoration:none}
sup.footnote a:active,sup.footnoteref a:active{text-decoration:underline}
#footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em}
#footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em;border-width:1px 0 0}
#footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;margin-bottom:.2em}
#footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none;margin-left:-1.05em}
#footnotes .footnote:last-of-type{margin-bottom:0}
#content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0}
.gist .file-data>table{border:0;background:#fff;width:100%;margin-bottom:0}
.gist .file-data>table td.line-data{width:99%}
div.unbreakable{page-break-inside:avoid}
.big{font-size:larger}
.small{font-size:smaller}
.underline{text-decoration:underline}
.overline{text-decoration:overline}
.line-through{text-decoration:line-through}
.aqua{color:#00bfbf}
.aqua-background{background:#00fafa}
.black{color:#000}
.black-background{background:#000}
.blue{color:#0000bf}
.blue-background{background:#0000fa}
.fuchsia{color:#bf00bf}
.fuchsia-background{background:#fa00fa}
.gray{color:#606060}
.gray-background{background:#7d7d7d}
.green{color:#006000}
.green-background{background:#007d00}
.lime{color:#00bf00}
.lime-background{background:#00fa00}
.maroon{color:#600000}
.maroon-background{background:#7d0000}
.navy{color:#000060}
.navy-background{background:#00007d}
.olive{color:#606000}
.olive-background{background:#7d7d00}
.purple{color:#600060}
.purple-background{background:#7d007d}
.red{color:#bf0000}
.red-background{background:#fa0000}
.silver{color:#909090}
.silver-background{background:#bcbcbc}
.teal{color:#006060}
.teal-background{background:#007d7d}
.white{color:#bfbfbf}
.white-background{background:#fafafa}
.yellow{color:#bfbf00}
.yellow-background{background:#fafa00}
span.icon>.fa{cursor:default}
a span.icon>.fa{cursor:inherit}
.admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}
.admonitionblock td.icon .icon-note::before{content:"\f05a";color:#19407c}
.admonitionblock td.icon .icon-tip::before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111}
.admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900}
.admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400}
.admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000}
.conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
.conum[data-value] *{color:#fff!important}
.conum[data-value]+b{display:none}
.conum[data-value]::after{content:attr(data-value)}
pre .conum[data-value]{position:relative;top:-.125em}
b.conum *{color:inherit!important}
.conum:not([data-value]):empty{display:none}
dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility}
h1,h2,p,td.content,span.alt{letter-spacing:-.01em}
p strong,td.content strong,div.footnote strong{letter-spacing:-.005em}
p,blockquote,dt,td.content,span.alt{font-size:1.0625rem}
p{margin-bottom:1.25rem}
.sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em}
.exampleblock>.content{background:#fffef7;border-color:#e0e0dc;-webkit-box-shadow:0 1px 4px #e0e0dc;box-shadow:0 1px 4px #e0e0dc}
.print-only{display:none!important}
@page{margin:1.25cm .75cm}
@media print{*{-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:none!important}
html{font-size:80%}
a{color:inherit!important;text-decoration:underline!important}
a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important}
a[href^="http:"]:not(.bare)::after,a[href^="https:"]:not(.bare)::after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em}
abbr[title]::after{content:" (" attr(title) ")"}
pre,blockquote,tr,img,object,svg{page-break-inside:avoid}
thead{display:table-header-group}
svg{max-width:100%}
p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
#toc,.sidebarblock,.exampleblock>.content{background:none!important}
#toc{border-bottom:1px solid #dddddf!important;padding-bottom:0!important}
body.book #header{text-align:center}
body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em}
body.book #header .details{border:0!important;display:block;padding:0!important}
body.book #header .details span:first-child{margin-left:0!important}
body.book #header .details br{display:block}
body.book #header .details br+span::before{content:none!important}
body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important}
body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always}
.listingblock code[data-lang]::before{display:block}
#footer{padding:0 .9375em}
.hide-on-print{display:none!important}
.print-only{display:block!important}
.hide-for-print{display:none!important}
.show-for-print{display:inherit!important}}
@media print,amzn-kf8{#header>h1:first-child{margin-top:1.25rem}
.sect1{padding:0!important}
.sect1+.sect1{border:0}
#footer{background:none}
#footer-text{color:rgba(0,0,0,.6);font-size:.9em}}
@media amzn-kf8{#header,#content,#footnotes,#footer{padding:0}}
</style>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
</head>
<body class="article toc2 toc-right">
<div id="header">
<h1>Cloud computing - Service mesh and microservices networking!</h1>
<div class="details">
<span id="author" class="author">Apostolos rootApostolos@swarmlab.io</span><br>
</div>
<div id="toc" class="toc2">
<div id="toctitle">Table of contents</div>
<ul class="sectlevel1">
<li><a href="#_general_info">1. General info:</a>
<ul class="sectlevel2">
<li><a href="#_timeframe">1.1. Timeframe:</a></li>
<li><a href="#_what_will_i_learn">1.2. What will i learn?</a></li>
3 years ago
<li><a href="#_what_tools_will_i_need">1.3. What tools will I need</a>
<ul class="sectlevel3">
<li><a href="#_swarmlab_io_hybrid">1.3.1. Swarmlab.io hybrid</a></li>
</ul>
</li>
3 years ago
<li><a href="#_what_students_can_take_this_course">1.4. What students can take this course</a></li>
<li><a href="#_how_is_the_course_going_to_take_place">1.5. How is the course going to take place</a></li>
<li><a href="#_will_there_be_some_kind_of_examcertificate_what_will_i_gain">1.6. Will there be some kind of exam/certificate? What will i gain?</a></li>
</ul>
</li>
<li><a href="#_course_description">2. Course Description</a>
<ul class="sectlevel2">
<li><a href="#_cloud_microservice">2.1. Cloud &amp; microservice</a>
<ul class="sectlevel3">
<li><a href="#_docker_app">2.1.1. docker app</a></li>
<li><a href="#_docker_swarm">2.1.2. docker swarm</a></li>
<li><a href="#_orchestration">2.1.3. Orchestration</a></li>
</ul>
</li>
<li><a href="#_administer_and_maintain_a_swarm_of_docker_engines">2.2. Administer and maintain a swarm of Docker Engines</a>
<ul class="sectlevel3">
<li><a href="#_manager_nodes">2.2.1. manager nodes</a></li>
<li><a href="#_monitor_swarm_health">2.2.2. Monitor swarm health</a></li>
<li><a href="#_scheduling_services_on_a_docker_swarm_mode_cluster">2.2.3. Scheduling Services on a Docker Swarm Mode Cluster</a></li>
<li><a href="#_ansible">2.2.4. ansible</a></li>
</ul>
</li>
<li><a href="#_create_service_on_nodes">2.3. Create service on nodes</a></li>
<li><a href="#_monitoring_service_applications_communication">2.4. Monitoring - service applications communication</a>
<ul class="sectlevel3">
<li><a href="#_real_time_datalog_collection">2.4.1. Real-Time data/Log Collection</a></li>
</ul>
</li>
<li><a href="#_create_nosql_db_mongo_cluster">2.5. create noSQL DB (mongo cluster)</a>
<ul class="sectlevel3">
<li><a href="#_create_replicas">2.5.1. create replicas</a></li>
</ul>
</li>
<li><a href="#_central_web_admin_interface">2.6. central web admin interface</a>
<ul class="sectlevel3">
<li><a href="#_vuejs">2.6.1. vuejs</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div id="content">
<div id="preamble">
<div class="sectionbody">
<div class="sidebarblock">
<div class="content">
<div class="title">Service mesh and microservices networking</div>
<div class="paragraph">
<p>We will be trying to create a swarm implementation that will allow communication between all of the members/nodes.</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
<div class="paragraph">
<div class="title">Imaging a swarm</div>
<p><span class="image"><img src="data:image/png;base64,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
</div>
<div class="paragraph">
<p>To undertand this better lets look at the picture bellow and imagine that red dots are iot devices that can send and receive and black ones are clients that gather data.</p>
</div>
<div class="paragraph">
<div class="title">Architecture of swarm communication</div>
<p><span class="image"><img src="data:image/png;base64,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
</div>
<div class="ulist">
<ul>
<li>
<p>Red Node: Server/Client and Gateway Role</p>
</li>
<li>
<p>Black and Red Node: Client Role</p>
</li>
</ul>
</div>
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p><strong>To make our life easier at this task we will be using the following tools&#8230;&#8203;</strong></p>
</div>
<div class="ulist">
<ul>
<li>
3 years ago
<p>Docker <span class="image"><a class="image" href="https://en.wikipedia.org/wiki/Docker_(software)" target="_blank" rel="noopener"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACqSURBVDhPvZErDgJBEAXHIZE4roBEIjkGkiMgSRBwAywCz1GQSE7AIai3pCfNbDcfAZVUstme93ozW/7FENfOHY7xYyZo4Q3e8IBPDHCJftMMPTpzwiNqXtHggnv0BQs0LDxHm1e0WeEMHxa9gt4LRxsWuhNZyQqicEhUkG1uL7YjKlhhuzk615EOGn5XoM/dPh5fkhaM8Ip2IPOM4SWKKUYh79vf+SWl3AFDUSuEoG05SgAAAABJRU5ErkJggg==" alt="link icon 16"></a></span></p>
3 years ago
</li>
<li>
3 years ago
<p>Ansible <span class="image"><a class="image" href="https://en.wikipedia.org/wiki/Ansible_(software)" target="_blank" rel="noopener"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACqSURBVDhPvZErDgJBEAXHIZE4roBEIjkGkiMgSRBwAywCz1GQSE7AIai3pCfNbDcfAZVUstme93ozW/7FENfOHY7xYyZo4Q3e8IBPDHCJftMMPTpzwiNqXtHggnv0BQs0LDxHm1e0WeEMHxa9gt4LRxsWuhNZyQqicEhUkG1uL7YjKlhhuzk615EOGn5XoM/dPh5fkhaM8Ip2IPOM4SWKKUYh79vf+SWl3AFDUSuEoG05SgAAAABJRU5ErkJggg==" alt="link icon 16"></a></span></p>
3 years ago
</li>
<li>
3 years ago
<p>NodeJS <span class="image"><a class="image" href="https://en.wikipedia.org/wiki/Node.js" target="_blank" rel="noopener"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACqSURBVDhPvZErDgJBEAXHIZE4roBEIjkGkiMgSRBwAywCz1GQSE7AIai3pCfNbDcfAZVUstme93ozW/7FENfOHY7xYyZo4Q3e8IBPDHCJftMMPTpzwiNqXtHggnv0BQs0LDxHm1e0WeEMHxa9gt4LRxsWuhNZyQqicEhUkG1uL7YjKlhhuzk615EOGn5XoM/dPh5fkhaM8Ip2IPOM4SWKKUYh79vf+SWl3AFDUSuEoG05SgAAAABJRU5ErkJggg==" alt="link icon 16"></a></span></p>
3 years ago
</li>
<li>
3 years ago
<p>VueJS <span class="image"><a class="image" href="https://en.wikipedia.org/wiki/Vue.js" target="_blank" rel="noopener"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACqSURBVDhPvZErDgJBEAXHIZE4roBEIjkGkiMgSRBwAywCz1GQSE7AIai3pCfNbDcfAZVUstme93ozW/7FENfOHY7xYyZo4Q3e8IBPDHCJftMMPTpzwiNqXtHggnv0BQs0LDxHm1e0WeEMHxa9gt4LRxsWuhNZyQqicEhUkG1uL7YjKlhhuzk615EOGn5XoM/dPh5fkhaM8Ip2IPOM4SWKKUYh79vf+SWl3AFDUSuEoG05SgAAAABJRU5ErkJggg==" alt="link icon 16"></a></span></p>
3 years ago
</li>
<li>
3 years ago
<p>Redis <span class="image"><a class="image" href="https://en.wikipedia.org/wiki/Redis" target="_blank" rel="noopener"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACqSURBVDhPvZErDgJBEAXHIZE4roBEIjkGkiMgSRBwAywCz1GQSE7AIai3pCfNbDcfAZVUstme93ozW/7FENfOHY7xYyZo4Q3e8IBPDHCJftMMPTpzwiNqXtHggnv0BQs0LDxHm1e0WeEMHxa9gt4LRxsWuhNZyQqicEhUkG1uL7YjKlhhuzk615EOGn5XoM/dPh5fkhaM8Ip2IPOM4SWKKUYh79vf+SWl3AFDUSuEoG05SgAAAABJRU5ErkJggg==" alt="link icon 16"></a></span></p>
3 years ago
</li>
<li>
3 years ago
<p>MongoDB <span class="image"><a class="image" href="https://en.wikipedia.org/wiki/MongoDB" target="_blank" rel="noopener"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACqSURBVDhPvZErDgJBEAXHIZE4roBEIjkGkiMgSRBwAywCz1GQSE7AIai3pCfNbDcfAZVUstme93ozW/7FENfOHY7xYyZo4Q3e8IBPDHCJftMMPTpzwiNqXtHggnv0BQs0LDxHm1e0WeEMHxa9gt4LRxsWuhNZyQqicEhUkG1uL7YjKlhhuzk615EOGn5XoM/dPh5fkhaM8Ip2IPOM4SWKKUYh79vf+SWl3AFDUSuEoG05SgAAAABJRU5ErkJggg==" alt="link icon 16"></a></span></p>
3 years ago
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_general_info">1. General info:</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_timeframe">1.1. Timeframe:</h3>
<div class="paragraph">
<p>This is a project that will be deleveloped thoughout the semester 2021.</p>
</div>
3 years ago
<div class="literalblock">
<div class="title">Courses Time: 11.00-13.00</div>
<div class="content">
<pre>Date</pre>
</div>
</div>
<div class="ulist">
<ul>
<li>
3 years ago
<p>2021-03-13, 2021-03-20, 2021-03-27</p>
3 years ago
</li>
<li>
3 years ago
<p>2021-04-03, 2021-04-10, 2021-04-17, 2021-04-24</p>
3 years ago
</li>
<li>
3 years ago
<p>2021-05-15, 2021-05-22, 2021-05-29, 2021-06-05</p>
3 years ago
</li>
<li>
3 years ago
<p>2021-06-12, 2021-06-19</p>
3 years ago
</li>
</ul>
</div>
3 years ago
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
3 years ago
<div class="paragraph">
<p>(* The link to participate will be <strong>announced here</strong>.)</p>
</div>
<div class="paragraph">
<p><a href="http://www.twitch.tv/swarmlab" target="_blank" rel="noopener">http://www.twitch.tv/swarmlab</a></p>
</div>
<div class="paragraph">
<p>For questions and commucation between participants (<strong>at any time</strong> not only for the lessons!) you can use Gitter following the link below.</p>
</div>
<div class="paragraph">
<p>Ofcourse you can also use the Twitch chat during the live!!!</p>
</div>
<div class="paragraph">
<p>Please know that during the stream the <strong>only</strong> email that will be monitored and answered is <a href="mailto:courses@swarmlab.io">courses@swarmlab.io</a><br>
3 years ago
(but please prefer community chat on gitter! its both easier and you can also talk to each other)</p>
3 years ago
</div>
3 years ago
<div class="ulist">
<ul>
<li>
3 years ago
<p>You can also see detailed information about the sessions etc in the <strong>callendar</strong> (main page of the swarmlab client) after installation (see section "What tools will I need")</p>
3 years ago
</li>
<li>
<p>For any questions you can visit our community page on <a href="https://gitter.im/swarmlab-hybrid/community" target="_blank" rel="noopener">gitter</a></p>
</li>
<li>
<p>If none of the above solved your problem, you can always use good old-fashioned <a href="mailto:support@swarmlab.io">email!</a></p>
</li>
</ul>
3 years ago
</div>
</td>
</tr>
</table>
3 years ago
</div>
3 years ago
</div>
<div class="sect2">
<h3 id="_what_will_i_learn">1.2. What will i learn?</h3>
3 years ago
<div class="openblock float-group">
<div class="content">
<div class="imageblock right">
<div class="content">
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAjkAAAFXCAYAAABA/V/aAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5QQIDA8heIJbSwAAIABJREFUeNrsnXd8FOX2h5+Z2b7pCSmkkEISQgkdpCgoNhARQcGK5crVn17s9dq7Xr2i2PtVVBBFUS+IooIIIkjvNfQeSELKtim/PzYGoki5EiDhPJ/Psuxmdnb2zPvO+53znvcc5aGZ8ywEQRAEQRAaGKqYQBAEQRAEETmCIAiCIAj1BNu+Lx7s1EYsIgiCIAhCveXhWfNr/i+eHEEQBEEQGiQ2McHhY1kWlmX94b3fUBTlD59RFGW/7wuCIAhH9/r9+2v2n21zoGv679+X67uInHpHSUkJO3bsYPfu3ZSXl+Pz+di5cyc7iovZvWcP/kCQYChEVSCAPxgiEApiYeF2uHA57HidThwOBy6HnfjoGFKSk4iJicHj8RAZGUlCQgKJiYlERkaKsQVBEI4A5eXllJWVUVJSQnl5OX6/H7/fj67rNe/7qiqpLC/HMHQMPYRuGBi6jh4MYmIR9PvAAhRQVQ27wwGKgtPpqnlWVRW7w4E3IpKIyChiYmLwer3Y7XZcLhdut5uoqCji4uKIiorC7XbLyRGRc2xZuHAhc+bMYdasWWzZsgXLbkePjMbyetG8Ebgjo3FGeHHEJuJIzUTVNJw2G27NhmrTUDUNLDAMHdMwMHU93LEMnZ2VVSwsLsW/biP+8nKMygqUigrUsjLsikWTJk3o0qULHTt2JCcnR06GIAjCQW5CFy9ezKpVq1i+fDkbN26koqICl8NObKSLWI+LCLcDj9OB1+MmwuPG43IQ53XijovE5YxH09Tqh4aqqNhsGgrgsNtrvse0LHRdxwJCoRAWEAyGAAjpOj5/AJ9/D4HiYnZvClJRWUVllY+qgE65L8DuCh8l5T5MICYmhiZNMmnRojnNmjWjdevW4gESkVN3BINBJk6cyLvvv8+Pk6eQ1qoVjdu0I6NTN1rn5YdFS3UDPNINscYdalkE/X62LF3CG9//yP1PP8PuLZs4/7zzuOLyy+nWrRuqKqFTgiCc2KxatYrx48fz7cSJTPt5OqlJiXRu05wWuZn0yM+k+TmdaRQXU32tVth7yd73/0eHfae7LMvCAkzTZP3mbSxZtZZlMybx8btvMG32fCIiIujR4xTO6n0OvXv3JiYmRk72EUTZNxlgQ19dVVZWxtq1a/n555/56ofJLC0qIiWvGQWnnkZOx87YHE4MXces9sQcvbOgoGoamqahORxUlpSw+ufpLJ86hd2bNtChZUv6nd6Ldu3akZ2djcfjkZYrCEKDZevWrWzYsIEFCxYw79eZLJw3m4SYaLp3LOTkDq1p36oZdrcbdB3LNDEME8MwMK3jO7etqqrYNBVN1UBTwWFn55bt/LpwGT/Omses+UuwOV2079SFzl27k52dTWZmJtHR0dIoDoN9V1edECLnl19+YfTo0azZsIHK2Hga5eaRkl9AXEYTNJsNUzcwTQOOkw6iVIse1WYjUFlJ8fp1bF2+jLK1a4jcU0bLFs0ZMmQIeXl50poFQWgwjB49mokTJ6LpftLjI8jLSicvK4O8rHSiIryYpolumJimecDA4fqEqiiomopN01AUha07drFi7XpWrd3IqvVbWLergkZJKVxxxRV06tRJGomInL1MmjSJ226/HTUxifaDLiG1eQtUTUOpp9M/pmFghEKsm/0r0997i4y4eF584XkKCwulVQuCUG95/vnhPPP001zY+1SGDbmA+Jgo7HYbmqJwotYdUiAcEG2aLFi2mn+9NYqNO0p57fXX6dKlizSaE1XkbNmyhV9//ZXHnnuOSs3Oadf9g9TmzdEDgaM7BVWXyt9mw+n2UDR7Fj++9TqpkV7uuukm2rVrR3x8vLTw44ySkhK2bt0qAYbHut9oKrlNcyXG7ThB13UmTZrEQ/f/k+5tCnj4pmuIiPDg9wcajJfmSKFpKg6nkyXLV3PL4yOISUzh4ceepKCgQIxzooic0tJSRowYwU8LFmHPyib/5J4kZuegBxuOuPnjRTu8omvTksWsmv4T9h1bOfe007j++uullR9HPPb4Y4yZOIrkjERM0xSDHItBwqaycuZafvlpJklJSWKQY4xhGFx33XV4QmUMG3IhOU1SCQRDIm4OKnY0HE4H3/00i1dGfUGfARdxzTXXiGEOIHIaxOqq0aNHc98jj9DxymvodOOtOKoDc4O+qgZ9Ik3DwDQMUvLySc7Nw7enjInfTuTJJk0Y/u9/c8EFF0hrPx4EeEkphSe3oE3PlughXQxyDHB6nGxbMYpAICDGOA648sor6VWYyUV9LwUU/IGgGOUQxaGvykf3DoV0LCxgwA3/JCoqikGDBolx/oR6K3Isy2LOnDlcee21uJpkcelb72NzuTB1/bgJID6atgBwR0XT+dIhtDirD/c/+gDvfzSK5599huzsbGnpxxhFVVA1BdWUqZJjgUxRHT/MmjWLaE3n0n5nohsGIN6b/+Wa73TY+fK1pyg8b6iInIYmcnbt2sVjjz3GtNVF9LzrXtKatyLoqwoLnBMcPRDAHR3NZS+8wsppU7n01tvp17kjw4YNIyIiQlq8IAjHlO3bt1OY26Ra4Ah/Reh4IyNomZfFqlWryM3NFaPs7wanvh3w2LFj6dHzVIqz8uh9930kZuUQqKqUudx9G79pogcC5HTuQq/b7mSWX6dnz54sW7ZMjCMIwjHFNE3++8N07DZJuP+XBm9VpbSkjJnzFhMKhcQg9V3khEIhhj//PP98YQTnv/oWuV27odntIm4OInbsThft+vWn2z8f5NR+5/HFF1+IzQRBOKZ8N/0XXhs1DpDClv8LiqJQWeXj/P+7myiPSwxS30XO+vXrGTp0KJ8vWMwlz7yA3enEklUqh37nZBg0ysxi6Lsf8PA77zFs2DAqKirEMIIgHBNevn0Iv/4yg5sfG8GqdZtwu5yoqoidg2GzabhdTiZN/5Urbn+YoWd35NQOLcQw9VnkLFiwgPMvvgSte09Ov34YqIp4Iv4HDF3H7nTS75/3s7VRCj169aK8vFwMIwjCMeH5Wy6hb9sMbrj/af52778oKavA7fWI2PkzceNxM3vRCjoPvJbPvvyahy4/gwtO7YAvKCvTDmi74/ngli5dypkDLuCS50YQ07ixiJu/iGVZKIpC2379iU1LJzs/n4Vz5pCSkiLGEQThqF6LVEWhR9t8zujUgvcnTOekgdfQvUNr7rr2MjIaJ2HTtBN+VZxuGJiGybfTZvHsGx8S8FXx8m0X0zI7jWBIP+5rdYnIOQCTJk3ib7fdzmXPv0hsWjqGBFYdMYxQiKwOHRn03Iucc+Eg3n/tVVq2bCmGEQThqIudQDDEkN5dGdK7K19NX8ADTz2H0x1BdlYmudlNyM1KJzcjlaSEOCzLChfjNM0Gk1hTVVW06tpVhmmyYct2Vq7dyIqiDRRt2Mjq1atpkhjHM9eeS6fm2VQFggSr822Jz6ueipwJEyZw34svMfjp54hKTBSBUxd3CIEASU1zOen6Gxl85VV8/tGHUvBTEIRjQqB60O7TpRV9u7VmS3Ep67fuYuWmjYyZM5vlW3ZTURmgY+vmdG5dQNe2LcnMzgDDAMOoFj7h5+MVRVHQqgWNqmmgaQCsXL2WmfOXMXX2AuYuXkFGUjzN02Jp0SSZDl3zyB7YlWivB900KK/yS2Op7yJn8eLFXHvn3Vw24mVcEZENtiTDcXEXZZok5+Vz9oOP0alrV5YtWiRTV4IgHLubL8MEwyQhOoKE6AjaN2uCoiioikJpRRXTFq5i6k9TeezFt9m8fSennNSBVrmZNG+aSfOmWeQ0ScVms9X2cCjKUfd4hGeRak8lVVT6WLp6bfVjHfOXr2HOwmUUZKXRpVU2fdrm8eSQ03DaNCysWjltg5IDrmGInIULF3LGgIFc/uIreKJjROAcJaETm5bGZS+/Tt+BF/D1uM9JTEwUwwiCcHxcoywLw7KI8rrp170NA3u2x27TKK/0M2f
</div>
</div>
<div class="paragraph">
<p><br>
</p>
</div>
<div class="ulist checklist">
<div class="title">From &#8594; To</div>
<ul class="checklist">
<li>
<p><i class="fa fa-check-square-o"></i> monolithic &#8594; networking architecture</p>
</li>
<li>
<p><i class="fa fa-check-square-o"></i> static &#8594; Dynamic</p>
</li>
<li>
<p><i class="fa fa-check-square-o"></i> host based &#8594; Service based</p>
</li>
<li>
<p><i class="fa fa-check-square-o"></i> linear &#8594; agile</p>
</li>
</ul>
</div>
</div>
</div>
3 years ago
<div class="literalblock">
<div class="content">
<pre>You will learn to code, coordinate and orchestrate a swarm of self-acting nodes.</pre>
</div>
</div>
<div class="openblock float-group">
<div class="content">
<div class="paragraph right">
<p><span class="image right"><img src="data:image/png;base64,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
</div>
<div class="paragraph">
<p><br>
</p>
</div>
<div class="ulist">
<div class="title">Build app’s container image</div>
<ul>
<li>
<p>You will learn to build Docker images from a Dockerfile</p>
</li>
<li>
<p>how to push/pull Docker images.</p>
</li>
<li>
<p>how to build a Sample NodeJS application</p>
</li>
</ul>
</div>
</div>
</div>
<div class="openblock">
<div class="content">
<div class="imageblock left left">
<div class="content">
<img src="data:image/png;base64,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
</div>
</div>
</div>
</div>
<div class="paragraph">
<p><br>
</p>
</div>
<div class="ulist">
<div class="title">From Code to Cloud</div>
<ul>
<li>
<p>You will learn to create cloud and platform agnostic container-based applications.</p>
<div class="ulist">
<ul>
<li>
<p>from a single container on your local machine</p>
</li>
<li>
<p>to a running cloud native - container-based environment</p>
</li>
<li>
<p>in the simplest and most logical format as possible.</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
<div class="paragraph">
<p><br>
<br>
<br>
<br>
</p>
</div>
<div class="openblock">
<div class="content">
<div class="imageblock right right">
<div class="content">
<img src="data:image/png;base64,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
</div>
</div>
<div class="paragraph">
<p><br>
<br>
<br>
</p>
</div>
<div class="ulist">
<div class="title">Build systems</div>
<ul>
<li>
<p>You will learn to build services in a dynamic and Scalable Distributed Architecture</p>
<div class="ulist">
<ul>
<li>
<p>The distributed nature of a service mesh</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
</div>
</div>
3 years ago
<div class="paragraph">
3 years ago
<p><br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
</p>
3 years ago
</div>
</div>
<div class="sect2">
<h3 id="_what_tools_will_i_need">1.3. What tools will I need</h3>
<div class="paragraph">
3 years ago
<p>Internet and a PC</p>
</div>
<div class="paragraph">
<p>You should also have <strong>installed swarmlab</strong> to be able to recreate the steps and if you wish contribute to projects and communicate with your schoolmates.</p>
3 years ago
</div>
3 years ago
<div class="sect3">
<h4 id="_swarmlab_io_hybrid">1.3.1. Swarmlab.io hybrid</h4>
3 years ago
<div class="paragraph">
3 years ago
<p>Follow the <a href="https://git.swarmlab.io:3000/zeus/swarmlab-hybrid#installation" target="_blank" rel="noopener">instructions</a> to install swarmlab-hybrid</p>
3 years ago
</div>
<div class="paragraph">
3 years ago
<p>See also</p>
</div>
<div class="videoblock">
<div class="content">
<iframe src="https://player.vimeo.com/video/507040807" frameborder="0" allowfullscreen></iframe>
</div>
</div>
3 years ago
</div>
</div>
<div class="sect2">
<h3 id="_what_students_can_take_this_course">1.4. What students can take this course</h3>
<div class="paragraph">
<p>Any student with basic knowledge of networking and computer programming should be able to cope with the needs.</p>
</div>
</div>
<div class="sect2">
<h3 id="_how_is_the_course_going_to_take_place">1.5. How is the course going to take place</h3>
<div class="paragraph">
<p>The course will be divided into following parts</p>
</div>
<div class="ulist">
<ul>
<li>
<p>A list of videos, asciinemas and instructions explaining the project</p>
</li>
<li>
<p>lectures BASED ON THE VIDEOS for deeper analysis and questions</p>
</li>
<li>
3 years ago
<p>and a <a href="https://gitter.im/swarmlab-hybrid/community" target="_blank" rel="noopener">Gitter</a> for further conversations and answers to any of your questions</p>
3 years ago
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_will_there_be_some_kind_of_examcertificate_what_will_i_gain">1.6. Will there be some kind of exam/certificate? What will i gain?</h3>
<div class="ulist">
<ul>
<li>
<p>The will NOT be an exam or certificate.</p>
</li>
<li>
<p>You will gain contributions in form of commits and merge requests into larger projects, which you can then add to your C.V. and upgrade it.</p>
</li>
</ul>
</div>
<div class="admonitionblock tip">
<table>
<tr>
<td class="icon">
<i class="fa icon-tip" title="Tip"></i>
</td>
<td class="content">
Just to give some context, <strong>contribution of code is regarded as the most important factor when choosing a software engineer</strong>, thus making the course very helpful for future employment
</td>
</tr>
</table>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_course_description">2. Course Description</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_cloud_microservice">2.1. Cloud &amp; microservice</h3>
<div class="sect3">
<h4 id="_docker_app">2.1.1. docker app</h4>
<div class="paragraph">
<p>The section guides you through the following activities:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Create a Dockerized Sample application</p>
</li>
<li>
<p>Start an app container</p>
</li>
</ul>
</div>
</div>
<div class="sect3">
<h4 id="_docker_swarm">2.1.2. docker swarm</h4>
<div class="paragraph">
<p>The section guides you through the following activities:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>initializing a cluster of Docker Engines in swarm mode</p>
</li>
<li>
<p>adding nodes to the swarm</p>
</li>
<li>
<p>deploying application services to the swarm</p>
</li>
<li>
<p>managing the swarm once you have everything running</p>
</li>
</ul>
</div>
</div>
<div class="sect3">
<h4 id="_orchestration">2.1.3. Orchestration</h4>
<div class="paragraph">
<p>The section guides you through the following activities:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>scale our containerized applications across clouds and datacenters</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_administer_and_maintain_a_swarm_of_docker_engines">2.2. Administer and maintain a swarm of Docker Engines</h3>
<div class="sect3">
<h4 id="_manager_nodes">2.2.1. manager nodes</h4>
</div>
<div class="sect3">
<h4 id="_monitor_swarm_health">2.2.2. Monitor swarm health</h4>
</div>
<div class="sect3">
<h4 id="_scheduling_services_on_a_docker_swarm_mode_cluster">2.2.3. Scheduling Services on a Docker Swarm Mode Cluster</h4>
<div class="ulist">
<ul>
<li>
<p>Scheduling Preferences</p>
</li>
<li>
<p>Rescheduling on Failure</p>
</li>
</ul>
</div>
</div>
<div class="sect3">
<h4 id="_ansible">2.2.4. ansible</h4>
<div class="ulist">
<ul>
<li>
<p>Using ansible to perform operations on managed nodes aka Configurations, deployment, and orchestration/automation</p>
</li>
<li>
<p>Deploying Docker Containers with Ansible</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_create_service_on_nodes">2.3. Create service on nodes</h3>
<div class="paragraph">
<p>This section includes Docker images and an application for Node development using containers.</p>
</div>
<div class="paragraph">
<p>Create Real-time Application with</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Node.js</p>
</li>
<li>
<p>Express.js</p>
</li>
<li>
<p>Socket.io</p>
</li>
<li>
<p>Redis</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_monitoring_service_applications_communication">2.4. Monitoring - service applications communication</h3>
<div class="sect3">
<h4 id="_real_time_datalog_collection">2.4.1. Real-Time data/Log Collection</h4>
</div>
</div>
<div class="sect2">
<h3 id="_create_nosql_db_mongo_cluster">2.5. create noSQL DB (mongo cluster)</h3>
<div class="paragraph">
<p>A replica set is a group of mongod processes that maintain the same data set</p>
</div>
<div class="sect3">
<h4 id="_create_replicas">2.5.1. create replicas</h4>
<div class="ulist">
<ul>
<li>
<p>Replication in MongoDB</p>
</li>
<li>
<p>Change Streams</p>
<div class="ulist">
<ul>
<li>
<p>work with the change stream cursor.</p>
</li>
<li>
<p>Watch Collection/Database/Deployment etc</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_central_web_admin_interface">2.6. central web admin interface</h3>
<div class="paragraph">
<p>Create a CRUD App</p>
</div>
<div class="sect3">
<h4 id="_vuejs">2.6.1. vuejs</h4>
<div class="paragraph">
<p>Create single-page application</p>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>