Какие разрешения kubernetes нужны исполнителю GitLab runner kubernetes? - PullRequest
0 голосов
/ 24 марта 2020

Я установил GitLab runner в кластер kubernetes под пространством имен gitlab-runner. Примерно так:

# cat <<EOF | kubectl create -f -
{
  "apiVersion": "v1",
  "kind": "Namespace",
  "metadata": {
    "name": "gitlab-runner",
    "labels": {
      "name": "gitlab-runner"
    }
  }
}

# helm repo add gitlab https://charts.gitlab.io
# cat <<EOF|helm install --namespace gitlab-runner gitlab-runner -f - gitlab/gitlab-runner
gitlabUrl: https://gitlab.mycompany.com
runnerRegistrationToken: "c................Z"

Средство запуска GitLab правильно регистрируется в проекте GitLab, но все задания не выполняются.

Быстрый просмотр журналов бегуна GitLab говорит мне, что служебной учетной записи, используемой бегуном GitLab, не хватает надлежащих разрешений:

# kubectl logs --namespace gitlabrunner gitlab-runner-gitlab-runner-xxxxxxxxx
ERROR: Job failed (system failure): pods is forbidden: User "system:serviceaccount:gitlabrunner:default" cannot create resource "pods" in API group "" in the namespace "gitlab-runner"  duration=42.095493ms job=37482 project=yyy runner=xxxxxxx

Какое разрешение требуется исполнителю gitlab runner kubernetes?

1 Ответ

1 голос
/ 24 марта 2020

Я не смог найти в документации GitLab список разрешений, но я пытаюсь добавить разрешения по одному и скомпилировал список разрешений, необходимых для работы basi c.

Бегунок gitlab будет использовать учетную запись службы system:serviceaccount:gitlab-runner:default, поэтому нам нужно создать роль и назначить эту роль этой учетной записи службы.

# cat <<EOF | kubectl create -f -
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: gitlab-runner
  namespace: gitlab-runner
rules:
  - apiGroups: [""]
    resources: ["pods"]
    verbs: ["list", "get", "watch", "create", "delete"]
  - apiGroups: [""]
    resources: ["pods/exec"]
    verbs: ["create"]
  - apiGroups: [""]
    resources: ["pods/log"]
    verbs: ["get"]

# kubectl create rolebinding --namespace=gitlab-runner gitlab-runner-binding --role=gitlab-runne r --serviceaccount=gitlab-runner:default

С этой ролью, назначенной учетной записи службы, бегун GitLab сможет создавать, выполнять и удалять модуль, а также получать доступ к журналам.

...