Harbor: O Registry de Containers Seguro e Eficiente para Kubernetes
Harbor é um container registry open source, graduado na CNCF, que faz exatamente o que se propõe de forma muito bem feita.
Além de hospedar imagens que é sua função principal, temos:
-
Digitalização de vulnerabilidades de imagens: As imagens podem ser escaneadas dentro do próprio Harbor mostrando o relatório com as vulnerabilidades e gerando alertas. O Trivy é o padrão, mas pode ser utilizado o Clair, Sysdig, Cyberwatch, Dosec e outros.
-
Replicação de imagens: Podemos fazer push e pull de imagens para outro registry com base em regras. Pode ser útil em casos em que você deseja ter diferentes image registries e mantê-los sincronizados. Também é útil para migrar de um Docker registry antigo para um novo. Compatível com Docker Hub, Distribution, GCR, ECR, ACR, AliCR, Artifactory, Quay, GitLab Registry, etc.
-
Assinatura de imagens: Utiliza o Cosign e o Notation internamente para assinar uma imagem automaticamente.
-
Cotas de projeto: É possível definir uma cota em qualquer projeto para poder gerenciar o uso do disco.
-
Gerenciamento de usuário: A autenticação dos usuários pode ser feita de diferentes formas e protege os artefatos com políticas e controle de acesso baseado em função.
Muitas empresas preferem manter suas imagens on-premisse com um controle granular de acesso mesmo utilizando a cloud, evitando inclusive que desenvolvedores tenham acesso direto à cloud e utilizam o Harbor para tal propósito.
Para ambientes on-premise, o Harbor hoje é a melhor escolha como Image Registry.
Alternativas ao Harbor
Geralmente as clouds oferecem registries e são até muito baratos, mas não trazem as mesmas funcionalidades que o Harbor (replicação, scan), fazendo o necessário e toda a parte de autenticação e cotas configuráveis através da própria cloud com um controle mais centralizado.
- Amazon Elastic Container Registry (ECR)
- Azure Container Registry (ACR)
- Google Container Registry (GCR)
- Alibaba Container Registry
- Oracle Cloud Infrastructure Registry
O Docker Hub é o registry mais popular, mas acaba sendo um custo a mais para a empresa e não é muito barato.
Compatibilidade
Harbor vs Nexus
Uma comparação entre alguns recursos que estão disponíveis no Harbor, mas não no Nexus:
-
Generalidade: O Nexus é um gerenciador de repositório universal que pode lidar com diferentes tipos de tecnologias, como Maven, NPM, Ruby Gems, Python Eggs, etc. O Harbor é um registro Docker puro que gerencia apenas imagens Docker.
-
Digitalização de imagens: o Harbor tem alguns recursos que o Nexus não tem, como digitalização de vulnerabilidades de imagens, replicação de imagens, assinatura de imagens e cotas de projeto.
-
Replicação: O Nexus não faz a replicação de imagens em diferentes repositórios. Poderíamos ter 2 instâncias do Harbor, uma para dev e outra para staging/production e fazer o sincronismo entre elas. Podemos utilizar esse recurso no Harbor para fazer a migração do Nexus para o Harbor sem precisar criar scripts.
-
Coleta de lixo: No Harbor, diferentemente do Nexus, você pode definir uma regra para coletar automaticamente as camadas de imagens órfãs que não são usadas por nenhuma outra imagem e eliminá-las do repositório.
-
Cota do projeto: Você pode definir uma cota em qualquer projeto para poder gerenciar o uso do disco no Harbor; no Nexus não.