使用gitlab runner装载hostpah卷的正确方法是什么?

使用gitlab runner装载hostpah卷的正确方法是什么?,gitlab,gitlab-ci,gitlab-ci-runner,Gitlab,Gitlab Ci,Gitlab Ci Runner,我需要创建一个卷来公开maven.m2文件夹,以便在我的所有项目中重用,但我根本不能这样做 我的gitlab runner作为容器在kuberentes集群中运行 遵循部署和配置映射 apiVersion: extensions/v1beta1 kind: Deployment metadata: name: gitlab-runner namespace: default spec: template: metadata: labels: nam

我需要创建一个卷来公开maven.m2文件夹,以便在我的所有项目中重用,但我根本不能这样做

我的gitlab runner作为容器在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

配置映射:

---
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文件夹,这样我的所有作业都可以在不缓存的情况下共享它吗?

在对内部DNS的名称解析问题、m2的卷以及使用docker守护进程而不是docker:dind大发雷霆之后,我终于得到了一个解决问题的配置,下面是最终的配置文件,如果有人通过相同的问题。 主要的问题是,当运行程序被注册时,config.toml文件被注册过程修改,这覆盖了我的设置,为了解决这个问题,我在容器注册后做了一个cat

部署 配置映射(这是解决方案!)
---
版本:v1
种类:配置地图
元数据:
名称:gitlab runner cm
名称空间:默认值
数据:
入口点:|
#!/bin/bash
set-xe
cp/scripts/config.toml/etc/gitlab runner/
#登记跑步者
/入口点注册——非交互式——注册令牌——urlhttp://gitlab.######.net --克隆urlhttp://gitlab.######.net --执行器“kubernetes”--名称“kubernetes Runner”--config“/etc/gitlab Runner/config.toml”

cat>>/etc/gitlab runner/config.toml这里是一个使用NFS的示例。可能有兴趣添加您的
.gitlab ci.yml
,在您的回答中引用
主机路径
。不幸的是,nfs不是我的选项,但我已经解决了问题,我将发布解决方案。
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]