Repository navigation
feat(grr): rebuild external client installers - #275
Conversation
|
Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). View this failed invocation of the CLA check for more information. For the most up to date status, view the checks section at the bottom of the pull request. |
|
@googlebot rescan |
wajihyassine
left a comment
There was a problem hiding this comment.
Hi @sujikathir just getting around to this. Thank you for the contribution! This overall looks great, just one minor nit around the test you wrote.
Lastly, I've tested these changes and it all seems to work when using the Linux installer, but when I test with Windows, the connection back to Fleetspeak does not work. I think this may have to do with the config that gets written and referencing Linux file paths vs Windows. Is that something you would be able to test please? You could run Windows in dockur: https://github.com/dockur/windows
| --set-string clientBuilder.trustedCert=test-cert | | ||
| awk '/^ name: test-grr-client-builder-/ { print $2; exit }' | ||
| )" | ||
| test "$job_name" != "$changed_job_name" |
There was a problem hiding this comment.
I think there is a edge case where this could silently fail, could you change along the lines of
# Seperate the awk command from the helm template
changed_job_name="$(awk '/^ name: test-grr-client-builder-/ { print $2; exit }' <<<"$changed_render")"
# If statement for checking if job name was changed
if [ "$job_name" = "$changed_job_name" ]; then
echo "Error: Job name did not change when clientBuilder inputs were modified!" >&2
exit 1
fi
echo "Job name updated successfully on input change."
|
Thanks for the review, @wajihyassine. I addressed both points in
I reran the focused render test, both chart lints, Bash syntax, and I could not run the final client connection inside |
|
Hi @sujikathir thank you very much! This is very close to done. Could you just check your logic for the Windows binary repack. It looks to be breaking and do not see the resulting windows binaries in the GRR UI. |
|
Thanks for reproducing this. The missing Windows config came from mixing two revisions: the rendered chart supplied the updated Fixed in Local validation with Helm 3.12.1:
The CLA, change-detection, and security checks on the new head have passed. |
Description of the change
Add explicit GRR client-builder address, port, and trusted-certificate values for
local and non-GCP deployments. Self-signed Fleetspeak certificates are reused
while their inputs remain unchanged and regenerated when the external
connection settings change. Client-builder Jobs are content-addressed so a
helm upgradecreates a new Job instead of patching its immutable pod template.The builder also waits for the external endpoint to serve the current
certificate before repacking clients.
Document a reproducible KIND validation flow and add Helm rendering regression
coverage for the new value combinations.
Applicable issues
Additional information
Validated with:
.github/scripts/test-grr-client-builder.shhelm lint charts/osdfir-infrastructure/charts/grrhelm lint charts/osdfir-infrastructurebefore this change and verifying successful upgrades, stable certificates for
unchanged inputs, certificate rotation with the requested external DNS SAN,
regenerated Job arguments, and completion of both builder init stages
Full installer artifact and GRR Admin UI validation still requires an amd64
Linux environment. The amd64-only GRR base image could not complete its Kaniko
unpack under Apple Silicon/Rosetta, so this PR does not claim that final
platform-specific check. Screenshots are not applicable because this changes
chart behavior and documentation rather than the UI.
Checklist
Chart.yamland the sub chartChart.yamlaccording to semver. This is not necessarywhen the changes only affect README.md files.
helm dependency updateto pin updatedChart.yamlversions.