Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ module "captain" {
node_pools = [
# {
# "kubernetes_version" : "1.30",
# "ami_release_version" : "1.30.8-20250116",
# "ami_release_version" : "1.30.8-20250123",
# "ami_type" : "AL2_x86_64",
# "instance_type" : "t3a.large",
# "name" : "glueops-platform-node-pool-1",
Expand All @@ -49,7 +49,7 @@ module "captain" {
# },
# {
# "kubernetes_version" : "1.30",
# "ami_release_version" : "1.30.8-20250116",
# "ami_release_version" : "1.30.8-20250123",
# "ami_type" : "AL2_x86_64",
# "instance_type" : "t3a.small",
# "name" : "glueops-platform-node-pool-argocd-app-controller-1",
Expand All @@ -71,7 +71,7 @@ module "captain" {
# },
# {
# "kubernetes_version" : "1.30",
# "ami_release_version" : "1.30.8-20250116",
# "ami_release_version" : "1.30.8-20250123",
# "ami_type" : "AL2_x86_64",
# "instance_type" : "t3a.medium",
# "name" : "clusterwide-node-pool-1",
Expand Down Expand Up @@ -200,7 +200,7 @@ No requirements.
| <a name="input_eks_version"></a> [eks\_version](#input\_eks\_version) | The version of EKS to deploy | `string` | `"1.30"` | no |
| <a name="input_iam_role_to_assume"></a> [iam\_role\_to\_assume](#input\_iam\_role\_to\_assume) | The full ARN of the IAM role to assume | `string` | n/a | yes |
| <a name="input_kube_proxy_version"></a> [kube\_proxy\_version](#input\_kube\_proxy\_version) | You should grab the appropriate version number from: https://docs.aws.amazon.com/eks/latest/userguide/managing-kube-proxy.html | `string` | `"v1.30.7-eksbuild.2"` | no |
| <a name="input_node_pools"></a> [node\_pools](#input\_node\_pools) | node pool configurations:<br/> - name (string): Name of the node pool. MUST BE UNIQUE! Recommended to use YYYYMMDD in the name<br/> - node\_count (number): number of nodes to create in the node pool.<br/> - instance\_type (string): Instance type to use for the nodes. ref: https://instances.vantage.sh/<br/> - kubernetes\_version (string): Generally this is the same version as the EKS cluster. But if doing a node pool upgrade this may be a different version.<br/> - ami\_release\_version (string): AMI Release version to use for EKS worker nodes. ref: https://github.com/awslabs/amazon-eks-ami/releases<br/> - ami\_type (string): e.g. AMD64 or ARM<br/> - spot (bool): Enable spot instances for the nodes. DO NOT ENABLE IN PROD!<br/> - disk\_size\_gb (number): Disk size in GB for the nodes.<br/> - max\_pods (number): max pods that can be scheduled per node.<br/> - ssh\_key\_pair\_names (list(string)): List of SSH key pair names to associate with the nodes. ref: https://us-west-2.console.aws.amazon.com/ec2/home?region=us-west-2#KeyPairs:<br/> - kubernetes\_labels (map(string)): Map of labels to apply to the nodes. ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/<br/> - kubernetes\_taints (list(object)): List of taints to apply to the nodes. ref: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/ | <pre>list(object({<br/> name = string<br/> node_count = number<br/> instance_type = string<br/> kubernetes_version = string<br/> ami_release_version = string<br/> ami_type = string<br/> spot = bool<br/> disk_size_gb = number<br/> max_pods = number<br/> ssh_key_pair_names = list(string)<br/> kubernetes_labels = map(string)<br/> kubernetes_taints = list(object({<br/> key = string<br/> value = string<br/> effect = string<br/> }))<br/><br/> }))</pre> | <pre>[<br/> {<br/> "ami_release_version": "1.30.8-20250116",<br/> "ami_type": "AL2_x86_64",<br/> "disk_size_gb": 20,<br/> "instance_type": "t3a.large",<br/> "kubernetes_labels": {},<br/> "kubernetes_taints": [],<br/> "kubernetes_version": "1.30",<br/> "max_pods": 110,<br/> "name": "default-pool",<br/> "node_count": 1,<br/> "spot": false,<br/> "ssh_key_pair_names": []<br/> }<br/>]</pre> | no |
| <a name="input_node_pools"></a> [node\_pools](#input\_node\_pools) | node pool configurations:<br/> - name (string): Name of the node pool. MUST BE UNIQUE! Recommended to use YYYYMMDD in the name<br/> - node\_count (number): number of nodes to create in the node pool.<br/> - instance\_type (string): Instance type to use for the nodes. ref: https://instances.vantage.sh/<br/> - kubernetes\_version (string): Generally this is the same version as the EKS cluster. But if doing a node pool upgrade this may be a different version.<br/> - ami\_release\_version (string): AMI Release version to use for EKS worker nodes. ref: https://github.com/awslabs/amazon-eks-ami/releases<br/> - ami\_type (string): e.g. AMD64 or ARM<br/> - spot (bool): Enable spot instances for the nodes. DO NOT ENABLE IN PROD!<br/> - disk\_size\_gb (number): Disk size in GB for the nodes.<br/> - max\_pods (number): max pods that can be scheduled per node.<br/> - ssh\_key\_pair\_names (list(string)): List of SSH key pair names to associate with the nodes. ref: https://us-west-2.console.aws.amazon.com/ec2/home?region=us-west-2#KeyPairs:<br/> - kubernetes\_labels (map(string)): Map of labels to apply to the nodes. ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/<br/> - kubernetes\_taints (list(object)): List of taints to apply to the nodes. ref: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/ | <pre>list(object({<br/> name = string<br/> node_count = number<br/> instance_type = string<br/> kubernetes_version = string<br/> ami_release_version = string<br/> ami_type = string<br/> spot = bool<br/> disk_size_gb = number<br/> max_pods = number<br/> ssh_key_pair_names = list(string)<br/> kubernetes_labels = map(string)<br/> kubernetes_taints = list(object({<br/> key = string<br/> value = string<br/> effect = string<br/> }))<br/><br/> }))</pre> | <pre>[<br/> {<br/> "ami_release_version": "1.30.8-20250123",<br/> "ami_type": "AL2_x86_64",<br/> "disk_size_gb": 20,<br/> "instance_type": "t3a.large",<br/> "kubernetes_labels": {},<br/> "kubernetes_taints": [],<br/> "kubernetes_version": "1.30",<br/> "max_pods": 110,<br/> "name": "default-pool",<br/> "node_count": 1,<br/> "spot": false,<br/> "ssh_key_pair_names": []<br/> }<br/>]</pre> | no |
| <a name="input_peering_configs"></a> [peering\_configs](#input\_peering\_configs) | A list of maps containing VPC peering configuration details | <pre>list(object({<br/> vpc_peering_connection_id = string<br/> destination_cidr_block = string<br/> }))</pre> | `[]` | no |
| <a name="input_region"></a> [region](#input\_region) | The AWS region to deploy into | `string` | n/a | yes |
| <a name="input_vpc_cidr_block"></a> [vpc\_cidr\_block](#input\_vpc\_cidr\_block) | The CIDR block for the VPC | `string` | `"10.65.0.0/26"` | no |
Expand Down
6 changes: 3 additions & 3 deletions docs/.header.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ module "captain" {
node_pools = [
# {
# "kubernetes_version" : "1.30",
# "ami_release_version" : "1.30.8-20250116",
# "ami_release_version" : "1.30.8-20250123",
# "ami_type" : "AL2_x86_64",
# "instance_type" : "t3a.large",
# "name" : "glueops-platform-node-pool-1",
Expand All @@ -49,7 +49,7 @@ module "captain" {
# },
# {
# "kubernetes_version" : "1.30",
# "ami_release_version" : "1.30.8-20250116",
# "ami_release_version" : "1.30.8-20250123",
# "ami_type" : "AL2_x86_64",
# "instance_type" : "t3a.small",
# "name" : "glueops-platform-node-pool-argocd-app-controller-1",
Expand All @@ -71,7 +71,7 @@ module "captain" {
# },
# {
# "kubernetes_version" : "1.30",
# "ami_release_version" : "1.30.8-20250116",
# "ami_release_version" : "1.30.8-20250123",
# "ami_type" : "AL2_x86_64",
# "instance_type" : "t3a.medium",
# "name" : "clusterwide-node-pool-1",
Expand Down
31 changes: 31 additions & 0 deletions tests/k8s-test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,37 @@

set -e

# Step 1: Verify pods can get created on the current ami_release_version
echo "::group::Creating pods on every node in the cluster"
for node in $(kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}'); do
kubectl run -n test-pods-creation alpine-on-$node \
--image=alpine:latest \
--overrides='{
"apiVersion": "v1",
"kind": "Pod",
"spec": {
"nodeName": "'"$node"'",
"containers": [{
"name": "alpine",
"image": "alpine:latest",
"command": ["/bin/sh", "-c", "while true; do echo Running on $(hostname); sleep 3600; done"]
}]
}
}'
done
sleep 300
echo "::group::Checking the all pods are in running state"
POD_COUNT=$(kubectl get pods -n test-pods-creation --field-selector=status.phase=Running --no-headers | wc -l)
echo "::group::Comparing number of running pods to the desired count"
if [ "$POD_COUNT" -ne 8 ]; then
echo "Expected 8 pods, but found $POD_COUNT."
exit 1
else
echo "Pod count matches expected value: $POD_COUNT."
fi
kubectl delete pods --all -n test-pods-creation
echo "::endgroup::"

# Step 1: Verify storage driver installation (Amazon EBS CSI Driver)
echo "::group::Checking if the storage driver is installed..."
kubectl get pods -n kube-system | grep "ebs-csi-"
Expand Down
6 changes: 3 additions & 3 deletions tests/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ module "captain" {
node_pools = [
# {
# "kubernetes_version" : "1.30",
# "ami_release_version" : "1.30.8-20250116",
# "ami_release_version" : "1.30.8-20250123",
# "ami_type" : "AL2_x86_64",
# "instance_type" : "t3a.large",
# "name" : "glueops-platform-node-pool-1",
Expand All @@ -33,7 +33,7 @@ module "captain" {
# },
# {
# "kubernetes_version" : "1.30",
# "ami_release_version" : "1.30.8-20250116",
# "ami_release_version" : "1.30.8-20250123",
# "ami_type" : "AL2_x86_64",
# "instance_type" : "t3a.small",
# "name" : "glueops-platform-node-pool-argocd-app-controller-1",
Expand All @@ -55,7 +55,7 @@ module "captain" {
# },
# {
# "kubernetes_version" : "1.30",
# "ami_release_version" : "1.30.8-20250116",
# "ami_release_version" : "1.30.8-20250123",
# "ami_type" : "AL2_x86_64",
# "instance_type" : "t3a.medium",
# "name" : "clusterwide-node-pool-1",
Expand Down
2 changes: 1 addition & 1 deletion variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ variable "node_pools" {
name = "default-pool"
node_count = 1
instance_type = "t3a.large"
ami_release_version = "1.30.8-20250116"
ami_release_version = "1.30.8-20250123"
kubernetes_version = "1.30"
ami_type = "AL2_x86_64"
spot = false
Expand Down
Loading