Skip to content

关于本页

本页介绍更夫所基于的开源内核 Keep 的通用能力。更夫在其上提供国内化增强:钉钉/企业微信/飞书通知、国产大模型接入、LDAP 认证与值班管理。部署与上手请看快速上手。

认证 ​

此提供商需要身份验证。

  • region: EKS 集群所在的 AWS 区域(必需:True,敏感:False)
  • cluster_name: EKS 集群名称(必需:True,敏感:False)
  • access_key: AWS 访问密钥(如果在 EC2 上使用 IAM 角色则留空)(必需:False,敏感:True)
  • secret_access_key: AWS 秘密访问密钥(如果在 EC2 上使用 IAM 角色则留空)(必需:False,敏感:True)

某些范围可能需要才能通过提供商执行特定操作或查询。以下是相关范围及其用例的摘要:

  • eks:DescribeCluster: 需要获取集群信息(强制)(文档)
  • eks:ListClusters: 需要列出可用集群(强制)(文档)
  • pods:delete: 删除/重启 pod 所需(文档)
  • deployments:scale: 扩展 deployments 所需(文档)
  • pods:list: 列出 pod 所需(文档)
  • pods:get: 获取 pod 详情所需(文档)
  • pods:logs: 获取 pod 日志所需(文档)

在工作流中 ​

此提供商可用于工作流。

作为"步骤"来查询数据,示例:

yaml
steps:
    - name: Query eks
      provider: eks
      config: "{{ provider.my_provider_name }}"
      with:
        command_type: {value}  # 要执行的查询类型
        # 查询的附加参数

请查看以下工作流示例:

提供商方法 ​

此提供商暴露以下提供商方法。它们在 AI 助手中可用。

  • get_pods 列出命名空间中的所有 pod 或所有命名空间中的 pod(视图,范围:pods:list, pods:get)

    • namespace: 要列出 pod 的命名空间。如果为 None,列出所有命名空间中的 pod。
  • get_pvc 列出命名空间中的所有 PVC 或所有命名空间中的 PVC(视图,范围:pods:list)

    • namespace: 要列出 pod 的命名空间。如果为 None,列出所有命名空间中的 pod。
  • get_node_pressure 获取所有节点的压差指标(视图,范围:pods:list)

  • exec_command 在 pod 中执行命令(操作,范围:pods:exec)

    • namespace: pod 的命名空间
    • pod_name: pod 的名称
    • command: 要执行的命令(字符串或数组)
    • container: 容器名称(可选,默认为第一个容器)
  • restart_pod 通过删除来重启 pod(操作,范围:pods:delete)

    • namespace: pod 的命名空间
    • pod_name: pod 的名称
  • get_deployment 获取 deployment 信息(视图,范围:pods:list)

    • deployment_name: 要获取的 deployment 名称
    • namespace: 目标命名空间(默认为"default")
  • scale_deployment 将 deployment 扩展到指定副本数(操作,范围:deployments:scale)

    • deployment_name: 要获取的 deployment 名称
    • namespace: 目标命名空间(默认为"default")
    • replicas: 要扩展到的副本数
  • get_pod_logs 从 pod 获取日志(视图,范围:pods:logs)

    • namespace: pod 的命名空间
    • pod_name: pod 的名称
    • container: 容器名称(可选)
    • tail_lines: 从日志末尾获取的行数(默认:100)

连接 Provider ​

要连接到 Amazon EKS,请按照以下步骤操作:

  1. 登录您的 AWS Console。

  2. 创建一个具有 EKS 权限的 IAM 用户:

bash
aws iam create-user --user-name eks-user
  1. 附加所需的策略:
bash
aws iam attach-user-policy --user-name eks-user --policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy
aws iam attach-user-policy --user-name eks-user --policy-arn arn:aws:iam::aws:policy/AmazonEKSServicePolicy
  1. 创建访问密钥:
bash
aws iam create-access-key --user-name eks-user

您应该得到:

{
  "AccessKey": {
    "AccessKeyId": "AKIAXXXXXXXXXXXXXXXX",
    "SecretAccessKey": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "Status": "Active"
  }
}

AccessKeyId 是您的 access_key,SecretAccessKey 是您的 secret_access_key。

  1. 从 EKS 控制台或使用以下命令记下您的集群名称和区域:
bash
aws eks list-clusters --region <your-region>

所需权限 ​

AWS IAM 用户需要以下权限:

  1. eks:DescribeCluster
  2. eks:ListClusters

特定操作的其他权限:

  1. eks:AccessKubernetesApi 用于 pod/deployment 操作
  2. eks:UpdateCluster 用于扩展操作
命令AWS IAM 权限
get_podseks:DescribeCluster
eks:AccessKubernetesApi
get_pvceks:DescribeCluster
eks:AccessKubernetesApi
get_node_pressureeks:DescribeCluster
eks:AccessKubernetesApi
get_deploymenteks:DescribeCluster
eks:AccessKubernetesApi
scale_deploymenteks:DescribeCluster
eks:AccessKubernetesApi
exec_commandeks:DescribeCluster
eks:AccessKubernetesApi
restart_podeks:DescribeCluster
eks:AccessKubernetesApi
get_pod_logseks:DescribeCluster
eks:AccessKubernetesApi

基于 MIT 协议开源的 Keep · 由更夫社区维护