feat(linux): onboard Ubuntu 26.04 minimal image builds for AMD64 + ARM64#8964
Draft
cameronmeissner wants to merge 94 commits into
Draft
feat(linux): onboard Ubuntu 26.04 minimal image builds for AMD64 + ARM64#8964cameronmeissner wants to merge 94 commits into
cameronmeissner wants to merge 94 commits into
Conversation
…ssner/onboard-2604-minimal
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this PR does / why we need it:
Onboards Ubuntu 26.04 (Resolute) minimal VHD builds for both AMD64 and ARM64 (Gen2), replacing the retired 22.04 minimal SKUs. Confirmed with @allyford that removal of the 2204 minimal SKUs is correct.
Alongside the 26.04 enablement, this PR does a fair amount of refactoring of the VHD build + CSE provisioning scripts so that a single code path cleanly supports 22.04 / 24.04 / 26.04 (and the minimal image variant) instead of branching on ad-hoc
IMG_SKUstring matching.Important
Follow-up PRs are required to add
acr-mirror(artifact streaming) andblobfuse2(Azure Blob CSI fuse driver) support on the new 26.04 images. Both packages are not yet published in the Resolute (26.04) PMC repos, so they are intentionally stubbed out on 26.04 for now and marked withTODO(2604)ininstall-dependencies.sh. See the Known gaps / follow-ups section below.Scope of the 26.04 onboarding
Build pipeline / SKUs
.vsts-vhd-builder-release.yaml: swapped the2204 minimal gen1/gen2build jobs for2604 minimal gen2(AMD64,Standard_D16ds_v5) and2604 minimal arm64 gen2(Standard_D16pds_v5). New offer/SKU:ubuntu-26_04-lts/minimal+minimal-arm64, Gen V2,FEATURE_FLAGS=minimal..builder-release-template.yaml: SKU-name derivation now appendsminimalfromFEATURE_FLAGS(instead of matchingIMG_SKU).Package definitions
parts/common/components.json: addedr2604entries for the full core set (containerd, runc, cni-plugins, cri-tools, kubelet/kubectl, azure-acr-credential-provider, ig/inspektor-gadget, aks-secure-tls-bootstrap-client, nvidia-device-plugin, dra-driver-nvidia-gpu, dcgm packages, dcgm-exporter, node-exporter). Also bumped shared GPU package versions (dcgm 4.5.3→4.6.0, dcgm-exporter 4.8.2→4.8.3, nvidia-device-plugin uN bumps).schemas/components.cue: added ther2604release key.CSE provisioning (
cse_install_ubuntu.sh)linux-modules-extra-*is dropped from the package list (its contents are bundled intolinux-modules-*on Resolute).microsoft-2025.asc).nvidia.gpgkeyring (apt 3.x on 26.04 rejects a raw.pub), uses the60DF8A40.pubkey +ubuntu2604repo.installMinimalBuildDeps/installUbuntu2604MinimalBuildDepsto pull minimal-image build prerequisites (rsyslog,gpg).CIS / hardening (
cis.sh)cryptmodule, so we switch topasslib's pure-Pythonsha512_crypt(rounds=5000 to match crypt(3)).preferClassicSudo: 26.04 defaults to sudo-rs, which doesn't supportDefaults logfile; we select classic sudo viaupdate-alternativesso the CIS/var/log/sudo.logaudit trail is preserved.Build / scan / test infra
pre-install-dependencies.sh: installs minimal build deps whenisMinimalImage && isUbuntu.post-install-dependencies.sh: PackageKit purge now guarded byisMinimalImage(minimal doesn't ship it).trivy-scan.sh: added 2604 trivy deb version; restructuredinstall_azure_cli(guard clauses + PMC helper); 26.04 installs az via pip (--break-system-packages) as aTODO(2604)until the Resolute az package exists; import 2025 PMC key.vhd-scanning.sh: skip CIS scanning on 26.04 (TODO(2604)— upstream CIS benchmarks not yet available).linux-vhd-content-test.sh: skip BCC-tools check on 26.04;packer_source.shreuses the 2204 PAM config for 26.04.E2E coverage (
e2e/)VHDUbuntu2604MinimalGen2Containerd+...Arm64...image defs and DCGM compatibility entries.blobfuse2is installed (will exercise the follow-up work).General refactoring
gawk 'match(...)'ID/VERSION_ID/VARIANT_IDparsing with a portablesed | head | trpipeline acrossinstall-dependencies.sh,pre/post-install-dependencies.sh,cse_helpers.sh, andcse_install.sh—gawkis not present on the minimal image.install-dependencies.sh: removed the large inlined top-level per-package install block and drove it from a components.json-based case dispatch loop; extracted the sharedaptGetBatchInstallPackagesWithFallbackhelper; minimal-vs-full gating now viaisMinimalImage/FEATURE_FLAGS=minimalrather thanIMG_SKUsubstring matching. eBPF/BCC tooling is skipped on 26.04.isMinimalImagehelper added tocse_helpers.sh;installMinimalBuildDepsstubbed for the non-Ubuntu OSes (mariner, flatcar, acl, osguard).tool_installs_ubuntu.sherror-code comments de-templatized + shellcheck|| exit 1guards;no-sudo-check.ymlallowlistsupdate-alternatives; typo fixes (Ingoring→Ignoring).Known gaps / follow-ups
These are intentionally deferred and must land in follow-up PRs once the packages are available in the Resolute (26.04) PMC repos:
acr-mirror(artifact streaming) —TODO(2604)ininstall-dependencies.sh; not yet in resolute PMC.blobfuse2(Azure Blob Storage CSI fuse driver) —TODO(2604)ininstall-dependencies.sh; not yet in resolute PMC. E2E already asserts its presence, so the 2604 bootstrap tests will drive closure of this gap.trivy-scan.sh; swap to the PMC package when published (TODO(2604)).vhd-scanning.shonce upstream CIS publishes Resolute benchmarks (TODO(2604)).Which issue(s) this PR fixes:
Fixes #