Backends

Os Backends são a cola entre o core do asgard e as outras APIs com as quais a Asgard API consegue se comunicar.

Na mesma linha dos Services, esses objetos devem mapear todas as ações que um determinado backend deve ser capaz de realizar. A comunicação entre o backend e suas respectivas APIs lowlevel deve ser feita atráves de um o mais Clients.

O backend estão atualmente divididos em:

Esss são objetos abstratos que definem quais ações cada um desses backends podem executar. As implementações desses backends é que vão adicionar suporte ao projeto Asgard a falar com múltiplos outros projetos/APIs.

A junção de múltiplos Backends forma um “Orquestrador”, modelado no objeto Orchestrator. Esse é o objeto principal em termos de funcionalidades da Asgard API, é esse objeto quem define o que a Asgard API consegue fazer, em termos de orquestração de containers.

Orquestrador

O Objeto Orchestrator é a junção de múltiplos backends. Uma instância de Orquestator recebe seus backends como parâmetros em seu construtor.

Abaixo está a implementação do objeto Orchestrator:

class asgard.backends.base.Orchestrator(agents_backend: asgard.backends.base.AgentsBackend, apps_backend: asgard.backends.base.AppsBackend)[código fonte]

Classe abstrata que mapeia todas as ações que um orquestrador pode excutar. As depdenências injetadas aqui são implementações que efetivamente falam com cada um dos backends suportados.

get_agent_by_id(agent_id: str, user: asgard.models.user.User, account: asgard.models.account.Account) → Optional[asgard.models.agent.Agent][código fonte]
get_agents(user: asgard.models.user.User, account: asgard.models.account.Account) → List[asgard.models.agent.Agent][código fonte]
get_app_stats(app: asgard.models.app.App, interval: asgard.backends.base.Interval, user: asgard.models.user.User, account: asgard.models.account.Account) → asgard.models.app.AppStats[código fonte]
get_apps_running_for_agent(user: asgard.models.user.User, agent: asgard.models.agent.Agent) → List[asgard.models.app.App][código fonte]

Método que retorna todas as apps que estão atualmente rodando no agent referido.

Orquetsradores atualmente suportados

Mesos

O Mesos é um cluster manager que suporta uma variadeade de orquestrdores de containers. Como temos modelado o backend de Agents separados do Backend de Apps podemos ter múltiplas implementações do Orchestrator Mesos com backends variados.

Atualmente a Asgard API já possui implementação de AgentsService para Apache Mesos e faremos uma implementação de AppsService (interface ainda a ser definida) para Mesosphere Marathon.

Kubernetes - Futuro

Assim que as interfaces AgentsService e AppsServices estiverem mais bem defindas poderemos começar uma implementação para suportar orquestração de containers com Kubernetes.