Visão Geral da Plataforma Robusta em Ambientes Corporativos
O Robusta é uma plataforma robusta de observabilidade e automação para Kubernetes, projetada para estender significativamente as capacidades de alerta do Prometheus. A implementação do Robusta em um ambiente de rede corporativo apresenta desafios únicos, como configurações de proxy, segurança de rede e gerenciamento de múltiplos clusters. Este guia oferece um caminho detalhado para configurar o Robusta com sucesso em infraestruturas empresariais.
Considerações Arquiteturais e Pré-requisitos
Requisitos de Sistema para o Cluster Kubernetes
Para uma operação eficiente do Robusta, o cluster Kubernetes deve atender aos seguintes critérios:
| Componente | Requisito Mínimo | Configuração Recomendada |
|---|---|---|
| Versão do Kubernetes | 1.19+ | 1.23+ |
| CPU | 2 núcleos | 4 núcleos |
| Memória RAM | 4GB | 8GB |
| Armazenamento | 20GB | 100GB+ |
Permissões de Acesso à Rede (Firewall)
Em ambientes com firewall corporativo, é essencial garantir acesso aos seguintes domínios:
# Serviços centrais do Robusta
api.robusta.dev
robusta-charts.storage.googleapis.com
# Repositório de imagens de contêiner
us-central1-docker.pkg.dev
# Serviços da interface SaaS (se utilizados)
platform.robusta.dev
xvyhpoxfmtpuqqeyqkso.supabase.co
relay.robusta.dev
sp.robusta.dev
# Serviços de notificação (conforme configuração)
slack.com
teams.microsoft.com
api.opsgenie.com
# Outros serviços de notificação...
Processo de Instalação e Configuração
1. Geração do Arquivo de Configuração Base
Comece instalando a interface de linha de comando (CLI) do Robusta e gerando um arquivo de configuração inicial. Em contextos corporativos, geralmente é preferível desativar a interface de usuário SaaS e a geração de chave de assinatura durante esta etapa.
# Instalação do Robusta CLI
curl -sSL https://get.robusta.dev | bash
# Geração do arquivo de valores para o Helm, desativando UI e chave de assinatura
robusta gen-config --disable-saas-ui --skip-signing-key
2. Configuração de Proxy para Ambiente Empersarial
Em redes corporativas que utilizam proxies, é mandatório configurar as variáveis de ambiente de proxy nos valores do Helm para os componentes runner e holmes do Robusta.
runner:
envVarsAdicionais:
- nome: HTTP_PROXY
valor: "http://seu-proxy-corporativo:8080"
- nome: HTTPS_PROXY
valor: "http://seu-proxy-corporativo:8080"
- nome: NO_PROXY
valor: ".cluster.local,.svc,10.0.0.0/8,192.168.0.0/16,172.16.0.0/12" # Exceções para tráfego interno
holmes:
envVarsAdicionais:
- nome: HTTP_PROXY
valor: "http://seu-proxy-corporativo:8080"
- nome: HTTPS_PROXY
valor: "http://seu-proxy-corporativo:8080"
3. Instalação Personalizada Via Helm
Após a configuração do proxy e a geração do arquivo de valores, prossiga com a instalação do Robusta usando o Helm. Este passo permite integrar configurações específicas do ambiente corporativo.
# Adição do repositório Helm do Robusta
helm repo add robusta https://robusta-charts.storage.googleapis.com
helm repo update
# Implantação do Robusta com configurações personalizadas para a empresa
helm install robusta robusta/robusta \
-f generated_values.yaml \
--set clusterName=cluster-producao-principal \
--set globalConfig.urlGrafana="https://grafana.minhaempresa.com" \
--set globalConfig.urlPrometheus="https://prometheus.minhaempresa.com" \
--set runner.envVarsAdicionais[0].nome=HTTP_PROXY \
--set runner.envVarsAdicionais[0].valor="http://proxy.minhaempresa.com:8080" \
--namespace robusta \
--create-namespace
Configurações de Segurança Corporativa
Controle de Acesso Baseado em Função (RBAC)
A segurança é primordial. Implemente o princípio do menor privilégio configurando o RBAC para os componentes do Robusta. Desative a montagem automática de tokens de conta de serviço e o monitoramento de releases do Helm, concedendo apenas as permissões essenciais.
automountServiceAccountToken: false
monitorHelmReleases: false
runner:
regrasCustomizadasClusterRole:
- apiGroups: [""]
resources: ["pods", "pods/log", "events"]
verbs: ["get", "list", "watch"]
- apiGroups: ["apps"]
resources: ["deployments", "replicasets", "statefulsets"]
verbs: ["get", "list", "watch"]
Políticas de Rede (NetworkPolicy)
Defina políticas de rede para restringir o tráfego de saída (egress) dos pods do Robusta, permitindo comunicação apenas com os serviços necessários e com IPs externos autorizados.
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: robusta-politica-rede
namespace: robusta
spec:
podSelector:
matchLabels:
app.kubernetes.io/instance: robusta
policyTypes:
- Egress
egress:
- to:
- namespaceSelector:
matchLabels:
kubernetes.io/metadata.name: monitoramento
ports:
- protocol: TCP
port: 9090 # Prometheus
- protocol: TCP
port: 9093 # Alertmanager
- to:
- ipBlock:
cidr: 0.0.0.0/0 # Permitir saída para IPs externos
except:
- 10.0.0.0/8
- 192.168.0.0/16
- 172.16.0.0/12 # Excluir blocos de IP internos
ports:
- protocol: TCP
port: 443 # HTTPS
- protocol: TCP
port: 80 # HTTP
Estratégias para Implantação Multi-Cluster
Mecanismo de Sincronização de Configurações
Para gerenciar múltiplos clusters de forma eficiente, pode-se exportar as configurações do Robusta de um cluster "mestre" e aplicá-las em outros clusters, ajustando apenas o nome do cluster. Isso garante consistência e reduz a sobrecarga administrativa.
# Exportação de configurações comuns do cluster primário
helm get values -o yaml robusta | \
grep -v clusterName: | \
grep -v isSmallCluster: > valores_empresa_compartilhados.yaml
# Implantação em clusters secundários
helm install robusta robusta/robusta \
-f valores_empresa_compartilhados.yaml \
--set clusterName=cluster-secundario-01 \
--namespace robusta \
--create-namespace
Integrações Essenciais para Ambientes Corporativos
Integração com Slack Corporativo
Configure o Robusta para enviar alertas para o Slack, utilizando canais e URLs de API específicos da empresa, além de rotear o tráfego através de um proxy se necessário.
configuracaoDeSinks:
- slack_sink:
nome: slack-corporativo-alerts
canalSlack: "#alertas-k8s-infra"
tokenSlack: "xoxb-seu-token-slack"
# Configurações específicas da empresa
urlApi: "https://slack.minhaempresa.com/api"
proxy: "http://proxy.minhaempresa.com:8080"
Configurações Avançadas do Prometheus
Direcione o Robusta para instâncias corporativas do Prometheus e Grafana, utilizando chaves de API para autenticação e definindo regras de re-labeling para alerts para maior controle.
configuracaoGlobal:
urlPrometheus: "https://prometheus.minhaempresa.com"
urlGrafana: "https://grafana.minhaempresa.com"
chaveApiGrafana: "glsa_seu_token_grafana"
relabelDeAlertas:
- source_labels: [alertname]
regex: "(KubePodNotReady|KubeDeploymentReplicasMismatch)"
action: keep # Manter apenas estes alertas
Monitoramento e Manutenção
Configuração de Verificações de Saúde e Recursos
Implemente verificações de saúde personalizadas para garantir a disponibilidade de serviços críticos corporativos e otimize a alocação de recursos para o runner do Robusta para garantir desempenho e estabilidade.
playbooksEmbutidos:
- nome: "VerificacaoSaudeCorporativa"
gatilhos:
- em_agendamento:
intervaloCron:
expressaoCron: "0 */6 * * *" # A cada 6 horas
acoes:
- ping_incluster:
alvo: "https://api.minhaempresa.com/saude"
- criar_finding:
titulo: "Status da Verificação de Saúde Corporativa - $status"
chave_agregacao: "VerificacaoSaudeCorporativa"
runner:
recursos:
requests:
cpu: "500m"
memory: "2Gi"
limits:
cpu: "1"
memory: "4Gi"
Auditoria e Registro de Logs
Configure o Robusta para auditoria de logs, incluindo a filtragem de dados sensíveis e o roteamento de logs para um caminho específico, conforme as políticas de segurança da empresa.
configuracaoGlobal:
anotacoesPersonalizadas:
- nome: "empresa/log-filter"
valor: "(senha|token|chave|secreto)=[^&]*" # Expressão para filtrar dados sensíveis
runner:
nivel_log: "INFO"
envVarsAdicionais:
- nome: AUDITORIA_LOG_ATIVADA
valor: "true"
- nome: CAMINHO_LOG_AUDITORIA
valor: "/var/log/robusta/auditoria.log"
Diagnóstico e Resolução de Problemas Comuns
Problemas Frequentes em Ambientes Corporativos
Ao operar o Robusta em uma rede empresarial, alguns problemas podem surgir. Abaixo, uma tabela com as ocorrências mais comuns e suas respectivas soluções:
| Sintoma do Problema | Solução Proposta |
|---|---|
| Tempo limite de conexão de rede | Verificar configurações de proxy e regras de firewall. |
| Falha na validação de certificado | Importar certificados CA da empresa para os contêineres do Robusta. |
| Permissões insuficientes | Revisar as configurações de RBAC e permissões da conta de serviço. |
| Problemas de armazenamento | Validar as configurações de StorageClass e PersistentVolumeClaim (PVC). |
Comandos de Diagnóstico Úteis
Para investigar e resolver problemas, utilize os seguintes comandos:
# Verificar conectividade de rede a partir de um pod do Robusta
kubectl exec -n robusta deploy/robusta-runner -- curl -v https://api.robusta.dev
# Visualizar variáveis de ambiente de proxy configuradas
kubectl exec -n robusta deploy/robusta-runner -- env | grep -i proxy
# Inspecionar a cadeia de confiança de certificados SSL
kubectl exec -n robusta deploy/robusta-runner -- openssl s_client -connect api.robusta.dev:443 -showcerts
Otimização de Desempenho
Configuração para Clusters de Grande Escala
Para clusters de grande porte, ajuste as configurações do Robusta para otimizar o processamento de alertas e alocação de recursos, garantindo que a plataforma possa lidar com a carga.
escalarProcessamentoDeAlertas: true
ehClusterPequeno: false # Definir como false para grandes clusters
runner:
recursos:
requests:
cpu: "1000m"
memory: "4Gi"
limits:
cpu: "2000m"
memory: "8Gi"
# Otimização de armazenamento persistente
volumePersistentePlaybooks: true
tamanhoVolumePersistentePlaybooks: "20Gi"
Otimização do Processamento de Alertas
Melhore a eficiência do gerenciamento de alertas com silenciamento inteligente e agrupamento de alertas, reduzindo o ruído e focando nos problemas mais críticos.
playbooksEmbutidosPrioritarios:
- nome: "SilenciadorAlertasEmpresa"
gatilhos:
- em_alerta_prometheus:
status: "all"
acoes:
- silenciador_por_nome:
nomes: ["Watchdog", "KubeSchedulerDown", "KubeControllerManagerDown"] # Silenciar alertas específicos
configuracaoGlobal:
timeoutAgrupamentoAlertas: "300" # Agrupar alertas em um intervalo de 5 minutos