6. Guia de instalação

Esta página contém informação de como instalar a dojot utilizando o docker-compose e o Kubernetes.

6.1. Requisitos de hardware

Os requisitos de hardware estimados para 500 dispositivos com atualizações a cada 15s são:

Tabela 6.1 Requisitos de hardware para 500 dispositivos
Implantação dojot   CPU RAM Espaço livre em disco
Docker-compose   4 Núcleos 4GB 10GB
Kubernetes Master 2 Núcleos 2GB 2GB
Kubernetes Worker 4 Núcleos 4GB 10GB

Além disso, são necessários:

  • Acesso à rede
  • As seguintes portas devem estar abertas:
    • TCP: 8000 (web interface access); 1883 (MQTT, If you are going to use MQTT); 5896 (LW2M, If you are going to use LW2M file server via HTTP instead of coap, UDP).
    • TLS: 8883 (MQTTS, If you are going to use MQTT with TLS, in secure mode.).
    • UDP: 5683 and 5693 (LW2M, If you are going to use LW2M); 5684 and 5694 (LW2M, If you are going to use LW2M with DTLS).

Nota: Os núcles acima são de aproximadamente 3.5 GHz (x86-64)

6.2. Docker-compose


Neste video tutorial acima é utilizada a versão v0.4.2, mas o mesmo video é válido para a versão atual, apenas é necessário mudar pra a versão v0.4.3

Este documento contém instruções de como criar um ambiente para instalação trivial da dojot em um único host utilizando o docker-compose como o processo de orquestração da plataforma.

Muito simples, esta opção de instalação é a que melhor se adapta para desenvolvimento e verificação da plataforma dojot, mas não é aconselhável para ambientes de produção.

Este guia foi verificado utilizando-se o sistema operacional Ubuntu 16.04 e 18.04 LTS.

As seções seguintes descrevem todas as dependências do docker-compose.

6.2.1. Docker engine (motor do docker)

Informações atualizadas e procedimentos de instalação para o docker engine podem ser encontrados na documentação do projeto:

https://docs.docker.com/engine/install/ubuntu/

Nota

Um passo adicional no processo de instalação e configuração do docker em um determinado equipamento é definir quem será elegível para criar/iniciar instâncias do docker.

Caso os passos pós-instalação não tiverem sido executados (mais especificamente o “Manage docker como usuário não-root”), todos os comandos do docker e do docker-compose devem ser executados pelo super usuário (root), ou invocando o sudo.

https://docs.docker.com/engine/installation/linux/linux-postinstall/

6.2.2. Docker-compose

Informações atualizadas sobre procedimentos de instalação para o docker-compose podem ser encontradas na documentação do projeto:

https://docs.docker.com/compose/install/

6.2.3. Instalação

Para construir o ambiente, simplesmente clone o repositório e execute os comandos abaixo.

O repositório com os scripts de instalação e configuração do docker-compose podem ser encontrados em:

https://github.com/dojot/docker-compose

ou com o comando git clone:

git clone https://github.com/dojot/docker-compose.git
# Let's move into the repo - all commands in this page should be executed
# inside it.
cd docker-compose

Uma vez que o repositório esteja propriamente clonado, selecione a versão a ser utilizada por meio da tag apropriada (note que o tagname deve ser substituído):

# Must be run from within the deployment repo

git checkout tag_name -b branch_name

Por exemplo:

git checkout v0.4.3 -b v0.4.3

Feito isso, o ambiente pode ser iniciado assim:

# Must be run from the root of the deployment repo.
# May need sudo to work: sudo docker-compose up -d
docker-compose up -d

Para verfificar o estado de um container individual, comandos do docker podem ser utilizados, como por exemplo:

# Shows the list of currently running containers, along with individual info
docker ps

# Shows the list of all configured containers, along with individual info
docker ps -a

Nota

Todos os comandos para docker e docker-compose podem requerer credenciais de super usuário (root) ou sudo.

Para permitir usuários “não-root” gerenciar o docker, confira a documentação do docker:

https://docs.docker.com/engine/installation/linux/linux-postinstall/

6.2.4. Utilização

A interface web está disponível em http://localhost:8000. O usuário é admin e a senha é admin. Você também pode interagir com a plataforma utilizando o Components and APIs.

Leia o Utilizando a API da dojot e Usando a interface WEB para maiores informações sobre como interagir com a plataforma dojot.

6.3. Kubernetes

Neste video tutorial acima é utilizada a versão v0.4.2, mas o mesmo video é válido para a versão atual, apenas é necessário mudar pra a versão v0.4.3

This section provides instructions on how to create a dojot deployment on a multi-node environment, using Kubernetes as the orchestration platform.

Esta opção de implantação, quando configurada corretamente, pode ser usada para criar ambientes de produção.

As seções a seguir descrevem todas as dependências e etapas necessárias para esta implantação.

6.3.1. Cluster Kubernetes

Para este guia, é recomendável que você já tenha um cluster K8s funcionando.

Se você precisar criar um cluster Kubernetes do zero, informações atualizadas e procedimentos de instalação podem ser encontrados na documentação de instalação do Kubernetes.

6.3.2. Kubernetes Requisitos

  • A versão suportada pelo Kubernetes é entre v1.11 e v1.15.
  • Acesso aos repositórios do Docker Hub
  • (opcional) uma classe de armazenamento que será usada para armazenamento persistente

6.3.3. Implantação dojot

Para implantar o dojot no Kubernetes, é recomendável o uso de playbooks ansible desenvolvidos para o dojot. Os manuais e todo o código relacionado podem ser encontrados no repositório *Ansible* dojot.

As etapas a seguir descreverão como usar este repositório e o ansible.

6.3.3.1. 1. Clonando o repositório

A primeira etapa da implantação é a clonagem do repositório. Para fazer isso, execute o comando:

git clone -b v0.4.3 https://github.com/dojot/ansible-dojot

6.3.3.2. 2. Instalando dependências

A próxima etapa é instalar as dependências para executar o ansible, essas dependências incluem o próprio ansible com outros módulos que serão usados para analisar modelos e se comunicar com os kubernetes.

Digite a pasta em que o repositório foi baixado e instale os pacotes pip com os seguintes comandos:

cd ansible-dojot
pip install -r requirements.txt

6.3.3.3. 3. Configurando o inventário

Para implantar o kubernetes com ansible, é necessário modelar o ambiente desejado em um inventário ansible.

No repositório, há uma pasta ‘inventory’ que contém um exemplo de inventário chamado ‘example_local’ que pode ser usado como ponto de partida para criar o inventário do ambiente real.

O primeiro arquivo que requer alterações é o hosts.yaml. Este arquivo descreve os nós que serão acessados pelo ansible para executar a implantação. Como a implantação do dojot é feita diretamente nos K8s, apenas um nó com acesso ao cluster kubernetes é realmente necessário.

O nó que acessará o cluster pode ser um nó de cluster kubernetes acessível via SSH ou evento sua máquina local se puder alcançar o cluster kubernetes com um arquivo de configuração.

No arquivo de exemplo, o acesso é feito através de um nó local, onde o script ansible é executado. Este nó é descrito como localhost no item de hosts do grupo all.

Esses mesmos nós devem ser adicionados como filhos do grupo dojot-k8s.

Para configurar um acesso local no arquivo hosts, siga o exemplo abaixo:

---
all:
  hosts:
    localhost:
      ansible_connection: local
      ansible_python.version.major: 3
  children:
    dojot-k8s:
      hosts:
        localhost:

Para configurar o acesso remoto via ssh para um nó do cluster, siga este outro exemplo:

---
all:
  hosts:
    NODE_NAME:
      ansible_host: NODE_IP
  children:
    dojot-k8s:
      hosts:
        NODE_NAME:

A próxima etapa é configurar as variáveis obrigatórias e opcionais necessárias para implementar a dojot.

Há um documento descrevendo cada uma das variáveis que podem ser configuradas nas variáveis *Ansible* dojot.

Essas variáveis devem ser definidas para o grupo ‘dojot-k8s’, para isso, defina seus valores no arquivo dojot.yaml na pasta ‘group_vars/dojot-k8s/

6.3.3.4. 4. Executando a implantação

Agora que o inventário está definido, a próxima etapa é executar o playbook de implantação

Para fazer isso, execute o seguinte comando:

ansible-playbook -K -k -i inventories/YOUR_INVENTORY deploy.yaml

Aguarde a execução do playbook terminar sem erros.

6.3.3.5. 5. Acessando o ambiente dojot implantado

O acesso a Dojot será definido usando NodePorts. Para visualizar as portas apropriadas para acessar o ambiente, é necessário verificar a configuração do serviço.

kubectl get service -n dojot kong iotagent-mosca

Este comando retornará a porta usada para acesso externo à API REST e à GUI via kong e à porta MQTT via iotagent-mosca.