Kubernetes
Proteggi ogni nodo di un cluster Kubernetes con il chart Helm di InfraFence e una chiave di cluster: installazione, values, aggiornamenti, GitOps e cosa installa il chart.
Ultimo aggiornamento:
Il chart Helm esegue l'agente come DaemonSet: un agente su ogni nodo, control plane compreso. Ogni nodo si registra come server a sé nella dashboard.
Prerequisiti: Kubernetes 1.22 o successivo e Helm 3.
Creare una chiave di cluster
Nella dashboard, Impostazioni › Kubernetes › Crea chiave di cluster (owner e admin). A differenza di un token di installazione, una chiave di cluster registra tutti i nodi del cluster. Inizia con IFK- e viene mostrata una sola volta: copiala subito. In seguito l'elenco ne mostra solo gli ultimi quattro caratteri.
Revocare una chiave impedisce a nuovi nodi di unirsi con quella chiave; i nodi già registrati continuano a funzionare. Su Starter può registrarsi un solo nodo, perché Starter copre un server; da Basic in su non c'è limite e ogni nodo viene fatturato come un server.
Installare
helm install infrafence-agent oci://ghcr.io/infrafence/charts/infrafence-agent \
--namespace infrafence --create-namespace \
--set apiKey="IFK-..." \
--set clusterName="production"La dashboard mostra lo stesso comando con la tua chiave e il nome del cluster già inseriti.
Aggiornare e disinstallare
helm upgrade infrafence-agent oci://ghcr.io/infrafence/charts/infrafence-agent \
--namespace infrafence --reuse-valueshelm uninstall infrafence-agent --namespace infrafenceUn nodo che si registra di nuovo (un nodo ricostruito, o un /etc/infrafence cancellato) mantiene il suo server nella dashboard e riceve un nuovo token.
Values
| Value | Predefinito | Significato |
|---|---|---|
apiKey |
"" (obbligatorio) |
La chiave di cluster. Salvata in un Secret. |
serverUrl |
https://infrafence.com |
La dashboard. |
clusterName |
"" |
Nella dashboard i nodi sono raggruppati in base a questo valore; se vuoto viene rilevato dal cluster. |
image.repository |
ghcr.io/infrafence/infrafence-agent |
L'immagine dell'agente. |
image.tag |
"" |
L'appVersion del chart, se vuoto. |
image.pullPolicy |
Always |
|
autoUpdate.enabled |
true |
Permette all'agente di aggiornare il proprio DaemonSet. Disattivalo con GitOps. |
ingressFirewall.enabled |
false |
RBAC per bloccare indirizzi nella ConfigMap di nginx-ingress. |
ingressFirewall.namespace |
ingress-nginx |
Dove gira nginx-ingress. |
ingressFirewall.configMapName |
ingress-nginx-controller |
La sua ConfigMap. |
resources |
requests 50m CPU, 64Mi; limits 500m CPU, 256Mi | |
tolerations |
[{operator: Exists}] |
Tutti i nodi, control plane compreso. |
nodeSelector |
{} |
|
priorityClassName |
"" |
|
extraEnv |
[] |
Altre variabili d'ambiente, per esempio WEB_LOG_PATH. |
serviceAccount.create |
true |
Ci sono anche serviceAccount.name e serviceAccount.annotations. |
Aggiornamenti e GitOps
Con autoUpdate.enabled, un agente autorizzato ad aggiornarsi (l'impostazione Aggiornamenti dell'agente è Installa automaticamente, oppure hai scelto Installa adesso) verifica la firma cosign della nuova immagine di release e sposta il proprio DaemonSet su quell'immagine tramite digest. Se il cluster è gestito da ArgoCD o Flux, disattiva questa opzione e aggiorna invece il tag dell'immagine nel tuo repository:
autoUpdate:
enabled: falseCosa installa il chart
- un DaemonSet con rete dell'host, namespace PID dell'host e pod privilegiati, distribuito un nodo alla volta;
- un ServiceAccount con accesso in sola lettura all'API di Kubernetes, più il permesso di modificare (patch) il proprio DaemonSet per gli aggiornamenti;
- un Secret con la chiave di cluster;
- con
ingressFirewall.enabled, un Role che può scrivere la ConfigMap dell'ingress.
Mount dall'host: /var/log (sola lettura), i socket di Docker e containerd (sola lettura) e /etc/infrafence (lettura e scrittura, la registrazione del nodo).
Ingress controller
I ban funzionano sul firewall del nodo, qualunque sia l'ingress controller. Per rilevare gli attacchi web l'agente ha bisogno dei log di accesso: con Traefik, attiva i suoi access log.
