Harbor - um registro para contêineres Docker prontos para uso

Em 31 de julho, o CNCF anunciou a aceitação de um novo projeto Open Source, descrito como um “registro de nuvem (nuvem nativa)”, em sua caixa de areia (ou seja, no estágio inicial de suporte), Harbour . Em seu site, eles nos explicam que o produto foi criado para gerenciar imagens de contêineres do Docker em um ambiente seguro.



Parece que já existe um Docker Registry (ou, digamos, Quay do CoreOS), mas é óbvio que novas soluções não aparecem e não amadurecem para aplicativos de produção exatamente assim - especialmente soluções de código aberto ... e, mais ainda, caindo em CNCF. Este artigo de revisão destina-se a esclarecer as razões da aparência do Harbour, seus principais recursos e características.

Primeiro foco da Harbour: rede e empresa


A história do projeto começa em 2016, em março do qual ocorreu o primeiro lançamento público - 0.1.0. Por trás de sua criação, estavam os engenheiros da VMware que descreveram o projeto como um "servidor de registro de classe empresarial", que, com base no desenvolvimento do Docker, "expande os recursos do Docker Registry, adicionando mais recursos, normalmente exigidos pela empresa".

Naquela época, a ênfase estava mais na possibilidade de usar esse registro na empresa, em particular, potencialmente melhorar a produtividade armazenando imagens na rede corporativa: “[Harbor] é muito útil para usuários de contêineres que não possuem uma boa conexão com a Internet. Por exemplo, o Harbor aumenta a produtividade dos desenvolvedores chineses, eliminando a dificuldade de baixar imagens da Internet pública ” (do README ao Harbor 0.1.0 ) .

Nota : A orientação da Harbor para a China, confirmada pela presença de localização adequada desde os primeiros lançamentos, não foi acidental: a criação do projeto foi iniciada pela divisão chinesa da empresa (VMware China R&D).

O que se tornou uma ocorrência diária para o ecossistema nativo da nuvem, o Harbor foi escrito no idioma Go desde o início e licenciado sob os termos da Apache License 2.0. Se falarmos sobre os recursos funcionais do projeto, no primeiro lançamento os autores estabeleceram alguns recursos relevantes para este dia, como:

  • controle de acesso baseado em função ( RBAC , que permite organizar usuários e repositórios na forma de "projetos" e conceder direitos diferentes às imagens dentro desses projetos), além de suporte a LDAP e AD para autenticação do usuário;
  • Interface de usuário baseada na Web para visualizar repositórios, pesquisando-os, gerenciando projetos;
  • auditoria de todas as operações;
  • API REST para gerenciamento.


Gerenciamento de projetos no Harbor Web UI

Harbor Evolution: Segurança


Em 2017, a VMware encontrou um aplicativo lógico para seu novo projeto - integração com outras soluções da empresa para contêineres. Em particular, o vSphere Integrated Containers (VIC), que, não sendo um PaaS (Plataforma como Serviço) ou CaaS (Containers como Serviço), estava desenvolvendo ativamente, oferecia algum tipo de base para trabalhar com contêineres. Hoje, por exemplo, o vSphere Integrated Containers Engine , que é o tempo de execução do contêiner do vSphere, cresceu a partir deles. E aqui está como o engenheiro de soluções VMware (Nate Reid) descreveu a VIC naquele momento:

“A VIC pega a estrutura de um único host Docker e a dimensiona para vários hosts ESXi. Sua arquitetura proposta para orquestração é semelhante a Swarm, Kubernetes (K8s) e Mesos. No entanto, existem algumas nuances e não há tarefa de substituir todos esses produtos. A VIC fornece uma rede para contêineres, permite que você obtenha seus nomes, oferece RBAC, um painel de controle HTML5 (Admiral; leia mais sobre isso em nossa revisão da GUI do Docker - aprox. Transl. ), Um registro de nível corporativo (Harbor), muitos comandos semelhantes do Docker, Integração com ferramentas vSphere. [..]

Se você precisar do suporte à orquestração Kubernetes e / ou dos recursos de CI / CD baseados em VMware IaaS da VMware, verifique o VMware PKS e / ou o Pivotal Cloud Foundry. Essas já são soluções CaaS e PaaS. ”

Ao mesmo tempo, a questão da segurança das imagens do Docker está se tornando cada vez mais relevante. No início de 2018, os engenheiros da empresa irmã da Pivotal para a VMware citam um estudo segundo o qual mesmo as versões mais recentes de imagens postadas no Docker Hub (da comunidade e do oficial) contêm inúmeras vulnerabilidades (uma média de 70 por imagem).

Foi então que a Harbor apareceu com sua nova missão orientada para a segurança, e já no “solo” acima mencionado do CaaS - no Pivotal Container Service (PKS) :

“Esse [vulnerabilidades e outros problemas de segurança nas imagens do Docker] é a razão pela qual incluímos tantos complementos úteis que tornam o PKS confiável e seguro!” [..]

Como o Kubernetes sozinho não lida com esses problemas [gerenciamento seguro de imagem], trabalhamos com os amigos da VMware para incluir o Harbor no PKS. ”

O que é tão seguro adicionado ao Harbor (além do RBAC e da auditoria já implementada no projeto)? Duas direções principais são indicadas:

  1. Verificação de vulnerabilidade Para fazer isso, o Harbor implementa o CVE a partir de bancos de dados conhecidos (NIST NVD, Ubuntu CVE Tracker, Red Hat Security Data, etc.) e verifica automaticamente cada imagem de contêiner em busca de sua presença ao executar operações de push e pull. Se uma vulnerabilidade for encontrada, as operações serão canceladas dependendo das configurações de segurança e a própria imagem será marcada, o que ficará visível para o administrador do registro. Para aproveitar essa oportunidade, Harbour se integra ao Clair do CoreOS.
  2. A assinatura das imagens . Ele também usa as conquistas de outro projeto - Notário (mencionamos neste artigo ) , que faz uma assinatura ao enviar imagens e depois valida essas assinaturas a cada solicitação.

A aplicação geral do Harbor no PKS é a seguinte:



Porto hoje


Portanto, oferecendo um registro de imagens de contêiner para uso local e fornecendo segurança em vários aspectos do trabalho com eles, hoje o Harbor evoluiu para a seguinte arquitetura, que aparentemente combina funções de outros projetos de código aberto:



Além do já mencionado Docker Registry, Clair e Notary, que implementam os principais recursos do Harbor, você também pode ver dois DBMSs nesse esquema:

  1. PostgreSQL ( anteriormente MySQL / MariaDB estava aqui), que é usado para armazenar metadados sobre projetos, usuários e seus papéis, imagens;
  2. Redis - para armazenar sessões .


Bancos de dados em Harbour Architecture

Você também pode encontrar alguns detalhes sobre o dispositivo interno geral do Harbor nesta página wiki , que está vinculada à documentação oficial do projeto (no entanto, há uma suspeita de que alguns detalhes da arquitetura possam estar desatualizados em alguns lugares) . Lá você também pode encontrar links para instruções de instalação do Harbor e sua implantação no Kubernetes . Este último, no entanto, é declarado obsoleto (com base em versões mais antigas, não suporta Clair e Notary) e, em vez disso, propõe-se usar o Helm-chart .

A versão atual do Harbor é a v1.5.2 , lançada no final de julho. Os requisitos para a máquina Linux na qual a versão mais recente do registro está instalada são o Docker versão 17.03.0-ce (ou superior) e o Docker Compose 1.10.0+, além de Python e OpenSSL.

O suporte para gráficos Helm parece uma inovação muito interessante para a versão futura do Harbor (a v1.6.0-rc1 já foi lançada): “O Harbor, a partir da versão 1.6.0, se tornará um registro nativo da nuvem composto que suportará o gerenciamento de imagens e o gerenciamento de gráficos” . Outros planos de desenvolvimento incluem o suporte do OAuth 2.0 para autenticação do usuário, a capacidade de implantar em vários sites para tolerância a falhas e balanceamento de carga, coletando estatísticas em repositórios e um utilitário para migrar para o Harbor.

Em vez de uma conclusão


Harbor é um exemplo de um projeto bem-sucedido do mundo moderno da nuvem, que conseguiu encontrar seu nicho e se estabelecer, integrando os recursos de outras ferramentas de código aberto. A evidência de seu sucesso não é apenas a inclusão do CNCF na lista de projetos, mas também mais de 5.000 estrelas no GitHub e uma comunidade bastante ativa de desenvolvedores.

PS


Leia também em nosso blog:

Source: https://habr.com/ru/post/pt419727/


All Articles