No Harbor, um projeto serve como uma unidade lógica para organizar e gerenciar uma coleção de imagens de contêiner. Ele oferece uma maneira de agrupar artefatos relacionados e aplicar políticas, controles de acesso e regras de replicação específicos a toda a coleção. Não é possível enviar ou extrair imagens para o Harbor antes que um projeto seja criado.
Antes de começar
Antes de começar, inicialize sua identidade com o registro do Harbor fazendo login na interface do Harbor pelo menos uma vez.
Papel do IAM obrigatório
Para criar projetos do Harbor e gerenciar namespaces de imagem, entre em contato com o administrador do projeto do IAM para solicitar o papel de Criador de projetos do Harbor (harbor-project-creator), que permite criar, receber e assistir projetos do Harbor no namespace do projeto. Esse papel inclui as permissões necessárias para definir novos namespaces de imagem,
para que você possa estabelecer limites de segurança para seus aplicativos
em contêineres.
Criar um projeto do Harbor
Crie um projeto do Harbor usando o console do GDC, a CLI gdcloud ou a API.
Console
No console do GDC, siga estas etapas:
- Clique no link Harbor Container Registry na seção CI/CD no menu de navegação.
- Clique em Criar um projeto do Harbor.
- Insira o nome do projeto.
- Opcional: a verificação de vulnerabilidades é ativada por padrão. Para desativar a verificação automática de vulnerabilidades em projetos do Harbor, clique no botão Ativar verificação de vulnerabilidades para o projeto. Para mais informações, consulte Verificar vulnerabilidades.
- Clique em Criar.
- Uma mensagem de confirmação aparece informando que o projeto foi criado.
- Depois que o projeto do Harbor for criado, faça login na interface do Harbor para confirmar que você consegue visualizar o projeto.
gdcloud
Crie o projeto do Harbor:
gdcloud harbor harbor-projects create HARBOR_PROJECT \
--project=PROJECT \
--instance=INSTANCE
Substitua:
HARBOR_PROJECT: o nome do projeto do Harbor a ser criado.PROJECT: o nome do projeto do GDC.INSTANCE: o nome da instância.
API
O console do GDC e a CLI gdcloud definem o criador do projeto do Harbor como sua conta de usuário. Ao usar a API, é necessário definir o campo
spec.creatorSubject por conta própria.
Crie um recurso personalizado
HarborInstanceProjectno servidor de API de gerenciamento zonal. Não é possível alterar o campocreatorSubjectouautoScandepois de criar o recurso. Portanto, verifique os dois valores antes de criá-lo.kubectl --kubeconfig MANAGEMENT_API_SERVER create -f - <<EOF apiVersion: artifactregistry.gdc.goog/v1 kind: HarborInstanceProject metadata: name: INSTANCE-HARBOR_PROJECT namespace: PROJECT spec: projectName: HARBOR_PROJECT harborInstanceRef: name: INSTANCE creatorSubject: apiGroup: rbac.authorization.k8s.io kind: User name: HARBOR_USERNAME autoScan: true EOFSubstitua:
MANAGEMENT_API_SERVER: o caminho para o arquivo kubeconfig do servidor de API de gerenciamento zonal. Para mais informações, consulte Alternar para um contexto zonal.INSTANCE: o nome da instância do registro do Harbor.HARBOR_PROJECT: o nome do projeto do Harbor a ser criado.PROJECT: o nome do projeto do GDC que contém a instância do registro do Harbor.HARBOR_USERNAME: seu nome de usuário do Harbor, exatamente como mostrado no menu de usuário da interface do Harbor depois que você faz login. Esse usuário se torna o administrador do projeto do Harbor. Use o nome de usuário de uma pessoa, não uma conta de serviço. Para mais informações, consulte Antes de começar.
O campo
autoScanativa a verificação automática de vulnerabilidades em imagens enviadas ao projeto. Para desativar a verificação automática, defina-a comofalse. Para mais informações, consulte Verificar vulnerabilidades.Verifique se o projeto do Harbor foi criado e se o criador foi atribuído:
kubectl --kubeconfig MANAGEMENT_API_SERVER \ get harborinstanceproject INSTANCE-HARBOR_PROJECT \ -n PROJECTA coluna
PROJECTCREATEDSTATUSmostraCreated, e a colunaPROJECTSUBJECTASSIGNEDSTATUSmostraSubjectAssigned.Se a coluna
PROJECTSUBJECTASSIGNEDSTATUSmostrarSubjectAssignError, verifique a mensagem de condição:kubectl --kubeconfig MANAGEMENT_API_SERVER \ describe harborinstanceproject INSTANCE-HARBOR_PROJECT \ -n PROJECTUma mensagem
user ... not foundsignifica que o usuário especificado no campocreatorSubjectainda não fez login na interface do Harbor. O serviço do Harbor tenta novamente a cada 30 segundos, então o status muda paraSubjectAssigneddepois que o usuário faz login.
Corrigir um projeto do Harbor criado sem um criador
Se um recurso HarborInstanceProject em qualquer projeto da sua organização
não definir o campo spec.creatorSubject, o serviço do Harbor vai parar de
processar mudanças nos recursos do Harbor em toda a organização. Os sintomas
incluem instâncias do Harbor que não ficam prontas, novos projetos do Harbor que permanecem
sem status e extrações de imagem que falham com
erros x509: certificate signed by unknown authority.
Para corrigir esse problema, você precisa do papel de Administrador de instâncias do Harbor (harbor-instance-admin) no projeto que contém o recurso afetado. Se você não tiver esse papel, peça a um usuário que o tenha para concluir essas
etapas. Se você não souber qual recurso foi afetado, entre em contato com o
operador de infraestrutura (IO, na sigla em inglês), que pode encontrá-lo nos registros do serviço do Harbor.
Verifique se o recurso
HarborInstanceProjectafetado define o campospec.creatorSubject:kubectl --kubeconfig MANAGEMENT_API_SERVER \ get harborinstanceproject HARBOR_INSTANCE_PROJECT \ -n PROJECT -o jsonpath='{.spec.creatorSubject}'Substitua:
MANAGEMENT_API_SERVER: o caminho para o arquivo kubeconfig do servidor de API de gerenciamento zonal. Para mais informações, consulte Alternar para um contexto zonal.HARBOR_INSTANCE_PROJECT: o nome do recursoHarborInstanceProject. Os recursos criados na guia API nesta página são chamados deINSTANCE-HARBOR_PROJECT.PROJECT: o nome do projeto do GDC que contém o recurso.
Uma saída vazia significa que o campo não está definido.
Confirme o nome de usuário do Harbor a ser atribuído como administrador do projeto do Harbor com o proprietário do projeto do GDC. Como não é possível alterar o campo
spec.creatorSubjectdepois de defini-lo, verifique o nome de usuário antes de adicionar o campo a cada recurso afetado:kubectl --kubeconfig MANAGEMENT_API_SERVER \ patch harborinstanceproject HARBOR_INSTANCE_PROJECT \ -n PROJECT --type merge \ -p '{"spec":{"creatorSubject":{"apiGroup":"rbac.authorization.k8s.io","kind":"User","name":"HARBOR_USERNAME"}}}'Substitua
HARBOR_USERNAMEpelo nome de usuário do Harbor do usuário a ser atribuído como administrador do projeto do Harbor. Esse papel pode excluir imagens e gerenciar membros do projeto. O usuário precisa ter feito login na interface do Harbor pelo menos uma vez, e o nome de usuário precisa corresponder exatamente ao nome mostrado no menu de usuário da interface do Harbor.Verifique se o criador foi atribuído:
kubectl --kubeconfig MANAGEMENT_API_SERVER \ get harborinstanceproject HARBOR_INSTANCE_PROJECT \ -n PROJECTDepois que todos os recursos afetados forem corrigidos, o serviço do Harbor será reiniciado e retomará o processamento das alterações em cerca de 10 minutos, e a coluna
PROJECTSUBJECTASSIGNEDSTATUSmostraráSubjectAssigned. Se as extrações de imagem do Harbor ainda falharem após 15 minutos, entre em contato com o IO. Informe ao IO os nomes e projetos dos recursos que você corrigiu para que ele possa verificar outros recursos afetados e reiniciar o serviço do Harbor, se necessário.
A seguir
Depois de criar um projeto do Harbor, configure os clientes do Docker e do Helm para se conectarem ao registro do Harbor: