
該操作員旨在在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
從安裝部分安裝操作員。
創建秘密:
kubectl create secret generic k8sgpt-sample-secret --from-literal=openai-api-key= $OPENAI_TOKEN -n k8sgpt-operator-systemkubectl 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
# backOff:
# enabled: false
# maxRetries: 5
# anonymized: false
# language: english
# proxyEndpoint: https://10.255.30.150 # use proxyEndpoint to setup backend through an HTTP/HTTPS proxy
noCache: false
repository: ghcr.io/k8sgpt-ai/k8sgpt
version: v0.3.41
#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❯ kubectl get results -o json | jq .
{
" apiVersion " : " v1 " ,
" items " : [
{
" apiVersion " : " core.k8sgpt.ai/v1alpha1 " ,
" kind " : " Result " ,
" spec " : {
" details " : " The error message means that the service in Kubernetes doesn't have any associated endpoints, which should have been labeled with " control-plane=controller-manager " . nnTo solve this issue, you need to add the " control-plane=controller-manager " label to the endpoint that matches the service. Once the endpoint is labeled correctly, Kubernetes can associate it with the service, and the error should be resolved. " ,k8sgpt.ai操作員允許通過提供kubeconfig值來監視多個群集。
如果您想採用平台工程,例如為多個利益相關者運行Kubernetes群集,此功能可能會令人著迷。專門為基於群集API的基礎架構設計的k8sgpt.ai操作員將安裝在同一集群API管理集群中:該群集負責根據種子簇的基礎設施提供商來創建所需的群集。
根據命名公約${CLUSTERNAME}-kubeconfig提供基於群集API的群集,將在相同的命名空間中提供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與具有clustr-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部署。
Result對象將在部署k8sgpt.ai實例的同一名稱空間中可用,因此用以下鍵標記為:
k8sgpts.k8sgpt.ai/name k8sgpt.ai名稱k8sgpts.k8sgpt.ai/namespace實例名稱k8sgpt.aik8sgpts.k8sgpt.ai/backend後端(如果指定)多虧了這些標籤,可以根據指定的監視群集過濾結果,而無需用k8sgpt.ai CRD污染基礎群集和消耗種子計算工作負載,並保持對AI後端驅動程序憑證的機密性。
如果缺少
/spec/kubeconfig字段,k8sgpt.ai操作員將跟踪已部署的群集:通過安裝提供的ServiceAccount,這是可能的。
從安裝部分安裝操作員。
創建秘密:
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 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.41
remoteCache:
credentials:
name: k8sgpt-sample-cache-secret
azure:
# Storage account must already exist
storageAccount: "account_name"
containerName: "container_name"
EOF
從安裝部分安裝操作員。
創建秘密:
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 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.41
remoteCache:
credentials:
name: k8sgpt-sample-cache-secret
s3:
bucketName: foo
region: us-west-1
EOF
從安裝部分安裝操作員。
創建秘密:
kubectl create secret generic k8sgpt-sample-secret --from-literal=azure-api-key= $AZURE_TOKEN -n k8sgpt-operator-system 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.41
EOF
從安裝部分安裝操作員。
在AWS上運行時,您有多種方法可以允許託管的K8SGPT工作負載來訪問Amazon Bedrock。
要使用Kubernetes服務帳戶授予基岩的訪問權限,請使用基岩權限創建IAM角色。下麵包括一個示例策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"bedrock:InvokeModel",
"bedrock:InvokeModelWithResponseStream"
],
"Resource": "*"
}
]
}
要使用Kubernetes秘密中的AWS憑據授予訪問基岩的訪問權限,您可以創建一個秘密:
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 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.41
EOF
從安裝部分安裝操作員。
遵循Localai安裝指南安裝Localai。 (使用Localai時不需要開放式秘密)。
應用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.41
EOF注意:確保baseUrl的值是局部服務的正確構建的DNS名稱。它應採取表格: http://local-ai.<namespace_local_ai_was_installed_in>.svc.cluster.local:8080/v1
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'是必需的參數。)
| 工具 | 渠道 | icon_url | 使用者名稱 |
|---|---|---|---|
| 鬆弛 | |||
| 最重要 | ✔️ | ✔️ | ✔️ |
有關詳細信息,請參閱此處