使用 Kubernetes 代理

使用 Kubernetes 代理时,请使用以下任务。

查看您的代理

引入于 14.8 版本,安装的 agentk 版本显示在 代理 选项卡上。

先决条件:

  • 您必须至少具有开发者角色。

查看代理列表:

  1. 在左侧边栏中,选择 搜索或转到 并找到包含您的代理配置文件的项目。
  2. 在左侧边栏中,选择 运维 > Kubernetes 集群
  3. 选择 代理 选项卡,查看通过代理连接到极狐GitLab 的集群。

在此页面上,您可以查看:

  • 当前项目的所有注册代理。
  • 连接状态。
  • 集群上安装的 agentk 版本。
  • 每个代理配置文件的路径。

查看代理的活动信息

引入于 14.6 版本。

活动日志可帮助您识别问题并获取故障排除所需的信息。您可以查看当前日期前一周的事件。查看代理的活动:

  1. 在左侧边栏中,选择 搜索或转到 并找到包含您的代理配置文件的项目。
  2. 在左侧边栏中,选择 运维 > Kubernetes 集群
  3. 选择您要查看活动的代理。

活动清单包括:

  • 代理注册事件:创建新令牌时
  • 连接事件:当代理成功连接到集群时。

当您第一次连接代理或超过一个小时不活动后,连接状态会被记录。

Debug 代理

grpc_level 引入于 15.1 版本。

要调试代理的集群端组件(agentk),请根据可用选项设置日志级别:

  • error
  • info
  • debug

代理有两个记录器:

  • 通用记录器,默认为 info
  • 一个 gRPC 记录器,默认为 error

可以通过使用代理配置文件中的顶级 observability 部分,来更改其日志级别,例如将级别设置为 debugwarning

observability:
  logging:
    level: debug
    grpc_level: warn

grpc_level 设置为 info 或以下时,会出现大量 gRPC 日志。

提交配置更改并检查代理服务日志:

kubectl logs -f -l=app=gitlab-agent -n gitlab-agent

有关调试的更多信息,请参阅 疑难解答文档

重置代理令牌

  • 引入于 14.9 版本。
  • 引入于 14.10 版本,可以从 UI 中撤销代理令牌。

要在不停机的情况下重置代理令牌:

  1. 创建一个新令牌:
    1. 在左侧边栏中,选择 搜索或转到 并找到您的项目。
    2. 在左侧边栏中,选择 运维 > Kubernetes 集群
    3. 选择您要为其创建令牌的代理。
    4. 访问令牌 选项卡上,选择 创建令牌
    5. 输入令牌的名称和描述(可选)并选择 创建令牌
  2. 安全存储生成的令牌。
  3. 使用令牌,在集群中安装代理
  4. 要删除您不再使用的令牌,请返回令牌列表并选择 撤销 ( )。

删除代理

您可以使用 UIGraphQL API。代理和任何相关的令牌都会从极狐GitLab 中删除,但不会在您的 Kubernetes 集群中进行任何更改。您必须手动清理这些资源。

通过 UI 删除代理

引入于 14.7 版本。

要从 UI 中删除代理:

  1. 在左侧边栏中,选择 搜索或转到 并找到包含代理配置文件的项目。
  2. 从左侧边栏中,选择 运维 > Kubernetes 集群
  3. 在表格中,在您的代理所在行的 选项 列中,选择垂直省略号 ( )。
  4. 选择 删除代理

使用 GraphQL API 删除代理

  1. 从交互式 GraphQL 资源管理器中的查询中获取 <cluster-agent-token-id>
    • 对于 SaaS,访问 https://jihulab.com/-/graphql-explorer 打开 GraphQL Explorer。
    • 对于私有化部署实例,请转到 https://gitlab.example.com/-/graphql-explorer,将 gitlab.example.com 替换为您的实例的 URL。
    query{
      project(fullPath: "<full-path-to-agent-configuration-project>") {
        clusterAgent(name: "<agent-name>") {
          id
          tokens {
            edges {
              node {
                id
              }
            }
          }
        }
      }
    }
    
  2. 通过删除 clusterAgentToken 来使用 GraphQL 删除代理记录。

    mutation deleteAgent {
      clusterAgentDelete(input: { id: "<cluster-agent-id>" } ) {
        errors
      }
    }
    
    mutation deleteToken {
      clusterAgentTokenDelete(input: { id: "<cluster-agent-token-id>" }) {
        errors
      }
    }
    
  3. 验证删除是否成功。如果 Pod 日志中的输出包含 unauthenticated,则表示代理已成功移除:

    {
        "level": "warn",
        "time": "2021-04-29T23:44:07.598Z",
        "msg": "GetConfiguration.Recv failed",
        "error": "rpc error: code = Unauthenticated desc = unauthenticated"
    }
    
  4. 删除集群中的代理:

    kubectl delete -n gitlab-kubernetes-agent -f ./resources.yml