Guia Técnico: Instalação e Configuração do NeuVector no Kubernetes

O NeuVector é uma plataforma de segurança de containers full-lifecycle que oferece firewall nativo para a nuvem. Este guia detalha o processo de instalação em um ambiente Kubernetes controlado.

Requisitos do Ambiente de Demonstração

  • Sistema Operacional: Ubuntu 18.04
  • Kubernetes: v1.20.14
  • Orquestração: Rancher v2.5.12
  • Runtime de Container: Docker 19.03.15
  • Versão NeuVector: 5.0.0-preview.1

1. Preparação do Namespace

Inicie criando um isolamento lógico para os componentes de segurança:

kubectl create namespace neuvector

2. Implantação de Custom Resource Definitions (CRDs)

Dependendo da versão do seu cluster Kubernetes, aplique o manifesto de CRD apropriado para permitir que o NeuVector gerencie seus recursos customizados.

Para Kubernetes 1.19 ou superior:

kubectl apply -f https://raw.githubusercontent.com/neuvector/manifests/main/kubernetes/crd-k8s-1.19.yaml

Para Kubernetes 1.18 ou versões anteriores:

kubectl apply -f https://raw.githubusercontent.com/neuvector/manifests/main/kubernetes/crd-k8s-1.16.yaml

3. Configuração de RBAC (Controle de Acesso Baseado em Função)

O NeuVector exige permissões específicas para monitorar o tráfego de rede e os eventos do cluster. Execute os comanods abaixo para configurar as Roles e RoleBindings necessárias:

# Permissões de monitoramento de recursos centrais
kubectl create clusterrole nv-binding-app-role --verb=get,list,watch,update --resource=nodes,pods,services,namespaces
kubectl create clusterrolebinding nv-binding-app-exec --clusterrole=nv-binding-app-role --serviceaccount=neuvector:default

# Permissões para leitura de políticas de RBAC
kubectl create clusterrole nv-binding-rbac-role --verb=get,list,watch --resource=rolebindings.rbac.authorization.k8s.io,roles.rbac.authorization.k8s.io,clusterrolebindings.rbac.authorization.k8s.io,clusterroles.rbac.authorization.k8s.io
kubectl create clusterrolebinding nv-binding-rbac-exec --clusterrole=nv-binding-rbac-role --serviceaccount=neuvector:default

# Permissões para Admission Control
kubectl create clusterrole nv-binding-admission-role --verb=get,list,watch,create,update,delete --resource=validatingwebhookconfigurations,mutatingwebhookconfigurations
kubectl create clusterrolebinding nv-binding-admission-exec --clusterrole=nv-binding-admission-role --serviceaccount=neuvector:default

# Gerenciamento de CRDs e políticas de segurança
kubectl create clusterrole nv-binding-crd-role --verb=watch,create,get --resource=customresourcedefinitions
kubectl create clusterrolebinding nv-binding-crd-exec --clusterrole=nv-binding-crd-role --serviceaccount=neuvector:default

kubectl create clusterrole nv-binding-rules-role --verb=list,delete --resource=nvsecurityrules,nvclustersecurityrules
kubectl create clusterrolebinding nv-binding-rules-exec --clusterrole=nv-binding-rules-role --serviceaccount=neuvector:default

# Associações de visualização e administração
kubectl create clusterrolebinding nv-binding-view-exec --clusterrole=view --serviceaccount=neuvector:default
kubectl create rolebinding nv-admin-exec --clusterrole=admin --serviceaccount=neuvector:default -n neuvector

Para validar se as configurações foram aplicadas corretamente, verifique os bindings:

kubectl get clusterrolebinding | grep nv-binding
kubectl get rolebinding -n neuvector

4. Executando a Instalação Principal

A escolha do manifesto depende do runtime utilizado nos nós do seu cluster.

Cenário A: Cluster utilizando Docker

kubectl apply -f https://raw.githubusercontent.com/neuvector/manifests/main/kubernetes/5.0.0/neuvector-docker-k8s.yaml

Cenário B: Cluster utilizando Containerd (Ex: K3s, RKE2)

kubectl apply -f https://raw.githubusercontent.com/neuvector/manifests/main/kubernetes/5.0.0/neuvector-containerd-k8s.yaml

Nota técnica sobre CronJobs: Em clusters Kubernetes inferiores à versão 1.21, a API batch/v1 para CronJobs pode não estar disponível, resultando em erro. Se encontrar esta falha, baixe o arquivo YAML e altere a versão do recurso de batch/v1 para batch/v1beta1 antes de aplicar.

5. Acesso à Interface Web (WebUI)

Por padrão, o serviço de interface é do tipo LoadBalancer. Em ambientes on-premises ou de teste, pode ser mais prático expô-lo via NodePort:

kubectl patch svc neuvector-service-webui -n neuvector --type='json' -p '[{"op":"replace","path":"/spec/type","value":"NodePort"},{"op":"add","path":"/spec/ports/0/nodePort","value":30888}]'

Após a execução, a interface estará disponível em https://<IP_DO_NODE>:30888. As credenciais iniciais padrão são:

  • Usuário: admin
  • Senha: admin

Tags: NeuVector kubernetes Segurança rbac DevSecOps

Publicado em 7-5 23:43