Как правильно смонтировать том hostpah с помощью gitlab runner? - PullRequest
0 голосов
/ 23 сентября 2019

Мне нужно создать том, чтобы открыть папку maven .m2 для повторного использования во всех моих проектах, но я не могу этого сделать вообще.

Мой бегун gitlab работает внутри моего кластера kuberentes какконтейнер.

Следует за развертыванием и картой конфигурации

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: gitlab-runner
  namespace: default
spec:
  template:
    metadata:
      labels:
        name: gitlab-runner
    spec:
      serviceAccountName: gitlab-sa
      nodeName: 140.6.254.244
      containers:
        - name: gitlab-runner
          image: gitlab/gitlab-runner
          securityContext:
            privileged: true
          command: ["/bin/bash", "/scripts/entrypoint"]
          env:
            - name: KUBERNETES_NAMESPACE
              value: default 
            - name: KUBERNETES_SERVICE_ACCOUNT
              value: gitlab-sa
          # This references the previously specified configmap and mounts it as a file
          volumeMounts:
            - mountPath: /scripts
              name: configmap
          livenessProbe:
            exec:
              command: ["/usr/bin/pgrep","gitlab.*runner"]
            initialDelaySeconds: 60
            timeoutSeconds: 1
            periodSeconds: 10
            successThreshold: 1
            failureThreshold: 3
          readinessProbe:
            exec:
              command: ["/usr/bin/pgrep","gitlab.*runner"]
            initialDelaySeconds: 10
            timeoutSeconds: 1
            periodSeconds: 10
            successThreshold: 1
            failureThreshold: 3

      volumes:
      - configMap:
          name: gitlab-runner-cm
        name: configmap

ConfigMap:

---
apiVersion: v1
kind: ConfigMap
metadata:
  name: gitlab-runner-cm
  namespace: default 
data:
  entrypoint: |
    #!/bin/bash

    set -xe

    cp /scripts/config.toml /etc/gitlab-runner/

    # Register the runner
    /entrypoint register --non-interactive --registration-token ###### --url http://gitlab.######.net --clone-url http://gitlab.######.net --executor "kubernetes" --name "Kubernetes Runner" --config "/etc/gitlab-runner/config.toml"

    # Start the runner
    /entrypoint run --user=gitlab-runner \
      --working-directory=/home/gitlab-runner \
      --config "/etc/gitlab-runner/config.toml"
  config.toml: |
    concurrent = 50 
    check_interval = 10
    [[runners]]
      name            = "PC-CVO"
      url             = "http://gitlab.######.net"
      token           = "######"
      executor = "kubernetes"
      cache_dir = "/tmp/gitlab/cache"
      [runners.kubernetes]
        [runners.kubernetes.volumes]
          [[runners.kubernetes.volumes.host_path]]
            name = "maven"
            mount_path = "/.m2/"
            host_path = "/mnt/dados/volumes/maven-gitlab-ci"
            read_only = false

          [[runners.kubernetes.volumes.host_path]]
            name = "gitlab-cache"
            mount_path = "/tmp/gitlab/cache"
            host_path = "/mnt/dados/volumes/maven-gitlab-ci-cache"
            read_only = false



Но даже с указанием [[runners.kubernetes.volumes.host_path]], как указано вдокументация мой том не смонтирован на хосте, я пытался использовать pv и pvc, но ничего не получалось, у кого-нибудь есть представление о том, как открыть эту папку .m2 на хосте, чтобы все мои задания могли делиться ею без кэширования?

1 Ответ

0 голосов
/ 26 сентября 2019

После того, как я справился с проблемами разрешения имен с внутренним DNS, томами для моего m2 и использовал демон docker вместо docker: dind, я наконец-то получил конфигурацию, которая решает мою проблему, ниже приведены файлы окончательной конфигурации, если кто-то проходит длята же проблема.Основная проблема заключалась в том, что при регистрации бегуна файл config.toml был изменен процессом регистрации, и это перезаписывает мои настройки, чтобы решить эту проблему, я сделал кошку после регистрации контейнера.

Развертывание

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: gitlab-runner
  namespace: default
spec:
  template:
    metadata:
      labels:
        name: gitlab-runner
    spec:
      serviceAccountName: gitlab-sa
      nodeName: 140.6.254.244
      containers:
        - name: gitlab-runner
          image: gitlab/gitlab-runner
          securityContext:
            privileged: true
          command: ["/bin/bash", "/scripts/entrypoint"]
          env:
            - name: KUBERNETES_NAMESPACE
              value: default 
            - name: KUBERNETES_SERVICE_ACCOUNT
              value: gitlab-sa
          # This references the previously specified configmap and mounts it as a file
          volumeMounts:
            - mountPath: /scripts
              name: configmap
          livenessProbe:
            exec:
              command: ["/usr/bin/pgrep","gitlab.*runner"]
            initialDelaySeconds: 60
            timeoutSeconds: 1
            periodSeconds: 10
            successThreshold: 1
            failureThreshold: 3
          readinessProbe:
            exec:
              command: ["/usr/bin/pgrep","gitlab.*runner"]
            initialDelaySeconds: 10
            timeoutSeconds: 1
            periodSeconds: 10
            successThreshold: 1
            failureThreshold: 3

      volumes:
      - configMap:
          name: gitlab-runner-cm
        name: configmap

Карта конфигурации (вот решение!)

---
apiVersion: v1
kind: ConfigMap
metadata:
  name: gitlab-runner-cm
  namespace: default 
data:
  entrypoint: |
    #!/bin/bash

    set -xe

    cp /scripts/config.toml /etc/gitlab-runner/

    # Register the runner
    /entrypoint register --non-interactive --registration-token ############ --url http://gitlab.######.net --clone-url http://gitlab.######.net --executor "kubernetes" --name "Kubernetes Runner" --config "/etc/gitlab-runner/config.toml"

    cat >> /etc/gitlab-runner/config.toml << EOF
          [[runners.kubernetes.volumes.host_path]]
            name = "docker"
            path = "/var/run/docker.sock"
            mount_path = "/var/run/docker.sock"
            read_only = false
          [[runners.kubernetes.volumes.host_path]]
            name = "maven"
            mount_path = "/.m2/"
            host_path = "/mnt/dados/volumes/maven-gitlab-ci"
            read_only = false
          [[runners.kubernetes.volumes.host_path]]
            name = "resolvedns"
            mount_path = "/etc/resolv.conf"
            read_only = true
            host_path = "/etc/resolv.conf"

    EOF



    # Start the runner
    /entrypoint run --user=gitlab-runner \
      --working-directory=/home/gitlab-runner \
      --config "/etc/gitlab-runner/config.toml"
  config.toml: |
    concurrent = 50 
    check_interval = 10
    [[runners]]
      name            = "PC-CVO"
      url             = "http://gitlab.########.###"
      token           = "##############"
      executor = "kubernetes"
      cache_dir = "/tmp/gitlab/cache"
      [runners.kubernetes]


...