Popeye — Verificação de clusters do Kubernetes
O relatório da Cloud Native Computing Foundation diz que 41% das organizações estão construindo a maioria de seus novos aplicativos em plataformas nativas da nuvem e 80% planejam fazer o mesmo nos próximos cinco anos. Isso é resultado do aumento no domínio das plataformas nativas da nuvem e da adoção do Kubernetes.
O Kubernetes é uma plataforma de orquestração de containers open source que facilita a implantação, gestão e escalonamento de aplicações em containers. Embora o Kubernetes tenha crescido muito nos últimos anos devido às suas capacidades de simplificar a gestão de aplicações, o investimento em segurança não cresceu ao mesmo ritmo, deixando algumas áreas vulneráveis a problemas e ameaças.
Apresentando Popeye
Popeye é uma ferramenta capaz de analisar cuidadosamente os clusters Kubernetes ativos e identificar e relatar possíveis problemas de configuração e recursos. Ao aumentar a complexidade dos ambientes Kubernetes, torna-se extremamente difícil para um indivíduo monitorar manualmente o grande número de manifestos e políticas que governam um cluster. Popeye automatiza esse processo e ajuda a garantir que as recomendações sejam seguidas e que problemas possíveis sejam identificados antes que se tornem graves.
O Popeye funciona como um exame de saúde para seu cluster, detectando possíveis problemas com suas configurações e uso de recursos. É uma ferramenta de leitura única que verifica não apenas arquivos estáticos, mas também seu cluster ativo e detecta configurações incorretas, recursos não utilizados e até mesmo possíveis super alocações de recursos.
Significados dos status de comando no Popeye:
- ✅ OK: Tudo parece bem!
- 🔊 Informação: Apenas algumas mensagens para sua informação.
- 😱 Aviso: Possíveis problemas que você pode querer analisar.
- 💥 Erro: Ação necessária! Esses são problemas que precisam ser corrigidos.
Versão HTML
Benefícios de utilizar o Popeye para gerenciar seu cluster do Kubernetes
Como realiza auditorias automáticas e detecta possíveis problemas de configuração e saúde dos recursos do cluster, o Popeye é uma ferramenta vital para quem trabalha com clusters Kubernetes. Ao usar o Popeye, você pode garantir que seu ambiente Kubernetes esteja seguro e otimizado, detectando erros, inconsistências ou más práticas que podem afetar a estabilidade e a performance do cluster.
Instalação Popeye
- Binários para Linux, Windows e Mac estão disponíveis como tarballs na página de lançamento.
- Para OSX/Unit usando Homebrew/LinuxBrew
brew install derailed/popeye/popeye
- Utilizando go install
go install github.com/derailed/popeye@lates
Construindo a partir do código-fonte: Popeye foi desenvolvido usando Go 1.21 ou superior. Para compilar o Popeye a partir do código-fonte, você deve:
- Clonar o repositório
- Adicione o seguinte comando no seu arquivo go.mod
replace (
github.com/derailed/popeye => MY_POPEYE_CLONED_GIT_REPO
)
- Crie e execute o executável
go run main.go
Instalação rápida
# Clone outside of GOPATH
git clone https://github.com/derailed/popeye
cd popeye
# Build and install
make build
# Run
popeye
Verificar versão do Popeye:
$ popeye version
___ ___ _____ _____ K .-'-.
| _ \___| _ \ __\ \ / / __| 8 __| `\
| _/ _ \ _/ _| \ V /| _| s `-,-`--._ `\
|_| \___/_| |___| |_| |___| [] .->' a `|-'
Biffs`em and Buffs`em! `=/ (__/_ /
\_, ` _)
`----; |
Version: 0.11.1
Commit: 22d0830c2c2000f46137b703276786c66ac90908
Date: 2023-02-20T16:52:58Z
Logs: /tmp/popeye.log
CronJob Popeye
O uso do Popeye em um cluster Kubernetes permite a identificação automática e regular de problemas comuns nas configurações de recursos. Configurá-lo como um CronJob garante que essas verificações sejam feitas automaticamente, o que ajuda a manter um ambiente produtivo e saudável. Com a configuração recomendada, o Popeye é executado a cada hora, identificando e resolvendo problemas com poucos recursos.
# Sample Popeye CronJob. Runs Popeye as a cron every hours
---
apiVersion: batch/v1
kind: CronJob
metadata:
name: popeye
namespace: popeye
spec:
schedule: "59 23 * * *"
concurrencyPolicy: Forbid
jobTemplate:
spec:
template:
spec:
serviceAccountName: popeye
restartPolicy: OnFailure
containers:
- name: popeye
image: derailed/popeye:latest
imagePullPolicy: IfNotPresent
command: ["/bin/popeye"]
args:
- -f
- /etc/config/popeye/spinach.yml
- -o
- yaml
resources:
limits:
cpu: 500m
memory: 100Mi
volumeMounts:
- name: spinach
mountPath: /etc/config/popeye
volumes:
- name: spinach
configMap:
name: popeye
items:
- key: spinach
path: spinach.yml