首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gitlab runner无法执行helm list命令

Gitlab runner无法执行helm list命令
EN

Stack Overflow用户
提问于 2022-04-14 15:33:09
回答 1查看 610关注 0票数 1

我正在尝试为我的集群内CICD管道设置一个gitlab kubernetes代理和运行程序。我的gitlab.ci是这样的:

代码语言:javascript
复制
stages:
  - deploy

deploy-new-images:
  stage: deploy
  image:
    name: alpine/helm:3.7.1
    entrypoint: [""]
  script:
    - helm list --all-namespaces
  tags:
    - staging
    - test

Gitlab能够启动此特定作业的容器,但失败时出现以下错误:

代码语言:javascript
复制
Error: list: failed to list: secrets is forbidden: User "system:serviceaccount:gitlab:default" cannot list resource "secrets" in API group "" at the cluster scope

我的代理部署有一个名为gitlab的服务帐户。此服务帐户通过一个ClusterRole与默认管理ClusterRoleBinding相关联;它还通过RoleBinding资源与角色相关联。该角色的定义如下:

代码语言:javascript
复制
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  creationTimestamp: "2022-04-14T15:27:27Z"
  labels:
    app: gitlab-agent
  name: gitlab-agent
  namespace: gitlab
  resourceVersion: "44732"
  uid: 0b09cabe-826f-4c7c-a864-3192e0c9ea42
rules:
- apiGroups:
  - ""
  resources:
  - '*'
  verbs:
  - '*'

另一方面,gitlab runner是通过Helm使用以下值部署的:

代码语言:javascript
复制
  image: "gitlab/gitlab-runner:alpine-v14.9.0"
  imagePullPolicy: "Always"
  replicas: 5
  gitlabUrl: https://gitlab.com
  runnerRegistrationToken: "{{ vault_gitlab_runner_registration_token }}"
  unregisterRunners: true
  logLevel: "debug"
  rbac:
    create: true
    rules:
    - resources: ["*"]
      verbs: ["*"]
    - apiGroups: [""]
      resources: ["*"]
      verbs: ["*"]
  clusterWideAccess: true
  metrics:
    enabled: false
  runners:
    executor: kubernetes
    locked: false
    tags: "staging,test"
    name: "test-staging-gitlab-runner"
    runUntagged: false
    config: |
      [[runners]]
        [runners.kubernetes]
          namespace = "gitlab"
          image = "ubuntu:20.04"

在我看来,代理和运行程序都有足够的权限,但是helm命令失败了。有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-14 21:31:01

简而言之,:在gitlab值文件中的,在[runners.kubernetes]下面添加设置service_account = "gitlab"

解释:执行作业的实际pod不是gitlab运行器,也不是gitlab代理pod。Gitlab的跑步者kubernetes的执行者为每一项工作都培育了一个新的吊舱。设置这些荚的服务帐户名称的位置位于上面的设置中。

上面的错误消息显示运行作业的pod使用了gitlab命名空间的默认服务帐户。此服务帐户不(也不应该)具有所需的权限。

值文件中的runners.config部分,最后在配置运行程序的config.toml文件中结束。以下是有关kubernetes执行程序的config.toml的文档:https://docs.gitlab.com/runner/executors/kubernetes.html#other-configtoml-settings

这是Kubernetes执行器交互图

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71874147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档