Anton hi, thanks for a great tutorial. Can you pls suggest how to define image for self hosted K8s github actions runner? Let's assume I have automation tests written on Java and to run those tests I need Chrome browser, for time saving purpose - it could be great to have already installed on my runner Java and Chrome , so I will justly run the tests and not perform any installations from workflows (within github actions).
Build a Docker Image and Publish It to AWS ECR using Github Actions - ua-cam.com/video/Hv5UcBYseus/v-deo.html Build a Docker Image and Publish It to GCP GCR & Artifact Registry using Github Actions - ua-cam.com/video/6dLHcnlPi_U/v-deo.html
This is legacy version. It would be greate if you make an other video about GitHub Actions Self Hosted Runner with runner-scale-set chart and runner-scale-set-controller chart.
Clear, concise and to the point. Nice job on this video Anton. I just have a general question about the custom resource definition for k8s self hosted runners. Did you create it? Is there an officially supported CRDs for Github self hosted runners?
Hello Anton. Thank you very much, it was straight to the point and a very good explanation of the topic. I have one question, I am just curious if we can provide custom docker image to our runner pods having all the dependencies for the applicaton build preinstalled. Any article/video will be much appreciated. Thanks in advance
Welsome, you can build your own image github.com/machine-learning-apps/self-hosted-k8s-runner/blob/master/README.md#optional-customize-your-self-hosted-runner
Great video. Question. I have a self hosted runner deployed in AWS eks. I am able to build most the stages in GitHub actions. I understand docker is not longer supported on k8s so how do you build images on self hosted runner on k8s
Take a look at this "Adding ARC runners to a repository, organization, or enterprise" github.com/actions/actions-runner-controller/blob/master/docs/choosing-runner-destination.md
@@AntonPutra It sounds like metrics requires you to list repositories if I am reading it correctly. Note that I set this up, but I never seem to see scaldown happening. I even had cases where I was left with many sitting offline. I ended up manually deleting those in the Github console.
Hi. Could you let me know where your Fargate video is? I couldn’t find it. I wasn’t sure if I could use Fargate to host self hosted runners as Fargate doesn’t allow privileged containers.
Hi Anton, Great video! but I have a question, what if we want to use our own docker image for the runners? I did not see any configuration for custom docker image. Thank you!
Thanks! You can then configure the runner to use a custom docker image by configuring the image field of a Runner or RunnerDeployment. Doc - github.com/actions-runner-controller/actions-runner-controller/blob/master/docs/detailed-docs.md#software-installed-in-the-runner-image
It's a Custom Resource Definition provided by actions-runner-controller, that watches the repository and creates pods to run your workflows. Here is a link - github.com/actions-runner-controller/actions-runner-controller#runnerdeployments
Awesome tutorial, I implemented something similar in GCP but using VMs, this allows me to scale down to zero when idle. Do you think would be possible to implement something similar in AWS? I didn’t put the link but you should be able to find it in my channel.
@@OutOfDevOps well, not even masters, you still need to run DNS and some other components. Even autoscaller has to be deployed somewhere. It's a good solution when you already have a cluster and want to share it with ci/cd.
Great video Anton! I had a question regarding installing cert-manager, if you aren't handling SSL/TLS for DNS, did you need to install cert-manager? You mentioned the webbook as an option which I'm sure is where the cert-manager would have been supported/used.
Thanks, you need cert-manager only if you want to expose your service from kubernetes to the internet and encrypt the traffic with SSL/TLS (HTTPS). If you just want to use plain http, you don't need cert-manager.
I have couple of questions related to self hosted runners. 1. I have configured self hosted runner and i always wanted to be active so that my other team members can use it. But when my laptop is not turned on, other people who are running the pipeline, it is going to queue. Any idea on how to overcome that? 2. Lets say I create 3 individual self hosted runners in 3 of my team mates machines. I need github pipeline to pick the one which is online not the one which is offline. Is it possible and how do we do that.?
i never ran self hosted runners for prod environments on local machine. I would assume it should automatically run on online runners, or you can try to use labels/tags.
I found it in the docs "Administration (read / write)". Here is a link - github.com/actions-runner-controller/actions-runner-controller#deploying-using-github-app-authentication
this one - Docker: github.com/actions-runner-controller/actions-runner-controller/blob/master/runner/Dockerfile, image - github.com/actions-runner-controller/actions-runner-controller/blob/master/charts/actions-runner-controller/values.yaml#L40-L42
🔴 - To support my channel, I’d like to offer Mentorship/On-the-Job Support/Consulting - me@antonputra.com
👉 How to Manage Secrets in Terraform - ua-cam.com/video/3N0tGKwvBdA/v-deo.html
👉 Terraform Tips & Tricks - ua-cam.com/video/7S94oUTy2z4/v-deo.html
👉 ArgoCD Tutorial - ua-cam.com/video/zGndgdGa1Tc/v-deo.html
Anton hi, thanks for a great tutorial. Can you pls suggest how to define image for self hosted K8s github actions runner? Let's assume I have automation tests written on Java and to run those tests I need Chrome browser, for time saving purpose - it could be great to have already installed on my runner Java and Chrome , so I will justly run the tests and not perform any installations from workflows (within github actions).
Build a Docker Image and Publish It to AWS ECR using Github Actions - ua-cam.com/video/Hv5UcBYseus/v-deo.html
Build a Docker Image and Publish It to GCP GCR & Artifact Registry using Github Actions - ua-cam.com/video/6dLHcnlPi_U/v-deo.html
Thanks!
Welcome!
Amazing man
Keep sharing that level of content
Thanks SAADULLAH! Will do!
Awesome tutorial. Have learned so much.
Would you create another video on how to create this with webhook and using OIDC or similar
Propably in the future, combining with org level runners.
I just did this (webhook), it was pretty straightforward. But then we have a sweet setup with Contour and Envoy which makes ingresses a breeze.
@@jimbrannlund4677 Can you please share the entire steps here?
@@jishaashok I can try
Awesome work! Thank you so much for sharing this!
Thanks Suvodeep!
More and more useful videos! Thank you!
Thanks Alex:)
Keep up the good work, as always to the point.
Thanks Valour!
This is legacy version. It would be greate if you make an other video about GitHub Actions Self Hosted Runner with runner-scale-set chart and runner-scale-set-controller chart.
I was thinking about refreshing. Maybe I'll create a mini playlist for GitHub Actions.
super stuff!
thank you my good dude, that helped alot!
Thanks, Eli!
Clear, concise and to the point. Nice job on this video Anton. I just have a general question about the custom resource definition for k8s self hosted runners. Did you create it? Is there an officially supported CRDs for Github self hosted runners?
Sorry for the late response, here is a reference - github.com/actions-runner-controller/actions-runner-controller/tree/master/config/crd
Hello Anton. Thank you very much, it was straight to the point and a very good explanation of the topic.
I have one question, I am just curious if we can provide custom docker image to our runner pods having all the dependencies for the applicaton build preinstalled. Any article/video will be much appreciated. Thanks in advance
Welsome, you can build your own image github.com/machine-learning-apps/self-hosted-k8s-runner/blob/master/README.md#optional-customize-your-self-hosted-runner
Do you have module how to build image via tags, pr and branch using github actions?
amazing job, thank you so much for this material
Glad it was helpful!
It is more than great. Thanks.
Thanks siamak!
Great video.
Question. I have a self hosted runner deployed in AWS eks. I am able to build most the stages in GitHub actions. I understand docker is not longer supported on k8s so how do you build images on self hosted runner on k8s
You don't have to use docker to build docker images, for example you can use kaniko
@@AntonPutra do you have any example snippets that you can share? There isn’t any office GitHub actions for kaniko
for horizontal run autoscalar you specify repositoryNames:. What if you want to allow all repositories in an org?
Take a look at this "Adding ARC runners to a repository, organization, or enterprise"
github.com/actions/actions-runner-controller/blob/master/docs/choosing-runner-destination.md
@@AntonPutra It sounds like metrics requires you to list repositories if I am reading it correctly. Note that I set this up, but I never seem to see scaldown happening. I even had cases where I was left with many sitting offline. I ended up manually deleting those in the Github console.
Thanks a lot Anton!
Can you please create a video on how to host Self Hosted Runner with Fargate profile? or any tips about it?
Sure, I already have a video for AWS Fargate
Hi. Could you let me know where your Fargate video is? I couldn’t find it. I wasn’t sure if I could use Fargate to host self hosted runners as Fargate doesn’t allow privileged containers.
Very nice! Thanks!
thanks! I'll refresh series soon..
Hi Anton,
Great video! but I have a question, what if we want to use our own docker image for the runners? I did not see any configuration for custom docker image. Thank you!
Thanks! You can then configure the runner to use a custom docker image by configuring the image field of a Runner or RunnerDeployment.
Doc - github.com/actions-runner-controller/actions-runner-controller/blob/master/docs/detailed-docs.md#software-installed-in-the-runner-image
Execellent video, thank you!
What's the point of RunnerDeployment, I don't understand the difference with custom runners.
It's a Custom Resource Definition provided by actions-runner-controller, that watches the repository and creates pods to run your workflows. Here is a link - github.com/actions-runner-controller/actions-runner-controller#runnerdeployments
@@AntonPutra Thanks for the fast reply!
Awesome tutorial, I implemented something similar in GCP but using VMs, this allows me to scale down to zero when idle. Do you think would be possible to implement something similar in AWS? I didn’t put the link but you should be able to find it in my channel.
Thanks! You can defiantly scale down to 0 Kubernetes instance group.
@@AntonPutra do you have to pay for the master nodes even if you have zero nodes?
@@OutOfDevOps well, not even masters, you still need to run DNS and some other components. Even autoscaller has to be deployed somewhere. It's a good solution when you already have a cluster and want to share it with ci/cd.
Great video Anton! I had a question regarding installing cert-manager, if you aren't handling SSL/TLS for DNS, did you need to install cert-manager? You mentioned the webbook as an option which I'm sure is where the cert-manager would have been supported/used.
Thanks, you need cert-manager only if you want to expose your service from kubernetes to the internet and encrypt the traffic with SSL/TLS (HTTPS). If you just want to use plain http, you don't need cert-manager.
Awesome video!!! Curious, is it possible to configure the images of the runners? Especially via the runner deployment?
whoops, ignore, I read the docs and found my answer
yeah, you should be able to create custom image
Hello Anton. Thank you for the video. Re: AWS EKS, are you using Fargate or EC2 instance for autoscaling?
Hi Alejandro, in that video as far as i remember i was using ec2 instances.
@@AntonPutra Thank you
Can we setup this on EKS-Fargate!!??
Plz respond. I’m getting an error during this implementation on Fargate.
I haven't tried it yet, but my guess you can. You can run controller on the regular instance group and workers on fargate
Can we not configure same runner for 2 repos? in k8s infrastructure
You can configure runner on org level which is more convenient actually.
How can I have the autoscale runner pod to gave some linux dependency packages installed?
You need to build custom docker image
@@AntonPutra thanks for the reply
@@AntonPutra I have tried that, but I get pod status CrashLoopBackOff for the actions-runner-controller pod.
I have couple of questions related to self hosted runners.
1. I have configured self hosted runner and i always wanted to be active so that my other team members can use it. But when my laptop is not turned on, other people who are running the pipeline, it is going to queue. Any idea on how to overcome that?
2. Lets say I create 3 individual self hosted runners in 3 of my team mates machines. I need github pipeline to pick the one which is online not the one which is offline. Is it possible and how do we do that.?
i never ran self hosted runners for prod environments on local machine. I would assume it should automatically run on online runners, or you can try to use labels/tags.
Gee, Spamming everyone with this query.
Currently if I want to run cypress test on selfhosted runner, I get error saying dependency is not installed
You can build your custom Docker image that you can use as the runner with all your dependencies.
@@AntonPutra Okay, thanks for the reply.
Why does the app (the runners) need read & write for Administration?
I found it in the docs "Administration (read / write)". Here is a link - github.com/actions-runner-controller/actions-runner-controller#deploying-using-github-app-authentication
what image are those containers using?
this one - Docker: github.com/actions-runner-controller/actions-runner-controller/blob/master/runner/Dockerfile, image - github.com/actions-runner-controller/actions-runner-controller/blob/master/charts/actions-runner-controller/values.yaml#L40-L42
How to add lablel to runner ?
it's been a while, next time when i refresh this tutorial I'll point it out
Made my day!!
Thanks =)