In Harbor dient ein Projekt als logische Einheit zum Organisieren und Verwalten einer Sammlung von Container-Images. Damit können Sie zusammengehörige Artefakte gruppieren und bestimmte Richtlinien, Zugriffssteuerungen und Replikationsregeln auf die gesamte Sammlung anwenden. Images können erst per Push oder Pull an Harbor übertragen werden, wenn ein Projekt erstellt wurde.
Hinweis
Bevor Sie beginnen, müssen Sie Ihre Identität bei der Harbor-Registry initialisieren. Melden Sie sich dazu mindestens einmal in der Harbor-Benutzeroberfläche an.
Erforderliche IAM-Rolle
Wenn Sie Harbor-Projekte erstellen und Image-Namespaces verwalten möchten, wenden Sie sich an Ihren IAM-Projektadministrator, um die Rolle Harbor Project Creator (harbor-project-creator) anzufordern. Mit dieser Rolle können Sie Harbor-Projekte im Projekt-Namespace erstellen, abrufen und beobachten. Diese Rolle enthält die erforderlichen Berechtigungen zum Definieren neuer Image-Namespaces, damit Sie Sicherheitsgrenzen für Ihre containerisierten Anwendungen festlegen können.
Harbor-Projekt erstellen
Erstellen Sie ein Harbor-Projekt mit der GDC-Konsole, der gdcloud CLI oder der API.
Console
Führen Sie in der GDC-Konsole die folgenden Schritte aus:
- Klicken Sie im Navigationsmenü im Abschnitt CI/CD auf den Link Harbor Container Registry.
- Klicken Sie auf Harbor-Projekt erstellen.
- Geben Sie den Namen des Projekts ein.
- Optional: Das Scannen auf Sicherheitslücken ist standardmäßig aktiviert. Wenn Sie das automatische Scannen auf Sicherheitslücken für Harbor-Projekte deaktivieren möchten, klicken Sie auf den Ein/Aus-Button Scannen auf Sicherheitslücken für das Projekt aktivieren. Weitere Informationen finden Sie unter Auf Sicherheitslücken prüfen.
- Klicken Sie auf Erstellen.
- Es wird eine Bestätigungsmeldung angezeigt, dass Ihr Projekt erfolgreich erstellt wurde.
- Nachdem Ihr Harbor-Projekt erstellt wurde, melden Sie sich in der Harbor-UI an, um zu prüfen, ob Sie das Harbor-Projekt sehen können.
gdcloud
Erstellen Sie das Harbor-Projekt:
gdcloud harbor harbor-projects create HARBOR_PROJECT \
--project=PROJECT \
--instance=INSTANCE
Ersetzen Sie Folgendes:
HARBOR_PROJECT: der Name des zu erstellenden Harbor-Projekts.PROJECT: der Name des GDC-Projekts.INSTANCE: der Name der Instanz.
API
Die GDC-Konsole und die gdcloud CLI legen Ihr Nutzerkonto als Ersteller des Harbor-Projekts fest. Wenn Sie die API verwenden, müssen Sie das Feld spec.creatorSubject selbst festlegen.
Erstellen Sie eine benutzerdefinierte
HarborInstanceProject-Ressource auf dem zonalen Verwaltungs-API-Server. Sie können das FeldcreatorSubjectoderautoScannach dem Erstellen der Ressource nicht mehr ändern. Prüfen Sie daher beide Werte, bevor Sie die Ressource erstellen.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 EOFErsetzen Sie Folgendes:
MANAGEMENT_API_SERVER: der Pfad zur kubeconfig-Datei für den zonalen Verwaltungs-API-Server. Weitere Informationen finden Sie unter Zu einem zonalen Kontext wechseln.INSTANCE: der Name der Harbor-Registry-Instanz.HARBOR_PROJECT: der Name des zu erstellenden Harbor-Projekts.PROJECT: der Name des GDC-Projekts, das die Harbor-Registry-Instanz enthält.HARBOR_USERNAME: Ihr Harbor-Nutzername, genau wie im Harbor-UI-Nutzermenü nach der Anmeldung angezeigt. Dieser Nutzer wird zum Harbor-Projektadministrator des Harbor-Projekts. Verwenden Sie den Nutzernamen einer Person, nicht ein Dienstkonto. Weitere Informationen finden Sie unter Vorbereitung.
Das Feld
autoScanermöglicht das automatische Scannen auf Sicherheitslücken für Images, die per Push an das Projekt übertragen werden. Wenn Sie das automatische Scannen deaktivieren möchten, legen Sie den Wert auffalsefest. Weitere Informationen finden Sie unter Auf Sicherheitslücken prüfen.Prüfen Sie, ob das Harbor-Projekt erstellt und der Ersteller zugewiesen wurde:
kubectl --kubeconfig MANAGEMENT_API_SERVER \ get harborinstanceproject INSTANCE-HARBOR_PROJECT \ -n PROJECTIn der Spalte
PROJECTCREATEDSTATUSwirdCreatedund in der SpaltePROJECTSUBJECTASSIGNEDSTATUSwirdSubjectAssignedangezeigt.Wenn in der Spalte
PROJECTSUBJECTASSIGNEDSTATUSder WertSubjectAssignErrorangezeigt wird, prüfen Sie die Bedingungsmeldung:kubectl --kubeconfig MANAGEMENT_API_SERVER \ describe harborinstanceproject INSTANCE-HARBOR_PROJECT \ -n PROJECTEine
user ... not found-Nachricht bedeutet, dass sich der im FeldcreatorSubjectangegebene Nutzer noch nicht in der Harbor-Benutzeroberfläche angemeldet hat. Der Harbor-Dienst versucht es alle 30 Sekunden noch einmal. Der Status ändert sich also inSubjectAssigned, nachdem sich der Nutzer angemeldet hat.
Harbor-Projekt korrigieren, das ohne Ersteller erstellt wurde
Wenn für eine HarborInstanceProject-Ressource in einem Projekt Ihrer Organisation das Feld spec.creatorSubject nicht festgelegt ist, beendet der Harbor-Dienst die Verarbeitung von Änderungen an Harbor-Ressourcen in Ihrer Organisation. Zu den Symptomen gehören Harbor-Instanzen, die nicht bereit sind, neue Harbor-Projekte, die ohne Status bleiben, und Image-Abrufe, die mit x509: certificate signed by unknown authority-Fehlern fehlschlagen.
Um dieses Problem zu beheben, benötigen Sie die Rolle Harbor-Instanzadministrator (harbor-instance-admin) in dem Projekt, das die betroffene Ressource enthält. Wenn Sie diese Rolle nicht haben, bitten Sie einen Nutzer, der sie hat, diese Schritte auszuführen. Wenn Sie nicht wissen, welche Ressource betroffen ist, wenden Sie sich an Ihren Infrastrukturbetreiber (IO). Dieser kann die Ressource in den Harbor-Dienstprotokollen finden.
Prüfen Sie, ob die betroffene
HarborInstanceProject-Ressource das Feldspec.creatorSubjectfestlegt:kubectl --kubeconfig MANAGEMENT_API_SERVER \ get harborinstanceproject HARBOR_INSTANCE_PROJECT \ -n PROJECT -o jsonpath='{.spec.creatorSubject}'Ersetzen Sie Folgendes:
MANAGEMENT_API_SERVER: der Pfad zur kubeconfig-Datei für den zonalen Verwaltungs-API-Server. Weitere Informationen finden Sie unter Zu einem zonalen Kontext wechseln.HARBOR_INSTANCE_PROJECT: der Name derHarborInstanceProject-Ressource. Ressourcen, die Sie auf dieser Seite auf dem Tab API erstellen, heißenINSTANCE-HARBOR_PROJECT.PROJECT: der Name des GDC-Projekts, das die Ressource enthält.
Eine leere Ausgabe bedeutet, dass das Feld nicht festgelegt ist.
Bestätigen Sie den Harbor-Nutzernamen, der als Harbor-Projektadministrator zugewiesen werden soll, mit dem Inhaber des GDC-Projekts. Da Sie das Feld
spec.creatorSubjectnach dem Festlegen nicht mehr ändern können, sollten Sie den Nutzernamen prüfen, bevor Sie das Feld den einzelnen betroffenen Ressourcen hinzufügen: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"}}}'Ersetzen Sie
HARBOR_USERNAMEdurch den Harbor-Nutzernamen des Nutzers, der als Harbor-Projektadministrator zugewiesen werden soll. Mit dieser Rolle können Images gelöscht und Projektmitglieder verwaltet werden. Der Nutzer muss sich mindestens einmal in der Harbor-Benutzeroberfläche angemeldet haben und der Nutzername muss genau mit dem Namen im Harbor-Benutzeroberflächen-Nutzermenü übereinstimmen.Prüfen Sie, ob der Ersteller zugewiesen ist:
kubectl --kubeconfig MANAGEMENT_API_SERVER \ get harborinstanceproject HARBOR_INSTANCE_PROJECT \ -n PROJECTNachdem alle betroffenen Ressourcen korrigiert wurden, wird der Harbor-Dienst neu gestartet und die Verarbeitung von Änderungen wird innerhalb von etwa 10 Minuten fortgesetzt. In der Spalte
PROJECTSUBJECTASSIGNEDSTATUSwirdSubjectAssignedangezeigt. Wenn das Abrufen von Images aus Harbor nach 15 Minuten immer noch fehlschlägt, wenden Sie sich an Ihren IO. Geben Sie dem IO die Namen und Projekte der Ressourcen, die Sie korrigiert haben, damit der IO nach anderen betroffenen Ressourcen suchen und den Harbor-Dienst bei Bedarf neu starten kann.
Nächste Schritte
Nachdem Sie ein Harbor-Projekt erstellt haben, konfigurieren Sie Ihre Docker- und Helm-Clients so, dass sie eine Verbindung zu Ihrer Harbor-Registry herstellen: