Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Github Runner self-hosted runners in EKS for Organization Repo #232

Closed
trucdp opened this issue Aug 17, 2023 · 5 comments
Closed

Github Runner self-hosted runners in EKS for Organization Repo #232

trucdp opened this issue Aug 17, 2023 · 5 comments

Comments

@trucdp
Copy link

trucdp commented Aug 17, 2023

Community Note

  • Please vote on this issue by adding a 👍 reaction to the original issue to help the community and maintainers prioritize this request
  • Please do not leave "+1" or other comments that do not add relevant new information or questions, they generate extra noise for issue followers and do not help prioritize the request
  • If you are interested in working on this issue or have submitted a pull request, please leave a comment

What is the outcome that you are trying to reach?

I want to set up github runner and gitlab runner for organization.

Describe the solution you would like

Actions Runner Controller

GitHub Actions automates the deployment of code to different environments, including production. The environments contain the GitHub Runner software which executes the automation. GitHub Runner can be run in GitHub-hosted cloud or self-hosted environments. Self-hosted environments offer more control of hardware, operating system, and software tools. They can be run on physical machines, virtual machines, or in a container. Containerized environments are lightweight, loosely coupled, highly efficient and can be managed centrally. However, they are not straightforward to use.

Actions Runner Controller (ARC) makes it simpler to run self hosted environments on Kubernetes(K8s) cluster.

With ARC you can :

  • Deploy self hosted runners on Kubernetes cluster with a simple set of commands.
  • Auto scale runners based on demand.
  • Setup across GitHub editions including GitHub Enterprise editions and GitHub Enterprise Cloud.

Overview

For an overview of ARC, please refer to "About ARC."

Getting Started

ARC can be setup with just a few steps.

In this section we will setup prerequisites, deploy ARC into a K8s cluster, and then run GitHub Action workflows on that cluster.

Prerequisites

Create a K8s cluster, if not available. If you don't have a K8s cluster, you can install a local environment using minikube. For more information, see "Installing terraform aws blueprints ."

1️⃣ Install cert-manager in your cluster. For more information, see "cert-manager."

kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.8.2/cert-manager.yaml

*note:- This command uses v1.8.2. Please replace with a later version, if available.

You may also install cert-manager using Helm. For instructions, see "Installing with Helm."

2️⃣ Next, Generate a Personal Access Token (PAT) for ARC to authenticate with GitHub.

  • Login to your GitHub account and Navigate to "Create new Token."
  • Select repo.
  • Click Generate Token and then copy the token locally ( we’ll need it later).

Deploy and Configure ARC

1️⃣ Deploy and configure ARC on your K8s cluster. You may use Helm or Kubectl.

Helm deployment
Add repository
helm repo add actions-runner-controller https://actions-runner-controller.github.io/actions-runner-controller
Install Helm chart
helm upgrade --install --namespace actions-runner-system --create-namespace\
  --set=authSecret.create=true\
  --set=authSecret.github_token="REPLACE_YOUR_TOKEN_HERE"\
  --wait actions-runner-controller actions-runner-controller/actions-runner-controller

*note:- Replace REPLACE_YOUR_TOKEN_HERE with your PAT that was generated previously.

Kubectl deployment
Deploy ARC
kubectl apply -f \
https://github.com/actions/actions-runner-controller/\
releases/download/v0.22.0/actions-runner-controller.yaml

*note:- Replace "v0.22.0" with the version you wish to deploy

Configure Personal Access Token
kubectl create secret generic controller-manager \
    -n actions-runner-system \
    --from-literal=github_token=REPLACE_YOUR_TOKEN_HERE

*note:- Replace REPLACE_YOUR_TOKEN_HERE with your PAT that was generated previously.

2️⃣ Create the GitHub self hosted runners and configure to run against your repository.

Create a runnerdeployment.yaml file and copy the following YAML contents into it:

apiVersion: actions.summerwind.dev/v1alpha1
kind: RunnerDeployment
metadata:
  name: example-runnerdeploy
spec:
  replicas: 1
  template:
    spec:
      repository: abcxyz/actions-runner-controller-ci

*note:- Replace "abcxyz/actions-runner-controller-ci" with the name of the GitHub repository the runner will be associated with.

Apply this file to your K8s cluster.

kubectl apply -f runnerdeployment.yaml

🎉 We are done - now we should have self hosted runners running in K8s configured to your repository. 🎉

Next - lets verify our setup and execute some workflows.

Verify and Execute Workflows

1️⃣ Verify that your setup is successful:

$ kubectl get runners
NAME                             REPOSITORY                             STATUS
example-runnerdeploy2475h595fr   mumoshu/actions-runner-controller-ci   Running

$ kubectl get pods
NAME                           READY   STATUS    RESTARTS   AGE
example-runnerdeploy2475ht2qbr 2/2     Running   0          1m

Also, this runner has been registered directly to the specified repository, you can see it in repository settings. For more information, see "Checking the status of a self-hosted runner - GitHub Docs."

2️⃣ You are ready to execute workflows against this self-hosted runner. For more information, see "Using self-hosted runners in a workflow - GitHub Docs."

There is also a quick start guide to get started on Actions, For more information, please refer to "Quick start Guide to GitHub Actions."

Learn more

For more detailed documentation, please refer to "Actions Runner Controller Documentation."

Describe alternatives you have considered

Additional context

@trucdp trucdp changed the title Github Runner self-hosted runnersEKS for Org Repo Github Runner self-hosted runners in EKS for Organization Repo Aug 17, 2023
@askulkarni2
Copy link
Contributor

@trucdp how is this related to EKS Blueprints/add-ons?

@trucdp
Copy link
Author

trucdp commented Aug 25, 2023

@trucdp how is this related to EKS Blueprints/add-ons?

I think, I want to set up github runner for enterprise or organization. the same issue

@bryantbiggs
Copy link
Contributor

You should be able to do this today since its just a helm chart https://docs.gitlab.com/charts/installation/ (unless I am missing something)

@trucdp
Copy link
Author

trucdp commented Aug 28, 2023

You should be able to do this today since its just a helm chart https://docs.gitlab.com/charts/installation/ (unless I am missing something)

Hey @bryantbiggs, so We can't see github actions runner as an addons or this solution is not optimized or clear

@bryantbiggs
Copy link
Contributor

you can use the helm_releases argument to pass in any number of helm charts to provision using this module. You can see an example here

This is where you would pass in the details to deploy the GitLab helm chart

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants