How to Deploy AWS EKS with Terraform - The Simplest Guide to Get Up and Running

Sdílet
Vložit
  • čas přidán 31. 05. 2023
  • In this video, I go over the quickest and simplest way of getting AWS Elastic Kubernetes Service (EKS) up and running using Terraform for deployment. We go over the basic configuration options and end up with a fully functional working EKS cluster by the end of the video.
    Code from the video can be found free on Github 🐙
    github.com/ascode-com/wiki/tr...
    Let me know what questions you have, content you'd like to see, and come check out the discord and twitter!
    Relevant Links 🔗
    Terraform Registry Page for EKS Module: registry.terraform.io/modules...
    Terraform EKS Module Source Code: github.com/terraform-aws-modu...
    Get in touch 🚀
    Discord: / discord
    LinkedIn: / jedidiahpark
    Twitter: / jediascode
    Website: ascode.com

Komentáře • 118

  • @user-sv7fp9xk8e
    @user-sv7fp9xk8e Před 8 měsíci +26

    I vote for the Terraform video. You explain very well.

  • @tanjamikhno
    @tanjamikhno Před rokem +6

    Mate, that's the easiest and most feature-packed k8s @ aws tutorial I've ever seen, huge thanks!!!!!!!

  • @ciscoboy-devon1732
    @ciscoboy-devon1732 Před rokem +2

    This was awesome! Very well detailed & explained, Thanks for sharing 💪I am currently working on Cluster AutoScalers on EKS as well HPA's. I seem to have the Cluster Autoscaler on point, HPA's is my next ball game. Great to see you back in action!

    • @ascode-com
      @ascode-com  Před rokem +1

      hey good to see you again!! and that's sick, wishing you minimal errors and bugs!

  • @user-uh6th6kv4c
    @user-uh6th6kv4c Před 7 měsíci

    I love the simplicity and I tried it and its running, bravo. Thanks. And I like your color gradient and your cap.

  • @mahmoudhassan1324
    @mahmoudhassan1324 Před rokem

    thanks a lot for the video. i was asked for a task as a test to start my new carrier and this really helps with a huge part of it. keep going bro

    • @ascode-com
      @ascode-com  Před rokem

      getting started is the hardest part! you got this!

  • @user-jy6xi5zq7c
    @user-jy6xi5zq7c Před 9 měsíci

    I stumbled two times into your clip. First time is in my preparation for CKA, second time is for a example to deploy a EKS cluster with terraform. Now I realize you have a total of six clips. I think you do great tutorials. You remind me of the python tutor Angela Yu who had 2 million students. Please keep doing more.

    • @ascode-com
      @ascode-com  Před 9 měsíci

      that's awsome haha and thank you so much!

  • @oshoshoshoshosh
    @oshoshoshoshosh Před 7 měsíci +1

    Awesome work, clear explanations, very well done. You rock!

  • @GoatOnATrain
    @GoatOnATrain Před 9 měsíci +6

    I just spent days trying to wrap my head around EKS with Terraform and trying to configure permissions. I even found the same module and the same example, but it's a massive file with no real explanation for what's going on in it. Thank you so much. And yes, I would like you to do a best practices video with all the goodness.

  • @AungBaw
    @AungBaw Před rokem

    Dude! you came back, do more videos. Thanks.
    9:05 context switch was lighting fast

  • @Jay2Ops
    @Jay2Ops Před 11 měsíci +1

    I will appreciate a Terraform Tutorial. This was helpful as well.

    • @ascode-com
      @ascode-com  Před 10 měsíci

      awesome, thanks for the input

  • @brunopaz1645
    @brunopaz1645 Před 3 měsíci

    I really love you! It has been a brutal support for a problem I had! Thx!!!

  • @mfich
    @mfich Před 7 měsíci

    Great tutorial! I'm interested in the full terraform best practice guide you mentioned.

  • @andrewnhien9714
    @andrewnhien9714 Před 9 měsíci

    Thank you. Please make more video about Terraform follow best practises. Hope see you soon!

    • @ascode-com
      @ascode-com  Před 9 měsíci

      popular request so i'm working on putting some things together! thanks :)

  • @rodgaray
    @rodgaray Před 8 měsíci

    This video is excellent! Please, if you have the time, I would love to see a more "prod" like, it would be amazing!!! Thank you!!!

    • @ascode-com
      @ascode-com  Před 8 měsíci +1

      great suggestion, i'll keep it in mind for future stuff!

  • @JustDoTheSimpleThing
    @JustDoTheSimpleThing Před 11 měsíci +2

    Terraform tutorial will be great!

    • @ascode-com
      @ascode-com  Před 11 měsíci +2

      heard, seems like a popular request so i'll keep that in mind for future vids! thanks

  • @sarangsawant4497
    @sarangsawant4497 Před 3 měsíci

    Good explanation, thank you :)

  • @patorikusutaru7483
    @patorikusutaru7483 Před 14 dny

    i complete the course and just leave it be, not realizing the node group still active and charge me for over 80$ for an empty cluster. thanks ascode :)

  • @tcloudcorner
    @tcloudcorner Před 8 měsíci

    This helped me alot!!! thank you!

  • @aaronl1251
    @aaronl1251 Před 9 měsíci

    Fantastic tutorial. I appreciate you keeping it simple. If you do create another with fargate and a bit more "prod" worthy config, I would surely not complain. :)

    • @ascode-com
      @ascode-com  Před 9 měsíci +1

      oh man, eks with fargate is another beast entirely XD i wish you luck

  • @MrTheBroMoe
    @MrTheBroMoe Před rokem

    Good video! Hope you’ll make more soon

  • @georgelza
    @georgelza Před 11 měsíci +1

    you mentioned terraform best practices... def keen on that, if you can cover the for_each loop also,
    I've got 9 subnets, 3 groups of 3, across 3 AZ's. so allot of repitition that i'm sure can be done better.
    thanks for easy to follow video.

    • @ascode-com
      @ascode-com  Před 11 měsíci +1

      thanks for the topic suggestions! here's some info to get you started:
      one of the ways you can automate this kind of set up is to dynamically get the az's and use functions like cidrsubnet() to generate the subnets. here's a thorough example: github.com/terraform-aws-modules/terraform-aws-vpc/blob/master/examples/complete/main.tf
      another way is to use for_each like you mentioned and will be the way to go if you strictly need to define which az's are being used and what subnets they receive. here's an example i've done in the past: github.com/kjpark/terraform-aws-eks-vpc-cni-custom-networking/blob/main/subnets.tf with vars defined like this: (also in that repo's readme)
      secondary_cidr = "100.64.0.0/16"
      secondary_subnets = {
      us-east-1a = "100.64.0.0/18"
      us-east-1b = "100.64.64.0/18"
      us-east-1c = "100.64.128.0/18"
      us-east-1d = "100.64.192.0/18"
      }
      personally i like the second option more as its more explicit.

  • @yuriytimerkhanov1228
    @yuriytimerkhanov1228 Před rokem

    Thanks, just in time for me.

  • @colossuselka-zc7hb
    @colossuselka-zc7hb Před 9 měsíci

    loved your channell!

  • @IceLanderve
    @IceLanderve Před rokem

    Great video. I am looking to configure a basic cluster with existing VPCs and private subnets, I suppose it's as simple as filling in the blanks. Thanks!

    • @ascode-com
      @ascode-com  Před rokem

      yup! just change the basic vpc config i provided for your own and you should be all set

  • @h3itham
    @h3itham Před 7 měsíci

    saved my day!

  • @sukki_43
    @sukki_43 Před 8 měsíci

    Hey Amazing and very insightful video can you please make such video more and if possible can you include cloud projects or devops projects that newbies can practice

    • @ascode-com
      @ascode-com  Před 8 měsíci

      hey great suggestion! i'll write that down future ideas

  • @JaggerMeistification
    @JaggerMeistification Před 3 měsíci

    Subscribed.

  • @QwickGainz
    @QwickGainz Před měsícem

    Did you end up making a video for best practices in terraform? I would love to see it!!

    • @ascode-com
      @ascode-com  Před 24 dny

      may break it out into different videos - like the one i made on terraform plan/apply! czcams.com/video/gGEDqXNvVVQ/video.html

  • @BeverageOfSorts
    @BeverageOfSorts Před 7 měsíci

    what a legend

  • @jonatanmoussandao397
    @jonatanmoussandao397 Před 8 měsíci

    Awesome content. Please if you can cover terraform best practice

  • @rajeshaussie
    @rajeshaussie Před 10 měsíci

    Thats a good tutorial to kick start with EKS using Terraform. Can please advise how should we do the Cluster upgrade using Terraform ?

    • @ascode-com
      @ascode-com  Před 10 měsíci

      this probably deserves a video on its own... but check out these links out for now: aws-ia.github.io/terraform-aws-eks-blueprints/advanced/cluster-upgrades/ and maybe this for a more detailed upgrade aws-ia.github.io/terraform-aws-eks-blueprints/advanced/cluster-upgrades/

  • @user-tu7yt6fn2z
    @user-tu7yt6fn2z Před 5 měsíci

    Very informative. I tried to create a GKE Auto Pilot cluster in GCP with a shared VPC private network through terraform, assigned necessary GKE service account permissions, and make sure the control plane, node, ranges IP range and the location are aligned correctly as per the GCP GKE documentation. But stuck with this exception again and again, 'Error: Error waiting for creating GKE cluster: All cluster resources were brought up, but: only 0 nodes out of 1 have registered; cluster may be unhealthy.' Pls share if there is any suggestions to troubleshoot this error ??

    • @ascode-com
      @ascode-com  Před 5 měsíci

      older versions of the gcp autopilot provider had a bug where you had to set an empty ip_allocation_policy github.com/hashicorp/terraform-provider-google/issues/10782 . Not sure if that's your exact issue without knowing more details.

  • @PANDApoopish
    @PANDApoopish Před 11 měsíci

    Hey! Thanks for the video! How long have you been in DevOps? I'm currently a sysadmin and enjoy practicing devops workflows

    • @ascode-com
      @ascode-com  Před 11 měsíci

      around 2 years for devops things!

  • @leibiw
    @leibiw Před 4 měsíci

    Have you ever run into where the "coreDNS" become degraded? I'm working on a project that trying to launch an EKS that hosts a Minecraft server and every time I run the terraform apply the coredns hangs and end up being degraded in the cluster section in the add-on tab.

    • @ascode-com
      @ascode-com  Před 4 měsíci

      not sure without knowing more but i’d check your plugin versions and terraform / k8s versions. I’d also look at the plugins installed via the console UI to make sure it’s installed properly

  • @anilkumar-jj8gu
    @anilkumar-jj8gu Před 11 měsíci

    thankyou.

  • @sadmanh0
    @sadmanh0 Před 7 měsíci

    do you know of any resources on how I can use the fargate profiles? So far I have been able to do it with node group like in your video and that works great, but I want to try out serverless as well. From what I understand the problem is that the pods launched by default have an annotation in their yaml that forces them to use the node groups, do we update that? Or just leave those as is and only have our application run on the fargate nodes?

    • @ascode-com
      @ascode-com  Před 7 měsíci +1

      fargate nodes are pretty niche. i’d use them in tandem with regular nodes if you have to bc they have so many limitations. try using the complete example in the EKS terraform repo as a starter if you need to go down this path

  • @claudiogarcia7557
    @claudiogarcia7557 Před 9 měsíci

    just Excelent

  • @ericchagas3298
    @ericchagas3298 Před 4 měsíci

    its run perfect, the only thing that I had problem is about LB, when I create a service.yaml as type load balancer my status always stay as pedding, do you think that miss some module in terraform for it runing well? other thing is about SG...its looks creating more than 1 SG, that gave me problem with LB too....thanks for all man.

    • @ascode-com
      @ascode-com  Před 4 měsíci

      check `kubectl describe svc my-loadbalancer` for the reason. you may need to configure aws load balancer controller and/or add some annotations

  • @amalviswanathan3254
    @amalviswanathan3254 Před 5 měsíci

    hey, can you do a quick video on the latest release which is 20.0 which has a major change in configmap and auth section for eks.

    • @ascode-com
      @ascode-com  Před 5 měsíci

      interesting stuff. According to the 20.x upgrade notes... "This sub-module will be removed entirely in the next major release." Looks like major changes are still coming!

  • @QwickGainz
    @QwickGainz Před měsícem

    What would happen if i left both self managed and managed node groups in there? Which would be created? Both?

    • @ascode-com
      @ascode-com  Před 24 dny

      yep! you'd create multiple node groups

  • @melquisedequecosta9061

    I need to configure the release part of the specific users access to clsuter. Do you have any example? I speak here from Brazil :)

    • @ascode-com
      @ascode-com  Před rokem

      hi from the US! For user access, start by looking at the aws auth configmap section

  • @dekooks1543
    @dekooks1543 Před rokem +1

    Brilliant stuff !! But come on now drop the dotfiles 😂

    • @ascode-com
      @ascode-com  Před rokem +1

      it's not production-grade (one day!) but if you want 'em for reference here ya go :) github.com/kjpark/dotfiles

  • @ssn5885
    @ssn5885 Před 6 měsíci

    Hey, I have a question, how do i deploy an app and make it accessible over the internet to users with the same repo you have created. Thanks

    • @ascode-com
      @ascode-com  Před 6 měsíci

      You would have to deploy a load balancer and route it to a service for your pods. Typically you would use load balancer controller in aws to do this. Hope that's enough to help you get started!

    • @ssn5885
      @ssn5885 Před 6 měsíci

      @@ascode-com Thanks for your reply. Is it possible to do using terraform ? Do you have any example code to deploy the load balancer?

  • @NursultanBaitenov
    @NursultanBaitenov Před 3 měsíci

    I tried to deploy eks exactly same way like you deployed. but pods are not be scheduled. whatever i wanted to create, status is pending

    • @ascode-com
      @ascode-com  Před 24 dny

      try checking the logs and describe for more info

  • @anbelko
    @anbelko Před 11 měsíci

    After deploying service lb had an error:
    Error syncing load balancer: failed to ensure load balancer: Multiple tagged security groups found for instance i-01d5b3aa46279a7c2; ensure only the k8s security group is tagged; the tagged groups were sg-0a3e3e24c0bc7840c(ascode-cluster-node-20230804045954383900000009) sg-0a4c75831ab5db090(eks-cluster-sg-ascode-cluster-1526614196)
    Checked, really node instance has 2 sg attached. One sg for nodes, and one that automatically created by EKS.
    Do you have ideas how to fix it in terraform initial config?

    • @ascode-com
      @ascode-com  Před 11 měsíci +1

      hey! replied in discord but linking the workaround here if anybody else has the same issue
      github.com/terraform-aws-modules/terraform-aws-eks/issues/1810#issuecomment-1021202184

  • @raypi2297
    @raypi2297 Před 4 měsíci

    If I never use terraform for provisioning before, can I use terraform for create only EKS ?

    • @ascode-com
      @ascode-com  Před 4 měsíci

      yes you can. you'll just have to select (data resource or hardcode) your existing resources in

  • @PJ-os4bw
    @PJ-os4bw Před 2 měsíci

    How to add your AWS credentials before running the terraform apply?

    • @ascode-com
      @ascode-com  Před 24 dny

      multiple ways to do this! easiest way is to configure your shell environment via awscli. you can make and use an access key. Here's general info: docs.aws.amazon.com/cli/v1/userguide/cli-chap-authentication.html

  • @ragnargaming6887
    @ragnargaming6887 Před 2 měsíci

    Can you please make videos about aks and gke via terraform as well

    • @ascode-com
      @ascode-com  Před 24 dny

      i'll consider it! thanks for the suggestion

  • @sromankov6102
    @sromankov6102 Před 3 měsíci

    Like for your great tutorial, please record tf best practices video

  • @devd6800
    @devd6800 Před 6 měsíci

    8:36 what is "upstream" VPC module?

    • @ascode-com
      @ascode-com  Před 6 měsíci

      upstream refers to the official AWS VPC module maintained by hashicorp registry.terraform.io/modules/terraform-aws-modules/vpc/aws/latest

  • @user-yp5bt3xw4c
    @user-yp5bt3xw4c Před 8 měsíci

    It would be great if you could create a terraform tutorial. Thanks in advance.

    • @ascode-com
      @ascode-com  Před 8 měsíci

      awesome, thanks for the input

  • @hughesadam87
    @hughesadam87 Před 10 měsíci

    Do you recommend this over using the eks blueprint libraries. They look cool but docs lacking. Does this create a cloud stack or naw?

    • @ascode-com
      @ascode-com  Před 10 měsíci +1

      i agree, blueprints look cool but i would avoid bc they're not as popular or have as much support. if you're trying to stick with nodejs i'd take a look at pulumi for IaC. otherwise use terraform

    • @hughesadam87
      @hughesadam87 Před 10 měsíci

      @@ascode-com Thanks - I went with eksctl for now but will switch to terraform long term

    • @ascode-com
      @ascode-com  Před 10 měsíci +1

      @@hughesadam87 eksctl is a great option too!

  • @TheCalax
    @TheCalax Před 26 dny

    I'm a total noob and therefore have a question. We now deployed EKS with Terraform, how do I proceed from here? Using Kubernetes to deploy my application, load balancer, subnets etc?

    • @ascode-com
      @ascode-com  Před 24 dny

      good questions! check my other video on getting a demo app running czcams.com/video/g9EqZiTWLGA/video.html

    • @ascode-com
      @ascode-com  Před 24 dny

      also join the discord if you want some support / discussion!

  • @sukhwinder101
    @sukhwinder101 Před rokem

    just confused ... how local.name is same as config in locals --- should it not be locals.name ?

    • @ascode-com
      @ascode-com  Před rokem

      hi, it's called locals when being declared, local.xyz is the syntax when referring to them. More here: developer.hashicorp.com/terraform/language/values/locals

  • @TikTokTrendsCompilation
    @TikTokTrendsCompilation Před 10 měsíci +1

    make a tutorial with complete automated pipeline workflow deploying frontend + backend using
    - terraform
    - eks
    - argocd
    - jenkins
    - sonarqube
    - trivy

    • @ascode-com
      @ascode-com  Před 10 měsíci +1

      good topics to cover! i'll keep that noted thanks

  • @C.RonaldoCR7G
    @C.RonaldoCR7G Před 7 měsíci

    Please help with Terraforj set up video 🙏🏾

    • @ascode-com
      @ascode-com  Před 6 měsíci +1

      noted m8. haven't had much time these days but it's still on the list

    • @C.RonaldoCR7G
      @C.RonaldoCR7G Před 6 měsíci

      @@ascode-com thanks so much

  • @nivethav1589
    @nivethav1589 Před 4 měsíci

    did't have "complete" option in github

    • @ascode-com
      @ascode-com  Před 4 měsíci

      you're right it looks like they updated the examples. I think eks-managed or self-managed are still good places to start.

  • @essamal-mansouri2689
    @essamal-mansouri2689 Před 8 dny

    "Complete" is not one of the examples anymore. It is only self managed, or aws managed. I'm having a lot of trouble getting it to work without making the endpoint public

  • @MdAshraf007
    @MdAshraf007 Před 7 měsíci

    hi, no videos since 6 months, are you doing well?

    • @ascode-com
      @ascode-com  Před 6 měsíci

      haha yeah i'm alive, been wanting to get back into it but life's just so busy. channel is a side project of mine but def not abandoned!! thanks for asking

    • @MdAshraf007
      @MdAshraf007 Před 6 měsíci

      @@ascode-com good to hear and Take care

  • @baibhavghimire3827
    @baibhavghimire3827 Před rokem

    Personally I don’t like using remote modules . How would you deploy this cluster in different region ? Definitely I would go with my own module and call them from main module.

    • @ascode-com
      @ascode-com  Před rokem

      remote's probably the easiest but i hear ya. region is configurable in the locals.

  • @Denis-bj7ob
    @Denis-bj7ob Před 2 dny

    most of video is about deleting code :)