Project Icon

k8sgpt-operator

在Kubernetes中实现灵活的工作负载管理

该Operator使K8sGPT可在Kubernetes集群中集成与管理。用户可自定义资源以定义K8sGPT工作负载的行为与范围,支持多集群监控及多种AI后端集成,如OpenAI、AzureOpenAI和Amazon Bedrock。配置和输出分析结果可以灵活调整,方便集成到现有工作流中。

<SOURCE_TEXT> Text changing depending on mode. Light: 'So light!' Dark: 'So dark!'

Artifact Hub FOSSA Status

此操作员旨在在 Kubernetes 集群中启用 K8sGPT。 它将允许您创建一个自定义资源,以定义受管 K8sGPT 工作负载的行为和范围。分析和输出也将可配置,以实现与现有工作流程的集成。

安装

helm repo add k8sgpt https://charts.k8sgpt.ai/
helm repo update
helm install release k8sgpt/k8sgpt-operator -n k8sgpt-operator-system --create-namespace

运行示例

  1. 安装部分安装操作员。

  2. 创建密钥:

kubectl create secret generic k8sgpt-sample-secret --from-literal=openai-api-key=$OPENAI_TOKEN -n k8sgpt-operator-system
  1. 应用 K8sGPT 配置对象:
kubectl apply -f - << EOF
apiVersion: core.k8sgpt.ai/v1alpha1
kind: K8sGPT
metadata:
  name: k8sgpt-sample
  namespace: k8sgpt-operator-system
spec:
  ai:
    enabled: true
    model: gpt-3.5-turbo
    backend: openai
    secret:
      name: k8sgpt-sample-secret
      key: openai-api-key
    # anonymized: false
    # language: english
  noCache: false
  repository: ghcr.io/k8sgpt-ai/k8sgpt
  version: v0.3.8
  #integrations:
  # trivy:
  #  enabled: true
  #  namespace: trivy-system
  # filters:
  #   - Ingress
  # sink:
  #   type: slack
  #   webhook: <webhook-url> # use the sink secret if you want to keep your webhook url private
  #   secret:
  #     name: slack-webhook
  #     key: url
  #extraOptions:
  #   backstage:
  #     enabled: true
EOF
  1. 一旦应用了自定义资源,K8sGPT 部署将被安装, 你将能够在几分钟后看到分析结果对象(如果你的集群中有任何问题):
❯ kubectl get results -o json | jq .
{
  "apiVersion": "v1",
  "items": [
    {
      "apiVersion": "core.k8sgpt.ai/v1alpha1",
      "kind": "Result",
      "spec": {
        "details": "错误消息表示 Kubernetes 中的服务没有任何关联的端点,而这些端点应标记为“control-plane=controller-manager”。 \n\n要解决此问题,你需要为与服务匹配的端点添加“control-plane=controller-manager”标签。一旦端点正确标记,Kubernetes 可以将其与服务关联,错误将得到解决。",

监控多个集群

k8sgpt.ai操作员允许通过提供kubeconfig值监控多个集群。

如果你希望采用平台工程,例如为多个利益相关者运行一系列Kubernetes集群,这个功能可能会很有意思。 特别是针对基于集群API的基础设施设计,k8sgpt.ai操作员将被安装在同一个集群API管理集群中: 这个管理集群负责根据基础设施提供商为种子集群创建所需的集群。

一旦基于集群API的集群已经配置,根据命名约定${CLUSTERNAME}-kubeconfig的kubeconfig将可用在同一个命名空间中: 常规的密钥数据键为value,这可以用来指示k8sgpt.ai操作员监控远程集群,而不会将任何资源部署到种子集群。

$: kubectl get clusters
NAME              PHASE         AGE   VERSION
capi-quickstart   Provisioned   8s    v1.28.0

$: kubectl get secrets
NAME                         TYPE     DATA   AGE
capi-quickstart-kubeconfig   Opaque   1      8s

安全问题

如果你的设置需要最小特权方法, 必须提供不同的kubeconfig,因为集群API生成的一个绑定到具有cluster-admin权限的admin用户。

一旦你有一个有效的kubeconfig,可以按如下方式创建一个k8sgpt实例。

apiVersion: core.k8sgpt.ai/v1alpha1
kind: K8sGPT
metadata:
  name: capi-quickstart
  namespace: default
spec:
  ai:
    anonymized: true
    backend: openai
    language: english
    model: gpt-3.5-turbo
    secret:
      key: api_key
      name: my_openai_secret
  kubeconfig:
    key: value
    name: capi-quickstart-kubeconfig

一旦应用,k8sgpt.ai操作员将使用/spec/kubeconfig字段中定义的种子集群kubeconfig创建k8sgpt.ai部署。

结果对象将在部署k8sgpt.ai实例的同一个命名空间中可用, 并分别用以下键标记:

  • k8sgpts.k8sgpt.ai/name: k8sgpt.ai实例名称
  • k8sgpts.k8sgpt.ai/namespace: k8sgpt.ai实例命名空间
  • k8sgpts.k8sgpt.ai/backend: AI 后端(如果指定)

感谢这些标签,可以根据指定的监控集群过滤结果, 而不会污染底层集群的k8sgpt.ai CRD,并消耗种子计算资源, 以及保密关于AI 后端驱动凭证。

如果/spec/kubeconfig字段缺失,k8sgpt.ai操作员将跟踪部署到的集群: 这是通过挂载所提供的ServiceAccount实现的。

远程缓存

Azure Blob 存储
  1. 安装部分安装操作员。

  2. 创建密钥:

kubectl create secret generic k8sgpt-sample-cache-secret --from-literal=azure_client_id=<AZURE_CLIENT_ID>  --from-literal=azure_tenant_id=<AZURE_TENANT_ID> --from-literal=azure_client_secret=<AZURE_CLIENT_SECRET> -n k8sgpt-
operator-system
  1. 应用 K8sGPT 配置对象:
kubectl apply -f - << EOF
apiVersion: core.k8sgpt.ai/v1alpha1
kind: K8sGPT
metadata:
  name: k8sgpt-sample
  namespace: k8sgpt-operator-system
spec:
  ai:
    model: gpt-3.5-turbo
    backend: openai
    enabled: true
    secret:
      name: k8sgpt-sample-secret
      key: openai-api-key
  noCache: false
  repository: ghcr.io/k8sgpt-ai/k8sgpt
  version: v0.3.8
  remoteCache:
    credentials:
      name: k8sgpt-sample-cache-secret 
    azure:
      # 存储帐户必须已经存在
      storageAccount: "account_name"
      containerName: "container_name"
EOF
S3
  1. 安装部分安装操作员。

  2. 创建密钥:

kubectl create secret generic k8sgpt-sample-cache-secret --from-literal=aws_access_key_id=<AWS_ACCESS_KEY_ID>  --from-literal=aws_secret_access_key=<AWS_SECRET_ACCESS_KEY> -n k8sgpt-
operator-system
  1. 应用 K8sGPT 配置对象:
kubectl apply -f - << EOF
apiVersion: core.k8sgpt.ai/v1alpha1
kind: K8sGPT
metadata:
  name: k8sgpt-sample
  namespace: k8sgpt-operator-system
spec:
  ai:
    model: gpt-3.5-turbo
    backend: openai
    enabled: true
    secret:
      name: k8sgpt-sample-secret
      key: openai-api-key
  noCache: false
  repository: ghcr.io/k8sgpt-ai/k8sgpt
  version: v0.3.8
  remoteCache:
    credentials:
      name: k8sgpt-sample-cache-secret
    s3:
      bucketName: foo
      region: us-west-1
EOF

其他 AI 后端示例

AzureOpenAI 1. 从[安装](#installation)部分安装操作员。
  1. 创建密钥:
kubectl create secret generic k8sgpt-sample-secret --from-literal=azure-api-key=$AZURE_TOKEN -n k8sgpt-operator-system
  1. 应用 K8sGPT 配置对象:
kubectl apply -f - << EOF
apiVersion: core.k8sgpt.ai/v1alpha1
kind: K8sGPT
metadata:
  name: k8sgpt-sample
  namespace: k8sgpt-operator-system
spec:
  ai:
    enabled: true
    secret:
      name: k8sgpt-sample-secret
      key: azure-api-key
    model: gpt-35-turbo
    backend: azureopenai
    baseUrl: https://k8sgpt.openai.azure.com/
    engine: llm
  noCache: false
  repository: ghcr.io/k8sgpt-ai/k8sgpt
  version: v0.3.8
EOF
亚马逊 Bedrock
  1. 安装部分安装操作员。

  2. 在 AWS 上运行时,您有多种方式授予托管的 K8sGPT 工作负载访问亚马逊 Bedrock 的权限。

要使用 Kubernetes 服务账户授予 Bedrock 访问权限,请创建一个具有 Bedrock 权限的 IAM 角色。以下是一个示例策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "bedrock:InvokeModel",
        "bedrock:InvokeModelWithResponseStream"
      ],
      "Resource": "*"
    }
  ]
}

要使用 Kubernetes Secret 中的 AWS 凭证授予 Bedrock 访问权限,您可以创建一个密钥:

kubectl create secret generic bedrock-sample-secret --from-literal=AWS_ACCESS_KEY_ID="$(echo $AWS_ACCESS_KEY_ID)" --from-literal=AWS_SECRET_ACCESS_KEY="$(echo $AWS_SECRET_ACCESS_KEY)" -n k8sgpt-operator-system
  1. 应用 K8sGPT 配置对象:
kubectl apply -f - << EOF
apiVersion: core.k8sgpt.ai/v1alpha1
kind: K8sGPT
metadata:
  name: k8sgpt-sample
  namespace: k8sgpt-operator-system
spec:
  ai:
    enabled: true
    secret:
     name: bedrock-sample-secret
    model: anthropic.claude-v2
    region: eu-central-1
    backend: amazonbedrock
  noCache: false
  repository: ghcr.io/k8sgpt-ai/k8sgpt
  version: v0.3.29
EOF
LocalAI
  1. 安装部分安装操作员。

  2. 按照LocalAI 安装指南安装 LocalAI。(使用 LocalAI 时,不需要 OpenAI 密钥)。

  3. 应用 K8sGPT 配置对象:

kubectl apply -f - << EOF
apiVersion: core.k8sgpt.ai/v1alpha1
kind: K8sGPT
metadata:
  name: k8sgpt-local-ai
  namespace: default
spec:
  ai:
    enabled: true
    model: ggml-gpt4all-j
    backend: localai
    baseUrl: http://local-ai.local-ai.svc.cluster.local:8080/v1
  noCache: false
  repository: ghcr.io/k8sgpt-ai/k8sgpt
  version: v0.3.8
EOF

注意:确保 baseUrl 的值是一个正确构造的 LocalAI 服务的DNS 名称。其形式应为:http://local-ai.<namespace_local_ai_was_installed_in>.svc.cluster.local:8080/v1。

  1. 同上例中的步骤 4。

K8sGPT 配置选项

ImagePullSecrets 您可以通过修改 `repository`、`version`、`imagePullSecrets` 使用自定义 k8sgpt 镜像。 `version` 实际上作为镜像标签。
kubectl apply -f - << EOF
apiVersion: core.k8sgpt.ai/v1alpha1
kind: K8sGPT
metadata:
  name: k8sgpt-sample
  namespace: k8sgpt-operator-system
spec:
  ai:
    enabled: true
    model: gpt-3.5-turbo
    backend: openai
    secret:
      name: k8sgpt-sample-secret
      key: openai-api-key
  noCache: false
  repository: sample.repository/k8sgpt
  version: sample-tag
  imagePullSecrets:
    - name: sample-secret
EOF
接收器(集成)

接收器可用的可选参数。 (‘type’,‘webhook’ 是必填参数。)

工具频道图标网址用户名
Slack
Mattermost✔️✔️✔️

Helm 值

详细信息请见此处

许可证

FOSSA 状态

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号