initial copy from internal repo

This commit is contained in:
Jeffrey Sica 2017-07-21 14:06:22 -04:00
parent efe9eb1f83
commit c09b9f62d7
7 changed files with 448 additions and 0 deletions

View File

@ -0,0 +1,37 @@
version: '2'
services:
keepalived-master:
restart: always
image: arcts/keepalived
network_mode: host
cap_add:
- NET_ADMIN
environment:
KEEPALIVED_AUTOCONF: true
KEEPALIVED_STATE: MASTER
KEEPALIVED_INTERFACE: eth0
KEEPALIVED_VIRTUAL_ROUTER_ID: 2
KEEPALIVED_UNICAST_SRC_IP: ${master_ip}
KEEPALIVED_UNICAST_PEER_0: ${backup_ip}
KEEPALIVED_TRACK_INTERFACE_1: eth0
KEEPALIVED_VIRTUAL_IPADDRESS_1: "\"${virtual_ip}\""
labels:
io.rancher.scheduler.affinity:host_label: ${host_label}=${master_host_label}
keepalived-backup:
restart: always
image: arcts/keepalived
network_mode: host
cap_add:
- NET_ADMIN
environment:
KEEPALIVED_AUTOCONF: true
KEEPALIVED_STATE: BACKUP
KEEPALIVED_INTERFACE: eth0
KEEPALIVED_VIRTUAL_ROUTER_ID: 2
KEEPALIVED_UNICAST_SRC_IP: ${backup_ip}
KEEPALIVED_UNICAST_PEER_0: ${master_ip}
KEEPALIVED_TRACK_INTERFACE_1: eth0
KEEPALIVED_VIRTUAL_IPADDRESS_1: "\"${virtual_ip}\""
labels:
io.rancher.scheduler.affinity:host_label: ${host_label}=${backup_host_label}

View File

@ -0,0 +1,40 @@
.catalog:
name: "keepalived"
version: v1.0.0
description: "Autostart Keepalived (ONLY IF YOU KNOW WHAT YOU'RE DOING)"
minimum_rancher_version: v0.46.0
uuid: keepalived:v1.0.0
questions:
- variable: host_label
label: "Keepalived Host Label"
description: "Host Label used to schedule keepalived master and backup instances"
type: "string"
default: "edge"
required: true
- variable: master_host_label
label: "Master Host Label"
description: "The value of the Keepalived Host Label to signifify the master instance"
type: "string"
default: "MASTER"
required: true
- variable: backup_host_label
label: "Backup Host Label"
description: "The value of the Keepalived Host Label to signifify the backup instance"
type: "string"
default: "BACKUP"
required: true
- variable: master_ip
description: "Host IP of master edge node"
label: "Master IP"
type: "string"
required: true
- variable: backup_ip
description: "Host IP of backup edge node"
label: "Backup IP"
type: "string"
required: true
- variable: virtual_ip
label: "Virtual IP"
description: "Virtual IP to be created."
type: "string"
required: true

View File

@ -0,0 +1,37 @@
version: '2'
services:
keepalived-master:
restart: always
image: arcts/keepalived
network_mode: host
cap_add:
- NET_ADMIN
environment:
KEEPALIVED_AUTOCONF: true
KEEPALIVED_STATE: MASTER
KEEPALIVED_INTERFACE: eth0
KEEPALIVED_VIRTUAL_ROUTER_ID: 2
KEEPALIVED_UNICAST_SRC_IP: ${master_ip}
KEEPALIVED_UNICAST_PEER_0: ${backup_ip}
KEEPALIVED_TRACK_INTERFACE_1: eth0
KEEPALIVED_VIRTUAL_IPADDRESS_1: "\"${virtual_ip}\""
labels:
io.rancher.scheduler.affinity:host_label: edge=master
keepalived-backup:
restart: always
image: arcts/keepalived
network_mode: host
cap_add:
- NET_ADMIN
environment:
KEEPALIVED_AUTOCONF: true
KEEPALIVED_STATE: BACKUP
KEEPALIVED_INTERFACE: eth0
KEEPALIVED_VIRTUAL_ROUTER_ID: 2
KEEPALIVED_UNICAST_SRC_IP: ${backup_ip}
KEEPALIVED_UNICAST_PEER_0: ${master_ip}
KEEPALIVED_TRACK_INTERFACE_1: eth0
KEEPALIVED_VIRTUAL_IPADDRESS_1: "\"${virtual_ip}\""
labels:
io.rancher.scheduler.affinity:host_label: edge=backup

View File

@ -0,0 +1,22 @@
.catalog:
name: "keepalived"
version: v0.2.0
description: "Autostart Keepalived (ONLY IF YOU KNOW WHAT YOU'RE DOING)"
minimum_rancher_version: v0.46.0
uuid: keepalived:v0.2.0
questions:
- variable: virtual_ip
label: "Virtual IP"
description: "Virtual IP in ip command format"
type: "string"
required: true
- variable: master_ip
description: "IP of master edge node"
label: "Master IP"
type: "string"
required: true
- variable: backup_ip
description: "IP of backup edge node"
label: "Backup IP"
type: "string"
required: true

View File

@ -0,0 +1,12 @@
## Keepalived
Manages VRRP failover
### Usage
This service is intended to be deployed to edge nodes with a MASTER and BACKUP deployed respectively.
Additional IPs should be managed via environment variables once deployed with entries following the below pattern:
`KEEPALIVED_VIRTUAL_IPADDRESS_[0-9]{1,3}`
Format should mimic the ip command
`10.255.33.100/24 dev eth0`

View File

@ -0,0 +1,293 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="96"
height="96"
id="svg6517"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="icon.svg"
viewBox="0 0 96 96">
<defs
id="defs6519">
<linearGradient
id="Background">
<stop
id="stop4178"
offset="0"
style="stop-color:#b8b8b8;stop-opacity:1" />
<stop
id="stop4180"
offset="1"
style="stop-color:#c9c9c9;stop-opacity:1" />
</linearGradient>
<filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Inner Shadow"
id="filter1121">
<feFlood
flood-opacity="0.59999999999999998"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood1123" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="out"
result="composite1"
id="feComposite1125" />
<feGaussianBlur
in="composite1"
stdDeviation="1"
result="blur"
id="feGaussianBlur1127" />
<feOffset
dx="0"
dy="2"
result="offset"
id="feOffset1129" />
<feComposite
in="offset"
in2="SourceGraphic"
operator="atop"
result="composite2"
id="feComposite1131" />
</filter>
<filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Drop Shadow"
id="filter950">
<feFlood
flood-opacity="0.25"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood952" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="in"
result="composite1"
id="feComposite954" />
<feGaussianBlur
in="composite1"
stdDeviation="1"
result="blur"
id="feGaussianBlur956" />
<feOffset
dx="0"
dy="1"
result="offset"
id="feOffset958" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
result="composite2"
id="feComposite960" />
<feBlend
blend="normal"
id="feBlend3895"
in2="composite2" />
</filter>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath873">
<g
transform="matrix(0,-0.66666667,0.66604479,0,-258.25992,677.00001)"
id="g875"
inkscape:label="Layer 1"
style="fill:#ff00ff;fill-opacity:1;stroke:none;display:inline">
<path
style="fill:#ff00ff;fill-opacity:1;stroke:none;display:inline"
d="m 46.702703,898.22775 50.594594,0 C 138.16216,898.22775 144,904.06497 144,944.92583 l 0,50.73846 c 0,40.86071 -5.83784,46.69791 -46.702703,46.69791 l -50.594594,0 C 5.8378378,1042.3622 0,1036.525 0,995.66429 L 0,944.92583 C 0,904.06497 5.8378378,898.22775 46.702703,898.22775 Z"
id="path877"
inkscape:connector-curvature="0"
sodipodi:nodetypes="sssssssss" />
</g>
</clipPath>
<filter
inkscape:collect="always"
id="filter891"
inkscape:label="Badge Shadow">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="0.71999962"
id="feGaussianBlur893" />
</filter>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="8.1490724"
inkscape:cx="49.021381"
inkscape:cy="46.975739"
inkscape:document-units="px"
inkscape:current-layer="layer3"
showgrid="true"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1920"
inkscape:window-height="1056"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
showborder="true"
showguides="true"
inkscape:guide-bbox="true"
inkscape:showpageshadow="false">
<inkscape:grid
type="xygrid"
id="grid821" />
<sodipodi:guide
orientation="1,0"
position="16,48"
id="guide823" />
<sodipodi:guide
orientation="0,1"
position="64,80"
id="guide825" />
<sodipodi:guide
orientation="1,0"
position="80,40"
id="guide827" />
<sodipodi:guide
orientation="0,1"
position="64,16"
id="guide829" />
</sodipodi:namedview>
<metadata
id="metadata6522">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="BACKGROUND"
inkscape:groupmode="layer"
id="layer1"
transform="translate(268,-635.29076)"
style="display:inline">
<path
style="fill:#333333;fill-opacity:0.93333334000000001;stroke:none;display:inline;filter:url(#filter1121);opacity:0.7"
d="m -268,700.15563 0,-33.72973 c 0,-27.24324 3.88785,-31.13513 31.10302,-31.13513 l 33.79408,0 c 27.21507,0 31.1029,3.89189 31.1029,31.13513 l 0,33.72973 c 0,27.24325 -3.88783,31.13514 -31.1029,31.13514 l -33.79408,0 C -264.11215,731.29077 -268,727.39888 -268,700.15563 Z"
id="path6455"
inkscape:connector-curvature="0"
sodipodi:nodetypes="sssssssss" />
</g>
<g
inkscape:groupmode="layer"
id="layer3"
inkscape:label="PLACEHOLDER LETTER"
style="display:inline">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;filter:url(#filter950)"
x="17.458124"
y="69.1772"
id="text3891"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3893"
x="17.458124"
y="69.1772"
style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:56px;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu Medium';fill:#ffffff;fill-opacity:1">ka</tspan></text>
<rect
style="opacity:0.7;fill:none;stroke:none"
id="rect3021"
width="64"
height="64"
x="16"
y="15.449201" />
</g>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="BADGE"
style="display:none"
sodipodi:insensitive="true">
<g
style="display:inline"
transform="translate(-340.00001,-581)"
id="g4394"
clip-path="none">
<g
id="g855">
<g
inkscape:groupmode="maskhelper"
id="g870"
clip-path="url(#clipPath873)"
style="opacity:0.6;filter:url(#filter891)">
<path
transform="matrix(1.4999992,0,0,1.4999992,-29.999795,-237.54282)"
d="m 264,552.36218 a 12,12 0 0 1 -12,12 12,12 0 0 1 -12,-12 12,12 0 0 1 12,-12 12,12 0 0 1 12,12 z"
sodipodi:ry="12"
sodipodi:rx="12"
sodipodi:cy="552.36218"
sodipodi:cx="252"
id="path844"
style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:type="arc" />
</g>
<g
id="g862">
<path
sodipodi:type="arc"
style="color:#000000;fill:#f5f5f5;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="path4398"
sodipodi:cx="252"
sodipodi:cy="552.36218"
sodipodi:rx="12"
sodipodi:ry="12"
d="m 264,552.36218 a 12,12 0 0 1 -12,12 12,12 0 0 1 -12,-12 12,12 0 0 1 12,-12 12,12 0 0 1 12,12 z"
transform="matrix(1.4999992,0,0,1.4999992,-29.999795,-238.54282)" />
<path
transform="matrix(1.25,0,0,1.25,33,-100.45273)"
d="m 264,552.36218 a 12,12 0 0 1 -12,12 12,12 0 0 1 -12,-12 12,12 0 0 1 12,-12 12,12 0 0 1 12,12 z"
sodipodi:ry="12"
sodipodi:rx="12"
sodipodi:cy="552.36218"
sodipodi:cx="252"
id="path4400"
style="color:#000000;fill:#dd4814;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:type="arc" />
<path
sodipodi:type="star"
style="color:#000000;fill:#f5f5f5;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="path4459"
sodipodi:sides="5"
sodipodi:cx="666.19574"
sodipodi:cy="589.50385"
sodipodi:r1="7.2431178"
sodipodi:r2="4.3458705"
sodipodi:arg1="1.0471976"
sodipodi:arg2="1.6755161"
inkscape:flatsided="false"
inkscape:rounded="0.1"
inkscape:randomized="0"
d="m 669.8173,595.77657 c -0.39132,0.22593 -3.62645,-1.90343 -4.07583,-1.95066 -0.44938,-0.0472 -4.05653,1.36297 -4.39232,1.06062 -0.3358,-0.30235 0.68963,-4.03715 0.59569,-4.47913 -0.0939,-0.44198 -2.5498,-3.43681 -2.36602,-3.8496 0.18379,-0.41279 4.05267,-0.59166 4.44398,-0.81759 0.39132,-0.22593 2.48067,-3.48704 2.93005,-3.4398 0.44938,0.0472 1.81505,3.67147 2.15084,3.97382 0.3358,0.30236 4.08294,1.2817 4.17689,1.72369 0.0939,0.44198 -2.9309,2.86076 -3.11469,3.27355 -0.18379,0.41279 0.0427,4.27917 -0.34859,4.5051 z"
transform="matrix(1.511423,-0.16366377,0.16366377,1.511423,-755.37346,-191.93651)" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -0,0 +1,7 @@
name: keepalived
description: |
KeepaliveD, provides VRRP failover across multiple nodes
version: v1.0.0
category: Networking
labels:
io.rancher.orchestration.supported: 'cattle,mesos,swarm,kubernetes'