Crazy fast Kubernetes Automation with Terraform

In this video, we deploy a HA Kubernetes Cluster in the Cloud and run some workloads on it. I've created a template for Kubernetes, Traefik, Cert-Manager and SSL Certs and DNS Records all in Terraform. This will also show how to combine multiple workloads and providers in one automation script. #Kubernetes #Terraform #CIVO
Project Files: github.com/christianlempa/boi...
Terraform Tutorial: • What is infrastructure...
Helm Tutorial: • Package Management wit...
Traefik Tutorial: • How to use Traefik as ...
Cert-Manager Tutorial: • Free SSL Certs in Kube...
CIVO-*: civo.com/thedigitallife
Follow me:
TWITTER: / christianlempa
INSTAGRAM: / christianlempa
DISCORD: / discord
GITHUB: github.com/christianlempa
PATREON: / christianlempa
MY EQUIPMENT: kit.co/christianlempa
Timestamps:
00:00 - Introduction
00:57 - What tools we use
01:33 - Project Overview
04:00 - Advertisement-*
04:37 - Create the Kubernetes Cluster
10:18 - Deploy Software on Kubernetes
13:27 - Deploy Traefik and Cert-Manager
16:45 - Deploy DNS and Certificates
21:31 - Deploy a test application
24:42 - Summarize and test
________________
All links with "*" are affiliate links.

Пікірлер: 119

  • @beyond990
    @beyond9902 жыл бұрын

    Fantastic video, this gave a nice run down of how all the components are connected together. Keep up your great work.

  • @MichaelBransonCoach
    @MichaelBransonCoach2 жыл бұрын

    bloody hell! and sooo awesome. Fantastic video! Love the speed of delivery and single command deployment solutions

  • @christianlempa

    @christianlempa

    2 жыл бұрын

    Thank you very much!

  • @jamallmahmoudi9481
    @jamallmahmoudi94815 ай бұрын

    Hi, Christian Great video , thank you so much for sharing🙏👌

  • @dragonmax2000
    @dragonmax2000 Жыл бұрын

    Though I like this video, the pace is so high that anything meaningful is lost. Pure entertainment is the highest outcome of this.

  • @Michael201078
    @Michael2010782 жыл бұрын

    Hi. I've just started to learn DevOps. Your video is great. Explanation is super.

  • @christianlempa

    @christianlempa

    2 жыл бұрын

    Thank you so much 😃

  • @TechnoTim
    @TechnoTim2 жыл бұрын

    Nice work Christian! Great video!

  • @christianlempa

    @christianlempa

    2 жыл бұрын

    Thank you! :) I've learned so much about Kubernetes with the help of your videos!

  • @TechnoTim

    @TechnoTim

    2 жыл бұрын

    @@christianlempa That's awesome! Glad they helped!

  • @cariyaputta
    @cariyaputtaАй бұрын

    Thanks. Simple to follow.

  • @christianlempa

    @christianlempa

    Ай бұрын

    Thanks for watching :)

  • @coolrazor6835
    @coolrazor68352 жыл бұрын

    Incredible video! I’m totally going to be forking this one and putting my own spin on it. Very nicely done!

  • @christianlempa

    @christianlempa

    2 жыл бұрын

    Thank you! :)

  • @mchannel1365

    @mchannel1365

    Жыл бұрын

    why use Terraform when you can do all by Rest APIs ?

  • @josem2100

    @josem2100

    4 ай бұрын

    ​@@mchannel1365 why implement what terraform does when you have terraform?

  • @dadrad
    @dadrad2 жыл бұрын

    Great video! I never messed with the time_sleep resource, very cool.

  • @oakfig

    @oakfig

    2 жыл бұрын

    Nice shirt! Where do we get it at?

  • @christianlempa

    @christianlempa

    2 жыл бұрын

    Great to hear!

  • @KR1ML0N
    @KR1ML0N2 жыл бұрын

    Awesomejob, keep up the quality content. 🙂

  • @christianlempa

    @christianlempa

    2 жыл бұрын

    Thank you! Will do!

  • @Spydaw
    @Spydaw2 жыл бұрын

    This is really awesome, thank you so much for sharing ;)

  • @christianlempa

    @christianlempa

    2 жыл бұрын

    Thank you so much! And also for your help with that :D

  • @Spydaw

    @Spydaw

    2 жыл бұрын

    @@christianlempa You are always welcome ;)

  • @PhilipFreude
    @PhilipFreude2 жыл бұрын

    The kubernetes terraform provider introduced a kubernetes_manifest resource a while back. I think it’s a better choice than the kubectl provider especially because it’s more readable (not just a single multiline string) and it’s an official provider (in contrast to the third party kubectl provider).

  • @christianlempa

    @christianlempa

    2 жыл бұрын

    Nice, I didn't know that

  • @ronaldm.1556
    @ronaldm.15562 жыл бұрын

    you could create a custom helm chart for these yamls and deploy the argocd on you cluster, this is a MUST have! you gonna love it

  • @christianlempa

    @christianlempa

    2 жыл бұрын

    Sounds like a great idea, currently learning CI CD is one of my topics to learn for this year.

  • @kaveh6161

    @kaveh6161

    Жыл бұрын

    Could you please elaborate on this? I would love to implement your idea, but I need more clues to start. Thanks.

  • @asalehi2255
    @asalehi22557 күн бұрын

    awesome video, a lot of effort but well worth it. Thank you for video.

  • @christianlempa

    @christianlempa

    7 күн бұрын

    Thanks 😊

  • @djcardwell
    @djcardwell Жыл бұрын

    Thanks for the high quality videos.

  • @christianlempa

    @christianlempa

    Жыл бұрын

    You’re welcome ☺️

  • @ajk7151
    @ajk715117 күн бұрын

    excellent video! thank you.

  • @christianlempa

    @christianlempa

    16 күн бұрын

    Thank you! :D

  • @ANTGPRO
    @ANTGPRO2 жыл бұрын

    Perfect channel for professionals.

  • @christianlempa

    @christianlempa

    2 жыл бұрын

    Thanks ;)

  • @infologiax
    @infologiax4 ай бұрын

    -Interesting videos as usual, many thanks :)

  • @christianlempa

    @christianlempa

    4 ай бұрын

    you're welcome :)

  • @farzadmf
    @farzadmf2 жыл бұрын

    Very nice video, impressive!

  • @christianlempa

    @christianlempa

    2 жыл бұрын

    Thank you very much!

  • @TheChihuhua
    @TheChihuhua Жыл бұрын

    Amazing! Thank you!

  • @christianlempa

    @christianlempa

    Жыл бұрын

    Thank you too!

  • @user-mh8ck1op3r
    @user-mh8ck1op3r2 жыл бұрын

    man, you are the best👍 thanks

  • @wilburdietz1780
    @wilburdietz1780 Жыл бұрын

    Bro....awesome ..ty

  • @mrpheo
    @mrpheo2 жыл бұрын

    love the drawings in your videos, is that just an ipad app and you are screen capturing the ipad?

  • @christianlempa

    @christianlempa

    2 жыл бұрын

    Thanks ;) It's just my Samsung Galaxy Tab as an external screen and recording in OBS

  • @olivierbourdon2397
    @olivierbourdon23974 күн бұрын

    Great video as usual. Just wondering if some of the new features of latest Terraform versions like pre and post conditions could solve some of the timing issues you mentioned and therefore get rid of the timers ;-)

  • @christianlempa

    @christianlempa

    2 күн бұрын

    Thanks for the idea, I think that would be great to solve some of the problems here ;)

  • @StanyCarteny
    @StanyCarteny2 жыл бұрын

    Great Works!!!!

  • @christianlempa

    @christianlempa

    2 жыл бұрын

    Thanks!

  • @Tech-Junkie
    @Tech-Junkie2 жыл бұрын

    Thanks for the high quality content. There's one thing I would like to ask. Does teraform have any kind of code encrypting/compiling function so that people got the encoded copy they cannot read the source code but able to run it.

  • @KD_Puvvadi

    @KD_Puvvadi

    2 жыл бұрын

    while running terraform plan, you can add -out with output file like "terraform plan -out kubclt" and you can run "terraform apply kubctl"

  • @bxhehehehdhdhhd1443

    @bxhehehehdhdhhd1443

    2 жыл бұрын

    Yes the terraform plan provides the binary to run and configure your infrastructure

  • @SaikumarN1993
    @SaikumarN19932 жыл бұрын

    Lovely mate..

  • @christianlempa

    @christianlempa

    2 жыл бұрын

    Thank you! Cheers!

  • @marcosx86
    @marcosx86 Жыл бұрын

    16:00 you can use both atomic and wait equals true on the cert manager helm release and evict a time_sleep resource

  • @christianlempa

    @christianlempa

    Жыл бұрын

    Thanks mate!

  • @PhilipFreude
    @PhilipFreude2 жыл бұрын

    Nice Video! However, try not to use the „depends_on“ keyword, but instead you should reference the dependent resource. For the „helm_release.traefik“ resource you should set „namespace = kubernetes_namespace.metadata.0.name“. This way terraform can figure out the dependencies automatically and most importantly you don’t repeat yourself (i.e. when changing the namespace name you only need to change it in one location). Using „depends_on“ is not a good practice, and you will thank me once you terraform codebase reaches a certain size.

  • @capps1994

    @capps1994

    2 жыл бұрын

    Yeah terraform will implicitly wait for the value you have referenced

  • @christianlempa

    @christianlempa

    2 жыл бұрын

    Thank you, that's such a great tip ;)

  • @zixxrElixir
    @zixxrElixir2 жыл бұрын

    Great video with a lot of good detail! I'll say though Terraform is great at a lot of things except for Helm deployments...very static compared to something like ArgoCD.... ask me how I know.

  • @christianlempa

    @christianlempa

    2 жыл бұрын

    Thanks! :)

  • @Az9rtt
    @Az9rtt2 жыл бұрын

    This is super cool. Could you please make it a little more sophisticated using redis, postgresql ha, minio and perhaps argocd to deploy an app repository?

  • @christianlempa

    @christianlempa

    2 жыл бұрын

    Wow, Argo CD that's something I don't know anything about :D It's on my list to learn for this year.

  • @user-tu7yt6fn2z
    @user-tu7yt6fn2z3 ай бұрын

    Very informative. I tried to create a GKE auto mode cluster with a shared VPC network(private IP range), and assigned necessary IAM roles to the GKE hosted service project with (compute.engineadmin and container.admin roles). While provisioning the gke auto pilot cluster, getting this exception as - " 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." Verified the logs for any key findings, but not helpful. Any thoughts/references on this error scenario to troubleshoot ??

  • @kaveh6161
    @kaveh6161 Жыл бұрын

    F#%^ing awesome. Thanks for sharing 🤗

  • @christianlempa

    @christianlempa

    Жыл бұрын

    Glad you enjoyed it

  • @TakeOnMe5
    @TakeOnMe57 ай бұрын

    My head just got terraformed 🤯

  • @tanchwa3740
    @tanchwa37402 жыл бұрын

    So I haven't been able to find a good answer for this online. When is it appropriate to run ingress on bare metal/ terraform versus through the ingress controller object in Kubernetes?

  • @tanchwa3740

    @tanchwa3740

    2 жыл бұрын

    Or was this actually a k8s object since it got run through a helm chart?

  • @KD_Puvvadi
    @KD_Puvvadi2 жыл бұрын

    man, my love for terraform exceeds love for myself

  • @ummeamjad1191
    @ummeamjad1191 Жыл бұрын

    Please make a video of deploying eks cluster using Terraform

  • @cheebadigga4092
    @cheebadigga40922 жыл бұрын

    Curious: why did you set "proxied" to false at the last step (nginx DNS record)? Any particular reason or didn't that matter to you in that case?

  • @christianlempa

    @christianlempa

    2 жыл бұрын

    Mainly to show how the cert-manager certificate is working.

  • @cheebadigga4092

    @cheebadigga4092

    2 жыл бұрын

    @@christianlempa ahhh good point.

  • @montyh9448
    @montyh94482 жыл бұрын

    Amazing

  • @christianlempa

    @christianlempa

    2 жыл бұрын

    Thanks

  • @fabmartel
    @fabmartel7 ай бұрын

    you dont have the Terraform for create the cluster Kubernetes on Premises (no cloud) ?

  • @gookulgopan
    @gookulgopan10 ай бұрын

    may I know which tool you are using for that handwritten visualizations ?

  • @christianlempa

    @christianlempa

    10 ай бұрын

    I think that time I was using explain everything, now I’m using excalidraw

  • @OlegKorsak
    @OlegKorsak Жыл бұрын

    why not to let traefik to do certificate stuff?

  • @marcelomarcon8216
    @marcelomarcon8216 Жыл бұрын

    What is this vscode theme that you uses ?

  • @abdulmunir3662
    @abdulmunir36622 жыл бұрын

    this is amazing, really help on traefik part as i was trying to do same with AKS , can you share refence link for traefik for the helm parameter in terraform?

  • @christianlempa

    @christianlempa

    2 жыл бұрын

    Thank you so much! Which reference do you mean?

  • @abdulmunir3662

    @abdulmunir3662

    2 жыл бұрын

    @@christianlempa the parameter for traefik helm chart in terraform like this one set { name = "ingressClass.isDefaultClass" value = "true" }

  • @vincentmetallive
    @vincentmetallive2 жыл бұрын

    ok first of all, GREAT RESOURCE!, Thanks! I have some trouble converting this to a non-civo based cluster (I run on Azure). Could you tell me how the cluster knows to connect the loadbalancer to traefik ? Can this be forced ?

  • @christianlempa

    @christianlempa

    2 жыл бұрын

    Hey mate, sorry I only have done it on Civo. I guess it depends on the Terraform Provider for Azure how to do that, but they should have a similar config.

  • @vincentmetallive

    @vincentmetallive

    2 жыл бұрын

    @@christianlempa thanks!

  • @shashank.bharadwaj
    @shashank.bharadwaj2 жыл бұрын

    Hey Christian! Great video as always!. I have a video request showcasing the proper way to setup WordPress with SSL using Nginx which is reverse proxying to an Apache back-end. I'm really stuck from 2 days and not much help online on the forums. Would really love it if you make an in-depth video with SSL in the picture with WordPress. At some point i had WordPress pages working but i couldn't login to wp-admin as it always told "you are not authorized to access this page". All permissions are setup correctly. It was working before with Apache. I believe it has to do something with the reverse proxy which messes up wp-admin dashboard. Hoping to get a solution from you! As always Thanks a bunch!

  • @christianlempa

    @christianlempa

    2 жыл бұрын

    I currently have too many projects to do. But I will at some point look into that. However I plan a slightly different setup with an HA PHP-FPM based setup of wordpress on Kubernetes. Will be a bit of a challenge 🤣

  • @AloeusCapitalManagem
    @AloeusCapitalManagem Жыл бұрын

    you can also terraform virtio which I found nicer (I think everyone would have their own opinion about this) than proxmox for local projects

  • @benjamin3044
    @benjamin30447 ай бұрын

    Give us an OpenTofu tutorial next!

  • @infocus-media
    @infocus-media Жыл бұрын

    Very funny Christian , "If that does not sound very interesting to you, then I don't know what you are doing here?", well kind sir, I was enjoying a cup of French Coffee with an English friend of mine, in an Antwerp Coffee shop when I heard a knock on the door, and voila there was this guy called Christian, peddling software and I thought to myself , "It is probably going to be more interesting listening to him than trying to understand the Englishman's DRY sense of humor, and we speak IT does not matter where you from. I can even watch a Polish IT guy on KZread and just by the way he pulls his face and angrily points at a non existing point in the sky I instinctively know he is getting problems from a Load balancer somewhere in Das Bundesrepublik and there is a Data Center in Berlin that is guarded by a guy called Christian Lempa who does not want to give him access the iDRAC on his New Dell.

  • @jonkoenig2478

    @jonkoenig2478

    Жыл бұрын

    What?

  • @allisondealmeida
    @allisondealmeida2 жыл бұрын

    This project can be applied in On-premises?

  • @christianlempa

    @christianlempa

    2 жыл бұрын

    The projects would need some adjustments, but you could in theory use the same tools, yes.

  • @i-am-oi
    @i-am-oi2 жыл бұрын

    Great Video! I hope somebody can help me to solve this issue and understand how to implement the best approach. I have a number of situations where I need to retry a task n-times if it fails. My ask is, I need help writing a Terraform module to monitor an azure task which is to restart it in case it encounters an exception. retry logic). If an exception is thrown, the task should be retried up to the max-retry count.

  • @sagarbasutkar1901
    @sagarbasutkar1901Ай бұрын

    How to run this via cloudbuild yaml

  • @seanknowles9985
    @seanknowles9985 Жыл бұрын

    Man I wish someone would show us how to deploy multiple gcp backend services, setup ingress and load balancer and then setup proper custom domains with either Terraform or Pulumi. Could start with a Cloud run example.

  • @bmejia220

    @bmejia220

    11 ай бұрын

    You can do it Sean!

  • @seanknowles9985

    @seanknowles9985

    11 ай бұрын

    @@bmejia220 if someone would actually show the end to end solution I can probably do it ;)

  • @Fiox789
    @Fiox7892 жыл бұрын

    How do I get ahead at work if everyone they hire or that remains in a similar position knows more than I do? Room full of engineers I'm the newest and dumbest, currently a hiring spree these new people know way more than I do leapfrog over me for raises and promotions

  • @kebab-case
    @kebab-case2 жыл бұрын

    Can you do a video on Harvester

  • @christianlempa

    @christianlempa

    2 жыл бұрын

    Not in the near future, maybe I'll do at some point.

  • @skaramicke
    @skaramicke Жыл бұрын

    Now do one for OpenStack!

  • @Falc0n68
    @Falc0n68 Жыл бұрын

    Don't you need 3 nodes for it to be HA?!

  • @brensleyfoster700
    @brensleyfoster7002 жыл бұрын

    Once again, can you share the code....?

  • @christianlempa

    @christianlempa

    2 жыл бұрын

    It's on my GitHub

  • @enzo.albornoz
    @enzo.albornoz Жыл бұрын

    It's just me or he put a frame with a clown at 20:10?

  • @christianlempa

    @christianlempa

    Жыл бұрын

    That’s my desktop wallpaper sneaking in xD

  • @dyllanmccreary688
    @dyllanmccreary68810 ай бұрын

    “Deploy in seconds”

  • @ss-o
    @ss-o2 жыл бұрын

    Got tired of KZreadrs making the same videos about the same tech + in a narrow window while there is so much news and improvements made. Sad to unsubscribe those who had a good start. but failed along the way...

  • @sundarshi

    @sundarshi

    2 жыл бұрын

    M

  • @Admiral_AWS
    @Admiral_AWS2 жыл бұрын

    Pretty homosexual thumbnail but the content of the video is on point. Good job my man!

  • @crap2642
    @crap26422 жыл бұрын

    Using Terraform for such things is a really bad idea. Overly complicated, unmaintainable and inflexible. Terraform is for creating VMs, volumes and stuff. It's a not configuration tool.

  • @marcusaurelius6607
    @marcusaurelius66075 ай бұрын

    i want to like this stack, but this is just a horrible way of doing things, a cake with a million layers of abstractions and code everyone uses with zero understanding of inner workings. so a simple task of deploying a binary becomes an insane mashup of CRAP that nobody needs.

  • @TheLocalStuff
    @TheLocalStuff2 ай бұрын

    Thanks!

  • @christianlempa

    @christianlempa

    2 ай бұрын

    Thank you so much for your support ❤️👏

Келесі