Gua de Instalao e Operao do Harbor com Docker Compose e Kubernetes

A documentao oficial est disponvel no link: https://goharbor.io/docs/2.7.0/.

Sumário das Etapas

  • Noções Gerais sobre o Harbor
  • Procedimentos de Instalao
  • Implantao em ambiente local usando Docker Compose
  • Desafios de Infraestrutura
  • Configurao para Servio Offline
  • Instalao e Verificao
  • Adicnamento de Suporte SSL/TLS
  • Habilitar Acesso via HTTPS
  • Validao de Certificado
  • Implantao em Cluster K8s via Helm

Viso Geral

O time desenvolvedor disponibiliza um ambiente de demonstrao ao pblico para teste funcional sem instalao local.

Link: https://demo.goharbor.io/harbor/projects

Apesar da funcionalidade demo, recomenda-se cadastro e login para explorao completa dos recursos.


Implantao via Docker Compose (Arquitetura Nica)

Caso prefira uma abordagem simples para ambientes de desenvolvimento ou testes unitrios, o uso do Docker Compose permite levantar os servios necessrios em uma nica mquina.

Pontualmente: Consulte a guia de configurao.

Requisitos de Infraestrutura

Antes de iniciar, assegure-se de que a mquina hospedeira atenda aos mnimos requisitos listados abaixo para evitar instabildiades futuras:

Componente Requisito Mnimo Recomendado
Processador (CPU) 2 Cores 4 Cores
Memria RAM 4 GB 8 GB
Espaço em Disco 40 GB 160 GB

Pré-requisitos de Software

Aplicativo Verso Exigida Notas Tcnicas
Docker Engine 17.06.0-ce+ Veja instruções de instalação em docs.docker.com
Docker Compose v1.18.0+ ou v2 Plugin recomendado docker-compose-plugin
Openssl Late Necessário para gerar certificaddos digitais internos

Configurao de Rede

Os seguintes portas devem estar livres no host para que os contêiners se comuniquem corretamente:

Porta Protocolo Descrio
443 HTTPS Acesso criptografado API e UI. Alterável em config.
4443 HTTPS Notary Service (Confiança de Conteúdo). Opcional.
80 HTTP Acesso no plano não criptografado. Redirecionamento ocorre.

Baixar Pacote de Instalao

Para evitar dependncias externas complexas, utiliza-se a imagem offline que j inclui todas as imagens necessárias.

Disponível em Releases no GitHub: GitHub Releases.

Exemplo de download e extração:

user@host:~$ wget https://github.com/goharbor/harbor/releases/download/v2.6.3/harbor-offline-installer-v2.6.3.tgz
user@host:~$ tar xzvf harbor-offline-installer-v2.6.3.tgz

Configurao de Arquivos (Modo HTTP)

Para fins de teste inicial, configure o arquivo principal ignorando configurações de TLS.

cd harbor
cp harbor.yml.tmpl harbor.yml
vim harbor.yml

Edite o seguinte bloco conforme sua infraestrutura:

hostname: registry.exemplo.com

http:
  port: 80

# Remova # para habilitar HTTPS futuramente
# https:
#   port: 443
#   certificate: /data/cert/server.crt
#   private_key: /data/cert/server.key

# Credencial Administrativa Inicial
harbor_admin_password: AdminPassword2024!

# Configuracao do Banco de Dados PostgreSQL
database:
  password: root123
  max_idle_conns: 100
  max_open_conns: 900

# Montagem do Volume Persistente
data_volume: /data

Aviso: Não utilize 'localhost' ou '127.0.0.1'. Defina o FQDN ou IP real do servidor.### Execuão da Instalaçao

Rodando o script de setup:

./install.sh

Observe o fluxo de carregamento das imagens base (cores, logs, banco, jobservice, nginx) e confirmacao de sucesso.

Verificacao dos processos ativos:

docker-compose top

Isso deve listar contêainers como harbor-core, harbor-db, registry, entre outros.

Acessabilidade do Sistema

Utilize as credenciais definidas no passo anterior (admin e senha configurada) para fazer login no painel administrativo.

Implantacao com Suporte TLS (HTTPS)

Em producao, o uso de HTTPS é mandatório. Isso exige um certificado válido assinado por uma CA reconhecida ou uso de ferramentas automatizadas como Let's Encrypt.

Obtencao de Certificados

Faça download dos arquivos .pem e .key. Se usar serviço comercial, baixe o bundle completo.

Movimente os arquivos para o diretório definido:

mkdir -p /data/cert
unzip harbor_cert_bundle.zip
mv *.pem /data/cert/
mv *.key /data/cert/

Habilitacao de HTTPS no Harbor

Atualize o arquivo harbor.yml novamente:

hostname: registry.seucertificado.com

# Habilitar HTTP apenas para redirecionar
http:
  port: 80

https:
  port: 443
  certificate: /data/cert/registry.pem
  private_key: /data/cert/registry.key

Reiniciar Ambiente

Execute o processo de preparacao antes de aplicar novas configurações:

# Preparacao dos novos configs
./prepare

# Encerra os servios atuais (dados sao preservados no volume data_volume)
docker-compose down -v

# Levanta novamente
docker-compose up -d

Verifique no navegador acessando https://seudoominio se o cadeado de segurança aparece.


Instalacao via Helm em Kubernetes

Para escalabilidade horizontal e alta disponibilidade, a instalacao native em cluster K8s é recomendada utilizando o pacote Helm.

Pre-condicoes do Clusters

  • Kubernetes versao 1.10 ou superior
  • Helm instalado (versao 2.8.0+)
  • Ingress Controller ativo
  • Banco de dados externo (PostgreSQL 9.6+) opcionalmente
  • Redis clusterizado opcionalmente
  • StorageClass ativa para PVCs dinamicos

Download dos Charts

helm repo add harbor https://helm.goharbor.io
helm fetch harbor/harbor --untar

Personalizacao do Valor (values.yaml)

O ficheiro de configurações padrão values.yaml precisa ser ajustado para apontar aos recursos externos do seu ambiente:

vim harbor/values.yaml

Modifique entradas chave relativas a Ingress, persistência de dados, e conexões de rede seguras.

Deploy do Release

helm install my-release harbor/harbor

Operações Básicas no Harbor

Gerenciamento de Projetos

O Harbor organiza as imagens por projetos. Ao criar um novo projeto, escolha a visibilidade:

  • Publico: Qualquer usuário autenticado pode realizar pull (download).
  • Privado: Apenas usuários com permissão explicita podem acessar.

Identificacao de Credenciais para Push

Para enviar imagens para o registro, obtenha as instruções de autenticação na página do projeto:

  1. Navegue até o projeto desejado.
  2. Selecione a aba 'Image Repository' ou similar.
  3. Copie o comando 'Push', contendo a URL do registro e suas credenciais.

Tags: Harbor Docker Registry kubernetes Helm Charts devops

Publicado em 9-27 00:24