Даданне ноды ў Skydive тапалогію ўручную праз Skydive client

Skydive – гэта аналізатар тапалогіі сеткі і пратаколаў з адчыненым зыходным кодам у рэальным часе. Ён накіраваны на тое, каб даць вычарпальны спосаб зразумець, што адбываецца ў сеткавай інфраструктуры.

Каб зацікавіць вас, прывяду пару скрыншотаў пра Skydive. Крыху ніжэй будзе пост па ўвядзенні ў Skydive.

Даданне ноды ў Skydive тапалогію ўручную праз Skydive client

Даданне ноды ў Skydive тапалогію ўручную праз Skydive client

Пост «Увядзенне ў skydive.network» на Хабры.

Skydive адлюстроўвае тапалогію сеткі, атрымліваючы сеткавыя падзеі ад агентаў Skydive. Вы калі-небудзь задаваліся пытаннем, як дадаць або адлюстраваць на дыяграме тапалогіі сеткавыя кампаненты, якія знаходзяцца па-за агенцкай сеткай Skydive ці не сеткавыя аб'екты, такія як TOR, сховішча дадзеных і т. д. Больш не варта турбавацца пра гэта, дзякуючы Node rule API .

Пачынаючы з версіі 0.20, Skydive дае Node rule API, якое можа выкарыстоўвацца для стварэння новых вузлоў і рэбраў і для абнаўлення метададзеных існуючых вузлоў. Node rule API падзелены на два API-інтэрфейсу: API-інтэрфейс правілы вузла і API-інтэрфейс правілы рабра. API правілы вузла выкарыстоўваецца для стварэння новага вузла і абнаўлення метададзеных існуючага вузла. API правілы рабра выкарыстоўваецца для стварэння мяжы паміж двума вузламі, г.зн. звязвае два вузлы.

У гэтым блогу мы ўбачым два варыянты выкарыстання, адзін з якіх з'яўляецца сеткавым кампанентам, які не з'яўляецца часткай сеткі skydive. Другі варыянт - нясеткавы кампанент. Перад гэтым мы разгледзім некаторыя асноўныя спосабы выкарыстання API правілаў тапалогіі.

Стварэнне вузла Skydive

Каб стварыць вузел, неабходна паказаць унікальнае імя вузла і дапушчальны тып вузла. Вы таксама можаце даць некаторыя дадатковыя параметры.

skydive client node-rule create --action="create" --node-name="node1" --node-type="fabric" --name="node rule1"
{
  "UUID": "ea21c30f-cfaa-4f2d-693d-95159acb71ed",
  "Name": "node rule1",
  "Description": "",
  "Metadata": {
    "Name": "node1",
    "Type": "fabric"
  },
  "Action": "create",
  "Query": ""
}

Абнаўленне Метададзеных Вузлоў Skydive

Каб абнавіць метададзеныя існуючага вузла, неабходна прадаставіць запыт на мове gremlin для выбару вузлоў, у якіх вы хочаце абнавіць метададзеныя. У адпаведнасці з вашым запытам вы можаце абнавіць метададзеныя аднаго або некалькіх вузлоў з дапамогай правіла аднаго вузла.

skydive client node-rule create --action="update" --name="update rule" --query="G.V().Has('Name', 'node1')" --metadata="key1=val1, key2=val2"
{
  "UUID": "3e6c0e15-a863-4583-6345-715053ac47ce",
  "Name": "update rule",
  "Description": "",
  "Metadata": {
    "key1": "val1",
    "key2": "val2"
  },
  "Action": "update",
  "Query": "G.V().Has('Name', 'node1')"
}

Стварэнне рабра Skydive

Для стварэння рабра неабходна ўказаць зыходны і канчатковы вузлы і тып сувязі рэбры, для стварэння даччынага вузла значэнне тыпу сувязі павінна быць ownership аналагічна для стварэння сувязі тыпу layer2 значэнне тыпу сувязі павінна быць layer2. Вы можаце стварыць больш за адну сувязі паміж двума вузламі, але тып сувязі павінен быць розным.

skydive client edge-rule create --name="edge" --src="G.v().has('TID', '2f6f9b99-82ef-5507-76b6-cbab28bda9cb')" --dst="G.V().Has('TID', 'd6ec6e2f-362e-51e5-4bb5-6ade37c2ca5c')" --relationtype="both"
{
  "UUID": "50fec124-c6d0-40c7-42a3-2ed8d5fbd410",
  "Name": "edge",
  "Description": "",
  "Src": "G.v().has('TID', '2f6f9b99-82ef-5507-76b6-cbab28bda9cb')",
  "Dst": "G.V().Has('TID', 'd6ec6e2f-362e-51e5-4bb5-6ade37c2ca5c')",
  "Metadata": {
    "RelationType": "both"
  }
}

Першы варыянт выкарыстання

У гэтым выпадку мы разгледзім, як паказаць нясеткавую прыладу ў тапалогіі skydive. Давайце разгледзім, што ў нас ёсць сховішча дадзеных, якое павінна быць адлюстравана ў тапалагічнай дыяграме skydive з некаторымі карыснымі метададзенымі.

Нам проста трэба стварыць правіла вузла, каб дадаць прыладу ў тапалогію. Мы можам дадаць метададзеныя прылады як частка каманды create ці пазней стварыць адну ці некалькі каманд update node rule.

Выканайце прыведзеную ніжэй каманду правіла вузла, каб дадаць запамінальную прыладу ў схему тапалогіі.

skydive client node-rule create --action="create" --node-name="sda" --node-type="persistentvolume" --metadata="DEVNAME=/dev/sda,DEVTYPE=disk,ID.MODEL=SD_MMC, ID.MODEL ID=0316, ID.PATH TAG=pci-0000_00_14_0-usb-0_3_1_0-scsi-0_0_0_0, ID.SERIAL SHORT=20120501030900000, ID.VENDOR=Generic-, ID.VENDOR ID=0bda, MAJOR=8, MINOR=0, SUBSYSTEM=block, USEC_INITIALIZED=104393719727"

Выканайце каманду ніжэй правілы рабра, каб звязаць створаны вузел з вузлом хаста.

skydive client edge-rule create --src="G.V().Has('Name', 'node1')" --dst="G.V().Has('Name', 'sda')" --relationtype="ownership"

Пасля прыведзеных вышэй каманд зараз вы можаце ўбачыць прыладу, бачнае на схеме тапалогіі skydive з зададзенымі метададзенымі, як паказана на малюнку ніжэй.

Даданне ноды ў Skydive тапалогію ўручную праз Skydive client

Другі варыянт выкарыстання

У гэтым выпадку мы ўбачым, як дадаць сеткавую прыладу, якое не з'яўляецца часткай сеткі skydive. Давайце разгледзім гэты прыклад. У нас ёсць два агента skydive, якія працуюць на двух розных хастах, для падлучэння гэтых двух хастоў нам патрэбен камутатар TOR. Нават калі мы можам дасягнуць гэтага, вызначыўшы вузлы структуры і спасылкі ў канфігурацыйным файле, давайце паглядзім, як мы можам зрабіць тое ж самае з дапамогай API правілаў тапалогіі.

Без камутатара TOR два агенты будуць выглядаць як два розных вузла без якіх-небудзь спасылак, як паказана на малюнку ніжэй.

Даданне ноды ў Skydive тапалогію ўручную праз Skydive client

Цяпер выканайце наступныя каманды Правілы вузла, каб стварыць камутатар TOR і парты.

skydive client node-rule create --node-name="TOR" --node-type="fabric" --action="create"
skydive client node-rule create --node-name="port1" --node-type="port" --action="create"
skydive client node-rule create --node-name="port2" --node-type="port" --action="create"

Як бачыце, камутатар TOR і парты створаны і дададзены ў тапалогію skydive, і зараз тапалогія будзе выглядаць так, як паказана на малюнку ніжэй.

Даданне ноды ў Skydive тапалогію ўручную праз Skydive client

Цяпер выканайце прыведзеныя ніжэй каманды Edge Rule для стварэння сувязі паміж камутатарам TOR, портам 1 і публічным інтэрфейсам хаста 1.

skydive client edge-rule create --src="G.V().Has('Name', 'TOR')" --dst="G.V().Has('Name', 'port1')" --relationtype="ownership"
skydive client edge-rule create --src="G.V().Has('Name', 'TOR')" --dst="G.V().Has('Name', 'port1')" --relationtype="layer2"
skydive client edge-rule create --src="G.V().Has('TID', '372c254d-bac9-50c2-4ca9-86dcc6ce8a57')" --dst="G.V().Has('Name', 'port1')" --relationtype="layer2"

Выканайце наступныя каманды, каб стварыць сувязь паміж камутатарам TOR, портам 2 і публічным інтэрфейсам хаста 2

skydive client edge-rule create --src="G.V().Has('Name', 'TOR')" --dst="G.V().Has('Name', 'port2')" --relationtype="layer2"
skydive client edge-rule create --src="G.V().Has('Name', 'TOR')" --dst="G.V().Has('Name', 'port2')" --relationtype="ownership"
skydive client edge-rule create --src="G.V().Has('TID', '50037073-7862-5234-4996-e58cc067c69c')" --dst="G.V().Has('Name', 'port2')" --relationtype="layer2"

Цяпер ствараюцца сувязі ownership і layer2 паміж камутатарам TOR і портам, а таксама сувязі layer2 паміж агентамі і партамі. Цяпер канчатковая тапалогія будзе выглядаць так, як паказана на малюнку ніжэй.

Даданне ноды ў Skydive тапалогію ўручную праз Skydive client

Цяпер два хаста / агента звязаны правільна, і вы можаце праверыць падключэнне або стварыць захоп найкарацейшага шляху паміж двума хастамі.

PS Спасылка на арыгінал посту

Шукаюцца людзі, якія маглі б пісаць пасты аб іншых магчымасцях Skydive.
Тэлеграм-чат па skydive.network.

Крыніца: habr.com

Дадаць каментар