Let's learn GitHub Actions in a self-hosted Homelab!

Поділитися
Вставка
  • Опубліковано 22 лип 2024
  • Are you interested in automating your Homelab? Then learning GitHub Actions is a great way to get started! With GitHub Actions, you can automate the process of building, testing, and deploying applications on a Kubernetes Cluster. Instead of spending your day in front of a terminal, you can just sit back and let GitHub Actions do all the work for you. In this video, I’ll show you how to set up a project, install a self-hosted runner, and deploy an app on your local Kubernetes Cluster. Tune in to learn more about Homelab automation with GitHub Actions! #GitHubActions #Homelab #automation
    Write-Up: github.com/ChristianLempa/vid...
    Datree-*: datree.io
    - Datree Tutorial Video: • Learn How to Solve Kub...
    - Kubernetes K3S Tutorial: • Using *HA* Kubernetes ...
    - Proxmox Tutorial: • Create VMs on Proxmox ...
    Follow me:
    TWITTER: / christianlempa
    INSTAGRAM: / christianlempa
    TWITCH: / christianlempa
    DISCORD: / discord
    GITHUB: github.com/christianlempa
    PATREON: / christianlempa
    MY EQUIPMENT: kit.co/christianlempa
    Timestamps:
    00:00 - Introduction
    00:56 - Advertisement-*
    01:32 - What is GitHub Actions?
    03:27 - What's the plan?
    04:40 - Where do GitHub Actions run?
    05:43 - Why use a self-hosted GitHub Runner?
    07:49 - Install the self-hosted Runner on Linux
    10:18 - Prepare the Runner
    11:45 - Create a new project
    14:26 - Do a quick test
    15:53 - Find GitHub Actions on the Marketplace
    17:39 - Authenticate to the local Kubernetes Cluster
    18:57 - Use the Secret in the workflow
    19:15 - Deploy a Kubernetes Application
    20:21 - Use Datree to prevent misconfiguration-*
    22:53 - Use Cases
    ________________
    All links with "*" are affiliate links.

КОМЕНТАРІ • 50

  • @vicentiubucingeni
    @vicentiubucingeni Рік тому +20

    You don't need to create an organization to use self-hosted runners. You can use them with repos on your personal profile too, it's just that you have to add the runner individually to each repository

    • @christianlempa
      @christianlempa  Рік тому +9

      Thanks for sharing! Corrected it in the video.

    • @majorgear1021
      @majorgear1021 Місяць тому

      True. Not only that, but you'll need to install a runner for each repository. I started down that path and realized I'm going to have 23 docker apps in 23 repositories with 23 runners to manage if I did that. So, I create an organization( it was free ) and I'm figuring out if I need to move the repos to the organization to use the 1 org runner, or if members of the organization can use them in their personal repositories.

  • @mialeev
    @mialeev Рік тому

    Thanks for the demo...tried in my home lab and it was fun...

  • @cajuclc
    @cajuclc Рік тому +4

    Awesome tutorial, thanks for this.
    Just a tip for those without organizations. You can also setup Action Runners within a Repo. No need to setup organizations.
    And having automation helps with security, ways to deploy back if anything breaks, you can check what you have done, you can redeploy everything again if needed and the list goes on. Thanks for the video!

    • @christianlempa
      @christianlempa  Рік тому +1

      Thank you, you're absolutely correct! I changed it in the video :)

  • @baguwes
    @baguwes Рік тому +1

    Great Tutorial.
    i never use before because I usually use Jenkins to clone, build, test and deploy.
    but this is a great video for add new insights about CI/CD Tools.

    • @christianlempa
      @christianlempa  Рік тому

      Thank you! ;) Jenkins sounds indeed interesting

  • @jtcressy1
    @jtcressy1 Рік тому +7

    pro tip! if you simply need a connection from github actions to your local network, tailscale is a great solution. It could still be useful even if you are using self-hosted runners in case your runners still don't have direct access to your desired network. No firewall holes, no SSH bastions/jump-hosts - just the tailscale daemon in your workflow and a subnet router somewhere in your private network.

    • @christianlempa
      @christianlempa  Рік тому +1

      That's a great idea man! Thanks for sharing :)

  • @techwithmarco
    @techwithmarco Рік тому

    Very well explained! I love actions and automations 😍 I am already using it with Terraform for a bit of my infrastructure setup.

  • @user-ob3qg2sf8s
    @user-ob3qg2sf8s 9 місяців тому

    Thanks for tutorial! There is no much info on the internet explaining self hosted runners, so it is very appreciated. Could you also make a simular for CircleCI?

  • @erics8362
    @erics8362 Рік тому +1

    Thank you, Christian. Is this some kind of extension or copilot which autosuggest you inside VS Code?

  • @cd-stephen
    @cd-stephen Рік тому

    this is awesome vid thank you

  • @kevintijssen
    @kevintijssen Рік тому

    I am using it in combination with Maven builds and ArgoCD. Actions is very useful but some features aren’t fully mature enough yet

  • @niravraychura
    @niravraychura Рік тому

    I am pretty excited too. In the same way, I also want to use it with Terraform ✌️
    Thank you so much. I still have to learn Kubernetes I know the overview just need to get my hands dirty 😈

    • @christianlempa
      @christianlempa  Рік тому

      Oh yeah, using it with Terraform will be incredible!

  • @TheProximator
    @TheProximator Рік тому

    Perfect man, you are the best :)

  • @itdevops
    @itdevops Рік тому

    Hi, just little question on other subject.
    Is this possible to do multiwan in proxmox. With exemple opentcpm, or other and how do ?
    If is possible.
    Ty for all.

  • @astronemir
    @astronemir 8 місяців тому

    The only thing I want is to limit the runner to be able to only ever communicate with whitelisted things in K8s. In case of hostile takeover of my repo, (say merging a new GitHub action) I want to be able to know that the runner is only ever having access to internal hosts I have pre-authorized it. Should I use nginx for this or native K8s or is there even a whitelist config in the runner?

  • @mzw685
    @mzw685 Рік тому +4

    The security concerns of running arbitrary code that was pushed to a repository were not fully addressed. Self hosted runners should be as isolated as possible and only put on private repos or ran with something like Gitea or GitLab in a private, internal environment

    • @digital-activity
      @digital-activity Рік тому +1

      this is more lilke "how to use github actions on my homelab and don't need to pay for it video, not a security oriented one.

    • @mzw685
      @mzw685 Рік тому +3

      @@digital-activity you already don't need to pay for it with GitHub- it's free on public repos. Just cuz you can build a house without doors so you don't have to pay for it doesn't mean you should. Using a front door/implementing security shouldn't be an after though.

  • @ronm6585
    @ronm6585 Рік тому

    Thanks.

  • @ahmedgis6802
    @ahmedgis6802 Рік тому

    Awesome tutorial. Thank you, Christian. I need to know which VS code extension that you use in this tutorial that auto-suggest the Github Action scripts?

  • @majorgear1021
    @majorgear1021 Місяць тому

    I'm confused about where to install it. Since there wasn't any guidance on which folder to be in, I changed directory into the /tmp folder and followed the instructions to install it as a service.
    Will it run find like that? Or should I uninstall and reinstall someplace else?

  • @marcelk.4371
    @marcelk.4371 Рік тому

    Yes!

  • @maksymhlyva683
    @maksymhlyva683 4 місяці тому

    thanks

  • @sportcodfb
    @sportcodfb 5 місяців тому

    I just used the gh runner self hosted to deploy minio on my local kubernetes cluster using terraform, it was a pretty fun project to do ngl, thanks for the vid Chris :)

  • @sirsirae343
    @sirsirae343 Рік тому +5

    for kubernetes why not the gitops + argocd approach ?

    • @bradleystannard7875
      @bradleystannard7875 Рік тому

      I would argue the same. How ever, that requires additional overhead and more skill. This video is a quick guide, where as going down the argo route is a lot more long winded and opens you to more security concerns.

    • @redlinejoes
      @redlinejoes Рік тому

      That's true about every CNCF solution. There are many options, and they can all solve a problem similarly. Why not one thing versus another often comes down to opinions and subjectivity. We could all ask, "Why not XYZ?" about everything. This is also why teams struggle with CNCF solutions.

    • @StephaneMoser
      @StephaneMoser Рік тому

      That will depende allot of the maturity of the team and the use case. GitOps adds complexity for example in a pipeline to deploy an application with GitOps how the pipeline knows that the deployment just finished?

    • @christianlempa
      @christianlempa  Рік тому +2

      I will make a video about that in a couple of weeks, stay tuned!

  • @dudley810
    @dudley810 Рік тому +1

    Shouldn't you deploy to Kubernetes with the kubectl set image deployments/YourAppName YourAppName=IMAGE:TAG command then you can check your rollout status like this: kubectl rollout status deployment/YourAppName - Then it will do a slow roll of your application.

    • @christianlempa
      @christianlempa  Рік тому

      Well that is not really the main point of the video

    • @dudley810
      @dudley810 Рік тому

      @@christianlempa true just adding that in -- great video. I spent a lot of time on it yesterday. Having a wonderful time trying to figure out how to put a datetime into a enviroment var so I can put it into the image tag. Thanks for getting into my rabbit hole. Having alot of fun.

  • @Stopinvadingmyhardware
    @Stopinvadingmyhardware Рік тому

    keep your shirt

  • @PHOENIX-he9fl
    @PHOENIX-he9fl Рік тому

    bro can you put more video about github action and also use EKS cluster to deploy the kubernetes deployment file.
    and give the more definetion about the parameter which like "uses".
    thanks for this videos

    • @christianlempa
      @christianlempa  Рік тому

      Not using GKE, so that won’t happen unfortunately:(

  • @zuimelanieforno4654
    @zuimelanieforno4654 Рік тому +2

    Moinsen. Genau richtig der Zeitpunkt muss mein Projekt für FIAE abgeben und mal jemand der mir die Runner erklärt. Bin bei 1:39 und schon am Kommentieren. Hmmm... Mal sehen was da noch kommt, sonst gibt es mega Diskussion im Discord. Versprochen. Grüße aus HH, dein dich lieb... upsie :)

    • @christianlempa
      @christianlempa  Рік тому +1

      Hahaha, hoffe dir hat's gefallen! LG :D

    • @matthi1786
      @matthi1786 6 місяців тому +1

      Das klingt nach einem spannende Projekt für FIAE. Hoffe es hat alles geklappt und du bist fertig.

    • @zuimelanieforno4654
      @zuimelanieforno4654 6 місяців тому

      @@matthi1786 Danke. Ja geprüft und über 90 Punkte in Projekt und mündlicher. 😃 Projekt war "Praktikaverwaltung für FachinformatikernInnen", Zielgruppe FI-Ausbilder. Also eine Verwaltungssoftware für Praktika-Verträge und natürlich mit DB (Maria, Dapper als ORM, WPf als UI, MVVM und DependencyInjection und sowas...) Liebe grüße aus HaHa und jetzt als FIFI.. aähh meinte FIAE 💾

  • @manjubeli
    @manjubeli Рік тому

    Please reduce background music. So much so you can completely mute it. Your content is so good but it’s so hard to comprehend because of sound track.
    You can see many UA-camrs don’t have any background at all and it sounds so professional.

  • @asekebaseke6253
    @asekebaseke6253 4 місяці тому

    ❗️👎🏾terrible background music
    ❤️👍🏻 great tutorial
    Be like Nana ❤️✅, she has 1 MILLION subscribers without those stupid background musics 🤮