操作系统信息
例如:云服务器,Centos7.98C/32G

Kubernetes版本信息
Client Version: v1.31.0

Kustomize Version: v5.4.2

Server Version: v1.31.0

KubeSphere版本信息
KS v4.1.2/k8s v1.31.0 在线安装 使用kk安装。

问题是什么
gitee触发webhook会返回403,同时在ks-api也会出现403的日志,大致意思是提示匿名用户无权限访问

{“kind”:“Status”,“apiVersion”:“v1”,“metadata”:{},“status”:“Failure”,“message”:“webhook.devops.kubesphere.io \“git\” is forbidden: User \“system:anonymous\” cannot create resource \“webhook\” in API group \“devops.kubesphere.io\” at the cluster scope”,“reason”:“Forbidden”,“details”:{“name”:“git”,“group”:“devops.kubesphere.io”,“kind”:“webhook”},“code”:403}

2024-11-13T00:46:38.736588292Z I1113 08:46:38.736483 1 filters.go:96] 10.233.126.6 - “POST /kapis/devops.kubesphere.io/v1alpha2/webhook/git/?url=https%3A%2F%2Fgitee.com%2Fah_block2025%2Fblock2025-tms.git HTTP/1.1” 403 357 0ms2024-11-13T00:46:45.178684585Z I1113 08:46:45.178565 1 filters.go:96] 10.233.126.6 - “POST /kapis/devops.kubesphere.io/v1alpha2/webhook/git/?url=https%3A%2F%2Fgitee.com%2Fah_block2025%2Fblock2025-tms.git HTTP/1.1” 403 357 0ms

针对您在KubeSphere中遇到Gitee触发webhook时返回403 Forbidden错误的问题,以下是一些可能的解决步骤:

  1. 检查RBAC权限

    • 确保用户或服务账户具有在KubeSphere中创建和修改webhook的权限。
    • 检查是否有相应的Role或ClusterRoleBinding分配给用户或服务账户,允许其在devops.kubesphere.io API组中创建webhook资源。
  2. 检查Webhook配置

    • 确保webhook的URL配置正确,并且Gitee有权限向该URL发送请求。
    • 检查webhook的认证方式是否正确,如果需要认证,确保认证信息正确无误。
  3. 检查Gitee的Webhook配置

    • 在Gitee中检查webhook的配置,确保它指向了正确的KubeSphere webhook URL。
    • 确认Gitee的webhook配置没有问题,并且Gitee有权限触发webhook。
  4. 检查KubeSphere日志

    • 查看KubeSphere的日志,特别是与webhook相关的日志,以获取更多关于错误原因的信息。
    • 根据您提供的日志信息,看起来是匿名用户没有权限创建webhook资源。
  5. 修改KubeSphere配置

    • 如果您确定需要匿名用户能够触发webhook,您可能需要修改KubeSphere的RBAC配置,允许匿名用户进行必要的操作。
    • 这通常涉及到创建一个特殊的ClusterRole,允许匿名用户执行必要的操作,然后将其绑定到ClusterRoleBinding。
  6. 检查网络问题

    • 确保从Gitee到KubeSphere webhook URL的网络连接没有问题。
    • 检查是否有防火墙规则阻止了webhook请求。
  7. 重置webhook

    • 如果上述步骤都不能解决问题,您可以尝试删除现有的webhook配置,然后重新创建。

如果您已经尝试了上述步骤但仍然遇到问题,可能需要更详细地检查您的KubeSphere和Gitee的配置,或者寻求KubeSphere社区或技术支持的帮助。

2 个月 后

3.4和4版本的配置有不一致的地方,执行下方的即可修复

https://github.com/kubesphere/ks-installer/blob/release-3.4/roles/ks-core/prepare/files/ks-init/role-templates.yaml

apiVersion: iam.kubesphere.io/v1beta1

kind: GlobalRole

metadata:

name: anonymous

labels:

app.kubernetes.io/managed-by: Helm

annotations:

meta.helm.sh/release-name: ks-core

meta.helm.sh/release-namespace: kubesphere-system

rules:

- apiGroups:

- openpitrix.io

resources:

- apps

- apps/versions

- categories

- attachments

verbs:

- get

- list

- apiGroups:

- config.kubesphere.io

resources:

- configs

verbs:

- get

- list

- apiGroups:

- devops.kubesphere.io

resources:

- s2ibinaries/file

verbs:

- get

- apiGroups:

- devops.kubesphere.io

resources:

- webhook

verbs:

- get

- create

- apiGroups:

- devops.kubesphere.io

resources:

- webhooks

verbs:

- get

- create

- nonResourceURLs:

- /static/images/*

verbs:

- GET

  • cici 回复了此帖
    3 个月 后
    • 已编辑

    yzchen27 您好,請問這個應該加到哪一個CRD去呢

    我加入了這個仍然有相同報錯

    apiVersion: iam.kubesphere.io/v1beta1
    kind: GlobalRole
    metadata:
      annotations:
        meta.helm.sh/release-name: ks-core
        meta.helm.sh/release-namespace: kubesphere-system
      finalizers:
        - finalizers.kubesphere.io/globalroles
      labels:
        app.kubernetes.io/managed-by: Helm
      name: anonymous
    rules:
      - apiGroups:
          - config.kubesphere.io
        resources:
          - configs
        verbs:
          - get
          - list
      - nonResourceURLs:
          - /static/images/*
        verbs:
          - GET
      - apiGroups:
          - devops.kubesphere.io
        resources:
          - webhook
        verbs:
          - get
          - create