Skip to main content
Em ambientes de produção, nem toda remediação automática deve ser executada sem supervisão humana. O sistema de Approval Workflow do ChatCLI permite definir políticas granulares que controlam quais ações requerem aprovação, quem pode aprovar, e em quais janelas de mudança (change windows) as ações são permitidas.

Por que Approval Workflows são Essenciais

Segurança

Previne que remediação automática cause impacto maior que o problema original (ex: rollback acidental em produção)

Compliance

Auditoria completa de quem aprovou, quando, e por que. Requisito para SOC2, PCI-DSS, HIPAA.

Confiança

Equipes adotam AIOps mais facilmente quando sabem que ações críticas requerem aprovação humana.
Sem approval workflows, uma IA que detecta um falso positivo pode executar um rollback desnecessário, afetando um deployment saudável. Com approval policies, ações de alto impacto são bloqueadas até que um humano valide a análise e o blast radius.

Visão Geral do Fluxo

ApprovalPolicy CRD

O ApprovalPolicy define regras que determinam quais ações de remediação precisam de aprovação, em quais condições, e quem pode aprovar.

Campos do Spec

ApprovalRule

Cada regra define um par match + mode com configurações específicas.

ApprovalMatch

Define quais remediações são cobertas por esta regra. A lógica é AND entre campos e OR dentro de cada campo.
Quando múltiplas regras fazem match, a regra mais restritiva prevalece. A ordem de prioridade é: manual > quorum > auto. Se uma regra exige quorum com 2 aprovadores e outra exige manual com 1, o sistema aplica quorum com 2.

Três Modos de Aprovação

Auto-approve: O sistema aprova automaticamente se todas as condições de autoApproveConditions forem atendidas. Caso contrário, escala para manual.
Lógica de avaliação:

ChangeWindowSpec

Define janelas de mudança (change windows) que controlam quando remediação automática pode ser executada.
Quando fora da change window, ações de remediação ficam enfileiradas (não descartadas). Elas serão executadas automaticamente quando a próxima janela abrir — desde que o Issue ainda esteja ativo e o approval não tenha expirado.

ApprovalRequest CRD

O ApprovalRequest é criado automaticamente pelo RemediationReconciler quando uma ação requer aprovação. Contém todas as informações necessárias para o aprovador tomar uma decisão informada.

Campos do Spec

Raiz

BlastRadiusAssessment

ApprovalEvidence

ApprovalDecision

Cada aprovação ou rejeição é registrada como uma decision no status:

Estados do ApprovalRequest

Uma única rejeição é suficiente para bloquear a ação, independente do número de aprovações. Isso garante que qualquer membro da equipe pode vetar uma ação de risco.

Blast Radius Calculator

O blast radius calculator avalia o impacto potencial de uma ação de remediação antes de solicitar aprovação.

Como Funciona

1

Consulta pods do deployment

O calculator lista todos os pods gerenciados pelo deployment alvo usando label selectors.
2

Encontra services que roteiam para os pods

Para cada Service no namespace, verifica se o selector faz match com as labels dos pods do deployment.
3

Encontra ingresses que expoe os services

Para cada Ingress no namespace, verifica se referência algum dos services afetados.
4

Calcula risk level

O risk level é determinado pelo número de pods afetados:
5

Estima downtime

Com base no tipo de ação:

Integração com RemediationReconciler

Fluxo Completo

Annotation de Controle

O RemediationReconciler usa a annotation platform.chatcli.io/approval-pending para controlar o fluxo:
Quando esta annotation está presente:
  1. O reconciler não executa nenhuma ação
  2. Consulta o status do ApprovalRequest referenciado
  3. Remove a annotation apenas quando o request é Approved
  4. Se Rejected ou Expired, marca o plan como Failed

Como Aprovar

Via kubectl

A maneira mais direta de aprovar é usando annotations:
Formato da annotation:
O reconciler do ApprovalRequest detecta a annotation, registra a decision no status, e remove a annotation.

Via REST API

O operator expõe uma API REST para integrações:
Resposta da API (exemplo):

Via Slack (interativo)

Quando integrado com o canal Slack via NotificationPolicy, o ApprovalRequest inclui botões interativos no Block Kit:
  • Approve: Registra aprovação com o usuário Slack como aprovador
  • Reject: Abre dialog para motivo de rejeição
  • Details: Expande blast radius e evidências da IA
A integração Slack interativa requer configuração adicional de um Slack App com Interactive Components habilitado e endpoint de callback apontando para o operator.

Exemplos YAML Completos

Auto-approve para Low Severity + High Confidence

Quorum de 2 Approvers para Produção

Change Window Weekdays 9-18 UTC

Use overrideForCritical: true para permitir que incidentes critical sejam remediados fora da change window. Sem isso, um incidente crítico às 3h da manhã ficará enfileirado até as 9h.

Bloqueio de RollbackDeployment em Namespaces Críticos

Auditoria e Compliance

Todas as decisões de aprovação são registradas no status do ApprovalRequest CR, criando um trail de auditoria completo:
Para compliance SOC2 e PCI-DSS, exporte os ApprovalRequests periodicamente:

Prometheus Metrics

O sistema de approval workflow expõe métricas para monitoramento: Alertas Prometheus recomendados:

Próximo Passo

Notificações e Escalação

Sistema de notificações multi-canal e políticas de escalação

SLOs e SLAs

Gestão de Service Level Objectives com burn rate alerting

AIOps Platform

Deep-dive na arquitetura AIOps completa

K8s Operator

Configuração e CRDs do operator