Code Monkey home page Code Monkey logo

servicos_kubernetes's Introduction

Nuvem Privada com Kubernetes

Neste repositório é descrito o projeto de migração e implementação dos serviços para uma infraestrutura com contêineres “orquestrados” pelo Kubernetes. Está sendo implementado uma nuvem privada em cima do projeto cticsjeifsc/coreos.

A implementação da estrutura Kubernetes seguiu a documentação oficial. As configurações do kubernetes em si estão no projeto cticsjeifsc/coreos em cada pasta no arquivo cloud-config para cada nó, como por exemplo coreos0. O coreos0, cabe ressaltar, é o servidor API e os todos os demais são workers.

Porque migrar para contêiner e Kubernetes?

  • Fluxo natural da tecnologia.
  • Economia de recurso/hardware.
  • Facilidade de agregar e manter novos serviços.
  • Centralização de gerência, monitoramento, administração etc.
  • Serviços encapsulados podem ser movidos mais facilmente local <=> nuvem privada <=> nuvem pública.
  • Controle de versão + moderação + automação de testes = CI/CD.
  • Alta disponibilidade, fácil, fácil.
  • Auto escalonamento, fácil, fácil.
  • Google usa há 15 anos em todos os seus serviços, bilhões de contêineres por semana. Se eles podem, nós também pode(re)mos.

Estrutura do projeto macro

Projeto Macro

Serviços que podemos/queremos oferecer

Projeto Macro

Nesse repositório estamos colocando cada implementação desenvolvida. Estamos utilizando a seguinte estratégia de atuação:

  • Migrar/instalar serviços já implementados em docker compose ou Kubernetes.
  • Migrar serviços não críticos para testar a tecnologia.
  • Implementações novas importantes e críticas como fase de testes/migração.
  • Implementar serviços internos para testes de estabilidade e desempenho da tecnologia.

Armazenamento de estados e dados

Utilizamos uma abordagem para armazenamento de estados e dados onde esses não são salvos na mesma estrutura onde roda o Kubernetes, e sim em uma estrutura de armazenamento centralizada. Os pods montam um armazenamento NFS e utilizam. A implementação do storage pode ser encontrada em cticsjeifsc/storage.

Podemos ver um exemplo a seguir de um volume persistente (PV):

apiVersion: v1
kind: PersistentVolume
metadata:
  name: netbox-postgresql-base
spec:
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteMany
  nfs:
    server: storage1
    path: /mnt/storage/storage/kubernetes/ifsc/sje/a/saas/srv/netbox/postgresql/base

Serviços Web

Front-end Nginx

A proposta básica é oferecer os serviços preferencialmente na modalidade SaaS com:

  1. Disponibilidade: uso de vários servidores físicos e/ou virtuais para manter os serviços operando sem sobressaltos.
  2. Segurança: uso exclusivo de transmissão criptografada, como HTTPS, WebSocket sobre TLS, SSH e outros.
  3. Desempenho: HTTP/2, balanceamento de carga, cache HTTP etc.

A grande maioria dos serviços aqui listados são baseados em HTTP. Para garantir que todos esses atenderão aos requisitos anteriores (independente de serem projetados para tal), existe um front-end distribuído (e escalável), o srv/nginx, de forma a padronizar o acesso.

O primeiro serviço migrado foi o netbox, que já estava rodando em container em uma VM. Pode ser encontrado em srv/netbox.

Implementamos o sharelatex. A implementação está em srv/sharelatex.

Finalizamos a implementação do Rocket.chat e utilizaremos ele em substituição do Slack, assim poderemos estar testando a estabilidade do kubernetes. O acesso é feito com o usuário do LDAP, tanto para alunos quando para Servidores. Implementação srv/rocketchat.

O Nextcloud é um serviço Open Source de armazenamento e sincronização de arquivos privados, similar ao Dropbox (proprietário). O acesso é feito com o usuário do LDAP, tanto para alunos quando para Servidores. Implementação do Nextcloud srv/nextcloud.

O Onlyoffice Document Server é uma suíte de escritório on-line composta de visualizadores e editores de textos, planilhas e apresentações, totalmente compatível com os formatos Office Open XML: .docx, .xlsx, .pptx e habilitando a edição colaborativa em tempo real. O acesso ao Onlyoffice Document Server é feito pelo Nextcloud. Implementação do OnlyofficeDocumentServer srv/onlyoffice.

WordPress é um aplicativo de sistema de gerenciamento de conteúdo para web, escrito em PHP com banco de dados MySQL, voltado principalmente para a criação de sites e blogs via web. Implementação do Wordpress srv/wordpress.

Serviços baseados em SSH

OpenLDAP

Utilizada a imagem openldap para base de usuários.

Matlab

MATLAB trata-se de um software interativo de alta performance voltado para o cálculo numérico. Utilizada a imagem matlab para execução remota da aplicação via SSH.

ssh -XC [email protected] -p 2222

Octave

GNU Octave é uma linguagem de alto nível, principalmente destinada a computação numérica. Ele fornece uma conveniente interface de linha de comando para resolver problemas numericamente lineares e não-lineares. Utilizada a imagem octave para execução remota da aplicação via SSH.

ssh -XC [email protected] -p 2223

Nyqlab

NyqLab é um software educacional que visa ajudar os alunos a aprender e praticar conceitos básicos em sistemas de comunicação analógicos e digitais. Utilizada a imagem nyqlab para execução remota da aplicação via SSH.

ssh -XC [email protected] -p 2225

Outros Serviços

Mosquitto

Utilizada a implementação Mosquitto para MQTT Broker.

Para o serviço, que por enquanto opera apenas com protocolos MQTT v3.1 e v3.1.1, foi criada uma imagem mosquitto.

servicos_kubernetes's People

Contributors

85humberto avatar layzacs avatar souzagaabriel avatar thiamsantos avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.