Redução da Complexidade de Implantação do Harbor no Kubernetes

Harbor: Desmistificando a Implantação em Kubernetes – Do Helm ao Serviço Supervisor no VCF 9
Harbor é um container image registry open-source indispensável, oferecendo recursos robustos como segurança orientada por políticas (policy-driven security), controle de acesso baseado em função (Role-Based Access Control - RBAC), vulnerability scanning, assinatura de imagens (image signing), replicação e distribuição de imagens. A implantação do Harbor é uma etapa comum e crítica para organizações que buscam otimizar seus workflows de containerization.
Conforme discutimos em nosso blog post anterior, o Harbor oferece valor significativo através de seus recursos abrangentes e pode ser implantado em uma máquina virtual (VM). Este blog post dará continuidade ao tema, guiando você através do processo de implantação do Harbor em uma plataforma Kubernetes upstream conformant, usando o VMware vSphere Kubernetes Service (VKS) como exemplo. Abordaremos primeiro a implantação via Helm, depois via packages padrão do VKS e, finalmente, demonstraremos a implantação simplificada como um supervisor service no VMware Cloud Foundation (VCF) 9. Esta progressão destaca como a complexidade é progressivamente reduzida em cada nível. Se você tem interesse em saber mais sobre o Harbor e como implantá-lo em uma VM, confira nosso blog anterior.
Implantação do Harbor no Kubernetes Usando Helm
Antes de mergulharmos nos detalhes específicos do VKS, vamos delinear brevemente as etapas gerais para implantar os componentes mínimos do Harbor em qualquer cluster Kubernetes padrão (não pronto para produção). Este entendimento fundamental ajudará você a compreender os componentes envolvidos.
Pré-requisitos
- Um cluster Kubernetes em execução (usaremos o VMware vSphere Kubernetes Service (VKS) para este exemplo, mas o processo permanece o mesmo para qualquer plataforma Kubernetes upstream conformant).
- kubectl configurado para interagir com seu cluster.
- Helm (recomendado) para implantação simplificada.
- Persistent storage provisioner (ex: NFS, iSCSI, CSI driver específico do cloud-provider. O VKS já vem com o vSphere CSI driver integrado).
- Um load balancer ou ingress controller para expor os serviços do Harbor (implantamos o VKS com Virtual Private Cloud (VPC) habilitado, o que nos fornecerá o IP externo para o load balancer).
Passo 1: Baixar os Manifestos de Implantação do Harbor
Obtenha os Helm charts oficiais do Harbor ou os arquivos YAML brutos do Kubernetes. O Helm é geralmente preferido por sua facilidade de configuração e gerenciamento.
helm repo add harbor https://helm.goharbor.io
helm fetch harbor/harbor --untar
helm repo add harbor https://helm.goharbor.io
helm fetch harbor/harbor --untar
Passo 2: Configurar o values.yaml*
Personalize o arquivo values.yaml (para Helm) para definir:
- URL Externa
- Storage class para persistent volumes
- Configuração do banco de dados (PostgreSQL interno ou externo)
- Configuração do Redis
- Configurações de segurança (certificados TLS/SSL)
- Credenciais do Administrador
Para o nosso cenário específico, atualizaremos as seguintes configurações:
- Definiremos
expose.typecomoloadBalancer. - Em seguida, definiremos
expose.tls.auto.commonName(necessário quandoexpose.typenão é ingress). - Depois, definiremos
expose.ingress.hosts.corepara o FQDN da URL Externa. - Se não houver um storage class padrão definido em seu cluster, configure o
storageClasspara todos os pods na seçãopersistence. - Finalmente, defina o FQDN
externalURL.
Passo 3: Implantar o Harbor
Use o Helm para implantar o Harbor em seu cluster.
helm install harbor harbor/harbor --namespace harbor --create-namespace -f values.yaml
helm install harbor harbor/harbor --namespace harbor --create-namespace -f values.yaml
Este comando cria os deployments, services, stateful sets e persistent volume claims necessários para o Harbor. Opcionalmente, há uma etapa manual para configurar o load balancer que o Harbor usa para o IP externo. No nosso caso, o VPC no VMware vSphere e o NSX automatizam esse processo.
Passo 4: Verificar a Instalação do Harbor
Verifique o status dos pods do Harbor, acesse a UI e realize um test push/pull de uma imagem.
Isso conclui a implantação do Harbor em um cluster Kubernetes usando Helm. Embora essa abordagem coloque o Harbor em funcionamento, ela não o torna pronto para produção, pois você precisará configurar e gerenciar manualmente os certificados SSL, bem como o load balancer que está à frente do serviço Harbor. Como estamos usando o VKS integrado com VPCs como exemplo de implantação Kubernetes, o VKS configura automaticamente o IP do load balancer para nós. No entanto, você também precisaria lidar com isso manualmente em qualquer outra implantação Kubernetes.
Agora, vamos ver como podemos utilizar os packages padrão do VKS para implantar o Harbor para uma experiência mais próxima de produção.
Utilizando VKS Standard Packages para Configuração do Harbor
O VMware vSphere Kubernetes Service (VKS) simplifica significativamente a implantação e o gerenciamento de clusters Kubernetes dentro do seu ambiente vSphere. Ao fornecer um conjunto curado de standard packages, o VKS permite a fácil instalação de serviços e aplicações comuns.
Para implantar o Harbor dentro do VKS, utilizamos esses packages para uma experiência mais fluida e integrada, reduzindo grande parte da configuração manual exigida em uma configuração Kubernetes genérica. Os standard packages do VKS oferecem implantações pré-configuradas e validadas para vários componentes essenciais. Ao utilizar esses packages padrão, você pode provisionar rapidamente a infraestrutura necessária para o Harbor sem uma configuração manual profunda de cada componente, tornando o processo de implantação mais eficiente e menos propenso a erros em comparação com uma configuração Kubernetes genérica.
Aqui estão as etapas para implantar o Harbor como um VKS standard package usando o VCF CLI:
Pré-requisitos:
- Cluster VKS implantado
- VCF CLI instalado no jumphost
Passo 1: Associar um Repositório de VKS Standard Package*
Obtenha o repositório de VKS standard package mais recente compatível com seu cluster VKS e adicione-o ao nosso cluster VKS:
vcf package repository add standard-package-repo --url projects.packages.broadcom.com/vsphere/supervisor/packages/2025.10.22/vks-standard-packages:3.5.0-20251022 -n tkg-system
vcf package repository add standard-package-repo --url projects.packages.broadcom.com/vsphere/supervisor/packages/2025.10.22/vks-standard-packages:3.5.0-20251022 -n tkg-system
Passo 2: Implantar Pré-requisitos (Para Harbor Pronto para Produção)
Implantamos o Cert Manager e o Contour com Envoy como pré-requisitos para uma instância do Harbor pronta para produção:
Primeiro, implante o Cert Manager usando o guia de implantação do Broadcom:
vcf package available get cert-manager.kubernetes.vmware.com -n tkg-system
kubectl create ns package-installed
vcf package install cert-manager -p cert-manager.kubernetes.vmware.com --namespace package-installed --version 1.18.2+vmware.2-vks.2
vcf package installed list -n package-installed
vcf package available get cert-manager.kubernetes.vmware.com -n tkg-system
kubectl create ns package-installed
vcf package install cert-manager -p cert-manager.kubernetes.vmware.com --namespace package-installed --version 1.18.2+vmware.2-vks.2
vcf package installed list -n package-installed
Da mesma forma, implante o Contour usando o guia de implantação do Broadcom:
vcf package available get contour.kubernetes.vmware.com -n tkg-system
vcf package available get contour.kubernetes.vmware.com/1.33.0+vmware.1-vks.1 --default-values-file-output contour-data-values.yaml -n tkg-system
kubectl create ns contour
vcf package available get contour.kubernetes.vmware.com -n tkg-system
vcf package available get contour.kubernetes.vmware.com/1.33.0+vmware.1-vks.1 --default-values-file-output contour-data-values.yaml -n tkg-system
kubectl create ns contour
Em seguida, edite o contour-data-values.yaml conforme a documentação e implante o Contour.
vcf package install contour -p contour.kubernetes.vmware.com -v 1.33.0+vmware.1-vks.1 --values-file contour-data-values.yaml -n contour
vcf package installed list -n contour
vcf package install contour -p contour.kubernetes.vmware.com -v 1.33.0+vmware.1-vks.1 --values-file contour-data-values.yaml -n contour
vcf package installed list -n contour
Após a implantação, verifique o IP externo do serviço Envoy e adicione a entrada DNS para o Harbor mapear o IP externo do serviço Envoy.
Passo 3: Implantar o Harbor
Agora podemos implantar o Harbor usando o guia de implantação do Broadcom:
Primeiro, obtenha a versão mais recente do package Harbor para seu repositório usando:
vcf package available get harbor.kubernetes.vmware.com -n tkg-system
vcf package available get harbor.kubernetes.vmware.com -n tkg-system
Em seguida, gere o arquivo harbor-data-values.yaml usando:
vcf package available get harbor.kubernetes.vmware.com/ 2.14.0+vmware.1-vks.1 -n tkg-system --default-values-file-output harbor-data-values.yaml
vcf package available get harbor.kubernetes.vmware.com/ 2.14.0+vmware.1-vks.1 -n tkg-system --default-values-file-output harbor-data-values.yaml
Depois, edite o arquivo harbor-data-values.yaml e atualize os valores para os seguintes parâmetros obrigatórios. Configure parâmetros adicionais conforme necessário.
| Campo | Descrição |
|---|---|
hostname | O FQDN para acessar a UI do Harbor e referenciar o registry em aplicações client. O domínio deve resolver para o IP do Serviço Envoy criado pelo Contour em um servidor DNS externo. |
harborAdminPassword | Altere a senha para algo forte e único (também pode ser alterada na UI após a instalação). |
secretKey | Forneça a secret key para criptografia (deve ser uma string de 16 caracteres). |
database.password | Insira a senha inicial do banco de dados Postgres. |
core.secret | Especifique o secret usado para comunicação do core server com outros componentes. |
core.xsrfKey | Defina a XSRF key (deve ser uma string de 32 caracteres). |
jobservice.secret | Forneça o secret usado para comunicação do job service com outros componentes. |
registry.secret | Insira o secret usado para proteger o estado de upload do client e o storage backend do registry. |
Observe que, como definimos um CSI storage padrão para nosso cluster VKS, não precisamos definir as variáveis relacionadas ao storage class no arquivo YAML.
vcf package install harbor --package harbor.kubernetes.vmware.com --version 2.14.0+vmware.1-vks.1 --values-file .\harbor-data-values.yaml --namespace tkg-system
vcf package installed get harbor -n tkg-system
vcf package install harbor --package harbor.kubernetes.vmware.com --version 2.14.0+vmware.1-vks.1 --values-file .\harbor-data-values.yaml --namespace tkg-system
vcf package installed get harbor -n tkg-system
Passo 4: Verificar a Instalação do Harbor
Verifique a UI do Harbor navegando até o FQDN do Harbor.
Isso conclui a implantação do Harbor no VKS usando VKS standard packages. Embora o número de comandos executados nesta seção possa parecer maior do que o número de comandos executados na seção anterior, também implantamos o Contour com Envoy proxy e Cert Manager. Esses componentes fornecem gerenciamento centralizado de TLS, um API gateway robusto, ciclo de vida de certificados automatizado e gerenciamento de tráfego sofisticado para o Harbor, aproximando-o de uma instância pronta para produção.
Agora, vamos dar uma olhada na implantação do Harbor como um Supervisor Service no VCF 9, a mais simples das três opções para configurar uma instância do Harbor pronta para produção.
Implantação do Harbor como um Supervisor Service no VCF 9
Dentro do VCF, a implantação do Harbor como um supervisor service eleva a simplicidade ao próximo nível. Essa abordagem integra o Harbor diretamente ao management plane do VCF, permitindo um gerenciamento de ciclo de vida mais fácil, alocação de recursos e um papel mais integral dentro do seu ambiente VCF. Consequentemente, isso simplifica significativamente os aspectos operacionais do Harbor, tornando-o uma parte mais nativa do seu ecossistema VCF.
Aqui está um esboço geral do processo, assumindo que você tenha um workload domain VCF 9 com Supervisor configurado e em execução:
Pré-requisitos
- Uma conta no Broadcom Support Portal com o entitlement apropriado para baixar os arquivos YAML do Harbor supervisor service.
- VCF 9 Workload Domain com Supervisor implantado.
- Uma entrada DNS que pretendemos usar para o FQDN do Harbor correspondente ao IP externo do nginx load balancer.
Passo 1: Baixar e Atualizar o YAML do Harbor Supervisor Service*
Baixe o arquivo YAML do Harbor Supervisor Service e Data Values no Broadcom Support Portal para a versão específica do Harbor que você deseja instalar. Em seguida, atualize o arquivo harbor-data-values.yaml com o hostname, defina o storage class se nenhum storage class padrão estiver definido e, opcionalmente, altere as senhas para os vários componentes.
Abaixo está um exemplo das alterações feitas em nosso arquivo (o restante das entradas é deixado como valores padrão):
core:
secret: Harbor12345
xsrfKey: abcdefghijklmnopqrstuvqxyzabcdef
database:
type: internal
password: Harbor12345
enableContourHttpProxy: false
enableNginxLoadBalancer: true
harborAdminPassword: Harbor12345
hostname: harbor-k8s-demo.corp.vmbeans.com
jobservice:
replicas: 1
secret: Harbor12345
registry:
replicas: 1
secret: Harbor12345
secretKey: abcdefghijklmnop
trivy:
#! By default, for Supervisor Service set the tmpdir to a mount point of a PersistentVolume.
#! This is to fix the issue that the disk of a vSphere pod has not enough space for trivy's CVE Database
tmpdir: /home/scanner/.cache
core:
secret: Harbor12345
xsrfKey: abcdefghijklmnopqrstuvqxyzabcdef
database:
type: internal
password: Harbor12345
enableContourHttpProxy: false
enableNginxLoadBalancer: true
harborAdminPassword: Harbor12345
hostname: harbor-k8s-demo.corp.vmbeans.com
jobservice:
replicas: 1
secret: Harbor12345
registry:
replicas: 1
secret: Harbor12345
secretKey: abcdefghijklmnop
trivy:
#! By default, for Supervisor Service set the tmpdir to a mount point of a PersistentVolume.
#! This is to fix the issue that the disk of a vSphere pod has not enough space for trivy's CVE Database
tmpdir: /home/scanner/.cache
Passo 2: Implantar o Harbor Supervisor Service*
Navegue até VMware vCenter 9 > Menu > Supervisors > Services e clique em Add a New Service > Upload e carregue o arquivo YAML do serviço Harbor baixado do Broadcom Support Portal. Clique em Finish.
O serviço Harbor agora está disponível para ser implantado em supervisors:
No painel do Harbor, clique em Actions > Manage Service:
Selecione o Supervisor para implantar e clique em Next:
Cole o conteúdo atualizado do arquivo harbor-data-values.yaml na caixa de texto YAML Service Config e clique em Finish:
Passo 3: Monitorar a Implantação do Harbor Supervisor Service*
Navegue até Supervisors > Supervisor > Configure > Supervisor Services > Overview e verifique o status do Harbor:
Verifique a implantação do Harbor navegando até o FQDN do Harbor:
Seguindo estas etapas simplificadas, você pode implantar o Harbor com sucesso como um supervisor service. Essa abordagem aproveita totalmente o poder do VCF, oferecendo uma solução de gerenciamento de imagens de container altamente eficiente e profundamente integrada dentro do seu ecossistema VCF.
Conclusão
Em conclusão, a implantação do Harbor, um componente crítico para workflows modernos de containerization, pode ser abordada com diferentes níveis de complexidade. Percorremos três métodos de implantação distintos: desde a instalação fundamental baseada em Helm em um cluster Kubernetes genérico, passando pelos VKS standard packages mais integrados e, finalmente, a implantação altamente simplificada como um supervisor service dentro do VMware Cloud Foundation 9.
Cada progressão demonstra uma redução significativa na sobrecarga operacional e um aumento na automação, culminando em uma instância do Harbor profundamente integrada e eficientemente gerenciada dentro do ecossistema VCF. Ao compreender essas opções, as organizações podem escolher a estratégia de implantação que melhor se alinha à sua infraestrutura, expertise e nível de automação desejado, acelerando, em última análise, suas capacidades de gerenciamento de imagens de container.
No próximo blog, discutiremos as considerações de design para tornar o Harbor pronto para produção, permitindo seu uso eficaz em um ambiente corporativo – Fique ligado!
Siga nossa Série de Blogs sobre Harbor:
- Blog 1 – Harbor: Your Enterprise-Ready Container Registry for a Modern Private Cloud
Descubra mais sobre VMware Cloud Foundation (VCF) Blog.
Assine para receber os posts mais recentes em seu e-mail.
Precisa de ajuda com suas soluções de TI?
A VirtuAllIT Solutions oferece consultoria especializada em virtualização, cloud computing e infraestrutura tecnológica.

