Kuby-core: Suporta versões recentes do kubedb

Criado em 28 abr. 2021  ·  2Comentários  ·  Fonte: getkuby/kuby-core

Infelizmente, o pessoal da AppsCode (os criadores do kubedb) agora exige que cada usuário obtenha uma licença gratuita. Embora o kuby possa fazer algumas coisas complicadas para obter uma licença automaticamente, isso não parece particularmente moral (ou talvez até legal?) para o conteúdo do arquivo de licença. Obviamente isso não é o ideal, mas acho que é a única opção que temos se quisermos continuar usando kubedb com kuby (o que acho que fazemos - é incrível).

enhancement help wanted

Todos 2 comentários

Ok, algum contexto adicional aqui. Acontece que a parte difícil não é buscar uma licença programaticamente (o que é possível, só precisamos solicitar às pessoas um token de servidor de licença, endereço de e-mail etc.). A parte difícil é _atualizar_ o operador kubedb e bancos de dados individuais. Desinstalar a v0.12 é difícil por si só porque você obviamente não quer derrubar nenhuma instância de banco de dados existente, mas eu finalmente consegui que funcionasse. Felizmente, instalar a v0.18 (a versão mais recente no momento em que este artigo foi escrito) é bem fácil com o Helm... mas caramba, é super difícil atualizar uma instância existente do Postgres ou MySQL que já está em execução (com zero tempo de inatividade). Aqui estão os passos que eu (quase) trabalhei para o Postgres:

  1. Certifique-se de que o banco de dados existente esteja configurado para replicação lógica, o que requer uma alteração no nível WAL (log de gravação antecipada). Definir o nível WAL requer uma reinicialização pg, portanto, a maneira mais fácil de fazer isso é definir o número de réplicas para > 1 e, ao mesmo tempo, informar ao kubedb para usar configuração adicional, o que resultará em uma reinicialização. Você deseja várias réplicas de qualquer maneira, para que as reinicializações não resultem em tempo de inatividade.
  2. Desinstale a versão antiga do operador kubedb e instale a nova, tomando cuidado especial para não derrubar suas instâncias de banco de dados existentes. Isso pode ser um pouco complicado, pois o k8s é bastante relutante em excluir o Postgres CRD se ainda houver instâncias do Postgres em execução. Faz sentido. Felizmente, existem maneiras de enganar o k8 para fazer o que você quer.
  3. Crie uma nova instância postgres com WAL = lógico e crie o pub/sub necessário entre o antigo e o novo para que quaisquer registros no banco de dados antigo sejam copiados para o novo banco de dados. Tenha cuidado para dar ao usuário postgres uma senha no novo banco de dados se o usuário que você usa para acessar o banco de dados do Rails _não for_ postgres (Kuby usa root por padrão) . Isso é necessário por causa do que acredito ser um bug nos scripts de inicialização do kubedb. Esse novo banco de dados obviamente deve ter um nome diferente do antigo, o que é um problema. O nome do banco de dados determina os trilhos de nome DNS aos quais se conecta, o que não podemos alterar. Hum...
  4. Implante o aplicativo Rails e, de alguma forma, aponte-o para o novo serviço de banco de dados.
  5. Excluir o banco de dados antigo
  6. Lucro

Atualmente estou preso tentando descobrir como apontar facilmente o aplicativo Rails para o novo serviço de banco de dados. A URL do serviço é essencialmente codificada e não pode ser alterada dinamicamente. Além disso, o novo serviço de banco de dados não pode ter o mesmo nome que o existente, então teríamos que armazenar o "certo" em algum lugar (talvez uma anotação na implantação?) é quando reescrevemos o database.yml? ECA.

Outra solução poderia ser usar algum tipo de proxy que pudesse apontar dinamicamente o tráfego para um serviço ou outro, como um balanceador de carga, mas em cima dos serviços.

Embora o kuby possa fazer algumas coisas complicadas para obter uma licença automaticamente, isso não parece particularmente moral (ou talvez até legal?)

Tamal é um bom cara e acho que ele não vai se importar, contanto que você exponha os detalhes do que está acontecendo com os usuários para que eles não fiquem surpresos quando a licença temporária expirar no final do mês. (? o que acontece quando a licença expira, eu me pergunto agora? Se isso significa que os backups estão parados, isso pode ser ruim; se isso significa que outras coisas começam a falhar, também pode ser ruim... se isso significa que você simplesmente não pode criar novos bancos de dados para agora, até que a licença seja renovada, isso pode não ser tão ruim.)

Já existe uma opção para banco de dados externo, então os usuários têm a opção de continuar com o KubeDB ou tomar bancos de dados em suas próprias mãos de outra maneira, o que francamente não é um problema difícil hoje, a menos que você não esteja usando um provedor de nuvem que tenha suporte para o tipo de banco de dados que você precisa.

Obrigado pelo passo a passo sobre o que é necessário para atualizar! Eu tenho uma licença para meu KubeDB, que é generosamente concedida ao Team Hephy para nosso cluster de produção, e tenho bancos de dados mais antigos que precisam de atualizações, que nunca foram iniciados ou hospedados no KubeDB; Eu tenho a licença para aprender a usar os backups de banco de dados, eu tenho PostgresQL e MariaDBs, tl;dr Eu tenho meu trabalho cortado para mim nessa área também.

Estou aprendendo agora como operar um driver CSI de armazenamento adequado com meu cluster de laboratório doméstico e espero que isso faça uma grande diferença na maneira como lido com bancos de dados e melhore as propriedades de recuperação de desastres do meu cluster de "produção". 🎉

O Kuby também pode, a longo prazo, se tornar um ótimo vetor de vendas para o KubeDB. Eu não sei como você vai se sentir sobre isso!

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

kingdonb picture kingdonb  ·  6Comentários

hovancik picture hovancik  ·  5Comentários

traels picture traels  ·  13Comentários

ma11hew28 picture ma11hew28  ·  3Comentários

mpontillo picture mpontillo  ·  3Comentários