Pular para o conteúdo principal
O ChatCLI publica seus Helm charts no ArtifactHub, o registro público oficial de pacotes para o ecossistema Cloud Native. Isso permite que qualquer pessoa descubra, instale e mantenha os charts atualizados diretamente pelo catálogo do ArtifactHub ou via CLI do Helm.

Charts Disponíveis

ChatCLI Server

Gateway gRPC multi-provedor de LLMs com modo agente, K8s watcher, MCP e AIOps. Registry OCI: oci://ghcr.io/diillson/charts/chatcli

ChatCLI Operator

Operator Kubernetes para detecção autônoma de incidentes, análise com IA e remediação automática. Registry OCI: oci://ghcr.io/diillson/charts/chatcli-operator

Como Funciona a Integração

A integração com o ArtifactHub é totalmente automatizada e baseada em três pilares:

1. Arquivos de Repositório (artifacthub/)

No diretório artifacthub/ do projeto existem dois arquivos separados, um para cada chart, que registram os repositórios no ArtifactHub: artifacthub/chatcli-repo.yml
repositoryID: 193ab92d-52ac-4ac1-863f-aa29927c8d74
owners:
  - name: Edilson Freitas
    email: diillson@hotmail.com
artifacthub/chatcli-operator-repo.yml
repositoryID: ccc35f25-d27b-41ca-ba20-b8de9ee2f828
owners:
  - name: Edilson Freitas
    email: diillson@hotmail.com
Esses arquivos são enviados para o registro OCI via ORAS com o MIME type application/vnd.cncf.artifacthub.repository-metadata.layer.v1.yaml, permitindo que o ArtifactHub descubra e indexe os charts automaticamente.
Cada chart possui um repositoryID único e seu próprio arquivo de metadados. O ArtifactHub lê esses artefatos OCI para sincronizar os metadados dos repositórios automaticamente.

2. Anotações nos Charts (Chart.yaml)

Os arquivos Chart.yaml de cada chart contêm anotações específicas do ArtifactHub que enriquecem a página do pacote no catálogo:
annotations:
  artifacthub.io/license: Apache-2.0
  artifacthub.io/containsSecurityUpdates: 'false'
  artifacthub.io/prerelease: 'false'
  artifacthub.io/operator: 'false'         # 'true' no chart do operator
  artifacthub.io/operatorCapabilities: Seamless Upgrades  # apenas no operator
  artifacthub.io/crds: |
    - kind: AIInsight
      version: v1alpha1
      description: Análise e recomendações geradas por IA
    # ... 17 CRDs no total
  artifacthub.io/crdsExamples: |
    - apiVersion: platform.chatcli.io/v1alpha1
      kind: Issue
      metadata:
        name: high-cpu-api-server
      spec:
        title: "High CPU usage on api-server"
        severity: critical
    # ... exemplos de ApprovalPolicy, ServiceLevelObjective, etc.
  artifacthub.io/links: |
    - name: Documentation
      url: https://chatcli.edilsonfreitas.com
    - name: Source
      url: https://github.com/diillson/chatcli
  artifacthub.io/maintainers: |
    - name: Edilson Freitas
      email: diillson@hotmail.com

Anotações Disponíveis

AnotaçãoDescriçãoServerOperator
artifacthub.io/licenseLicença do chartApache-2.0Apache-2.0
artifacthub.io/operatorIndica se é um operador Kubernetesfalsetrue
artifacthub.io/operatorCapabilitiesNível de maturidade do operadorSeamless Upgrades
artifacthub.io/containsSecurityUpdatesSinaliza atualizações de segurançafalsefalse
artifacthub.io/prereleaseMarca como versão pré-releasefalsefalse
artifacthub.io/crdsLista de CRDs instaladas pelo chart17 CRDs17 CRDs
artifacthub.io/crdsExamplesExemplos de uso das CRDs3 exemplos4 exemplos
artifacthub.io/linksLinks para documentação e código-fonte2 links2 links
artifacthub.io/maintainersMantenedores do chart11

3. Pipeline de Publicação (GitHub Actions)

A publicação é completamente automatizada via GitHub Actions no workflow 3-publish-release.yml. A cada release:
1

Trigger do release

Um push na branch main aciona o Release Please, que cria automaticamente um PR de release e, ao ser mergeado, gera a GitHub Release com a tag de versão.
2

Versionamento automático

O pipeline atualiza a versão nos Chart.yaml de ambos os charts:
sed -i "s/^version:.*/version: ${VERSION}/" deploy/helm/chatcli/Chart.yaml
sed -i "s/^appVersion:.*/appVersion: \"${VERSION}\"/" deploy/helm/chatcli/Chart.yaml
3

Injeção de changelog

O script scripts/generate-artifacthub-changelog.sh extrai as mudanças do CHANGELOG.md e injeta como anotação artifacthub.io/changes nos Chart.yaml, com tipos estruturados (added, fixed, changed, etc.) e links para PRs.
4

Empacotamento

Os charts são empacotados com helm package:
helm package deploy/helm/chatcli/ -d /tmp/charts/
helm package deploy/helm/chatcli-operator/ -d /tmp/charts/
5

Push para o registro OCI

Os pacotes são enviados para o GitHub Container Registry:
helm push /tmp/charts/chatcli-${VERSION}.tgz oci://ghcr.io/diillson/charts
helm push /tmp/charts/chatcli-operator-${VERSION}.tgz oci://ghcr.io/diillson/charts
6

Assinatura com Cosign

Ambos os charts são assinados com Cosign usando OIDC keyless, garantindo a integridade e procedência dos artefatos:
cosign sign --yes "ghcr.io/diillson/charts/chatcli@${CHART_DIGEST}"
cosign sign --yes "ghcr.io/diillson/charts/chatcli-operator@${CHART_DIGEST}"
7

Push de metadados ArtifactHub via ORAS

Os arquivos de repositório são enviados como artefatos OCI com MIME types específicos do ArtifactHub, permitindo a descoberta automática:
oras push ghcr.io/diillson/charts/chatcli:artifacthub.io \
  --config /dev/null:application/vnd.cncf.artifacthub.config.v1+yaml \
  artifacthub/chatcli-repo.yml:application/vnd.cncf.artifacthub.repository-metadata.layer.v1.yaml
8

Sincronização com o ArtifactHub

O ArtifactHub detecta os metadados no registro OCI e indexa automaticamente as novas versões dos charts no catálogo.

CRDs Documentadas

Ambos os charts declaram 17 Custom Resource Definitions nas anotações, que aparecem automaticamente na página do ArtifactHub:
CRDVersãoDescrição
AIInsightv1alpha1Análise e recomendações geradas por IA para problemas detectados
Anomalyv1alpha1Sinal bruto dos watchers, antes da correlação em issues
ApprovalPolicyv1alpha1Requisitos de aprovação para ações de remediação (auto/manual/quórum)
ApprovalRequestv1alpha1Aprovação pendente com avaliação de blast radius
AuditEventv1alpha1Registro imutável de ações na plataforma AIOps
ChaosExperimentv1alpha1Experimento de engenharia do caos em recursos Kubernetes
ClusterRegistrationv1alpha1Cluster registrado para federação multi-cluster
EscalationPolicyv1alpha1Cadeias de escalação para gestão de incidentes
IncidentSLAv1alpha1Metas de SLA para resposta e resolução por severidade
Instancev1alpha1Configuração de instância do ChatCLI
Issuev1alpha1Problema operacional detectado e correlacionado
NotificationPolicyv1alpha1Regras de entrega de notificações multicanal
PostMortemv1alpha1Relatório completo do ciclo de vida do incidente
RemediationPlanv1alpha1Plano de remediação com mais de 54 tipos de ação
Runbookv1alpha1Procedimentos operacionais vinculados a tipos de issue
ServiceLevelObjectivev1alpha1SLO com alertas de burn rate e error budgets
SourceRepositoryv1alpha1Vincula workloads ao repositório de código-fonte
As CRDs são compartilhadas entre os charts server e operator. Se ambos estiverem instalados no mesmo cluster, as CRDs do chart instalado primeiro serão utilizadas.

Instalação via ArtifactHub

ChatCLI Server

helm install chatcli oci://ghcr.io/diillson/charts/chatcli \
  --namespace chatcli --create-namespace \
  --set llm.provider=OPENAI \
  --set secrets.openaiApiKey=sk-xxx

ChatCLI Operator

helm install chatcli-operator oci://ghcr.io/diillson/charts/chatcli-operator \
  --namespace chatcli-system --create-namespace

A Partir do Código-Fonte

git clone https://github.com/diillson/chatcli.git

# Server
helm install chatcli deploy/helm/chatcli \
  --namespace chatcli --create-namespace

# Operator
helm install chatcli-operator deploy/helm/chatcli-operator \
  --namespace chatcli-system --create-namespace

Usando um Secret Existente

kubectl create secret generic chatcli-llm-keys \
  --namespace chatcli \
  --from-literal=OPENAI_API_KEY=sk-xxx \
  --from-literal=ANTHROPIC_API_KEY=sk-ant-xxx

helm install chatcli oci://ghcr.io/diillson/charts/chatcli \
  --namespace chatcli \
  --set llm.provider=OPENAI \
  --set secrets.existingSecret=chatcli-llm-keys

Atualização e Remoção

Atualizar para a Última Versão

# Server
helm upgrade chatcli oci://ghcr.io/diillson/charts/chatcli \
  --namespace chatcli --reuse-values

# Operator
helm upgrade chatcli-operator oci://ghcr.io/diillson/charts/chatcli-operator \
  --namespace chatcli-system --reuse-values
CRDs são atualizados automaticamente (GAP-06 fix). Ambos charts incluem um Helm Job pre-install,pre-upgrade que roda kubectl apply --server-side em todas as CRDs do chart antes do controller rolar. Sem esse hook, o helm upgrade mantém os CRDs antigos por design do Helm 3 e o binário novo quebra ao escrever campos/enums que o schema antigo não conhece (foi exatamente o sintoma da regressão pós-1.139.0).Opt-out quando você gerencia CRDs fora do Helm (cert-manager-style chart separado, GitOps com aplicação explícita):
helm upgrade ... --set crdUpgrade.enabled=false
O NOTES.txt printa um warning com o comando manual quando o hook está desabilitado. Veja Chaos Test Fixes — GAP-06 para o detalhe completo.

Desinstalar

helm uninstall chatcli -n chatcli
helm uninstall chatcli-operator -n chatcli-system
As CRDs não são removidas automaticamente pelo Helm. Para removê-las manualmente:
kubectl get crd -o name | grep platform.chatcli.io | xargs kubectl delete

Estrutura dos Charts

Os Helm charts ficam em deploy/helm/ no repositório:
deploy/helm/
├── chatcli/                          # Chart do servidor
│   ├── Chart.yaml                    # Metadados + anotações ArtifactHub
│   ├── README.md                     # Documentação exibida no ArtifactHub
│   ├── values.yaml                   # Valores padrão (322 linhas)
│   ├── crds/                         # 17 CRDs YAML
│   │   ├── platform.chatcli.io_aiinsights.yaml
│   │   ├── platform.chatcli.io_anomalies.yaml
│   │   └── ... (15 mais)
│   └── templates/
│       ├── deployment.yaml
│       ├── service.yaml
│       ├── secret.yaml
│       ├── configmap.yaml
│       ├── rbac.yaml
│       ├── hpa.yaml
│       ├── pdb.yaml
│       ├── ingress.yaml
│       ├── networkpolicy.yaml
│       ├── pvc.yaml
│       ├── serviceaccount.yaml
│       ├── servicemonitor.yaml
│       ├── mcp-configmap.yaml
│       ├── agents-configmap.yaml
│       ├── bootstrap-configmap.yaml
│       ├── skills-configmap.yaml
│       └── _helpers.tpl

└── chatcli-operator/                 # Chart do operator
    ├── Chart.yaml
    ├── README.md
    ├── values.yaml
    ├── crds/
    └── templates/

Diferenças entre os Charts

AspectoChatCLI ServerChatCLI Operator
FunçãoGateway gRPC de LLMs com agentes e watcherDetecção autônoma de incidentes e remediação
Tipo no ArtifactHubApplicationOperator
artifacthub.io/operatorfalsetrue
CapabilitiesSeamless Upgrades
Exemplos de CRDsIssue, ApprovalPolicy, SLOIssue, ApprovalPolicy, ChaosExperiment, SLO
Keywordschatcli, llm, grpc, ai, mcp, aiopsoperator, aiops, remediation, sre, chaos-engineering
Registry OCIoci://ghcr.io/diillson/charts/chatclioci://ghcr.io/diillson/charts/chatcli-operator

Segurança dos Charts

Ambos os charts seguem as melhores práticas de segurança para Kubernetes:

Non-Root

Containers executam como usuário não-root (UID 1000) com runAsNonRoot: true.

Filesystem Read-Only

readOnlyRootFilesystem: true — apenas volumes montados são graváveis.

Capabilities Removidas

Todas as Linux capabilities são removidas com drop: ["ALL"].

Seccomp

Perfil RuntimeDefault do seccomp habilitado por padrão.

Requisitos

  • Kubernetes: 1.30+
  • Helm: 3.10+ (suporte a registros OCI)
  • Provedor LLM: Pelo menos uma API key configurada (OpenAI, Anthropic, Google, xAI, StackSpot, GitHub Copilot ou Ollama)

Próximos Passos

Deploy com Docker e K8s

Guia completo de deployment com Docker, Compose e Helm.

K8s Operator

Detalhes do operator AIOps com 17 CRDs.

Plataforma AIOps

Visão geral da plataforma de operações inteligentes.