Coder Social home page Coder Social logo

eticaai / aguia-pescadora Goto Github PK

View Code? Open in Web Editor NEW
1.0 2.0 0.0 236 KB

Documentação de toda pilha de soluções e de usuário do PaaS da Etica.AI. Informações do cluster Tsuru sendo configurado: [Nós: 3][CPU: 14][RAM: 32GB][Disco: 800GB SSD][Custo: < 100 BRL/mês]

Home Page: https://aguia-pescadora.etica.ai

License: The Unlicense

Shell 96.30% HTML 3.70%
tsuru inclusao-digital inteligencia-artificial-inclusiva tech-for-good social-impact humanitarian aiops

aguia-pescadora's Introduction

Águia Pescadora

"Águia Pescadora" é codinome atual usado pela Etica.AI tanto da implementação da núvem pública desta como da própria documentação de como pode ser recriada por terceiros. Também é inspirada em iniciativas anteriores.

Banner Águia Pescadora - © Andy Morffew www.andymorffew.com

Website: aguia-pescadora.etica.ai GitHub: EticaAI/aguia-pescadora

Acesse o site em https://aguia-pescadora.etica.ai. Informações extras também estão disponíveis em nosso Diário de bordo.

Filosofia

Nossa filosofia pode passar por melhorias nas próximas semanas, porém desde já temos em mente o seguinte:

  • PaaS comercial? Divisão de custos entre usuários? Gratuito?
    • Gratuito. Nem mesmo permitimos opção de pagamento para não constranger finais usuários.
  • Águia Pescadora aceita doações?
    • Não existe opção de doação em dinheiro para Águia Pescadora
      • Se optar por doar por inovações técnológicas, escolha as baseadas em evidência sólida, não em tecnologia de ponta.
      • Se estiver em dúvida, doe para Cruz Vermelha Internacional.
    • Doações de tempo (exemplo: responder dúvidas, dar mentoria) que apoiem comunidades de base são bem vindas.
  • PaaS focado em estabilidade ou funcionalidades avançadas?
    • Estabilidade (somente quando houver necessidade de priorização).
      • Uma das idéias por trás da Águia Pescadora é de no mínimo hospedar projetos em produção apoiados membros da Etica.AI. O resto do poder de processamento pode ser usado para outros fins, inclusive testes de novas ferramentas ou pequenos projetos privados.
  • Alta disponibilidade ou Backup?
    • Backup (somente quando houver necessidade de priorização)
  • (...adicionar aos poucos filosofia aqui...)

Veja também

Licença

Exceto onde especificado contrário, todo conteúdo produzido neste projeto é liberado sob licença Domínio Público.

Licença do conteúdo produzido pela Etica.AI

Domínio Público

Na medida do possível segundo a lei, EticaAI renunciou a todos os direitos autorais e direitos conexos ou vizinhos a este trabalho para o Domínio Público.

aguia-pescadora's People

Contributors

dependabot[bot] avatar fititnt avatar

Stargazers

 avatar

Watchers

 avatar  avatar

aguia-pescadora's Issues

Deixar mais claro referência sobre o repositóro EticaAI/aguia-pescadora-ansible-playbooks

O arquivo diario-de-bordo/README.md (exatamente: https://github.com/EticaAI/aguia-pescadora/blob/7d9a09b907cd287d859977f288726f8c379c9804/diario-de-bordo/README.md) para alguém que esteja vendo apenas o repositório e não os issues poderia não saber que já existe o https://github.com/EticaAI/aguia-pescadora-ansible-playbooks.

Outro ponto é a badge

Captura de tela de 2019-07-21 02-18-16

Talvez ela poderia indicar a existência do repositório adicional.

Documentação mínima de como usuário pode usar o tsuru-client para fazer uso da Águia Pescadora em português

Copiado de #5 (comment)

No arquivo diario-de-bordo/tsuru-inicializacao/seu-computador.sh é o que está sendo documentado como recriar o MVP da Águia Pescadora em servidores remotos. Porém estou vendo que será necessário pelo menos documentar um passo a passo de como seria a visão de um usuário.

Creio que vou criar um arquivo diferente (e até mesmo acessar de um computador diferente). No MVP da Águia Pescadora Charlie eu acabei dando acesso de super usuário para todo mundo e ficaram com medo de estragar (ou ficaram assustados com a documentação completa do Tsuru). Creio que não tenho como pedir ajuda nessa etapa inicial, vai ter que ser bem documentado mesmo.

Esse sobre documentação mínima pode servir também para ser reusado pelo MVP de como recriar uma estrutura mínima parecia com a Águia Pescadora.

MVP de tsuru com swarm


Em #20 (comment) o erro provisioner is not a volume provisioner talvez indique que não daria para usar volumes apenas com Docker padrão, porém documentação dá entender que além de kubernetes o swarm também seria opção.

Esse ponto de questão aqui é para fazer testes do tsuru com swarm. Estou especialmente curioso se é possível "registrar o próprio docker que está o core do tsuru como swarm", ou se realmente teria que ter outra máquina.

aguia-pescadora-ansible-playbooks/tarefa/firewal falha no primeiro teste ("Ubuntu? Debian?") em função de `gather_facts: no`

Reportado por @cdiegosr


A tarefa aguia-pescadora-ansible-playbooks/tarefa/firewall disponibilizada em https://github.com/EticaAI/aguia-pescadora-ansible-playbooks/tree/master/tarefa/firewall (e cujo arquivo exato antes de correção pode ser vista em https://github.com/EticaAI/aguia-pescadora-ansible-playbooks/blob/22d8d19ce7271377f2fd22cb5e1be43f1744ce7f/tarefa/firewall/firewall.yml) pode dar um falso positivo no primeiro teste quando testado em certas situações. Mesmo o host de destino sendo um Ubuntu, ele falha.

- hosts: all
  gather_facts: no
  tasks:

  - name: Ubuntu? Debian?
    fail:
      msg: "Ubuntu/Debian fail"
    when: ansible_distribution != 'Debian' and ansible_distribution != 'Ubuntu'

# ...

Uma das formas que resolve imediatamente sem precisar documentar poderia ser não forçar o gather_facts: no.

NGinx para servir porta 443 HTTPS na primeira versão em produção

Veja também


O Tsuru atualmente está usando porta :80 e a :443 está livre. Estive olhando algum proxy reverso para por na frente e ter meio que de imediato HTTPS, porém creio que mais de imediato pode valer a pena colocar NGinx direto na VPS (sem ser via conteiner docker).

Isso pode ser mudado mais tarde, porém o NGinx é algo que eu sei que consigo configurar mais rápido e se por acaso tiver que ficar assim por um tempo mais longo, ainda seria ok.

Erro em login administrativo no Tsuru 1.7.0-rc1 imediatamente após instalação

Nosso primeiro produto mínimo viável usando apenas um servidor remoto com tudo instalado a Charlie fititnt/cplp-aiops#58 com o Tsuru 1.6.0 stable fititnt/cplp-aiops#59 funcionou muito bem. Só não foi de primeira tentativa porque sem parâmetros ele tentaria instalar em virtualbox local.

Dessa vez sem usar a versão stable, mas sim a tsuru version 1.7.0-rc1 temos alguns erros.

# O comando a seguir cria o primeiro usuario. Vou usar meu e-mail, mas você
# deveria usar o seu. Ele vai pedir senha e reconfirmação
tsuru user-create [email protected]
# Resultado:
#  Password:
#  Confirm:
#  User "[email protected]" successfully created!

# O próximo comando é para se logar no Tsuru remoto padrão (no caso temos apenas
# um, a Charlie movi para outra pasta no meu ~/.tsuru). O comando 'tsuru login'
# Também pode aceitar o e-mail como parâmetro, mas vou usar sem nesse momento
tsuru login
# Resultado
#   Email: [email protected]
#   Password:
#   Successfully logged in!

# Vamos ver se já existe algum time criado
tsuru team-list
# Resposta: vazio (não tem times existentes)

# Conforme documentação, seria necessario criar um time, porém tenho erro sem
# informação extra além de 'Error:'
tsuru team-create EticaAI
# Resultado
#   Error:

# E sim, também estou documentando meu passo a passo porque pode servir para
# reportar depois para o time do Tsuru o que pode ser melhorado na documentação
# da versão atual

# Tentando dar permissão total para meu usuário, talvez seja isso que esteja
# impedindo seguir adiante.
tsuru role-assign AllowAll [email protected]
# Error: You don't have permission to do this action

# Humm... isso funcionou com a Charlie em https://github.com/fititnt/cplp-aiops/blob/master/logbook/aguia-pescadora-charlie.sh
# porém a versão do Tsuru era a stable 1.6.0. A atual 1.7.0-rc1.

O log completo de instalação está neste arquivo: https://github.com/EticaAI/aguia-pescadora/blob/master/diario-de-bordo/tsuru-inicializacao/tsuru-inicializacao.log.

O arquivo usado na configuração de inicialização do cluster está em https://github.com/EticaAI/aguia-pescadora/blob/master/diario-de-bordo/tsuru-inicializacao/config.yml

Optar por para Tsuru 1.6.x stable (em vez de 1.7.x-RCs)

O uso do Tsuru 1.7.x-RC mais atual está menos suave do que foi os testes com a Charlie (fititnt/cplp-aiops#58, fititnt/cplp-aiops#59).

Como todas as versões da 1.7 em "RC" e (até onde percebi) não há funcionalidades nela que realmente tragam alguma vantagem para gente de imediato, (exemplo: em especial não estamos usando Kubernetes) a 1.6 pode ser aceitável nesse momento.

Se eu estivesse com um pouco mais de tempo livre (e não tivesse que dar saída em alguns componentes que estariam dentro do PaaS) eu procuraria parar e resolver os issues na 1.7 com mais calma.

Tsuru Node Águia Pescadora Delta

Diario de Bordo

################### Diario de bordo: aguia-pescadora-delta ###################
# VPS (KVM), 6 vCPUs, 16GB RAM, 400GB SSD, Ubuntu Server 18.04 64bit, Contabo (Germany)
#
# Datacenter: Contabo, Germany
# Type: Virtual Machine, KVM
# OS: Ubuntu Server 18.04 LTS 64bit
# CPU: 6 vCPUs
# RAM: 16040 MB
# Disk: 400 GB
#
# IPv4: 173.249.10.99
# IPv6: 
# Domain:
#   Full: aguia-pescadora-delta.etica.ai (TTL: 15 min)
#   Short: apd.etica.ai (TTL: 15 min)
#
# -----------------------------------------------------------------------------#
# LICENSE: Public Domain
#   Except where otherwise noted, content on this server configuration and to
#   the extent possible under law, Emerson Rocha has waived all copyright and
#   related or neighboring rights to this work to Public Domain
#
# MAINTAINER: Emerson Rocha <rocha(at)ieee.org>
#   Keep in mind that several people help with suggestions, testing, bugfixes
#   and inspiration without get names noted in places that most software
#   developers look. I'm saying this in special for people who help over
#   Facebook discussions. Even the ones without a personal computer yet and/or
#   with limited access to internet.
#
# SECURITY:
#   Reporting a Vulnerability:
#   Send e-mail to Emerson Rocha: rocha(at)ieee.org.
################################################################################

Principais issues relacionados

Principais repositórios relacionados

Estratégia no Águia Pescadora para servir HTTPS

No repositório do Tsuru foi aberto uma questão a respeito de estratégia de gerar/renovar certificados TLS usando o Let's Encrypt, vide tsuru/tsuru#2318.

Vou usar esse issue aqui como nossa documentação em português, e procurar reportar em inglês apenas o que for mais pertinente. Ou então eventualmente receber feedback de la de formas mais simples de fazer.

Esse ponto de questão também inclui o #10.

Considerar versão de Águia Pescadora usando Ansible/Chef/Saltstack/Puppet/Terraform

Bem, ter um diário de bordo (vide https://github.com/EticaAI/aguia-pescadora/tree/master/diario-de-bordo) é muito útil e descritivo a ponto de poder reusar para publicar tutoriais depois.

Porém as coisas estão ficando complexas o suficiente no Águia Pescadora para eu resolver parar e considerar aprender a sério algum Ansible/Chef/Saltstack/Puppet. Uma alternativa seria eu continuar o rascunho de automação que fiz em 0f72711 e https://github.com/EticaAI/bootstrap-vps.sh. Porém cedo ou tarde as coisas iriam ficar complicadas, e eu sei disso.

A quantidade de vezes que eu já tive que fazer (e que definitivamente terei que refazer do zero várias vezes) para ter o PaaS do Águia Pescadora vale a pena automatizar isso. Não sei exatamente qual automação eu vou escolher, e vou fazer testes, porém tenderei a escolher (ou até abordar a ideia se não atender) baseado principalmente nos seguintes princípios:

  • Não pode implicar em obrigar usar uma Infraestrutura proprietária.
    • sem ferramentas que obriguem a usar AWS/Azure/Google Cloud; não somos milionários aqui
  • Curva de aprendizagem não pode ser insanamente complexa
    • E não se tratava apenas de eu não conseguir. Notem que minha preocupação é justamente facilitar para ter mais gente ajudando em projetos como nosso. Eu evitaria escolher algo que somente eu (ou super especialistas) conseguiriam entender.
  • Deve ser possível usar de um Smartphone Android
    • A maioria tende a funcionar em Linux; porém eu me sentiria mal documentando algo que pode ser automatizado e não teria como ser executado usando Android.
    • E ok se implicar em ter trabalho adicional para instalar no Termux e já não existir pacote pronto.

E sim, para quem estiver lendo, assumam que minha experiência maior no passado foi com o Puppet. Talvez Ansible e o Chef sejam bem mais amigáveis ao ponto de eu ser menos preconceituoso para coisas que não precisam de automação tão grande assim.

Como re-criar um produto mínimo viável do Cluster Tsuru Águia Pescadora 2.0-alpha

TL;DR: o valor mensal de recriar um Cluster Tsuru em 2019 como o Águia Pescadora da Etica.AI (isto é, [Nós: 3][CPU: 14][RAM: 32GB][Disco: 800GB SSD]) é menor do que o valor típico de uma internet fixa barata em países como Moçambique e em Angola em 2019. Se você, mesmo anos depois, está lendo isto aqui, não se limite pelos demais em volta que disserem que não é possível. Talvez a maior barreira seja dificuldade de vocês em poder fazer pagamentos internacionais (isto é, dificuldade de acesso cartão de crédito ou Paypal).


Neste issue e/ou commits relacionados a ele eu vou procurar documentar de forma simples Como re-criar um produto mínimo viável do Cluster Tsuru Águia Pescadora.

Por Produto Mínimo Viável (Inglês: MVP, de Minimum Viable Product) é esta definição na Wikipedia https://pt.wikipedia.org/wiki/Produto_vi%C3%A1vel_m%C3%ADnimo. Resumidamente falando isso quer dizer permitir criar um ou mais apps de Olá Mundo.

Notem que mesmo que o aguia-pescadora passe a ficar mais complexo, pelo menos o início dele tende a ser plausível, porém pode implicar relerem o histórico de commits. Meu primeiro teste com Tsuru foi 17 dias atrás (fititnt/cplp-aiops#58, fititnt/cplp-aiops#59) então talvez um Olá Mundo de quem for tentar (mesmo se encontrar outras dificuldades ou não for exatamente o mesmo ambiente que o explicado aqui) talvez seja até mais rápido do que eu. Se demorar uma semana, ou se demorar 3 meses, é ok, faz parte.

Notem que recriar um cluster (ou então recriar um nó possível de por em produção) é algo que raríssimas pessoas fariam. Eu não tenho interesse de ser contratado por outras empresas, mas quem geralmente chega ao ponto de conseguir fazer algo como isto aqui se destaca não só em relação a quem for procurar ajudar, mas até se for querer procurar emprego em empresas da região.

Testes com implementação de versão de Águia Pescadora com host que tenha apenas docker

Este issue é sobre fazer testes que poderiam se tornar uma das opções compatíveis com padrão de implementações do águia pescadora que simplesmente sejam um host de docker.

Aqui tem um ansible-role que talvez possa servir para os testes iniciais.

Creio que talvez eu faça os testes até mesmo em repositório dedicado e na minha conta pessoal do github em vez de já deixar em um repositório na organização @EticaAI.

Um Ansible Playbook "TL;DR" de um nó tudo-em-um do Tsuru PaaS

Tão logo seja possível algo próximo do #26 (ou talvez antes dele) podemos tentar uma opção que assume que um profissional já sabe o que está fazendo e só quer saber o que colar para ter resultado imediato.

Esse TL;DR; pode assumir coisas como o alvo ser um sistema operacional específico e já ter uma conta SSH previamente criada e pronta para fazer o que deveria.

Repositório de referência: https://github.com/EticaAI/aguia-pescadora-ansible-playbooks

Documentar versões do Águia Pescadora até 2019-07-11 e sinalizar o que foi feito com issues antigos que não serão terminados

A mudança de uso de Tsuru + Docker para Tsuru+Kubernetes ja é significativa e antes disso dentro do ciclo de testes do Águia Pescadora la no https://github.com/fititnt/cplp-aiops também houve outras mudanças em relação ao que se tinha antes.

Esse ponto de questão aqui é para lembrar que vale a pena documentar versões do Águia Pescadora até 2019-07-11 e sinalizar o que foi feito com issues antigos que não serão terminados em função de conseguir atingir mesmos objetivos porém com vantagens via outras abordagens.

Issues que são especialmente afetados:

MVP de Ansible Playbook de nó tudo-em-um do Tsuru PaaS

O que comecei a testar em #25 definitivamente faz diferença no caso de um cluster mais completo e que use logo Kubernetes e não docker diretamente. Porém como já vai se ter um trabalho para documentar um cluster inteiro em https://github.com/EticaAI/aguia-pescadora-ansible-playbooks, talvez valha a pena criar uma alternatva com Ansible Playbook de implementação de um nó apenas.

Vale lembrar que já existe documentação, ainda que não testado a ponto de eu recomendar (sem ajustes extras) ser usado em produção. Vide https://github.com/EticaAI/aguia-pescadora/tree/master/diario-de-bordo/tsuru-inicializacao e https://github.com/EticaAI/aguia-pescadora/tree/master/diario-de-bordo/tsuru-inicializacao++. E uma versão mais rudimentar, porém que foi usada para testes da Charlie, ficou em fititnt/cplp-aiops#58 e fititnt/cplp-aiops#59.

No nosso caso aqui é que como possivelmente as versões mais novas de servidores podem tender a usar Ansible ou outra ferramenta, pode fazer sentido já usar isso também para uma versão mais simples.

MVP de Tsuru MySQL service (simples, sem HA)


Questão sobre termos um Produto viável mínimo (MVP, de Minimum Viable Product) relacionado do Tsuru MySQL service (simples, sem HA) na Águia Pescadora.

Os Servidores em cluster Elefante Bornéu (fititnt/cplp-aiops#45) já tem uma instalação do MariaDB ("MySQL") + Galera Cluster (fititnt/cplp-aiops#46) minimamente funcional, porém o datacenter é em outro continente (está na América do Norte, no Canadá, e a Águia Pescadora Delta/Echo/Foxtrot estão na Europa, na Alemanha). Então não seria possível reaproveitar eles nesse momento até que sejam refeitos dentro da Águia Pescadora.

MVP de Tsuru no provisionador Kubernetes k8s

Questão sobre termos um Produto viável mínimo (MVP, de Minimum Viable Product) relacionado do Tsuru no provisionador Kubernetes (simples, sem HA, nem do Tsuru nem do Kubernetes) para possivelmente ser considerado no Águia Pescadora.

Estou conseguindo encontrar mais facilmente conteúdo sobre como deixar uma Águia Pescadora mais estável para resolver questões como #17 e #20 caso o provisionador seja Kubernetes.

Um dos motivos para não usar kubernetes desde o início seria o fato de estrutura mínima para ter algo em produção é grande. Porém nosso cluster atual que foi planejado para até mesmo conseguir incorporarar as Elefante Bornéu em HA fititnt/cplp-aiops#45 em tese também permitiria teoricamente permite até mesmo Kubernetes em HA. Então pelo menos a Águia Pescadora poderia ter como provisionador o Kubernetes e ainda ficar dentro da ideia do Como re-criar um produto mínimo viável do Cluster Tsuru Águia Pescadora #5.

Pelo que andei lendo também existe um projeto chamado k3s, https://k3s.io/ que teria suporte a Kubernetes mesmo em hosts com apenas 512MB de RAM. Outro ponto é que existe o Usernetes https://github.com/rootless-containers/usernetes que permite pretende permitir rodar Kubernetes mesmo sem privilégio root.

E sim, já existem testes de rodar Kubernetes (ou provisionador com interface equivalente) até mesmo no sistema operacional Android sem root.

Posso voltar atrás e manter sem usar Kubernetes, porém se o trabalho não for muito, mas muito maior, ainda em teoria valeria a pena ter uma Águia Pescadora já em Kubernetes.

Tsuru Node Águia Pescadora Echo

Diario de Bordo

##################### Diario de bordo: aguia-pescadora-echo ####################
# VPS (KVM), 4 vCPUs, 8GB RAM, 200GB SSD, Ubuntu Server 18.04 64bit, Contabo (Germany)
#
# Datacenter: Contabo, Germany
# Type: Virtual Machine, KVM
# OS: Ubuntu Server 18.04 LTS 64bit
# CPU: 4 vCPUs
# RAM: 7976 MB
# Disk: 200 GB
#
# IPv4: 167.86.127.220
# IPv6: 
# Domain:
#   Full: aguia-pescadora-echo.etica.ai (TTL: 15 min)
#   Short: ape.etica.ai (TTL: 15 min)
#
# -----------------------------------------------------------------------------#
# LICENSE: Public Domain
#   Except where otherwise noted, content on this server configuration and to
#   the extent possible under law, Emerson Rocha has waived all copyright and
#   related or neighboring rights to this work to Public Domain
#
# MAINTAINER: Emerson Rocha <rocha(at)ieee.org>
#   Keep in mind that several people help with suggestions, testing, bugfixes
#   and inspiration without get names noted in places that most software
#   developers look. I'm saying this in special for people who help over
#   Facebook discussions. Even the ones without a personal computer yet and/or
#   with limited access to internet.
#
# SECURITY:
#   Reporting a Vulnerability:
#   Send e-mail to Emerson Rocha: rocha(at)ieee.org.
################################################################################

Principais issues relacionados

Principais repositórios relacionados

Tsuru Node Águia Pescadora Foxtrot

Diario de Bordo

################### Diario de bordo: aguia-pescadora-foxtrot ###################
# VPS (KVM), 4 vCPUs, 8GB RAM, 200GB SSD, Ubuntu Server 18.04 64bit, Contabo (Germany)
#
# Datacenter: Contabo, Germany
# Type: Virtual Machine, KVM
# OS: Ubuntu Server 18.04 LTS 64bit
# CPU: 4 vCPUs
# RAM: 7976 MB
# Disk: 200 GB
#
# IPv4: 167.86.127.225
# IPv6: 
# Domain:
#   Full: aguia-pescadora-foxtrot.etica.ai (TTL: 15 min)
#   Short: apf.etica.ai (TTL: 15 min)
#
# -----------------------------------------------------------------------------#
# LICENSE: Public Domain
#   Except where otherwise noted, content on this server configuration and to
#   the extent possible under law, Emerson Rocha has waived all copyright and
#   related or neighboring rights to this work to Public Domain
#
# MAINTAINER: Emerson Rocha <rocha(at)ieee.org>
#   Keep in mind that several people help with suggestions, testing, bugfixes
#   and inspiration without get names noted in places that most software
#   developers look. I'm saying this in special for people who help over
#   Facebook discussions. Even the ones without a personal computer yet and/or
#   with limited access to internet.
#
# SECURITY:
#   Reporting a Vulnerability:
#   Send e-mail to Emerson Rocha: rocha(at)ieee.org.
################################################################################

Principais issues relacionados

Principais repositórios relacionados

MVP de servidor DNS da Águia Pescadora

Questão sobre um produto mínimo viável (MVP) de alguma implementação muito flexível de DNS próprio.

Esse tipo de serviço (ao menos quando não usado algum pronto) tende a ser extremamente sensível e importante. Porém tem casos em que pode valer a pena ter isso em vez de usar um comercial como o da CloudFlare.

Estratégias para sincronizar arquivos especiais nas VPS que hospedam os nós do cluster (e.g. NAS) via software

Veja também

Afeta (neste momento):


Independente de como dentro da rede de docker/tsuru seja gerenciado dados em cluster, se for para deixar a Águia Pescadora com idealmente manutenção relativamente mínima, tem casos muito específicos em que arquivos precisam ser compartilhados entre as VPSs.

Um exemplo mais imediato é (pelo menos sem ajustes finos) como é feito em tempo real desafio para descobrir se quem pediu um certificado para o Let's Encrypt realmente deveria receber ele.

Vamos dizer que por padrão é aconselhado para os usuários apontarem domínios customizados para um CNAME que este usa Delta, Echo e a Foxtrot. A máquina que receber a primeira visita via o #16 vai solicitar ao Let's encrypt que lhe dê a chave. Porém o Let's encrypt vai tentar descobrir se ela merece isso, só que poderá escolher qualquer um dos 3 servidores ativos para perguntar. E isso implica em ter 33% de acertar. E rodar logo em seguinda não quer dizer que vai conseguir, porque o Let's Encrypt pode ter cacheado a errada.

Uma das formas de fazer isso (sem desligar 2 balanceadores de carga apenas pra obter uma TLS nova) seria garantir que o desafio escrito no disco em um servidor possa ser acessado ao mesmo tempo (uns 200ms, talvez?) nos demais. Isso seria suficiente para pelo menos um dos servidores receber a chave privada dele.

Esse arquivo de desafio acaba sendo um dos mais criticos. A chave privada da SSL (que é lida o tempo todo pelo provedor de HTTPS) até pode ser sincronizada com os demais depois de segundos (ou mesmo deixar uma rotina de 5 minutos) fazendo isso.

Uma das soluções: o GlusterFS

Eu já tenho experiência com GlusterFS, mas esse é um dos casos em que se houver alternativa melhor, eu usaria. Eu não tenho como culpar o software por algo que é um problema do desafio em si, mas eu abri esse issue aqui porque talvez isso seja um dos pontos mais problemáticos.

Ok que nesse caso aqui, os servidores da Águia Pescadora são muito mais poderosos do que os que tenho em cliente em produção em alta disponibilidade na amazon são paulo, mas de toda uma pilha de software em cliente o glusterfs é uma das que menos já consegui otimizar.

Pensem que o fato de ter sincronia em tempo real (aka se escrever em um servidor, o outro ao ler tem como saber que leu um arquivo que todo mundo está lendo) implica em deligar várias super otimizações de cache de kernel de linux. E isso pode afetar performance de forma absurda. É triste.

Teste com Kubernetes, 1 nó

Teste com Kubernetes, 1 nó, em qualquer dos servidores do Águia Pescadora.

É um requisito antes do #22 e possivelmente de um Kubernetes de 3 nós em HA a ser feito futuramente.

Tsuru usar subdomínio customizado por padrão (ex.: appname.etica.dev em vez do appname.IP.nip.io)

O domínio http://etica.dev já está comprado (e, diferente do http://etica.ai, cedo ou tarde vai ter algum app especial que permite automatizar configurações mais especiais do DNS dele).

Por padrão toda vez que um usuário cria um app, ele recebe uma URL pública como http://appname.IP.nip.io. A ideia aqui seria esse padrão passar a ser algo como http://appname.etica.dev ou http://appname.meuapp.etica.dev.

Esse issua (em especial se for mais complexo) não precisa já resolver a questão do balanceamento de carga ou do HTTPS

Implementação de serviço de arquivos de disco no Tsuru sem uso de Kubernetes


Na Águia Pescadora vão precisar documentar às pessoas desenvolvedoras como é nossa recomendação para gerenciarem arquivos no disco.

Eu sei que idealmente uma das abordagens mais ideais (e que não envolvem exigir que usuários sempre usem um CDN como S3, mesmos que nós via implementação do Minio.io eventualmente tenhamos isso) poderia ser implementar até mesmo um sistema de arquivos distribuídos como até comentei em #17. Porém mesmo que eu em especial consiga implementar na Águia Pescadora isso poderia ser mais complicado para pessoas conseguirem reproduzir se reusarem nossa lógica.

Então creio que vamos procurar manter as coisas simples em especial quando implicar o dia a dia de usuário.

Teste com k3s (um "Kubernetes Leve" que roda em 512MB de RAM)

Teste mínimo com https://k3s.io, 1 nó, em qualquer dos servidores do Águia Pescadora. Ou pelo menos com mesmo sistema operacional.

É citado em #22, porém não é requisito neste momento. Não pretendo usar ele em produção visto que mesmo que funcione ele é mais novo que Kubernetes "k8s" e Delta Echo e Foxtrot tem pelo menos 8GB de RAM cada uma.

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.