apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: wsc2024-eks-cluster
version: "1.29"
region: us-east-1
cloudWatch:
clusterLogging:
enableTypes: ["*"]
secretsEncryption:
keyARN: kms_arn
iam:
withOIDC: true
serviceAccounts:
- metadata:
name: aws-load-balancer-controller
namespace: kube-system
wellKnownPolicies:
awsLoadBalancerController: true
- metadata:
name: cert-manager
namespace: cert-manager
wellKnownPolicies:
certManager: true
vpc:
subnets:
public:
ap-northeast-2a: { id: public_a }
ap-northeast-2b: { id: public_b }
private:
ap-northeast-2a: { id: private_a }
ap-northeast-2b: { id: private_b }
managedNodeGroups:
- name: wsc2024-db-application-ng
labels: { app: db }
instanceName: wsc2024-db-application-node
instanceType: t3.medium
desiredCapacity: 2
minSize: 2
maxSize: 20
privateNetworking: true
- name: wsc2024-other-ng
labels: { app: other }
instanceName: wsc2024-other-node
instanceType: t3.medium
desiredCapacity: 2
minSize: 2
maxSize: 20
privateNetworking: true
#!/bin/bash
public_a=$(aws ec2 describe-subnets --filters "Name=tag:Name,Values=wsc2024-prod-load-sn-a" --query "Subnets[].SubnetId[]" --output text)
public_b=$(aws ec2 describe-subnets --filters "Name=tag:Name,Values=wsc2024-prod-load-sn-b" --query "Subnets[].SubnetId[]" --output text)
private_a=$(aws ec2 describe-subnets --filters "Name=tag:Name,Values=wsc2024-prod-app-sn-a" --query "Subnets[].SubnetId[]" --output text)
private_b=$(aws ec2 describe-subnets --filters "Name=tag:Name,Values=wsc2024-prod-app-sn-b" --query "Subnets[].SubnetId[]" --output text)
keys=$(aws kms list-keys --output json)
key_ids=$(echo $keys | jq -r '.Keys[].KeyId')
for key_id in $key_ids; do
name_tag=$(aws kms list-resource-tags --key-id $key_id --query "Tags[].TagValue" --output text 2> /dev/null)
if [ "$name_tag" == "eks-kms" ]; then
kms_arn=$(aws kms describe-key --key-id $key_id --query "KeyMetadata.Arn" --output text)
fi
done
sed -i "s|public_a|$public_a|g" cluster.yaml
sed -i "s|public_b|$public_b|g" cluster.yaml
sed -i "s|private_a|$private_a|g" cluster.yaml
sed -i "s|private_b|$private_b|g" cluster.yaml
sed -i "s|kms_arn|$kms_arn|g" cluster.yaml
eksctl create cluster -f cluster.yaml
aws eks --region us-east-1 update-kubeconfig --name wsc2024-eks-cluster
kubectl create ns wsc2024