Как развернуть gitlab-runner на kubernetes и автоматически зарегистрировать runner? - PullRequest
1 голос
/ 28 июня 2019

Я новичок в gitlab ci / cd.Я хочу развернуть gitlab-runner на kubernetes и использую kubernetes для создания двух ресурсов:

gitlab-runner-configmap.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: gitlab-runner
  namespace: gitlab
data:
  config.toml: |
    concurrent = 4

    [[runners]]
      name = "Kubernetes Runner"
      url = "http:my-gitlab.com/ci"
      token = "token...."
      executor = "kubernetes"
      tag = "my-runner"
      [runners.kubernetes]
        namespace = "gitlab"
        image = "busybox"

gitlab-runner-deployment.yaml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: gitlab-runner
  namespace: gitlab
spec:
  replicas: 1
  selector:
    matchLabels:
      name: gitlab-runner
  template:
    metadata:
      labels:
        name: gitlab-runner
    spec:
      containers:
      - args:
        - run
        image: gitlab/gitlab-runner:v11.11.3
        imagePullPolicy: Always
        name: gitlab-runner
        volumeMounts:
        - mountPath: /etc/gitlab-runner
          name: config
        - mountPath: /etc/ssl/certs
          name: cacerts
          readOnly: true
      restartPolicy: Always
      volumes:
      - configMap:
          name: gitlab-runner
        name: config
      - hostPath:
          path: /usr/share/ca-certificates/mozilla
        name: cacerts

Проблема в том, что после создания двух ресурсов используется kubectl apply.Я не вижу экземпляр бегуна в http://my-gitlab.com/admin/runners.Я подозреваю, что причина в том, что я не зарегистрировал бегуна.И я вхожу в runner pod pod/gitlab-runner-69d894d7f8-pjrxn и регистрирую бегуна вручную через gitlab-runner register, после чего я вижу экземпляр бегуна в http://my-gitlab.com/admin/runners.

Так я что-то не так делаю?Или это нужно вручную зарегистрировать бегун внутри стручка?

Спасибо.

1 Ответ

1 голос
/ 28 июня 2019

Действительно, вам нужно явно зарегистрировать бегун на сервере GitLab.
Например, через:

gitlab-runner register --non-interactive \
    --name $RUNNER_NAME \
    --url $GITLAB_URL \
    --registration-token $GITLAB_REGISTRATION_TOKEN \
    --executor docker \
    --docker-image $DOCKER_IMAGE_BUILDER \
    --tag-list $GITLAB_RUNNER_TAG_LIST \
    --request-concurrency=$GITLAB_RUNNER_CONCURRENCY

Вы можете передать большую часть его конфигурации в качестве аргументов.
Если вы не создали config.toml, он сгенерирует его для вас, включая маркер бегуна, полученный с сервера при регистрации.

Однако ,
при использовании Kubernetes,есть более простой способ.
GitLab обеспечивает отличную интеграцию с Kubernetes, все, что вам нужно сделать, это подключить кластер один раз к вашему проекту \ группе: https://docs.gitlab.com/ee/user/project/clusters/#adding-an-existing-kubernetes-cluster

А затем установить бегунок всего за несколько кликовв пользовательском интерфейсе через то, что они называют «управляемыми приложениями»: https://docs.gitlab.com/ee/user/clusters/applications.html#gitlab-runner

На этой последней странице вы можете найти ссылки на диаграмму Хелма, которую они используют.
Так что вы даже можете использовать еенепосредственно сами.
А там видно конкретно, звоните зарегистрируйтесь : configmap.yaml # L65

...