Instale utilizando Helm

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

O que é?

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. Saiba mais na própria documentação do Helm.

No caso desta instalação, o objetivo é que você utilize a aplicação web do Horusec Web application vinculada ao seu cluster de Kubernetes com Helm.

Requisitos

Para realizar esta configuração, você precisará ter:

  • Acesso ao cluster em que deseja instalar o Horusec Manager (caso esteja utilizando múltiplos clusters, verifique como configurar o acesso a eles como configurar o acesso a eles)

  • Cliente Helm com uma versão superior a 3.1.1.

  • Conexão com um PostgreSQL para armazenamento dos dados.

  • Conexão com um RabbitMQ como message-broker (opcional).

Horusec Helm Charts

Atualmente, a aplicação web do Horusec é composta por 7 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. Account
  2. Analytic
  3. Api
  4. Auth
  5. Manager
  6. Messages
  7. Webhook

Pré-configurações

Antes de iniciar a instalação dos serviços da aplicação web do Horusec, é importante que você tenha realizado algumas configurações prévias:

Armazenamento dos dados e message-broker

Siga os passos a seguir para configurar o Horusec Helm Charts.

Passo 1: Crie o namespace horusec-system para os componentes do Horusec (se já tiver feito, pode pular para próxima etapa):

kubectl create namespace horusec-system

Passo 2: Adicione o repositório de Charts da Bitnami e instale o que precisar:

helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update

helm install rabbitmq bitnami/rabbitmq -n horusec-system

helm install postgresql --set postgresqlDatabase=horusec_db bitnami/postgresql -n horusec-system

Configuração de dados sensíveis

Passo 1: Crie o namespace horusec-system para os componentes do Horusec (se já tiver feito, pode pular para próxima etapa):

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. Por esse motivo, é preciso configurar algumas Secrets antes de iniciar a instalação.

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

kubectl create secret generic database-username --from-literal=database-username=$POSTGRES_USERNAME
kubectl create secret generic database-password --from-literal=database-password=$POSTGRES_PASSWORD
kubectl create secret generic database-uri --from-literal=database-uri=postgresql://$POSTGRES_USERNAME:$POSTGRES_PASSWORD@postgresql:5432/horusec_db?sslmode=disable

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

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

Instalação dos serviços da Horusec

Depois de realizar todas as configurações necessárias, você pode ir ao diretório raiz do pacote da release do Horusec e seguir as instruções abaixo para instalar os serviços:

helm install account horusec-account/deployments/helm/horusec-account -n horusec-system
helm install analytic horusec-analytic/deployments/helm/horusec-analytic -n horusec-system
helm install api horusec-api/deployments/helm/horusec-api -n horusec-system
helm install auth horusec-auth/deployments/helm/horusec-auth -n horusec-system
helm install manager horusec-manager/deployments/helm/horusec-manager -n horusec-system
helm install messages horusec-messages/deployments/helm/horusec-messages -n horusec-system
helm install webhook horusec-webhook/deployments/helm/horusec-webhook -n horusec-system

Acesso ao Horusec Helm Charts

Depois de rodar todos os serviços em seu ambiente, basta acessar a interface gráfica pelo link que aparece em sua aplicação web e que é 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. Por isso, é recomendado usar 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 de acessar esses endereços sem precisar de configuração de DNS, é adicionando-os no arquivo de Hosts da sua máquina. Veja no exemplo a seguir:

export INGRESS_HOST=$(kubectl -n horusec-system get ingresses manager-horusec-manager -o jsonpath='{.status.loadBalancer.ingress[0].ip}')

echo "$INGRESS_HOST        api-horus-dev.zup.com.br" | sudo tee -a /etc/hosts
echo "$INGRESS_HOST        horus-dev.zup.com.br" | sudo tee -a /etc/hosts
echo "$INGRESS_HOST        account-horus-dev.zup.com.br" | sudo tee -a /etc/hosts
echo "$INGRESS_HOST        analytic-horus-dev.zup.com.br" | sudo tee -a /etc/hosts
echo "$INGRESS_HOST        auth-horus-dev.zup.com.br" | sudo tee -a /etc/hosts

Feito isso, acesse a URL: http://horus-dev.zup.com.br/