Initial commit.
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
public/
|
9
Dockerfile
Normal file
@ -0,0 +1,9 @@
|
||||
FROM ghcr.io/getzola/zola:v0.17.1 AS zola
|
||||
|
||||
COPY . /project
|
||||
WORKDIR /project
|
||||
RUN ["zola", "build"]
|
||||
|
||||
FROM nginx:1.29.0-alpine
|
||||
|
||||
COPY --from=zola /project/public /usr/share/nginx/html
|
@ -21,7 +21,7 @@ footer_copyright = ' · <a href="https://creativecommons.org/licenses/by-nc/
|
||||
|
||||
hermit_menu = [
|
||||
{ link = "/posts", name = "Posts" },
|
||||
{ link = "/about", name = "About" },
|
||||
{ link = "/about", name = "About me" },
|
||||
]
|
||||
|
||||
hermit_social = [
|
||||
@ -34,7 +34,7 @@ hermit_social = [
|
||||
[extra.highlightjs]
|
||||
enable = true
|
||||
clipboard = true
|
||||
theme = "vs2015"
|
||||
theme = "https://unpkg.com/nord-highlightjs@0.1.0/dist/nord.css"
|
||||
|
||||
[extra.author]
|
||||
name = "Pavel Kirilin"
|
||||
|
13
content/about/index.md
Normal file
@ -0,0 +1,13 @@
|
||||
+++
|
||||
title = "About Me"
|
||||
+++
|
||||
|
||||
# Who Am I?
|
||||
|
||||
My name is Pavel Kirilin, and my nickname is [@s3rius](https://github.com/s3rius). I am a backend developer with diverse experience. Currently, I hold the position of CTO at [Intree](https://www.intree.com/).
|
||||
|
||||
In my free time, I enjoy experimenting with various technologies and building new projects. You can find some of my work on [GitHub](https://github.com/s3rius) or on my self-hosted Gitea instance at [gitea.le-memese.com](https://gitea.le-memese.com/s3rius).
|
||||
|
||||
This blog serves as a platform for me to share my thoughts, ideas, and experiments. It is a way for me to document my journey and, hopefully, help others along the way.
|
||||
|
||||
Please feel free to reach out to me if you have any questions, suggestions, or just want to say hello. You can contact me via email at [s3rius@le-memese.com](mailto:s3rius@le-memese.com) or my [Telegram](https://t.me/s3rius_san).
|
4
content/posts/_index.md
Normal file
@ -0,0 +1,4 @@
|
||||
+++
|
||||
title= "Posts"
|
||||
sort_by="date"
|
||||
+++
|
@ -1,6 +0,0 @@
|
||||
+++
|
||||
+++
|
||||
|
||||
# Posts
|
||||
|
||||
into-kube
|
4
content/posts/kube-intro/imgs/ingress.svg
Normal file
After Width: | Height: | Size: 164 KiB |
BIN
content/posts/kube-intro/imgs/intro.png
Normal file
After Width: | Height: | Size: 203 KiB |
486
content/posts/kube-intro/imgs/pods.svg
Normal file
@ -0,0 +1,486 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 19.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 668 277" style="enable-background:new 0 0 668 277;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:#FFFFFF;stroke:#C6CDDB;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
|
||||
.st1{opacity:0.71;fill:#326CE6;}
|
||||
.st2{opacity:0.45;fill:#FFFFFF;}
|
||||
.st3{fill:#FFFFFF;stroke:#006DE9;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
|
||||
.st4{fill:#006DE9;}
|
||||
.st5{fill:#A0CAEA;}
|
||||
.st6{fill:#FFFFFF;}
|
||||
.st7{opacity:0.13;}
|
||||
.st8{fill:url(#SVGID_1_);}
|
||||
.st9{fill:url(#SVGID_2_);}
|
||||
.st10{fill:#FFFFFF;stroke:#006DE9;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
|
||||
.st11{fill:#FFFFFF;stroke:#006DE9;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
|
||||
.st12{fill:#FFFFFF;stroke:#C6CDDB;stroke-width:3.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
|
||||
.st13{fill:#C6CDDB;}
|
||||
.st14{fill:none;stroke:#C6CDDB;stroke-width:2.4;stroke-miterlimit:10;}
|
||||
.st15{fill:#A0CAE9;}
|
||||
.st16{fill:#FFFFFF;stroke:#C6CDDB;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
|
||||
.st17{fill:#FFFFFF;stroke:#C6CDDB;stroke-width:1.6;stroke-miterlimit:10;}
|
||||
.st18{fill:none;stroke:#06F7C9;stroke-width:2;stroke-miterlimit:10;}
|
||||
.st19{fill:none;stroke:#06F7C9;stroke-width:2;stroke-miterlimit:10;stroke-dasharray:2.3749,1.5832;}
|
||||
.st20{fill:none;stroke:#06F7C9;stroke-width:2;stroke-miterlimit:10;stroke-dasharray:2.4006,1.6004;}
|
||||
.st21{fill:none;stroke:#EEF406;stroke-width:2;stroke-miterlimit:10;stroke-dasharray:2.4,1.6;}
|
||||
.st22{fill:none;stroke:#EEF406;stroke-width:2;stroke-miterlimit:10;}
|
||||
.st23{fill:none;stroke:#EEF406;stroke-width:2;stroke-miterlimit:10;stroke-dasharray:2.3975,1.5984;}
|
||||
.st24{fill:none;stroke:#EEF406;stroke-width:2;stroke-miterlimit:10;stroke-dasharray:2.395,1.5966;}
|
||||
.st25{fill:none;stroke:#EEF406;stroke-width:2;stroke-miterlimit:10;stroke-dasharray:2.3963,1.5976;}
|
||||
.st26{opacity:0.1;fill:#EEF406;}
|
||||
.st27{opacity:2.000000e-02;fill:#EEF406;}
|
||||
.st28{opacity:0.1;fill:#06F7C9;}
|
||||
.st29{fill:none;stroke:#006DE9;stroke-width:0.8;stroke-miterlimit:10;}
|
||||
.st30{opacity:0.1;fill:url(#SVGID_3_);}
|
||||
.st31{opacity:0.1;fill:url(#SVGID_4_);}
|
||||
.st32{opacity:0.1;fill:url(#SVGID_5_);}
|
||||
.st33{opacity:0.1;fill:url(#SVGID_6_);}
|
||||
.st34{fill:none;stroke:#C6CDDB;stroke-width:1.2;stroke-miterlimit:10;}
|
||||
.st35{opacity:0.1;fill:url(#SVGID_7_);}
|
||||
.st36{opacity:0.1;fill:url(#SVGID_8_);}
|
||||
.st37{opacity:0.1;fill:url(#SVGID_9_);}
|
||||
.st38{opacity:0.1;fill:url(#SVGID_10_);}
|
||||
.st39{fill:none;stroke:#C6CDDB;stroke-width:2;stroke-miterlimit:10;}
|
||||
.st40{opacity:0.4;fill:none;stroke:#EEF406;stroke-width:2;stroke-miterlimit:10;}
|
||||
.st41{fill:none;stroke:#EEF406;stroke-width:2.4596;stroke-miterlimit:10;}
|
||||
.st42{fill:#C6CDDB;}
|
||||
.st43{opacity:0.4;}
|
||||
.st44{opacity:0.1;}
|
||||
.st45{fill:#C6CDDB;stroke:#EEF406;stroke-width:2;stroke-miterlimit:10;}
|
||||
.st46{fill:none;stroke:#FFFFFF;stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round;}
|
||||
.st47{fill:#06F7C9;stroke:#FFFFFF;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
|
||||
.st48{fill:none;stroke:#C6CDDB;stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round;}
|
||||
.st49{fill:#C6CDDB;stroke:#06F7C9;stroke-width:2;stroke-miterlimit:10;}
|
||||
/* Stlye for containers */
|
||||
.st50{fill:#FFFFFF;stroke:#C6CDDB;stroke-width:0.8;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
|
||||
/* Style for volumes */
|
||||
.st51{fill:#FFFFFF;stroke:#C6CDDB;stroke-width:0.8;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
|
||||
.st52{opacity:0.3;}
|
||||
.st53{opacity:0.2;fill:#6D6E71;}
|
||||
.st54{fill:#EEF406;}
|
||||
.st55{fill:#06F7C9;}
|
||||
.st56{fill:#FFFFFF;stroke:#06F7C9;stroke-width:2;stroke-miterlimit:10;stroke-dasharray:2.4,1.6;}
|
||||
.st57{fill:#FFFFFF;stroke:#EEF406;stroke-width:1.6;stroke-miterlimit:10;stroke-dasharray:2.4,1.6;}
|
||||
.st58{fill:none;stroke:#06F7C9;stroke-width:2;stroke-miterlimit:10;stroke-dasharray:2.4938,1.6626;}
|
||||
.st59{fill:none;stroke:#06F7C9;stroke-width:2;stroke-miterlimit:10;stroke-dasharray:2.0084,1.3389;}
|
||||
.st60{fill:none;stroke:#06F7C9;stroke-width:2;stroke-miterlimit:10;stroke-dasharray:2.724,1.816;}
|
||||
.st61{fill:#C6CDDB;stroke:#FFFFFF;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
|
||||
.st62{fill:none;stroke:#C6CDDB;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
|
||||
.st63{fill:none;stroke:#C6CDDB;stroke-width:0.2813;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
|
||||
</style>
|
||||
<symbol id="node_high_level" viewBox="-81 -93 162 186.1">
|
||||
<polygon class="st0" points="-80,-46 -80,46 0,92 80,46 80,-46 0,-92 "/>
|
||||
<g id="Isolation_Mode_3_">
|
||||
</g>
|
||||
</symbol>
|
||||
<symbol id="node_x5F_empty" viewBox="-87.5 -100.6 175.1 201.1">
|
||||
|
||||
<use xlink:href="#node_high_level" width="162" height="186.1" id="XMLID_201_" x="-81" y="-93" transform="matrix(1.0808 0 0 1.0808 -3.292006e-05 -3.749943e-05)" style="overflow:visible;"/>
|
||||
<g>
|
||||
<polygon class="st1" points="76.8,-28.1 -14,-80.3 0,-88.3 76.7,-44.4 "/>
|
||||
<polygon class="st2" points="76.8,-28.1 32.1,-53.8 38.8,-66.1 76.7,-44.4 "/>
|
||||
</g>
|
||||
</symbol>
|
||||
<symbol id="node_x5F_new" viewBox="-87.6 -101 175.2 202">
|
||||
<polygon class="st3" points="0,-100 -86.6,-50 -86.6,50 0,100 86.6,50 86.6,-50 "/>
|
||||
<polygon class="st4" points="-86.6,-20.2 -86.6,-50 0,-100 25.8,-85.1 "/>
|
||||
<polygon class="st5" points="-40.8,-70.7 -32.9,-57 15.7,-85.1 0,-94.3 "/>
|
||||
|
||||
<text transform="matrix(0.866 -0.5 -0.5 -0.866 -33.9256 -70.7388)" class="st6" style="font-family:'RobotoSlab-Regular'; font-size:11.3632px;">Docker</text>
|
||||
|
||||
<text transform="matrix(0.866 -0.5 -0.5 -0.866 -76.0668 -46.4087)" class="st6" style="font-family:'RobotoSlab-Regular'; font-size:11.3632px;">Kubelt</text>
|
||||
</symbol>
|
||||
<g id="CLUSTER">
|
||||
</g>
|
||||
<g id="master">
|
||||
<g id="master_x5F_level1">
|
||||
</g>
|
||||
</g>
|
||||
<g id="Node">
|
||||
<g id="Node_x5F_level3_x5F_1">
|
||||
<g id="Isolation_Mode">
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="service">
|
||||
</g>
|
||||
<g id="pods">
|
||||
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="122.1878" y1="127.5093" x2="204.1367" y2="127.5093">
|
||||
<stop offset="0" style="stop-color:#C6CDDB"/>
|
||||
<stop offset="1" style="stop-color:#494F5C"/>
|
||||
</linearGradient>
|
||||
<circle style="opacity:0.1;fill:url(#SVGID_1_);" cx="163.2" cy="127.5" r="41"/>
|
||||
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="238.2856" y1="127.5093" x2="347.5509" y2="127.5093">
|
||||
<stop offset="0" style="stop-color:#C6CDDB"/>
|
||||
<stop offset="1" style="stop-color:#494F5C"/>
|
||||
</linearGradient>
|
||||
<circle style="opacity:0.1;fill:url(#SVGID_2_);" cx="292.9" cy="127.5" r="54.6"/>
|
||||
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="390.5175" y1="77.3348" x2="517.7111" y2="179.9297">
|
||||
<stop offset="0" style="stop-color:#C6CDDB"/>
|
||||
<stop offset="1" style="stop-color:#494F5C"/>
|
||||
</linearGradient>
|
||||
<circle class="st30" cx="452.7" cy="127.5" r="71"/>
|
||||
<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="16.3336" y1="127.5093" x2="77.7953" y2="127.5093">
|
||||
<stop offset="0" style="stop-color:#C6CDDB"/>
|
||||
<stop offset="1" style="stop-color:#494F5C"/>
|
||||
</linearGradient>
|
||||
<circle class="st31" cx="47.1" cy="127.5" r="30.7"/>
|
||||
<circle class="st39" cx="163.2" cy="127.5" r="41"/>
|
||||
<circle class="st39" cx="47.1" cy="127.5" r="30.7"/>
|
||||
<circle class="st39" cx="292.9" cy="127.5" r="54.6"/>
|
||||
<circle class="st39" cx="452.7" cy="127.5" r="71"/>
|
||||
</g>
|
||||
<g id="IP">
|
||||
<g>
|
||||
<path class="st42" d="M121.7,110.7l0.6-1.4l-6.6-3l-0.5,1.6l-0.4-0.2l0.5-2.4l7.3,3.3l0.7-1.4l0.5,0.2l-1.6,3.4L121.7,110.7z"/>
|
||||
<path class="st42" d="M124.1,100.5c0.9,0.6,1.5,1.2,1.8,1.9c0.3,0.7,0.2,1.4-0.3,2.1c-0.4,0.7-1,1.1-1.8,1.2
|
||||
c-0.8,0.1-1.6-0.2-2.5-0.7l-1.6-1c-0.9-0.6-1.5-1.2-1.8-1.9c-0.3-0.7-0.2-1.4,0.3-2.1c0.4-0.7,1-1.1,1.8-1.2
|
||||
c0.8-0.1,1.6,0.2,2.5,0.7L124.1,100.5z M122,100c-0.7-0.5-1.4-0.7-2-0.6c-0.6,0-1,0.3-1.4,0.9c-0.3,0.5-0.4,1.1-0.2,1.6
|
||||
c0.2,0.5,0.7,1,1.5,1.5l1.8,1.1c0.7,0.5,1.4,0.7,2,0.6c0.6,0,1-0.3,1.4-0.9c0.3-0.5,0.4-1.1,0.2-1.6c-0.2-0.5-0.7-1-1.5-1.5
|
||||
L122,100z"/>
|
||||
<path class="st42" d="M128.3,100.4l-0.5,0.6l-0.8-0.6l0.5-0.6L128.3,100.4z"/>
|
||||
<path class="st42" d="M128.9,98.8l1-1.2l-5.3-4.8l-1,1.4l-0.4-0.3l1.2-2.1l5.9,5.3l1.1-1.1l0.4,0.3l-2.5,2.8L128.9,98.8z"/>
|
||||
<path class="st42" d="M134.2,89.8c0.7,0.8,1.1,1.6,1.1,2.4c0,0.8-0.3,1.4-0.9,1.9c-0.6,0.5-1.3,0.7-2.1,0.6
|
||||
c-0.7-0.1-1.5-0.6-2.2-1.5l-1.2-1.4c-0.7-0.8-1.1-1.6-1.1-2.4c0-0.8,0.3-1.4,0.9-1.9c0.6-0.5,1.3-0.7,2.1-0.6
|
||||
c0.7,0.1,1.5,0.6,2.2,1.5L134.2,89.8z M132.4,88.7c-0.6-0.7-1.1-1.1-1.7-1.2c-0.6-0.1-1.1,0-1.6,0.4c-0.5,0.4-0.7,0.9-0.6,1.5
|
||||
c0.1,0.6,0.4,1.2,0.9,1.9l1.4,1.6c0.6,0.7,1.1,1.1,1.7,1.2c0.6,0.1,1.1,0,1.6-0.4c0.5-0.4,0.7-0.9,0.6-1.5
|
||||
c-0.1-0.6-0.4-1.2-0.9-1.9L132.4,88.7z"/>
|
||||
<path class="st42" d="M138.3,91l-0.7,0.5l-0.5-0.8l0.7-0.5L138.3,91z"/>
|
||||
<path class="st42" d="M139.3,89.7l1.3-0.8l-3.6-6.2l-1.3,1.1l-0.2-0.4l1.8-1.6l4,6.9l1.4-0.7l0.3,0.4l-3.3,1.9L139.3,89.7z"/>
|
||||
<path class="st42" d="M147.2,82.7c0.4,1,0.5,1.9,0.3,2.6c-0.2,0.7-0.7,1.3-1.5,1.6c-0.8,0.3-1.5,0.3-2.1-0.1
|
||||
c-0.7-0.4-1.2-1.1-1.6-2.1l-0.7-1.8c-0.4-1-0.5-1.9-0.3-2.6s0.7-1.3,1.4-1.6c0.8-0.3,1.5-0.3,2.1,0.1c0.7,0.4,1.2,1.1,1.6,2.1
|
||||
L147.2,82.7z M145.8,81.1c-0.3-0.8-0.8-1.4-1.2-1.7c-0.5-0.3-1-0.3-1.6-0.1c-0.6,0.2-0.9,0.7-1.1,1.2c-0.1,0.6,0,1.2,0.3,2.1
|
||||
l0.8,2c0.3,0.8,0.8,1.4,1.2,1.7c0.5,0.3,1,0.3,1.6,0.1c0.6-0.2,0.9-0.7,1.1-1.2c0.1-0.6,0-1.3-0.3-2.1L145.8,81.1z"/>
|
||||
<path class="st42" d="M150.6,85.2l-0.8,0.2l-0.3-0.9l0.8-0.2L150.6,85.2z"/>
|
||||
<path class="st42" d="M152,84.7l-0.1-0.5l2.1-3.6c0.4-0.7,0.7-1.2,0.8-1.6s0.2-0.8,0.1-1.2c-0.1-0.5-0.3-0.9-0.7-1.2
|
||||
c-0.4-0.3-0.8-0.3-1.3-0.2c-0.6,0.1-1.1,0.4-1.3,0.8c-0.3,0.4-0.3,0.9-0.2,1.5l-0.6,0.1l0,0c-0.2-0.7,0-1.3,0.3-1.9
|
||||
c0.4-0.6,1-0.9,1.8-1.1c0.7-0.1,1.3,0,1.8,0.3s0.8,0.8,1,1.5c0.1,0.5,0,1-0.2,1.5s-0.5,1.1-0.9,1.8l-1.8,3.1l0,0l3.7-0.7l-0.2-1.2
|
||||
l0.6-0.1l0.3,1.8L152,84.7z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path class="st42" d="M15.9,114.8l0.6-1.4l-6.5-3.1l-0.5,1.6L9,111.7l0.6-2.4l7.2,3.4l0.7-1.3l0.5,0.2l-1.6,3.4L15.9,114.8z"/>
|
||||
<path class="st42" d="M18.6,104.6c0.9,0.6,1.5,1.3,1.7,2c0.2,0.7,0.1,1.4-0.4,2.1c-0.5,0.7-1.1,1-1.8,1.1s-1.6-0.2-2.5-0.9
|
||||
l-1.6-1.1c-0.9-0.6-1.5-1.3-1.7-2s-0.1-1.4,0.4-2.1c0.5-0.7,1.1-1,1.9-1.1c0.8,0,1.6,0.2,2.5,0.9L18.6,104.6z M16.6,104
|
||||
c-0.7-0.5-1.4-0.7-1.9-0.7s-1,0.3-1.4,0.8c-0.4,0.5-0.4,1.1-0.2,1.6s0.7,1.1,1.4,1.6l1.7,1.2c0.7,0.5,1.4,0.7,1.9,0.7
|
||||
s1.1-0.3,1.4-0.8c0.4-0.5,0.4-1.1,0.2-1.6c-0.2-0.5-0.7-1.1-1.4-1.6L16.6,104z"/>
|
||||
<path class="st42" d="M22.8,104.9l-0.5,0.6l-0.7-0.6l0.5-0.6L22.8,104.9z"/>
|
||||
<path class="st42" d="M23.5,103.4l1.1-1.1l-4.8-5.4l-1.1,1.3l-0.3-0.4l1.5-2l5.3,6l1.2-1l0.3,0.4l-2.8,2.5L23.5,103.4z"/>
|
||||
<path class="st42" d="M30.1,95.2c0.6,0.9,0.8,1.8,0.7,2.5c-0.1,0.8-0.5,1.3-1.2,1.8c-0.7,0.4-1.4,0.5-2.1,0.3s-1.4-0.9-1.9-1.8
|
||||
l-1-1.6c-0.6-0.9-0.8-1.8-0.7-2.5c0.1-0.8,0.5-1.3,1.2-1.8c0.7-0.4,1.4-0.5,2.1-0.3c0.7,0.3,1.4,0.9,1.9,1.8L30.1,95.2z
|
||||
M28.4,93.8c-0.5-0.7-1-1.2-1.5-1.4c-0.5-0.2-1.1-0.2-1.6,0.2c-0.5,0.3-0.8,0.8-0.9,1.4c0,0.6,0.2,1.2,0.6,2l1.1,1.8
|
||||
c0.5,0.7,1,1.2,1.5,1.4c0.5,0.2,1.1,0.2,1.6-0.2c0.5-0.3,0.8-0.8,0.9-1.4s-0.2-1.2-0.6-2L28.4,93.8z"/>
|
||||
<path class="st42" d="M33.8,97.1l-0.7,0.3l-0.4-0.9l0.7-0.3L33.8,97.1z"/>
|
||||
<path class="st42" d="M35.1,96l1.4-0.5l-2.2-6.8l-1.5,0.7l-0.2-0.5l2.1-1.2l2.4,7.6l1.5-0.4l0.2,0.5l-3.6,1.2L35.1,96z"/>
|
||||
<path class="st42" d="M44.4,91.1c0.2,1.1,0.1,2-0.3,2.6c-0.4,0.7-1,1-1.8,1.2c-0.8,0.1-1.5-0.1-2.1-0.6s-0.9-1.3-1.1-2.4L38.8,90
|
||||
c-0.2-1.1,0-2,0.3-2.6c0.4-0.7,1-1,1.8-1.2c0.8-0.1,1.5,0.1,2.1,0.6c0.6,0.5,0.9,1.3,1.1,2.4L44.4,91.1z M43.4,89.2
|
||||
c-0.1-0.9-0.4-1.5-0.8-1.9s-0.9-0.6-1.5-0.5c-0.6,0.1-1.1,0.4-1.3,0.9c-0.3,0.5-0.3,1.2-0.2,2.1l0.3,2.1c0.1,0.9,0.4,1.5,0.8,1.9
|
||||
c0.4,0.4,0.9,0.6,1.5,0.5c0.6-0.1,1.1-0.4,1.3-0.9s0.3-1.2,0.2-2.1L43.4,89.2z"/>
|
||||
<path class="st42" d="M47,94.4l-0.8,0l0-1l0.8,0L47,94.4z"/>
|
||||
<path class="st42" d="M48.6,93.9l1.5,0.1l0.7-7.2l-1.7,0.1l0-0.5l2.4-0.3L50.8,94l1.5,0.2l-0.1,0.5l-3.7-0.4L48.6,93.9z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path class="st42" d="M246.8,91.7l0.9-1.2l-5.5-4.6l-0.9,1.4l-0.4-0.3l1.1-2.2l6.1,5.1l1-1.1l0.4,0.3l-2.4,2.9L246.8,91.7z"/>
|
||||
<path class="st42" d="M251.7,82.3c0.8,0.8,1.2,1.5,1.3,2.3c0.1,0.8-0.2,1.4-0.8,2c-0.6,0.6-1.3,0.8-2,0.7
|
||||
c-0.8-0.1-1.5-0.5-2.3-1.3l-1.3-1.4c-0.8-0.8-1.2-1.5-1.3-2.3c-0.1-0.8,0.2-1.4,0.7-2c0.6-0.6,1.3-0.8,2-0.7
|
||||
c0.8,0.1,1.5,0.5,2.3,1.3L251.7,82.3z M249.8,81.4c-0.6-0.6-1.2-1-1.8-1.1c-0.6-0.1-1.1,0.1-1.5,0.5c-0.4,0.4-0.6,1-0.5,1.5
|
||||
c0.1,0.6,0.5,1.2,1.1,1.8l1.5,1.5c0.6,0.6,1.2,1,1.8,1.1c0.6,0.1,1.1-0.1,1.5-0.5c0.4-0.4,0.6-1,0.5-1.5s-0.5-1.2-1.1-1.8
|
||||
L249.8,81.4z"/>
|
||||
<path class="st42" d="M255.8,83.2l-0.6,0.5l-0.6-0.7l0.6-0.5L255.8,83.2z"/>
|
||||
<path class="st42" d="M256.7,81.7l1.2-1l-4.3-5.8l-1.2,1.2l-0.3-0.4l1.6-1.8l4.8,6.4l1.3-0.9l0.3,0.4l-3,2.2L256.7,81.7z"/>
|
||||
<path class="st42" d="M263.6,73.8c0.6,0.9,0.8,1.8,0.7,2.5c-0.1,0.7-0.5,1.3-1.2,1.8c-0.7,0.4-1.4,0.5-2.1,0.2
|
||||
c-0.7-0.3-1.3-0.9-1.9-1.8l-1-1.6c-0.6-0.9-0.8-1.8-0.7-2.5c0.1-0.8,0.5-1.3,1.2-1.8c0.7-0.4,1.4-0.5,2.1-0.2
|
||||
c0.7,0.3,1.4,0.9,1.9,1.8L263.6,73.8z M262,72.4c-0.5-0.7-0.9-1.2-1.5-1.5s-1.1-0.2-1.6,0.1c-0.5,0.3-0.8,0.8-0.9,1.4
|
||||
c0,0.6,0.2,1.2,0.6,2l1.1,1.8c0.4,0.7,0.9,1.2,1.5,1.5c0.5,0.2,1.1,0.2,1.6-0.1c0.5-0.3,0.8-0.8,0.9-1.4c0-0.6-0.2-1.2-0.6-2
|
||||
L262,72.4z"/>
|
||||
<path class="st42" d="M267.4,75.6l-0.7,0.4l-0.4-0.9l0.7-0.4L267.4,75.6z"/>
|
||||
<path class="st42" d="M268.6,74.4l1.4-0.7l-2.8-6.6l-1.5,0.9l-0.2-0.5l2-1.4l3.1,7.3l1.4-0.5l0.2,0.5l-3.5,1.5L268.6,74.4z"/>
|
||||
<path class="st42" d="M277.3,68.3c0.3,1.1,0.4,1.9,0.1,2.6c-0.3,0.7-0.8,1.2-1.6,1.4c-0.8,0.2-1.5,0.2-2.1-0.3
|
||||
c-0.6-0.4-1.1-1.2-1.4-2.2l-0.6-1.8c-0.3-1-0.4-1.9-0.1-2.6c0.3-0.7,0.8-1.2,1.6-1.4c0.8-0.2,1.5-0.2,2.1,0.3
|
||||
c0.6,0.4,1.1,1.2,1.4,2.2L277.3,68.3z M276,66.6c-0.3-0.8-0.6-1.4-1.1-1.8s-1-0.4-1.6-0.2c-0.6,0.2-1,0.6-1.2,1.1
|
||||
c-0.2,0.6-0.1,1.2,0.1,2.1l0.6,2c0.3,0.8,0.6,1.4,1.1,1.8c0.5,0.4,1,0.4,1.6,0.3c0.6-0.2,1-0.6,1.2-1.1s0.1-1.2-0.1-2.1L276,66.6z
|
||||
"/>
|
||||
<path class="st42" d="M280.5,71l-0.8,0.2l-0.2-0.9l0.8-0.2L280.5,71z"/>
|
||||
<path class="st42" d="M282.9,65.8l0.8-0.1c0.6-0.1,1.1-0.3,1.3-0.7c0.3-0.4,0.4-0.8,0.3-1.3c-0.1-0.5-0.3-0.9-0.6-1.2
|
||||
c-0.3-0.3-0.8-0.4-1.4-0.3c-0.5,0.1-1,0.3-1.3,0.7c-0.3,0.4-0.4,0.8-0.3,1.3l-0.6,0.1l0,0c-0.1-0.7,0-1.2,0.5-1.7
|
||||
c0.4-0.5,1-0.8,1.7-0.9c0.8-0.1,1.4,0,1.9,0.4c0.5,0.3,0.8,0.9,0.9,1.6c0.1,0.4,0,0.8-0.2,1.2c-0.2,0.4-0.5,0.7-0.9,0.9
|
||||
c0.5,0.1,1,0.3,1.3,0.6c0.3,0.3,0.5,0.7,0.6,1.2c0.1,0.7,0,1.4-0.5,1.9c-0.4,0.5-1,0.8-1.8,0.9c-0.7,0.1-1.4,0-2-0.4
|
||||
c-0.6-0.3-0.9-0.9-1-1.6l0,0l0.6-0.1c0.1,0.5,0.3,0.9,0.8,1.2c0.4,0.3,0.9,0.4,1.5,0.3c0.6-0.1,1-0.3,1.3-0.7s0.4-0.8,0.3-1.4
|
||||
c-0.1-0.6-0.3-1-0.7-1.2c-0.4-0.2-0.9-0.3-1.6-0.2l-0.8,0.1L282.9,65.8z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path class="st42" d="M397.1,77.6l1-1.2l-5.2-4.9l-1,1.4l-0.4-0.3l1.3-2.1l5.8,5.5l1.1-1.1l0.4,0.4l-2.6,2.7L397.1,77.6z"/>
|
||||
<path class="st42" d="M402.5,68.5c0.7,0.8,1.1,1.6,1.2,2.4c0.1,0.8-0.2,1.4-0.8,2c-0.6,0.6-1.3,0.8-2,0.7s-1.5-0.6-2.2-1.4
|
||||
l-1.3-1.4c-0.7-0.8-1.1-1.6-1.2-2.4s0.2-1.4,0.8-2c0.6-0.6,1.3-0.8,2-0.7c0.8,0.1,1.5,0.6,2.2,1.4L402.5,68.5z M400.6,67.4
|
||||
c-0.6-0.6-1.2-1-1.7-1.2c-0.6-0.1-1.1,0-1.6,0.5c-0.5,0.4-0.7,0.9-0.6,1.5c0.1,0.6,0.4,1.2,1,1.8l1.4,1.6c0.6,0.6,1.2,1,1.7,1.2
|
||||
c0.6,0.1,1.1,0,1.6-0.4c0.5-0.4,0.7-0.9,0.6-1.5c-0.1-0.6-0.4-1.2-1-1.8L400.6,67.4z"/>
|
||||
<path class="st42" d="M406.5,69.5l-0.6,0.5l-0.6-0.7l0.6-0.5L406.5,69.5z"/>
|
||||
<path class="st42" d="M407.5,68l1.2-1l-4.2-5.8l-1.2,1.2L403,62l1.6-1.8l4.7,6.4l1.3-0.8l0.3,0.4l-3,2.2L407.5,68z"/>
|
||||
<path class="st42" d="M414.5,60c0.6,0.9,0.8,1.8,0.7,2.5c-0.1,0.8-0.5,1.3-1.2,1.8c-0.7,0.4-1.4,0.5-2.1,0.3
|
||||
c-0.7-0.3-1.4-0.9-1.9-1.8l-1-1.6c-0.6-0.9-0.8-1.8-0.7-2.5c0.1-0.8,0.5-1.3,1.2-1.8c0.7-0.4,1.4-0.5,2.1-0.3
|
||||
c0.7,0.3,1.4,0.9,1.9,1.8L414.5,60z M412.8,58.7c-0.5-0.7-1-1.2-1.5-1.5c-0.5-0.2-1.1-0.2-1.6,0.2c-0.5,0.3-0.8,0.8-0.9,1.4
|
||||
c0,0.6,0.2,1.2,0.6,2l1.1,1.8c0.5,0.7,1,1.2,1.5,1.5c0.5,0.2,1.1,0.2,1.6-0.1c0.5-0.3,0.8-0.8,0.9-1.4s-0.2-1.2-0.6-2L412.8,58.7z
|
||||
"/>
|
||||
<path class="st42" d="M418.2,61.8l-0.7,0.4l-0.5-0.8l0.7-0.4L418.2,61.8z"/>
|
||||
<path class="st42" d="M419.5,60.6l1.4-0.7l-3.1-6.5l-1.4,0.9l-0.2-0.4l1.9-1.5l3.4,7.2l1.4-0.6l0.2,0.5l-3.4,1.6L419.5,60.6z"/>
|
||||
<path class="st42" d="M427.8,54.1c0.4,1,0.5,1.9,0.2,2.6s-0.7,1.2-1.5,1.5c-0.8,0.3-1.5,0.2-2.1-0.1c-0.7-0.4-1.2-1.1-1.6-2.1
|
||||
l-0.7-1.8c-0.4-1-0.5-1.9-0.2-2.6c0.2-0.7,0.7-1.2,1.5-1.5c0.8-0.3,1.5-0.2,2.1,0.1c0.7,0.4,1.2,1.1,1.6,2.1L427.8,54.1z
|
||||
M426.4,52.4c-0.3-0.8-0.7-1.4-1.2-1.7c-0.5-0.3-1-0.4-1.6-0.1c-0.6,0.2-1,0.6-1.1,1.2c-0.1,0.6-0.1,1.2,0.2,2.1l0.8,2
|
||||
c0.3,0.8,0.7,1.4,1.2,1.7s1,0.4,1.6,0.2c0.6-0.2,1-0.6,1.1-1.2s0.1-1.3-0.3-2.1L426.4,52.4z"/>
|
||||
<path class="st42" d="M431.2,56.5l-0.8,0.2l-0.3-0.9l0.8-0.2L431.2,56.5z"/>
|
||||
<path class="st42" d="M436.3,52.3l1.3-0.3l0.1,0.6l-1.3,0.3l0.4,1.5l0.9-0.1l0.1,0.5l-2.5,0.6l-0.1-0.5l0.9-0.3l-0.4-1.5l-3.9,0.9
|
||||
l-0.1-0.4l2.4-6.7l0.7-0.2L436.3,52.3z M432.6,53.2l3.1-0.7l-1.1-4.7l0,0l-0.1,0.7L432.6,53.2z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="deployments">
|
||||
</g>
|
||||
<g id="containers_x2F_volumes">
|
||||
<g>
|
||||
<g>
|
||||
<polygon class="st50" points="138.1,120.8 148.6,114.7 159.2,120.8 148.6,126.9 "/>
|
||||
<polygon class="st50" points="138.1,133 138.1,120.8 148.6,126.9 148.6,139.1 "/>
|
||||
<polygon class="st50" points="148.6,139.1 148.6,126.9 159.2,120.8 159.2,133 "/>
|
||||
</g>
|
||||
<g>
|
||||
<path class="st51" d="M188.2,132.2C188.2,132.2,188.2,132.2,188.2,132.2C188.2,132.1,188.2,132.1,188.2,132.2v-10.6h-21.1v10.6
|
||||
c0,0,0,0,0,0c0,0,0,0,0,0v0.2h0c0.2,2.9,4.9,5.2,10.5,5.2c5.7,0,10.3-2.3,10.5-5.2h0V132.2z"/>
|
||||
<ellipse class="st51" cx="177.7" cy="121.7" rx="10.6" ry="5.4"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
<g>
|
||||
<polygon class="st50" points="36.5,121.4 47.1,115.3 57.6,121.4 47.1,127.5 "/>
|
||||
<polygon class="st50" points="36.5,133.6 36.5,121.4 47.1,127.5 47.1,139.7 "/>
|
||||
<polygon class="st50" points="47.1,139.7 47.1,127.5 57.6,121.4 57.6,133.6 "/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
<g>
|
||||
<polygon class="st50" points="282.4,108.7 292.9,102.6 303.5,108.7 292.9,114.8 "/>
|
||||
<polygon class="st50" points="282.4,120.9 282.4,108.7 292.9,114.8 292.9,127 "/>
|
||||
<polygon class="st50" points="292.9,127 292.9,114.8 303.5,108.7 303.5,120.9 "/>
|
||||
</g>
|
||||
<g>
|
||||
<polygon class="st50" points="270.5,132 278.4,127.4 286.3,132 278.4,136.5 "/>
|
||||
<polygon class="st50" points="270.5,141.1 270.5,132 278.4,136.5 278.4,145.7 "/>
|
||||
<polygon class="st50" points="278.4,145.7 278.4,136.5 286.3,132 286.3,141.1 "/>
|
||||
</g>
|
||||
<g>
|
||||
<path class="st51" d="M318,141.8C318,141.8,318,141.8,318,141.8C318,141.8,318,141.8,318,141.8v-10.6h-21.1v10.6c0,0,0,0,0,0
|
||||
c0,0,0,0,0,0v0.2h0c0.2,2.9,4.9,5.2,10.5,5.2c5.7,0,10.3-2.3,10.5-5.2h0V141.8z"/>
|
||||
<ellipse class="st51" cx="307.4" cy="131.3" rx="10.6" ry="5.4"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
<g>
|
||||
<path class="st51" d="M435.6,133.6C435.6,133.5,435.6,133.5,435.6,133.6C435.6,133.5,435.6,133.5,435.6,133.6v-10.6h-21.1v10.6
|
||||
c0,0,0,0,0,0c0,0,0,0,0,0v0.2h0c0.2,2.9,4.9,5.2,10.5,5.2c5.7,0,10.3-2.3,10.5-5.2h0V133.6z"/>
|
||||
<ellipse class="st51" cx="425.1" cy="123" rx="10.6" ry="5.4"/>
|
||||
</g>
|
||||
<g>
|
||||
<path class="st51" d="M479,111.8C479,111.8,479,111.8,479,111.8C479,111.8,479,111.8,479,111.8v-10.6h-21.1v10.6c0,0,0,0,0,0
|
||||
c0,0,0,0,0,0v0.2h0c0.2,2.9,4.9,5.2,10.5,5.2s10.3-2.3,10.5-5.2h0V111.8z"/>
|
||||
<ellipse class="st51" cx="468.5" cy="101.3" rx="10.6" ry="5.4"/>
|
||||
</g>
|
||||
<g>
|
||||
<polygon class="st50" points="443.4,122.2 454,116.1 464.6,122.2 454,128.3 "/>
|
||||
<polygon class="st50" points="443.4,134.4 443.4,122.2 454,128.3 454,140.5 "/>
|
||||
<polygon class="st50" points="454,140.5 454,128.3 464.6,122.2 464.6,134.4 "/>
|
||||
</g>
|
||||
<g>
|
||||
<polygon class="st50" points="475.1,123.7 483,119.1 490.9,123.7 483,128.3 "/>
|
||||
<polygon class="st50" points="475.1,132.8 475.1,123.7 483,128.3 483,137.4 "/>
|
||||
<polygon class="st50" points="483,137.4 483,128.3 490.9,123.7 490.9,132.8 "/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
<g>
|
||||
<polygon class="st50" points="442.6,146.8 437.3,143.8 432,146.8 437.3,149.9 "/>
|
||||
<polygon class="st50" points="442.6,152.9 442.6,146.8 437.3,149.9 437.3,156 "/>
|
||||
<polygon class="st50" points="437.3,156 437.3,149.9 432,146.8 432,152.9 "/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="labels_x2F_selectors">
|
||||
</g>
|
||||
<g id="description">
|
||||
<g>
|
||||
<path class="st42" d="M150.5,220.6c1.1,0,2,0.3,2.6,0.9s1,1.3,1,2.2c0,0.9-0.3,1.7-1,2.2c-0.6,0.6-1.5,0.8-2.6,0.8h-1.6v2.1l1,0.2
|
||||
v1.2h-4v-1.2l1-0.2V222l-1-0.2v-1.2h1H150.5z M148.9,225.3h1.6c0.5,0,0.9-0.1,1.2-0.4c0.3-0.3,0.4-0.7,0.4-1.1
|
||||
c0-0.5-0.1-0.8-0.4-1.2c-0.3-0.3-0.7-0.5-1.2-0.5h-1.6V225.3z"/>
|
||||
<path class="st42" d="M154.7,226.6c0-1.1,0.3-1.9,0.9-2.6c0.6-0.7,1.4-1,2.5-1c1.1,0,1.9,0.3,2.5,1c0.6,0.7,0.9,1.6,0.9,2.6v0.1
|
||||
c0,1.1-0.3,2-0.9,2.6c-0.6,0.7-1.4,1-2.5,1c-1.1,0-1.9-0.3-2.5-1c-0.6-0.7-0.9-1.6-0.9-2.6V226.6z M156.6,226.8
|
||||
c0,0.7,0.1,1.2,0.3,1.6c0.2,0.4,0.6,0.6,1.1,0.6c0.5,0,0.9-0.2,1.1-0.6s0.3-0.9,0.3-1.6v-0.1c0-0.6-0.1-1.2-0.4-1.6
|
||||
c-0.2-0.4-0.6-0.6-1.1-0.6c-0.5,0-0.9,0.2-1.1,0.6c-0.2,0.4-0.3,0.9-0.3,1.6V226.8z"/>
|
||||
<path class="st42" d="M167,229.4c-0.2,0.3-0.5,0.6-0.8,0.8c-0.3,0.2-0.7,0.3-1.1,0.3c-0.9,0-1.6-0.3-2.1-1s-0.7-1.5-0.7-2.6v-0.1
|
||||
c0-1.1,0.2-2,0.7-2.7c0.5-0.7,1.2-1,2.1-1c0.4,0,0.7,0.1,1,0.2c0.3,0.2,0.5,0.4,0.8,0.7v-2.6l-1-0.2v-1.2h1h1.9v9l0.9,0.2v1.2
|
||||
h-2.6L167,229.4z M164.3,226.9c0,0.6,0.1,1.1,0.3,1.5s0.6,0.5,1,0.5c0.3,0,0.5-0.1,0.7-0.2s0.4-0.3,0.5-0.5v-3
|
||||
c-0.1-0.2-0.3-0.4-0.5-0.5c-0.2-0.1-0.4-0.2-0.7-0.2c-0.5,0-0.8,0.2-1,0.6s-0.3,1-0.3,1.6V226.9z"/>
|
||||
<path class="st42" d="M173.7,230.3V229l3.1-3.4c0.5-0.5,0.8-1,1-1.3c0.2-0.4,0.3-0.7,0.3-1c0-0.4-0.1-0.7-0.3-1
|
||||
c-0.2-0.3-0.5-0.4-0.9-0.4c-0.4,0-0.8,0.2-1,0.5c-0.2,0.3-0.3,0.7-0.3,1.2h-1.9l0,0c0-0.9,0.3-1.6,0.9-2.2
|
||||
c0.6-0.6,1.4-0.9,2.4-0.9c1,0,1.8,0.3,2.4,0.8s0.9,1.2,0.9,2.1c0,0.6-0.2,1.1-0.5,1.6c-0.3,0.5-0.9,1.1-1.6,1.9l-1.7,1.9l0,0h2.5
|
||||
l0.1-1h1.5v2.4H173.7z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path class="st42" d="M35.2,220.6c1.1,0,2,0.3,2.6,0.9s1,1.3,1,2.2c0,0.9-0.3,1.7-1,2.2c-0.6,0.6-1.5,0.8-2.6,0.8h-1.6v2.1l1,0.2
|
||||
v1.2h-4v-1.2l1-0.2V222l-1-0.2v-1.2h1H35.2z M33.5,225.3h1.6c0.5,0,0.9-0.1,1.2-0.4c0.3-0.3,0.4-0.7,0.4-1.1
|
||||
c0-0.5-0.1-0.8-0.4-1.2c-0.3-0.3-0.7-0.5-1.2-0.5h-1.6V225.3z"/>
|
||||
<path class="st42" d="M39.3,226.6c0-1.1,0.3-1.9,0.9-2.6c0.6-0.7,1.4-1,2.5-1c1.1,0,1.9,0.3,2.5,1c0.6,0.7,0.9,1.6,0.9,2.6v0.1
|
||||
c0,1.1-0.3,2-0.9,2.6c-0.6,0.7-1.4,1-2.5,1c-1.1,0-1.9-0.3-2.5-1c-0.6-0.7-0.9-1.6-0.9-2.6V226.6z M41.3,226.8
|
||||
c0,0.7,0.1,1.2,0.3,1.6c0.2,0.4,0.6,0.6,1.1,0.6c0.5,0,0.9-0.2,1.1-0.6s0.3-0.9,0.3-1.6v-0.1c0-0.6-0.1-1.2-0.4-1.6
|
||||
c-0.2-0.4-0.6-0.6-1.1-0.6c-0.5,0-0.9,0.2-1.1,0.6c-0.2,0.4-0.3,0.9-0.3,1.6V226.8z"/>
|
||||
<path class="st42" d="M51.6,229.4c-0.2,0.3-0.5,0.6-0.8,0.8c-0.3,0.2-0.7,0.3-1.1,0.3c-0.9,0-1.6-0.3-2.1-1s-0.7-1.5-0.7-2.6v-0.1
|
||||
c0-1.1,0.2-2,0.7-2.7c0.5-0.7,1.2-1,2.1-1c0.4,0,0.7,0.1,1,0.2c0.3,0.2,0.5,0.4,0.8,0.7v-2.6l-1-0.2v-1.2h1h1.9v9l0.9,0.2v1.2
|
||||
h-2.6L51.6,229.4z M48.9,226.9c0,0.6,0.1,1.1,0.3,1.5s0.6,0.5,1,0.5c0.3,0,0.5-0.1,0.7-0.2s0.4-0.3,0.5-0.5v-3
|
||||
c-0.1-0.2-0.3-0.4-0.5-0.5c-0.2-0.1-0.4-0.2-0.7-0.2c-0.5,0-0.8,0.2-1,0.6s-0.3,1-0.3,1.6V226.9z"/>
|
||||
<path class="st42" d="M58.4,229.1l1.6-0.2v-6.5h-1.7v-1.1l3.6-0.7v8.3l1.6,0.2v1.2h-5.2V229.1z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path class="st42" d="M280.3,220.6c1.1,0,2,0.3,2.6,0.9s1,1.3,1,2.2c0,0.9-0.3,1.7-1,2.2c-0.6,0.6-1.5,0.8-2.6,0.8h-1.6v2.1l1,0.2
|
||||
v1.2h-4v-1.2l1-0.2V222l-1-0.2v-1.2h1H280.3z M278.7,225.3h1.6c0.5,0,0.9-0.1,1.2-0.4c0.3-0.3,0.4-0.7,0.4-1.1
|
||||
c0-0.5-0.1-0.8-0.4-1.2c-0.3-0.3-0.7-0.5-1.2-0.5h-1.6V225.3z"/>
|
||||
<path class="st42" d="M284.5,226.6c0-1.1,0.3-1.9,0.9-2.6c0.6-0.7,1.4-1,2.5-1c1.1,0,1.9,0.3,2.5,1c0.6,0.7,0.9,1.6,0.9,2.6v0.1
|
||||
c0,1.1-0.3,2-0.9,2.6c-0.6,0.7-1.4,1-2.5,1c-1.1,0-1.9-0.3-2.5-1c-0.6-0.7-0.9-1.6-0.9-2.6V226.6z M286.4,226.8
|
||||
c0,0.7,0.1,1.2,0.3,1.6c0.2,0.4,0.6,0.6,1.1,0.6c0.5,0,0.9-0.2,1.1-0.6s0.3-0.9,0.3-1.6v-0.1c0-0.6-0.1-1.2-0.4-1.6
|
||||
c-0.2-0.4-0.6-0.6-1.1-0.6c-0.5,0-0.9,0.2-1.1,0.6c-0.2,0.4-0.3,0.9-0.3,1.6V226.8z"/>
|
||||
<path class="st42" d="M296.8,229.4c-0.2,0.3-0.5,0.6-0.8,0.8c-0.3,0.2-0.7,0.3-1.1,0.3c-0.9,0-1.6-0.3-2.1-1s-0.7-1.5-0.7-2.6
|
||||
v-0.1c0-1.1,0.2-2,0.7-2.7c0.5-0.7,1.2-1,2.1-1c0.4,0,0.7,0.1,1,0.2c0.3,0.2,0.5,0.4,0.8,0.7v-2.6l-1-0.2v-1.2h1h1.9v9l0.9,0.2
|
||||
v1.2h-2.6L296.8,229.4z M294.1,226.9c0,0.6,0.1,1.1,0.3,1.5s0.6,0.5,1,0.5c0.3,0,0.5-0.1,0.7-0.2s0.4-0.3,0.5-0.5v-3
|
||||
c-0.1-0.2-0.3-0.4-0.5-0.5c-0.2-0.1-0.4-0.2-0.7-0.2c-0.5,0-0.8,0.2-1,0.6s-0.3,1-0.3,1.6V226.9z"/>
|
||||
<path class="st42" d="M305.6,224.6h1.1c0.5,0,0.8-0.1,1-0.4s0.3-0.6,0.3-1c0-0.4-0.1-0.7-0.3-0.9c-0.2-0.2-0.5-0.4-1-0.4
|
||||
c-0.4,0-0.7,0.1-0.9,0.3c-0.2,0.2-0.4,0.5-0.4,0.8h-1.9l0,0c0-0.8,0.3-1.4,0.9-1.9c0.6-0.5,1.4-0.7,2.3-0.7c1,0,1.8,0.2,2.4,0.7
|
||||
c0.6,0.5,0.9,1.2,0.9,2c0,0.4-0.1,0.8-0.4,1.2s-0.6,0.7-1.1,0.9c0.5,0.2,0.9,0.5,1.2,0.9s0.4,0.9,0.4,1.4c0,0.9-0.3,1.6-1,2.1
|
||||
c-0.6,0.5-1.5,0.8-2.5,0.8c-0.9,0-1.7-0.2-2.3-0.7c-0.6-0.5-1-1.1-0.9-2l0,0h1.9c0,0.4,0.1,0.7,0.4,0.9s0.6,0.4,1,0.4
|
||||
c0.4,0,0.8-0.1,1.1-0.4c0.3-0.2,0.4-0.6,0.4-1c0-0.5-0.1-0.9-0.4-1.1c-0.3-0.2-0.6-0.4-1.1-0.4h-1.1V224.6z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path class="st42" d="M440.2,220.6c1.1,0,2,0.3,2.6,0.9s1,1.3,1,2.2c0,0.9-0.3,1.7-1,2.2c-0.6,0.6-1.5,0.8-2.6,0.8h-1.6v2.1l1,0.2
|
||||
v1.2h-4v-1.2l1-0.2V222l-1-0.2v-1.2h1H440.2z M438.6,225.3h1.6c0.5,0,0.9-0.1,1.2-0.4c0.3-0.3,0.4-0.7,0.4-1.1
|
||||
c0-0.5-0.1-0.8-0.4-1.2c-0.3-0.3-0.7-0.5-1.2-0.5h-1.6V225.3z"/>
|
||||
<path class="st42" d="M444.4,226.6c0-1.1,0.3-1.9,0.9-2.6c0.6-0.7,1.4-1,2.5-1c1.1,0,1.9,0.3,2.5,1c0.6,0.7,0.9,1.6,0.9,2.6v0.1
|
||||
c0,1.1-0.3,2-0.9,2.6c-0.6,0.7-1.4,1-2.5,1c-1.1,0-1.9-0.3-2.5-1c-0.6-0.7-0.9-1.6-0.9-2.6V226.6z M446.3,226.8
|
||||
c0,0.7,0.1,1.2,0.3,1.6c0.2,0.4,0.6,0.6,1.1,0.6c0.5,0,0.9-0.2,1.1-0.6s0.3-0.9,0.3-1.6v-0.1c0-0.6-0.1-1.2-0.4-1.6
|
||||
c-0.2-0.4-0.6-0.6-1.1-0.6c-0.5,0-0.9,0.2-1.1,0.6c-0.2,0.4-0.3,0.9-0.3,1.6V226.8z"/>
|
||||
<path class="st42" d="M456.7,229.4c-0.2,0.3-0.5,0.6-0.8,0.8c-0.3,0.2-0.7,0.3-1.1,0.3c-0.9,0-1.6-0.3-2.1-1s-0.7-1.5-0.7-2.6
|
||||
v-0.1c0-1.1,0.2-2,0.7-2.7c0.5-0.7,1.2-1,2.1-1c0.4,0,0.7,0.1,1,0.2c0.3,0.2,0.5,0.4,0.8,0.7v-2.6l-1-0.2v-1.2h1h1.9v9l0.9,0.2
|
||||
v1.2h-2.6L456.7,229.4z M454,226.9c0,0.6,0.1,1.1,0.3,1.5s0.6,0.5,1,0.5c0.3,0,0.5-0.1,0.7-0.2s0.4-0.3,0.5-0.5v-3
|
||||
c-0.1-0.2-0.3-0.4-0.5-0.5c-0.2-0.1-0.4-0.2-0.7-0.2c-0.5,0-0.8,0.2-1,0.6s-0.3,1-0.3,1.6V226.9z"/>
|
||||
<path class="st42" d="M469.2,226.7h1.1v1.3h-1.1v0.9l1,0.2v1.2h-4v-1.2l1-0.2V228h-3.9l-0.1-0.9l4-6.4h2V226.7z M465,226.7h2.2
|
||||
v-3.5l0,0l-0.2,0.3L465,226.7z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path class="st42" d="M560.2,131.7c0.4,0,0.7-0.1,1-0.4s0.4-0.5,0.4-0.9h1l0,0c0,0.5-0.2,1-0.7,1.5s-1.1,0.6-1.8,0.6
|
||||
c-0.9,0-1.6-0.3-2.1-0.9s-0.7-1.4-0.7-2.3v-0.2c0-0.9,0.2-1.7,0.7-2.3s1.2-0.9,2.1-0.9c0.5,0,1,0.1,1.4,0.3s0.7,0.4,1,0.7l0.1,1.4
|
||||
h-0.9l-0.3-1c-0.1-0.1-0.3-0.2-0.5-0.3s-0.5-0.1-0.7-0.1c-0.6,0-1,0.2-1.3,0.7s-0.4,1-0.4,1.6v0.2c0,0.6,0.1,1.2,0.4,1.6
|
||||
S559.6,131.7,560.2,131.7z"/>
|
||||
<path class="st42" d="M563.8,129.2c0-0.9,0.3-1.7,0.8-2.3s1.2-0.9,2.1-0.9c0.9,0,1.6,0.3,2.1,0.9s0.8,1.4,0.8,2.3v0.1
|
||||
c0,0.9-0.3,1.7-0.8,2.3s-1.2,0.9-2.1,0.9c-0.9,0-1.6-0.3-2.1-0.9s-0.8-1.4-0.8-2.3V129.2z M565,129.3c0,0.7,0.1,1.2,0.4,1.7
|
||||
s0.7,0.7,1.3,0.7c0.5,0,1-0.2,1.2-0.7s0.4-1,0.4-1.7v-0.1c0-0.7-0.1-1.2-0.4-1.7s-0.7-0.7-1.3-0.7s-1,0.2-1.3,0.7s-0.4,1-0.4,1.7
|
||||
V129.3z"/>
|
||||
<path class="st42" d="M570.4,131.7l1-0.2V127l-1-0.2v-0.7h2l0.1,0.9c0.2-0.3,0.5-0.6,0.8-0.8s0.7-0.3,1.1-0.3
|
||||
c0.7,0,1.2,0.2,1.6,0.6s0.6,1,0.6,1.9v3.1l1,0.2v0.7h-3.1v-0.7l1-0.2v-3.1c0-0.6-0.1-1-0.3-1.2s-0.6-0.4-1-0.4
|
||||
c-0.3,0-0.6,0.1-0.9,0.2s-0.5,0.4-0.6,0.7v3.7l1,0.2v0.7h-3.1V131.7z"/>
|
||||
<path class="st42" d="M580.3,124.6v1.5h1.2v0.9h-1.2v3.8c0,0.3,0.1,0.5,0.2,0.6s0.3,0.2,0.5,0.2c0.1,0,0.2,0,0.3,0s0.2,0,0.3-0.1
|
||||
l0.2,0.8c-0.1,0.1-0.3,0.1-0.5,0.2s-0.4,0.1-0.6,0.1c-0.5,0-0.8-0.1-1.1-0.4s-0.4-0.7-0.4-1.3v-3.8h-1v-0.9h1v-1.5H580.3z"/>
|
||||
<path class="st42" d="M586.8,132.4c0-0.2-0.1-0.3-0.1-0.5s0-0.3,0-0.4c-0.2,0.3-0.5,0.5-0.8,0.7s-0.7,0.3-1.1,0.3
|
||||
c-0.7,0-1.2-0.2-1.5-0.5s-0.5-0.8-0.5-1.4c0-0.6,0.2-1.1,0.7-1.4s1.2-0.5,2-0.5h1.2v-0.7c0-0.4-0.1-0.7-0.4-0.9s-0.6-0.3-1-0.3
|
||||
c-0.3,0-0.5,0-0.8,0.1s-0.4,0.2-0.5,0.3l-0.1,0.7H583v-1.2c0.3-0.2,0.6-0.4,1-0.6s0.9-0.2,1.3-0.2c0.7,0,1.3,0.2,1.7,0.6
|
||||
s0.7,0.9,0.7,1.6v3.1c0,0.1,0,0.2,0,0.2s0,0.2,0,0.2l0.5,0.1v0.7H586.8z M585,131.6c0.4,0,0.7-0.1,1-0.3s0.5-0.4,0.7-0.7v-1h-1.2
|
||||
c-0.5,0-0.8,0.1-1.1,0.3s-0.4,0.5-0.4,0.8c0,0.3,0.1,0.5,0.3,0.6S584.6,131.6,585,131.6z"/>
|
||||
<path class="st42" d="M589.3,131.7l1-0.2V127l-1-0.2v-0.7h2.1v5.4l1,0.2v0.7h-3.1V131.7z M591.4,124.5h-1.2v-1.2h1.2V124.5z"/>
|
||||
<path class="st42" d="M593.1,131.7l1-0.2V127l-1-0.2v-0.7h2l0.1,0.9c0.2-0.3,0.5-0.6,0.8-0.8s0.7-0.3,1.1-0.3
|
||||
c0.7,0,1.2,0.2,1.6,0.6s0.6,1,0.6,1.9v3.1l1,0.2v0.7H597v-0.7l1-0.2v-3.1c0-0.6-0.1-1-0.3-1.2s-0.6-0.4-1-0.4
|
||||
c-0.3,0-0.6,0.1-0.9,0.2s-0.5,0.4-0.6,0.7v3.7l1,0.2v0.7h-3.1V131.7z"/>
|
||||
<path class="st42" d="M603.8,132.6c-0.9,0-1.6-0.3-2.1-0.9s-0.8-1.4-0.8-2.3v-0.3c0-0.9,0.3-1.7,0.8-2.3s1.2-0.9,1.9-0.9
|
||||
c0.9,0,1.5,0.3,1.9,0.8s0.7,1.2,0.7,2.1v0.7h-4.1l0,0c0,0.6,0.2,1.1,0.5,1.5s0.7,0.6,1.2,0.6c0.4,0,0.7-0.1,1-0.2s0.5-0.3,0.8-0.5
|
||||
l0.5,0.8c-0.2,0.2-0.5,0.4-0.9,0.6S604.3,132.6,603.8,132.6z M603.6,126.9c-0.4,0-0.7,0.2-1,0.5s-0.4,0.7-0.5,1.2l0,0h2.9v-0.2
|
||||
c0-0.5-0.1-0.8-0.4-1.1S604.1,126.9,603.6,126.9z"/>
|
||||
<path class="st42" d="M607.3,126.8v-0.7h2l0.1,0.9c0.2-0.3,0.4-0.6,0.7-0.8s0.6-0.3,0.9-0.3c0.1,0,0.2,0,0.3,0s0.2,0,0.2,0
|
||||
l-0.2,1.1l-0.7,0c-0.3,0-0.6,0.1-0.8,0.2s-0.4,0.3-0.5,0.6v3.6l1,0.2v0.7h-3.1v-0.7l1-0.2V127L607.3,126.8z"/>
|
||||
<path class="st42" d="M612.3,131.7l1-0.2V127l-1-0.2v-0.7h2.1v5.4l1,0.2v0.7h-3.1V131.7z M614.4,124.5h-1.2v-1.2h1.2V124.5z"/>
|
||||
<path class="st42" d="M617.8,131.5h2.6l0.1-1h1v1.9h-5v-0.8l3.4-4.6h-2.3l-0.1,1h-1v-1.9h4.8v0.8L617.8,131.5z"/>
|
||||
<path class="st42" d="M625.4,132.6c-0.9,0-1.6-0.3-2.1-0.9s-0.8-1.4-0.8-2.3v-0.3c0-0.9,0.3-1.7,0.8-2.3s1.2-0.9,1.9-0.9
|
||||
c0.9,0,1.5,0.3,1.9,0.8s0.7,1.2,0.7,2.1v0.7h-4.1l0,0c0,0.6,0.2,1.1,0.5,1.5s0.7,0.6,1.2,0.6c0.4,0,0.7-0.1,1-0.2s0.5-0.3,0.8-0.5
|
||||
l0.5,0.8c-0.2,0.2-0.5,0.4-0.9,0.6S625.9,132.6,625.4,132.6z M625.2,126.9c-0.4,0-0.7,0.2-1,0.5s-0.4,0.7-0.5,1.2l0,0h2.9v-0.2
|
||||
c0-0.5-0.1-0.8-0.4-1.1S625.7,126.9,625.2,126.9z"/>
|
||||
<path class="st42" d="M633.2,131.7c-0.2,0.3-0.5,0.5-0.8,0.7s-0.6,0.2-1,0.2c-0.8,0-1.4-0.3-1.8-0.8s-0.7-1.3-0.7-2.2v-0.1
|
||||
c0-1,0.2-1.8,0.7-2.5s1-0.9,1.8-0.9c0.4,0,0.7,0.1,1,0.2s0.5,0.3,0.7,0.6v-2.6l-1-0.2v-0.7h1h1.2v8.2l1,0.2v0.7h-2L633.2,131.7z
|
||||
M630.1,129.5c0,0.6,0.1,1.1,0.4,1.5s0.7,0.6,1.2,0.6c0.3,0,0.6-0.1,0.9-0.2s0.4-0.4,0.6-0.7v-2.9c-0.1-0.3-0.3-0.5-0.6-0.6
|
||||
s-0.5-0.2-0.9-0.2c-0.6,0-1,0.2-1.2,0.7s-0.4,1.1-0.4,1.8V129.5z"/>
|
||||
<path class="st42" d="M643.3,132.4c0-0.2-0.1-0.3-0.1-0.5s0-0.3,0-0.4c-0.2,0.3-0.5,0.5-0.8,0.7s-0.7,0.3-1.1,0.3
|
||||
c-0.7,0-1.2-0.2-1.5-0.5s-0.5-0.8-0.5-1.4c0-0.6,0.2-1.1,0.7-1.4s1.2-0.5,2-0.5h1.2v-0.7c0-0.4-0.1-0.7-0.4-0.9s-0.6-0.3-1-0.3
|
||||
c-0.3,0-0.5,0-0.8,0.1s-0.4,0.2-0.5,0.3l-0.1,0.7h-0.9v-1.2c0.3-0.2,0.6-0.4,1-0.6s0.9-0.2,1.3-0.2c0.7,0,1.3,0.2,1.7,0.6
|
||||
s0.7,0.9,0.7,1.6v3.1c0,0.1,0,0.2,0,0.2s0,0.2,0,0.2l0.5,0.1v0.7H643.3z M641.4,131.6c0.4,0,0.7-0.1,1-0.3s0.5-0.4,0.7-0.7v-1
|
||||
h-1.2c-0.5,0-0.8,0.1-1.1,0.3s-0.4,0.5-0.4,0.8c0,0.3,0.1,0.5,0.3,0.6S641.1,131.6,641.4,131.6z"/>
|
||||
<path class="st42" d="M645.6,134.1l1-0.2v-7l-1-0.2v-0.7h1.9l0.1,0.8c0.2-0.3,0.5-0.5,0.8-0.7s0.7-0.2,1.1-0.2
|
||||
c0.8,0,1.4,0.3,1.8,0.9s0.7,1.4,0.7,2.5v0.1c0,0.9-0.2,1.7-0.7,2.2s-1,0.8-1.8,0.8c-0.4,0-0.7-0.1-1-0.2s-0.5-0.3-0.8-0.6v2.2
|
||||
l1,0.2v0.7h-3.1V134.1z M650.8,129.4c0-0.7-0.1-1.3-0.4-1.8s-0.7-0.7-1.3-0.7c-0.3,0-0.6,0.1-0.8,0.2s-0.4,0.4-0.6,0.6v3.1
|
||||
c0.1,0.3,0.3,0.5,0.6,0.6s0.5,0.2,0.9,0.2c0.5,0,1-0.2,1.2-0.6s0.4-0.9,0.4-1.6V129.4z"/>
|
||||
<path class="st42" d="M652.9,134.1l1-0.2v-7l-1-0.2v-0.7h1.9l0.1,0.8c0.2-0.3,0.5-0.5,0.8-0.7s0.7-0.2,1.1-0.2
|
||||
c0.8,0,1.4,0.3,1.8,0.9s0.7,1.4,0.7,2.5v0.1c0,0.9-0.2,1.7-0.7,2.2s-1,0.8-1.8,0.8c-0.4,0-0.7-0.1-1-0.2s-0.5-0.3-0.8-0.6v2.2
|
||||
l1,0.2v0.7h-3.1V134.1z M658.1,129.4c0-0.7-0.1-1.3-0.4-1.8s-0.7-0.7-1.3-0.7c-0.3,0-0.6,0.1-0.8,0.2s-0.4,0.4-0.6,0.6v3.1
|
||||
c0.1,0.3,0.3,0.5,0.6,0.6s0.5,0.2,0.9,0.2c0.5,0,1-0.2,1.2-0.6s0.4-0.9,0.4-1.6V129.4z"/>
|
||||
</g>
|
||||
<line class="st61" x1="554.8" y1="130" x2="481.7" y2="130"/>
|
||||
<g>
|
||||
<path class="st42" d="M559.5,106.8l-0.8,0.1l1.3,3.6l0.1,0.5h0l0.1-0.5l1.3-3.6l-0.8-0.1V106h2.4v0.7l-0.5,0.1l-2.1,5.5h-0.9
|
||||
l-2.2-5.5l-0.5-0.1V106h2.4V106.8z"/>
|
||||
<path class="st42" d="M564,109.1c0-0.9,0.3-1.7,0.8-2.3s1.2-0.9,2.1-0.9c0.9,0,1.6,0.3,2.1,0.9s0.8,1.4,0.8,2.3v0.1
|
||||
c0,0.9-0.3,1.7-0.8,2.3s-1.2,0.9-2.1,0.9c-0.9,0-1.6-0.3-2.1-0.9s-0.8-1.4-0.8-2.3V109.1z M565.1,109.3c0,0.7,0.1,1.2,0.4,1.7
|
||||
s0.7,0.7,1.3,0.7c0.5,0,1-0.2,1.2-0.7s0.4-1,0.4-1.7v-0.1c0-0.7-0.1-1.2-0.4-1.7s-0.7-0.7-1.3-0.7s-1,0.2-1.3,0.7s-0.4,1-0.4,1.7
|
||||
V109.3z"/>
|
||||
<path class="st42" d="M570.4,104v-0.7h2.1v8.2l1,0.2v0.7h-3.1v-0.7l1-0.2v-7.3L570.4,104z"/>
|
||||
<path class="st42" d="M578.9,111.4c-0.2,0.3-0.5,0.6-0.8,0.8s-0.7,0.3-1.1,0.3c-0.7,0-1.2-0.2-1.6-0.7s-0.6-1.1-0.6-2.1v-2.8
|
||||
l-0.7-0.2V106h0.7h1.2v3.8c0,0.7,0.1,1.1,0.3,1.4s0.5,0.4,0.9,0.4c0.4,0,0.7-0.1,1-0.2s0.5-0.4,0.6-0.7v-3.7l-0.8-0.2V106h0.8h1.2
|
||||
v5.4l0.7,0.2v0.7H579L578.9,111.4z"/>
|
||||
<path class="st42" d="M581.4,111.6l1-0.2v-4.5l-1-0.2V106h2l0.1,0.8c0.2-0.3,0.5-0.5,0.8-0.7s0.7-0.2,1.1-0.2s0.8,0.1,1.1,0.3
|
||||
s0.5,0.5,0.7,0.9c0.2-0.4,0.5-0.6,0.8-0.9s0.7-0.3,1.1-0.3c0.6,0,1.2,0.2,1.5,0.7s0.6,1.1,0.6,2v2.9l1,0.2v0.7h-3.1v-0.7l1-0.2
|
||||
v-2.9c0-0.6-0.1-1.1-0.3-1.3s-0.5-0.4-1-0.4c-0.4,0-0.7,0.1-1,0.4s-0.4,0.6-0.4,1.1v3.1l1,0.2v0.7h-3.1v-0.7l1-0.2v-2.9
|
||||
c0-0.6-0.1-1-0.3-1.3s-0.5-0.4-1-0.4c-0.4,0-0.6,0.1-0.9,0.2s-0.4,0.3-0.5,0.6v3.8l1,0.2v0.7h-3.1V111.6z"/>
|
||||
<path class="st42" d="M595.8,112.5c-0.9,0-1.6-0.3-2.1-0.9s-0.8-1.4-0.8-2.3v-0.3c0-0.9,0.3-1.7,0.8-2.3s1.2-0.9,1.9-0.9
|
||||
c0.9,0,1.5,0.3,1.9,0.8s0.7,1.2,0.7,2.1v0.7h-4.1l0,0c0,0.6,0.2,1.1,0.5,1.5s0.7,0.6,1.2,0.6c0.4,0,0.7-0.1,1-0.2s0.5-0.3,0.8-0.5
|
||||
l0.5,0.8c-0.2,0.2-0.5,0.4-0.9,0.6S596.3,112.5,595.8,112.5z M595.6,106.8c-0.4,0-0.7,0.2-1,0.5s-0.4,0.7-0.5,1.2l0,0h2.9v-0.2
|
||||
c0-0.5-0.1-0.8-0.4-1.1S596.1,106.8,595.6,106.8z"/>
|
||||
</g>
|
||||
<line class="st61" x1="554.8" y1="110" x2="468.4" y2="110"/>
|
||||
<g>
|
||||
<path class="st42" d="M557.2,46.7V46h3.1v0.7l-1,0.2v6.7l1,0.2v0.7h-3.1v-0.7l1-0.2v-6.7L557.2,46.7z"/>
|
||||
<path class="st42" d="M565,46c0.9,0,1.6,0.2,2.1,0.7s0.8,1.1,0.8,1.9c0,0.8-0.3,1.4-0.8,1.9s-1.2,0.7-2.1,0.7h-1.8v2.5l1,0.2v0.7
|
||||
h-3.1v-0.7l1-0.2v-6.7l-1-0.2V46h1H565z M563.2,50.2h1.8c0.6,0,1-0.2,1.3-0.5s0.4-0.7,0.4-1.2s-0.1-0.9-0.4-1.2s-0.7-0.5-1.3-0.5
|
||||
h-1.8V50.2z"/>
|
||||
<path class="st42" d="M576,54.5c0-0.2-0.1-0.3-0.1-0.5s0-0.3,0-0.4c-0.2,0.3-0.5,0.5-0.8,0.7s-0.7,0.3-1.1,0.3
|
||||
c-0.7,0-1.2-0.2-1.5-0.5s-0.5-0.8-0.5-1.4c0-0.6,0.2-1.1,0.7-1.4s1.2-0.5,2-0.5h1.2v-0.7c0-0.4-0.1-0.7-0.4-0.9s-0.6-0.3-1-0.3
|
||||
c-0.3,0-0.5,0-0.8,0.1s-0.4,0.2-0.5,0.3l-0.1,0.7h-0.9v-1.2c0.3-0.2,0.6-0.4,1-0.6s0.9-0.2,1.3-0.2c0.7,0,1.3,0.2,1.7,0.6
|
||||
s0.7,0.9,0.7,1.6v3.1c0,0.1,0,0.2,0,0.2s0,0.2,0,0.2l0.5,0.1v0.7H576z M574.1,53.6c0.4,0,0.7-0.1,1-0.3s0.5-0.4,0.7-0.7v-1h-1.2
|
||||
c-0.5,0-0.8,0.1-1.1,0.3s-0.4,0.5-0.4,0.8c0,0.3,0.1,0.5,0.3,0.6S573.8,53.6,574.1,53.6z"/>
|
||||
<path class="st42" d="M582.7,53.7c-0.2,0.3-0.5,0.5-0.8,0.7s-0.6,0.2-1,0.2c-0.8,0-1.4-0.3-1.8-0.8s-0.7-1.3-0.7-2.2v-0.1
|
||||
c0-1,0.2-1.8,0.7-2.5s1-0.9,1.8-0.9c0.4,0,0.7,0.1,1,0.2s0.5,0.3,0.7,0.6v-2.6l-1-0.2v-0.7h1h1.2v8.2l1,0.2v0.7h-2L582.7,53.7z
|
||||
M579.6,51.6c0,0.6,0.1,1.1,0.4,1.5s0.7,0.6,1.2,0.6c0.3,0,0.6-0.1,0.9-0.2s0.4-0.4,0.6-0.7v-2.9c-0.1-0.3-0.3-0.5-0.6-0.6
|
||||
s-0.5-0.2-0.9-0.2c-0.6,0-1,0.2-1.2,0.7s-0.4,1.1-0.4,1.8V51.6z"/>
|
||||
<path class="st42" d="M589.9,53.7c-0.2,0.3-0.5,0.5-0.8,0.7s-0.6,0.2-1,0.2c-0.8,0-1.4-0.3-1.8-0.8s-0.7-1.3-0.7-2.2v-0.1
|
||||
c0-1,0.2-1.8,0.7-2.5s1-0.9,1.8-0.9c0.4,0,0.7,0.1,1,0.2s0.5,0.3,0.7,0.6v-2.6l-1-0.2v-0.7h1h1.2v8.2l1,0.2v0.7h-2L589.9,53.7z
|
||||
M586.8,51.6c0,0.6,0.1,1.1,0.4,1.5s0.7,0.6,1.2,0.6c0.3,0,0.6-0.1,0.9-0.2s0.4-0.4,0.6-0.7v-2.9c-0.1-0.3-0.3-0.5-0.6-0.6
|
||||
s-0.5-0.2-0.9-0.2c-0.6,0-1,0.2-1.2,0.7s-0.4,1.1-0.4,1.8V51.6z"/>
|
||||
<path class="st42" d="M592.9,48.9v-0.7h2l0.1,0.9c0.2-0.3,0.4-0.6,0.7-0.8s0.6-0.3,0.9-0.3c0.1,0,0.2,0,0.3,0s0.2,0,0.2,0
|
||||
l-0.2,1.1l-0.7,0c-0.3,0-0.6,0.1-0.8,0.2s-0.4,0.3-0.5,0.6v3.6l1,0.2v0.7h-3.1v-0.7l1-0.2v-4.5L592.9,48.9z"/>
|
||||
<path class="st42" d="M600.6,54.6c-0.9,0-1.6-0.3-2.1-0.9s-0.8-1.4-0.8-2.3v-0.3c0-0.9,0.3-1.7,0.8-2.3s1.2-0.9,1.9-0.9
|
||||
c0.9,0,1.5,0.3,1.9,0.8s0.7,1.2,0.7,2.1v0.7h-4.1l0,0c0,0.6,0.2,1.1,0.5,1.5s0.7,0.6,1.2,0.6c0.4,0,0.7-0.1,1-0.2s0.5-0.3,0.8-0.5
|
||||
l0.5,0.8c-0.2,0.2-0.5,0.4-0.9,0.6S601.1,54.6,600.6,54.6z M600.4,48.9c-0.4,0-0.7,0.2-1,0.5s-0.4,0.7-0.5,1.2l0,0h2.9v-0.2
|
||||
c0-0.5-0.1-0.8-0.4-1.1S600.9,48.9,600.4,48.9z"/>
|
||||
<path class="st42" d="M609,50.1h-0.9l-0.2-0.8c-0.1-0.1-0.3-0.2-0.5-0.3s-0.5-0.1-0.7-0.1c-0.4,0-0.7,0.1-0.9,0.3
|
||||
s-0.3,0.4-0.3,0.7c0,0.2,0.1,0.4,0.3,0.6s0.5,0.3,1.1,0.4c0.8,0.2,1.4,0.4,1.8,0.7s0.6,0.7,0.6,1.2c0,0.6-0.2,1-0.7,1.4
|
||||
s-1,0.5-1.8,0.5c-0.5,0-0.9-0.1-1.3-0.2s-0.7-0.3-1-0.5l0-1.4h0.9l0.2,0.8c0.1,0.1,0.3,0.2,0.5,0.3s0.5,0.1,0.7,0.1
|
||||
c0.4,0,0.7-0.1,1-0.2s0.3-0.4,0.3-0.7c0-0.3-0.1-0.5-0.3-0.6s-0.6-0.3-1.1-0.4c-0.8-0.2-1.3-0.4-1.7-0.7s-0.6-0.7-0.6-1.2
|
||||
c0-0.5,0.2-1,0.7-1.3s1-0.5,1.7-0.5c0.5,0,0.9,0.1,1.3,0.2s0.7,0.3,1,0.5L609,50.1z"/>
|
||||
<path class="st42" d="M615.1,50.1h-0.9l-0.2-0.8c-0.1-0.1-0.3-0.2-0.5-0.3s-0.5-0.1-0.7-0.1c-0.4,0-0.7,0.1-0.9,0.3
|
||||
s-0.3,0.4-0.3,0.7c0,0.2,0.1,0.4,0.3,0.6s0.5,0.3,1.1,0.4c0.8,0.2,1.4,0.4,1.8,0.7s0.6,0.7,0.6,1.2c0,0.6-0.2,1-0.7,1.4
|
||||
s-1,0.5-1.8,0.5c-0.5,0-0.9-0.1-1.3-0.2s-0.7-0.3-1-0.5l0-1.4h0.9l0.2,0.8c0.1,0.1,0.3,0.2,0.5,0.3s0.5,0.1,0.7,0.1
|
||||
c0.4,0,0.7-0.1,1-0.2s0.3-0.4,0.3-0.7c0-0.3-0.1-0.5-0.3-0.6s-0.6-0.3-1.1-0.4c-0.8-0.2-1.3-0.4-1.7-0.7s-0.6-0.7-0.6-1.2
|
||||
c0-0.5,0.2-1,0.7-1.3s1-0.5,1.7-0.5c0.5,0,0.9,0.1,1.3,0.2s0.7,0.3,1,0.5L615.1,50.1z"/>
|
||||
</g>
|
||||
<line class="st61" x1="554.8" y1="52.1" x2="440.6" y2="52.1"/>
|
||||
</g>
|
||||
<g id="Layer_14">
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 37 KiB |
4
content/posts/kube-intro/imgs/services.svg
Normal file
After Width: | Height: | Size: 68 KiB |
234
content/posts/kube-intro/index.md
Normal file
@ -0,0 +1,234 @@
|
||||
+++
|
||||
title = "Intro to kubernetes"
|
||||
weight = 0
|
||||
date = "2025-07-22"
|
||||
+++
|
||||
|
||||

|
||||
|
||||
### Problem in learning kubernetes
|
||||
|
||||
Lots of people are considering learning Kubernetes but are struggling to take the first
|
||||
steps because the official docs are complete dogshit for beginners.
|
||||
Don't get me wrong, the docs are great, but they serve a different purpose and are mostly used by experienced
|
||||
developers as a reference for things they are about to build or for explanations of
|
||||
some concepts that Kubernetes leverages.
|
||||
|
||||
Also official docs are mostly focus on how to deploy a big-ass production-ready system.
|
||||
Which is not something that you will target as a beginner. So instead I'm gonna show you how to deploy a single app.
|
||||
|
||||
Another problem is that people who don't use Kubernetes or are not familiar with all the problems it solves say that
|
||||
for medium and small projects, it is overkill.
|
||||
Which is actually complete bullshit as well.
|
||||
Because of the fact that Kubernetes automates a lot of things, it makes it easier to use than to not use it.
|
||||
And it is not that hard to start.
|
||||
|
||||
### What is Kubernetes? And how is better than Docker?
|
||||
|
||||
People that are aquite good with docker might ask, like `why should I care? Because I can run docker in cluster mode with docker-swarm!`
|
||||
Weeeeell, here's my response to you. The main problem with docker swarm is that it
|
||||
might run applications on multiple nodes, but nothing more than that.
|
||||
What about ingress management, automated certificate issuing, DNS updates, distributed volume provisioning? Docker swarm doesn't have it,
|
||||
and won't have unless they change their approach for declaring workloads. Kubernetes on the other hand is easily extendable, is adopted by big-tech companies and
|
||||
supported by a lot of cloud providers, which makes it a de-facto standard for container orchestration. Sad to admit,
|
||||
but docker swarm is silently dying from the day it was born.
|
||||
|
||||
### What's inside of Kubernetes?
|
||||
|
||||
Since I wanted to give high-level overview of Kubernetes, I won't go into details about each component,
|
||||
and networking, but I will give you a brief overview of the main components that make up Kubernetes.
|
||||
|
||||
* Container
|
||||
* Pod
|
||||
* Deployment
|
||||
* Service
|
||||
* Ingress
|
||||
* Namespace
|
||||
* Secret
|
||||
* ConfigMap
|
||||
|
||||
Now let's take a look at each of these components in more detail.
|
||||
|
||||
#### Container
|
||||
|
||||
Containers are not really something unique to Kubernetes. You might be familiar with containers from other systems
|
||||
like Docker. In context of kubernetes, containers are exactly same containers as they are in docker or containerd. Nothing brand new in here.
|
||||
|
||||
#### Pod
|
||||
|
||||

|
||||
Pods are the smallest deployable units in Kubernetes.
|
||||
It's a logically connected group of containers.
|
||||
|
||||
You can think of them as a virtual machines running some applications. And there are several reasons for that.
|
||||
First of all, pods share same network and you can go from one container to another using localhost.
|
||||
Also, you can attach volumes to pod and then share it to multiple containers.
|
||||
Which seems a lot like a virtual machine, right?
|
||||
|
||||
#### Deployment
|
||||
|
||||
Pods are cool, but there are some limitations to them. First of all, the pod objects are immutable, which means that you can't change them after they are created.
|
||||
|
||||
It might be a problem if you want to update your application, because you will have to delete the pod and create
|
||||
a new one. Also, scaling pods by yourself sounds weird. Of couese you can manually
|
||||
create [ReplicaSet](https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/),
|
||||
but on average it's not something you would want to do.
|
||||
|
||||
So that's why we have [Deployments](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/).
|
||||
It allows you to describe a template for a pod and then Kubernetes will take care of creating, updating, and scaling pods for you. It will implicitly create a ReplicaSet for you, and will be maintaining it for you as well.
|
||||
|
||||
Deployment is a higher-level abstraction that allows you to manage pods more easily, scale them up and down, and update them without downtime.
|
||||
|
||||
There are some policies that you can set for deployments, like how many pods to keep running at the same
|
||||
time, update strategies, and so on.
|
||||
|
||||
Generally speaking, use deployments to manage your pods, and don't create pods directly unless you have
|
||||
a good reason to do so.
|
||||
|
||||
#### Service
|
||||
|
||||

|
||||
|
||||
[Service](https://kubernetes.io/docs/concepts/services-networking/service/) is a resource that allows you to set a single IP address and DNS name for a set of pods.
|
||||
|
||||
By default you can reach to service by it's name from the same namespace. But if you're in a different namespace, you can reach it by using domain name such as this:
|
||||
|
||||
`<service-name>.<namespace-name>.svc.cluster.local`.
|
||||
|
||||
You can think of services as a load balancer that distributes traffic to a set of pods.
|
||||
|
||||
#### Ingress
|
||||
|
||||

|
||||
|
||||
Ingress is a resource that allows you to expose your services to the outside world with a single IP address and DNS name.
|
||||
|
||||
You can think of it as a reverse proxy that routes traffic to different services based on the request path or host.
|
||||
In order to use ingress, you need to have an ingress controller running in your cluster.
|
||||
K3S by default has [Traefik](https://traefik.io/) ingress controller installed, which is a
|
||||
great choice for beginners. But for more control and features, I personally prefer to use [NGINX Ingress Controller](https://kubernetes.github.io/ingress-nginx/).
|
||||
|
||||
Ingress works this way: you create an ingress resource that defines the rules for
|
||||
routing traffic to different services, based on the request path or host.
|
||||
|
||||
Then the ingress controller will take care of routing the traffic to the appropriate service.
|
||||
|
||||
#### Namespace
|
||||
|
||||
I mentioned namespaces in the beginning, but I didn't explain what they are. Actually it's a very simple concept.
|
||||
It's a way to group resources in Kubernetes and manage access. Most of the time you can think of
|
||||
namespaces as just a way to organise resources in your cluster.
|
||||
|
||||
I prefer using different namespaces for different apps. For example my mailserver is deployed in namespace `mailserver`. But my blog is deployed in namespace `s3rius` for personal projects.
|
||||
|
||||
Telegram bots, CI/CD pipelines, and other applications that I deploy in my cluster are also deployed in their own namespaces. Which makes it easier to manage resources and access control.
|
||||
|
||||
About access control, you can use [Role-Based Access Control (RBAC)](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) to manage access to resources in a namespace. It will only be useful if you have multiple users or teams working in the same cluster.
|
||||
|
||||
You can create roles and role bindings to grant permissions to users or groups in a namespace. But I won't cover RBAC in this blog post. Just because it's too complex and we're only discussing basics.
|
||||
|
||||
#### ConfigMap and Secret
|
||||
|
||||
These two resources are used to store configuration data and sensitive information, respectively.
|
||||
For example, you can use ConfigMap to store environment variables, configuration files,
|
||||
or any other non-sensitive data that your application needs to run. And then mount them as
|
||||
files to your pod, or populate environment variables from it, etc.
|
||||
|
||||
In secrets you can store sensitive information like passwords, API keys, or any other data that
|
||||
you don't want to expose in plain text.
|
||||
But please keep in mind that by default k8s encodes all secrets using base64, which is completely insecure.
|
||||
To make secrets actually secret, you better use [Vault](https://developer.hashicorp.com/vault/docs/platform/k8s)
|
||||
or [External secrets operator](https://external-secrets.io/latest/) or something similar. But for now let's just use default base64 encoded secrets.
|
||||
|
||||
### How to deploy kubernetes
|
||||
|
||||
For local development you have several options:
|
||||
* [K3D](https://k3d.io/) - k3s in Docker.
|
||||
* [Minikube](https://minikube.sigs.k8s.io/docs/) - k8s in docker.
|
||||
* [Kind](https://kind.sigs.k8s.io/) - Kubernetes in Docker, but with a focus on testing Kubernetes itself.
|
||||
|
||||
For production:
|
||||
* [Kubeadm](https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/) - raw and barebones way to deploy Kubernetes.
|
||||
* [Kubespray](https://kubespray.io/) - Ansible-based tool to deploy Kubernetes.
|
||||
* [K3S](https://k3s.io/) - Lightweight Kubernetes distribution that is easy to deploy and maintain.
|
||||
* [Rancher](https://rancher.com/) - A complete Kubernetes management platform
|
||||
* [DeckHouse](https://deckhouse.io/products/kubernetes-platform/gs/) - A complete Kubernetes management platform that is easy to deploy and maintain.
|
||||
|
||||
My personal recommendation is to use K3D for local development and K3S for production. For deploying K3S
|
||||
you can use [k3sup](https://github.com/alexellis/k3sup), which is a simple script that allows you to deploy K3S on any Linux server with a single command.
|
||||
|
||||
#### Learning environment
|
||||
|
||||
Let's use Docker-packed Kubernetes to start off. We're going to use [k3d](https://k3d.io) to spin up a cluster.
|
||||
It's an amazing tool that allows you to create a Kubernetes cluster and everything you need with a single command.
|
||||
Additionally, it spins up [k3s](https://k3s.io/) instead of Google's Kubernetes,
|
||||
which is a lightweight version of Kubernetes that is perfect for beginners.
|
||||
|
||||
It has all the features you need to get started and is much easier to set up than other distributions.
|
||||
I'm using this k3d configuration to create a cluster:
|
||||
|
||||
```yaml
|
||||
# yaml-language-server $schema=https://raw.githubusercontent.com/k3d-io/k3d/main/pkg/config/v1alpha5/schema.json
|
||||
apiVersion: k3d.io/v1alpha5
|
||||
kind: Simple
|
||||
metadata:
|
||||
name: default
|
||||
servers: 1
|
||||
volumes:
|
||||
- volume: /tmp/k3d-udev:/run/udev # For openebs
|
||||
ports:
|
||||
- port: 80:80 # HTTP ports mapping for cluster
|
||||
nodeFilters:
|
||||
- loadbalancer
|
||||
- port: 443:443 # HTTPS ports mapping for cluster.
|
||||
nodeFilters:
|
||||
- loadbalancer
|
||||
registries:
|
||||
create:
|
||||
name: registry.localhost # Registry for containers
|
||||
host: "0.0.0.0" # Host for registry
|
||||
hostPort: "5000" # Local port for registry
|
||||
```
|
||||
|
||||
With this configuration, you can create a cluster with a single command:
|
||||
```bash
|
||||
k3d cluster create --config "k3d.yaml"
|
||||
```
|
||||
|
||||
### Connecting to the cluster
|
||||
|
||||
After you install kubectl you should be able to locate file `~/.kube/config`. This file contains all required infomration to connect to clusters. Tools like minikube, k3d or kind will automatically update this file when you create a cluster.
|
||||
|
||||
Let's take a look at the contents of this file:
|
||||
```yaml
|
||||
apiVersion: v1
|
||||
kind: Config
|
||||
preferences: {}
|
||||
# Here's list of clusters that you can connect to.
|
||||
# In this case we have only one cluster, which is k3d-default.
|
||||
clusters:
|
||||
- cluster:
|
||||
certificate-authority-data: DATA+OMITTED
|
||||
server: https://0.0.0.0:44755
|
||||
name: k3d-default
|
||||
# Users is a list of users that you can use to connect to clusters.
|
||||
# Most of the time you will have each user for each cluster.
|
||||
# But in some cases you might have multiple users for the same cluster.
|
||||
users:
|
||||
- name: admin@k3d-default
|
||||
user:
|
||||
client-certificate-data: DATA+OMITTED
|
||||
client-key-data: DATA+OMITTED
|
||||
# Context is a combination of cluster and user that you can use to connect to a cluster.
|
||||
# You can create any combination of cluster and user,
|
||||
# but most of the time you will have only one context for each cluster.
|
||||
contexts:
|
||||
- context:
|
||||
cluster: k3d-default
|
||||
user: admin@k3d-default
|
||||
name: k3d-default
|
||||
# Currently selected context. It will be used as a default one
|
||||
# for all kubectl commands.
|
||||
current-context: k3d-default
|
||||
|
||||
```
|
BIN
static/android-chrome-192x192.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
static/android-chrome-512x512.png
Normal file
After Width: | Height: | Size: 35 KiB |
BIN
static/apple-touch-icon.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
static/favicon-16x16.png
Normal file
After Width: | Height: | Size: 478 B |
BIN
static/favicon-32x32.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
static/favicon.ico
Normal file
After Width: | Height: | Size: 15 KiB |
1
static/site.webmanifest
Normal file
@ -0,0 +1 @@
|
||||
{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}
|