In Harbor, un progetto funge da unità logica per l'organizzazione e la gestione di una raccolta di immagini container. Offre un modo per raggruppare gli artefatti correlati e applicare policy, controlli degli accessi e regole di replica specifici all'intera raccolta. Non è possibile eseguire il push o il pull delle immagini in Harbor prima della creazione di un progetto.
Prima di iniziare
Prima di iniziare, devi inizializzare la tua identità con il registry Harbor accedendo alla UI di Harbor almeno una volta.
Ruolo IAM richiesto
Per creare progetti Harbor e gestire gli spazi dei nomi delle immagini, contatta l'amministratore IAM del progetto per richiedere il ruolo Harbor Project Creator (harbor-project-creator), che ti consente di creare, recuperare e monitorare i progetti Harbor nello spazio dei nomi del progetto. Questo ruolo include le autorizzazioni necessarie per definire nuovi spazi dei nomi delle immagini in modo da poter stabilire i confini di sicurezza per le tue applicazioni containerizzate.
Crea un progetto Harbor
Crea un progetto Harbor utilizzando la console GDC, la CLI gdcloud o l'API.
Console
Nella console GDC, segui questi passaggi:
- Fai clic sul link Harbor Container Registry nella sezione CI/CD del menu di navigazione.
- Fai clic su Crea un progetto Harbor.
- Inserisci il nome del progetto.
- (Facoltativo) L'analisi delle vulnerabilità è attiva per impostazione predefinita. Per disattivare l'analisi automatica delle vulnerabilità per i progetti Harbor, fai clic sul pulsante di attivazione/disattivazione Attiva l'analisi delle vulnerabilità per il progetto. Per saperne di più, consulta Scansiona per rilevare vulnerabilità.
- Fai clic su Crea.
- Viene visualizzato un messaggio di conferma che indica che il progetto è stato creato correttamente.
- Dopo aver creato il progetto Harbor, accedi alla UI di Harbor per verificare che sia visibile.
gdcloud
Crea il progetto Harbor:
gdcloud harbor harbor-projects create HARBOR_PROJECT \
--project=PROJECT \
--instance=INSTANCE
Sostituisci quanto segue:
HARBOR_PROJECT: il nome del progetto Harbor da creare.PROJECT: il nome del progetto GDC.INSTANCE: il nome dell'istanza
API
La console GDC e la CLI gdcloud impostano il creatore del progetto Harbor sul tuo account utente. Quando utilizzi l'API, devi impostare tu il campo spec.creatorSubject.
Crea una risorsa personalizzata
HarborInstanceProjectsul server API di gestione a livello di zona. Non puoi modificare il campocreatorSubjectoautoScandopo aver creato la risorsa, quindi controlla entrambi i valori prima di crearla.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 EOFSostituisci quanto segue:
MANAGEMENT_API_SERVER: il percorso del file kubeconfig per il server API di gestione a livello di zona. Per saperne di più, consulta Passa a un contesto a livello di zona.INSTANCE: il nome dell'istanza del registry Harbor.HARBOR_PROJECT: il nome del progetto Harbor da creare.PROJECT: il nome del progetto GDC che contiene l'istanza del registry Harbor.HARBOR_USERNAME: il tuo nome utente Harbor, esattamente come mostrato nel menu utente della UI di Harbor dopo l'accesso. Questo utente diventa l'amministratore del progetto Harbor. Utilizza il nome utente di una persona, non un account di servizio. Per saperne di più, consulta Prima di iniziare.
Il campo
autoScanattiva l'analisi automatica delle vulnerabilità per le immagini di cui viene eseguito il push nel progetto. Per disattivare la scansione automatica, impostala sufalse. Per saperne di più, consulta Scansiona per individuare vulnerabilità.Verifica che il progetto Harbor sia stato creato e che il creator sia stato assegnato:
kubectl --kubeconfig MANAGEMENT_API_SERVER \ get harborinstanceproject INSTANCE-HARBOR_PROJECT \ -n PROJECTLa colonna
PROJECTCREATEDSTATUSmostraCreatede la colonnaPROJECTSUBJECTASSIGNEDSTATUSmostraSubjectAssigned.Se la colonna
PROJECTSUBJECTASSIGNEDSTATUSmostraSubjectAssignError, controlla il messaggio della condizione:kubectl --kubeconfig MANAGEMENT_API_SERVER \ describe harborinstanceproject INSTANCE-HARBOR_PROJECT \ -n PROJECTUn messaggio
user ... not foundindica che l'utente specificato nel campocreatorSubjectnon ha ancora eseguito l'accesso alla UI di Harbor. Il servizio Harbor riprova ogni 30 secondi, quindi lo stato cambia inSubjectAssigneddopo l'accesso dell'utente.
Correggi un progetto Harbor creato senza un creator
Se una risorsa HarborInstanceProject in un progetto della tua organizzazione
non imposta il campo spec.creatorSubject, il servizio Harbor interrompe
l'elaborazione delle modifiche alle risorse Harbor nell'organizzazione. I sintomi includono istanze Harbor che non diventano pronte, nuovi progetti Harbor che rimangono senza stato e pull di immagini che non vanno a buon fine con errori x509: certificate signed by unknown authority.
Per risolvere questo problema, devi disporre del ruolo Amministratore istanza Harbor (harbor-instance-admin) nel progetto che contiene la risorsa interessata. Se non disponi di questo ruolo, chiedi a un utente che lo possiede di completare questi passaggi. Se non sai quale risorsa è interessata, contatta l'operatore dell'infrastruttura (IO), che può trovarla nei log del servizio Harbor.
Verifica se la risorsa
HarborInstanceProjectinteressata imposta il campospec.creatorSubject:kubectl --kubeconfig MANAGEMENT_API_SERVER \ get harborinstanceproject HARBOR_INSTANCE_PROJECT \ -n PROJECT -o jsonpath='{.spec.creatorSubject}'Sostituisci quanto segue:
MANAGEMENT_API_SERVER: il percorso del file kubeconfig per il server API di gestione a livello di zona. Per saperne di più, consulta Passa a un contesto a livello di zona.HARBOR_INSTANCE_PROJECT: il nome della risorsaHarborInstanceProject. Le risorse che crei dalla scheda API di questa pagina sono denominateINSTANCE-HARBOR_PROJECT.PROJECT: il nome del progetto GDC che contiene la risorsa.
Un output vuoto indica che il campo non è impostato.
Conferma il nome utente Harbor da assegnare come amministratore del progetto Harbor con il proprietario del progetto GDC. Poiché non puoi modificare il campo
spec.creatorSubjectdopo averlo impostato, verifica il nome utente prima di aggiungere il campo a ogni risorsa interessata: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"}}}'Sostituisci
HARBOR_USERNAMEcon il nome utente Harbor dell'utente da assegnare come amministratore del progetto Harbor. Questo ruolo può eliminare le immagini e gestire i membri del progetto. L'utente deve aver eseguito l'accesso alla UI di Harbor almeno una volta e il nome utente deve corrispondere esattamente al nome mostrato nel menu utente della UI di Harbor.Verifica che il creator sia assegnato:
kubectl --kubeconfig MANAGEMENT_API_SERVER \ get harborinstanceproject HARBOR_INSTANCE_PROJECT \ -n PROJECTDopo aver corretto tutte le risorse interessate, il servizio Harbor si riavvia e riprende l'elaborazione delle modifiche entro circa 10 minuti, mentre la colonna
PROJECTSUBJECTASSIGNEDSTATUSmostraSubjectAssigned. Se i pull delle immagini da Harbor continuano a non riuscire dopo 15 minuti, contatta il tuo IO. Fornisci all'IO i nomi e i progetti delle risorse che hai corretto, in modo che possa verificare la presenza di altre risorse interessate e riavviare il servizio Harbor, se necessario.
Passaggi successivi
Dopo aver creato un progetto Harbor, configura i client Docker e Helm per connetterti al registry Harbor: