Atualizações
O Orbit se atualiza em Configurações → Atualizações do Orbit. Rodar o install.sh de novo também funciona: ele instala a versão mais recente, ou a de ORBIT_VERSION, e confere o arquivo com o SHA256SUMS, mas, diferente do console, não confere a assinatura.
Antes de começar
Uma atualização só começa depois de uma verificação sem nada bloqueando:
| Verificação | Bloqueia quando |
|---|---|
| Assinatura da versão | A versão não está assinada com a chave de versões do Orbit |
| Caminho de upgrade | A versão não é mais nova que a que está rodando |
| Disco livre | Menos de 2 GB livres para o download, o backup e os binários antigos |
| Backup dos metadados | Nunca bloqueia; avisa quando o último tem mais de um dia |
| Operações rodando | Deploys, backups ou outras operações ainda estão rodando |
| Agente | O agente do servidor está offline |
O console confere de novo logo antes de começar, e só uma atualização roda por vez.
O que uma atualização faz
- Faz backup dos dados do Orbit em
/var/lib/orbit/backups/metadata/, o mesmo arquivo que oorbit backupescreve. - Baixa a versão e a verifica: o
SHA256SUMSprecisa ter uma assinatura Ed25519 válida da chave de versões fixada no Orbit em execução, e o arquivo precisa bater com o hash dele. Uma versão sem assinatura, adulterada ou incompleta para aqui, e nada no servidor mudou. - Reinicia o Orbit na versão nova, guardando os binários anteriores como
orbit.previouseorbit-agent.previous. O console desconecta por alguns segundos e reconecta sozinho. As aplicações e os bancos continuam rodando. - Aplica as migrações em ordem, registrando cada uma ao terminar.
- Verifica a atualização: o esquema, a API, o fluxo de eventos e o agente do servidor.
A atualização pode ser cancelada enquanto faz backup, baixa e verifica a versão, não depois.
Se a versão nova nunca subir, uma proteção preparada antes do reinício traz de volta os binários anteriores e o backup de antes da atualização depois de 3 minutos, sobe a versão anterior, e o console diz por que a atualização falhou.
Se uma atualização for interrompida
Se o console não estiver disponível, no servidor:
sudo orbit status # versão, instalação, operações em andamento
sudo systemctl restart orbit # retomar: a atualização continua da última etapa
sudo orbit update rollback # voltar os binários anteriores e o backup de antes da atualização
sudo journalctl -u orbit --since "1 hour ago"Retome quando a causa foi temporária (o servidor reiniciou, o disco encheu e foi liberado). A atualização continua de onde parou, e migrações já aplicadas não são aplicadas de novo.
Volte atrás quando o problema é a própria versão. Voltar atrás restaura o backup feito por esta atualização, então o que mudou no Orbit depois que ela começou se perde. As aplicações e os bancos delas não são tocados.
Reinstalar uma versão à mão:
shcurl -fsSL https://github.com/getcortexlabs/orbit-releases/releases/latest/download/install.sh | sudo ORBIT_VERSION=<versão> sh
O que uma atualização não cobre
Com um servidor principal só, o console do Orbit fica indisponível enquanto ele reinicia, e uma atualização não protege contra a perda desse servidor. Mantenha uma cópia do orbit backup fora do servidor.