CBL-Mariner: Uma Distro Linux criada pela Microsoft

A Microsoft liberou o código fonte do CBL-Mariner, o sistema Linux que roda por trás da infraestrutura Azure. Venha conhecer mais detalhes!


| Se você apoia nosso site, desative o AdBlock quando visitá-lo, inclusive em Mobile!
Os anúncios são poucos e não invasivos. Se quiser contribuir com nosso trabalho, clique em qualquer banner de sua preferência, exceto dos Parceiros. 
Mais detalhes clicando aqui.


1. Introdução

Em 2018 o Linux ja dominava nada mais e nada menos que 50% dos servidores Azure da Microsoft.  Em Junho de 2019, o kernel Linux ja estava presente em esmagadora maioria no Azure, tendo ultrapassado o Windows Server em uso total dentro do Azure Sphere. O Linux venceu na casa do Windows!

Que o Linux era usado como base de infraestrutura do Azure, isso não deveria ser nenhuma surpresa; sua escalabilidade para provisionar máquinas virtuais, além de segurança e estabilidade, sempre chamaram atenção pra trabalhos de alta prioridade. Agora, a Microsoft liberou o código fonte do sistema Linux usado por trás do Azure e ele se chama CBL-Mariner (CBL de Common Base Linux).

2. Linux Systems Group

Com um número cada vez maior de kernels e o surgimento de distribuições do Microsoft Linux, agora existe um Linux Systems Group oficial que controla grande parte do trabalho do Linux da empresa. Isso inclui um kernel otimizado para o Azure disponível como patches para muitas distribuições Linux comuns, otimizando-os para uso com o hipervisor Hyper-V da Microsoft e um conjunto de ferramentas para ajudar a fornecer a aplicação da integridade do sistema baseada em políticas , tornando as distribuições mais seguras e ajudando a gerenciar atualizações e patches em grandes propriedades de servidores Linux e máquinas virtuais. – Inclusive vários desses kernels modificados estão no repositório da Canonical, dentro do Ubuntu! São aqueles que tem “azure” no nome.

A equipe lançou recentemente uma nova distribuição Linux: CBL-Mariner.

Ao contrário do que se possa pensar, o CBL-Mariner não é uma distro comum como o Ubuntu ou Fedora. Ela é uma distro especializada, para contêiner!

Embora o lançamento seja público, muito de seu uso não é, visto que ele faz parte da infraestrutura do Azure, usado para seus serviços de rede de borda e como parte de sua infraestrutura de nuvem. O resultado é uma distribuição de baixa sobrecarga e fortemente focada; que é menos sobre o que está nela e muito mais sobre o que é executado nela.

3. Sistema de Conteinerização

Investir em um Linux leve como o CBL-Mariner faz todo sentido, considerando os investimentos da Microsoft em tecnologias baseadas em contêiner. A economia em nuvem exige que os hosts usem o mínimo de recursos possível, permitindo que serviços como o Azure tenham uma alta utilização. Ao mesmo tempo, os contêineres do Kubernetes precisam do mínimo de sobrecarga possível, permitindo o máximo de nós por pod possível e permitindo que novos nós sejam iniciados o mais rápido possível.

Em suma, quanto mais otimizado melhor, enquanto aproveite os recursos disponíveis.

O mesmo é verdadeiro para o hardware de ponta, especialmente a próxima geração de nós de ponta destinados ao uso com redes 5G. Aqui, como na nuvem pública, as cargas de trabalho são o mais importante, transferindo-as e os dados para mais perto dos usuários. A Microsoft usa sua propriedade crescente de hardware de ponta como parte da Rede de Entrega de Conteúdo do Azure fora de seus principais data centers do Azure, armazenando conteúdo em cache de aplicativos Web do Azure e de servidores de vídeo e arquivos hospedados, com o objetivo de reduzir a latência sempre que possível. O Azure CDN é um componente-chave de seu serviço de sites estáticos do Azure baseado em Jamstack, hospedando páginas e JavaScript, depois de publicado no GitHub.

No passado, o CoreOS da Red Hat costumava ser o host preferido de contêineres Linux, mas sua recente depreciação significa que não é mais suportado. Qualquer pessoa que o use terá que encontrar uma alternativa.

A Microsoft oferece o Flatcar Linux CoreOS-fork para usuários do Azure como parte de uma parceria com os desenvolvedores, mas ter sua própria distribuição para seus próprios serviços garante que ela possa atualizar e gerenciar suas instâncias de host e contêiner em sua própria programação, tempo e esforço. O desenvolvimento em público está disponível para qualquer pessoa que queira fazer e usar suas próprias compilações ou que queira contribuir com novos recursos e otimizações, por exemplo, adicionando suporte para novos recursos de rede.

3. CBL-Mariner

Resumidamente, o CBL-Mariner tem apenas os pacotes básicos necessários para suportar e executar contêineres, tendo uma abordagem semelhante ao CoreOS.

No fundo, os contêineres do Linux são um espaço de usuário isolado. Manter os recursos compartilhados em um mínimo reduz a exposição de segurança do sistema operacional host, garantindo que os contêineres de aplicativos não tenham dependências dele. Se você estiver usando o CBL-Mariner em seus próprios contêineres, certifique-se de ter testado todas as imagens públicas do Docker antes da implantação, pois elas podem não conter os pacotes apropriados.

O CBL-Mariner usa ferramentas Linux familiares para adicionar pacotes e gerenciar atualizações de segurança, oferecendo atualizações como pacotes RPM ou como imagens completas que podem ser implantadas conforme necessário. O uso do RPM permite adicionar seus próprios pacotes a uma imagem CBL-Mariner de base para oferecer suporte a recursos e serviços adicionais conforme necessário.

Começar a usar o CBL-Mariner pode ser tão simples quanto iniciar um serviço Azure. Mas se você deseja experiência prática ou deseja contribuir com o projeto, todo o código-fonte está atualmente no GitHub, junto com as instruções para construir suas próprias instalações . Os pré-requisitos para uma compilação no Ubuntu 18.04 incluem a linguagem Go, os utilitários QEMU (Quick EMUlator), bem como o rpm .

Construa sua própria instalação CBL-Mariner usando o repositório GitHub

Você tem várias opções diferentes para construir a partir da fonte. Comece verificando o código-fonte do GitHub, fazendo um clone local do repositório do projeto. Vários branches estão disponíveis, mas para uma primeira construção você deve escolher o branch estável atual. A partir daqui, você pode construir as ferramentas Go para o projeto antes de baixar os fontes.

Para compilações rápidas, você tem duas opções, ambas usam pacotes pré-construídos e montam uma distribuição a partir deles. O primeiro, para instalações bare-metal, cria um arquivo ISO pronto para instalação. O segundo, para usar o CBL-Mariner como um host de contêiner, cria um arquivo VHDX pronto para uso com uma máquina virtual para uso com o Hyper-V. Uma opção alternativa cria uma imagem de contêiner que pode ser usada como fonte para seus dockerfiles baseados em Mariner, fornecendo tudo o que você precisa para construir e executar contêineres compatíveis com seus aplicativos.

Se você preferir compilar a partir do código-fonte, a opção está disponível, embora as compilações sejam consideravelmente mais lentas do que usar pacotes pré-compilados. No entanto, isso permitirá que você tenha como alvo CPUs alternativas, por exemplo, construir uma versão que funcione com a nova geração de hardware de borda baseado em ARM semelhante ao que está sendo usado para instâncias Graviton da AWS. Você pode inicializar toda a cadeia de ferramentas de compilação para garantir o controle de todo o processo de compilação. O processo de construção completo pode até ser usado para construir pacotes suportados, com os arquivos principais listados em um arquivo de configuração JSON.

Depois de construído, você pode começar a configurar os recursos do CBL-Mariner. Fora da caixa, eles incluem um firewall baseado em iptables, suporte para atualizações assinadas e um kernel reforçado. Recursos opcionais podem ser configurados ao mesmo tempo, com ferramentas para melhorar o isolamento do processo e criptografar o armazenamento local, recursos importantes para um host de contêiner em um ambiente multilocatário onde você precisa proteger os dados locais.

O resultado é um substituto eficaz para o CoreOS. O CBL-Mariner pode não ter a maturidade de outros Linux focados em contêineres, mas certamente tem suporte suficiente para torná-lo uma ferramenta confiável para uso em nuvem híbrida e arquiteturas de rede de ponta, onde você executa código em seus próprios servidores de borda e na nuvem da Microsoft. Se a Microsoft não tornar isso uma opção, pelo menos você pode construí-lo sozinho.

4. Visão Geral

O CBL-Mariner é muito semelhante a outras distros Linux como Fedora ou Photon-OS, o que é esperado já que na seção Agradecimentos de seu repositório GitHub eles listam os dois projetos porque a equipe usou seus arquivos SPEC como ponto de partida e referência.

O sistema de pacotes do CBL-Mariner é baseado no RPM. O sistema de atualização de pacote usa ambos dnf e tdnf.
O Tiny DNF é um gerenciador de pacotes baseado no dnfe, proveniente do PhotonOS da VMware®.

O CBL-Mariner também oferece suporte a um mecanismo de atualização baseado em imagem para manutenção e reversão atômica usando RPM-OSTree; o rpm-ostree é uma ferramenta de código aberto baseada em OSTree para gerenciar árvores de sistema de arquivos com versão inicializáveis ​​e imutáveis. A ideia por trás do rpm-ostree é usar uma arquitetura cliente-servidor para manter os hosts Linux atualizados e em sincronia com os pacotes mais recentes de maneira confiável.

5. Segurança

O CBL-Mariner segue o princípio de segurança por padrão: a maioria dos aspectos do sistema operacional foi construída com ênfase na segurança. Ele vem com um kernel reforçado, atualizações assinadas, ASLR, proteção baseada em compilador e logs resistentes a adulteração, entre outros.

6. Criando a ISO

Os comandos para gerar uma .ISO do CBL-Mariner são relativamente complexos e exigem saciar algumas dependências do sistema. Conforme a documentação oficial, instale estes pacotes:

$ sudo apt install build-essential

$ sudo apt install git make tar wget curl rpm qemu-utils golang-go genisoimage python2-minimal bison gawk

Agora clone o repositório:

$ git clone https://github.com/microsoft/CBL-Mariner.git

Por fim, rode os seguintes comandos:

$ cd CBL-Mariner/toolkit

$ sudo make iso REBUILD_TOOLS=y REBUILD_PACKAGES=n CONFIG_FILE=./imageconfigs/full.json

Ao final a .ISO estará no diretório ../out/images/full/ com um nome tipo full-1.0.20210712.2155.iso.

6.1 Bootando

Após a criação da .ISO ela poderá ser utilizada para dar boot em qualquer hardware ou máquina virtual para testes.

A instalação possui uma interface gráfica, porém a utilização do sistema se dará apenas por terminal.

Por padrão a distro não possui SSH, que pode ser instalado com:

$ sudo tdnf install -y openssh-server
$ sudo systemctl enable --now sshd.service

6.2 Fontes e Maiores Informações

O link para o repositório do GitHub com outras informações úteis se encontra aqui!

Já o link para o CBL-Mariner DEMO, se encontra aqui!

Lembrando que não há nada “pronto”, você deve configurar uma base Linux e instalar o CBL-mariner por cima; ou gerar sua própria ISO com os comandos oficiais fornecidos pela Microsoft, citados acima.

7. Análise Opinativa

Desde que a Microsoft adotou o Linux para seu uso, ele tem sido trazido á tona como uma Solução eficiente quando o assunto é Nuvem. O Azure possuindo muito mais máquinas Linux do que Windows é a prova de que o pinguim é o favorito entre qualquer SysAdmin.

Para quem um dia sonha com o Linux Desktop, isso porém em nada ajuda, ja que o pinguim segue sendo uma Ferramenta e não uma Solução final. A Microsoft está publicamente transformando o Linux em “mera ferramenta” aos olhos da maioria, e em Solução para SysAdmins – o que de novo, não é ruim – mas cada vez mais o afasta como Solução concorrente ao Windows doméstico.

Lembrando mais uma vez, que essas mudanças no Linux não afetaram a Canonical ou mesmo a equipe do Fedora, as distros continuam como estão e como são; a Microsoft apenas criou suas próprias ferramentas – afinal, o Linux é open source, qualquer um cria algo com ele! – e as disponibilizou igualmente de graça na internet.

Como diria o narrador de Hotwheels®: E ai, vai encarar?
Deixe nos comentários o que pensa sobre o CBL-Mariner!

#UrbanCompassPony

Fontes:
InfoWorld
jreypo

Deixe um comentário