GitHub Actions: Dive into actions-runner-controller (ARC) || Advanced installation & configuration

Поделиться
HTML-код
  • Опубликовано: 24 июл 2024
  • Actions Runner Controller (ARC) is a Kubernetes operator that orchestrates and scales self-hosted runners for GitHub Actions. With ARC, you can create runner scale sets that automatically scale based on the number of workflows running in your repository, organization, or enterprise.
    This video is a deep dive into the different components of ARC, the design decisions, the helm chart configurations and everything you need to know to successfully use it.
    ▬▬▬▬▬▬ Resources & References 📕 ▬▬▬▬▬▬
    - ARC documentation: gh.io/arc-docs
    - ARC repository: github.com/actions/actions-ru...
    ▬▬▬▬▬▬ Chapters 🕐 ▬▬▬▬▬▬
    00:00:00 - Intro
    00:01:01 - Brief history
    00:01:55 - Docs walkthrough & design decisions
    00:08:10 - Architecture overview
    00:09:54 - What are runner scale sets?
    00:15:20 - Controller manager & listener
    00:24:33 - The ARC repository structure
    00:25:19 - GitHub support vs community support
    00:27:51 - Legacy runner images
    00:31:58 - ARC releases (artifacts & packages)
    00:33:17 - The helm charts packages
    00:35:05 - Why 2 helm charts?
    00:36:46 - Legacy ARC packages
    00:39:54 - ARC pre-requisites setup
    00:48:29 - Controller-manager configuration options
    01:02:54 - Installing the controller-manager
    01:07:37 - Installing a runner scale set
    01:08:36 - Link to GitHub Actions App setup
    01:10:14 - Creating a GitHub App Kubernetes secret
    01:12:57 - HTTP proxy configuration
    01:16:18 - Min-max boundaries
    01:18:40 - Runner scale set name override
    01:19:58 - Custom CA self-signed certificates
    01:29:04 - Understanding containerMode
    01:33:45 - Configuring Docker in Docker (DinD) container mode
    01:36:57 - Installing a runner scale set (DinD mode)
    01:43:31 - Docker in Docker (Dind) simple workflow demo
    01:46:47 - DinD with service container demo
    01:50:08 - Kubernetes container mode
    01:58:00 - Troubleshooting a failed installation
    01:59:59 - Kubernetes mode demo with service container
    ▬▬▬▬▬▬ Connect with me 👋 ▬▬▬▬▬▬
    - Twitter: / bassemdy
    - GitHub: github.com/link-
    - LinkedIn: / bassemdghaidy
    - Facebook: / bassemdy
    - Blog: blog.bassemdy.com
    ▬▬▬▬▬▬ Support the channel 💜 ▬▬▬▬▬▬
    Every little bit helps ✨
    - Become a member of the channel: glich.stream/yt_members
    - Get access to Patreon exclusive perks: glich.stream/patreon
    - 1 time support: glich.stream/coffee_shop
    #glichstream #softwareengineering #programming #coding
  • НаукаНаука

Комментарии • 74

  • @mehralmohit
    @mehralmohit Месяц назад +3

    I just wanted to take a moment to thank you for your amazing tutorial on creating an actions-runner-controller. Your explanation was clear, concise, and incredibly helpful. The step-by-step instructions and the attention to detail made it easy to follow along and understand the entire process.
    Your video has made a significant impact on my project, and I appreciate the effort you put into making such high-quality content. Please keep up the fantastic work; your expertise and teaching style are much appreciated!
    Looking forward to more great tutorials from you.
    Although the actions-runner and controller image version changed from 0.4.0 to 0.9.2, everything else was mostly the same and very well controlled by the values.yaml file. I also liked how you distinguished and demonstrated the two different container types (Docker in Docker and Kubernetes) for the runner skill set.

  • @pishangujeniya
    @pishangujeniya 10 месяцев назад +4

    Thanks It was really a very good in-depth explanation of history, and evolution of ARC along with guidance to setup inhouse.

  • @sherifabdalla
    @sherifabdalla 2 месяца назад

    Your detailed exploration of the actions-runner repositorys was incredibly helpful. Thank you for providing such a valuable resource.

  • @renan00almeida
    @renan00almeida 7 месяцев назад +3

    Thank you so much for creating this! Extremely didactic and rich in content! You've got a new follower here :)

  • @hseinb
    @hseinb Год назад +3

    Thanks a lot Bassem, I loved the details and the depth of the information presented.

  • @Misanthrope84
    @Misanthrope84 9 месяцев назад

    Gotta say, you explain things very clearly and have a vast knowledge of many topics. Thanks for this, watched from start to finish. Greetings from Israel.

  • @SerpentsHiss
    @SerpentsHiss 10 месяцев назад +1

    Thanks for the in depth explanation of whats new in ARC, the design seems better, though communication around the upgrade is made harder by deprecating labels.

    • @glich.stream
      @glich.stream  10 месяцев назад

      Labels are a feature that should not have been a feature 😄 so we’re correcting it now

  • @dontstopfilming
    @dontstopfilming Год назад

    I appreciate the effort you've shared with us.

  • @stavaracheandreiful
    @stavaracheandreiful 7 месяцев назад

    Really really good and clear explanation. Content creators should learn from you how it's done

    • @glich.stream
      @glich.stream  7 месяцев назад

      This means a lot to me, thank you 🙏

  • @danielgenis3253
    @danielgenis3253 8 месяцев назад +1

    Woah, I was planing to simply upadte our ARC, but it looks like i got more work to do 🥳

    • @glich.stream
      @glich.stream  8 месяцев назад +1

      Yeah it’s more of a migration than an upgrade

    • @danielgenis3253
      @danielgenis3253 8 месяцев назад

      If [edit: you] got the scaling right, then it'll be all worth it.

    • @danielgenis3253
      @danielgenis3253 8 месяцев назад

      ​@@glich.stream
      My compliments to you and your team.
      We did the migration and the scaling works perfectly 🥳

    • @glich.stream
      @glich.stream  8 месяцев назад

      @@danielgenis3253 🙌🙌🙌🙌

    • @greg_thomson
      @greg_thomson 4 месяца назад

      Any tips on migration ? We have similar situation

  • @malikdarwech8732
    @malikdarwech8732 4 месяца назад

    Thank you so much for the great content! The way you explain things and break them down is extremely helpful, you are a very good teacher! A small input, not sure if I am doing something wrong, but when creating the App Kubernetes secret we are using the arc-runners namespace, however it has not yet been created. The namespace "arc-runners" is created later when creating custom self-signed certs. I was able to create the secrete in the namespace after creating the namespace in self-signed certs walk-through later in the lesson. Alternatively, I guess we can create the namespace when creating secret as opposed to when creating self-signed certs?

  • @serbantarmure1510
    @serbantarmure1510 4 месяца назад

    Hey! Thanks for the clear explanations!
    I got a question: Do you know where I can find an image that is using Ubuntu 20 instead of Ubuntu 22. Or it won't be supported for runner-scale-sets?

  • @Kyrylo7
    @Kyrylo7 11 месяцев назад

    Thanks for the video Bassem, I was just wondering, we are using old legacy mode for now, is there a way to have long living containers that can share(have warmed up caches) so during business hours we can run similar workflows faster. We achieved this in the old mode by removing the ephemeral flag and performing scaling slower.

    • @glich.stream
      @glich.stream  11 месяцев назад +1

      You can set a minimum number of runners to scale down to. So you’d configure a scale set with let’s say 5 runners with a container image having all your tools/configuration. There’s no way to have static non-ephemeral runners with the new mode

  • @MiRiccardo
    @MiRiccardo 10 месяцев назад +4

    Hi Bassem, thanks for the video! One question - as a long user of the community solution, i wonder why you say "you cannot build docker images with dind", since we have been building docker images just find with dind on arc. Could you help me understand?

    • @glich.stream
      @glich.stream  10 месяцев назад +3

      It’s a mistake from my end! Building Docker containers is definitely feasible with DinD, it’s not possible off the shelf when running Kubernetes mode! Thanks for spotting this and highlighting it

  • @spasham74
    @spasham74 4 месяца назад

    Hi there, I am able to get arc deployed to eks with fargate backend. However I am unable to get docker builds on these runners.

  • @atanudebnath9173
    @atanudebnath9173 14 дней назад

    Could you please demonstrate a CD flow where you are connecting these ARC runner to work as a Managed Identity and connect it to another AKS clusters to perform a CD

  • @lesad-su5nc
    @lesad-su5nc 9 месяцев назад +1

    Thank you for the explanation! would it be possible to use GKE as part of the kubernetes cluster?

  • @ajaydhungel8558
    @ajaydhungel8558 4 месяца назад

    Hi, does anyone know which of his videos have Github apps configuration and installation?

  • @spasham74
    @spasham74 11 месяцев назад +1

    Great video. Thank you!. Documentation says to install certs manager before you install ARC. However I do not remember seeing any instructions on it. Please advise. Do we need Certs manager?

    • @glich.stream
      @glich.stream  11 месяцев назад +1

      You don’t need cert manager. The docs are here: gh.io/arc-docs

    • @spasham74
      @spasham74 7 месяцев назад

      As suggested in the document, I am unable to make runner scale set and controller deployed in different namespace talk to each other. Any idea why?

  • @BennyAtia
    @BennyAtia 6 месяцев назад

    Does it support aks virtual nodes?
    Great vid and solution thanks!

  • @mangaiyarkarasisivakolunth8229
    @mangaiyarkarasisivakolunth8229 3 месяца назад

    Is there is any tracing feature available in GitHub actions currently?

  • @SandeepYadav93
    @SandeepYadav93 11 месяцев назад

    Can we run job on VM instead of pods using ARC, do you support registring Vm spawned by kubevirt?

    • @glich.stream
      @glich.stream  11 месяцев назад

      The short answer is no. We only support Kubernetes vanilla. Even if it might technically work with kubevirt, we do not support it.

  • @LinusTan-sw6hc
    @LinusTan-sw6hc Месяц назад

    Hi I'm getting this Error: Container feature is not supported when runner is already running inside container. Any workarounds for this?

  • @mangaiyarkarasisivakolunth8229
    @mangaiyarkarasisivakolunth8229 11 месяцев назад

    Thank you. It was a great presentation! One query here- How can be monitor the action runner controller ? Can we get the traces and service metrics for action runner controllers?

    • @glich.stream
      @glich.stream  11 месяцев назад

      Metrics will be released in the gha-runner-scale-set-0.5.0 release

  • @DennisHaney
    @DennisHaney 11 месяцев назад

    Is there an actual working example of gha-runner-scale-set anywhere? I can get the most trivial echo action to work just fine, but anything with docker or volumes fails with errors or permissions or both

    • @glich.stream
      @glich.stream  10 месяцев назад

      Create your own runner image and install whatever you want on it. We won’t provide an image with 3rd party tools on it

  • @pank0123
    @pank0123 11 месяцев назад

    How do we define to use windows image for actions runner? There are lot of workflows in the repos that we have which runs on windows based runners.

    • @glich.stream
      @glich.stream  11 месяцев назад

      Windows runners are not supported

  • @justillia
    @justillia 2 месяца назад

    Why action-runner-controller deletes runners pod and does not wait for cluster autoscaler? I did not find any values to manage a timing that would allow me to have a zero scaled node pool for my github runners, so we still use gitlab, it is waiting the node to be ready by default.

  • @eranlevin6529
    @eranlevin6529 8 месяцев назад

    Thank you, Great video!!! you saved me a lot of time.
    I have a question regards the docker image I'm using for the runners. I'm using containerMode dind with 2.311.0 image and i notice that it doesn't contains the Third-party like aws cli, git ...
    I couldn't find how can i use the ubuntu-22.04 image or something similar.

    • @glich.stream
      @glich.stream  8 месяцев назад

      The runner image comes WITHOUT batteries. No 3rd party tools are provided by default. The recommendation is for you to use our runner image as a base image to build your own and include any tools you need.

    • @eranlevin6529
      @eranlevin6529 8 месяцев назад

      @glich.stream
      I created a new Dockerfile based on 2.311.0 as you suggested and push it to my ecr. when using my custom image the pod doesn't start. it fails and after few retries it gives up with no logs. any suggestions?
      Can I modify the dind Template.spec context and add to the command apt install ?

  • @ralphotowo5142
    @ralphotowo5142 4 месяца назад

    Insightful, thank you lots! I've got a question regarding kubernetes mode. Are we able to set the resource requests & limits for the child pods?

    • @glich.stream
      @glich.stream  4 месяца назад

      Yes

    • @ralphotowo5142
      @ralphotowo5142 4 месяца назад

      @@glich.stream Just to be sure I got my question across correctly, I'm not referring to the runner itself, I'm referring to the child pod that is created after the runner receives a job. I've noticed it's not inheriting the resource requests and limits set on the runner pod. If it is possible to set resource requests and limits independent of the runner pod, that would be a perfect solve for my problem. Can you please point me to an example? I'm not sure where to configure the child pods.

  • @user-cq5pq9lv3e
    @user-cq5pq9lv3e 4 месяца назад

    are there any plans to add windows images and document how to use it?

  • @mohammedayan3474
    @mohammedayan3474 11 месяцев назад

    I have implemented actions runner controller with DIND mode in our env and rolled out to developers. Developers are not satisfied with the performance we are getting. It is very very slow as compared to GitHub hosted runners. Can you please suggest any optimisations which can improve the speed of building the job?

    • @glich.stream
      @glich.stream  11 месяцев назад

      Where’s the performance bottleneck at?

  • @leksykoon
    @leksykoon 7 месяцев назад

    This really good technical explanation, thank you!
    I have a question about building docker image in arc runners - you mentioned that this is not supported. Do you have any workaround or other solution to recommend ?
    I would like to use ARC in my organization, however majority of our pipelines build and push docker images.

    • @glich.stream
      @glich.stream  7 месяцев назад +1

      It's a mistake in the video, building docker images works fine if you're using Docker in Docker. It will not work with Kubernetes mode unless you use another build engine like Kaniko.

    • @leksykoon
      @leksykoon 7 месяцев назад

      @@glich.stream great, thank you.

  • @user-kc7qs6cq9b
    @user-kc7qs6cq9b 5 месяцев назад

    hi I m using enterprise 3.8.8 version currently. I m having issue in listener pods. Which version does ARC supports? Could you plz comment it

  • @mohammedayan3474
    @mohammedayan3474 11 месяцев назад

    I am not able to comment on my old message, But I was saying can we connect on sperate bridge so that I can explain the issues more briefly? We have GitHub Enterprise support as well....

    • @glich.stream
      @glich.stream  11 месяцев назад

      Create a support ticket, the support team can escalate to our team. Make sure to describe in as much detail as possible the issue. Not everything is supported, if the issue is with your setup, our teams cannot help.

  • @praveenambati7804
    @praveenambati7804 6 месяцев назад

    This is amazing working demo 🎉 Thank You ☺️ for motivating me to setup my own ARC. Quick question : where can I change the name of the runner Operation System ? , I want to setup RHEL runners.

    • @glich.stream
      @glich.stream  6 месяцев назад

      Yeah you should be able to use RHEL runners. You need to build your own runner image of course

  • @user-zm9xb6co9q
    @user-zm9xb6co9q 4 месяца назад

    What are the deployment strategies followed for GitHub self-hosted runners here? If we update and apply changes, will the existing runner be removed and a new runner created, or will the newer runner come first and the older runner be removed?

    • @glich.stream
      @glich.stream  4 месяца назад

      You need to uninstall everything and reinstall to upgrade.

  • @iposipos9342
    @iposipos9342 6 месяцев назад

    Thanks for your very helpful video. i was able to understand it much better.
    I was able to set-up the self-hosted runner in Kubernetes mode.
    can you please give me an idea on how to implement kaniko to build and push images on self-hosted runner set in kubernetes mode. is there a documentation for this already? Thank you very much

    • @glich.stream
      @glich.stream  6 месяцев назад

      Start a discussion thread in the repo. I cannot provide support here

    • @iposipos9342
      @iposipos9342 6 месяцев назад

      @@glich.stream Alright Thanks. I have opened a discussion in the action/runner repo.

    • @glich.stream
      @glich.stream  6 месяцев назад

      @@iposipos9342 on actions/action-runner-controller please not runner

    • @iposipos9342
      @iposipos9342 6 месяцев назад

      @@glich.stream okay. i've done that. thanks