6. Guia de instalação¶
Esta página contém informação de como instalar a dojot utilizando o docker-compose e o Kubernetes.
Table of Contents
6.1. Requisitos de hardware¶
Os requisitos de hardware estimados para 500 dispositivos com atualizações a cada 15s são:
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 para a versão v0.4.4
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:
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.4 -b v0.4.4
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 para a versão v0.4.4
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.4 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.