Skip to content

Commit

Permalink
Merge pull request #3828 from jmt-lab/jmt/ootb/pluto
Browse files Browse the repository at this point in the history
Jmt/ootb/pluto
  • Loading branch information
jmt-lab committed May 23, 2024
2 parents fffc133 + 5ac2e30 commit 3cddd68
Show file tree
Hide file tree
Showing 17 changed files with 415 additions and 292 deletions.
4 changes: 3 additions & 1 deletion Release.toml
Original file line number Diff line number Diff line change
Expand Up @@ -312,4 +312,6 @@ version = "1.21.0"
"migrate_v1.20.0_aws-control-container-v0-7-12.lz4",
"migrate_v1.20.0_public-control-container-v0-7-12.lz4",
]
"(1.20.0, 1.21.0)" = []
"(1.20.0, 1.21.0)" = [
"migrate_v1.21.0_pluto-remove-generators-v0-1-0.lz4",
]
72 changes: 25 additions & 47 deletions packages/os/os.spec
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ Source117: cfsignal.service
Source119: reboot-if-required.service
Source120: warm-pool-wait.service
Source122: has-boot-ever-succeeded.service
Source123: pluto.service

# 2xx sources: tmpfilesd configs
Source200: migration-tmpfiles.conf
Expand Down Expand Up @@ -96,18 +97,13 @@ Requires: %{_cross_os}thar-be-settings
Requires: %{_cross_os}thar-be-updates
Requires: %{_cross_os}updog

%if %{with aws_k8s_family}
Requires: %{_cross_os}pluto
%endif
Requires: (%{_cross_os}pluto if %{_cross_os}variant-family(aws-k8s))
Requires: (%{_cross_os}shibaken if %{_cross_os}variant-platform(aws))
Requires: (%{_cross_os}cfsignal if %{_cross_os}variant-platform(aws))

%if %{with aws_platform}
Requires: %{_cross_os}shibaken
Requires: %{_cross_os}cfsignal
%endif
Requires: (%{_cross_os}warm-pool-wait if %{_cross_os}variant-family(aws-k8s))

%if %{with nvidia_flavor}
Requires: %{_cross_os}driverdog
%endif
Requires: (%{_cross_os}driverdog if %{_cross_os}variant-flavor(nvidia))

%description
%{summary}.
Expand Down Expand Up @@ -214,38 +210,38 @@ Summary: Bottlerocket certificates handler
%description -n %{_cross_os}certdog
%{summary}.

%if %{with aws_k8s_family}
%package -n %{_cross_os}pluto
Summary: Dynamic setting generator for kubernetes
%description -n %{_cross_os}pluto
%{summary}.
%endif

%if %{with aws_platform}
%package -n %{_cross_os}shibaken
Summary: Run tasks reliant on IMDS
%description -n %{_cross_os}shibaken
%{summary}.

%package -n %{_cross_os}warm-pool-wait
Summary: Warm pool wait for aws k8s
Requires: %{_cross_os}shibaken
%description -n %{_cross_os}warm-pool-wait
%{summary}.

%package -n %{_cross_os}cfsignal
Summary: Bottlerocket CloudFormation Stack signaler
%description -n %{_cross_os}cfsignal
%{summary}.
%endif

%package -n %{_cross_os}shimpei
Summary: OCI-compatible shim around oci-add-hooks
Requires: %{_cross_os}oci-add-hooks
%description -n %{_cross_os}shimpei
%{summary}.

%if %{with nvidia_flavor}
%package -n %{_cross_os}driverdog
Summary: Tool to load additional drivers
Requires: %{_cross_os}binutils
%description -n %{_cross_os}driverdog
%{summary}.
%endif

%package -n %{_cross_os}bootstrap-containers
Summary: Manages bootstrap-containers
Expand Down Expand Up @@ -319,7 +315,6 @@ exec 1>"${static_output}" 2>&1
static_pid="$!"
exec 1>&3 2>&4

%if %{with aws_platform} || %{with aws_k8s_family}
# The AWS SDK crates are extremely slow to build with only one codegen unit.
# Pessimize the release build for just the crates that depend on them.
# Store the output so we can print it after waiting for the backgrounded job.
Expand All @@ -333,13 +328,12 @@ CARGO_TARGET_DIR="${HOME}/.cache/.aws-sdk" \
%{__cargo_cross_opts} \
--release \
--manifest-path %{_builddir}/sources/Cargo.toml \
%{?with_aws_platform: -p cfsignal} \
%{?with_aws_k8s_family: -p pluto} \
-p pluto \
-p cfsignal \
&
# Save the PID so we can wait for it later.
aws_sdk_pid="$!"
exec 1>&3 2>&4
%endif

# Run non-static builds in the foreground.
echo "** Output from non-static builds:"
Expand All @@ -366,8 +360,8 @@ echo "** Output from non-static builds:"
-p shimpei \
-p bloodhound \
-p xfscli \
%{?with_aws_platform: -p shibaken} \
%{?with_nvidia_flavor: -p driverdog} \
-p shibaken \
-p driverdog \
%{nil}

# Wait for static builds from the background, if they're not already done.
Expand All @@ -378,15 +372,13 @@ if [ "${static_rc}" -ne 0 ]; then
exit "${static_rc}"
fi

%if %{with aws_platform} || %{with aws_k8s_family}
# Wait for AWS SDK builds from the background, if they're not already done.
set +e; wait "${aws_sdk_pid}"; aws_sdk_rc="${?}"; set -e
echo -e "\n** Output from AWS SDK builds:"
cat "${aws_sdk_output}"
if [ "${aws_sdk_rc}" -ne 0 ]; then
exit "${aws_sdk_rc}"
fi
%endif

%install
install -d %{buildroot}%{_cross_bindir}
Expand All @@ -402,20 +394,18 @@ for p in \
bottlerocket-cis-checks \
bottlerocket-fips-checks \
kubernetes-cis-checks \
%{?with_aws_platform: shibaken} \
%{?with_nvidia_flavor: driverdog} \
shibaken \
driverdog \
; do
install -p -m 0755 ${HOME}/.cache/%{__cargo_target}/release/${p} %{buildroot}%{_cross_bindir}
done

%if %{with aws_platform} || %{with aws_k8s_family}
for p in \
%{?with_aws_platform: cfsignal} \
%{?with_aws_k8s_family: pluto} \
pluto \
cfsignal \
; do
install -p -m 0755 ${HOME}/.cache/.aws-sdk/%{__cargo_target}/release/${p} %{buildroot}%{_cross_bindir}
done
%endif

install -d %{buildroot}%{_cross_sbindir}
for p in \
Expand Down Expand Up @@ -488,10 +478,8 @@ install -d %{buildroot}%{_cross_datadir}/bottlerocket
install -d %{buildroot}%{_cross_sysusersdir}
install -p -m 0644 %{S:2} %{buildroot}%{_cross_sysusersdir}/api.conf

%if %{with aws_k8s_family}
install -d %{buildroot}%{_cross_datadir}/eks
install -p -m 0644 %{S:3} %{buildroot}%{_cross_datadir}/eks
%endif

install -d %{buildroot}%{_cross_datadir}/updog
install -p -m 0644 %{_cross_repo_root_json} %{buildroot}%{_cross_datadir}/updog
Expand All @@ -504,26 +492,21 @@ install -d %{buildroot}%{_cross_unitdir}
install -p -m 0644 \
%{S:100} %{S:102} %{S:103} %{S:105} \
%{S:106} %{S:107} %{S:110} %{S:111} %{S:112} \
%{S:113} %{S:114} %{S:119} %{S:122} \
%{S:113} %{S:114} %{S:119} %{S:122} %{S:123} \
%{buildroot}%{_cross_unitdir}

%if %{with nvidia_flavor}
sed -e 's|PREFIX|%{_cross_prefix}|g' %{S:115} > link-kernel-modules.service
sed -e 's|PREFIX|%{_cross_prefix}|g' %{S:116} > load-kernel-modules.service
install -p -m 0644 \
link-kernel-modules.service \
load-kernel-modules.service \
%{buildroot}%{_cross_unitdir}
%endif

%if %{with aws_platform}
%if %{with aws_k8s_family}
install -p -m 0644 %{S:10} %{buildroot}%{_cross_templatedir}
install -p -m 0644 %{S:120} %{buildroot}%{_cross_unitdir}
%endif

install -p -m 0644 %{S:9} %{buildroot}%{_cross_templatedir}
install -p -m 0644 %{S:117} %{buildroot}%{_cross_unitdir}
%endif

install -d %{buildroot}%{_cross_tmpfilesdir}
install -p -m 0644 %{S:200} %{buildroot}%{_cross_tmpfilesdir}/migration.conf
Expand Down Expand Up @@ -633,35 +616,30 @@ install -p -m 0644 %{S:400} %{S:401} %{S:402} %{buildroot}%{_cross_licensedir}
%files -n %{_cross_os}logdog
%{_cross_bindir}/logdog

%if %{with aws_platform}
%files -n %{_cross_os}shibaken
%{_cross_bindir}/shibaken
%dir %{_cross_templatedir}
%if %{with aws_k8s_family}

%files -n %{_cross_os}warm-pool-wait
%{_cross_templatedir}/warm-pool-wait-toml
%{_cross_unitdir}/warm-pool-wait.service
%endif

%files -n %{_cross_os}cfsignal
%{_cross_bindir}/cfsignal
%dir %{_cross_templatedir}
%{_cross_templatedir}/cfsignal-toml
%{_cross_unitdir}/cfsignal.service
%endif

%if %{with nvidia_flavor}
%files -n %{_cross_os}driverdog
%{_cross_bindir}/driverdog
%{_cross_unitdir}/link-kernel-modules.service
%{_cross_unitdir}/load-kernel-modules.service
%endif

%if %{with aws_k8s_family}
%files -n %{_cross_os}pluto
%{_cross_bindir}/pluto
%{_cross_unitdir}/pluto.service
%dir %{_cross_datadir}/eks
%{_cross_datadir}/eks/eni-max-pods
%endif

%files -n %{_cross_os}shimpei
%{_cross_bindir}/shimpei
Expand Down
20 changes: 20 additions & 0 deletions packages/os/pluto.service
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
[Unit]
Description=Generate additional settings for Kubernetes
After=network-online.target apiserver.service sundog.service
Requires=sundog.service
# We don't want to restart the unit if the network goes offline or apiserver restarts
Wants=network-online.target apiserver.service
# Block manual interactions with this service, since it could leave the system in additional
# unexpected state
RefuseManualStart=true
RefuseManualStop=true

[Service]
Type=oneshot
ExecStartPre=/usr/bin/settings-committer
ExecStart=/usr/bin/pluto
RemainAfterExit=true
StandardError=journal+console

[Install]
RequiredBy=preconfigured.target
14 changes: 10 additions & 4 deletions sources/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 5 additions & 4 deletions sources/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,10 @@ members = [
"api/migration/migrations/v1.19.3/public-admin-container-v0-11-6",
"api/migration/migrations/v1.19.3/aws-control-container-v0-7-10",
"api/migration/migrations/v1.19.3/public-control-container-v0-7-10",
"api/migration/migrations/v1.19.5/aws-control-container-v0-7-11",
"api/migration/migrations/v1.19.5/public-control-container-v0-7-11",
"api/migration/migrations/v1.19.5/aws-admin-container-v0-11-7",
"api/migration/migrations/v1.19.5/public-admin-container-v0-11-7",
"api/migration/migrations/v1.20.0/prairiedog-config-file-v0-1-0",
"api/migration/migrations/v1.20.0/prairiedog-services-cfg-v0-1-0",
"api/migration/migrations/v1.20.0/thar-be-updates-config-file-v0-1-0",
Expand All @@ -80,16 +84,13 @@ members = [
"api/migration/migrations/v1.20.0/add-ntp-default-options-v0-1-0",
"api/migration/migrations/v1.20.0/static-pods-add-prefix-v0-1-0",
"api/migration/migrations/v1.20.0/static-pods-services-cfg-v0-1-0",
"api/migration/migrations/v1.19.5/aws-control-container-v0-7-11",
"api/migration/migrations/v1.19.5/public-control-container-v0-7-11",
"api/migration/migrations/v1.19.5/aws-admin-container-v0-11-7",
"api/migration/migrations/v1.19.5/public-admin-container-v0-11-7",
"api/migration/migrations/v1.20.0/container-runtime-nvidia",
"api/migration/migrations/v1.20.0/container-runtime-metadata-nvidia",
"api/migration/migrations/v1.20.0/aws-admin-container-v0-11-8",
"api/migration/migrations/v1.20.0/public-admin-container-v0-11-8",
"api/migration/migrations/v1.20.0/aws-control-container-v0-7-12",
"api/migration/migrations/v1.20.0/public-control-container-v0-7-12",
"api/migration/migrations/v1.21.0/pluto-remove-generators-v0-1-0",

"bloodhound",

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
[package]
name = "pluto-remove-generators-v0-1-0"
version = "0.1.0"
authors = ["Jarrett Tierney <jmt@amazon.com>"]
license = "Apache-2.0 OR MIT"
edition = "2021"
publish = false
exclude = ["README.md"]

[dependencies]
migration-helpers = { path = "../../../migration-helpers", version = "0.1.0" }
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
use migration_helpers::common_migrations::{RemoveMetadataMigration, SettingMetadata};
use migration_helpers::{migrate, Result};
use std::process;
fn run() -> Result<()> {
migrate(RemoveMetadataMigration(&[
SettingMetadata {
setting: "settings.kubernetes.max-pods",
metadata: &["setting-generator"],
},
SettingMetadata {
setting: "settings.kubernetes.cluster-dns-ip",
metadata: &["setting-generator"],
},
SettingMetadata {
setting: "settings.kubernetes.node-ip",
metadata: &["setting-generator"],
},
SettingMetadata {
setting: "settings.kubernetes.provider-id",
metadata: &["setting-generator"],
},
SettingMetadata {
setting: "settings.kubernetes.hostname-override",
metadata: &["setting-generator"],
},
]))
}
fn main() {
if let Err(e) = run() {
eprintln!("{}", e);
process::exit(1);
}
}
Loading

0 comments on commit 3cddd68

Please sign in to comment.