Please refer to terraform install doc
export AWS_ACCESS_KEY_ID="anaccesskey"
export AWS_SECRET_ACCESS_KEY="asecretkey"
Note: You need to config them in the service modules manually
cd services/global/s3
terraform init
terraform plan
terraform apply -auto-approve
cd services/eks
terraform init
terraform plan
terraform apply -auto-approve "-var=region=eu-west-1"
cd services/nodegroup
terraform init
terraform plan
terraform apply -auto-approve "-var=region=eu-west-1"
You can define parameters about instance_types, disk_size and scaling_config.
cd services/efs
terraform init
terraform plan
terraform apply -auto-approve "-var=region=eu-west-1"
Please refer to eksctl
curl -o iam-policy-example.json https://raw.githubusercontent.com/kubernetes-sigs/aws-efs-csi-driver/v1.3.2/docs/iam-policy-example.json
aws iam create-policy \
--policy-name AmazonEKS_EFS_CSI_Driver_Policy \
--policy-document file://iam-policy-example.json
eksctl create iamserviceaccount \
--name efs-csi-controller-sa \
--namespace kube-system \
--cluster tf-eks-cluster \
--attach-policy-arn arn:aws:iam::${accountID}:policy/AmazonEKS_EFS_CSI_Driver_Policy \
--approve \
--override-existing-serviceaccounts \
--region ${region}
helm upgrade -i aws-efs-csi-driver aws-efs-csi-driver/aws-efs-csi-driver \
--namespace kube-system \
--set image.repository=602401143452.dkr.ecr.ap-southeast-1.amazonaws.com/eks/aws-efs-csi-driver \
--set controller.serviceAccount.create=false \
--set controller.serviceAccount.name=efs-csi-controller-sa
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: tf-efs-sc
provisioner: efs.csi.aws.com
parameters:
provisioningMode: efs-ap
fileSystemId: ${fileSystemId}
directoryPerms: "700"
gidRangeStart: "1000" # optional
gidRangeEnd: "2000" # optional
basePath: "/dynamic_provisioning" # optional
volumeBindingMode: WaitForFirstConsumer