管理 Kubernetes 实例代理
使用 Kubernetes 代理时,请使用以下任务。
查看您的代理
安装的 agentk
版本能够在 代理(Agent) 选项卡上展示。
先决条件:
- 您必须至少具有开发者角色。
查看代理列表:
- 在左侧导航栏,选择 搜素或前往 并找到包含您代理配置文件的项目。您无法从不包含代理配置文件的项目中查看注册的代理。
- 选择 运维 > Kubernetes 集群。
- 选择 代理(Agent) 选项卡来查看通过代理链接到极狐GitLab 的集群。
在此页面上,您可以查看:
- 当前项目的所有注册代理。
- 连接状态。
- 集群上安装的
agentk
版本。 - 每个代理配置文件的路径。
配置代理
要配置您的代理:
- 将内容添加到安装期间创建的
config.yaml
文件中。
您可以从代理列表中快速定位至代理配置文件。配置 一列中显示 config.yaml
文件的位置,或者显示如何创建一个。
代理配置文件管理不同的代理功能:
- 对极狐GitLab CI/CD 工作流。您必须授权代理来访问您的项目并添加
kubectl
命令到您的.gitlab-ci.yml
文件。 - 从本地命令终端或 UI 来访问集群。
- 配置操作容器扫描。
- 配置远程工作空间。
查看共享代理
- 引入于极狐GitLab 16.1。
除了项目拥有的代理,您还可以查看使用 ci_access
h额 user_access
关键字来共享的代理。一旦代理被共享给项目,它就会自动出现在项目代理的选项卡中。
要查看共享代理列表:
- 在左侧导航栏,选择 搜索或前往 并找到您的项目。
- 选择 运维 > Kubernetes 集群。
- 选择 代理 选项卡。
就会展示共享代理列表和集群。
查看代理的活动信息
活动日志可帮助您识别问题并获取故障排除所需的信息。您可以查看当前日期前一周的事件。查看代理的活动:
- 在左侧边栏中,选择 搜索或转到 并找到包含您的代理配置文件的项目。
- 选择 运维 > Kubernetes 集群。
- 选择您要查看活动的代理。
活动清单包括:
- 代理注册事件:创建新令牌时。
- 连接事件:当代理成功连接到集群时。
当您第一次连接代理或超过一个小时不活动后,连接状态会被记录。
Debug 代理
grpc_level
引入于 15.1 版本。
要调试代理的集群端组件(agentk
),请根据可用选项设置日志级别:
error
info
debug
代理有两个记录器:
- 通用记录器,默认为
info
。 - 一个 gRPC 记录器,默认为
error
。
可以通过使用代理配置文件中的顶级 observability
部分,来更改其日志级别,例如将级别设置为 debug
和 warning
:
observability:
logging:
level: debug
grpc_level: warn
当 grpc_level
设置为 info
或以下时,会出现大量 gRPC 日志。
提交配置更改并检查代理服务日志:
kubectl logs -f -l=app=gitlab-agent -n gitlab-agent
有关调试的更多信息,请参阅 疑难解答文档。
重置代理令牌
- 双令牌限制引入于极狐GitLab 16.1,使用名为
cluster_agents_limit_tokens_created
的功能标志。- 双令牌限制在极狐GitLab 16.2 中 GA,功能标志
cluster_agents_limit_tokens_created
被移除。
一个代理同时仅能有两个活跃令牌。
要在不停机的情况下重置代理令牌:
- 创建一个新令牌:
- 在左侧边栏中,选择 搜索或转到 并找到您的项目。
- 选择 运维 > Kubernetes 集群。
- 选择您要为其创建令牌的代理。
- 在 访问令牌 选项卡上,选择 创建令牌。
- 输入令牌的名称和描述(可选)并选择 创建令牌。
- 安全存储生成的令牌。
- 使用令牌,在集群中安装代理。
- 要删除您不再使用的令牌,请返回令牌列表并选择 撤销 ()。
删除代理
您可以使用 UI 或 GraphQL API。代理和任何相关的令牌都会从极狐GitLab 中删除,但不会在您的 Kubernetes 集群中进行任何更改。您必须手动清理这些资源。
通过 UI 删除代理
要从 UI 中删除代理:
- 在左侧边栏中,选择 搜索或转到 并找到包含代理配置文件的项目。
- 选择 运维 > Kubernetes 集群。
- 在表格中,在您的代理所在行的 选项 列中,选择垂直省略号 ()。
- 选择 删除代理。
使用 GraphQL API 删除代理
- 从交互式 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 } } } } } }
-
通过删除
clusterAgentToken
来使用 GraphQL 删除代理记录。mutation deleteAgent { clusterAgentDelete(input: { id: "<cluster-agent-id>" } ) { errors } } mutation deleteToken { clusterAgentTokenDelete(input: { id: "<cluster-agent-token-id>" }) { errors } }
-
验证删除是否成功。如果 Pod 日志中的输出包含
unauthenticated
,则表示代理已成功移除:{ "level": "warn", "time": "2021-04-29T23:44:07.598Z", "msg": "GetConfiguration.Recv failed", "error": "rpc error: code = Unauthenticated desc = unauthenticated" }
-
删除集群中的代理:
kubectl delete -n gitlab-kubernetes-agent -f ./resources.yml