-
Notifications
You must be signed in to change notification settings - Fork 429
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Store bootstrap package in S3 #19037
Comments
@dherder what's the customer problem/pain here? Is the customer trying to cut the extra step of taking the package from S3 and uploading it to Fleet? If yes, this is possible using Fleet's best practice GitOps. See the example in our starter file here: https://github.com/fleetdm/fleet-gitops/blob/main/teams/workstations.yml#L23-L24 Or, is the problem that the customer can't increase the database size? If so, about how big is the package? Maybe we can offer a recommended best practice DB size. |
@noahtalerman if I had the choice, I would not store large binaries as blobs in a db. The pain relates to egress from the db as well as potential db bloat. The direct pain relating to that is backup and restore operations are more costly and of a longer duration. It is possible to increase the blob size in the db, but if storing a pointer to the file rather than the binary itself fixes the problem, why not do that? it seems like a better solution long term, and should also be considered for our software management solution. |
Hey @dherder got it. Do you anticipate that this will be blocker for the customer to use Fleet's MDM features in production? They won't increase the DB size.
Our plan is to require S3 for software management. Packages will be stored here. |
@noahtalerman I do see this as a blocker in this particular case. Great to know that we will use S3 for the software management piece. |
UPDATE: Not for a bit. Maybe 2025 (noahtalerman 2024-05-28) @dherder do you know when |
@noahtalerman Having the package serve from the defined url would be the preferred mechanism to solve this problem. The real issue is the desire to host the package on some edge CDN like cloudfront, etc |
@noahtalerman this feature is required for customer-starchik. The pain here behind hosting in buckets like s3 or the db is that this solution does not solve for download bottlenecks that content distribution solutions would solve for. When a device is bootstrapped, many customers have end users that are in remote regions and if a cdn could be specified, serving that package with the best download speed could be achieved. |
Hey team! Please add your planning poker estimate with Zenhub @jahzielv @dantecatalfamo @gillespi314 @roperzh |
@noahtalerman Looks good to me! |
Hey @Patagonia121 heads up that I learned that I tracked a separate request for the "Serve from CloudFront" here: #20765 cc @dherder |
Thanks @noahtalerman i think I requested cdn support back on the June 20 feature fest |
Manual QA: Tested with the S3 storage configured, added a bootstrap package for a team, validated in the DB that the content was not in the DB (
and verified that it was stored in S3 (minio in local dev): Reset my mac mini and did the DEP-enroll flow. It did enroll in my local Fleet setup. After enrollment, it successfully received the bootstrap package (the dummy one that we use in tests, it adds a fleet logo at a well-known path and I checked that the logo was installed there). Also, after this enrollment I deleted the bootstrap package via the Fleet UI, and triggered the cleanup cron job and verified that it properly did delete the file on S3 (minio) since it was now unused. |
Hey @Patagonia121, heads up that this customer request was shipped in 4.56 🎉 |
Bootstrap package stored, |
User story for the customer promise was shipped in 4.56: - #19037
User story for the customer promise was shipped in 4.56: - #19037
Goal
Context
Changes
Product
s3_software_installers
)is configured, Fleet stores the bootstrap package in this S3 bucket instead of the database.Engineering
Implementation
As discussed and agreed on Slack in a convo between Noah and Martin:
name
,sha256
andtoken
used to download it unauthenticated will still be in the DB inmdm_apple_bootstrap_packages
, but thebytes
column will benull
, indicating that the contents is in S3)software-installers
bucket, and those are stored under<bucket>/<prefix>/software-installers/<hash>
, I'll use<bucket>/<prefix>/bootstrap-packages/<hash>
for the bootstrap packages (technically a bootstrap is related to a team ID, but by using the hash, we can save storage space if the same bootstrap package is used for many teams, the same as how we store software installers).QA
Risk assessment
Manual testing steps
Testing notes
Confirmation
The text was updated successfully, but these errors were encountered: