Help us learn about your current experience with the documentation. Take the survey.

管理 Kubernetes 实例的代理

  • Tier: Free, Premium, Ultimate
  • Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated

使用以下任务来处理 Kubernetes 代理。

查看您的代理

已安装的 agentk 版本显示在 代理 选项卡上。

先决条件:

  • 您必须至少拥有 Developer 角色。

查看代理列表:

  1. 在左侧边栏,选择 搜索或跳转至 并找到包含您的代理配置文件的项目。 您无法从不包含代理配置文件的项目查看已注册的代理。
  2. 选择 运维 > Kubernetes 集群
  3. 选择 代理 选项卡以查看通过代理连接到 GitLab 的集群。

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

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

配置您的代理

要配置您的代理:

  • 向可选创建的 安装期间config.yaml 文件添加内容。

您可以从代理列表中快速定位代理配置文件。 配置 列指示 config.yaml 文件的位置, 或显示如何创建它。

代理配置文件管理各种代理功能:

查看共享代理

除了您项目拥有的代理外,您还可以查看与 ci_accessuser_access 关键字共享的代理。 一旦代理与项目共享,它会自动出现在项目代理选项卡中。

要查看共享代理列表:

  1. 在左侧边栏,选择 搜索或跳转至 并找到您的项目。
  2. 选择 运维 > Kubernetes 集群
  3. 选择 代理 选项卡。

显示共享代理及其集群的列表。

查看代理的活动信息

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

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

活动列表包括:

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

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

这个史诗 中查看和提供关于 UI 的反馈。

调试代理

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

  • error
  • info
  • debug

代理有两个日志记录器:

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

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

observability:
  logging:
    level: debug
    grpc_level: warn

grpc_level 设置为 info 或更低时,会有很多 gRPC 日志。

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

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

有关调试的更多信息,请参阅 故障排除文档

重置代理令牌

一个代理一次只能有两个活动令牌。

要无停机重置代理令牌:

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

移除代理

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

通过 GitLab UI 移除代理

要从 UI 移除代理:

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

使用 GitLab GraphQL API 移除代理

  1. 从交互式 GraphQL 探索器中的查询获取 <cluster-agent-token-id>

    • 对于 GitLab.com,访问 https://gitlab.com/-/graphql-explorer 打开 GraphQL 探索器。
    • 对于 GitLab 自托管,访问 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

相关主题