Skip to content
API for the Asgard project
Python JavaScript Shell TSQL Makefile Dockerfile
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci
.github
asgard
dev
docs-src
docs
hollowman
itests
scripts
sql
static/plugins
tests
.coveragerc
.dockerignore
.gitattributes
.gitignore
CFP.md
Dockerfile
LICENSE
Pipfile
Pipfile.lock
README.md
asgard-run.sh
conftest.py
run-api-proxy.sh
setup.cfg
setup.py

README.md

Asgard API Build Status

Test Coverage codecov
Typehint Coverage codecov

https://docs.asgard.b2w.io

Projeto Asgard

O Projeto Asgard existe com dois propósitos principais:

  • Facilitar a vida de quem desenvolve aplicações (de todo tipo);
  • Facilitar a vida de quem mantém uma infra-estrutura onde rodam centenas/milhares de aplicações

O primeiro ponto é alcançado provendo uma Interface WEB (e uma API) universal onde a pessoa responsável por um conjunto de aplicações possa ver, em um único lugar, todas as informações sobre essas aplicações, como por exemplo: Quantiade de CPU/RAM alocada, Logs recentes gerados por cada instâncias dessas aplicações, lista das instâncias de cada aplicação, etc.

O segundo ponto é alcançado abstraindo toda a infra-estrutura atrás de um conjunto de APIs onde é possível permitir que o time responsável pela infra-estrutura possa escolher a melhor opção para orquestração das apps dos times de dev.

Features principais

  • Multi-tenant, permitindo que múltiplos times possam usar a mesma UI/API;
  • Separação de recursos de cada time, ou seja, um time não consegue rodar tarefas que consumam recursos de outro time;
  • Permitir que múltiplos orquestradores de containers possam ser usados (Trabalho futuro).

Ideia geral de implementação

A ideia da Asgard API é ser o único ponto com o qual qualquer código (ou pessoa) deve falar. Essa API é quem vai abstrair todos os orquestradores suportados pelo projeto. A ideia do projeto é definir seus próprios Endpoints e Resources genéricos o suficiente para poderem ser transformados/traduzidos em Endpoints e Resources específicos do orquestrador escolhido.

É a asgard API quem fala com os múltiplos orquestradores, é papel dela receber uma requisição da UI (ou de um client HTTP qualquer), decidir para qual backend aquele request deve ser encaminhado e então ela faz todas as transformações necessárias para mudar o request sendo recebido para um formato em que o orquestrador em questão consiga entender.

Componentes principais do Projeto Asgard

Componentes essenciais

Componentes opcionais

  • https://github.com/B2W-BIT/asgard-log-ingestor
    • Ingestor genérico de logs que lê as linhas de log de um RabbitMQ e indexa em vários destinos possíveis (elasticsearch, cloudwatch logs, etc)
  • https://github.com/B2W-BIT/asgard-counts-ingestor
    • Ingestor de metadados de logs, contendo apenas as contagens (de linhas de logs e de byes de logs) de cada aplicação. Esses dados são também lidos de um RabbitMQ e indexados em um elasticsearch.
  • https://github.com/B2W-BIT/asgard-app-stats-collector
    • Coletor genérico de estatísticas de uso de CPU/RAM de todas as tarefas do cluster, indexa no elasticsearch já adicionando o nome da App original. Esse coletor será o responsável por falar com outros orquestradores, à medida que suporte a eles for sendo adicionado ao projeto.

Orquestradores atualmente suportados

Atualmente a Asgard API suporta:

  • Mesosphere Marathon (https://mesosphere.github.io/marathon/)
    • Confirmamos que funciona até a versão 1.4.12. Ainda não testamos com versões posteriores (1.5.x, .1.6.x) mas pretendemos fazer isso em algum momento.
You can’t perform that action at this time.