dustin.web/content/projects/dynk8s/sequence.svg

363 lines
22 KiB
XML

<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="805px" preserveAspectRatio="none" style="width:771px;height:805px;background:#777777;" version="1.1" viewBox="0 0 771 805" width="771px" zoomAndPan="magnify"><defs/><g><rect fill="#575757" height="793.3828" style="stroke:#767676;stroke-width:0.5;" width="420.5" x="1" y="6"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="123" x="149.75" y="18.0669">Internal Network</text><rect fill="none" height="177.9609" style="stroke:#000000;stroke-width:1.5;" width="537.5" x="156" y="509.0078"/><line style="stroke:#1A66C2;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="32" x2="32" y1="52.9375" y2="768.5781"/><line style="stroke:#1A66C2;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="138" x2="138" y1="749.6758" y2="768.5781"/><line style="stroke:#1A66C2;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="205" x2="205" y1="52.9375" y2="768.5781"/><line style="stroke:#1A66C2;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="292" x2="292" y1="52.9375" y2="768.5781"/><line style="stroke:#1A66C2;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="378.5" x2="378.5" y1="52.9375" y2="768.5781"/><line style="stroke:#1A66C2;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="543.5" x2="543.5" y1="52.9375" y2="768.5781"/><line style="stroke:#1A66C2;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="639.5" x2="639.5" y1="172.2539" y2="768.5781"/><rect fill="#2E2E2E" height="26.8047" rx="2.5" ry="2.5" style="stroke:#1B1B1B;stroke-width:0.5;" width="54" x="5" y="25.1328"/><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="40" x="12" y="42.3433">Jenkins</text><rect fill="#2E2E2E" height="26.8047" rx="2.5" ry="2.5" style="stroke:#1B1B1B;stroke-width:0.5;" width="54" x="5" y="767.5781"/><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="40" x="12" y="784.7886">Jenkins</text><rect fill="#2E2E2E" height="26.8047" rx="2.5" ry="2.5" style="stroke:#1B1B1B;stroke-width:0.5;" width="35" x="121" y="767.5781"/><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="21" x="128" y="784.7886">Pod</text><rect fill="#2E2E2E" height="26.8047" rx="2.5" ry="2.5" style="stroke:#1B1B1B;stroke-width:0.5;" width="79" x="166" y="25.1328"/><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="65" x="173" y="42.3433">Kubernetes</text><rect fill="#2E2E2E" height="26.8047" rx="2.5" ry="2.5" style="stroke:#1B1B1B;stroke-width:0.5;" width="79" x="166" y="767.5781"/><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="65" x="173" y="784.7886">Kubernetes</text><rect fill="#2E2E2E" height="26.8047" rx="2.5" ry="2.5" style="stroke:#1B1B1B;stroke-width:0.5;" width="74" x="255" y="25.1328"/><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="60" x="262" y="42.3433">Autoscaler</text><rect fill="#2E2E2E" height="26.8047" rx="2.5" ry="2.5" style="stroke:#1B1B1B;stroke-width:0.5;" width="74" x="255" y="767.5781"/><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="60" x="262" y="784.7886">Autoscaler</text><rect fill="#2E2E2E" height="26.8047" rx="2.5" ry="2.5" style="stroke:#1B1B1B;stroke-width:0.5;" width="78" x="339.5" y="25.1328"/><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="64" x="346.5" y="42.3433">Provisioner</text><rect fill="#2E2E2E" height="26.8047" rx="2.5" ry="2.5" style="stroke:#1B1B1B;stroke-width:0.5;" width="78" x="339.5" y="767.5781"/><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="64" x="346.5" y="784.7886">Provisioner</text><rect fill="#2E2E2E" height="26.8047" rx="2.5" ry="2.5" style="stroke:#1B1B1B;stroke-width:0.5;" width="38" x="524.5" y="25.1328"/><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="24" x="531.5" y="42.3433">AWS</text><rect fill="#2E2E2E" height="26.8047" rx="2.5" ry="2.5" style="stroke:#1B1B1B;stroke-width:0.5;" width="38" x="524.5" y="767.5781"/><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="24" x="531.5" y="784.7886">AWS</text><rect fill="#2E2E2E" height="26.8047" rx="2.5" ry="2.5" style="stroke:#1B1B1B;stroke-width:0.5;" width="88" x="595.5" y="767.5781"/><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="74" x="602.5" y="784.7886">EC2 Instance</text><polygon fill="#FFFFFF" points="193.5,77.7422,203.5,81.7422,193.5,85.7422,197.5,81.7422" style="stroke:#FFFFFF;stroke-width:1.0;"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="32" x2="199.5" y1="81.7422" y2="81.7422"/><text fill="#BBBBBB" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="63" x="39" y="77.1479">Create Pod</text><polygon fill="#FFFFFF" points="280,104.5469,290,108.5469,280,112.5469,284,108.5469" style="stroke:#FFFFFF;stroke-width:1.0;"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="205.5" x2="286" y1="108.5469" y2="108.5469"/><text fill="#BBBBBB" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="50" x="212.5" y="103.9526">Scale Up</text><polygon fill="#FFFFFF" points="531.5,131.3516,541.5,135.3516,531.5,139.3516,535.5,135.3516" style="stroke:#FFFFFF;stroke-width:1.0;"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="292" x2="537.5" y1="135.3516" y2="135.3516"/><text fill="#BBBBBB" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="92" x="299" y="130.7573">Launch Instance</text><polygon fill="#FFFFFF" points="583.5,158.1563,593.5,162.1563,583.5,166.1563,587.5,162.1563" style="stroke:#FFFFFF;stroke-width:1.0;"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="543.5" x2="589.5" y1="162.1563" y2="162.1563"/><text fill="#BBBBBB" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="28" x="550.5" y="157.562">Start</text><rect fill="#2E2E2E" height="26.8047" rx="2.5" ry="2.5" style="stroke:#1B1B1B;stroke-width:0.5;" width="88" x="595.5" y="143.3516"/><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="74" x="602.5" y="160.562">EC2 Instance</text><polygon fill="#FFFFFF" points="389.5,195.9609,379.5,199.9609,389.5,203.9609,385.5,199.9609" style="stroke:#FFFFFF;stroke-width:1.0;"/><line style="stroke:#FFFFFF;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="383.5" x2="542.5" y1="199.9609" y2="199.9609"/><text fill="#BBBBBB" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="94" x="395.5" y="195.3667">Instance Started</text><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="378.5" x2="420.5" y1="226.7656" y2="226.7656"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="420.5" x2="420.5" y1="226.7656" y2="239.7656"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="379.5" x2="420.5" y1="239.7656" y2="239.7656"/><polygon fill="#FFFFFF" points="389.5,235.7656,379.5,239.7656,389.5,243.7656,385.5,239.7656" style="stroke:#FFFFFF;stroke-width:1.0;"/><text fill="#BBBBBB" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="151" x="385.5" y="222.1714">Generate Bootstrap Token</text><polygon fill="#FFFFFF" points="216.5,262.5703,206.5,266.5703,216.5,270.5703,212.5,266.5703" style="stroke:#FFFFFF;stroke-width:1.0;"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="210.5" x2="377.5" y1="266.5703" y2="266.5703"/><text fill="#BBBBBB" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="129" x="222.5" y="261.9761">Store Bootstrap Token</text><polygon fill="#FFFFFF" points="216.5,289.375,206.5,293.375,216.5,297.375,212.5,293.375" style="stroke:#FFFFFF;stroke-width:1.0;"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="210.5" x2="377.5" y1="293.375" y2="293.375"/><text fill="#BBBBBB" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="147" x="222.5" y="288.7808">Allocate WireGuard Config</text><polygon fill="#FFFFFF" points="389.5,316.1797,379.5,320.1797,389.5,324.1797,385.5,320.1797" style="stroke:#FFFFFF;stroke-width:1.0;"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="383.5" x2="638.5" y1="320.1797" y2="320.1797"/><text fill="#BBBBBB" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="149" x="395.5" y="315.5854">Request WireGuard Config</text><polygon fill="#FFFFFF" points="216.5,342.9844,206.5,346.9844,216.5,350.9844,212.5,346.9844" style="stroke:#FFFFFF;stroke-width:1.0;"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="210.5" x2="377.5" y1="346.9844" y2="346.9844"/><text fill="#BBBBBB" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="149" x="222.5" y="342.3901">Request WireGuard Config</text><polygon fill="#FFFFFF" points="366.5,369.7891,376.5,373.7891,366.5,377.7891,370.5,373.7891" style="stroke:#FFFFFF;stroke-width:1.0;"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="205.5" x2="372.5" y1="373.7891" y2="373.7891"/><text fill="#BBBBBB" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="140" x="212.5" y="369.1948">Return WireGuard Config</text><polygon fill="#FFFFFF" points="627.5,396.5938,637.5,400.5938,627.5,404.5938,631.5,400.5938" style="stroke:#FFFFFF;stroke-width:1.0;"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="378.5" x2="633.5" y1="400.5938" y2="400.5938"/><text fill="#BBBBBB" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="140" x="385.5" y="395.9995">Return WireGuard Config</text><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="639.5" x2="681.5" y1="427.3984" y2="427.3984"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="681.5" x2="681.5" y1="427.3984" y2="440.3984"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="640.5" x2="681.5" y1="440.3984" y2="440.3984"/><polygon fill="#FFFFFF" points="650.5,436.3984,640.5,440.3984,650.5,444.3984,646.5,440.3984" style="stroke:#FFFFFF;stroke-width:1.0;"/><text fill="#BBBBBB" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="118" x="646.5" y="422.8042">Configure WireGuard</text><polygon fill="#FFFFFF" points="389.5,463.2031,379.5,467.2031,389.5,471.2031,385.5,467.2031" style="stroke:#FFFFFF;stroke-width:1.0;"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="383.5" x2="638.5" y1="467.2031" y2="467.2031"/><text fill="#BBBBBB" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="131" x="395.5" y="462.6089">Request Cluster Config</text><polygon fill="#FFFFFF" points="627.5,490.0078,637.5,494.0078,627.5,498.0078,631.5,494.0078" style="stroke:#FFFFFF;stroke-width:1.0;"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="378.5" x2="633.5" y1="494.0078" y2="494.0078"/><text fill="#BBBBBB" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="122" x="385.5" y="489.4136">Return Cluster Config</text><path d="M156,509.0078 L332,509.0078 L332,516.1406 L322,526.1406 L156,526.1406 L156,509.0078 " fill="#EEEEEE" style="stroke:#000000;stroke-width:1.5;"/><rect fill="none" height="177.9609" style="stroke:#000000;stroke-width:1.5;" width="537.5" x="156" y="509.0078"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="131" x="171" y="522.0747">WireGuard Tunnel</text><polygon fill="#FFFFFF" points="216.5,540.9453,206.5,544.9453,216.5,548.9453,212.5,544.9453" style="stroke:#FFFFFF;stroke-width:1.0;"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="210.5" x2="638.5" y1="544.9453" y2="544.9453"/><text fill="#BBBBBB" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="108" x="222.5" y="540.3511">Request Certificate</text><polygon fill="#FFFFFF" points="627.5,567.75,637.5,571.75,627.5,575.75,631.5,571.75" style="stroke:#FFFFFF;stroke-width:1.0;"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="205.5" x2="633.5" y1="571.75" y2="571.75"/><text fill="#BBBBBB" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="99" x="212.5" y="567.1558">Return Certificate</text><polygon fill="#FFFFFF" points="216.5,594.5547,206.5,598.5547,216.5,602.5547,212.5,598.5547" style="stroke:#FFFFFF;stroke-width:1.0;"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="210.5" x2="638.5" y1="598.5547" y2="598.5547"/><text fill="#BBBBBB" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="65" x="222.5" y="593.9604">Join Cluster</text><polygon fill="#FFFFFF" points="627.5,621.3594,637.5,625.3594,627.5,629.3594,631.5,625.3594" style="stroke:#FFFFFF;stroke-width:1.0;"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="205.5" x2="633.5" y1="625.3594" y2="625.3594"/><text fill="#BBBBBB" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="97" x="212.5" y="620.7651">Acknowledge Join</text><polygon fill="#FFFFFF" points="627.5,648.1641,637.5,652.1641,627.5,656.1641,631.5,652.1641" style="stroke:#FFFFFF;stroke-width:1.0;"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="205.5" x2="633.5" y1="652.1641" y2="652.1641"/><text fill="#BBBBBB" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="77" x="212.5" y="647.5698">Schedule Pod</text><polygon fill="#FFFFFF" points="216.5,674.9688,206.5,678.9688,216.5,682.9688,212.5,678.9688" style="stroke:#FFFFFF;stroke-width:1.0;"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="210.5" x2="638.5" y1="678.9688" y2="678.9688"/><text fill="#BBBBBB" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="67" x="222.5" y="674.3745">Pod Started</text><polygon fill="#FFFFFF" points="43,708.7734,33,712.7734,43,716.7734,39,712.7734" style="stroke:#FFFFFF;stroke-width:1.0;"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="37" x2="204.5" y1="712.7734" y2="712.7734"/><text fill="#BBBBBB" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="67" x="49" y="708.1792">Pod Started</text><polygon fill="#FFFFFF" points="109,735.5781,119,739.5781,109,743.5781,113,739.5781" style="stroke:#FFFFFF;stroke-width:1.0;"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="32" x2="115" y1="739.5781" y2="739.5781"/><text fill="#BBBBBB" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="65" x="39" y="734.9839">Execute job</text><rect fill="#2E2E2E" height="26.8047" rx="2.5" ry="2.5" style="stroke:#1B1B1B;stroke-width:0.5;" width="35" x="121" y="720.7734"/><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="21" x="128" y="737.9839">Pod</text><!--MD5=[d82aeb9ab6df8178811799e55b4a34e0]
@startuml
!theme reddress-darkblue
box Internal Network
participant Jenkins
participant Pod
participant Kubernetes
participant Autoscaler
participant Provisioner
Jenkins -> Kubernetes : Create Pod
Kubernetes -> Autoscaler : Scale Up
end box
Autoscaler -> AWS : Launch Instance
create "EC2 Instance"
AWS -> "EC2 Instance" : Start
AWS - -> Provisioner : Instance Started
Provisioner -> Provisioner : Generate Bootstrap Token
Provisioner -> Kubernetes : Store Bootstrap Token
Provisioner -> Kubernetes : Allocate WireGuard Config
"EC2 Instance" -> Provisioner : Request WireGuard Config
Provisioner -> Kubernetes : Request WireGuard Config
Kubernetes -> Provisioner : Return WireGuard Config
Provisioner -> "EC2 Instance" : Return WireGuard Config
"EC2 Instance" -> "EC2 Instance" : Configure WireGuard
"EC2 Instance" -> Provisioner : Request Cluster Config
Provisioner -> "EC2 Instance" : Return Cluster Config
group WireGuard Tunnel
"EC2 Instance" -> Kubernetes : Request Certificate
Kubernetes -> "EC2 Instance" : Return Certificate
"EC2 Instance" -> Kubernetes : Join Cluster
Kubernetes -> "EC2 Instance" : Acknowledge Join
Kubernetes -> "EC2 Instance" : Schedule Pod
"EC2 Instance" -> Kubernetes : Pod Started
end
Kubernetes -> Jenkins : Pod Started
create Pod
Jenkins -> Pod : Execute job
@enduml
@startuml
skinparam backgroundColor 777
skinparam stereotypeCBackgroundColor 1a66c2
skinparam backgroundColor 777
skinparam circledCharacter {
radius 8
fontSize 11
fontName Verdana
}
skinparam class {
backgroundColor 2e2e2e
borderColor 1b1b1b
fontColor fff
fontName Verdana
fontSize 11
stereotypeFontColor aaa
stereotypeFontSize 11
arrowColor fff
arrowFontName Verdana
arrowFontColor bbb
arrowFontSize 11
attributeFontColor aaa
attributeFontSize 11
attributeIconSize 11
}
skinparam actor {
backgroundColor 1a66c2
borderColor 002642
fontColor fff
fontName Verdana
fontSize 11
stereotypeFontColor aaa
stereotypeFontSize 11
}
skinparam participant {
backgroundColor 2e2e2e
borderColor 1b1b1b
fontColor fff
fontName Verdana
fontSize 11
stereotypeFontColor aaa
stereotypeFontSize 11
}
skinparam collections {
backgroundColor 2e2e2e
borderColor 1b1b1b
fontColor fff
fontName Verdana
fontSize 11
stereotypeFontColor aaa
stereotypeFontSize 11
}
skinparam SequenceBox{
backgroundColor 575757
borderColor 767676
fontColor fff
fontName Verdana
fontSize 11
stereotypeFontColor aaa
stereotypeFontSize 11
}
skinparam interface {
backgroundColor 1a66c2
borderColor 002642
fontColor fff
fontName Verdana
fontSize 11
stereotypeFontColor aaa
stereotypeFontSize 11
}
skinparam component {
backgroundColor 2e2e2e
borderColor 1b1b1b
fontColor fff
fontName Verdana
fontSize 11
stereotypeFontColor aaa
stereotypeFontSize 11
}
skinparam node {
backgroundColor 2e2e2e
borderColor 1b1b1b
fontColor fff
fontName Verdana
fontSize 11
stereotypeFontColor aaa
stereotypeFontSize 11
}
skinparam database {
backgroundColor 2e2e2e
borderColor 1b1b1b
fontColor fff
fontName Verdana
fontSize 11
stereotypeFontColor aaa
stereotypeFontSize 11
}
skinparam queue {
backgroundColor 2e2e2e
borderColor 1b1b1b
fontColor fff
fontName Verdana
fontSize 11
stereotypeFontColor aaa
stereotypeFontSize 11
}
skinparam usecase {
backgroundColor 2e2e2e
borderColor 1b1b1b
fontColor fff
fontName Verdana
fontSize 11
stereotypeFontColor aaa
stereotypeFontSize 11
arrowColor fff
arrowFontName Verdana
arrowFontColor bbb
arrowFontSize 11
}
skinparam activity {
backgroundColor 2e2e2e
borderColor 1b1b1b
fontColor fff
fontName Verdana
fontSize 11
stereotypeFontColor aaa
stereotypeFontSize 11
arrowColor fff
arrowFontName Verdana
arrowFontColor bbb
arrowFontSize 11
}
skinparam sequence {
fontColor fff
fontName Verdana
fontSize 11
stereotypeFontColor aaa
stereotypeFontSize 11
arrowColor fff
arrowFontName Verdana
arrowFontColor bbb
arrowFontSize 11
lifeLineBorderColor 1a66c2
lifeLineBackgroundColor 575757
}
skinparam boundary {
backgroundColor 1a66c2
borderColor 002642
fontColor fff
fontName Verdana
fontSize 11
stereotypeFontColor aaa
stereotypeFontSize 11
}
skinparam control {
backgroundColor 1a66c2
borderColor 002642
fontColor fff
fontName Verdana
fontSize 11
stereotypeFontColor aaa
stereotypeFontSize 11
}
skinparam entity {
backgroundColor 1a66c2
borderColor 002642
fontColor fff
fontName Verdana
fontSize 11
stereotypeFontColor aaa
stereotypeFontSize 11
}
skinparam state {
backgroundColor 2e2e2e
borderColor 1b1b1b
fontColor fff
fontName Verdana
fontSize 11
stereotypeFontColor aaa
stereotypeFontSize 11
arrowColor fff
arrowFontName Verdana
arrowFontColor bbb
arrowFontSize 11
startColor 1a66c2
endColor 002642
}
skinparam object {
backgroundColor 2e2e2e
borderColor 1b1b1b
fontColor fff
fontName Verdana
fontSize 11
stereotypeFontColor aaa
stereotypeFontSize 11
arrowColor fff
arrowFontName Verdana
arrowFontColor bbb
arrowFontSize 11
}
skinparam note {
backgroundColor 1a66c2
borderColor 002642
fontColor fff
fontName Verdana
fontSize 11
stereotypeFontColor aaa
stereotypeFontSize 11
}
skinparam cloud {
backgroundColor 2e2e2e
borderColor 1b1b1b
fontColor fff
fontName Verdana
fontSize 11
stereotypeFontColor aaa
stereotypeFontSize 11
arrowColor fff
arrowFontName Verdana
arrowFontColor bbb
arrowFontSize 11
}
skinparam rectangle {
backgroundColor 2e2e2e
borderColor 1b1b1b
fontColor fff
fontName Verdana
fontSize 11
stereotypeFontColor aaa
stereotypeFontSize 11
}
skinparam storage {
backgroundColor 2e2e2e
borderColor 1b1b1b
fontColor fff
fontName Verdana
fontSize 11
stereotypeFontColor aaa
stereotypeFontSize 11
}
box Internal Network
participant Jenkins
participant Pod
participant Kubernetes
participant Autoscaler
participant Provisioner
Jenkins -> Kubernetes : Create Pod
Kubernetes -> Autoscaler : Scale Up
end box
Autoscaler -> AWS : Launch Instance
create "EC2 Instance"
AWS -> "EC2 Instance" : Start
AWS - -> Provisioner : Instance Started
Provisioner -> Provisioner : Generate Bootstrap Token
Provisioner -> Kubernetes : Store Bootstrap Token
Provisioner -> Kubernetes : Allocate WireGuard Config
"EC2 Instance" -> Provisioner : Request WireGuard Config
Provisioner -> Kubernetes : Request WireGuard Config
Kubernetes -> Provisioner : Return WireGuard Config
Provisioner -> "EC2 Instance" : Return WireGuard Config
"EC2 Instance" -> "EC2 Instance" : Configure WireGuard
"EC2 Instance" -> Provisioner : Request Cluster Config
Provisioner -> "EC2 Instance" : Return Cluster Config
group WireGuard Tunnel
"EC2 Instance" -> Kubernetes : Request Certificate
Kubernetes -> "EC2 Instance" : Return Certificate
"EC2 Instance" -> Kubernetes : Join Cluster
Kubernetes -> "EC2 Instance" : Acknowledge Join
Kubernetes -> "EC2 Instance" : Schedule Pod
"EC2 Instance" -> Kubernetes : Pod Started
end
Kubernetes -> Jenkins : Pod Started
create Pod
Jenkins -> Pod : Execute job
@enduml
PlantUML version 1.2022.12(Sun Oct 23 18:12:26 UTC 2022)
(GPL source distribution)
Java Runtime: OpenJDK Runtime Environment
JVM: OpenJDK 64-Bit Server VM
Default Encoding: UTF-8
Language: en
Country: null
--></g></svg>