Разверните масштабируемые действия GitHub, самостоятельно проведенные бегуном на Kubernetes, используя Helm.
Почему самостоятельно бегун?
Самостоятельные бегуны идеально подходят для использования, где вам необходимо запустить рабочие процессы в очень настраиваемой среде с более детальным управлением требованиями аппаратного обеспечения, безопасности, операционной системой и программными инструментами, чем предоставляют бегуны с github.
Самостоятельные бегуны могут быть физическими, виртуальными, в контейнере, локальности или в облаке. В этом руководстве мы развернете его в качестве контейнера в кластере Kubernetes в облаке AWS.
Развернуть кластер Kubernetes (необязательно)
Если у вас уже есть существующий кластер K8S, не стесняйтесь пропустить этот шаг.
В этом руководстве мы разместим управляемый кластер K8S на AWS с использованием EKSCTL — официального CLI для Amazon EKS, который написан в Go и использует CloudFormation под капотом, и, безусловно, самый простой способ развернуть управляемый кластер Kubernetes в AWS Анкет Видеть Установка EKSCTL
Создайте кластер Kubernetes
Наш кластер будет состоять из одного рабочего узла (C6G.Large — 2 VCPU, 4GIB RAM) в US-EAST-1
регион с выделенным VPC. Не стесняйтесь изменить конфигурацию кластера в соответствии с вашими требованиями. См. Больше примеров конфигураций
Сохраните следующую конфигурацию кластера как Cluster-Config.yaml
И запустите следующую команду, используя приведенную выше конфигурацию кластера:
$ eksctl create cluster -f cluster-config.yaml
ПРИМЕЧАНИЕ: Создание кластера может занять до 15–20 минут.
2021-06-22 19:14:19 [✔] EKS cluster "github-actions" in "us-east-1" region is ready
Как только кластер будет создан и готов, вы обнаружите, что учетные данные кластера были добавлены в ваш KubeConfig в $ Home/.kube/config
автоматически eksctl
Теперь проверьте Cluster Connectivity, Access and Nodes Status:
$ kubectl get nodes $ kubectl get namespaces
Развернуть контроллер бегуна действия с помощью Helm
Хелм является менеджером пакетов для Kubernetes, чтобы легко установить и управлять приложениями Kubernetes. См. Установка руля
Что такое управляющий действиями?
контроллер действия действия управляет самостоятельными бегунами для действий GitHub в кластере Kubernetes. Он предоставляет CRDS ( Пользовательское определение ресурсов ), например Бегун
RunnerDeployment
HorizontalRunnerAutoscaler
что позволяет нам легко развернуть масштабируемых самостоятельных бегунов на Kubernetes.
Установка Cert-Manager
Cert-Manager требуется необходимый компонент, необходимый для управляющего действиями для управления сертификатами Прием Webhook Анкет
# Add repository $ helm repo add jetstack https://charts.jetstack.io $ helm repo update # Install chart $ helm install --wait --create-namespace --namespace cert-manager cert-manager jetstack/cert-manager --version v1.3.0 --set installCRDs=true # Verify installation $ kubectl --namespace cert-manager get all
GitHub Personal Access токен
Затем нам нужно создать токен личного доступа (PAT), который будет использоваться контроллером для регистрации самостоятельных бегунов для действий GitHub.
- Войти в учетную запись GitHub и перейдите к https://github.com/settings/tokens
- Нажмите на
Генерировать новую кнопку токена
- Выберите
Репо (полный контроль)
сфера. - Нажмите
Генерировать Токен
Теперь храните токен доступа в файле YAML с именем Пользовательские значения. YAML
как таковой:
authSecret: github_token: REPLACE_YOUR_TOKEN_HERE
Установка действий-управляющих
Теперь мы готовы установить контроллер, используя рул.
# Add repository $ helm repo add actions-runner-controller https://actions-runner-controller.github.io/actions-runner-controller # Install chart $ helm install -f custom-values.yaml --wait --namespace actions-runner-system --create-namespace actions-runner-controller actions-runner-controller/actions-runner-controller # Verify installation $ kubectl --namespace actions-runner-system get all
Развертывание самостоятельного бегуна
Теперь у нас есть все на месте, чтобы развернуть самостоятельного бегуна, привязанного к конкретному репозиторию.
Во-первых, создайте пространство имен для размещения ресурсов бегунов.
$ kubectl create namespace self-hosted-runners
Далее, сохраните следующий манифест K8S как самостоятельно-управляемый. YAML
и изменить следующее:
- Заменить
Туладхар/самостоятельный бегун
с вашим собственным хранилищем. - Отрегулируйте
Minreplicas
иmaxreplicas
как требуется.
И примените манифест Kubernetes:
$ kubectl --namespace self-hosted-runners apply -f self-hosted-runner.yaml
Убедитесь, что бегун развернут и находится в готовом состоянии.
$ kubectl --namespace self-hosted-runners get runner
Теперь перейдите к своему хранилищу Настройки> Действия> Runner
Чтобы просмотреть зарегистрированный бегун.
🚀 Теперь мы готовы попробовать нашего бегуна!
Создайте рабочий процесс, чтобы проверить самостоятельного бегуна
Сохранить и совершить следующий образец действий GitHub в .github/workflows/hello-world.yml
В вашем хранилище, где зарегистрирован самостоятельный бегун.
ПРИМЕЧАНИЕ: Важной частью этого рабочего процесса является запуска: самостоятельно
Теперь перейдите на вкладку «Действия», где вы увидите Привет, мир Рабочий процесс перечислен. Давайте вручную запустить, нажав Запустить рабочий процесс
… И вуаля! 🎉 Рабочий процесс успешно забежал на нашего самостоятельного бегуна, и мы можем увидеть все шаги и журналы.
Clean-Up Kubernetes Cluster (необязательно)
Как только вы закончили исследовать самостоятельного бегуна, вы можете легко уничтожить кластер и связанные с ними ресурсы, такие как VPC и т. Д.
$ eksctl delete cluster -f cluster-config.yaml
Выход:
2021-06-22 20:16:02 [ℹ] eksctl version 0.54.0 2021-06-22 20:16:02 [ℹ] using region us-east-1 2021-06-22 20:16:02 [ℹ] deleting EKS cluster "github-actions" 2021-06-22 20:16:06 [ℹ] deleted 0 Fargate profile(s) 2021-06-22 20:16:10 [✔] kubeconfig has been updated 2021-06-22 20:16:10 [ℹ] cleaning up AWS load balancers created by Kubernetes objects of Kind Service or Ingress 2021-06-22 20:16:23 [ℹ] 2 sequential tasks: { delete nodegroup "ng-1", delete cluster control plane "github-actions" [async] } 2021-06-22 20:16:23 [ℹ] will delete stack "eksctl-github-actions-nodegroup-ng-1" 2021-06-22 20:16:23 [ℹ] waiting for stack "eksctl-github-actions- 2021-06-22 20:18:21 [ℹ] will delete stack "eksctl-github-actions-cluster" 2021-06-22 20:18:22 [✔] all cluster resources were deleted
И также удалите зарегистрированного бегуна в автономном режиме.
Полезные ресурсы
- https://github.com/actions-runner-controller/actions-runner-controller
- https://docs.github.com/en/actions/hosting-your-own-runners/about-self-hosted-runners
- https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions
Оригинал: «https://dev.to/ptuladhar3/github-actions-self-hosted-runner-on-kubernetes-1o65»