here I have modularized everything in infrastructure in 4 different parts
each module contain submodules like for compute: ec2,eip, eks, keypairs, security_groups
in network: igw, nat, routes,subnets,vpcs
in security: iam,kms,oidc
in monitoring: cloudwatch
in storage: s3
and each module contains its terraform code where user can define there parameters to make changes..
there is one more module file which contain hosts,k8s, keys..
so for our setup we have created one monitoring instance also where grafana is hosted.. for that we have configured Prometheus data source same inside the eks with different namespace.. so here aws generated keypairs get stored.
in k8s what we have in values-eks.yaml file there we have to manually edit it first before we apply so I have make some changes in terraform code so that this file will get generated automatically.. also there was one more issue which I have faced during the deployment that there was one annotation tag was missing in specification so I have added that..
apart from this two I have created hosts where public ip for grafana instance get stored : to make it available as inventory for ansible script.
after making some changes in variable or directly giving it to the main.tf
file we are ready to launch the setup.. for our dev env I have used simple t3.* type so that it won't affect our budget..
finally I called all this module in one single module main.tf
and launched.. it..
after this setup we are ready to configure our eks with values-eks.yaml file which get generate while launching the infra..
once everything is setup it's time for ansible to configure grafana .. and finally we are ready with our flyte setup..💕