Kubernetes
Proteja cada nó de um cluster Kubernetes com o chart Helm do InfraFence e uma chave de cluster - instalação, values, atualizações, GitOps e o que o chart implanta.
Última atualização:
O chart Helm executa o agente como um DaemonSet: um agente em cada nó, control plane incluído. Cada nó se registra como um servidor próprio no painel.
Pré-requisitos: Kubernetes 1.22 ou posterior e Helm 3.
Criar uma chave de cluster
No painel, Configurações › Kubernetes › Criar chave de cluster (proprietários e administradores). Ao contrário de um token de instalação, uma chave de cluster registra todos os nós do cluster. Ela começa com IFK- e é mostrada uma única vez: copie-a na hora. Depois, a lista mostra só os quatro últimos caracteres.
Revogar uma chave impede que novos nós entrem com ela; os nós já registrados continuam funcionando. No Starter só um nó pode se registrar, já que o Starter cobre um servidor; o Basic e superiores não têm limite e cobram um servidor por nó.
Instalar
helm install infrafence-agent oci://ghcr.io/infrafence/charts/infrafence-agent \
--namespace infrafence --create-namespace \
--set apiKey="IFK-..." \
--set clusterName="production"O painel mostra o mesmo comando com a sua chave e o nome do cluster já preenchidos.
Atualizar e desinstalar
helm upgrade infrafence-agent oci://ghcr.io/infrafence/charts/infrafence-agent \
--namespace infrafence --reuse-valueshelm uninstall infrafence-agent --namespace infrafenceUm nó que se registra de novo (um nó recriado, ou um /etc/infrafence apagado) mantém o seu servidor no painel e recebe um novo token.
Values
| Value | Padrão | Significado |
|---|---|---|
apiKey |
"" (obrigatório) |
A chave de cluster. Guardada em um Secret. |
serverUrl |
https://infrafence.com |
O painel. |
clusterName |
"" |
Os nós são agrupados por ele no painel; detectado a partir do cluster quando vazio. |
image.repository |
ghcr.io/infrafence/infrafence-agent |
A imagem do agente. |
image.tag |
"" |
O appVersion do chart quando vazio. |
image.pullPolicy |
Always |
|
autoUpdate.enabled |
true |
Permite que o agente atualize o próprio DaemonSet. Desative com GitOps. |
ingressFirewall.enabled |
false |
RBAC para bloquear endereços no ConfigMap do nginx-ingress. |
ingressFirewall.namespace |
ingress-nginx |
Onde o nginx-ingress roda. |
ingressFirewall.configMapName |
ingress-nginx-controller |
O ConfigMap dele. |
resources |
requests 50m de CPU, 64Mi; limits 500m de CPU, 256Mi | |
tolerations |
[{operator: Exists}] |
Todos os nós, control plane incluído. |
nodeSelector |
{} |
|
priorityClassName |
"" |
|
extraEnv |
[] |
Mais variáveis de ambiente, por exemplo WEB_LOG_PATH. |
serviceAccount.create |
true |
Também serviceAccount.name e serviceAccount.annotations. |
Atualizações e GitOps
Com autoUpdate.enabled, um agente que tem permissão para atualizar (a configuração Atualizações do agente está em Instalar automaticamente, ou você escolheu Instalar agora) verifica a assinatura cosign da imagem da nova versão e move o seu DaemonSet para essa imagem pelo digest. Se o ArgoCD ou o Flux gerencia o cluster, desative isso e atualize a tag da imagem no seu repositório:
autoUpdate:
enabled: falseO que o chart implanta
- um DaemonSet com rede do host, o namespace PID do host e pods privilegiados, distribuído um nó por vez;
- uma ServiceAccount com acesso somente leitura à API do Kubernetes, mais a permissão de fazer patch no próprio DaemonSet para as atualizações;
- um Secret com a chave de cluster;
- com
ingressFirewall.enabled, uma Role que pode gravar o ConfigMap do ingress.
Mounts do host: /var/log (somente leitura), os sockets do Docker e do containerd (somente leitura) e /etc/infrafence (leitura e escrita, o registro do nó).
Controladores de ingress
Os banimentos funcionam no firewall do nó, seja qual for o controlador de ingress. Para a detecção de ataques web, o agente precisa dos logs de acesso: com o Traefik, ative os logs de acesso dele.
