diff --git a/Release.toml b/Release.toml index bcc5a446320..d7504d3d560 100644 --- a/Release.toml +++ b/Release.toml @@ -1,4 +1,4 @@ -version = "1.22.0" +version = "1.23.0" [migrations] "(0.3.1, 0.3.2)" = ["migrate_v0.3.2_admin-container-v0-5-0.lz4"] @@ -344,3 +344,9 @@ version = "1.22.0" "migrate_v1.22.0_bootstrap-commands-settings.lz4", "migrate_v1.22.0_bootstrap-commands-metadata.lz4", ] +"(1.22.0, 1.23.0)" = [ + "migrate_v1.23.0_kubelet-device-plugins-metadata.lz4", + "migrate_v1.23.0_kubelet-device-plugins-settings.lz4", + "migrate_v1.23.0_nvidia-container-runtime-metadata.lz4", + "migrate_v1.23.0_nvidia-container-runtime-settings.lz4", +] diff --git a/Twoliter.toml b/Twoliter.toml index 964e07342a7..c642483aa0f 100644 --- a/Twoliter.toml +++ b/Twoliter.toml @@ -1,5 +1,5 @@ schema-version = 1 -release-version = "1.22.0" +release-version = "1.23.0" [vendor.bottlerocket] registry = "public.ecr.aws/bottlerocket" diff --git a/packages/settings-plugins/settings-plugins.spec b/packages/settings-plugins/settings-plugins.spec index a8bfcd85a9d..76fa9d1ef95 100644 --- a/packages/settings-plugins/settings-plugins.spec +++ b/packages/settings-plugins/settings-plugins.spec @@ -57,28 +57,39 @@ Summary: Settings plugin for the aws-k8s variants Requires: %{_cross_os}variant-family(aws-k8s) Provides: %{_cross_os}settings-plugin(any) Provides: %{_cross_os}settings-plugin(aws-k8s-1.23) -Provides: %{_cross_os}settings-plugin(aws-k8s-1.23-nvidia) Provides: %{_cross_os}settings-plugin(aws-k8s-1.24) -Provides: %{_cross_os}settings-plugin(aws-k8s-1.24-nvidia) Provides: %{_cross_os}settings-plugin(aws-k8s-1.25) -Provides: %{_cross_os}settings-plugin(aws-k8s-1.25-nvidia) Provides: %{_cross_os}settings-plugin(aws-k8s-1.26) -Provides: %{_cross_os}settings-plugin(aws-k8s-1.26-nvidia) Provides: %{_cross_os}settings-plugin(aws-k8s-1.27) -Provides: %{_cross_os}settings-plugin(aws-k8s-1.27-nvidia) Provides: %{_cross_os}settings-plugin(aws-k8s-1.28) -Provides: %{_cross_os}settings-plugin(aws-k8s-1.28-nvidia) Provides: %{_cross_os}settings-plugin(aws-k8s-1.29) -Provides: %{_cross_os}settings-plugin(aws-k8s-1.29-nvidia) Provides: %{_cross_os}settings-plugin(aws-k8s-1.30) -Provides: %{_cross_os}settings-plugin(aws-k8s-1.30-nvidia) Provides: %{_cross_os}settings-plugin(aws-k8s-1.31) -Provides: %{_cross_os}settings-plugin(aws-k8s-1.31-nvidia) Conflicts: %{_cross_os}settings-plugin(any) +Conflicts: %{_cross_os}variant-flavor(nvidia) + %description aws-k8s %{summary}. +%package aws-k8s-nvidia +Summary: Settings plugin for the aws-k8s-nvidia variants +Requires: (%{_cross_os}variant-family(aws-k8s) and %{_cross_os}variant-flavor(nvidia)) +Provides: %{_cross_os}settings-plugin(any) +Provides: %{_cross_os}settings-plugin(aws-k8s-1.23-nvidia) +Provides: %{_cross_os}settings-plugin(aws-k8s-1.24-nvidia) +Provides: %{_cross_os}settings-plugin(aws-k8s-1.25-nvidia) +Provides: %{_cross_os}settings-plugin(aws-k8s-1.26-nvidia) +Provides: %{_cross_os}settings-plugin(aws-k8s-1.27-nvidia) +Provides: %{_cross_os}settings-plugin(aws-k8s-1.28-nvidia) +Provides: %{_cross_os}settings-plugin(aws-k8s-1.29-nvidia) +Provides: %{_cross_os}settings-plugin(aws-k8s-1.30-nvidia) +Provides: %{_cross_os}settings-plugin(aws-k8s-1.31-nvidia) +Conflicts: %{_cross_os}settings-plugin(any) + +%description aws-k8s-nvidia +%{summary}. + %package metal-dev Summary: Settings plugin for the metal-dev variant Requires: %{_cross_os}variant(metal-dev) @@ -135,13 +146,24 @@ Conflicts: %{_cross_os}settings-plugin(any) -p settings-plugin-aws-dev \ -p settings-plugin-aws-ecs-1 \ -p settings-plugin-aws-ecs-2 \ - -p settings-plugin-aws-k8s \ -p settings-plugin-metal-dev \ -p settings-plugin-metal-k8s \ -p settings-plugin-vmware-dev \ -p settings-plugin-vmware-k8s \ %{nil} +# The settings-plugin-aws-k8s and settings-plugin-aws-k8s-nvidia are compiled independently +# due to the requirement of distinct feature flags. This separation is necessary to prevent +# feature unification, as detailed in the Rust Cargo documentation: +# https://doc.rust-lang.org/cargo/reference/features.html#feature-unification +%cargo_build --manifest-path %{_builddir}/sources/Cargo.toml \ + -p settings-plugin-aws-k8s \ + %{nil} + +%cargo_build --manifest-path %{_builddir}/sources/Cargo.toml \ + -p settings-plugin-aws-k8s-nvidia \ + %{nil} + %install install -d %{buildroot}%{_cross_pluginsdir} install -d %{buildroot}%{_cross_factorydir}%{_cross_sysconfdir}/ld.so.conf.d @@ -151,6 +173,7 @@ for plugin in \ aws-dev \ aws-ecs-1 \ aws-ecs-2 \ + aws-k8s-nvidia \ aws-k8s \ metal-dev \ metal-k8s \ @@ -194,6 +217,11 @@ done %{_cross_factorydir}%{_cross_sysconfdir}/ld.so.conf.d/aws-k8s.conf %{_cross_tmpfilesdir}/settings-plugin-aws-k8s.conf +%files aws-k8s-nvidia +%{_cross_pluginsdir}/aws-k8s-nvidia/libsettings.so +%{_cross_factorydir}%{_cross_sysconfdir}/ld.so.conf.d/aws-k8s-nvidia.conf +%{_cross_tmpfilesdir}/settings-plugin-aws-k8s-nvidia.conf + %files metal-dev %{_cross_pluginsdir}/metal-dev/libsettings.so %{_cross_factorydir}%{_cross_sysconfdir}/ld.so.conf.d/metal-dev.conf diff --git a/sources/Cargo.lock b/sources/Cargo.lock index 509e19c6880..7b3d46e3a41 100644 --- a/sources/Cargo.lock +++ b/sources/Cargo.lock @@ -382,7 +382,7 @@ dependencies = [ [[package]] name = "bottlerocket-model-derive" version = "0.1.0" -source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.4.0#28f3c66b979bc48d32120b4e82d2c81b5841d7aa" +source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.5.0#ae697ef73e494a789fc2bed9c0f6f03629048c32" dependencies = [ "darling 0.20.8", "quote", @@ -391,8 +391,8 @@ dependencies = [ [[package]] name = "bottlerocket-modeled-types" -version = "0.4.0" -source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.4.0#28f3c66b979bc48d32120b4e82d2c81b5841d7aa" +version = "0.5.0" +source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.5.0#ae697ef73e494a789fc2bed9c0f6f03629048c32" dependencies = [ "base64 0.22.1", "bottlerocket-model-derive", @@ -426,7 +426,7 @@ dependencies = [ [[package]] name = "bottlerocket-scalar" version = "0.1.0" -source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.4.0#28f3c66b979bc48d32120b4e82d2c81b5841d7aa" +source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.5.0#ae697ef73e494a789fc2bed9c0f6f03629048c32" dependencies = [ "serde", "serde_plain", @@ -435,7 +435,7 @@ dependencies = [ [[package]] name = "bottlerocket-scalar-derive" version = "0.1.0" -source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.4.0#28f3c66b979bc48d32120b4e82d2c81b5841d7aa" +source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.5.0#ae697ef73e494a789fc2bed9c0f6f03629048c32" dependencies = [ "bottlerocket-scalar", "darling 0.20.8", @@ -459,8 +459,8 @@ dependencies = [ [[package]] name = "bottlerocket-settings-models" -version = "0.4.0" -source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.4.0#28f3c66b979bc48d32120b4e82d2c81b5841d7aa" +version = "0.5.0" +source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.5.0#ae697ef73e494a789fc2bed9c0f6f03629048c32" dependencies = [ "bottlerocket-model-derive", "bottlerocket-modeled-types", @@ -481,6 +481,7 @@ dependencies = [ "settings-extension-ecs", "settings-extension-host-containers", "settings-extension-kernel", + "settings-extension-kubelet-device-plugins", "settings-extension-kubernetes", "settings-extension-metrics", "settings-extension-motd", @@ -509,7 +510,7 @@ dependencies = [ [[package]] name = "bottlerocket-settings-sdk" version = "0.1.0" -source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.4.0#28f3c66b979bc48d32120b4e82d2c81b5841d7aa" +source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.5.0#ae697ef73e494a789fc2bed9c0f6f03629048c32" dependencies = [ "argh", "bottlerocket-template-helper", @@ -522,7 +523,7 @@ dependencies = [ [[package]] name = "bottlerocket-string-impls-for" version = "0.1.0" -source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.4.0#28f3c66b979bc48d32120b4e82d2c81b5841d7aa" +source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.5.0#ae697ef73e494a789fc2bed9c0f6f03629048c32" dependencies = [ "serde", ] @@ -530,7 +531,7 @@ dependencies = [ [[package]] name = "bottlerocket-template-helper" version = "0.1.0" -source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.4.0#28f3c66b979bc48d32120b4e82d2c81b5841d7aa" +source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.5.0#ae697ef73e494a789fc2bed9c0f6f03629048c32" dependencies = [ "darling 0.20.8", "proc-macro2", @@ -1274,6 +1275,20 @@ dependencies = [ "migration-helpers", ] +[[package]] +name = "kubelet-device-plugins-metadata" +version = "0.1.0" +dependencies = [ + "migration-helpers", +] + +[[package]] +name = "kubelet-device-plugins-settings" +version = "0.1.0" +dependencies = [ + "migration-helpers", +] + [[package]] name = "lazy_static" version = "1.4.0" @@ -1472,6 +1487,20 @@ dependencies = [ "libc", ] +[[package]] +name = "nvidia-container-runtime-metadata" +version = "0.1.0" +dependencies = [ + "migration-helpers", +] + +[[package]] +name = "nvidia-container-runtime-settings" +version = "0.1.0" +dependencies = [ + "migration-helpers", +] + [[package]] name = "object" version = "0.32.2" @@ -2199,7 +2228,7 @@ dependencies = [ [[package]] name = "settings-extension-autoscaling" version = "0.1.0" -source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.4.0#28f3c66b979bc48d32120b4e82d2c81b5841d7aa" +source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.5.0#ae697ef73e494a789fc2bed9c0f6f03629048c32" dependencies = [ "bottlerocket-model-derive", "bottlerocket-modeled-types", @@ -2212,7 +2241,7 @@ dependencies = [ [[package]] name = "settings-extension-aws" version = "0.1.0" -source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.4.0#28f3c66b979bc48d32120b4e82d2c81b5841d7aa" +source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.5.0#ae697ef73e494a789fc2bed9c0f6f03629048c32" dependencies = [ "bottlerocket-model-derive", "bottlerocket-modeled-types", @@ -2225,7 +2254,7 @@ dependencies = [ [[package]] name = "settings-extension-bootstrap-commands" version = "0.1.0" -source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.4.0#28f3c66b979bc48d32120b4e82d2c81b5841d7aa" +source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.5.0#ae697ef73e494a789fc2bed9c0f6f03629048c32" dependencies = [ "bottlerocket-model-derive", "bottlerocket-modeled-types", @@ -2239,7 +2268,7 @@ dependencies = [ [[package]] name = "settings-extension-bootstrap-containers" version = "0.1.0" -source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.4.0#28f3c66b979bc48d32120b4e82d2c81b5841d7aa" +source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.5.0#ae697ef73e494a789fc2bed9c0f6f03629048c32" dependencies = [ "bottlerocket-model-derive", "bottlerocket-modeled-types", @@ -2252,7 +2281,7 @@ dependencies = [ [[package]] name = "settings-extension-cloudformation" version = "0.1.0" -source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.4.0#28f3c66b979bc48d32120b4e82d2c81b5841d7aa" +source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.5.0#ae697ef73e494a789fc2bed9c0f6f03629048c32" dependencies = [ "bottlerocket-model-derive", "bottlerocket-modeled-types", @@ -2265,7 +2294,7 @@ dependencies = [ [[package]] name = "settings-extension-container-registry" version = "0.1.0" -source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.4.0#28f3c66b979bc48d32120b4e82d2c81b5841d7aa" +source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.5.0#ae697ef73e494a789fc2bed9c0f6f03629048c32" dependencies = [ "bottlerocket-model-derive", "bottlerocket-modeled-types", @@ -2278,7 +2307,7 @@ dependencies = [ [[package]] name = "settings-extension-container-runtime" version = "0.1.0" -source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.4.0#28f3c66b979bc48d32120b4e82d2c81b5841d7aa" +source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.5.0#ae697ef73e494a789fc2bed9c0f6f03629048c32" dependencies = [ "bottlerocket-model-derive", "bottlerocket-modeled-types", @@ -2291,7 +2320,7 @@ dependencies = [ [[package]] name = "settings-extension-dns" version = "0.1.0" -source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.4.0#28f3c66b979bc48d32120b4e82d2c81b5841d7aa" +source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.5.0#ae697ef73e494a789fc2bed9c0f6f03629048c32" dependencies = [ "bottlerocket-model-derive", "bottlerocket-modeled-types", @@ -2304,7 +2333,7 @@ dependencies = [ [[package]] name = "settings-extension-ecs" version = "0.1.0" -source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.4.0#28f3c66b979bc48d32120b4e82d2c81b5841d7aa" +source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.5.0#ae697ef73e494a789fc2bed9c0f6f03629048c32" dependencies = [ "bottlerocket-model-derive", "bottlerocket-modeled-types", @@ -2317,7 +2346,7 @@ dependencies = [ [[package]] name = "settings-extension-host-containers" version = "0.1.0" -source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.4.0#28f3c66b979bc48d32120b4e82d2c81b5841d7aa" +source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.5.0#ae697ef73e494a789fc2bed9c0f6f03629048c32" dependencies = [ "bottlerocket-model-derive", "bottlerocket-modeled-types", @@ -2330,7 +2359,20 @@ dependencies = [ [[package]] name = "settings-extension-kernel" version = "0.1.0" -source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.4.0#28f3c66b979bc48d32120b4e82d2c81b5841d7aa" +source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.5.0#ae697ef73e494a789fc2bed9c0f6f03629048c32" +dependencies = [ + "bottlerocket-model-derive", + "bottlerocket-modeled-types", + "bottlerocket-settings-sdk", + "env_logger", + "serde", + "serde_json", +] + +[[package]] +name = "settings-extension-kubelet-device-plugins" +version = "0.1.0" +source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.5.0#ae697ef73e494a789fc2bed9c0f6f03629048c32" dependencies = [ "bottlerocket-model-derive", "bottlerocket-modeled-types", @@ -2343,7 +2385,7 @@ dependencies = [ [[package]] name = "settings-extension-kubernetes" version = "0.1.0" -source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.4.0#28f3c66b979bc48d32120b4e82d2c81b5841d7aa" +source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.5.0#ae697ef73e494a789fc2bed9c0f6f03629048c32" dependencies = [ "bottlerocket-model-derive", "bottlerocket-modeled-types", @@ -2357,7 +2399,7 @@ dependencies = [ [[package]] name = "settings-extension-metrics" version = "0.1.0" -source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.4.0#28f3c66b979bc48d32120b4e82d2c81b5841d7aa" +source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.5.0#ae697ef73e494a789fc2bed9c0f6f03629048c32" dependencies = [ "bottlerocket-model-derive", "bottlerocket-modeled-types", @@ -2370,7 +2412,7 @@ dependencies = [ [[package]] name = "settings-extension-motd" version = "0.1.0" -source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.4.0#28f3c66b979bc48d32120b4e82d2c81b5841d7aa" +source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.5.0#ae697ef73e494a789fc2bed9c0f6f03629048c32" dependencies = [ "bottlerocket-settings-sdk", "bottlerocket-string-impls-for", @@ -2382,7 +2424,7 @@ dependencies = [ [[package]] name = "settings-extension-network" version = "0.1.0" -source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.4.0#28f3c66b979bc48d32120b4e82d2c81b5841d7aa" +source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.5.0#ae697ef73e494a789fc2bed9c0f6f03629048c32" dependencies = [ "bottlerocket-model-derive", "bottlerocket-modeled-types", @@ -2395,7 +2437,7 @@ dependencies = [ [[package]] name = "settings-extension-ntp" version = "0.1.0" -source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.4.0#28f3c66b979bc48d32120b4e82d2c81b5841d7aa" +source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.5.0#ae697ef73e494a789fc2bed9c0f6f03629048c32" dependencies = [ "bottlerocket-model-derive", "bottlerocket-modeled-types", @@ -2408,7 +2450,7 @@ dependencies = [ [[package]] name = "settings-extension-nvidia-container-runtime" version = "0.1.0" -source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.4.0#28f3c66b979bc48d32120b4e82d2c81b5841d7aa" +source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.5.0#ae697ef73e494a789fc2bed9c0f6f03629048c32" dependencies = [ "bottlerocket-model-derive", "bottlerocket-modeled-types", @@ -2421,7 +2463,7 @@ dependencies = [ [[package]] name = "settings-extension-oci-defaults" version = "0.1.0" -source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.4.0#28f3c66b979bc48d32120b4e82d2c81b5841d7aa" +source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.5.0#ae697ef73e494a789fc2bed9c0f6f03629048c32" dependencies = [ "bottlerocket-model-derive", "bottlerocket-modeled-types", @@ -2435,7 +2477,7 @@ dependencies = [ [[package]] name = "settings-extension-oci-hooks" version = "0.1.0" -source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.4.0#28f3c66b979bc48d32120b4e82d2c81b5841d7aa" +source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.5.0#ae697ef73e494a789fc2bed9c0f6f03629048c32" dependencies = [ "bottlerocket-model-derive", "bottlerocket-modeled-types", @@ -2448,7 +2490,7 @@ dependencies = [ [[package]] name = "settings-extension-pki" version = "0.1.0" -source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.4.0#28f3c66b979bc48d32120b4e82d2c81b5841d7aa" +source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.5.0#ae697ef73e494a789fc2bed9c0f6f03629048c32" dependencies = [ "bottlerocket-model-derive", "bottlerocket-modeled-types", @@ -2461,7 +2503,7 @@ dependencies = [ [[package]] name = "settings-extension-updates" version = "0.1.0" -source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.4.0#28f3c66b979bc48d32120b4e82d2c81b5841d7aa" +source = "git+https://github.com/bottlerocket-os/bottlerocket-settings-sdk?tag=bottlerocket-settings-models-v0.5.0#ae697ef73e494a789fc2bed9c0f6f03629048c32" dependencies = [ "bottlerocket-model-derive", "bottlerocket-modeled-types", @@ -2516,6 +2558,17 @@ dependencies = [ "serde_json", ] +[[package]] +name = "settings-plugin-aws-k8s-nvidia" +version = "0.1.0" +dependencies = [ + "abi_stable", + "bottlerocket-settings-models", + "bottlerocket-settings-plugin", + "serde", + "serde_json", +] + [[package]] name = "settings-plugin-metal-dev" version = "0.1.0" diff --git a/sources/Cargo.toml b/sources/Cargo.toml index a21b54d95f8..546802fbb6a 100644 --- a/sources/Cargo.toml +++ b/sources/Cargo.toml @@ -51,11 +51,16 @@ members = [ "settings-migrations/v1.22.0/public-control-container-v0-7-15", "settings-migrations/v1.22.0/bootstrap-commands-settings", "settings-migrations/v1.22.0/bootstrap-commands-metadata", + "settings-migrations/v1.23.0/nvidia-container-runtime-metadata", + "settings-migrations/v1.23.0/nvidia-container-runtime-settings", + "settings-migrations/v1.23.0/kubelet-device-plugins-metadata", + "settings-migrations/v1.23.0/kubelet-device-plugins-settings", "settings-plugins/aws-dev", "settings-plugins/aws-ecs-1", "settings-plugins/aws-ecs-2", "settings-plugins/aws-k8s", + "settings-plugins/aws-k8s-nvidia", "settings-plugins/metal-dev", "settings-plugins/metal-k8s", "settings-plugins/vmware-dev", @@ -124,13 +129,13 @@ version = "0.1.0" [workspace.dependencies.bottlerocket-modeled-types] git = "https://github.com/bottlerocket-os/bottlerocket-settings-sdk" -tag = "bottlerocket-settings-models-v0.4.0" -version = "0.4.0" +tag = "bottlerocket-settings-models-v0.5.0" +version = "0.5.0" [workspace.dependencies.bottlerocket-settings-models] git = "https://github.com/bottlerocket-os/bottlerocket-settings-sdk" -tag = "bottlerocket-settings-models-v0.4.0" -version = "0.4.0" +tag = "bottlerocket-settings-models-v0.5.0" +version = "0.5.0" [workspace.dependencies.bottlerocket-settings-plugin] git = "https://github.com/bottlerocket-os/bottlerocket-settings-sdk" @@ -139,7 +144,7 @@ version = "0.1.0" [workspace.dependencies.settings-extension-oci-defaults] git = "https://github.com/bottlerocket-os/bottlerocket-settings-sdk" -tag = "bottlerocket-settings-models-v0.4.0" +tag = "bottlerocket-settings-models-v0.5.0" version = "0.1.0" [profile.release] diff --git a/sources/settings-defaults/aws-k8s-1.24-nvidia/defaults.d/80-nvidia-k8s-container-toolkit.toml b/sources/settings-defaults/aws-k8s-1.24-nvidia/defaults.d/80-nvidia-k8s-container-toolkit.toml new file mode 120000 index 00000000000..0b3f42928f1 --- /dev/null +++ b/sources/settings-defaults/aws-k8s-1.24-nvidia/defaults.d/80-nvidia-k8s-container-toolkit.toml @@ -0,0 +1 @@ +../../../shared-defaults/nvidia-k8s-container-toolkit.toml \ No newline at end of file diff --git a/sources/settings-defaults/aws-k8s-1.24-nvidia/defaults.d/81-nvidia-k8s-device-plugin.toml b/sources/settings-defaults/aws-k8s-1.24-nvidia/defaults.d/81-nvidia-k8s-device-plugin.toml new file mode 120000 index 00000000000..741cfa58cca --- /dev/null +++ b/sources/settings-defaults/aws-k8s-1.24-nvidia/defaults.d/81-nvidia-k8s-device-plugin.toml @@ -0,0 +1 @@ +../../../shared-defaults/nvidia-k8s-device-plugin.toml \ No newline at end of file diff --git a/sources/settings-defaults/aws-k8s-1.25-nvidia/defaults.d/80-nvidia-k8s-container-toolkit.toml b/sources/settings-defaults/aws-k8s-1.25-nvidia/defaults.d/80-nvidia-k8s-container-toolkit.toml new file mode 120000 index 00000000000..0b3f42928f1 --- /dev/null +++ b/sources/settings-defaults/aws-k8s-1.25-nvidia/defaults.d/80-nvidia-k8s-container-toolkit.toml @@ -0,0 +1 @@ +../../../shared-defaults/nvidia-k8s-container-toolkit.toml \ No newline at end of file diff --git a/sources/settings-defaults/aws-k8s-1.25-nvidia/defaults.d/81-nvidia-k8s-device-plugin.toml b/sources/settings-defaults/aws-k8s-1.25-nvidia/defaults.d/81-nvidia-k8s-device-plugin.toml new file mode 120000 index 00000000000..741cfa58cca --- /dev/null +++ b/sources/settings-defaults/aws-k8s-1.25-nvidia/defaults.d/81-nvidia-k8s-device-plugin.toml @@ -0,0 +1 @@ +../../../shared-defaults/nvidia-k8s-device-plugin.toml \ No newline at end of file diff --git a/sources/settings-defaults/aws-k8s-1.26-nvidia/defaults.d/80-nvidia-k8s-container-toolkit.toml b/sources/settings-defaults/aws-k8s-1.26-nvidia/defaults.d/80-nvidia-k8s-container-toolkit.toml new file mode 120000 index 00000000000..0b3f42928f1 --- /dev/null +++ b/sources/settings-defaults/aws-k8s-1.26-nvidia/defaults.d/80-nvidia-k8s-container-toolkit.toml @@ -0,0 +1 @@ +../../../shared-defaults/nvidia-k8s-container-toolkit.toml \ No newline at end of file diff --git a/sources/settings-defaults/aws-k8s-1.26-nvidia/defaults.d/81-nvidia-k8s-device-plugin.toml b/sources/settings-defaults/aws-k8s-1.26-nvidia/defaults.d/81-nvidia-k8s-device-plugin.toml new file mode 120000 index 00000000000..741cfa58cca --- /dev/null +++ b/sources/settings-defaults/aws-k8s-1.26-nvidia/defaults.d/81-nvidia-k8s-device-plugin.toml @@ -0,0 +1 @@ +../../../shared-defaults/nvidia-k8s-device-plugin.toml \ No newline at end of file diff --git a/sources/settings-defaults/aws-k8s-1.31-nvidia/defaults.d/80-nvidia-k8s-container-toolkit.toml b/sources/settings-defaults/aws-k8s-1.31-nvidia/defaults.d/80-nvidia-k8s-container-toolkit.toml new file mode 120000 index 00000000000..0b3f42928f1 --- /dev/null +++ b/sources/settings-defaults/aws-k8s-1.31-nvidia/defaults.d/80-nvidia-k8s-container-toolkit.toml @@ -0,0 +1 @@ +../../../shared-defaults/nvidia-k8s-container-toolkit.toml \ No newline at end of file diff --git a/sources/settings-defaults/aws-k8s-1.31-nvidia/defaults.d/81-nvidia-k8s-device-plugin.toml b/sources/settings-defaults/aws-k8s-1.31-nvidia/defaults.d/81-nvidia-k8s-device-plugin.toml new file mode 120000 index 00000000000..741cfa58cca --- /dev/null +++ b/sources/settings-defaults/aws-k8s-1.31-nvidia/defaults.d/81-nvidia-k8s-device-plugin.toml @@ -0,0 +1 @@ +../../../shared-defaults/nvidia-k8s-device-plugin.toml \ No newline at end of file diff --git a/sources/settings-migrations/v1.23.0/kubelet-device-plugins-metadata/Cargo.toml b/sources/settings-migrations/v1.23.0/kubelet-device-plugins-metadata/Cargo.toml new file mode 100644 index 00000000000..71f02375c60 --- /dev/null +++ b/sources/settings-migrations/v1.23.0/kubelet-device-plugins-metadata/Cargo.toml @@ -0,0 +1,15 @@ +[package] +name = "kubelet-device-plugins-metadata" +version = "0.1.0" +authors = ["Monirul Islam "] +license = "Apache-2.0 OR MIT" +edition = "2021" +publish = false +# Don't rebuild crate just because of changes to README. +exclude = ["README.md"] + + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +migration-helpers.workspace = true diff --git a/sources/settings-migrations/v1.23.0/kubelet-device-plugins-metadata/src/main.rs b/sources/settings-migrations/v1.23.0/kubelet-device-plugins-metadata/src/main.rs new file mode 100644 index 00000000000..aac132f93e8 --- /dev/null +++ b/sources/settings-migrations/v1.23.0/kubelet-device-plugins-metadata/src/main.rs @@ -0,0 +1,21 @@ +use migration_helpers::common_migrations::{AddMetadataMigration, SettingMetadata}; +use migration_helpers::{migrate, Result}; +use std::process; + +/// We added a new setting for configuring the NVIDIA k8s device plugin. +fn run() -> Result<()> { + migrate(AddMetadataMigration(&[SettingMetadata { + metadata: &["affected-services"], + setting: "settings.kubelet-device-plugins", + }])) +} + +// Returning a Result from main makes it print a Debug representation of the error, but with Snafu +// we have nice Display representations of the error, so we wrap "main" (run) and print any error. +// https://github.com/shepmaster/snafu/issues/110 +fn main() { + if let Err(e) = run() { + eprintln!("{}", e); + process::exit(1); + } +} diff --git a/sources/settings-migrations/v1.23.0/kubelet-device-plugins-settings/Cargo.toml b/sources/settings-migrations/v1.23.0/kubelet-device-plugins-settings/Cargo.toml new file mode 100644 index 00000000000..16b42d94a34 --- /dev/null +++ b/sources/settings-migrations/v1.23.0/kubelet-device-plugins-settings/Cargo.toml @@ -0,0 +1,15 @@ +[package] +name = "kubelet-device-plugins-settings" +version = "0.1.0" +authors = ["Monirul Islam "] +license = "Apache-2.0 OR MIT" +edition = "2021" +publish = false +# Don't rebuild crate just because of changes to README. +exclude = ["README.md"] + + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +migration-helpers.workspace = true diff --git a/sources/settings-migrations/v1.23.0/kubelet-device-plugins-settings/src/main.rs b/sources/settings-migrations/v1.23.0/kubelet-device-plugins-settings/src/main.rs new file mode 100644 index 00000000000..7780006fb6f --- /dev/null +++ b/sources/settings-migrations/v1.23.0/kubelet-device-plugins-settings/src/main.rs @@ -0,0 +1,23 @@ +use migration_helpers::common_migrations::AddPrefixesMigration; +use migration_helpers::{migrate, Result}; +use std::process; + +/// We added a new setting for configuring the NVIDIA k8s device plugin. +fn run() -> Result<()> { + migrate(AddPrefixesMigration(vec![ + "settings.kubelet-device-plugins", + "services.nvidia-k8s-device-plugin", + "configuration-files.nvidia-k8s-device-plugin-conf", + "configuration-files.nvidia-k8s-device-plugin-exec-start-conf", + ])) +} + +// Returning a Result from main makes it print a Debug representation of the error, but with Snafu +// we have nice Display representations of the error, so we wrap "main" (run) and print any error. +// https://github.com/shepmaster/snafu/issues/110 +fn main() { + if let Err(e) = run() { + eprintln!("{}", e); + process::exit(1); + } +} diff --git a/sources/settings-migrations/v1.23.0/nvidia-container-runtime-metadata/Cargo.toml b/sources/settings-migrations/v1.23.0/nvidia-container-runtime-metadata/Cargo.toml new file mode 100644 index 00000000000..30faa64ca4a --- /dev/null +++ b/sources/settings-migrations/v1.23.0/nvidia-container-runtime-metadata/Cargo.toml @@ -0,0 +1,15 @@ +[package] +name = "nvidia-container-runtime-metadata" +version = "0.1.0" +authors = ["Monirul Islam "] +license = "Apache-2.0 OR MIT" +edition = "2021" +publish = false +# Don't rebuild crate just because of changes to README. +exclude = ["README.md"] + + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +migration-helpers.workspace = true diff --git a/sources/settings-migrations/v1.23.0/nvidia-container-runtime-metadata/src/main.rs b/sources/settings-migrations/v1.23.0/nvidia-container-runtime-metadata/src/main.rs new file mode 100644 index 00000000000..9e25b90d572 --- /dev/null +++ b/sources/settings-migrations/v1.23.0/nvidia-container-runtime-metadata/src/main.rs @@ -0,0 +1,21 @@ +use migration_helpers::common_migrations::{AddMetadataMigration, SettingMetadata}; +use migration_helpers::{migrate, Result}; +use std::process; + +/// We added a new setting for configuring container runtime (containerd) settings only for NVIDIA k8s variants. +fn run() -> Result<()> { + migrate(AddMetadataMigration(&[SettingMetadata { + metadata: &["affected-services"], + setting: "settings.nvidia-container-runtime", + }])) +} + +// Returning a Result from main makes it print a Debug representation of the error, but with Snafu +// we have nice Display representations of the error, so we wrap "main" (run) and print any error. +// https://github.com/shepmaster/snafu/issues/110 +fn main() { + if let Err(e) = run() { + eprintln!("{}", e); + process::exit(1); + } +} diff --git a/sources/settings-migrations/v1.23.0/nvidia-container-runtime-settings/Cargo.toml b/sources/settings-migrations/v1.23.0/nvidia-container-runtime-settings/Cargo.toml new file mode 100644 index 00000000000..e57aea2f8ee --- /dev/null +++ b/sources/settings-migrations/v1.23.0/nvidia-container-runtime-settings/Cargo.toml @@ -0,0 +1,15 @@ +[package] +name = "nvidia-container-runtime-settings" +version = "0.1.0" +authors = ["Monirul Islam "] +license = "Apache-2.0 OR MIT" +edition = "2021" +publish = false +# Don't rebuild crate just because of changes to README. +exclude = ["README.md"] + + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +migration-helpers.workspace = true diff --git a/sources/settings-migrations/v1.23.0/nvidia-container-runtime-settings/src/main.rs b/sources/settings-migrations/v1.23.0/nvidia-container-runtime-settings/src/main.rs new file mode 100644 index 00000000000..27122d646f7 --- /dev/null +++ b/sources/settings-migrations/v1.23.0/nvidia-container-runtime-settings/src/main.rs @@ -0,0 +1,22 @@ +use migration_helpers::common_migrations::AddPrefixesMigration; +use migration_helpers::{migrate, Result}; +use std::process; + +/// We added a new setting for configuring container runtime (containerd) settings only for NVIDIA k8s variants. +fn run() -> Result<()> { + migrate(AddPrefixesMigration(vec![ + "settings.nvidia-container-runtime", + "services.nvidia-container-toolkit", + "configuration-files.nvidia-container-toolkit", + ])) +} + +// Returning a Result from main makes it print a Debug representation of the error, but with Snafu +// we have nice Display representations of the error, so we wrap "main" (run) and print any error. +// https://github.com/shepmaster/snafu/issues/110 +fn main() { + if let Err(e) = run() { + eprintln!("{}", e); + process::exit(1); + } +} diff --git a/sources/settings-plugins/aws-k8s-nvidia/Cargo.toml b/sources/settings-plugins/aws-k8s-nvidia/Cargo.toml new file mode 100644 index 00000000000..b7f1bca4d34 --- /dev/null +++ b/sources/settings-plugins/aws-k8s-nvidia/Cargo.toml @@ -0,0 +1,19 @@ +[package] +name = "settings-plugin-aws-k8s-nvidia" +version = "0.1.0" +edition = "2021" +license = "Apache-2.0 OR MIT" +publish = false + +[lib] +crate-type = ["cdylib"] +name = "settings_aws_k8s_nvidia" + +[dependencies] +abi_stable.workspace = true +serde.workspace = true +serde_json.workspace = true + +# settings plugins +bottlerocket-settings-plugin = { workspace = true } +bottlerocket-settings-models = { workspace = true } diff --git a/sources/settings-plugins/aws-k8s-nvidia/src/lib.rs b/sources/settings-plugins/aws-k8s-nvidia/src/lib.rs new file mode 100644 index 00000000000..8352585fbe9 --- /dev/null +++ b/sources/settings-plugins/aws-k8s-nvidia/src/lib.rs @@ -0,0 +1,29 @@ +use bottlerocket_settings_models::model_derive::model; +use bottlerocket_settings_plugin::SettingsPlugin; + +#[derive(SettingsPlugin)] +#[model(rename = "settings", impl_default = true)] +struct AwsK8sSettings { + motd: bottlerocket_settings_models::MotdV1, + kubernetes: bottlerocket_settings_models::KubernetesSettingsV1, + updates: bottlerocket_settings_models::UpdatesSettingsV1, + host_containers: bottlerocket_settings_models::HostContainersSettingsV1, + bootstrap_commands: bottlerocket_settings_models::BootstrapCommandsSettingsV1, + bootstrap_containers: bottlerocket_settings_models::BootstrapContainersSettingsV1, + ntp: bottlerocket_settings_models::NtpSettingsV1, + network: bottlerocket_settings_models::NetworkSettingsV1, + kernel: bottlerocket_settings_models::KernelSettingsV1, + boot: bottlerocket_settings_models::BootSettingsV1, + aws: bottlerocket_settings_models::AwsSettingsV1, + metrics: bottlerocket_settings_models::MetricsSettingsV1, + pki: bottlerocket_settings_models::PkiSettingsV1, + container_registry: bottlerocket_settings_models::RegistrySettingsV1, + oci_defaults: bottlerocket_settings_models::OciDefaultsV1, + oci_hooks: bottlerocket_settings_models::OciHooksSettingsV1, + cloudformation: bottlerocket_settings_models::CloudFormationSettingsV1, + dns: bottlerocket_settings_models::DnsSettingsV1, + container_runtime: bottlerocket_settings_models::ContainerRuntimeSettingsV1, + autoscaling: bottlerocket_settings_models::AutoScalingSettingsV1, + nvidia_container_runtime: bottlerocket_settings_models::NvidiaContainerRuntimeSettingsV1, + kubelet_device_plugins: bottlerocket_settings_models::KubeletDevicePluginsV1, +} diff --git a/sources/shared-defaults/nvidia-k8s-container-toolkit.toml b/sources/shared-defaults/nvidia-k8s-container-toolkit.toml new file mode 100644 index 00000000000..9f7584398fc --- /dev/null +++ b/sources/shared-defaults/nvidia-k8s-container-toolkit.toml @@ -0,0 +1,14 @@ +[settings.nvidia-container-runtime] +visible-devices-as-volume-mounts = true +visible-devices-envvar-when-unprivileged = false + +[metadata.settings.nvidia-container-runtime] +affected-services = ["nvidia-container-toolkit"] + +[services.nvidia-container-toolkit] +configuration-files = ["nvidia-container-toolkit"] +restart-commands = [] + +[configuration-files.nvidia-container-toolkit] +path = "/etc/nvidia-container-runtime/config.toml" +template-path = "/usr/share/templates/nvidia-container-runtime/nvidia-container-toolkit-config-k8s" diff --git a/sources/shared-defaults/nvidia-k8s-device-plugin.toml b/sources/shared-defaults/nvidia-k8s-device-plugin.toml new file mode 100644 index 00000000000..8f488488c75 --- /dev/null +++ b/sources/shared-defaults/nvidia-k8s-device-plugin.toml @@ -0,0 +1,23 @@ +# nvidia device plugin service +[services.nvidia-k8s-device-plugin] +restart-commands = ["/bin/systemctl try-reload-or-restart nvidia-k8s-device-plugin.service"] +configuration-files = [ + "nvidia-k8s-device-plugin-conf", + "nvidia-k8s-device-plugin-exec-start-conf", +] + +[configuration-files.nvidia-k8s-device-plugin-conf] +path = "/etc/nvidia-k8s-device-plugin/settings.yaml" +template-path = "/usr/share/templates/nvidia-k8s-device-plugin-conf" + +[configuration-files.nvidia-k8s-device-plugin-exec-start-conf] +path = "/etc/systemd/system/nvidia-k8s-device-plugin.service.d/exec-start.conf" +template-path = "/usr/share/templates/nvidia-k8s-device-plugin-exec-start-conf" + +[metadata.settings.kubelet-device-plugins.nvidia] +affected-services = ["nvidia-k8s-device-plugin"] + +[settings.kubelet-device-plugins.nvidia] +pass-device-specs = true +device-id-strategy="index" +device-list-strategy="volume-mounts"