library
turbot/aws_thrifty

Detect & correct EKS node groups without Graviton

Amazon EKS node groups that don't use Graviton processor may result in higher operational costs. This query trigger identifies non-Graviton node groups and either sends notifications or attempts predefined corrective actions.

Getting Started

By default, this trigger is disabled, but can be configured by setting the variables:

  • eks_node_groups_without_graviton_trigger_enabled should be set to true (default is false).
  • eks_node_groups_without_graviton_trigger_schedule should be set according to your desired running schedule.
  • eks_node_groups_without_graviton_default_action should be set to "notify" or any other desired action (e.g., "notify" for notifications or "delete_node_group" to delete the node group).

Then starting the server:

flowpipe server

or if you've set the variables in a .fpvars file:

flowpipe server --var-file=/path/to/your.fpvars

Query

with node_group_using_launch_template_image_id as (
select
g.arn as node_group_arn,
v.image_id as image_id
from
aws_eks_node_group as g
left join aws_ec2_launch_template_version as v on v.launch_template_id = g.launch_template ->> 'Id'
and v.version_number = (g.launch_template ->> 'Version') :: int
where
g.launch_template is not null
),
ami_architecture as (
select
node_group_arn,
architecture,
case
when s.platform_details = 'Linux/UNIX' then 'linux'
else platform_details
end as platform
from
node_group_using_launch_template_image_id as i
left join aws_ec2_ami_shared as s on s.image_id = i.image_id
where
architecture is not null
union
select
node_group_arn,
architecture,
case
when a.platform_details = 'Linux/UNIX' then 'linux'
else platform_details
end as platform
from
node_group_using_launch_template_image_id as i
left join aws_ec2_ami as a on a.image_id = i.image_id
where
architecture is not null
)
select
concat(
g.nodegroup_name,
' [',
g.region,
'/',
g.account_id,
']'
) as title,
g.cluster_name,
g.nodegroup_name,
g.region,
g._ctx ->> 'connection_name' as cred
from
aws_eks_node_group as g
left join ami_architecture as a on a.node_group_arn = g.arn
where
ami_type = 'CUSTOM%'
and a.architecture <> 'arm_64'
and a.platform = 'linux';

Schedule

15m