Kubernetes
Protege todos los nodos de un clúster de Kubernetes con el chart de Helm de InfraFence y una clave de clúster - instalación, valores, actualizaciones, GitOps y qué despliega el chart.
Última actualización:
El chart de Helm ejecuta el agente como un DaemonSet: un agente en cada nodo, control plane incluido. Cada nodo se registra como un servidor propio en el panel.
Requisitos previos: Kubernetes 1.22 o posterior y Helm 3.
Crear una clave de clúster
En el panel, Ajustes › Kubernetes › Crear clave de clúster (propietarios y administradores). A diferencia de un token de instalación, una clave de clúster registra todos los nodos del clúster. Empieza por IFK- y solo se muestra una vez: cópiala en el momento. Después, la lista muestra solo sus cuatro últimos caracteres.
Revocar una clave impide que se unan nodos nuevos con ella; los nodos ya registrados siguen funcionando. En Starter solo se puede registrar un nodo, porque Starter cubre un servidor; Basic y superiores no tienen límite y facturan un servidor por nodo.
Instalar
helm install infrafence-agent oci://ghcr.io/infrafence/charts/infrafence-agent \
--namespace infrafence --create-namespace \
--set apiKey="IFK-..." \
--set clusterName="production"El panel muestra el mismo comando con tu clave y el nombre de tu clúster ya rellenados.
Actualizar y desinstalar
helm upgrade infrafence-agent oci://ghcr.io/infrafence/charts/infrafence-agent \
--namespace infrafence --reuse-valueshelm uninstall infrafence-agent --namespace infrafenceUn nodo que se vuelve a registrar (un nodo reconstruido, o un /etc/infrafence borrado) conserva su servidor en el panel y recibe un token nuevo.
Valores
| Valor | Predeterminado | Significado |
|---|---|---|
apiKey |
"" (obligatorio) |
La clave de clúster. Se guarda en un Secret. |
serverUrl |
https://infrafence.com |
El panel. |
clusterName |
"" |
Los nodos se agrupan por este nombre en el panel; si está vacío se detecta del clúster. |
image.repository |
ghcr.io/infrafence/infrafence-agent |
La imagen del agente. |
image.tag |
"" |
El appVersion del chart si está vacío. |
image.pullPolicy |
Always |
|
autoUpdate.enabled |
true |
Permite que el agente actualice su propio DaemonSet. Desactívalo con GitOps. |
ingressFirewall.enabled |
false |
RBAC para bloquear direcciones en el ConfigMap de nginx-ingress. |
ingressFirewall.namespace |
ingress-nginx |
Dónde se ejecuta nginx-ingress. |
ingressFirewall.configMapName |
ingress-nginx-controller |
Su ConfigMap. |
resources |
requests 50m CPU, 64Mi; limits 500m CPU, 256Mi | |
tolerations |
[{operator: Exists}] |
Todos los nodos, control plane incluido. |
nodeSelector |
{} |
|
priorityClassName |
"" |
|
extraEnv |
[] |
Más variables de entorno, por ejemplo WEB_LOG_PATH. |
serviceAccount.create |
true |
También serviceAccount.name y serviceAccount.annotations. |
Actualizaciones y GitOps
Con autoUpdate.enabled, un agente que tiene permiso para actualizarse (el ajuste Actualizaciones del agente está en Instalar automáticamente, o elegiste Instalar ahora) verifica la firma cosign de la imagen de la nueva versión y mueve su DaemonSet a esa imagen por digest. Si ArgoCD o Flux gestionan el clúster, desactiva esta opción y sube la etiqueta de la imagen en tu repositorio:
autoUpdate:
enabled: falseQué despliega el chart
- un DaemonSet con la red del host, el espacio de nombres PID del host y pods privilegiados, desplegado nodo a nodo;
- una ServiceAccount con acceso de solo lectura a la API de Kubernetes, más el permiso de modificar su propio DaemonSet para las actualizaciones;
- un Secret con la clave de clúster;
- con
ingressFirewall.enabled, un Role que puede escribir el ConfigMap del ingress.
Montajes del host: /var/log (solo lectura), los sockets de Docker y containerd (solo lectura) y /etc/infrafence (lectura y escritura, el registro del nodo).
Controladores de ingress
Los bloqueos funcionan en el firewall del nodo, sea cual sea el controlador de ingress. Para detectar los ataques web, el agente necesita los logs de acceso: con Traefik, activa sus logs de acceso.
