O que o Kamal 2 automatiza

Prévia grátis 3 min de leitura

Uma gem, e não uma plataforma de hospedagem

Abra o Gemfile deste app e uma linha, com um comentário acima dela, diz do que trata este curso:

# Deploy this application anywhere as a Docker container [https://kamal-deploy.org]
gem "kamal", require: false

O Gemfile.lock fixa a versão instalada, kamal (2.12.0). É o Kamal 2, a reescrita que trocou o proxy baseado em Traefik do Kamal 1 pelo próprio kamal-proxy e refez o funcionamento de acessórios e segredos. O require: false importa: o Kamal não é uma biblioteca que este app carrega em execução. É uma ferramenta de linha de comando que você roda da sua máquina, comandando servidores com que este app nunca fala diretamente.

O problema que o Kamal resolve

Colocar um app Rails num servidor à mão exige vários passos, no mínimo. Você monta uma imagem de container, enviá-la para algum lugar acessível, entrar na máquina por SSH, baixar a imagem, parar o processo antigo, subir o novo e torcer para nada quebrar no meio. Faça isso mais de uma vez e você vai escrever um script. O Kamal é esse script, escrito uma vez por gente que faz deploy de apps Rails profissionalmente, e guiado por um arquivo YAML.

O deploy.yml deste app, em resumo

# Kamal deployment — single VPS, app + Postgres accessory, kamal-proxy with Let's Encrypt.
# Fill .kamal/secrets (see .kamal/secrets.example) and export NOR_SERVER_IP before deploying.
service: newbieonrails
image: gxolivei/nor

Essas duas linhas de comentário, escritas na config pelo mantenedor deste app, resumem a configuração numa frase. É um servidor, este app Rails mais um container acessório de Postgres, e o kamal-proxy cuidando do HTTPS. service: newbieonrails dá nome a este deploy na contabilidade do Kamal, e todo container, rede e volume que o Kamal cria leva esse prefixo. image: gxolivei/nor é o nome da imagem Docker que o Kamal monta e envia; a aula 2 mostra para onde ela vai.

O que o Kamal não é

O Kamal não provisiona um servidor para você: o NOR_SERVER_IP desse comentário precisa apontar para uma máquina Linux rodando, com Docker instalado. Ele não cuida de DNS, não escolhe um provedor de nuvem e não substitui o Git nem um serviço de CI. Ele assume depois de tudo isso. Com um servidor funcionando e uma imagem de container, ele põe o app para rodar lá e o mantém rodando a cada deploy seguinte. Ele só remove a versão antiga depois que a nova prova que está saudável.

Como este curso se organiza

Cada aula pega uma parte do config/deploy.yml, citada do arquivo atual (com comentários longos cortados onde indicado), e explica o que ela faz no servidor.

O que este curso cobre

  1. servers, ssh e registry: onde o app roda e onde mora a imagem dele
  2. env: clear versus secret, e jobs em background rodando dentro do processo do servidor web
  3. proxy, SSL e o healthcheck que controla cada deploy
  4. Os volumes e o acessório db: o Postgres gerenciado pelo próprio app
  5. aliases e os comandos do Kamal que eles encurtam
  6. Juntando tudo: um kamal deploy, seguido do seu notebook até um servidor no ar
Aula 1 de 7 · grátis

Continue com a aula 2

servers, ssh e o registro

Como os blocos servers, ssh e registry leem variáveis de ambiente e resolvem nomes de segredos pelo .kamal/secrets.

Com uma conta grátis você também tem os quizzes, seu progresso e suas anotações, e a discussão.

Digite para buscar...