Instale utilizando Helm

Nesta seção, você encontra informações de como instalar a aplicação web do Horusec utilizando Helm.

O que é Helm?

O Helm é um gerenciador de pacotes que reúne em um só arquivo, denominado chart, todos os recursos definidos do Kubernetes que constituem uma aplicação. Para mais informações, acesse a documentação do Helm.

Esta instalação é para você utilizar a aplicação web do Horusec vinculada ao seu cluster de Kubernetes com Helm.

Requisitos

Veja os requisitos na seção Configuração do seu ambiente.

Horusec Helm Charts

A aplicação web do Horusec é composta por 8 serviços diferentes e cada um deles possui um chart específico.

Os comandos neste guia usam os Charts do Helm incluídos no pacote da release do Horusec de acordo com cada serviço:

  1. Core
  2. Analytic
  3. Api
  4. Auth
  5. Manager
  6. Messages
  7. Webhook
  8. Vulnerability

Pré-configurações

Antes de iniciar a instalação dos serviços da aplicação web do Horusec, você precisa configurar:

1. Armazenamento dos dados e message-broker

Siga os passos para configurar o Horusec Helm Charts:

Passo 1: Crie o namespace horusec-system para os componentes do Horusec (se já tiver feito, vá para o próximo passo):

kubectl create namespace horusec-system

Passo 2: Adicione o repositório de Charts da Bitnami e instale o que você precisa:

# add a chart repository and make sure you get the latest list of charts
helm repo add bitnami https://charts.bitnami.com/bitnami && helm repo update

# install the RabbitMQ chart
helm install rabbitmq bitnami/rabbitmq -n horusec-system

# for demonstration purposes, we're using a single instance of PostgreSQL with multiple databases
helm install postgresql bitnami/postgresql -n horusec-system -f - <<EOF
initdbScripts:
  userdata.sql: |
    create database horusec_db;
    create database analytic_db;
EOF

2. Configuração de dados sensíveis

Configure os dados sensíveis, siga os passos:

Passo 1: Crie o namespace horusec-system para os componentes do Horusec:

kubectl create namespace horusec-system

Passo 2: Os serviços que compõem a solução utilizam o segredo (Secrets) do Kubernetes para gerenciar dados sensíveis, como senhas de acesso, tokens OAuth e chaves SSH. Você precisa configurar algumas Secrets antes de iniciar a instalação.

Passo 3: Crie o segredo (Secrets) do Kubernetes:

kubectl create secret generic horusec-database --from-literal=username=$POSTGRES_USERNAME --from-literal=password=$POSTGRES_PASSWORD --namespace horusec-system

kubectl create secret generic horusec-broker --from-literal=username=$RABBITMQ_USERNAME --from-literal=password=$RABBITMQ_PASSWORD --namespace horusec-system

kubectl create secret generic horusec-jwt --from-literal=jwt-token=$JWT_SECRET --namespace horusec-system

Instalação dos serviços Horusec

Acesse a página de release para baixar o Helm Chart e extrair a release automaticamente (Linux ou macOS):

export HORUSEC_VERSION=2.15.0

curl -fsLo horusec-platform-${HORUSEC_VERSION}.zip https://github.com/ZupIT/horusec-platform/archive/refs/tags/v${HORUSEC_VERSION}.zip
unzip horusec-platform-${HORUSEC_VERSION}.zip horusec-platform-${HORUSEC_VERSION}/deployments/helm/horusec-platform/*
rm horusec-platform-${HORUSEC_VERSION}.zip
  • Instale o chart do Horusec Platform que faz o deploy dos componentes selecionados:
helm install horusec horusec-platform-${HORUSEC_VERSION}/deployments/helm/horusec-platform -n horusec-system

Acesso ao Horusec Helm Charts

Depois de rodar todos os serviços em seu ambiente, acesse a interface gráfica pelo link que aparece em sua aplicação web oferecida pelo serviço Horusec-Manager.

  • O comportamento padrão dos Charts é criar um Ingress com uma regra de entrada roteando o tráfego HTTP para seu serviço baseado em um host específico. Use um Ingress Controller para gerenciar o acesso externo aos serviços do seu cluster do Kubernetes:
kubectl -n horusec-system get ingresses manager-horusec-manager -o jsonpath='{.status.loadBalancer.ingress[0].ip}'
  • A maneira mais fácil para acessar esses endereços sem precisar de configuração de DNS, é adicionando-os no arquivo de Hosts da sua máquina. Veja no exemplo abaixo:
export INGRESS_HOST=$(kubectl -n horusec-system get ingresses horusec -o jsonpath='{.status.loadBalancer.ingress[0].ip}')

echo "$INGRESS_HOST core.local" | sudo tee -a /etc/hosts
echo "$INGRESS_HOST manager.local" | sudo tee -a /etc/hosts
echo "$INGRESS_HOST messages.local" | sudo tee -a /etc/hosts
echo "$INGRESS_HOST vulnerability.local" | sudo tee -a /etc/hosts
echo "$INGRESS_HOST webhook.local" | sudo tee -a /etc/hosts
echo "$INGRESS_HOST analytic.local" | sudo tee -a /etc/hosts
echo "$INGRESS_HOST api.local" | sudo tee -a /etc/hosts