Video summary
The August 6th meeting of the Foundational Infrastructure Working Group focused primarily on transitioning OpenStack CI workflows from Concourse to GitHub Actions using free runners. The team identified that while microstack is no longer maintained and devstack serves as its replacement, significant technical hurdles remain when running these environments in cloud-based actions due to nested virtualization issues with KVM emulation like QEMU. A critical bottleneck emerged regarding the time required to provision a director instance; free GitHub Action runners often timeout before completing this setup because they utilize slower emulators compared to native hardware acceleration found on paid runners. Consequently, the group debated whether upgrading to paid runners was cost-effective or if it would be more efficient to manually boot devstack instances in Google Cloud Platform (GCP) and run tests against them locally or via scripts, potentially saving money while avoiding complex virtualization constraints.
To resolve these performance and reliability concerns without committing immediately to expensive infrastructure changes, the team proposed a pragmatic experimental approach involving manual validation. Instead of fully automating the pipeline setup right away, members suggested manually booting a devstack instance in GCP with sufficient CPU resources—estimated at four cores—to ensure stable operation for both OpenStack orchestration and Bosch Director processes. This method would allow engineers to verify that tests pass successfully under realistic conditions before deciding whether to invest in paid GitHub runners or develop custom Concourse tools to automate the booting process. The discussion highlighted a clear trade-off: paying for faster, native virtualization on GitHub versus writing scripts to manage GCP instances, with the decision hinging on cost efficiency and the specific requirements of running multiple VMs simultaneously during test suites like BATS.
The meeting also addressed several other operational topics, including pending code reviews for disk type conversions in Cloud Platform (CPI) pipelines and improvements to integration tests that now better handle resource cleanup and workload balancing across threads. A significant issue was raised regarding a Concourse edge case where inconsistent User IDs on worker machines caused permission denied errors when sharing images; however, this appears resolved with recent updates to the Concourse version deployed by the team. Additionally, there were discussions about replacing high-CPU-consuming NATS syncers with Go-based implementations in health monitors and addressing failures related to Ruby gem versions after an update from 32 to 33. The group agreed that some pending items require further review before merging, particularly those involving vendoring packages or security profiles, while others like disaster recovery tests need investigation into why they are not automatically bumping as expected.
In conclusion, the working session emphasized a balanced approach between leveraging existing free resources and investing in paid solutions only when necessary to meet performance thresholds for complex virtualization tasks. The team decided that immediate action involves experimenting with manually provisioned GCP instances to validate test reliability and gather concrete data on resource consumption before making long-term architectural decisions. With one member departing on vacation, the group ensured continuity by assigning specific follow-up actions such as checking cost comparisons between running a single VM in GCP versus paying for GitHub workers, and investigating why certain pipelines failed during recent releases. The meeting ended with acknowledgments of contributions from external community members and well-wishes for upcoming holidays, reinforcing a collaborative spirit aimed at maintaining robust infrastructure while optimizing costs through careful evaluation of technical alternatives.
Read the full video transcript
Okay. Then uh hello uh
welcome to the dash infrastructure
working group meeting 6th of August.
So let's check the agenda. Um
so we have one topic paid runners for PC
run open STCI outside.
Uh-huh.
CC environment.
Who brought this topic up?
>> Hi, it's for me Sasha. Hey.
>> Hi. Should we start with that or
>> usually we start with the topics on the
agenda and then go over the dashboard to
some uh don't uh u push people wait
until we go over the items.
>> Okay. I I try to uh make it short. Um so
Reuben um mentioned that um we can check
microstack to see if we can use
microstack to uh run the um OpenStack CI
in GitHub actions.
Okay. And um yeah um I started this P
for us. Uh the first finding was that a
micro ST is not maintained anymore.
Instead we uh then continued with
devstack. But apart from that we um we
did workflows on uh GitHub actions to
see if we can uh do stuff like um uh
deploy bosch um create um download stem
cell, upload stem cell, create a VM out
of a stem cell etc. Okay. And we were
running in uh some problems. So um uh my
latest runs for instance the deploy
bosch wasn't working. Another problem
was that um create an VM out of in stems
is not working. A lot of nested
virtualization problematics. Um I also
switched from KVM an open stack onet
virtualization to Kimu which is an
emulator. I also ran on problems when I
switched. However, I have now two
questions. Um, Net supported also here.
Um, regarding the two questions, um, Ned
and I, we uh, tested and used, um, the
free runners of on GitHub action, we
wanted to ask if, uh, the if paid
runners um for GitHub actions are
available on the Cloud Foundry repo or
Ned, maybe I've um, I miscommunicated a
question. maybe a few community.
>> You're correct. Yeah. Um the issue with
the free ones is um they're using chemo
which is very slow. So we weren't able
to get a director running. It's always
timing out. Um
question is maybe we can increase the
timeouts with more time for it to
provision. Um
>> well this is it my end
>> sorry
>> uh the the timeout I played around with
with so
>> um maybe it's not running at all um yeah
I haven't tried increasing yet
>> um so an alternative
>> I I would have a question have you tried
locally the setup and does it work on um
um virtual machine or on a laptop.
>> No. Um I only did it as a workflow on
GitHub actions.
>> Maybe there are other issues which are
uh somehow hidden and we think that it's
the uh uh free runner. I would suggest
that this you get a well feeling how it
works the setup locally on a machine
which will uh um
and what the requirements for that
machines are uh regarding CPU run
and then we can have concrete
discussions whether this can be run as a
GitHub action.
>> Yeah. It's a point I take with me. Um,
however, the the other point the paid
runners. Um,
is there a possibility for us to use
paid runners on Cloud Foundry because
right now we use the free version and
doesn't even make sense because the
whole do it in GitHub action um approach
um is u because and I don't want to uh
miscomment now Reuben. So apologize if I
might miscomment him. Uh the whole uh
backlog item was because GitHub actions
are supposed to be cheaper than Conquest
and I wonder and
Ned as well wonder if it's still the
case if we switch from free runners to
paid runners.
>> Uh we have to uh address this question
with Chris Clark the program manager. I
he has more contractual details about
our enterp GitHub enterprise license. I
can not answer the question
>> but uh I I mean uh we can do to um
I don't know how uh whether we can in
parallel ask the question to Chris or we
need first a good understanding what we
need here and then ask the question
>> can you forward the contact to me and N
or should They do it over you.
>> I'm going on vacation uh uh beginning of
Monday. That's why most probably I can
get a bottleneck here if we do over me.
>> Mhm.
>> Um
yeah, just to clarify, um I think we can
run most of the pipelines in GitHub
actions. um like bumping the
dependencies, unit tests.
>> Um the issue we faced was particular
with PSTs because it requires a director
to be provisioned and VMs from the
director.
>> Uh Reuben highlighted though that
especially the bets
are in focus here.
Um, and what Sasha mentioned is if um
we're unsure if the if we end up having
to use the um paid GitHub runners, is
that going to be preferable over
concourse?
>> We can answer this question when we have
uh understanding what is required here.
maybe one uh virtual machine which
started for one hour to validate and
then shut down again
is not so much of a problem. Um
basically the bets need to run through.
>> Yeah,
>> this is required.
Yeah, I think as far as coordinating
between concourse and OpenStack that's
or and uh GitHub runners that's it's not
straightforward but it is fairly
it's done a few times. There's different
ways to have hooks or
um either GitHub actions triggering by
concourse or vice versa. So I think for
the things that don't require IAS access
um those could those could live in in
whichever environment suits the team the
best. Um
we the the the root issue it seems like
is we need an IAS we need an OpenStack
booted up. Um, and that could be
something that we trigger
um, in Concourse if it's possible to
boot like a single VM microstack. Um,
and that could be targeted either from
Concourse or from GitHub actions, I
think, depending on how we set up the
networking connectivity.
Um,
so yeah, I don't I don't know. So I
don't know whether using a paid worker
or not through GitHub would would help
us necessarily but I think I think the
the the root problem to solve is how do
we go from having no OpenStack IAS
running to having an OpenStack IAS
running and um in the case of other
IAS's we those are just public cloud and
we can we can ask for instances to be
booted up and use bubble or other
mechanisms but because we don't have an
IAS is booted. We need to to figure out
that it's like a pre-bubble up sort of
step that will give us a working open
stack that we can target with for
example bubble.
>> Does that make sense as a framing
>> um the open stack environment I
[clears throat] think was resolved by
Sasha. I don't remember the name of it.
>> It's dev.
Yeah. And I think that's able to
provision fine.
The we run into the issue when trying to
get um Bosch running actually.
>> Is that because Devstack is not
performant enough on the hardware that
it's running on or is that some other
issue?
>> I think it's the virtualization.
um the free runners use um Kimu compared
to
>> um the paid ones.
>> Um so I was running into the timeout
issue. Um Sasha mentioned he tried
playing around with it but still no
>> is is so that devstack is available from
from a provider.
>> Yeah. as a GitHub action
>> as a GitHub action. Okay, good. Oh, and
then that's why the page runner Yeah,
would make sense.
Yeah. Um I don't know. I think it's
probably a a Chris question in terms of
costing. I think the the
the other
possible way of doing this would be to
boot some version of devstack ourselves
with scripts in GCP and then have
concourse workers target that for the
bats. I don't I think that's probably
the place we want to check costwise
whether it's cheaper to pay for a GitHub
paid runner with the faster OpenStack or
And there's hidden cost in here of
actually doing the work like write a
write a a concourse
some concourse tooling that would boot a
VM and installed install devstack on
that something like a devstack on that
and then allow that to be targeted by
the either the GitHub actions or the the
concourse jobs.
Mhm.
>> Um
I I don't have a good sense of cost
either way, but that will probably if
we're if we're trying to look at this
through the lens of what's the most
costefficient way to do it, I think the
comparison is going to be
between the time it would take to to
boot and run a a sufficiently large
machine
in GCP with a devst with something like
a devstack
orchestrated by us installed on it
versus the cost of running that worker.
um in GitHub actions.
>> Surprisingly, defec was, if I'm not
mistaken, using around 500 megabytes of
RAM,
>> so it's not really
um that much consuming.
>> Yeah, I don't have concrete information.
>> Yeah, I don't think we need really
precise numbers, but if we have ballpark
like if it's
If it's 2x cheaper to run it, to like
write a script to run to to boot a VM
that's big enough in GCP and install
Devstack on it and run that, maybe it's
worth the effort. But if it's if it's
like 10% more, it's probably not worth
the time
and we we would just want to pay for the
the GitHub action worker.
Um,
what do you think about that, Ben?
>> Um, I don't um
I don't think that we have until now
paid workers. We have to explore what
does it mean for our contract?
>> Yeah.
>> Um,
>> is that something you could ask Chris
about? Um, just to find out if it's
possible.
>> Yes. Uh what kind of work paid work do
you have any configuration
or
>> I think it's custom sizes there. Um what
we're mainly
aiming for is the virtualization
KVM support
>> but you say 1 GB and two CPU. So what
are the configuration rough
configurations?
>> I I it looks like devstack is not the
main consumer. So I'm I'm unsure about
Borch. If you run the B test, we'll need
a directory setup and I guess one or
two VMs at the same time.
Yeah,
>> I would guess we want at least
half as many CPUs as we want to run VMs.
So probably I would say probably four or
six CPU cuz we want one CPU to be able
to manage the IAS itself and then at
least to have a CPU for the Bosch
director
um and all the worker processes on that
so we don't have contention
um
because we have to remember that that
that one virtual machine is going to be
running all of the OpenStack
orchestration layer plus all of the
Bosch orchestration layer plus the
I guess the test code won't be running
there but then any VMs that get spun up
or torn down as part of bats um will
need to be fast enough that they don't
stall out
um or or cause the the open the
underlying OpenStack VM creation time to
to spike. So my guess is probably four
minimum
Maybe we could try with two and see how
that works.
>> And around 68.
>> Uh, it sounds like dev stack was 500
megabytes. Is that right?
>> So maybe
>> Yeah, don't quote me on it, but um yeah,
during testing that's how it looked
like.
Yeah,
it might be interesting to to like like
Bon was saying like maybe we can get
this working
locally or if not locally then than then
as an experiment in in GCP or something
um till we get to a point where we can
run bats against a devstack instance and
then understand what the performance
requirements are there and that would
and let us know either what what it's
going to cost to run that in GCP
roughly because of CPU size and memory
or what kind of a worker we'd have to
request from GitHub.
>> Yeah.
Yeah. My point was to be able to iterate
fast and get understanding of the setup
it is is it working reliably or not? How
what are the requirements regarding CPU
and memory?
and then we can go from there because
triggering a process to buy workers and
so until before we know whether it's a
reliable setup and what are the
requirements.
Um
>> yeah um unfortunately we can't test it
on a paid worker to confirm that it's
going to work. Um, Aram, do you think
it's worth the effort to set it up in
concourse in GCP?
>> I don't know necessarily. I don't think
I think before setting it up in
concourse would be fine, but I think my
thought was can you
can you manually boot a devstack
virtual machine in in GCP and then and
then run run the bats from your from
your local desktop or from a from
another machine in in GCP just simply to
validate that that that that some to
figure out what configuration of
devstack will allow
um the bats to run successfully.
>> Okay,
>> does that make sense? Rather rather than
trying to set up the whole pipeline,
just just see if you can like
>> manually get a devstack instance running
in GCP and then kind of manually or or
have a script that that runs bats until
we get that to pass successfully. And
that will hopefully give us a sense of
what what size devstack instance we need
and also maybe give us a sense of the
complexity of having to do that in
concourse if if the paid workers for
GitHub uh don't work out somehow.
>> Okay,
>> with that with that we can calculate
also the cost. If they are I don't know
below let's say one two 300
two 200 per month uh then I think we can
just go
because it needs to run only when we
release or uh do new commits on open
stack
>> not so often the VM you can roughly
calculate the costs.
Yeah, I mean we could the pipeline could
be set up so that bats aren't
automatically triggered on every commit
and we could just we could that could be
a manual trigger which would then
um either run the run the paid worker or
you know boot boot the VM in GCP. Um
[snorts]
I'm thinking mostly in Concourse cuz I
think mostly in Concourse but don't I'm
not this isn't me trying to say we
should absolutely use Concourse
necessarily. It's just the the language
I'm using because it's faster than
saying both. Mhm. [clears throat]
Okay. So, we need to um deploy OpenStack
and the B director in GCP.
See um if it's working.
Yeah, I think so. I think once you get
OpenStack running, I hope I don't know
if Bubble works for OpenStack, but maybe
you can just use BBL to you can point
that at the OpenStack instance and have
it bring up a director for you.
>> Mhm. Um,
>> okay.
>> That that might be the way to go.
>> Um,
>> also like uh download upload stem cell
create VM out of the stem cell or is it
really just Okay. Not just it's open
stack and bosch.
>> Yeah. I mean I think Yeah. So I think
for the bats you you need a director
present and the way a lot of times we
get that is to to bubble up and then
once you have the director then whatever
the bats do which I think are you know
most of the Bosch operations
um
there's probably good good examples in
AWS or GCP about how to how to set up an
environment
um once you have the IAS credentials to
to to run
to run the tests.
Okay, so sounds good to me.
>> Thank you all for tackling this and good
luck. I hope it goes well.
>> Thanks.
>> Okay. Uh Aram, you mentioned you are
going to add other agenda points. Do you
have something?
>> Oh, no. I was just updating the agenda
and making sure this this thing from uh
Slack chat was or from Zoom chat was in
there.
>> Uhhuh.
>> I don't I don't have anything.
>> Anyone else having something else?
>> Yeah, very quick announcement. Um we
spoke about it before. Um, we have
issues with the GCP CPI pipeline where
we get an error permission denied.
Um, I was finally able to isolate it.
Uh, it's a concourse
edge case I guess. Um, I found out we
have um met GCP metadata users
that are created on the VMs on the
workers and they are not created in the
same order. So when Concourse is sharing
I mean they're not you have they don't
have the same UIDs on each worker
and when um Concourse is sharing images
between workers
um
we got some of the home directories with
the incorrect UID
um owner.
So this was merged in concourse the fix
and I'm assuming when we they push out
the version haven't unchecked and we
update this should finally address the
issue.
>> Cool. Um I I ran an upgrade yesterday
and we got uh 8.25 I think or 725.
Anyway, the we got the latest version of
Concourse as of yesterday. So I I think
maybe we pulled in that fix unless it's
more recent.
>> Yeah, I'll take a look and check.
Thanks.
>> Sure.
>> Okay, then let's go to the dashboard.
I'm opening first all the pending to be
pending for merch.
Okay, this is the implement snapshot
based disk type conversion for the disk
uh CPM.
>> This one um needs a review. Um I have
asked Sebastian who's working on Azure
from our side to take a look as well.
>> Should I assign Sebastian?
[clears throat]
>> Uh yeah.
Thanks.
>> Okay, I updated the state.
Speed up integration tests. Uh so C
rabbit is fine with it.
Chris uh
works by Chris.
All comments from Chris has been
addressed but there is no approvement.
>> I'm happy to approve this. I had a walk
through yesterday. Um
>> okay
>> the the gist is that there were um
so basically two two things changed.
some in some places we didn't need to do
as much tear down because uh the tests
weren't mutating state necessarily of
the um of the integration environment.
Um and in other cases there was um
uh
there was some oh this and also we we're
we're saving the runtime information
from RSpec about
um when
uh which tests are slower which leads to
better splitting across the the end
workers so that we end up with a a
closer a shorter like a a tighter time
bound. where sometimes we would have
like one work one one set of processes
would finish in 5 minutes, the other one
would finish in 20. Um, so it should
even out the work between the different
threads.
>> Mhm.
Okay, [clears throat]
I'm going to merge
right.
>> Does it have an impact on the cleanup? I
mentioned some of the
>> um the the cleanup is only these are
integration tests that run on a single
VM. So, it's just uh directory temp
directory cleanup stuff that happens.
Oh,
>> okay. Let me see.
There it is.
Oh, we have a lot of approvals. Yeah.
[laughter]
[gasps]
Or approvals.
Okay. And uh I don't have any other
option than merging this
Asia trusted launch security profile.
This needs um
review
Bholder left over some more automation.
Okay, you walked into this um
so
boot still uh leaks resources.
I notice again last week when a new boot
release has been done, there were again
orphan
bubble environments.
But somehow I didn't have time. Is this
improving the somehow the cleanup left
over?
>> I think this adds some cleanup to
>> Yeah, this this adds an onfailure hook.
I think that
>> Okay. and then and then pulls pulls the
behavior out to a function.
>> Yes, this is more synchronized or uh
centralized. Uh
>> yeah.
>> Okay,
this is good. Maybe helps more.
Yeah, I'm thinkful changes.
Um, this one we can skip for now. I
might make this I might make this um
I'm working with Colin on this. This is
a
um some tooling we put in place for
being able to test uh the
Golang replacements for NAT sync and um
in the health monitor.
Mhm. What is the motivation uh behind
reimplementing in go?
>> Uh both for both NATS and these are
there are open uh draft PRs for
replacing a rewrite of NAT syncher.
>> I saw those
>> in the
uh motivation is NATS tends to we we've
been using the Docker CPI and we see the
NAT syncer show up as as a really high
CPU consumption. Um, and also just the
these the two processes don't interact
with the database. So we don't have to
worry about any of the director SQL OM
stuff in Go. We can just run the
processes and
um
hopefully reduce some memory and CPU
footprint on the VM.
>> Okay. Yeah.
>> Well, it is in lower.
>> Okay. This is about the trigger back
port. I also worked into this comment
last week. Um,
>> yeah.
>> So,
>> I think yeah, let's see if anything
comes up from there.
>> Yeah,
still waiting for changes. Ubuntu noble.
Um so this is
the fips
contribution for noble fips support for
>> I think there is a there's an open
comment from code rabbit and somebody
asked the person to address
um that so I think we're just waiting
for contribution on this
>> yeah [clears throat]
we'll wait just
Okay, Chris already walked into this and
has
comments waiting for changes.
I was surprised um
the person is um I don't know from where
Yeah, I don't it was nice to see
somebody contributing but I haven't I
didn't recognize them.
>> Yeah,
>> but yeah, the state is we have assigned
Chris is assigned and
waiting for changes. Okay. Pending
preview. [clears throat]
We talked about this one.
So, we discussed this last time. Um
>> yeah I I think it needs at least one
more review.
>> Yes, this was the conclusion that we
want to have another review on this. So
it is uh pending
the state is correct.
Um, love to see some reviews on this.
Um,
>> Mhm.
>> Yeah, this should
>> Yeah.
Okay. and uh also in correct state.
This is also waiting for review.
Once I get a review or two on this, I'll
I'll
um
uh there may be some some challenge to
merging this because vendoring a package
requires blob store access. Um but I
think if I just run it through CI once
and the bumper will then automatically
synchronize the blobs
um into the blob store and it should be
fine.
>> Mhm.
Um, these were some co-pilot recommended
changes for for fixing
workflow security warnings which seem to
not impact the workflow running. So,
seems fine.
There's there's like three or four of
these.
>> Should we just match those? So,
>> I think it's fine to merge the workflows
have run successfully. So,
>> okay.
Be right back. Just a second.
And this one we also set now we want to
have another review on it.
>> Um
>> okay
>> it's a smaller change but someone else
has to say Google. Yes, in a very
special place. [laughter]
Um,
>> yeah, this is also waiting for review.
>> Well, we'll try to take a look at that.
Um,
>> this one.
Uh yeah, the one with the one in um
in config server. Yeah.
>> Okay. Yeah.
Server.
This is also waiting for radio still.
We talked about this
trust touch and put in review. Okay.
Then um
we have couple of bumps here. Um
>> um
yeah, some of these are a little I'm a
little confused about them. I'm the
the Bosch bootloadader and the Bosch
disaster recovery test should be
autobumping.
So I'm going to look into that those
pipelines.
Um, the Bosch io worker code I don't
believe has autobump
on it, but I
I don't know that we have good tests in
GitHub actions for these. So, I'm I've
been a little reluctant to bump those.
They seem fine, but I don't have as much
context on the Bosch IO codebase as
other things. Um,
we'll look at the
disaster recovery test and see if I can
um figure out why those aren't
autobumping to a newer version because
the pipelines should be doing that.
>> Mhm. You mentioned porch put folder and
disaster recovery. Yeah.
>> Yeah. And there are a couple of open
stack related maybe someone from SAP can
look into those.
>> Yeah, I think the OpenStack one is
failing I think because the the GitHub
actions are just failing
full stop. Um,
oh,
and then the JSON bump there, I think
that's just a
I think that's a bump to the JSON gem.
So maybe that doesn't need to be once
once the Ruby OpenStack is deprecated,
it's not important.
>> Yeah. Mhm.
I will leave them in the inbox
then.
>> Cool. Thank you. That seems good.
>> This one is the only new.
Yeah, this one I'm working on
reproducing it. Um because it it was
supposed to be fixed. Um so Aram, we
discussed this last time. Um for some
reason, we're not testing the health
monitor in the CI
and we ended up with a release which had
a broken Ruby gam.
>> Interesting.
um
>> there. So is
uh did you add a test for the Ruby for
the Ruby Health Monitor now? I thought
those specs were running.
>> No, haven't looked into detail yet. Um
was just trying to reproduce it today
because it's supposed to be fixed now
with the latest director.
[clears throat]
But um yeah um I'll check the CI as well
after that how we we missed it after I
managed to reproduce it.
>> Okay. Yeah. Cuz I'm I'm surprised that
we missed it. I wonder Yeah. I wonder if
it possibly was caused by
something that happened when when Ruby
got updated from 32 to 33 or or some
some other stranges.
But yeah, let me know if you figure out
how it how it slipped through. Um,
>> yeah, of course.
>> Okay.
And this is the only issue. The other
ones are older.
Okay. Uh, promotions,
we don't have any.
Then we are through.
>> Nicely done.
>> So then uh
do you have anything else?
>> Not for me other than have a good
vacation.
>> Thanks. Thanks.
>> Are you gone for 3 weeks or?
>> For 3 weeks? Yes.
>> Nice.
Well, enjoy. I hope hope you have warm
weather and no forest fires.
>> Yeah, it's [clears throat]
Yeah, hopefully.
Thank you then. Uh have a nice day,
evening, morning and take care. See you.
Take care. Afternoon. Take care, folks.
Bye.