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/v1para 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 debatch/v1parabatch/v1beta1antes 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