Wednesday, 2024-01-17

jrossergood morning08:56
noonedeadpunko/ mornings09:11
jrosserwell include_role: / import_role: / roles: behave somewhat differently about vars defined in roles 09:51
jrosserif you use roles: [ myrole ] then myrole/defaults/main.yml vars are defined in the scope of the playbook for the tasks to use09:52
jrosserbut not the case for include / import09:52
noonedeadpunkso in case of import/include that's in hostvars?10:43
jrosseri get undefined10:46
jrosserthis is for a role that has nothing other than defaults/main.yml in it10:46
jrossera "set some vars" role10:46
noonedeadpunkyou're talking about latest ansible-core, right?10:48
noonedeadpunkor in general?10:48
jrosserwell specifically this https://review.opendev.org/c/openstack/openstack-ansible-plugins/+/90052710:49
jrosserand i thought i understood how this worked but clearly i don't10:50
jrossernoonedeadpunk: looks like reprovisioning an haproxy node is quite exciting with the changes we made to put the config in the service playbooks14:07
jrosserdepending on what keepalived is setup to do, it could prefer the node you just re-installed but has no backends yet14:07
noonedeadpunkouh14:08
noonedeadpunkSo basically we should be skipping keepalived 14:09
jrosseri guess this could also happen in the past14:09
jrosserbut the window of brokenness would be small as the haproxy playbook would put everything back pretty quickly14:09
noonedeadpunkbut not for aio or smth...14:09
jrosseronly relevant for H/A14:09
noonedeadpunkand not fresh deployment14:09
noonedeadpunkactually... that is good catch as we're going to do controlelr re-setup soonish14:10
jrosserprimarily OS upgrades or repairing a broken node14:10
jrosserwhich is exactly what andrewbonney is looking at now14:10
noonedeadpunkyeah, hosamali_ looking there now as well14:11
noonedeadpunkAnd actually I don't have any good ideas here except skip keepalived until all backends will be configured14:12
noonedeadpunkand then run smth like setup-openstack --tags haproxy-service-config14:13
andrewbonney^ about to fix a bug with that tag :)14:13
noonedeadpunkok :)14:13
noonedeadpunkI _think_ I used it already one or two times14:13
jrosseri thought there was a way to inhibit keepalived taking the vip14:14
jrosserbut we do not seem to have that config14:14
noonedeadpunkwell, weights14:14
noonedeadpunkbut if you take down keepalived with highest weight....14:15
jrossersure, but we could use vrrp_track_file14:15
noonedeadpunkor well, yes, totally14:15
jrosserthen there is something to manually set when you know that the backends are all missing14:15
noonedeadpunkbut how to define if we're missing backends14:15
jrosseri am not sure that this can be automated14:15
noonedeadpunkor know that they're 14:15
opendevreviewAndrew Bonney proposed openstack/openstack-ansible-haproxy_server master: Fix undefined fact when running haproxy-service-config tag  https://review.opendev.org/c/openstack/openstack-ansible-haproxy_server/+/90586714:16
noonedeadpunkjrosser: well, you can run haproxy-install.yml --skip-tags keepalived14:16
jrossertrue14:16
noonedeadpunkand then just re-run it at the very end14:16
noonedeadpunkwhich kinda metter of OS upgrade process (we need to update)14:17
jrosseror shut the public interface14:17
*** ianychoi[m] is now known as ianychoi14:17
jrosserwell thats not good enough actually becasue it will have the same breakage on the internal endpoint14:18
noonedeadpunkWell, I guess doc --skip-tags keepalived and then configure all backends and afterwards re-run haproxy-install --tags keeplaived sounds like easy/fair workaround14:19
jrosseryes that does sound simplest14:19
andrewbonneyLooks like that bug was actually fixed in https://github.com/openstack/openstack-ansible-haproxy_server/commit/a8a8feba7153622e37b2bde5def1053cc76d30e1 - we're running an older version14:21
noonedeadpunkaha, ok, that explains why that sounded common14:22
noonedeadpunkandrewbonney: do you know if `setup-openstack --tags haproxy-service-config --limit contorl01` will work?14:25
noonedeadpunk(mainly in terms of limit)14:25
andrewbonneyI ran it without limit first time around. At first glance that looks like it runs through too quickly to be working properly14:29
andrewbonneyYes, steps like this one get missed: TASK [Temporarily copy haproxy_service_configs value from keystone_all to haproxy_all] 14:31
andrewbonneychanged: [infra1_keystone_container-8ea445de] => (item=haproxy1)14:31
andrewbonneychanged: [infra1_keystone_container-8ea445de] => (item=haproxy2)14:31
noonedeadpunkyeah :(14:31
noonedeadpunkthanks for checking!14:32
noonedeadpunkspatel: hey! I recall you used ovn bgp agent, don't you?:)15:38
spatelYes in lab :( but it was chaos 15:39
noonedeadpunkmhm, I see15:39
spatelit was 2 year ago and now things are changed and patched so it should be smooth now 15:39
spatelAre you looking for L3 end to end solution?15:39
noonedeadpunkI'm just reading and trying to asses if it's worth it at all, given that time is veeeery limited15:39
noonedeadpunkyeah, pretty much15:40
noonedeadpunkBut I _think_ that Amphora in OCtavia won't like it15:40
noonedeadpunkat least with exposing tenant networks via bgp15:40
noonedeadpunkBut the more I read the less I understand kinda15:41
noonedeadpunkAnd it looks like there are soooo many places where things may go wrong15:42
jrosseryou want it for ipv6?15:43
spatelbgp is not fun 15:45
noonedeadpunkjrosser: I think at this point not only for ipv615:46
NeilHanloni'm waiting for ipv1215:46
noonedeadpunkor well. I personally not sure I want it per say, but network folks seems to 15:46
noonedeadpunkAnd I kinda understand why on paper15:47
NeilHanlonit makes things a lot easier from the integration point if you can do, e.g., bgp-unnumbered15:47
noonedeadpunkbut looking on complexity I'm not absolutely convinced that it's worth it15:47
spatelbuilding ovn-bgp is easy but inside kernal space packet bound a lot and it required some complex troubleshooting 15:47
NeilHanlonhttps://www.juniper.net/documentation/us/en/software/nce/nce-225-bgp-unnumbered/index.html15:47
spatelI would like if ovn support bgp native 15:47
* noonedeadpunk loves junipers15:47
* NeilHanlon too15:48
* NeilHanlon also loves the drink of the juniper.... gin15:48
noonedeadpunkspatel: yeah, exactly, but given implementation with frr it feels like soooo much can potentially go wrong15:48
jrosserwell juniper -> HPE right?15:49
noonedeadpunkAs with OVN we want to get rid of complexity with namespaces, but then bgp neglects all simplifications15:49
noonedeadpunkjrosser: ugh, I completely missed these news15:49
NeilHanlonallegedly..15:50
NeilHanlonwe'll see what the US courts do ;) 15:50
jrossertbh we (org wise, not mee) are ha having juniper trouble15:50
jrosserwe have some chassis based routers that the routing engine just goes AWOL every so often15:50
jrosserand then some TOR type switches in virtual chassis (whoever thought that was a good idea....) all decided to go out to lunch simultaneously recently15:51
noonedeadpunkI can't recall if dealt with their core engines very closely.... 15:51
noonedeadpunkbut never had huge issues with switch stacks15:52
noonedeadpunktheir redundancy/rolling upgrades/failover was waaay better then what I experience with cisco's... but dunno15:53
jrosseryeah15:53
noonedeadpunk(or dells)15:53
spatelnoonedeadpunk my question is why are you looking for OVN-BGP ?15:55
spatelwhat encourage you? 15:55
spatelI am running BGP Unnumbered EVPN Fabric with Cisco nexus in my new DC 15:56
spatelwithout IPv6 :)15:56
noonedeadpunkGetting proper spine/leaf I guess15:56
jrosserwell i think theres two things15:57
spatel?15:57
jrosseryou'd need bgp (or routing protocol of choice) for spine/leaf but that doesnt really touch OVN15:57
jrosserbut then other thing completely is interfacing the edge of openstack into an L3 external networks with BGP only15:58
spatelIn ovn-bgp your compute nodes will interact with your physical EVPN fabric so in that case you will have 100% L3 network in fabric. 16:00
noonedeadpunkI have very vague described purpose, so trying really understand options and evaluate them16:00
noonedeadpunkI guess this full L3 should evaluate switches stacks that are crap16:00
spatelFRR will run inside your compute and you will create BGP peering with your physical tor switches running BGP 16:01
noonedeadpunkand always bring down everything when one member goes down16:01
NeilHanlonlayer 2 is the devil16:01
jrosserspatel: for gateway nodes, right?16:01
noonedeadpunkspatel: btw, frr is installed/configured separately, right?16:01
spatelOther big advantage is your don't need LACP bond etc.. :) 16:01
noonedeadpunkjrosser: nah, also for computes16:01
noonedeadpunkor well. depends16:01
jrossertenant networks...?16:02
noonedeadpunkif you have distributed vips or not16:02
noonedeadpunkand tenant networks, yes16:02
jrosserwell actually i guess i specifically mean the IP of the VTEP16:02
spatelThis is best example diagram here - https://ltomasbo.wordpress.com/2021/02/04/ovn-bgp-agent-testing-setup/16:03
spatelyour compute connected to leaf with BGP peer (using FRR running inside compute nodes)16:04
noonedeadpunkok, thats very good reading, thanks!16:06
spatelbeauty of OVN-BGP is that you can connect two different cloud using l3 routing using BGP magic. Scaling is very easy etc..  no bordcast no multicast.. 16:08
noonedeadpunkaha, for exposing tenant networks it looks like they should not intersect in address spaces as well?16:09
spatelhttps://www.openstack.org/videos/summits/berlin-2022/Using-BGP-at-OpenStack-to-interconnect-workloads-across-clouds16:09
noonedeadpunkseems I've missed this specific presentation (likely other folks of ours were there)16:10
noonedeadpunkbut we use vpnaas for that today16:10
spatelOne big advantage is, if you running k8s then you can expose your pod IPs to outside world and we can ping directly to pod. Google provide that feature 16:10
noonedeadpunkas we need to do so only on tenant level16:10
noonedeadpunkbut how're you gonna do that.... like you kinda need public ip inside the pod?16:12
noonedeadpunkor some dst nat?16:12
jrosserthe non intersecting address space thing is difficult for multitenant clouds16:13
jrosseror where you have some template/terraform/whatever that spins up the same thing in multiple projects16:14
jrosserin the start we looked very hard at calico bit it suffered from exactly the same thing16:14
jrosseryeah so in those examples they have to use a subnetpool i think?16:18
noonedeadpunkHaven't looked a video yet from Berlin16:25
noonedeadpunkbut non-overlapping networks are mentioned explicitly in implementation limitations: https://docs.openstack.org/ovn-bgp-agent/latest/contributor/bgp_mode_design.html#limitations16:25
noonedeadpunkah, yes, subnet pools16:26
noonedeadpunkbut kinda... making tenants using subnet pools for private networks?16:27
noonedeadpunkso yeah, as they wrote it's not east/west solution for sure16:28
noonedeadpunkeven though there're some options to do so16:28
noonedeadpunkand what makes things worse, I'm not very good at networking historically16:38
spatelStill I don't understand why are you looking at ovn-bgp solution? Do you have specific need which existing infra not able to meet requirement? 16:39
noonedeadpunkspatel: I was told to by our net folks16:45
noonedeadpunkmore or less16:45
spatelThey told you to do ovn-bgp or just EVPN fabric at network layer ? 16:45
noonedeadpunkI quite vagualy understand reasoning, except ipv6, but apparently they love BGP and want everything to be handled through it or smth16:45
noonedeadpunkThey want fips to be routed directly to core switches or smth16:46
spatelhaha! loving BGP is different thing then BGP love you :)16:46
noonedeadpunk*core routers16:46
noonedeadpunkactually, I don't fully understand that either.16:47
noonedeadpunktrying to gather info now to have a constructive dialog :D16:47
noonedeadpunkand task laks motivation part as well...16:48
jrosserfip is one part but also there is IP of tenant router to think about (if you don't advertise tenant subnets)16:49
* jrosser thinks this all gets real messy real quick16:49
spatelThis is what I have in my DC - https://ibb.co/CwJyP1w 16:49
mgariepywoohoo +2 from dansmith ! https://review.opendev.org/c/openstack/glance_store/+/88558116:49
noonedeadpunkwow16:50
spatelPhysical switch fabric running EVPN with anycast gateway so each my tor-leaf switch is gateway and compute machines are standard servers in L2 16:50
noonedeadpunkno idea how you did it mgariepy16:50
mgariepyhaven't done much tbh. just commented and rebased the patch ;p16:51
mgariepyjust need another core now. so anyone here have contact ?16:52
mgariepy;)16:52
noonedeadpunkjrosser: well, reportedly, bgpg agent should listen also for router external ips and advertise them as well16:54
noonedeadpunkthe messiest part I don't like - plenty of kernel space wiring and messing with OVS flows to create another exit/entrance point16:55
jrosseryeah, so i wonder if there is a halfway house where most of the complexity and limitiations of that blog post dont apply16:55
jrosserwhere the BGP part only applies to FIP / router IP on designated gateway nodes16:55
jrosserthen you could have clean interface with upstream routers at a well defined point16:55
noonedeadpunk(and computes potentially)16:55
jrossermaybe16:56
jrosseryou'd have to work out how to address that16:56
jrosserparticularly if it was actual internet16:56
jrosserthough i believe you would be able to use rfc1918 loopback IP even if the eventual addresses were public16:57
noonedeadpunkyeah, true16:58
jrosserand i think be suuuuper careful with what services bind to what IP on everything16:59
noonedeadpunkbasically if provider networks are not passed down to computes, potentially they might be left intact16:59
noonedeadpunkwe have other level of complexity which are called AZs though :D17:00
noonedeadpunkSO yeah...17:00
noonedeadpunkanyway.17:00
noonedeadpunkLooking at ovn bgp it seems it requires FRR role17:00
noonedeadpunkI kinda know one role, but it's not maintained for a while: https://opendev.org/vexxhost/ansible-role-frrouting17:02
noonedeadpunk(neither it was fully completed)17:02
noonedeadpunkspatel: oh, anycast gateway - that might work indeed17:12
spateleach my leaf is gateway 17:14
noonedeadpunkspatel: yeah, that is good idea, I kinda like it17:15
noonedeadpunkHave close to no idea how much hassle from net side would be to do that though17:15
noonedeadpunkas eventually flow would be pretty much alike17:16
noonedeadpunkPotential issue here is that we have quite some public networks from different subnets, thus multiple gateways17:17
noonedeadpunkbut yeah, seems you also have quite some gateways there :D17:19
noonedeadpunkhuh, then it's really a good question why bgp ovn plugin really exists...17:20
spatelhaha! its to remove L2 and STP loops in some cases.. + NO LACP 17:21
spatell3 give you more control on your hands (I don't have any good example but it does provide more traffic engineering in your hand)17:21
noonedeadpunkwell, given that E/W still geneve/vxlan - you still need lacp I assume17:22
spatelI think simple EVPN with anycast gateway give you good start 17:22
noonedeadpunkas well as more ways to fuck up17:22
noonedeadpunkbut yeah17:23
spatelwhy you need LACP? you will have ECMP (bgp multi path ) 17:23
noonedeadpunkfrom compute to tor switch?17:23
spatelyes 17:23
noonedeadpunkoh, well17:24
spatelfrom compute to switch you will have L3 link not LACP 17:24
noonedeadpunkok, I guess I'm not getting that part17:24
spateladvantage is you don't need TOR switch with multi-chassis requirement.. 17:24
noonedeadpunkas previosuly you wrote "compute machines are standard servers in L2 "17:25
spatelhttps://ltomasbo.wordpress.com/2021/02/04/ovn-bgp-agent-testing-setup/17:25
spatellook at in this diagram compute has /32 IP (that is magic of BGP)17:26
noonedeadpunkah, nah, scrap bgp plugin for now:) I was thinking about anycast option you've proposed :D17:26
spatelTrust me stay away from ovn-bgp and wait for OVN-BGP native feature whenever it come up17:27
noonedeadpunkand that article is exactly ovn-bgp, right?17:28
noonedeadpunksorry for stupid and annoying questions, jsut want to ensure I didn't mixed everything up17:28
spatelyes it python based ovn-bgp plugin 17:28
spatelscript in short17:28
noonedeadpunk++17:29
spatelhttps://github.com/luis5tb/bgp-agent.git17:29
noonedeadpunkThough I'm still not sure about how tenant networks will be working, Like it feels you'd need another FRR instance to announce these separately from what ovn-bgp will be doing17:29
noonedeadpunkyeah, today this has emerged to openstack namespace: https://opendev.org/openstack/ovn-bgp-agent17:30
noonedeadpunkbut it's pretty much same thing17:30
noonedeadpunkspatel: ok, but in your env you have lacp? or also computes are just /32 for vxlan nets?17:32
spatelyes I have LACP 17:32
noonedeadpunk++17:32
spatelMy tor switch support multi-chassis (Cisco VPC) 17:33
spatelSo I have LACP with active-active 17:33
noonedeadpunkYeah, I think we have quite simmilar cisco switches17:33
noonedeadpunkok, yes, I kinda like that design way more then ovn-bgp, so thanks for this great idea ;)17:34
noonedeadpunkNow I just need to figure out way for IPv6  :D17:35
spatelIPv6 for what 17:35
spatelwhy do you need ipv6?17:36
noonedeadpunkwe have some customers running IPv6 only workloads even17:36
spatelsure ipv6 should work.. I am running ipv6 17:36
spateljust like standard way ipv417:37
noonedeadpunkthough we had them announced through BPG in OVS :(17:38
noonedeadpunk(bgp dr-agent)17:38
* noonedeadpunk needs to recall why we did it this way at the first place17:38
admin1"They want fips to be routed directly to core switches or smth" -- if 2 services talk to each other, won't this make the whole traffic go upto the spine and back via the leaf to the node ? 17:49
jrossernoonedeadpunk: for v6 a whole externally addressed subnet sits behind a tenant router17:53
jrosserso the bgp dr agent thing told the upstream router which open stack external router ip was the next hop for each tenant /6417:54
noonedeadpunkyeah, probably that17:54
jrosserno nat like there would be for v417:55
noonedeadpunkThis potentially should not be needed with ovn, given distributed FIP, or?17:56
noonedeadpunk(when provider networks are reachable from computes)17:57
noonedeadpunkbut there's no nat overall I assume in ovn... but dunno18:06
noonedeadpunkspatel: sorry, me again :D So, you have provider net gateway announced from leaf switches with anycast, right? And how are you handling storage/mgmt traffic as well as vxlan/geneve on itself?18:35
noonedeadpunkjust static routes with next hop of leaf switch?18:35

Generated by irclog2html.py 2.17.3 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!