首页 > 其他分享 >gitlab-runner helm 安装问题记录

gitlab-runner helm 安装问题记录

时间:2024-01-29 19:22:26浏览次数:28  
标签:kubernetes runner gitlab cat secrets helm runners

 

 

首先说说安装步骤

1、安装版本
gitlab-runner-0.36.1.tgz

 

 

cat ./gitlab-runner/values.yaml |grep -v "#"|sed -e '/^$/d'
imagePullPolicy: IfNotPresent
gitlabUrl: http://101.43.196.155:32080/
runnerRegistrationToken: "Woq_Drxy-SSy1kQzJBZT"
terminationGracePeriodSeconds: 3600
concurrent: 10
checkInterval: 10
rbac:
  create: true
  resources: ["pods", "pods/exec", "secrets", "configmaps", "pods/attach"]
  verbs: ["get", "list", "watch", "create", "patch", "delete", "update"]
  rules: []
  clusterWideAccess: false
  podSecurityPolicy:
    enabled: false
    resourceNames:
    - gitlab-runner
metrics:
  enabled: true
  portName: metrics
  port: 9252
  serviceMonitor:
    enabled: false
service:
  enabled: false
  type: ClusterIP
runners:
  config: |
    [[runners]]
      [runners.kubernetes]
        namespace = "{{.Release.Namespace}}"
        image = "ubuntu:16.04"
  tags: "k8s-runner,k8s"
  privileged: true
  cache: {}
  builds: {}
  services: {}
  helpers: {}
securityContext:
  runAsUser: 100
  fsGroup: 65533
resources: {}
affinity: {}
nodeSelector: {}
tolerations: []
hostAliases: []
podAnnotations: {}
podLabels: {}
secrets: []
configMaps: {}
config: |
  [[runners]]
    url = "https://gitlab.com/"
    executor = "docker"
    privileged = true
    [runners.docker]
      tls_verify = false
      image = "docker:24.0.7"
      privileged = true
      disable_cache = false
      volumes = ["/var/run/docker.sock:/var/run/docker.sock","/cache"]
    [runners.cache]
      Insecure = false
cat ./gitlab-runner/values.yaml |grep -v "#"|sed -e '/^$/d'
helm install  gitlab-runner --namespace kube-ops ./gitlab-runner

 

这个问题经过排查 发现 gitlab-runner 无法调用docker.sock

需要修改gitlab.toml 配置文件

有两个方法可以修改

1、gitlab-runner 创建后 登录 gitlab-runner 修改 config.toml 配置文件 

[root@master gitlab-runner]# kubectl get po -n kube-ops
NAME                                           READY   STATUS    RESTARTS   AGE
gitlab-runner-gitlab-runner-5fb9cfff9c-kfbkb   1/1     Running   0          19m
[root@master gitlab-runner]# kubectl exec -it -n kube-ops gitlab-runner-gitlab-runner-5fb9cfff9c-kfbkb -- /bin/bash
Defaulted container "gitlab-runner-gitlab-runner" out of: gitlab-runner-gitlab-runner, configure (init)
bash-5.0$ cat /home/gitlab-runner/.gitlab-runner/config.toml 
listen_address = ":9252"
concurrent = 10
check_interval = 10
log_level = "info"

[session_server]
  session_timeout = 1800

[[runners]]
  name = "gitlab-runner-gitlab-runner-5fb9cfff9c-kfbkb"
  url = "http://101.43.196.155:32080/"
  token = "FbCFy9T5anUR23tMbJRQ"
  executor = "kubernetes"
  [runners.custom_build_dir]
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]
    [runners.cache.azure]
  [runners.kubernetes]
    host = ""
    bearer_token_overwrite_allowed = false
    image = "ubuntu:16.04"
    namespace = "kube-ops"
    namespace_overwrite_allowed = ""
    privileged = true
    service_account_overwrite_allowed = ""
    pod_annotations_overwrite_allowed = ""
    [runners.kubernetes.affinity]
    [runners.kubernetes.pod_security_context]
    [runners.kubernetes.build_container_security_context]
      [runners.kubernetes.build_container_security_context.capabilities]
    [runners.kubernetes.helper_container_security_context]
      [runners.kubernetes.helper_container_security_context.capabilities]
    [runners.kubernetes.service_container_security_context]
      [runners.kubernetes.service_container_security_context.capabilities]
    [runners.kubernetes.volumes]
    [runners.kubernetes.dns_config]
    [runners.kubernetes.container_lifecycle]
  [[runners.kubernetes.volumes.host_path]]
        name = "docker"
        mount_path = "/var/run/docker.sock"

 

第二个方法

解压 gitlab-runner-0.36.1.tgz 加压安装包 在当前目录会生成 gitlab-runner

在 gitlab-runner 目录的 gitlab-runner/templates/configmap.yaml 文件内调整如下

然后重新安装

 helm install  gitlab-runner --namespace kube-ops ./gitlab-runner

 

[root@master gitlab-runner]# cat ./gitlab-runner/templates/configmap.yaml 
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ include "gitlab-runner.fullname" . }}
  labels:
    app: {{ include "gitlab-runner.fullname" . }}
    chart: {{ include "gitlab-runner.chart" . }}
    release: "{{ .Release.Name }}"
    heritage: "{{ .Release.Service }}"
data:
  entrypoint: |
    #!/bin/bash
    set -e
    mkdir -p /home/gitlab-runner/.gitlab-runner/
    cp /configmaps/config.toml /home/gitlab-runner/.gitlab-runner/

    # Set up environment variables for cache
    if [[ -f /secrets/accesskey && -f /secrets/secretkey ]]; then
      export CACHE_S3_ACCESS_KEY=$(cat /secrets/accesskey)
      export CACHE_S3_SECRET_KEY=$(cat /secrets/secretkey)
    fi

    if [[ -f /secrets/gcs-applicaton-credentials-file ]]; then
      export GOOGLE_APPLICATION_CREDENTIALS="/secrets/gcs-applicaton-credentials-file"
    elif [[ -f /secrets/gcs-application-credentials-file ]]; then
      export GOOGLE_APPLICATION_CREDENTIALS="/secrets/gcs-application-credentials-file"
    else
      if [[ -f /secrets/gcs-access-id && -f /secrets/gcs-private-key ]]; then
        export CACHE_GCS_ACCESS_ID=$(cat /secrets/gcs-access-id)
        # echo -e used to make private key multiline (in google json auth key private key is oneline with \n)
        export CACHE_GCS_PRIVATE_KEY=$(echo -e $(cat /secrets/gcs-private-key))
      fi
    fi

    if [[ -f /secrets/azure-account-name && -f /secrets/azure-account-key ]]; then
      export CACHE_AZURE_ACCOUNT_NAME=$(cat /secrets/azure-account-name)
      export CACHE_AZURE_ACCOUNT_KEY=$(cat /secrets/azure-account-key)
    fi

    if [[ -f /secrets/runner-registration-token ]]; then
      export REGISTRATION_TOKEN=$(cat /secrets/runner-registration-token)
    fi

    if [[ -f /secrets/runner-token ]]; then
      export CI_SERVER_TOKEN=$(cat /secrets/runner-token)
    fi

    {{- if and (not (empty .Values.runnerToken)) (ne "1" ((default "1" .Values.replicas) | toString)) }}
    {{- fail "Using a runner token with more than 1 replica is not supported." }}
    {{- end }}

    # Validate this also at runtime in case the user has set a custom secret
    if [[ ! -z "$CI_SERVER_TOKEN" && "{{ default 1 .Values.replicas }}" -ne "1" ]]; then
      echo "Using a runner token with more than 1 replica is not supported."
      exit 1
    fi

    # Register the runner
    if ! sh /configmaps/register-the-runner; then
      exit 1
    fi

    # Run pre-entrypoint-script
    if ! bash /configmaps/pre-entrypoint-script; then
      exit 1
    fi
    # add volume config
    cat >>/home/gitlab-runner/.gitlab-runner/config.toml <<EOF
      [[runners.kubernetes.volumes.host_path]]
            name = "docker"
            mount_path = "/var/run/docker.sock"
    EOF

    # Start the runner
    exec /entrypoint run --user=gitlab-runner \
      --working-directory=/home/gitlab-runner

  config.toml: |
    concurrent = {{ .Values.concurrent }}
    check_interval = {{ .Values.checkInterval }}
    log_level = {{ default "info" .Values.logLevel | quote }}
    {{- if .Values.logFormat }}
    log_format = {{ .Values.logFormat | quote }}
    {{- end }}
    {{- if .Values.metrics.enabled }}
    listen_address = ':9252'
    {{- end }}
    {{- if .Values.sentryDsn }}
    sentry_dsn = "{{ .Values.sentryDsn }}"
    {{- end }}

  {{ if .Values.runners.config }}
  config.template.toml: {{ tpl (toYaml .Values.runners.config) $ | indent 2 }}
  {{ end }}

  configure: |
    set -e
    cp /init-secrets/* /secrets
  register-the-runner: |
    #!/bin/bash
    MAX_REGISTER_ATTEMPTS=30

    for i in $(seq 1 "${MAX_REGISTER_ATTEMPTS}"); do
      echo "Registration attempt ${i} of ${MAX_REGISTER_ATTEMPTS}"
      /entrypoint register \
        {{- range .Values.runners.imagePullSecrets }}
        --kubernetes-image-pull-secrets {{ . | quote }} \
        {{- end }}
        {{- range $key, $val := .Values.runners.nodeSelector }}
        --kubernetes-node-selector {{ $key | quote }}:{{ $val | quote }} \
        {{- end }}
        {{- range .Values.runners.nodeTolerations }}
        {{-   $keyValue := .key }}
        {{-   if eq (.operator | default "Equal") "Equal"  }}
        {{-     $keyValue = print $keyValue "=" (.value | default "" ) }}
        {{-   end }}
        --kubernetes-node-tolerations {{ $keyValue }}:{{ .effect | quote }} \
        {{- end }}
        {{- range $key, $value := .Values.runners.podLabels }}
        --kubernetes-pod-labels {{ $key | quote }}:{{ $value | quote }} \
        {{- end }}
        {{- range $key, $val := .Values.runners.podAnnotations }}
        --kubernetes-pod-annotations {{ $key | quote }}:{{ $val | quote }} \
        {{- end }}
        {{- if and (hasKey .Values.runners "name") .Values.runners.name }}
        --name={{ .Values.runners.name | quote -}} \
        {{- end }}
        {{- range $key, $value := .Values.runners.env }}
        --env {{ $key | quote -}} = {{- $value | quote }} \
        {{- end }}
        {{- if and (hasKey .Values.runners "runUntagged") .Values.runners.runUntagged }}
        --run-untagged=true \
        {{- end }}
        {{- if and (hasKey .Values.runners "protected") .Values.runners.protected }}
        --access-level="ref_protected" \
        {{- end }}
        {{- if .Values.runners.pod_security_context }}
        {{-   if .Values.runners.pod_security_context.supplemental_groups }}
        {{-     range $gid := .Values.runners.pod_security_context.supplemental_groups }}
        --kubernetes-pod-security-context-supplemental-groups {{ $gid | quote }} \
        {{-     end }}
        {{-   end }}
        {{- end }}
        {{- if .Values.runners.config }}
        --template-config /configmaps/config.template.toml \
        {{- end }}
        --non-interactive

      retval=$?

      if [ ${retval} = 0 ]; then
        break
      elif [ ${i} = ${MAX_REGISTER_ATTEMPTS} ]; then
        exit 1
      fi

      sleep 5
    done

    exit 0

  check-live: |
    #!/bin/bash
    if /usr/bin/pgrep -f .*register-the-runner; then
      exit 0
    elif /usr/bin/pgrep gitlab.*runner; then
      exit 0
    else
      exit 1
    fi

  pre-entrypoint-script: |
{{ .Values.preEntrypointScript | default "" | indent 4 }}

{{ if not (empty .Values.configMaps) }}{{ toYaml .Values.configMaps | indent 2 }}{{ end }}

 

标签:kubernetes,runner,gitlab,cat,secrets,helm,runners
From: https://www.cnblogs.com/nb-blog/p/17995166

相关文章

  • Jenkins + Gitlab 前后端项目自动化构建部署
    Jenkins+Gitlab前后端项目自动化构建部署:https://blog.csdn.net/IT_ZRS/article/details/115032509?spm=1001.2014.3001.5501Docker+Jenkins+Gitlab自动化构建部署:https://blog.csdn.net/IT_ZRS/article/details/117533847?spm=1001.2101.3001.6650.1&utm_medium=distrib......
  • k8s之helm部署mysql集群
    一、简介HelmHelm是Kubernetes的包管理器。ChartHelm使用的包格式称为chart。chart存储在ChartRepository。chart就是一个描述Kubernetes相关资源的文件集合。单个chart可以用来部署一些简单的,类似于memcachepod,或者某些复杂的HTTP服务器以及web全栈应用、数据库、缓......
  • centos7安装gitLab
    yum安装安装opensshsudoyuminstall-ycurlpolicycoreutils-pythonopenssh-serverperlsudosystemctlenablesshdsudosystemctlstartsshd安装gitLab#配置镜像源curl-fsSLhttps://packages.gitlab.cn/repository/raw/scripts/setup.sh|/bin/bash#yum安......
  • gitlab修改 克隆地址(内网-外网)
    修改gitlab克隆地址1、打开gitlab我们看到的gitlab克隆地址  2、进入容器修改配置文件dockerexec-itgitlabbash   #进入容器 vim/opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml  #修改配置文件host修改为gitlab服务器的IP地址 3、重启g......
  • Ubuntu安装helm3实例
    为了在Ubuntu系统上部署Helm,你需要按照以下步骤操作:先决条件:确保你有一个Kubernetes集群,并且你的本地机器已经安装了kubectl工具,并且配置好了与你的Kubernetes集群通信。下载Helm:你可以从Helm的官方发布页面下载最新版本的Helm包。或者,你可以使用脚本自动安装它。使用H......
  • 了解gitlab-ci流程
    了解gitlab-ci流程作用GitLabCI是GitLab内置的进行持续集成的工具。它的中心思想是,当每一次push到GitLab的时候,都会触发一次脚本执行,脚本的内容可以包括测试、编译、部署等一系列自定义的内容。在GitLab中,要使用CI,需要在仓库根目录下创建一个名为.gitlab-ci.yml的文件,并配置Gi......
  • 使用docker部署编译环境并使用gitlab-ci实现代码自动打包
    使用docker部署编译环境并使用gitlab-ci实现代码自动打包一、需求1、需求描述实现代码git仓库提交能够自动编译出结果①需要一个编译环境能够共享编译:使用docker创建镜像来维护,创建完毕无需频繁修改②使用gitlab的ci进行持续继承,代码提交自动打包,ci中会使用①中的镜像作为运......
  • 支持团队协作的性能测试工具:RunnerGo
    在进行测试时,选择适合的测试工具至关重要,因为优秀的测试工具能够显著提高工作效率。对于性能测试和自动化测试而言,大多数人会选择传统的JMeter等工具,然而这些工具存在学习成本高、使用门槛高的问题。因此,我在这里向大家推荐一款开源的测试平台:RunnerGo。作为一款全栈测试平台,它不仅......
  • 支持团队协作的性能测试工具:RunnerGo
    在进行测试时,选择适合的测试工具至关重要,因为优秀的测试工具能够显著提高工作效率。对于性能测试和自动化测试而言,大多数人会选择传统的JMeter等工具,然而这些工具存在学习成本高、使用门槛高的问题。因此,我在这里向大家推荐一款开源的测试平台:RunnerGo。作为一款全栈测试平台,它不......
  • Atlassian 停服 Bitbucket?三步快速迁移至极狐GitLab
    之前的文章Jira母公司全面停服Server产品,用户如何迁移至极狐GitLab提到了Atlassian将在2月15日以后停止对Server端产品的服务支持,此后用户将无法像之前一样继续使用Jira、Bitbucket、Bamboo、Confluence这些产品了。如果用户想要继续使用这些产品,就需要迁移到Atlass......