
Este operador está diseñado para habilitar K8SGPT dentro de un clúster Kubernetes. Le permitirá crear un recurso personalizado que define el comportamiento y el alcance de una carga de trabajo K8SGPT administrada. El análisis y las salidas también serán configurables para habilitar la integración en los flujos de trabajo existentes.

helm repo add k8sgpt https://charts.k8sgpt.ai/
helm repo update
helm install release k8sgpt/k8sgpt-operator -n k8sgpt-operator-system --create-namespace
Instale el operador desde la sección de instalación.
Crear secreto:
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. " , El operador k8sgpt.ai permite monitorear múltiples grupos proporcionando un valor kubeconfig .
Esta característica podría ser fascinante si desea adoptar la ingeniería de la plataforma, como ejecutar una flota de grupos de Kubernetes para múltiples partes interesadas. Especialmente diseñado para las infraestructuras basadas en API de clúster, el operador k8sgpt.ai se instalará en el mismo clúster de gestión de API de clúster: este es responsable de crear los clústeres requeridos de acuerdo con el proveedor de infraestructura para los grupos de semillas.
Una vez que se haya aprovisionado un kubeconfig basado en API de clúster de acuerdo con la convención de nombres ${CLUSTERNAME}-kubeconfig estará disponible en el mismo espacio de nombres: la clave de datos secretas convencionales es value , esto puede usarse para instruir al operador k8sgpt.ai para monitorear un clúster remoto sin instalar ningún recurso de recurso implementado en el clúster inicial.
$: 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
Una preocupación de seguridad
Si su configuración requiere el enfoque de menor privilegio, se debe proporcionar un
kubeconfigdiferente ya que la API del clúster generada está limitada al usuarioadminque tiene permisosclustr-admin.
Una vez que tenga un kubeconfig válido, se puede crear una instancia k8sgpt a medida que sigue.
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 Una vez aplicado, el operador k8sgpt.ai creará la implementación de k8sgpt.ai utilizando el clúster de semillas kubeconfig definido en el campo /spec/kubeconfig .
Los objetos Result resultantes estarán disponibles en el mismo espacio de nombres donde se ha implementado la instancia k8sgpt.ai , en consecuencia etiquetada con las siguientes claves:
k8sgpts.k8sgpt.ai/name : el nombre de instancia k8sgpt.aik8sgpts.k8sgpt.ai/namespace : el espacio de nombres de instancia k8sgpt.aik8sgpts.k8sgpt.ai/backend : el backend de IA (si se especifica) Gracias a estas etiquetas, los resultados se pueden filtrar de acuerdo con el clúster monitoreado especificado, sin contaminar el clúster subyacente con los Crds k8sgpt.ai y consumir cargas de trabajo de cálculo de semillas, así como mantener la confidencialidad sobre las credenciales del conductor de Backend AI.
En el caso de Falt
/spec/kubeconfigField, el operadork8sgpt.airastreará el clúster en el que se ha implementado: esto es posible al montar elServiceAccountproporcionado.
Instale el operador desde la sección de instalación.
Crear secreto:
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
Instale el operador desde la sección de instalación.
Crear secreto:
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
Instale el operador desde la sección de instalación.
Crear secreto:
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
Instale el operador desde la sección de instalación.
Cuando se ejecuta en AWS, tiene varias formas de dar permiso a la carga de trabajo administrada de K8SGPT para acceder a Amazon Bedrock.
Para otorgar acceso a Bedrock utilizando una cuenta de servicio de Kubernetes, cree un rol de IAM con permisos de roca madre. A continuación se incluye una política de ejemplo:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"bedrock:InvokeModel",
"bedrock:InvokeModelWithResponseStream"
],
"Resource": "*"
}
]
}
Para otorgar acceso a Bedrock usando las credenciales de AWS en un secreto de Kubernetes, puede crear un secreto:
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
Instale el operador desde la sección de instalación.
Siga la Guía de instalación de LocalAI para instalar Localai. ( No se requiere ningún secreto de Openai cuando se usa Localai ).
Aplique el objeto de configuración 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 Nota: Asegúrese de que el valor de baseUrl sea un nombre DNS construido adecuadamente para el servicio LocalAI. Debería tomar el formulario: 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 Parámetros opcionales disponibles para sumidero.
('tipo', 'webhook' son parámetros requeridos).
| herramienta | canal | icon_url | nombre de usuario |
|---|---|---|---|
| Flojo | |||
| Más importante | ✔️ | ✔️ | ✔️ |
Para más detalles, consulte aquí