Header Ads

Como começar a usar o DevSpace e desenvolver aplicativos Kubernetes rapidamente

DevSpace é uma ferramenta de código aberto que ajuda os desenvolvedores a implantar rapidamente aplicativos nativos da nuvem em clusters Kubernetes. Ele abstrai grande parte da complexidade tradicional do Kubernetes para que você possa voltar a escrever o código.

O DevSpace é independente de plataforma e funciona com clusters que variam de sua máquina local a serviços públicos gerenciados populares. A ferramenta é uma CLI que automatiza operações usando APIs do Kubernetes. Você não precisa instalar nada dentro do seu cluster para usar o DevSpace.

Práticas de desenvolvimento modernas para Kubernetes

O DevSpace traz muitos aspectos da experiência moderna de programação de aplicativos para implantações baseadas em Kubernetes. Ele permite que você execute seu ambiente de desenvolvimento em seu cluster com suporte para recarregamento automático. Quando um arquivo local é alterado, o DevSpace atualiza automaticamente seus contêineres com o novo conteúdo.

Encaminhamento de porta integrado significa que você pode usar localhost para acessar sua implantação. Você não precisa abrir portas ou configurar entradas HTTP em clusters de desenvolvimento, oferecendo uma experiência de desenvolvedor aprimorada e maior segurança.

DevSpace

O DevSpace também ajuda na depuração. Ele suporta a configuração de pontos de interrupção usando uma ferramenta de depuração remota, oferecendo inspeção ao vivo de aplicativos em contêineres na nuvem. Também é fácil visualizar os registros de um contêiner ou iniciar uma sessão de terminal sem executar comandos Kubectl pesados.

Publicidade

Uma interface da web em execução no localhost permite monitorar e interagir com o aplicativo em execução. Você pode escapar completamente do terminal se preferir uma experiência mais visual.

Instalando DevSpace

O DevSpace é distribuído como um binário independente que funciona em sistemas Windows, Mac e Linux. Várias opções de instalação estão disponíveis. Este é o comando recomendado para baixar DevSpace para Linux e adicionar a CLI ao seu caminho:

 dev sudo install devspace / usr / local / bin 

Como alternativa, você pode usar o npm, o gerenciador de pacotes Node, para instalar e atualizar o DevSpace:

 npm install -g devspace 

Este comando fornecerá um devspace funcional em seu caminho, desde que você já tenha o npm instalado.

DevSpace usa seu “ KUBE_CONTEXT ” ativo da mesma forma que outras ferramentas do ecossistema, como Kubectl e Helm. Defina KUBECONFIG para um arquivo de configuração compatível com Kubectl definindo sua conexão de cluster:

 exportar KUBECONFIG = / path / to / kubeconfig. yaml # Usa $ KUBECONFIG devspace deploy 

Criando um projeto

A primeira etapa na construção com DevSpace é inicializar o diretório do seu projeto. Isso criará um arquivo devspace. yaml que contém a configuração do DevSpace para o seu repositório.

 devspace init 

Publicidade

Você será solicitado a selecionar a rotina de implantação que planeja usar. O DevSpace pode funcionar com Kubectl, Helm ou Kustomize ao iniciar seu aplicativo no cluster.

A opção QUICKSTART sugerida é um gráfico especial que permite definir os componentes do seu aplicativo, como servidor da web front-end, servidor API de back-end e banco de dados, em vez de fornecer gráficos Helm ou manifestos Kubectl criados manualmente. Use-o se estiver criando um sistema com uma estrutura convencional e não quiser perder tempo criando seus próprios recursos do Kubernetes.

Siga as instruções para fornecer ao DevSpace o caminho para o seu Dockerfile. Você precisará fornecer autenticação de registro e algumas informações básicas sobre sua imagem, como a porta de escuta. O DevSpace produzirá automaticamente uma configuração pronta para usar que permite executar a implantação do devspace para colocar seu aplicativo no Kubernetes.

Se você não usar a opção de início rápido, precisará fornecer o caminho para seus gráficos do Helm ou manifestos do Kubernetes. Siga as instruções para construir uma configuração inicial. Depois de sair do assistente de configuração, você pode continuar adicionando imagens extras e implantações editando manualmente o arquivo devspace. yaml.

Adicionando uma imagem

Projetos DevSpace são construídos a partir de uma ou mais imagens de contêiner. Para registrar uma imagem em seu projeto, adicione-a na chave de imagens em seu devspace. yamlfile:

images: app: image: example. com/example/image:latest dockerfile: ./Dockerfile build: disabled: true

O campo de imagem define o nome da marca da imagem. O campo dockerfile é opcional; quando definido, ele deve fazer referência ao caminho para o Dockerfile da imagem em seu projeto. Imagens com Dockerfiles serão construídas automaticamente pelos comandos devspace build e devspace deploy, a menos que build. disabled seja verdadeiro na configuração da imagem.

Publicidade

As imagens são construídas em paralelo para acelerar o desempenho. O sinalizador --build-sequential força as imagens a serem construídas individualmente na ordem em que são especificadas. O DevSpace enviará automaticamente cada imagem para seu respectivo registro após a conclusão de uma compilação.

As imagens não são reconstruídas automaticamente, a menos que o DevSpace detecte uma alteração em seu Dockerfile ou nos arquivos em seu contexto de construção. Você pode forçar uma reconstrução de todas as imagens configuradas com a sinalização --force-build.

Adicionando uma implantação

A segunda parte de um devspace. yaml são suas implantações. Eles definem os recursos que serão criados dentro de seu cluster.

implantações: - nome: " gráfico do leme " helm: chart: name: example / example-app values: VARIABLE_OVERRIDE: " new-value " - nome: " manifestos de kubectl " kubectl: manifestos: - . kube / manifestos

Este arquivo define duas implantações separadas, uma usando Helm e a outra Kubectl. Quando você executa o devspace deploy, tanto o gráfico Helm quanto seus manifestos Kubectl são instalados em seu cluster.

Repetir o comando de implantação atualizará suas implantações. O DevSpace apenas reimplanta os componentes que mudaram, a menos que o sinalizador --force-deploy seja usado.

Como o DevSpace funciona em clusters, promover sua implantação do desenvolvimento à produção é um caso de alterar a variável de ambiente KUBECONFIG e executar novamente a implantação do devspace. Isso fornece um único mecanismo consistente para gerenciar várias implantações independentes de seu sistema.

Usando perfis

O DevSpace oferece suporte a perfis que permitem modificar as seções devspace. yaml para cada um de seus ambientes. Cada perfil nomeado pode substituir, mesclar e modificar campos em seu arquivo de configuração.

Os próprios perfis também são definidos em seu devspace. yaml:

imagens: api-server: image: example. com/api-server:latest web-server: image: example. com/web-server:latest debug: image: example. com/debug-tool:latest #. .. perfis omitidos: - name: patches de produção: - op: remove path: images. debug

Publicidade

Os perfis são ativados passando o sinalizador -p ou --profile para os comandos DevSpace. Veja como iniciar uma implantação usando o perfil de produção definido acima. A implantação não inclui a imagem de depuração, pois ela é removida por um dos patches do perfil.

 implantação do devspace - produção de perfil 

Usando Hot Reload

A funcionalidade hot reload é ativada pela configuração da sincronização de arquivos:

dev: sync: - imageSelector: example. com/api-server:latest localSubPath: ./api/ containerPath: / var / www / html excludePaths: - vendor /

Adicione a chave dev como um campo de nível superior em seu devspace. yaml e, em seguida, use a sincronização para configurar o hot reload por imagem. O imageSelector faz a correspondência das marcas de imagem às quais aplicar a regra de atualização automática. Os arquivos de localSubPath em seu diretório de trabalho serão sincronizados para containerPath em instâncias de contêiner implantadas.

Inicie uma sessão hot reload executando devspace dev ou devspace sync. O comando anterior inicia todos os recursos do ambiente de desenvolvedor do DevSpace, incluindo encaminhamento de porta e streaming de registro ao vivo.

O padrão de recarregamento a quente é a substituição de arquivos em contêineres existentes. É semelhante a usar volumes do Docker e montagens de ligação ao trabalhar com instâncias de contêiner locais. Em alguns cenários, você pode desejar iniciar uma nova implantação do DevSpace quando seu sistema de arquivos mudar. Isso é obtido por meio da opção autoReload separada:

images: api: image: example. com/api-server:latest deployments: - name: api-deployment # ... omitido dev: autoReload: path: - ./ kernel / * images: - example. com/api-server:latest deployments: - api-deployment

Publicidade

Este exemplo irá reimplantar o api-deployment sempre que os arquivos no diretório local do kernel forem alterados. Isso é ideal quando você modifica arquivos que precisam ser executados por meio de um processo de compilação para torná-los úteis para seus contêineres.

Encaminhamento de porta

O encaminhamento de portas é configurado por meio do campo dev. ports em seu devspace. yaml. O encaminhamento reverso também é compatível, permitindo que os endereços de host local em seus contêineres sejam mapeados para portas em sua máquina local.

dev: ports: - imageSelector: example. com/api-server:latest forward: - port: 8080 remotePort: 80 reverseForward: - port: 9000 remote: 9000

Este exemplo configura um encaminhamento de localhost: 8080 em sua máquina para a porta 80 em contêineres que executam a imagem example. com/api-server. Há também um encaminhamento reverso que direciona o tráfego no contêiner para o localhost: 9000 de volta para a porta 9000 em sua máquina.

Outros recursos

Além dos recursos cobertos aqui, DevSpace também oferece suporte para vários outros grupos de recursos que permitem monitorar implantações, interagir com contêineres e configurar fluxos de trabalho de desenvolvimento avançados:

  • As inicializações automáticas de terminal permitem que você inicie uma sessão shell remota sempre que executar o devspace dev.
  • A abertura automática de URL inicia sites e aplicativos da web em seu navegador ao entrar no modo de desenvolvimento.
  • O registro configurável define quais contêineres devem aparecer no fluxo de registro do modo dev.
  • Comandos personalizados atuam como atalhos para ações comuns, ajudando novos membros da equipe a interagir com suas implantações sem a necessidade de aprender processos demorados no Kubectl.
  • Os ganchos executam comandos durante o processo de implantação, permitindo que você configure contêineres manualmente ou registre novas implantações em um serviço de monitoramento centralizado.
  • O usuário interface é executada automaticamente no modo de desenvolvimento com devspace dev e pode ser aberta em seu navegador usando devspace ui.

O DevSpace também oferece plug-ins que podem adicionar ainda mais funcionalidades ao sistema. A API do plugin oferece suporte à instalação de URLs remotos ou scripts locais e facilita novos comandos, ganchos e variáveis. O desenvolvimento de seu próprio plug-in fornece uma maneira de padronizar o uso do DevSpace em vários projetos independentes.

Implantações em pipelines de CI / CD

O DevSpace pode lidar com implantações de produção como parte do pipeline de CI / CD. Ele fornece uma imagem oficial do Docker e suporta o uso não interativo se você incluir seletores explícitos como -l para rótulo em seus comandos.

Publicidade

Uma implantação dentro de um pipeline de CI pode ser assim:

 echo $ KUBECONFIG_CI_VARIABLE > / path / to / kubeconfig export KUBECONFIG = / path / to / kubeconfig devspace deploy --profile production --timeout 60 --wait --skip-build 

Isso implantará seu aplicativo usando o perfil de produção do DevSpace. O sinalizador --skip-build instrui o DevSpace a não construir suas imagens. Normalmente, as compilações devem ser tratadas como um estágio separado no início do pipeline.

A sinalização --wait força o DevSpace a aguardar a disponibilidade da contagem de pods especificada em seu devspace. yaml, em vez de encerrar imediatamente após a execução do comando. Isso é mais apropriado para um ambiente de CI em que você deseja confirmação de que sua carga de trabalho está ativa. Permitir que o DevSpace saia sem esperar pode significar que seu pipeline será marcado como bem-sucedido, mesmo se houver um problema de implantação.

Conclusão

O DevSpace está ganhando força como uma ferramenta de implantação do Kubernetes voltada para o desenvolvedor que fornece abstrações úteis para as principais operações. Ele reduz a quantidade de YAML necessária para lançar contêineres em um cluster, substituindo-o por chaves de configuração simples e comandos de terminal que definem, criam e iniciam imagens.

DevSpace

Como uma ferramenta independente de plataforma e ambiente, o DevSpace permite que os desenvolvedores se preocupem menos com as características exclusivas de clusters individuais. Independentemente do destino de implantação, a experiência geral é semelhante à construção de um sistema tradicional em sua máquina local. Isso ajuda a suavizar a curva de aprendizado do Kubernetes, mapeando os conceitos de volta para práticas de desenvolvimento mais universalmente compreendidas.

Nenhum comentário