Skip to content

Commit

Permalink
Merge pull request aws-samples#18 from joshkurz/scalability
Browse files Browse the repository at this point in the history
feat(scalability): adding first scalability checks
  • Loading branch information
dorukozturk authored Feb 15, 2023
2 parents 04f533c + cec15e5 commit 8343559
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 1 deletion.
Empty file.
24 changes: 24 additions & 0 deletions hardeneks/cluster_wide/scalability/control_plane.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import re
from rich.panel import Panel
import kubernetes

from hardeneks import console
from ...resources import Resources


def check_EKS_version(resources: Resources):
client = kubernetes.client.VersionApi()
version = client.get_code()
minor = version.minor

if int(re.sub("[^0-9]", "", minor)) < 24:
console.print(
Panel(
f"[red]EKS Version Should be greater or equal too 1.24. Current Version == {version.major}.{version.minor}",
subtitle="[link=https://aws.github.io/aws-eks-best-practices/scalability/docs/control-plane/#use-eks-124-or-above]Click to see the guide[/link]",
)
)
console.print()
return False

return True
4 changes: 3 additions & 1 deletion hardeneks/config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,9 @@ rules:
- use_separate_iam_role_for_cluster_autoscaler
- employ_least_privileged_access_cluster_autoscaler_role
- use_managed_nodegroups
scalability:
control_plane:
- check_EKS_version
namespace_based:
security:
iam:
Expand Down Expand Up @@ -79,4 +82,3 @@ rules:
- schedule_replicas_across_nodes
- run_multiple_replicas
- avoid_running_singleton_pods

23 changes: 23 additions & 0 deletions tests/test_scalability_control_plane.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
from hardeneks.resources import Resources
from unittest.mock import patch

from hardeneks.cluster_wide.scalability.control_plane import check_EKS_version


class Version:
def __init__(self, minor):
self.major = 1
self.minor = minor


@patch("kubernetes.client.VersionApi.get_code")
def test_check_EKS_version(mocked_client):
namespaced_resources = Resources(
"some_region", "some_context", "some_cluster", []
)
mocked_client.return_value = Version("23+")
assert not check_EKS_version(namespaced_resources)
mocked_client.return_value = Version("24+")
assert check_EKS_version(namespaced_resources)
mocked_client.return_value = Version("24")
assert check_EKS_version(namespaced_resources)

0 comments on commit 8343559

Please sign in to comment.