Рубрики
Uncategorized

GitHub Действия самостоятельно бегун на Kubernetes

Разверните масштабируемые действия GitHub, самостоятельно проведенные бегуном на Kubernetes, используя Helm. … Теги с DevOps, Kubernetes, Githubactions, Helm.

Разверните масштабируемые действия 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.

  1. Войти в учетную запись GitHub и перейдите к https://github.com/settings/tokens
  2. Нажмите на Генерировать новую кнопку токена
  3. Выберите Репо (полный контроль) сфера.
  4. Нажмите Генерировать Токен

Теперь храните токен доступа в файле 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://dev.to/ptuladhar3/github-actions-self-hosted-runner-on-kubernetes-1o65»