- Release notes
- Urheberrecht
- 1 Einführung
- 2 Anforderungen
- 3 Installation über die Rancher Benutzeroberfläche
- 4 Installation über die Kommandozeile
- 5 Hochverfügbarkeit setup
- 6 Konfigurieren Sie Rancher als OIDC-Identitätsanbieter
- 7 Häufig gestellte Fragen
- 8 Fehlerbehebung
- A Überschreiben des SUSE Private Registry Helm Charts
- B Beispiel eines Private Registry HA setup Helm Diagramms
- C Freie GNU-Dokumentationslizenz (GNU Free Documentation License)
- C1 0. VORWORT
- C2 1. ANWENDBARKEIT UND DEFINITIONEN
- C3 2. UNVERÄNDERTE KOPIEN
- C4 3. KOPIEN IN MENGEN
- C5 4. MODIFIKATIONEN
- C6 5. KOMBINIEREN VON DOKUMENTEN
- C7 6. SAMMLUNGEN VON DOKUMENTEN
- C8 7. AGGREGATION MIT UNABHÄNGIGEN WERKEN
- C9 8. ÜBERSETZUNG
- C10 9. ABSCHLUSSBESTIMMUNGEN
- C11 1. SPÄTERE ÜBERARBEITUNGEN DIESER LIZENZ
- C12 ANHANG: Wie Sie diese Lizenz für Ihre Dokumente verwenden können
Release notes #
SUSE Private Registry is an on-premises container registry. It is designed for SUSE customers who need a container registry that works well with other SUSE services and products.
This document provides a high-level overview of the features, capabilities and limitations of SUSE Private Registry, and highlights important product updates.
1 Release 1.2.0 #
Security updates:
Updates Harbor 2.14.3 to 2.15.1 (Release Notes v2.15.1).
Updates Trivy version 0.68.2 to 0.70.0 with adapter v0.36.0 general availability (GA) (Release Notes v0.70.0).
Component updates:
Updates
k8s.io/client-goto 0.34.1.Updates
aws-sdk-goto 1.55.8.Updates
go-ldapto 3.4.11.Updates Go to 1.25.9.
New features and performance:
Adds support for the Cosign v3 Bundle signature format.
Introduces an option to disable audit log recording to the database during initialization.
Enables pprof support and the ability to export the Harbor version via the Prometheus exporter binary.
Replaces the existing pull-through cache with a new proxy cache implementation.
Improves general performance through code refactoring (for example, by using
strings.Builderandstrings.CutPrefix).
Key fixes:
Implements a security fix to reject bearer tokens issued before project creation.
Fixes issues related to OpenID Connect (OIDC) integration for users with a single group.
Corrects errors in user and group search functionality.
Resolves various user interface (UI) issues, including an unwanted scrollbar in tag retention and issues with the "Copy Pull Button" when tags are undefined.
Adds support for both
docker-composev1 anddocker-composev2.Calls the
/v2/auth/tokenapplication programming interface (API) to get a bearer token for the Docker Hub adapter.
Container image updates:
private-registry/harbor-core:1.1.2 ➡ private-registry/1.2/harbor-core:1.2.0
private-registry/harbor-exporter:1.1.2 ➡ private-registry/1.2/harbor-exporter:1.2.0
private-registry/harbor-jobservice:1.1.2 ➡ private-registry/1.2/harbor-jobservice:1.2.0
private-registry/harbor-portal:1.1.2 ➡ private-registry/1.2/harbor-portal:1.2.0
private-registry/harbor-registry:1.1.2 ➡ private-registry/1.2/harbor-registry:1.2.0
private-registry/harbor-registryctl:1.1.2 ➡ private-registry/1.2/harbor-registryctl:1.2.0
private-registry/harbor-trivy-adapter:1.1.2 ➡ private-registry/1.2/harbor-trivy-adapter:1.2.0
Helm chart updates:
The chart is the version 1.2.x will be in oci://registry.suse.com/private-registry/1.2/private-registry-helm
Makes health probe
timeoutSecondsandfailureThresholdconfigurable via values.Fixes extra environment variables for the exporter.
Installs
PodDisruptionBudgetresources when the replica count is greater than one.
Upgrade notes:
No breaking changes in this release.
2 Release 1.1.3 #
Security updates:
Updates Harbor 2.14.2 to 2.14.4 (Release Notes v2.14.4).
Updates Trivy version 0.68.2 to 0.70.0 with adapter v0.36.0 (Release Notes v0.70.0).
Key fixes:
Fixed SessionRegenerate arguments/lifetime and prevented background polling from artificially renewing session TTLs.
Fixes scanner application programming interface (API) issues and resolves an issue that occurs when editing distribution instances without credentials.
Calls the
/v2/auth/tokenAPI to get a bearer token for the Docker Hub adapter.Bumped Go to version 1.25.9 and upgraded the OpenTelemetry SDK and go-jose packages.
Container image updates:
private-registry/harbor-core:1.1.2 ➡ private-registry/harbor-core:1.1.3
private-registry/harbor-exporter:1.1.2 ➡ private-registry/harbor-exporter:1.1.3
private-registry/harbor-jobservice:1.1.2 ➡ private-registry/harbor-jobservice:1.1.3
private-registry/harbor-portal:1.1.2 ➡ private-registry/harbor-portal:1.1.3
private-registry/harbor-registry:1.1.2 ➡ private-registry/harbor-registry:1.1.3
private-registry/harbor-registryctl:1.1.2 ➡ private-registry/harbor-registryctl:1.1.3
private-registry/harbor-trivy-adapter:1.1.2 ➡ private-registry/harbor-trivy-adapter:1.1.3
suse/postgres:17.9 ➡ suse/postgres:17.10
suse/nginx:1.21 ➡ suse/nginx:1.27
Upgrade notes:
No breaking changes in this release.
3 Release 1.1.2 #
Security Updates:
CVE-2026-4404: Use of hard coded credentials allows attackers to use the default password and gain access to the Web UI, if not set during installation or upgrade.
Now if the HARBOR_ADMIN_PASSWORD is not set during the installation or upgrade, it will be generated randomly and stored in a Kubernetes secret.
This change mitigates the risk of using a default password and enhances the security of the installation.
Upgrade Notes:
No breaking changes in this release.
4 Release 1.1.1 #
Security Updates:
Update Harbor 2.14.1 to 2.14.2 (Release Notes v2.14.2)
Trivy version update 0.67.2 to 0.68.2 (Release Notes v0.68.2)
Container Image Updates:
private-registry/harbor-core:1.1.0 ➡ private-registry/harbor-core:1.1.1
private-registry/harbor-exporter:1.1.0 ➡ private-registry/harbor-exporter:1.1.1
private-registry/harbor-jobservice:1.1.0 ➡ private-registry/harbor-jobservice:1.1.1
private-registry/harbor-portal:1.1.0 ➡ private-registry/harbor-portal:1.1.1
private-registry/harbor-registry:1.1.0 ➡ private-registry/harbor-registry:1.1.1
private-registry/harbor-registryctl:1.1.0 ➡ private-registry/harbor-registryctl:1.1.1
private-registry/harbor-trivy-adapter:1.1.0 ➡ private-registry/harbor-trivy-adapter:1.1.1
Upgrade Notes:
No breaking changes in this release.
5 Release 1.1.0 #
Security Updates:
Updated Harbor 2.13.2 to 2.14.1 (Release Notes v2.14.1)
Container Image Updates:
Update the base image bci/bci-micro:15.6 to bci/bci-micro:15.7
Updated images:
private-registry/harbor-valkey:8.0.6 ➡ suse/valkey:8.0.6
private-registry/harbor-db:2.13.2 (postgres 17) ➡ suse/postgres:17.6
private-registry/harbor-nginx:1.21 ➡ suse/nginx:1.21
Upgrade Notes:
Images are now tagged with the SUSE Private Registry version instead of the corresponding Harbor version. The change in image versioning scheme is handled by Helm when upgrading the installation using the chart:
private-registry/harbor-core:1.1.0
private-registry/harbor-exporter:1.1.0
private-registry/harbor-jobservice:1.1.0
private-registry/harbor-portal:1.1.0
private-registry/harbor-registry:1.1.0
private-registry/harbor-registryctl:1.1.0
private-registry/harbor-registryctl:1.1.0
No breaking changes in this release.
6 Release 1.0.1 #
Security updates:
CVE-2025-55198: Helm may panic due to incorrect YAML content.
CVE-2025-55199: Helm charts with specific JSON schema values can cause memory exhaustion.
CVE-2025-54410: Moby versions before 25.0.13, when firewall reloads, Docker fails to re-create iptables rules isolating bridge networks. This allows any container to access all ports on any other container across different bridge networks on the same host and breaks network segmentation in multi-tenant environments (only
--internalnetworks remain protected).CVE-2025-29923: go-redis allows potential out of order responses when
CLIENT SETINFOtimes out during connection establishment.CVE-2025-54388: Moby versions 28.2.0–28.3.2 fails to re-create iptables rules after a firewall reloads. This exposes containers with localhost-published ports (e.g., 127.0.0.1:8080) to remote access via the Docker bridge, while unpublished ports remain protected; fixed in version 28.3.3.
GHSA-2464-8j7c-4cjm: go-viper’s map structure may leak sensitive information in logs when processing malformed data.
CVE-2025-8959: HashiCorp go-getter vulnerable to arbitrary read through a symlink attack.
CVE-2025-58058: github.com/ulikunitz/xz leaks memory when decoding a corrupted multiple LZMA archives.
CVE-2025-53547: Helm chart dependency updating with malicious Chart.yaml content and symlink can lead to code execution.
Bugs fixed:
Trivy: the correct version is shown when calling
trivy version.
Container image updates:
Valkey updated from 8.0.2 ➡ 8.0.6.
Upgrade notes:
No breaking changes in this release.
7 Release 1.0 #
Key features:
SUSE Private Registry is based on Harbor 2.13.2
Integration with Model Spec for first-class handling of AI models
Enhanced audit logging
Predictable release cycle aligned with SUSE Rancher Prime. SUSE Private Registry will be updated every 4 months
Each release is supported by SUSE for 18 months from the date of release
6 months of security and bug fix maintenance, followed by
12 months of security-only maintenance
Can be used to mirror SUSE Anwendungssammlung
Supports SUSE Sicherheit as an external scanner
SUSE Private Registry includes all the features of Harbor:
On-premises private container image and OCI artifact registry
Web interface for administration
Role-based Access Control
Fine-grained project configuration for image and artifact storage
Mirroring and pull-through caching of upstream registries' artifacts
Image retention and garbage collection controls
Scanning images for security vulnerabilities with the Trivy scanner
Generate SBOMs for stored images
Content trust with Cosign (Notary is not included)
Urheberrecht #
Copyright-Hinweis © 20XX–2026-07-09 SUSE LLC und Mitwirkende. Alle Rechte vorbehalten.
Es wird die Genehmigung erteilt, dieses Dokument unter den Bedingungen der GNU Free Documentation License, Version 1.2 oder (optional) Version 1.3 zu vervielfältigen, zu verbreiten und/oder zu verändern; der unveränderbare Abschnitt ist der Copyright-Hinweis und die Lizenzbedingungen. Eine Kopie dieser Lizenz (Version 1.2) finden Sie im Abschnitt mit dem Titel 'GNU Free Documentation License'.
Für SUSE Marken siehe https://www.suse.com/company/legal/. Alle Marken von Drittanbietern sind Eigentum ihrer jeweiligen Inhaber. Markensymbole (®, ™ usw.) kennzeichnen Marken von SUSE und ihren Tochtergesellschaften. Sternchen (*) kennzeichnen Marken von Drittanbietern.
Alle Informationen in diesem Buch wurden mit größter Sorgfalt zusammengestellt. Auch hierdurch kann jedoch keine hundertprozentige Richtigkeit gewährleistet werden. Weder SUSE LLC, noch seine Tochtergesellschaften, noch die Autoren, noch die Übersetzer werden für mögliche Fehler oder deren Folgen haftbar gemacht.
1 Einführung #
1.1 Was ist SUSE Private Registry? #
SUSE Private Registry (Private Registry) ist eine lokale Container-Registry. Private Registry ist für SUSE Kunden konzipiert, die eine Container-Registry benötigen, die gut mit anderen SUSE Diensten und Produkten zusammenarbeitet.
1.2 Was sind die Vorteile von SUSE Private Registry? #
Private Registry basiert auf dem Harbor Projekt und umfasst alle seine Kernfunktionen sowie zusätzliche Vorteile. Beispiel:
Lokale Container-Registry. Private Registry ist eine lokal gehostete Container-Registry mit Zugriff auf Online-SUSE Registry-Dienste.
Sicherheit. Private Registry bietet Sicherheitsüberlegungen für containerisierte Umgebungen. Es umfasst Authentifizierung, Autorisierung und Schwachstellenscanning.
Implementierungsflexibilität. Sie können Private Registry in einer Kubernetes Umgebung wie SUSE Rancher Prime: RKE2 installieren. Sie können Private Registry auch mit einem Setup für hohe Verfügbarkeit bereitstellen.
Benutzermanagement. Private Registry bietet Authentifizierungs- und Autorisierungsmechanismen mit rollenbasierter Zugriffskontrolle (RBAC).
Benutzeroberfläche. Neben einer Befehlszeilenschnittstelle können Sie Private Registry über die Web-Benutzeroberfläche verwalten.
1.3 Wie funktioniert SUSE Private Registry? #
Private Registry wird als Open Container Initiative (OCI) Container bereitgestellt und soll auf einem Kubernetes Cluster bereitgestellt werden. Private Registry besteht aus den folgenden Containern:
harbor-core: die Hauptkomponente der Harbor Registry, verantwortlich für die Verwaltung von Kernfunktionen wie das Verwalten von Projekten, Repositories und Benutzerinteraktionen.
harbor-db: der Datenbankcontainer, der alle Metadaten zu Bildern, Benutzern und Konfigurationen für die Harbor Registry speichert.
harbor-jobservice: ein Dienst, der Hintergrundjobs verwaltet, wie z.B. Bildreplikation und geplante Aufgaben, um eine effiziente Verarbeitung von Operationen innerhalb der Registry sicherzustellen.
harbor-nginx: der Reverse-Proxy und Lastenausgleich, der eingehende Anfragen an die entsprechenden Harbor Dienste weiterleitet und einen einzigen Einstiegspunkt für Benutzer bietet.
harbor-portal: die webbasierte Benutzeroberfläche, die es Benutzern ermöglicht, mit der Harbor Registry zu interagieren, Bilder zu verwalten und Einstellungen über eine grafische Oberfläche zu konfigurieren.
harbor-registry: der Container, der als tatsächliches Backend für die Speicherung von Containerbildern dient und die Speicherung sowie den Abruf verwaltet.
harbor-registryctl: ein Kommandozeilenwerkzeug zur Verwaltung der Harbor Registry, das es Benutzern ermöglicht, administrative Aufgaben und Konfigurationen direkt über das Terminal durchzuführen.
harbor-trivy-adapter: ein Container, der den Trivy Schwachstellenscanner mit Harbor integriert und automatisierte Sicherheitsprüfungen von Containerbildern auf Schwachstellen ermöglicht.
harbor-exporter: der Container, der Harbor Metriken in einem Format exportiert, das von Prometheus für Überwachung und Einblick gesammelt werden kann.
harbor-valkey: ein In-Memory-Schlüssel-Wert-Speicher.
Nach der Implementierung können Sie sich über die Web-Benutzeroberfläche anmelden. Nach erfolgreicher Authentifizierung und Autorisierung können Sie mehrere Aspekte des Produkts konfigurieren, zum Beispiel:
Konfigurieren Sie global settings, wie das Festlegen der Registry auf den Nur-Lesen-Modus oder das Einschränken, wer Projekte erstellen kann.
Wählen Sie eine Authentifizierung Methode aus.
Fügen Sie Benutzer im Datenbank-Authentifizierungsmodus hinzu und weisen Sie anderen Benutzern die Administrator-Rolle zu.
Wenden Sie Ressourcen-Quoten auf Projekte an.
Richten Sie die Replikation von Containerbildern zwischen Private Registry Instanzen ein.
1.4 Weitere Informationen #
Verweisen Sie auf die folgenden Quellen, um weitere Details zu erhalten:
Die Harbor Projekt-Homepage befindet sich unter https://goharbor.io/.
Die Harbor Nutzung ist in https://goharbor.io/docs. detailliert.
2 Anforderungen #
Dieser Abschnitt beschreibt die minimalen Plattformvoraussetzungen und die empfohlenen Produktionsgrößen für SUSE Private Registry.
2.1 Voraussetzungen #
Eine Kubernetes Cluster-Version 1.20 oder höher
Helm Version 3.2.0 oder höher
Unterstützung für Persistent Volume (PV) Bereitsteller in Ihrer Infrastruktur
Ein aktives Abonnement für SUSE Private Registry
2.2 Hardware- und Größenempfehlungen #
Verwenden Sie diese Werte als Ausgangspunkt für die Produktion. Passen Sie basierend auf der Aufbewahrungsrichtlinie, Bildwechsel, Scan-Konkurrenz und Replikationstrafik an. ==== Cluster-Baseline
| Bereich | Empfohlener Ausgangspunkt |
|---|---|
Arbeits-Knoten | Mindestens 3 Arbeitsknoten |
Knotentyp | Mindestens 4 vCPU und 16 GiB RAM pro Knoten |
Bevorzugter Knotentyp | 8 vCPU und 32 GiB RAM pro Knoten für höhere Scan- und Push-Konkurrenz |
Diese Empfehlungen stimmen mit den Richtlinien von Rancher für RKE2 Kubernetes überein. Für Details siehe RKE2 Kubernetes Installationsanforderungen.
2.2.1 Persistent Storage-Baseline #
| Komponente | Standard Chart-Größe | Empfohlene Ausgangsgröße |
|---|---|---|
Registrierungsdaten | 5 Gi | 500 Gi bis 1 Ti |
Trivy-Cache und DB | 5 Gi | 20 Gi bis 50 Gi |
Jobservice-Protokolle | 1 Gi | 10 Gi |
Internes PostgreSQL (falls verwendet) | 1 Gi | Mindestens 20 Gi |
Internes Valkey (falls verwendet) | 1 Gi | Mindestens 20 Gi |
Die Standardwerte des Charts sind installationsorientiert und sollten nicht als langfristige Produktionskapazität verwendet werden.
3 Installation über die Rancher Benutzeroberfläche #
Um SUSE Private Registry über die Rancher Benutzeroberfläche zu installieren, müssen Sie die folgenden Anforderungen erfüllen und die untenstehenden Schritte befolgen.
3.1 Welche Anforderungen muss ich erfüllen? #
Eine Umgebung, in der ein laufender, unterstützter Kubernetes Cluster vorhanden ist und in der Rancher bereitgestellt wurde. Siehe Rancher Installationsanforderungen für weitere Details.
SUSE Registry Anmeldeinformationen für ein Konto mit einem SUSE Private Registry Abonnement (ein Benutzername und ein Passwort/Token). Siehe Erhalten von Kubernetes Geheimnissen von SCC für weitere Details.
3.2 Was sind die Schritte zur Installation von SUSE Private Registry über die Rancher Benutzeroberfläche? #
Melden Sie sich bei Rancher an.
Klicken Sie auf das Hamburger-Menü (☰) in der oberen linken Ecke, wählen Sie und klicken Sie auf den Namen Ihres Clusters, normalerweise
local.Wählen Sie im linken Menü › .
Klicken Sie auf die Schaltfläche oben rechts und füllen Sie das sich öffnende Formular aus:
Ziel: Wählen Sie .
Name: Geben Sie einen Namen für das Repository ein, z. B.
SUSE Private Registry.Beschreibung: Fügen Sie optional eine Beschreibung des Repositories hinzu.
OCI Repository Host-URL: Enter `oci://registry.suse.com/private-registry/private-registry-helm`.
Authentifizierung: Ändern Sie zu
Create an HTTP Basic Auth Secretund geben Sie den Benutzernamen und das Passwort der Registry-Anmeldeinformationen ein.
Bestätigen Sie mit .
Klicken Sie auf das Hamburger-Menü (☰) in der oberen linken Ecke und wählen Sie .
Wechseln Sie zu dem Cluster, zu dem Sie das Geheimnis hinzufügen möchten, und klicken Sie auf .
Um zur Geheimnisverwaltung zu navigieren, wählen Sie › und klicken Sie auf in der oberen rechten Ecke.
Wählen Sie das Geheimnis und dann den
private-registryNamespace.Geben Sie
suse-registryals Namen für das Geheimnis ein.Füllen Sie die Felder
usernameundpasswordmit den SUSE Anmeldeinformationen aus, die in Section 3.1, “Welche Anforderungen muss ich erfüllen?” erhalten wurden.
Wählen Sie im Hauptmenü links › .
Geben Sie den Namen des zugewiesenen SUSE Private Registry Repository in das Suchfeld ein. Beispiel:
SUSE Private Registry. Wenn es nicht in der Liste erscheint, klicken Sie .Klicken Sie auf das Chart und sehen Sie sich die
README.mdan.Optional können Sie die Installationswerte anpassen. Entweder klicken Sie durch die Abschnitte auf der linken Seite des
Edit Options-Panels, um alle konfigurierbaren Werte anzuzeigen, oder Sie bearbeiten die Werte direkt in der YAML-Datei des Charts.Klicken Sie oben rechts auf .
4 Installation über die Kommandozeile #
Die folgenden Verfahren beschreiben, wie man SUSE Private Registry (Private Registry) auf einem Kubernetes Cluster bereitstellt.
4.1 Erhalten von Kubernetes Geheimnissen aus dem SUSE Kundenzentrum #
Um die Private Registry Images von SUSE Registry herunterzuladen und zu installieren, benötigen Sie ein Kubernetes Geheimnis mit SUSE Kundenzentrum (SCC) Spiegelungsanmeldeinformationen. Um die Anmeldeinformationen von SCC zu erhalten, befolgen Sie diese Schritte:
Besuchen Sie SUSE Kundenzentrum unter https://scc.suse.com und melden Sie sich an.
Wählen Sie die Organisation mit einem aktiven Private Registry Abonnement aus der linken Seitenleiste aus.
Wählen Sie
Proxiesim oberen Menü aus. Die Anmeldeinformationen werden in der oberen rechten Ecke angezeigt.Um das Passwort zu sehen, klicken Sie auf das 'Auge'-Symbol.
Erstellen Sie eine
password.txtDatei, die das erhaltene Passwort enthält.>head -1 ./password.txt | helm registry login registry.suse.com \ --username <PRIVATE_REGISTRY_USERNAME> --password-stdinErstellen Sie einen Namespace für SUSE Registry.
>kubectl create namespace <PRIVATE_REGISTRY_NAMESPACE>Speichern Sie die von SCC abgerufenen Spiegelungsanmeldeinformationen als Kubernetes Geheimnisse, indem Sie den folgenden Befehl ausführen:
>kubectl create secret docker-registry suse-registry \ --namespace <PRIVATE_REGISTRY_NAMESPACE> \ --docker-server=registry.suse.com \ --docker-username=<PRIVATE_REGISTRY_USERNAME> \ --docker-password=$(head -1 ./password.txt)Optional: Um TLS-verschlüsselte Kommunikation zu verwenden, erstellen Sie ein TLS-Geheimnis aus Ihren privaten Schlüssel- und Zertifikatsdateien.
>kubectl create secret tls suse-registry-tls \ --namespace <PRIVATE_REGISTRY_NAMESPACE> \ --cert=<CERTIFICATE>.pem \ --key=<PRIVATE_KEY>.pem
4.2 Installation und Ausführung von Private Registry mit Helm #
Das folgende Verfahren beschreibt, wie man Private Registry mit Helm installiert.
Ersetzen Sie <RELEASE_NAME> durch Ihren benutzerdefinierten Release-Namen für die Implementierung des Helm Charts.
Melden Sie sich bei SUSE Registry mit den erhaltenen SCC Spiegelungsanmeldeinformationen an.
>head -1 ./password.txt | helm registry login registry.suse.com \ --username <SUSE_REGISTRY_USERNAME> --password-stdinInstallieren Sie die neueste Version des Private Registry Helm Charts.
>helm install <RELEASE_NAME> \ oci://registry.suse.com/private-registry/private-registry-helm \ --namespace <PRIVATE_REGISTRY_NAMESPACE>Wenn Sie das Private Registry Helm Chart installieren, wird die folgende Ausgabe angezeigt:
NOTES: CHART VERSION: 1.1.6 It may take several minutes for the SUSE Private Registry 1.1.2 deployment to complete. Once the deployment has finished, you will be able to open the SUSE Private Registry portal at https://core.harbor.domain To get the admin credentials, copy and run the following commands: echo Username: "admin" echo Password: $(kubectl get secret --namespace <PRIVATE_REGISTRY_NAMESPACE>-harbor-core <RELEASE_NAME> -o jsonpath="{.data.HARBOR_ADMIN_PASSWORD}" | base64 -d)Mit Helm Version 4 können Sie ein Digest verwenden, um das zu installierende Chart anzugeben:
>helm install <RELEASE_NAME> \ oci://registry.suse.com/private-registry/private-registry-helm@sha256:<DIAGEST_OF_CHART_TO_INSTALL> \ --namespace <PRIVATE_REGISTRY_NAMESPACE>
Um das Passwort für den Administratorbenutzer zu erhalten, können Sie auch den folgenden Befehl ausführen:
>kubectl get secret \ --namespace <PRIVATE_REGISTRY_NAMESPACE> \ --harbor-core <RELEASE_NAME> \ -o jsonpath="{.data.HARBOR_ADMIN_PASSWORD}" | base64 -d; echoEs ist möglich, den kstatus-Watcher mit dem Flag '--wait=watcher' zu verwenden, um sicherzustellen, dass alle Objekte bereit sind, um die Installation abzuschließen. Die Verwendung des Watchers kann dazu führen, dass der Befehl länger dauert.
Um die Standardinstallation mit benutzerdefinierten Werten aus der suse_registry_override.yaml Datei zu überschreiben, verweisen Sie auf Appendix A, Überschreiben des SUSE Private Registry Helm Charts.
Der Befehl beginnt damit, mehrere verwandte Container bereitzustellen, und dies kann mehrere Minuten dauern. Er druckt auch eine Nachricht mit der URL zum Private Registry Webportal und Befehlen, um die Administratoranmeldeinformationen zu erhalten.
4.3 Upgrade von Private Registry #
Um das Release des Helm Charts auf eine bestimmte neuere Version zu upgraden, führen Sie den folgenden Befehl aus:
>helm upgrade <RELEASE_NAME> \
oci://registry.suse.com/private-registry/private-registry-helm \
--version <NEW_VERSION_OF_HELM_CHART> \
--namespace <PRIVATE_REGISTRY_NAMESPACE> \Das Digest ist nur mit Helm 4 möglich.
>helm update <RELEASE_NAME> \
oci://registry.suse.com/private-registry/private-registry-helm@sha256:<DIAGEST_OF_CHART_TO_INSTALL> \
--namespace <PRIVATE_REGISTRY_NAMESPACE> \5 Hochverfügbarkeit setup #
Sie können Helm verwenden, um das hochverfügbare (HA) Private Registry auf einem Kubernetes Cluster bereitzustellen. Das HA-Setup stellt sicher, dass Benutzer keine Unterbrechungen des Dienstes erleben, wenn einer der Knoten, auf dem Private Registry läuft, nicht verfügbar wird.
5.1 Architektur des HA-Setup #
Die meisten der Private Registry Komponenten sind jetzt zustandslos. Daher können wir sie skalieren, indem wir die Pod-Replikate erhöhen, um sicherzustellen, dass sie auf mehreren Arbeitsknoten laufen. Kubernetes Dienste gewährleisten die Konnektivität zwischen Pods.
Für den Speicher sollten Benutzer ein HA PostgreSQL und Valkey oder Redis Cluster für die Anwendungsdaten bereitstellen, zusammen mit PVCs oder Objektspeicher zum Speichern von Bildern und Charts.
image::private-registry-ha.png[Private Registry HA-Setup, width=100%]. Private Registry HA-Setup Kubernetes Cluster mit Ingress in HA-Setup unter Verwendung von HA PostgreSQL und HA Valkey.
5.2 Voraussetzungen #
Ein Kubernetes Cluster Version 1.20 oder höher
Helm Version 3.2.0 oder höher
HA Ingress Controller (Private Registry verwaltet nicht den externen Endpunkt)
HA PostgreSQL 9.6+ (Private Registry verwaltet nicht die Implementierung der HA-Datenbank)
HA Valkey oder Redis (Private Registry verwaltet nicht die Implementierung von HA Valkey oder Redis)
Persistent Volume Claim (PVC), der über Knoten oder externen Objektspeicher geteilt werden kann
Ein aktives Abonnement für SUSE Private Registry
5.3 Bereitstellung von Private Registry mit HA #
Laden Sie das Private Registry Helm Chart herunter.
$ helm pull oci://registry.suse.com/private-registry/private-registry-helm --untar
Update the deployment parameters to match your requirements. Refer to Appendix B, Beispiel eines Private Registry HA setup Helm Diagramms for an example Helm chart for Private Registry HA setup. Refer to Appendix A, Überschreiben des SUSE Private Registry Helm Charts for a complete list of values to specify or override.
Install the Private Registry Helm chart. Replace
<RELEASE_NAME>with your custom release name for the Helm chart deployment.$ helm install <RELEASE_NAME> private-registry-helm/
6 Konfigurieren Sie Rancher als OIDC-Identitätsanbieter #
Dieser Leitfaden erklärt, wie Sie Rancher so konfigurieren, dass es als OIDC-Identitätsanbieter fungiert, damit Benutzer sich mit ihren SUSE Private Registry-Anmeldeinformationen in externe Anwendungen wie Rancher authentifizieren können.
6.1 Schritt 1: Aktivieren Sie das Feature-Flag oidc-provider #
Melden Sie sich als Administrator in der Rancher GUI an.
Klicken Sie auf das Hamburger-Menü (☰) oben links und gehen Sie zu › .
Suchen Sie das
oidc-provider-Flag, klicken Sie auf das Weitere Aktionen-Symbol (⋮) und klicken Sie auf Aktivieren.
6.2 2. Schritt: Erstellen Sie eine OIDCClient-Ressource #
Rancher verwendet eine OIDCClient Custom Resource, um Downstream-Anwendungen zu registrieren.
Erstellen Sie eine Datei mit dem Dateinamen
rancher-oidc-client.yamlmit folgendem Inhalt:apiVersion: management.cattle.io/v3 kind: OIDCClient metadata: name: spr-client spec: tokenExpirationSeconds: 600 refreshTokenExpirationSeconds: 3600 redirectURIs: # Replace this with the actual callback URL of your SUSE private registry instance - "https://<SUSE_PRIVATE_REGISTR_URL>/c/oidc/callback"Wenden Sie die Datei auf den Cluster an, in dem Rancher ausgeführt wird:
>kubectl apply -f rancher-oidc-client.yaml
6.3 Schritt 3: Rufen Sie die Client-ID und das Client-Geheimnis ab. #
Sobald die Ressource erstellt ist, füllt Rancher automatisch die clientID aus und stellt ein Kubernetes Client-Geheimnis bereit, das die clientSecret enthält.
Holen Sie sich die generierte Client-ID:
>kubectl get oidcclient spr-client -o jsonpath="{.status.clientID}"Holen Sie sich das Client-Geheimnis. Denken Sie daran,
<YOUR_CLIENT_ID>durch die im vorherigen Schritt abgerufene ID zu ersetzen:>kubectl get secret <YOUR_CLIENT_ID> -n cattle-oidc-client-secrets -o jsonpath="{.data.client-secret-1}" | base64 -d
6.4 4. Schritt: Konfigurieren Sie SUSE Private Registry #
Sie können SUSE Private Registry so konfigurieren, dass es Rancher als OIDC-Identitätsanbieter verwendet, indem Sie die Werte über Helm übergeben.
Verwenden Sie den core.configureUserSettings-Block in Ihrer values-oidc.yaml-Konfiguration.
Das folgende ist ein Beispielblock, der Ihren Rancher-Endpunkt und die oben abgerufenen Anmeldeinformationen verwendet.
Ersetzen Sie die Werte von <YOUR_CLIENT_ID> und <YOUR_CLIENT_SECRET>.
core:
configureUserSettings: |
{
"auth_mode": "oidc_auth",
"oidc_name": "Rancher",
"oidc_endpoint": "<RANCHER_URL>/oidc",
"oidc_client_id": "<YOUR_CLIENT_ID>",
"oidc_client_secret": "<YOUR_CLIENT_SECRET>",
"oidc_scope": "openid,profile,offline_access",
"oidc_verify_cert": false,
"oidc_auto_onboard": true,
"oidc_user_claim": "preferred_username",
"oidc_groups_claim": "groups",
"oidc_admin_group": "spr-admins"
}Stellen Sie sicher, dass oidc_verify_cert auf false gesetzt ist, wenn Ihre Rancher-Instanz selbstsignierte Zertifikate verwendet.
Durch die Angabe von oidc_admin_group erhält jeder Rancher-Benutzer, der zur spr-admins-Gruppe gehört, automatisch Systemadministratorrechte in SUSE Private Registry.
7 Häufig gestellte Fragen #
7.1 Produktübersicht und Differenzierungsmerkmale #
- Welche Art von Abonnement benötigen Kunden für SUSE Private Registry?
Es ist in der Rancher Suite enthalten und wird als Add-on für Rancher Prime angeboten.
Die Preise für das Add-on sind die gleichen wie für andere Add-ons.
- Was sind die Differenzierungsmerkmale von Harbor (aus der Anwendungssammlung oder von Upstream)?
Verwenden Sie SUSE Private Registry, wenn Sie benötigen:
Level 3 (L3) Support für Produktprobleme.
Einen vorhersehbaren Veröffentlichungszyklus.
Gepatchte Images für bekannte Schwachstellen. Upstream Harbor Images von Docker Hub enthalten oft zahlreiche nicht gepatchte Schwachstellen.
Im Laufe der Zeit wird SUSE auch sofort einsatzbereite Integrationen mit Rancher hinzufügen und die Funktionsanfragen von Kunden priorisieren.
- Müssen Kunden die gleiche Anzahl an Add-on SUSE Private Registry Abonnements wie Rancher Prime Abonnements kaufen?
Ja, genau wie bei anderen Add-ons wie SUSE Security. Ein zusätzlicher Vorteil des SUSE Private Registry Abonnementmodells ist, dass es Kunden ermöglicht, so viele Implementierungen durchzuführen, wie sie benötigen.
7.2 Beziehung zu Upstream Harbor #
- Wie stimmt der Veröffentlichungszyklus mit Upstream Harbor überein?
Der Veröffentlichungszyklus von SUSE Private Registry ist unabhängig vom Veröffentlichungszyklus von Upstream Harbor.
Bei der Veröffentlichung neuer Versionen von SUSE Private Registry strebt SUSE an, die neueste Version des Upstream Harbor Projekts einzuschließen, die den Qualitäts- und Wartungsanforderungen von SUSE entspricht.
- Werden Sie Migrationsüberlegungen für Kunden veröffentlichen, die Harbor aus anderen Quellen betreiben?
Nicht zu diesem Zeitpunkt.
7.3 Implementierung und Installation #
- Unterstützen Sie die Installation von SUSE Private Registry über docker-compose?
Nein. Sie müssen SUSE Private Registry mit dem Helm Chart installieren und konfigurieren. Dieses Chart wird auch für das fortlaufende Management (Betrieb ab Tag 2) verwendet und kann in GitOps-Workflows integriert werden.
- Empfehlen Sie Bereitstellung im lokalen (Rancher Manager) Cluster?
Nein. SUSE empfiehlt, SUSE Private Registry in einem Downstream-Cluster bereitzustellen. Dies macht das Registry für andere Downstream-Cluster zugänglich, die Images konsumieren müssen.
- Was sind die besten Praktiken für die Bereitstellung in einer Hochverfügbarkeitsumgebung (HA)?
Für HA sollten Sie SUSE Private Registry nicht im Rancher Management-Cluster bereitstellen, um Ressourcenkonflikte zu vermeiden.
Sie können SUSE Private Registry in einem dedizierten Cluster oder in einem oder mehreren Ihrer Anwendungscluster bereitstellen.
Für Anleitungen siehe Chapter 5, Hochverfügbarkeit setup. Bitte beachten Sie, dass Sie Ihre eigenen HA-Komponenten für die Postgres-Datenbank, den Valkey- oder Redis-Server und den Ingress Controller bereitstellen müssen. Diese Komponenten werden nicht durch das SUSE Private Registry Helm Chart bereitgestellt und werden von SUSE nicht unterstützt.
- Wird das SUSE Private Registry Helm Chart irgendwann zur Anwendungssammlung hinzugefügt?
Ja, SUSE plant, das Chart in Zukunft dort zu veröffentlichen.
- Liefern Sie einen Kubernetes-Operator aus?
SUSE Private Registry wird nicht mit einem dedizierten Operator ausgeliefert. Es wird mit seinem Helm Chart installiert und verwaltet, das in GitOps integriert werden kann. SUSE bewertet weiterhin das Management auf Basis von Operatoren für zukünftige Versionen.
7.4 Sicherheit, Scannen und Signieren #
- Integrieren Sie ein Signierungswerkzeug in SUSE Private Registry?
SUSE Private Registry signiert Bilder nicht selbst, kann jedoch Open Container Initiative (OCI)-kompatible Signaturen speichern, verteilen und verifizieren.
Ein weit verbreitetes Tool ist
cosign, das Bilder signieren und die Signaturen in SUSE Private Registry speichern kann.cosign-Signaturen, die an Bilder angehängt sind, sind im SUSE Private Registry-Portal einsehbar und herunterladbar.- Ist es möglich, Bilder mit Notary oder Cosign zur Genehmigung während des Bereitstellungsprozesses zu signieren?
SUSE Private Registry kann
cosign-Signaturen speichern, verteilen und verifizieren.SUSE Private Registry selbst signiert keine Bilder. Sie müssen Bilder während ihres Erstellungsprozesses signieren und dann die Signatur zusammen mit dem Bild im Registry hochladen.
Notary ist nicht in SUSE Private Registry enthalten oder wird nicht unterstützt.
- Werden Bilder nur mit Trivy auf Common Vulnerabilities and Exposures (CVEs) gescannt, oder kann auch SUSE Security (NeuVector) verwendet werden?
Bilder werden mit Trivy gescannt, das sofort einsatzbereit ist. SUSE Security kann zusätzlich zu oder als Ersatz für Trivy hinzugefügt werden.
- Ist es möglich, ClamAV oder ähnliche Malware-Scans durchzuführen?
Standardmäßig scannt SUSE Private Registry Bilder mit Trivy. Sie können auch SUSE Security (NeuVector) als Scanner konfigurieren.
- Wird im Pull-Through-Cache-Szenario das Schwachstellenkriterien durchgesetzt?
Ja, aber mit einer bekannten Einschränkung. Aufgrund von Upstream Harbor Problemen werden Schwachstellenkriterien beim ersten Abruf eines Bildes nicht durchgesetzt, da der Scan noch nicht abgeschlossen ist.
Für eine vollständige Abdeckung kombinieren Sie SUSE Private Registry mit SUSE Security Admission-Kontrollen.
- Sind die Containerbilder von SUSE Private Registry gehärtet?
Ja. Die Containerbilder für SUSE Private Registry sind gehärtet. Sie basieren auf SUSE Linux Enterprise Base Container Images (SLE BCI) und werden im gleichen unternehmensgerechten SUSE Build Service erstellt, der auch für SUSE Linux Enterprise verwendet wird. Dies gewährleistet eine sichere Lieferkette. Die Images sind ebenfalls signiert, und SUSE veröffentlicht ihre Supply-chain Levels for Software Artifacts (SLSA) Attestierungen.
- Sind die Images von SUSE Private Registry signiert? Wie?
Die Images sind mit
cosignsigniert. Sie können diese überprüfen, indem Sie den im PEM-Format veröffentlichten Signaturschlüssel unter KB 000021411 speichern.Führen Sie dann beispielsweise Folgendes aus:
cosign verify --key container-key.pem registry.suse.com/private-registry/harbor-portal:latest
7.5 Replikation und Synchronisierung #
- Gibt es einen Plan für ein Plugin zur Synchronisierung mit SUSE Registry und SUSE Anwendungssammlung?
Ja, eine solche Funktion ist geplant.
- Bietet SUSE Private Registry eine Multi-Site-Replikation an?
Ja. SUSE Private Registry unterstützt die Multi-Site-, richtlinienbasierte Bildreplikation (Pull und Push). Sie können Images über mehrere SUSE Private Registry Implementierungen hinweg synchronisieren, während jede Registry unabhängig bleibt.
7.6 Funktionen und Integration mit Rancher #
- Gibt es einen Plan, das Registry innerhalb von Rancher mit einer Erweiterung zu integrieren?
Ja. SUSE plant eine tiefere Integration mit Rancher Prime und anderen Angeboten. Zukünftige Verbesserungen, die in Betracht gezogen werden, umfassen die Integration von Single Sign-On (SSO), vereinfachtes setup für SUSE Sicherheit Scanner und das Spiegeln von Anwendungssammlungen, Überwachung mit SUSE Einblick und eine Rancher UI-Erweiterung.
- Wird SUSE das Registry zum Schulungskatalog hinzufügen?
Das ist noch nicht geplant. Wenn Sie an Schulungsmaterial interessiert sind, kontaktieren Sie SUSE, um Möglichkeiten mit dem Schulungsteam zu besprechen.
7.7 Support und Dokumentation #
- Gibt es eine Support-Richtlinie für SUSE Private Registry?
Ja. Die Support-Richtlinie von SUSE Private Registry ist die gleiche wie die von jedem anderen Rancher Prime Add-on.
- Wenn die SUSE Private Registry Dokumentation Informationen vermissen lässt, kann ich dann auf die offizielle Harbor Dokumentation verweisen?
Ja. Da SUSE Private Registry auf Harbor basiert, ist die offizielle Harbor Dokumentation eine nützliche Ressource. Für Funktionen, die spezifisch für die SUSE-Version sind, verweisen Sie auf die SUSE Private Registry Dokumentation.
Die Release notes geben an, welche Upstream-Harbor-Version Ihrer SUSE Private Registry-Version entspricht.
8 Fehlerbehebung #
Dieser Abschnitt bietet Lösungen für Probleme, die Sie beim Bereitstellen oder Verwenden von SUSE Private Registry haben könnten.
- Ich erhalte den
401 unauthorized-Fehler, wenn ich versuche, SUSE Private Registry zu installieren. Die vollständige Version der Fehlermeldung sieht wie folgt aus:
Error: INSTALLATION FAILED: GET "https://registry.suse.com/v2/private-registry/private-registry-helm/tags/list": response status code 401: unauthorized: authentication required: [map[Action:pull Class: Name:private-registry/private-registry-helm Type:repository]]
Um SUSE Private Registry zu installieren und zu verwenden, benötigen Sie Folgendes:
Ein qualifiziertes Abonnement, das dieses Produkt umfasst, wie ein Rancher Suite Abonnement oder ein SUSE Private Registry Add-on-Abonnement. Wenn Sie kein qualifiziertes Abonnement haben, wenden Sie sich an Ihren SUSE-Vertreter.
Melden Sie sich bei SUSE Registry mit Helm unter Verwendung der SCC-Spiegelungsanmeldeinformationen der SCC-Organisation an, die das Abonnement hält. Weitere Informationen finden Sie in Section 4.1, “Erhalten von Kubernetes Geheimnissen aus dem SUSE Kundenzentrum”.
A Überschreiben des SUSE Private Registry Helm Charts #
Das SUSE Private Registry (Private Registry) Helm Chart wird mit Standardwerten geliefert. Sie können die Installation des Helm Charts auf eine der folgenden Arten anpassen:
Fügen Sie spezifische Parameter zu den
--setFlags in derhelm installBefehlszeile hinzu, zum Beispiel:$ helm install <RELEASE_NAME> \ oci://registry.suse.com/private-registry/private-registry-helm \ --namespace <PRIVATE_REGISTRY_NAMESPACE> \ --set harborAdminPassword=<MY_PASSWORD> \ --set externalURL=https://<PRIVATE_REGISTRY_FQDN> \ --set expose.ingress.hosts.core=<PRIVATE_REGISTRY_FQDN>
Create a SUSE custom
suse_registry_override.yamlfile and pass it to the--fflag, for example:$ helm install <RELEASE_NAME> \ oci://registry.suse.com/private-registry/private-registry-helm \ --namespace <PRIVATE_REGISTRY_NAMESPACE> -f suse_registry_override.yaml
A1 Beispiele für SUSE Registry Helm Override-Dateien #
expose: type: ingress 1 ingress: hosts: core: <PRIVATE_REGISTRY_FQDN> 2 externalURL: https://<PRIVATE_REGISTRY_FQDN> 3 harborAdminPassword: "<MY_PASSWORD>" 4 datenbank: intern: passwort: "<MY_PASSWORD_POSTGRESQL>" redis: intern: passwort: "<MY_PASSWORD_REDIS>"
Wie SUSE Registry exponiert wird. Kann | |
Hostname für die interne Netzwerkkonfiguration des Kubernetes. | |
URL, unter der die SUSE Registry Anwendung läuft. Es wird verwendet, um Links in der Benutzeroberfläche, Weiterleitungen und auch für API-Antworten zu generieren. | |
Das Administratorkennwort für die Anwendung. |
loadBalancer #expose: type: loadBalancer 1 tls: enabled: true certSource: secret 2 secret: secretName: <SECRET_NAME> auto: commonName: <PRIVATE_REGISTRY_FQDN> 3 externalURL: https://<PRIVATE_REGISTRY_FQDN> 4 harborAdminPassword: "<MY_PASSWORD>" 5 datenbank: intern: passwort: "<MY_PASSWORD_POSTGRESQL>" redis: intern: passwort: "<MY_PASSWORD_REDIS>"
Wie SUSE Registry exponiert wird. Kann | |
Kann | |
Bei Verwendung der TLS-Verschlüsselung muss dieses Feld mit dem | |
URL, unter der die SUSE Registry Anwendung läuft. Es wird verwendet, um Links in der Benutzeroberfläche, Weiterleitungen und auch für API-Antworten zu generieren. | |
Das Administratorkennwort für die Anwendung. |
A2 Überschreiben der Helm Chart-Parameter und -Werte #
Die folgenden Tabellen listen alle Parameter mit Beschreibungen auf, die Sie verwenden können, um die Standardinstallationswerte zu überschreiben.
global.imageRegistrySetzt ein globales Override für die Container-Image-Registry, die für alle Images verwendet wird.
global.imagePullSecretsSetzt globale Pull-Secrets für den Zugriff auf die Container-Image-Registry.
harborAdminPasswordSetzt das anfängliche Passwort für den Harbor Administrator. Ändern Sie es nach der Bereitstellung im Portal. Der Standardwert ist
Harbor12345.externalURLGibt die externe URL für den
harbor-coreDienst an. Der Standardwert isthttps://core.harbor.domain.existingSecretAdminPasswordKeySetzt den Schlüsselnamen im Geheimnis, das das Passwort des Harbor Administrators enthält. Der Standardwert ist
HARBOR_ADMIN_PASSWORD.imagePullSecretsSetzt die
imagePullSecretsNamen für alle Bereitstellungen.updateStrategy.typeSetzt die Aktualisierungsstrategie für Bereitstellungen mit persistenten Volumes. Akzeptiert
RollingUpdateoderRecreate. Verwenden SieRecreate, wenn RWM für Volumes nicht unterstützt wird. Der Standardwert istRollingUpdate.logLevelSetzt das Protokollniveau für Harbor Dienste. Akzeptiert
fatal,error,warn,info,debugodertrace. Der Standardwert istdebug.enableMigratehelmHookFührt die Datenbank-Migrationsaufgabe über den Helm Hook aus. Wenn
true, trennt die Migrationsaufgabe vonharbor-core. Der Standardwert istfalse.caSecretNameGibt den geheimen Namen an, der den
ca.crt-Schlüssel enthält.
proxy.httpProxyGibt die URL des HTTP-Proxy-Servers an. Der Standardwert ist
"".proxy.httpsProxyGibt die URL des HTTPS-Proxy-Servers an. Der Standardwert ist
"".proxy.noProxyLegt URLs fest, die die Proxy-Konfiguration umgehen. Der Standardwert ist
127.0.0.1,localhost,.local,.internal.proxy.componentsLegt Komponenten fest, die die Proxy-Konfiguration verwenden. Der Standardwert ist
["core","jobservice","trivy"].
expose.typeGibt den Typ der Dienstfreigabe an:
ingress,clusterIP,nodePortoderloadBalancer. Der Standardwert istingress.expose.tls.enabledAktiviert TLS. Der Standardwert ist
true.expose.tls.certSourceLegt die Quelle des TLS-Zertifikats als
auto,secretodernonefest. Der Standardwert istauto.expose.tls.auto.commonNameLegt den allgemeinen Namen des Zertifikats fest, wenn der Typ nicht
ingressist.expose.tls.secret.secretNameGibt den Namen des Geheimnisses an, das
tls.crt(Zertifikat) undtls.key(privater Schlüssel) enthält.expose.ingress.hosts.coreLegt den Harbor-Kernel-Service-Host in der Ingress-Regel fest. Der Standardwert ist
core.harbor.domain.expose.ingress.controllerLegt den Ingress-Controller-Typ fest. Unterstützt
default,gce,alb,f5-bigipundncp. Der Standardwert istdefault.expose.ingress.kubeVersionOverrideÜberschreibt die Kubernetes-Version für Ingress-Templating.
expose.ingress.annotationsLegt die Ingress-Annotationen fest.
expose.ingress.labelsLegt die Ingress-spezifischen Labels fest. Der Standardwert ist
{}.expose.clusterIP.nameLegt den Namen des ClusterIP-Dienstes fest. Der Standardwert ist
harbor.expose.clusterIP.annotationsLegt die Annotationen des ClusterIP-Dienstes fest. Der Standardwert ist
{}.expose.clusterIP.ports.httpPortLegt den HTTP-Dienstport fest. Der Standardwert ist
80.expose.clusterIP.ports.httpsPortLegt den HTTPS-Dienstport fest. Der Standardwert ist
443.expose.clusterIP.labelsLegt ClusterIP-spezifische Labels fest. Der Standardwert ist
{}.expose.nodePort.nameLegt den NodePort-Dienstnamen fest. Der Standardwert ist
harbor.expose.nodePort.ports.http.portLegt den HTTP-Dienstport fest. Der Standardwert ist
80.expose.nodePort.ports.http.nodePortLegt den HTTP-Nodeport fest. Der Standardwert ist
30002.expose.nodePort.ports.https.portLegt den HTTPS-Dienstport fest. Der Standardwert ist
443.expose.nodePort.ports.https.nodePortLegt den HTTPS-Nodeport fest. Der Standardwert ist
30003.expose.nodePort.annotationsLegt die Annotationen von NodePort fest.
expose.nodePort.labelsLegt NodePort-spezifische Labels fest. Der Standardwert ist
{}.expose.loadBalancer.nameLegt den Dienstnamen fest. Der Standardwert ist
harbor.expose.loadBalancer.IPLegt die IP des LoadBalancers fest, wenn die IP-Zuweisung unterstützt wird. Der Standardwert ist
"".expose.loadBalancer.ports.httpPortLegt den HTTP-Dienstport fest. Der Standardwert ist
80.expose.loadBalancer.ports.httpsPortLegt den HTTPS-Dienstport fest. Der Standardwert ist
30002.expose.loadBalancer.annotationsLegt die Anmerkungen des LoadBalancers fest. Der Standardwert ist
{}.expose.loadBalancer.labelsLegt LoadBalancer-spezifische Labels fest. Der Standardwert ist
{}.expose.loadBalancer.sourceRangesSpezifiziert IP-Adressbereiche für loadBalancerSourceRanges. Der Standardwert ist
[].
persistence.enabledAktiviert oder deaktiviert die Datenpersistenz. Der Standardwert ist
true.persistence.resourcePolicykeepverhindert die Entfernung von PVCs während einer Helm Löschoperation. Ein leerer Wert löscht PVCs nach der Chart-Löschung. Der Standardwert istkeep.persistence.persistentVolumeClaim.registry.existingClaimDer vorhandene PVC, der manuell erstellt werden muss, bevor die Bindung erfolgt. Erfordert eine subPath-Spezifikation, wenn der PVC mit anderen Komponenten geteilt wird.
persistence.persistentVolumeClaim.registry.storageClassDer
storageClass, der das Volume bereitstellt.persistence.persistentVolumeClaim.registry.subPathDer Unterpfad im Volume.
persistence.persistentVolumeClaim.registry.accessModeDer Zugriffsmodus des Volumes. Der Standardwert ist
ReadWriteOnce.persistence.persistentVolumeClaim.registry.sizeDie Größe des Volumes. Der Standardwert ist
5Gi.persistence.persistentVolumeClaim.registry.annotationsDie Annotationen des Volumes.
persistence.persistentVolumeClaim.jobservice.jobLog.existingClaimDer vorhandene PVC, der manuell erstellt werden muss, bevor die Bindung erfolgt. Erfordert eine subPath-Spezifikation, wenn der PVC mit anderen Komponenten geteilt wird.
persistence.persistentVolumeClaim.jobservice.jobLog.storageClassDer
storageClass, der das Volume bereitstellt.persistence.persistentVolumeClaim.jobservice.jobLog.subPathDer Unterpfad im Volume.
persistence.persistentVolumeClaim.jobservice.jobLog.accessModeDer Zugriffsmodus des Volumes. Der Standardwert ist
ReadWriteOnce.persistence.persistentVolumeClaim.jobservice.jobLog.sizeDie Größe des Volumes. Der Standardwert ist
1Gi.persistence.persistentVolumeClaim.jobservice.jobLog.annotationsDie Annotationen des Volumes.
persistence.persistentVolumeClaim.database.existingClaimDer vorhandene PVC, der manuell erstellt werden muss, bevor die Bindung erfolgt. Erfordert eine subPath-Spezifikation, wenn der PVC mit anderen Komponenten geteilt wird.
persistence.persistentVolumeClaim.database.storageClassDer
storageClass, der das Volume bereitstellt.persistence.persistentVolumeClaim.database.subPathDer Unterpfad im Volume. Wird ignoriert, wenn eine externe Datenbank verwendet wird.
persistence.persistentVolumeClaim.database.accessModeDer Zugriffsmodus des Volumes. Wird ignoriert, wenn eine externe Datenbank verwendet wird. Der Standardwert ist
ReadWriteOnce.persistence.persistentVolumeClaim.database.sizeDie Größe des Volumes. Wird ignoriert, wenn eine externe Datenbank verwendet wird. Der Standardwert ist
1Gi.persistence.persistentVolumeClaim.database.annotationsDie Annotationen des Volumes.
persistence.persistentVolumeClaim.redis.existingClaimDer vorhandene PVC, der manuell erstellt werden muss, bevor die Bindung erfolgt. Erfordert eine subPath-Spezifikation, wenn der PVC mit anderen Komponenten geteilt wird.
persistence.persistentVolumeClaim.redis.storageClassDer
storageClass, der das Volume bereitstellt. Verwendet die Standard-StorageClass, wenn nicht angegeben.persistence.persistentVolumeClaim.redis.subPathDer Unterpfad im Volume. Wird ignoriert, wenn ein externes Valkey verwendet wird.
persistence.persistentVolumeClaim.redis.accessModeDer Zugriffsmodus des Volumes. Wird ignoriert, wenn ein externes Valkey verwendet wird. Der Standardwert ist
ReadWriteOnce.persistence.persistentVolumeClaim.redis.sizeDie Größe des Volumes. Wird ignoriert, wenn ein externes Valkey verwendet wird. Der Standardwert ist
1Gi.persistence.persistentVolumeClaim.redis.annotationsDie Annotationen des Volumes.
persistence.persistentVolumeClaim.trivy.existingClaimDer vorhandene PVC, der manuell erstellt werden muss, bevor die Bindung erfolgt. Erfordert eine subPath-Spezifikation, wenn der PVC mit anderen Komponenten geteilt wird.
persistence.persistentVolumeClaim.trivy.storageClassDer
storageClass, der das Volume bereitstellt. Verwendet die Standard-StorageClass, wenn nicht angegeben.persistence.persistentVolumeClaim.trivy.subPathDer Unterpfad im Volume.
persistence.persistentVolumeClaim.trivy.accessModeDer Zugriffsmodus des Volumes. Der Standardwert ist
ReadWriteOnce.persistence.persistentVolumeClaim.trivy.sizeDie Größe des Volumes. Der Standardwert ist
1Gi.persistence.persistentVolumeClaim.trivy.annotationsDie Annotationen des Volumes.
persistence.imageChartStorage.disableredirectSteuert das Redirect-Management von Content-Backends. Auf true setzen, um Redirects für nicht unterstützte Backends zu deaktivieren. Der Standardwert ist
false.persistence.imageChartStorage.caBundleSecretNameDer Name des Secrets, das das CA-Bundle für selbstsignierte Speicherzertifikate enthält.
persistence.imageChartStorage.typeDer Speichertyp für Bilder und Diagramme:
filesystem,azure,gcs,s3,swiftodeross. Der Standardwert istfilesystem.persistence.imageChartStorage.gcs.existingSecretDer Name des vorhandenen Secrets, das den JSON-Schlüssel des GCS-Dienstkontos enthält. Der Schlüssel muss
gcs-key.jsonsein. Der Standardwert ist"".persistence.imageChartStorage.gcs.useWorkloadIdentityAktiviert die Nutzung der Workload-Identität in einem GKE-Cluster. Der Standardwert ist
false.
nginx.image.repositoryDas Image-Repository für Die standardmäßige nginx-. Der Standardwert ist
private-registry/harbor-nginx.nginx.image.tagDer Image-Tag für Die standardmäßige nginx-.
nginx.replicasDie Anzahl der auszuführenden Replikate. Der Standardwert ist
1.nginx.revisionHistoryLimitDie maximale Anzahl alter
ReplicaSetRevisionen, die beibehalten werden sollen. Der Standardwert ist10.nginx.resourcesDie Rechenressourcen, die für den Container zugewiesen sind. Der Standardwert ist
undefined.nginx.automountServiceAccountTokenSteuert die automatische Montage des Tokens des Dienstkontos. Der Standardwert ist
false.nginx.nodeSelectorDie Knoten-Labels, die für die Pod-Zuweisung verwendet werden. Der Standardwert ist
{}.nginx.tolerationsDie Toleranzen für die Pod-Zuweisung. Der Standardwert ist
[].nginx.affinityDie Regeln für die Affinität von Knoten oder Pods. Der Standardwert ist
{}.nginx.topologySpreadConstraintsDie Regeln für die Verteilung von Pods über Ausfallbereiche wie Regionen oder Verfügbarkeitszonen. Der Standardwert ist
[].nginx.podAnnotationsDie Annotationen, die dem Die standardmäßige nginx- Pod hinzugefügt wurden. Der Standardwert ist
{}.
portal.image.repositoryRepository-Standort für das Portalbild. Der Standardwert ist
private-registry/harbor-portal.portal.image.tagTag für das Portalbild. Der Standardwert ist
3.11.portal.replicasAnzahl der zu erstellenden Replikate. Der Standardwert ist
1.portal.revisionHistoryLimitMaximale Anzahl alter
ReplicaSetRevisionen, die beibehalten werden sollen. Der Standardwert ist10.portal.resourcesRessourcen, die dem Container zugewiesen sind. Der Standardwert ist
undefined.portal.automountServiceAccountTokenSteuert die automatische Montage des Tokens des Dienstkontos. Der Standardwert ist
false.portal.nodeSelectorKnoten-Labels, die für die Pod-Zuweisung verwendet werden. Der Standardwert ist
{}.portal.tolerationsToleranzen, die für die Pod-Zuweisung verwendet werden. Der Standardwert ist
[].portal.affinityEinstellungen zur Affinität von Knoten und Pods. Der Standardwert ist
{}.portal.topologySpreadConstraintsDefiniert die Verteilung von Pods über Ausfallbereiche wie Regionen oder Verfügbarkeitszonen. Der Standardwert ist
[].portal.podAnnotationsAnnotationen, die dem Portal-Pod hinzugefügt wurden. Der Standardwert ist
{}.portal.serviceAnnotationsAnnotationen, die dem Portal-Dienst hinzugefügt wurden. Der Standardwert ist
{}.portal.priorityClassNamePrioritätsklassenname für die Pod-Ausführung.
portal.initContainersInit-Container, die vor dem Start des Controller-Containers ausgeführt werden sollen. Der Standardwert ist
[].
core.image.repositoryDas Repository für das Harbor Kernel-Image. Der Standardwert ist
private-registry/harbor-core.core.image.tagDas Tag für das Harbor Kernel-Image. Der Standardwert ist
2.11.core.replicasDie Anzahl der Replikate. Der Standardwert ist
1.core.revisionHistoryLimitDas Limit der Revisionshistorie. Der Standardwert ist
10.core.startupProbe.initialDelaySecondsDie anfängliche Verzögerung in Sekunden für die Startprobe. Der Standardwert ist
10.core.resourcesDie Ressourcen, die für den Container zugewiesen werden sollen. Der Standardwert ist
undefined.core.automountServiceAccountTokenMontiert das Token des Dienstkontos. Der Standardwert ist
false.core.nodeSelectorDie Knotenlabels für die Pod-Zuweisung. Der Standardwert ist
{}.core.tolerationsDie Toleranzen für die Pod-Zuweisung. Der Standardwert ist
[].core.affinityDie Knoten- oder Pod-Affinitäten. Der Standardwert ist
{}.core.topologySpreadConstraintsDie Einschränkungen, die definieren, wie Pods über Fehlerdomänen wie Regionen oder Verfügbarkeitszonen verteilt werden. Der Standardwert ist
[].core.podAnnotationsDie Annotationen, die zum Kernel-Pod hinzugefügt werden sollen. Der Standardwert ist
{}.core.serviceAnnotationsDie Annotationen, die zum Kernel-Dienst hinzugefügt werden sollen. Der Standardwert ist
{}.core.configureUserSettingsEin JSON-String in der Umgebungsvariable CONFIG_OVERWRITE_JSON zur Konfiguration der Benutzereinstellungen.
core.quotaUpdateProviderDer Anbieter zur Aktualisierung der Projektquoten-Nutzung, Optionen sind
redisoderdb. Der Standardwert istdb.core.secretWird verwendet, wenn der Kernelserver mit anderen Komponenten kommuniziert.
core.secretNameDer Name eines Kubernetes Geheimnisses, um Ihr eigenes TLS-Zertifikat und den privaten Schlüssel für die Token-Verschlüsselung oder -Entschlüsselung zu verwenden.
core.tokenKeyDer im PEM-Format vorliegende RSA-Private-Key, der zur Signierung von Dienst-Token verwendet wird.
core.tokenCertDas im PEM-Format vorliegende Zertifikat, das von
core.tokenKeysigniert wurde und zur Validierung von Dienst-Token verwendet wird.core.xsrfKeyDer XSRF-Schlüssel, der automatisch generiert wird, wenn er nicht angegeben ist.
core.priorityClassNameDie Prioritätsklasse, unter der der Pod ausgeführt werden soll.
core.artifactPullAsyncFlushDurationDie Zeitdauer für die asynchrone Aktualisierung der Artefakt-Pull-Zeit und der Repository-Pull-Anzahl.
core.gdpr.deleteUserAktiviert die DSGVO-konforme Benutzerlöschung. Der Standardwert ist
false.core.gdpr.auditLogsCompliantAktiviert die DSGVO-Konformität für Audit-Protokolle, indem der Benutzername in seinen CRC32-Wert geändert wird, wenn dieser Benutzer aus dem System gelöscht wurde. Der Standardwert ist
false.core.initContainersDie Init-Container, die vor dem Start des Containers des Controllers ausgeführt werden sollen. Der Standardwert ist
[].
jobservice.image.repositoryDas Repository für das Jobservice-Image. Der Standardwert ist
private-registry/harbor-jobservice.jobservice.image.tagDas Tag für das Jobservice-Image. Der Standardwert ist
2.11.jobservice.replicasDie Anzahl der Replikate. Der Standardwert ist
1.jobservice.revisionHistoryLimitDas Limit der Revisionshistorie. Der Standardwert ist
10.jobservice.maxJobWorkersDie maximale Anzahl an Jobarbeitern. Der Standardwert ist
10.jobservice.jobLoggersDie Logger für Jobs:
file,databaseoderstdout. Der Standardwert ist[file].jobservice.loggerSweeperDurationDie Dauer in Tagen, um Jobprotokolle aufzubewahren (wird ignoriert, wenn
jobLoggersaufstdoutgesetzt ist). Der Standardwert ist14.jobservice.notification.webhook_job_max_retryDie maximale Anzahl an Wiederholungen für das Senden von Webhook-Benachrichtigungen. Der Standardwert ist
3.jobservice.notification.webhook_job_http_client_timeoutDer HTTP-Client-Timeout in Sekunden für das Senden von Webhook-Benachrichtigungen. Der Standardwert ist
3.jobservice.reaper.max_update_hoursDie maximale Zeit in Stunden, um auf den Abschluss einer Aufgabe zu warten. Wenn die Aufgabe nach den angegebenen Stunden nicht abgeschlossen ist, wird sie als Fehler markiert, läuft jedoch weiter. Der Standardwert ist
24.jobservice.reaper.max_dangling_hoursDie maximale Zeit in Stunden für die Ausführung im laufenden Zustand, ohne dass eine neue Aufgabe erstellt wird. Der Standardwert ist
168.jobservice.resourcesDie [Ressourcen], die für den Container zugewiesen werden sollen. Der Standardwert ist
undefined.jobservice.automountServiceAccountTokenMontiert das Token des Dienstkontos. Der Standardwert ist
false.jobservice.nodeSelectorDie Knotenlabels für die Pod-Zuweisung. Der Standardwert ist
{}.jobservice.tolerationsDie Toleranzen für die Pod-Zuweisung. Der Standardwert ist
[].jobservice.affinityDie Knoten- oder Pod-Affinitäten. Der Standardwert ist
{}.jobservice.topologySpreadConstraintsDie Einschränkungen, die definieren, wie Pods über Fehlerdomänen wie Regionen oder Verfügbarkeitszonen verteilt werden. Der Standardwert ist
[].jobservice.podAnnotationsDie Annotationen, die dem Jobservice-Pod hinzugefügt werden sollen. Der Standardwert ist
{}.jobservice.priorityClassNameDie Prioritätsklasse, unter der der Pod ausgeführt werden soll.
jobservice.secretDas Geheimnis, das verwendet wird, wenn der Jobdienst mit anderen Komponenten kommuniziert. Wenn kein geheimer Schlüssel angegeben ist, wird Helm generiert. Muss eine Zeichenkette von 16 Zeichen sein.
jobservice.initContainersDie Init-Container, die vor dem Start des Containers des Controllers ausgeführt werden sollen. Der Standardwert ist
[].
registry.registry.image.repositoryDer Speicherort des Registrierungsimages. Der Standardwert ist
private-registry/harbor-registry.registry.registry.image.tagDas Tag für das Registrierungsimage. Der Standardwert ist
2.11.registry.registry.resourcesDie [Ressourcen], die für den Container zugewiesen werden sollen. Der Standardwert ist
undefined.registry.controller.image.repositoryDer Speicherort des Registrierungscontroller-Images. Der Standardwert ist
private-registry/harbor-registryctl.registry.controller.image.tagDas Tag für das Registrierungscontroller-Image. Der Standardwert ist
2.11.registry.controller.resourcesDie [Ressourcen], die für den Container zugewiesen werden sollen. Der Standardwert ist
undefined.registry.replicasDie Anzahl der Replikatinstanzen. Der Standardwert ist
1.registry.revisionHistoryLimitDie maximale Anzahl von Revisionen, die in der Historie beibehalten werden sollen. Der Standardwert ist
10.registry.nodeSelectorDie Knotenlabels für die Pod-Zuweisung. Der Standardwert ist
{}.registry.automountServiceAccountTokenSteuert, ob das Token des Dienstkontos gemountet werden soll. Der Standardwert ist
false.registry.tolerationsDie Toleranzen für die Pod-Zuweisung. Der Standardwert ist
[].registry.affinityDie Knoten- oder Pod-Affinitäten. Der Standardwert ist
{}.registry.topologySpreadConstraintsDie Einschränkungen, die die Verteilung von Pods über Fehlerdomänen wie Regionen oder Verfügbarkeitszonen definieren. Der Standardwert ist
[].registry.middlewareMiddleware-Unterstützung für ein CDN zwischen dem Backend-Speicher und dem Docker Pull-Empfänger.
registry.podAnnotationsDie Annotationen, die dem Registrierungs-Pod hinzugefügt werden sollen. Der Standardwert ist
{}.registry.priorityClassNameDie Prioritätsklasse für die Pod-Ausführung.
registry.secretDas Geheimnis, das den Upload-Zustand zwischen dem Client und dem Registrierungs-Speicher-Backend sichert.
registry.credentials.usernameDer Benutzername für den internen Zugriff auf das Registrierungs-Backend von Harbor Kernel. Der Standardwert ist
harbor_registry_user.registry.credentials.passwordDas Passwort für den internen Zugriff auf das Registrierungs-Backend von Harbor Kernel. Der Standardwert ist
harbor_registry_password.registry.credentials.existingSecretEin vorhandenes Geheimnis, das das Passwort für den Zugriff auf die Registrierungsinstanz im htpasswd-Authentifizierungsmodus enthält. Der Standardwert ist
"".registry.credentials.htpasswdStringDer Login und das Passwort im htpasswd-Zeichenfolgenformat. Schließt
registry.credentials.usernameundregistry.credentials.passwordaus. Der Standardwert istundefined.registry.relativeurlsGibt relative URLs in den Location-Headern zurück, wenn dies wahr ist. Erforderlich, wenn Harbor hinter einem Reverse-Proxy steht. Der Standardwert ist
false.registry.upload_purging.enabledErmöglicht das Löschen von Upload-Verzeichnissen. Der Standardwert ist
true.registry.upload_purging.ageDer Zeitraum, nach dem Dateien in Upload-Verzeichnissen entfernt werden, standardmäßig eine Woche. Der Standardwert ist
168h.registry.upload_purging.intervalDas Zeitintervall zwischen Löschvorgängen. Der Standardwert ist
24h.registry.upload_purging.dryrunAktiviert den Trockenlaufmodus für das Löschen von Uploads. Der Standardwert ist
false.registry.initContainersDie Init-Container, die vor dem Start des Containers des Controllers ausgeführt werden. Der Standardwert ist
[].
trivy.enabledAktiviert oder deaktiviert den Trivy Scanner. Der Standardwert ist
true.trivy.image.repositoryDas Repository für das Trivy Adapter-Image. Der Standardwert ist
private-registry/harbor-trivy-adapter.trivy.image.tagDas Tag für das Trivy Adapter-Image. Der Standardwert ist
2.11.trivy.resourcesDie Ressourcen, die für den Trivy Adapter-Container zugewiesen werden sollen. Der Standardwert ist
undefined.trivy.automountServiceAccountTokenOb das Token des Dienstkontos gemountet werden soll. Der Standardwert ist
false.trivy.replicasDie Anzahl der Pod-Replikate. Der Standardwert ist
1.trivy.debugModeAktiviert den Trivy Debug-Modus zur Fehlersuche. Der Standardwert ist
false.trivy.vulnTypeDurch Kommas getrennte Liste von Schwachstellentypen (
osundlibrary). Der Standardwert istos,library.trivy.severityDurch Kommas getrennte Liste von Schweregraden von Schwachstellen, die überprüft werden sollen. Der Standardwert ist
UNKNOWN,LOW,MEDIUM,HIGH,CRITICAL.trivy.ignoreUnfixedZeigt nur behobene Schwachstellen an. Der Standardwert ist
false.trivy.insecureÜberspringt die Überprüfung des Registrierungszertifikats. Der Standardwert ist
false.trivy.skipUpdateDeaktiviert die Trivy Datenbankdownloads von GitHub. Der Standardwert ist
false.trivy.skipJavaDBUpdateErfordert den manuellen Download der
trivy-java.dbDatei, wenn aktiviert. Der Standardwert istfalse.trivy.offlineScanVerhindert, dass Trivy API-Anfragen sendet, um Abhängigkeiten zu identifizieren. Der Standardwert ist
false.trivy.securityCheckDurch Kommas getrennte Liste von Sicherheitsproblemen, die erkannt werden sollen. Der Standardwert ist
vuln.trivy.timeoutDie Dauer, die auf den Abschluss des Scans gewartet werden soll. Der Standardwert ist
5m0s.trivy.gitHubTokenDas für den Datenbankdownload erforderliche GitHub-Zugriffstoken. Der Standardwert ist
undefined.trivy.priorityClassNameDie Prioritätsklasse für die Ausführung des Pods. Der Standardwert ist
undefined.trivy.topologySpreadConstraintsDefiniert die Verteilungseinschränkungen für Pods über Fehlerdomänen. Der Standardwert ist
undefined.trivy.initContainersListe der Init-Container, die vor dem Start des Hauptcontainers ausgeführt werden sollen. Der Standardwert ist
[].
database.typeDer Datenbanktyp. Auf
externalsetzen, wenn eine externe Datenbank verwendet wird. Der Standardwert istinternal.database.internal.image.repositoryDas Repository für das Datenbank-Image. Der Standardwert ist
private-registry/harbor-db.database.internal.image.tagDas Tag für das Datenbank-Image. Der Standardwert ist
2.11.database.internal.passwordDas Passwort für die interne Datenbank. Der Standardwert ist
changeit.database.internal.shmSizeLimitDas Limit für die Größe des gemeinsamen Speichers für PostgreSQL (typischerweise 50 % des Container-Speicherlimits). Der Standardwert ist
512Mi.database.internal.resourcesDie für den Datenbankcontainer zugewiesenen Ressourcen. Der Standardwert ist
undefined.database.internal.automountServiceAccountTokenSteuert, ob das Token des Dienstkontos montiert wird. Der Standardwert ist
false.database.internal.initContainer.migrator.resourcesDie für den Init-Container des Datenbankmigrators zugewiesenen Ressourcen. Der Standardwert ist
undefined.database.internal.initContainer.permissions.resourcesDie für den Init-Container der Datenbankberechtigungen zugewiesenen Ressourcen. Der Standardwert ist
undefined.database.internal.nodeSelectorDie Knotenlabels für die Pod-Zuweisung. Der Standardwert ist
{}.database.internal.tolerationsDie Toleranzen für die Pod-Zuweisung. Der Standardwert ist
[].database.internal.affinityDie Einstellungen für die Knoten- oder Pod-Affinität. Der Standardwert ist
{}.database.internal.priorityClassNameDie Prioritätsklasse für die Ausführung des Pods. Der Standardwert ist
undefined.database.internal.livenessProbe.timeoutSecondsDas Timeout in Sekunden für die Liveness-Prüfung (Bereich: 1-5s). Der Standardwert ist
1.database.internal.readinessProbe.timeoutSecondsDer Timeout in Sekunden für die Readiness-Prüfung (Bereich: 1-5s). Der Standardwert ist
1.database.internal.extrInitContainersZusätzliche Init-Container, die vor dem Start des Datenbankcontainers ausgeführt werden. Der Standardwert ist
[].database.external.hostDer Hostname der externen Datenbank. Der Standardwert ist
192.168.0.1.database.external.portDie Portnummer der externen Datenbank. Der Standardwert ist
5432.database.external.usernameDer Benutzername für die externe Datenbank. Der Standardwert ist
user.database.external.passwordDas Passwort für die externe Datenbank. Der Standardwert ist
password.database.external.coreDatabaseDer Datenbankname, der vom Kernelservice verwendet wird. Der Standardwert ist
registry.database.external.existingSecretDas vorhandene Secret, das das Datenbankpasswort enthält. Der Schlüssel muss
passwordsein. Der Standardwert ist"".database.external.sslmodeDie Verbindungsart für die externe Datenbank. Optionen:
require,verify-full,verify-ca,disable. Der Standardwert istdisable.database.maxIdleConnsDie maximale Anzahl an inaktiven Verbindungen im Pool (0 oder weniger bedeutet, dass keine inaktiven Verbindungen behalten werden). Der Standardwert ist
50.database.maxOpenConnsDie maximale Anzahl an offenen Verbindungen zur Datenbank (0 oder weniger bedeutet unbegrenzt). Der Standardwert ist
100.database.podAnnotationsDie Annotationen, die zum Datenbank-Pod hinzugefügt werden sollen. Der Standardwert ist
{}.
redis.typeDer Redis Implementierungstyp. Auf
externalsetzen für externe Redis. Der Standardwert istinternal.redis.internal.image.repositoryDas Repository für das Redis Image. Der Standardwert ist
private-registry/harbor-redis.redis.internal.image.tagDas Tag für das Redis Image. Der Standardwert ist
7.2.redis.internal.resourcesDie Ressourcen, die für den Redis Container zugewiesen sind. Der Standardwert ist
undefined.redis.internal.automountServiceAccountTokenSteuert, ob das Token des Dienstkontos montiert wird. Der Standardwert ist
false.redis.internal.nodeSelectorDie Knotenlabels für die Pod-Zuweisung. Der Standardwert ist
{}.redis.internal.tolerationsDie Toleranzen für die Pod-Zuweisung. Der Standardwert ist
[].redis.internal.affinityDie Einstellungen für die Knoten- oder Pod-Affinität. Der Standardwert ist
{}.redis.internal.priorityClassNameDie Prioritätsklasse für das Ausführen des Redis Pods. Der Standardwert ist
undefined.redis.internal.jobserviceDatabaseIndexDer Datenbankindex für den Jobservice. Der Standardwert ist
1.redis.internal.registryDatabaseIndexDer Datenbankindex für die Registry. Der Standardwert ist
2.redis.internal.trivyAdapterIndexDer Datenbankindex für den Trivy Adapter. Der Standardwert ist
5.redis.internal.harborDatabaseIndexDer Datenbankindex für die verschiedenen Harbor Geschäftslogik. Der Standardwert ist
0.redis.internal.cacheLayerDatabaseIndexDer Datenbankindex für die Cache-Schicht von Harbor. Der Standardwert ist
0.redis.internal.initContainersDie Init-Container, die vor dem Start des Redis Containers ausgeführt werden. Der Standardwert ist
[].redis.external.addrDie Adresse der externen Redis Instanz. Der Standardwert ist
192.168.0.2:6379.redis.external.sentinelMasterSetDer Name des Redis Sentinel Master Sets (sofern zutreffend). Der Standardwert ist
undefined.redis.external.coreDatabaseIndexDer Datenbankindex für den Kernel. Der Standardwert ist
0.redis.external.jobserviceDatabaseIndexDer Datenbankindex für den Jobservice. Der Standardwert ist
1.redis.external.registryDatabaseIndexDer Datenbankindex für die Registry. Der Standardwert ist
2.redis.external.trivyAdapterIndexDer Datenbankindex für den Trivy Adapter. Der Standardwert ist
5.redis.external.harborDatabaseIndexDer Datenbankindex für die verschiedenen Harbor Geschäftslogik. Der Standardwert ist
0.redis.external.cacheLayerDatabaseIndexDer Datenbankindex für die Cache-Schicht von Harbor. Der Standardwert ist
0.redis.external.usernameDer Benutzername für die externe Redis Authentifizierung. Der Standardwert ist
undefined.redis.external.passwordDas Passwort für die externe Redis Authentifizierung. Der Standardwert ist
undefined.redis.external.existingSecretDas vorhandene Geheimnis, das das Redis Passwort enthält. Der Schlüssel muss
REDIS_PASSWORDsein. Der Standardwert ist"".redis.podAnnotationsDie Annotationen, die zum Redis Pod hinzugefügt werden sollen. Der Standardwert ist
{}.
exporter.replicasDie Anzahl der zu betreibenden Replikate. Der Standardwert ist
1.exporter.revisionHistoryLimitDas Limit der Versionshistorie. Der Standardwert ist
10.exporter.podAnnotationsAnnotationen, die zum Exporter-Pod hinzugefügt werden sollen. Der Standardwert ist
{}.exporter.image.repositoryDas Repository für das Exporter-Image. Der Standardwert ist
private-registry/harbor-exporter.exporter.image.tagDas Tag für das Exporter-Image. Der Standardwert ist
2.11.exporter.nodeSelectorKnotenbeschriftungen für die Pod-Zuweisung. Der Standardwert ist
{}.exporter.tolerationsTolerations für die Pod-Zuweisung. Der Standardwert ist
[].exporter.affinityKnoten- oder Pod-Affinitäten. Der Standardwert ist
{}.exporter.topologySpreadConstraintsEinschränkungen, die festlegen, wie Pods über Ausfalldomänen wie Regionen oder Verfügbarkeitszonen verteilt werden. Der Standardwert ist
[].exporter.automountServiceAccountTokenSteuert, ob das serviceAccountToken gemountet werden soll. Der Standardwert ist
false.exporter.cacheDurationDie Cache-Dauer für Informationen, die vom Exporter gesammelt werden. Der Standardwert ist
30.exporter.cacheCleanIntervalDas Intervall zur Cache-Reinigung für Informationen, die vom Exporter gesammelt werden. Der Standardwert ist
14400.exporter.priorityClassNameDie Prioritätsklasse, unter der der Pod ausgeführt werden soll. Der Standardwert ist
undefined.
metrics.enabledAktiviert Harbor Metriken. Der Standardwert ist
false.metrics.core.pathDer URL-Pfad für Kernelmetriken. Der Standardwert ist
/metrics.metrics.core.portDer Port für Kernelmetriken. Der Standardwert ist
8001.metrics.registry.pathDer URL-Pfad für Registrierungsmetriken. Der Standardwert ist
/metrics.metrics.registry.portDer Port für Registrierungsmetriken. Der Standardwert ist
8001.metrics.exporter.pathDer URL-Pfad für Exporter-Metriken. Der Standardwert ist
/metrics.metrics.exporter.portDer Port für Exporter-Metriken. Der Standardwert ist
8001.metrics.serviceMonitor.enabledAktiviert die Erstellung eines Prometheus ServiceMonitors (benötigt Prometheus CRDs). Der Standardwert ist
false.metrics.serviceMonitor.additionalLabelsZusätzliche Labels, die auf das ServiceMonitor-Manifest angewendet werden sollen. Der Standardwert ist
"".metrics.serviceMonitor.intervalDas Abfrageintervall für Harbor Metriken. Der Standardwert ist
"".metrics.serviceMonitor.metricRelabelingsDie Relabeling-Regeln für Metriken vor der Eingabe. Der Standardwert ist
[].metrics.serviceMonitor.relabelingsDie Relabeling-Regeln für Metriken vor dem Scraping. Der Standardwert ist
[].
trace.enabledAktiviert die Trace-Funktionalität. Der Standardwert ist
false.trace.providerDer Trace-Anbieter (
jaegeroderotel). Die Jaeger-Version sollte 1.26+ sein. Der Standardwert istjaeger.trace.sample_rateDie Abtastrate für Trace-Daten.
1samplet 100 %,0.5samplet 50 %. Der Standardwert ist1.trace.namespaceDer Namespace zur Unterscheidung verschiedener Harbor-Dienste.
trace.attributesEin Schlüssel-Wert-Wörterbuch für benutzerdefinierte Attribute bei der Initialisierung des Trace-Anbieters.
trace.jaeger.endpointDer Endpunkt für Jaeger-Tracing. Der Standardwert ist
http://hostname:14268/api/traces.trace.jaeger.usernameDer Benutzername für die Jaeger-Authentifizierung.
trace.jaeger.passwordDas Passwort für die Jaeger-Authentifizierung.
trace.jaeger.agent_hostDer Agenten-Host für Jaeger.
trace.jaeger.agent_portDer Agenten-Port für Jaeger. Der Standardwert ist
6831.trace.otel.endpointDer Endpunkt für OpenTelemetry-Tracing. Der Standardwert ist
hostname:4318.trace.otel.url_pathDer Pfad für OpenTelemetry. Der Standardwert ist
/v1/traces.trace.otel.compressionAktiviert die Kompression für OpenTelemetry. Der Standardwert ist
false.trace.otel.insecureStellt eine unsichere Verbindung für OpenTelemetry her. Der Standardwert ist
true.trace.otel.timeoutDie Zeitüberschreitung in Sekunden für OpenTelemetry. Der Standardwert ist
10.
cache.enabledAktiviert die Cache-Schicht. Der Standardwert ist
false.cache.expireHoursDie Ablaufzeit in Stunden für die Cache-Schicht. Der Standardwert ist
24.
B Beispiel eines Private Registry HA setup Helm Diagramms #
Die folgende Beispielwerte-Datei veranschaulicht die Parameter, die für das minimale Private Registry HA setup erforderlich sind.
expose:
ingress:
hosts:
core: core.harbor.domain 1
externalURL: https://core.harbor.domain 2
portal:
replicas: 2 3
core:
replicas: 2 4
jobservice:
replicas: 2 5
registry:
replicas: 2 6
database:
type: external
external: 7
host: "192.168.0.1"
port: "5432"
username: "user"
password: "password"
coreDatabase: "registry"
existingSecret: "" 8
sslmode: "disable" 9
redis:
type: external
external: 10
addr: "192.168.0.2:6379" 11
sentinelMasterSet: "" 12
coreDatabaseIndex: "0" 13
jobserviceDatabaseIndex: "1"
registryDatabaseIndex: "2"
trivyAdapterIndex: "5"
harborDatabaseIndex: "6" 14
cacheLayerDatabaseIndex: "7"15
username: "" 16
password: ""
existingSecret: "" 17
persistence:
enabled: true 18Hostname des Kernelservice in der Ingress Regel. | |
Die externe URL für den harbor-core Dienst. | |
Anzahl der zu erstellenden Replikate. Geben Sie zwei oder mehr an. | |
Füllen Sie die Datenbankverbindungsdetails im | |
Wenn ein vorhandenes Geheimnis verwendet wird, muss der Wert | |
Akzeptiert einen der folgenden Werte:
| |
Füllen Sie die Verbindungsinformationen im | |
Unterstützt redis und redis+sentinel. | |
Der Name der Menge von Valkey Instanzen, die überwacht werden sollen. Es muss so eingestellt werden, dass redis+sentinel unterstützt wird. | |
Muss | |
Optional. Standardmäßig auf | |
Optional. Standardmäßig auf | |
Wenn es leer ist, wird es gegen den Standardbenutzer authentifiziert. | |
Wenn verwendet, muss der Schlüssel <REDIS_PASSWORD> sein. | |
Um alle Bilder, Metadaten und Scans zu speichern, stellen Sie sicher, dass die persistenzbezogenen Einstellungen (Persistenzparameter) ordnungsgemäß konfiguriert sind. |
C Freie GNU-Dokumentationslizenz (GNU Free Documentation License) #
Copyright © 2000, 2001, 2002 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Es ist jedermann gestattet, diese Lizenzurkunde zu vervielfältigen und unveränderte Kopien zu verbreiten; Änderungen sind jedoch nicht erlaubt.
C1 0. VORWORT #
Der Zweck dieser Lizenz ist es, eine Dokumentation (Handbuch etc.) zu ermöglichen, die funktional, hilfreich und frei ist: damit jede Person sie sowohl kommerziell als auch nicht-kommerziell kopieren, weiterverteilen und ändern darf. Weiterhin sichert diese Lizenz einem Autor oder Verleger die Möglichkeit, Anerkennung für seine Arbeit zu erhalten, ohne für Änderungen durch andere verantwortlich gemacht zu werden.
Diese Lizenz ist eine Art von "Copyleft", was bedeutet, dass von diesem Dokument abgeleitete Werke ihrerseits in derselben Weise frei sein müssen. Dies vervollständigt die GNU General Public License, eine „Copyleft“-Lizenz, die für freie Software entworfen wurde.
Wir haben diese Lizenz entwickelt, um sie für Handbücher für freie Software zu verwenden, da freie Software auch eine freie Dokumentation benötigt: Zu einem freien Programm gehören auch freie Handbücher, die dieselben Freiheiten wie die Software bieten. Diese Lizenz ist aber nicht auf Softwarehandbücher beschränkt; vielmehr kann sie für jede Art von Textwerk verwendet werden, unabhängig davon, was das Thema ist oder ob es als gedrucktes Buch veröffentlicht wurde. Wir empfehlen diese Lizenz prinzipiell für Werke, die als Anleitung oder Referenz dienen sollen.
C2 1. ANWENDBARKEIT UND DEFINITIONEN #
Diese Lizenz findet Anwendung auf jedes Handbuch oder andere Werk, unabhängig von dem Medium, auf dem es erscheint, das einen vom Rechteinhaber eingefügten Hinweis enthält, der besagt, dass das Werk unter den Bedingungen dieser Lizenz verbreitet werden darf. Ein solcher Hinweis gewährt eine weltweit gültige, tantiemenfreie und zeitlich unbefristete Lizenz, die es gestattet, das Werk unter den hier festgelegten Bedingungen zu nutzen. Der Begriff „Dokument“ wird im Folgenden für alle solche Handbücher und Werke verwendet. Jede Person kann Lizenznehmer sein und wird im Folgenden mit Sie angesprochen. Sie akzeptieren diese Lizenz, wenn Sie ein Dokument derart kopieren, verändern oder verteilen, dass Sie gemäß den Gesetzen zum Copyright die Erlaubnis benötigen.
Eine „modifizierte Version“ des Dokuments steht für jedes Werk, welches das Dokument als Ganzes oder in Teilen enthält, sowohl unverändert als auch mit Änderungen kopiert und/oder in andere Sprachen übersetzt.
Ein „zweitrangiger Abschnitt“ ist ein benannter Anhang oder ein Vorspannteil des Dokuments, der sich ausschließlich mit dem Verhältnis der Autoren bzw. Verleger des Dokuments zu dessen eigentlichem Thema (oder zu verwandten Angelegenheiten) befasst und nichts enthält, was unmittelbar zu diesem Thema gehört. (Wenn das Dokument beispielsweise ein Buch über Mathematik ist, dann darf ein zweitrangiger Abschnitt nichts über Mathematik enthalten). Bei diesem Verhältnis kann es sich um eine historische Beziehung zu dem Thema oder damit in Verbindung stehenden Inhalten oder um diesbezügliche gesetzliche, gesellschaftliche, philosophische, ethische oder politische Positionen handeln.
Die „unveränderlichen Abschnitte“ sind benannte zweitrangige Abschnitte, deren Titel als unveränderlicher Abschnitt in dem Lizenzhinweis, der das Dokument unter diese Lizenz stellt, aufgeführt sind. Wenn ein Abschnitt nicht in die oben stehende Definition eines zweitrangigen Abschnitts passt, darf er nicht als unveränderlich ausgewiesen werden. Das Dokument kann auch keine unveränderlichen Bereiche enthalten. Wenn das Dokument keine unveränderlichen Bereiche angibt, sind keine solchen darin enthalten.
„Umschlagtexte“ sind bestimmte kurze Textpassagen, die als vorderer Umschlagtext oder hinterer Umschlagtext in dem Hinweis aufgeführt sind, der besagt, dass das Dokument unter dieser Lizenz veröffentlicht wird. Ein vorderer Umschlagtext darf höchstens 5 Wörter enthalten, ein hinterer Umschlagtext höchstens 25 Wörter.
Eine „transparente“ Kopie des Dokuments ist eine maschinenlesbare Kopie in einem Format, dessen Spezifikation der Allgemeinheit zugänglich ist, das sich eignet, das Dokument unkompliziert mit allgemeinen Texteditoren oder (bei pixelbasierten Bildern) mit allgemeinen Bildbearbeitungsprogrammen oder (bei Zeichnungen) mit einem weit verbreiteten Zeichenprogramm zu bearbeiten und das sich als Eingabe für Textformatierer oder zur automatischen Umwandlung in verschiedene für Textformatierer geeignete Formate eignet. Eine Kopie in einem ansonsten transparenten Dateiformat, deren Auszeichnung oder das Fehlen derselben so gestaltet ist, dass nachfolgende Änderungen durch Leser verhindert oder erschwert werden, ist nicht transparent. Ein Bildformat ist nicht transparent, wenn es für eine wesentliche Menge von Text verwendet wird. Eine Kopie, die nicht „transparent“ ist, wird als „opak“ bezeichnet.
Beispiele verwendbarer Formate für transparente Kopien schließen einfachen ASCII-Text ohne Markup, das Texinfo-Eingabeformat, das LaTeX-Eingabeformat, SGML oder XML unter Nutzung einer öffentlich verfügbaren DTD sowie standardkonformes, einfaches HTML, PostScript oder PDF ein, die sich zur direkten Bearbeitung mit gängigen Texteditoren (bzw. bei pixelbasierten Bildern mit üblichen Bildbearbeitungsprogrammen oder bei Zeichnungen mit einem weit verbreiteten Zeichenprogramm) eignen. Beispiele für transparente Bildformate sind unter anderem PNG, XCF und JPG. Opake Formate sind unter anderem solche proprietären Formate, die nur von proprietären Textverarbeitungsprogrammen gelesen und bearbeitet werden können, SGML oder XML, deren DTD und/oder Verarbeitungswerkzeuge nicht allgemein verfügbar sind, und maschinengeneriertes HTML, PostScript oder PDF, das von manchen Textverarbeitungsprogrammen nur zu Ausgabezwecken erzeugt wird.
Mit „Titelseite“ werden bei einem gedruckten Buch die eigentliche Titelseite sowie die direkt darauf folgenden Seiten bezeichnet, die all das in lesbarer Form enthalten, was gemäß dieser Lizenz auf der Titelseite erscheinen muss. Für Werke, die in Formaten vorliegen, die keine Titelseiten haben, gilt als „Titelseite“ der Text, der direkt nach der auffälligsten Darstellung des Titels des Werks folgt, aber noch vor dem Inhalt des Werks steht.
Ein Abschnitt „Entitled XYZ“ bezeichnet einen benannten Unterabschnitt des Dokuments, dessen Titel entweder exakt XYZ lautet oder in Klammern den Zusatz XYZ enthält, nachdem ein erläuternder Text zu XYZ in einer anderen Sprache folgt. (Hier steht XYZ für einen bestimmten Abschnittsnamen, der unten erwähnt wird, wie „Danksagungen“, „Widmungen“, „Empfehlungen“ oder „Historie“.) Das Beibehalten des Titels eines solchen Abschnitts beim Ändern des Dokuments bedeutet, dass dieser weiterhin als Abschnitt „Entitled XYZ“ geführt wird, wie in dieser Definition festgelegt.
Das Dokument kann direkt hinter dem Hinweis, der besagt, dass das Dokument unter dieser Lizenz freigegeben ist, Haftungsausschlüsse enthalten. Diese Haftungsausschlüsse gelten als durch Verweisung in diese Lizenz eingeschlossen, jedoch ausschließlich im Hinblick auf den Ausschluss von Garantien – jede weitere Auslegung oder Implikation dieser Haftungsausschlüsse ist unwirksam und berührt die Bedeutung dieser Lizenz nicht.
C3 2. UNVERÄNDERTE KOPIEN #
Sie dürfen das Dokument auf jedem Medium sowohl kommerziell als auch nicht kommerziell kopieren und verbreiten, vorausgesetzt, dass diese Lizenz, die Copyright-Hinweise sowie der Hinweis auf die Lizenz, der besagt, dass diese Lizenz auf das Dokument anzuwenden ist, in allen Kopien reproduziert wird und dass keine weiteren Bedingungen jeglicher Art zu denen dieser Lizenz hinzugefügt werden. Sie dürfen in den Kopien, die Sie erstellen oder verbreiten, keinerlei technische Maßnahmen treffen, um das Lesen oder das weitere Kopieren zu erschweren oder zu kontrollieren. Dennoch dürfen Sie Gegenleistungen für Kopien akzeptieren. Wenn Sie eine ausreichend große Menge von Kopien verteilen, müssen Sie zusätzlich die Bestimmungen von Ziffer 3 beachten.
Sie können außerdem unter denselben Bedingungen, die oben angeführt sind, Kopien verleihen und Sie können Kopien auch öffentlich ausstellen.
C4 3. KOPIEN IN MENGEN #
Wenn Sie gedruckte Kopien des Dokuments (oder Kopien auf Medien, die üblicherweise gedruckte Umschläge haben), in einer Stückzahl von mehr als 100 veröffentlichen und der Lizenzhinweis des Dokuments Umschlagtexte verlangt, müssen die Kopien in Hüllen verpackt sein, die alle diese Umschlagtexte klar und lesbar enthalten: Die vorderen Umschlagtexte auf dem vorderen Umschlag und die hinteren Umschlagtexte auf dem hinteren Umschlag. Beide Umschläge müssen Sie außerdem klar und lesbar als den Herausgeber dieser Kopien benennen. Der vordere Umschlag muss den gesamten Titel darstellen, mit allen Worten gleich auffällig und sichtbar. Sie können weiteres Material den Umschlägen hinzufügen. Das Kopieren mit Änderungen, die auf Umschläge begrenzt sind, kann, solange der Titel des Dokuments erhalten bleibt und diese Bedingungen erfüllt sind, in anderen Aspekten als unverändertes Kopieren behandelt werden.
Wenn der vorgeschriebene Text für einen der Umschläge zu umfangreich ist, um lesbar zu bleiben, sollten Sie den ersten der aufgelisteten Texte auf den aktuellen Umschlag nehmen (so viel wie vernünftigerweise möglich ist) und den Rest auf direkt angrenzende Seiten fortsetzen.
Wenn Sie mehr als 100 opake Kopien des Dokuments veröffentlichen oder verbreiten, müssen Sie entweder eine maschinenlesbare, transparente Kopie jeder opaken Kopie beilegen oder mit bzw. in jeder opaken Kopie eine Computer-Netzwerk-Adresse angeben, von wo die allgemeine, netzwerkbenutzende Öffentlichkeit Zugriff zum Download einer kompletten transparenten Kopie über öffentliche Standardnetzwerkprotokolle hat, die frei von zusätzlichen Materialien ist. Wenn Sie sich für die letztere Möglichkeit entscheiden, müssen Sie mit Beginn der Verbreitung der opaken Kopien in Stückzahlen zumutbare und vernünftige Schritte unternehmen, um sicherzustellen, dass die transparente Kopie mindestens ein Jahr nach der letzten Verbreitung einer opaken Kopie (direkt oder über Ihre Agenten oder Händler) dieser Ausgabe an die Öffentlichkeit an der genannten Adresse verfügbar bleibt.
Es wird gebeten, aber nicht verlangt, dass Sie die Autoren des Dokuments rechtzeitig kontaktieren, bevor Sie eine größere Anzahl von Kopien verbreiten, um ihnen die Gelegenheit zu geben, Ihnen eine aktualisierte Version des Dokuments zur Verfügung zu stellen.
C5 4. MODIFIKATIONEN #
Unter den obigen Bedingungen unter Ziffer 2 und 3 können Sie modifizierte Versionen kopieren und verbreiten, vorausgesetzt, dass Sie die modifizierte Version unter exakt dieser Lizenz herausgeben, wobei die modifizierte Version die Rolle des Dokuments einnimmt, und dadurch die weitere Modifikation und Verbreitung an jeden lizenzieren, der eine Kopie davon besitzt. Zusätzlich müssen Sie die folgenden Dinge in der modifizierten Version beachten:
Benutzen Sie auf der Titelseite (und auf Umschlägen, sofern vorhanden) einen Titel, der sich von dem Titel des Dokuments und von früheren Versionen unterscheidet (die früheren Versionen sollten, wenn es welche gibt, im Abschnitt Historie aufgelistet werden). Sie können denselben Titel wie den einer Vorgängerversion verwenden, wenn der ursprüngliche Herausgeber damit einverstanden ist.
Geben Sie auf der Titelseite als Autoren eine oder mehrere Personen oder Einheiten an, die für die Urheberschaft der Änderungen in der modifizierten Version verantwortlich sind, zusammen mit mindestens fünf der hauptverantwortlichen Autoren des Dokuments (bzw. allen, falls es weniger als fünf gibt), sofern diese Sie nicht von dieser Vorgabe entbinden.
Geben Sie auf der Titelseite den Namen des Herausgebers der modifizierten Version als Herausgeber an.
Erhalten Sie alle Copyright-Vermerke des Dokuments.
Setzen Sie einen passenden Copyright-Hinweis für Ihre Modifikationen direkt hinter die anderen Copyright-Hinweise.
Schließen Sie direkt hinter den Copyright-Vermerken einen Lizenzhinweis ein, der die öffentliche Erlaubnis erteilt, die modifizierte Version unter den Bedingungen dieser Lizenz zu benutzen, wie es im Anhang weiter unten beschrieben ist.
Erhalten Sie im Lizenzvermerk die vollständigen Listen der unveränderlichen Abschnitte und der erforderlichen Umschlagtexte, die im Lizenzvermerk des Dokuments angegeben sind.
Schließen Sie eine unveränderte Kopie dieser Lizenz mit ein.
Behalten Sie den Abschnitt mit dem Titel "Historie" bei, bewahren Sie seinen Titel und fügen Sie einen Punkt hinzu, der mindestens den Titel, das Jahr, die neuen Autoren und den Herausgeber der modifizierten Version, wie auf der Titelseite angegeben, enthält. Wenn es im Dokument keinen Abschnitt mit dem Titel "Historie" gibt, erstellen Sie einen der den Titel, das Jahr, die Autoren und den Herausgeber des Dokuments, wie auf der Titelseite angegeben, enthält, und fügen Sie einen Eintrag hinzu, der die modifizierte Version, wie im vorherigen Satz angegeben, beschreibt.
Erhalten Sie die Netzwerkadresse, die im Dokument angegeben ist, um öffentlichen Zugang zu einer transparenten Kopie des Dokuments zu gewähren, sowie die Netzwerkadressen, die im Dokument für frühere Versionen angegeben sind, auf denen es basiert. Diese Angaben können in den Abschnitt „Historie“ verschoben werden. Sie können eine Netzwerkadresse für ein Werk weglassen, das mindestens vier Jahre vor dem Dokument selbst veröffentlicht wurde, oder wenn der ursprüngliche Herausgeber der Version, auf die verwiesen wird, seine Erlaubnis erteilt.
Für jeden Abschnitt mit dem Titel "Danksagungen" oder "Widmungen" bewahren Sie den Titel des Abschnitts und die Substanz sowie den Ton aller Danksagungen und/oder Widmungen der Beitragenden, die darin gegeben sind.
Erhalten Sie alle unveränderlichen Abschnitte des Dokuments unverändert in ihrem Text und ihren Titeln. Abschnittsnummern oder deren Äquivalente gelten nicht als Teil der Abschnittstitel.
Löschen Sie alle Abschnitte, die mit „Anmerkungen“ überschrieben sind. Ein solcher Abschnitt darf nicht in der modifizierten Version enthalten sein.
Benennen Sie keinen bestehenden Abschnitt in "Empfehlungen" um oder in einen Titel, der mit einem unveränderlichen Abschnitt in Konflikt steht.
Erhalten Sie alle Garantieausschlüsse.
Wenn die modifizierte Version neue Vorspannabschnitte oder Anhänge enthält, die als sekundäre Abschnitte qualifiziert sind und kein Material aus dem Dokument beinhalten, können Sie nach eigenem Ermessen einige oder alle dieser Abschnitte als unveränderlich festlegen. Fügen Sie dazu ihre Titel zur Liste der unveränderlichen Abschnitte im Lizenzvermerk der modifizierten Version hinzu. Diese Titel müssen sich von allen anderen Abschnittstiteln unterscheiden.
Sie können einen Abschnitt mit dem Titel "Empfehlungen" hinzufügen, vorausgesetzt, er enthält nichts außer Empfehlungen Ihrer modifizierten Version von verschiedenen Parteien-- – zum Beispiel Erklärungen zum Peer-Review oder dass der Text von einer Organisation als maßgebliche Definition eines Standards genehmigt wurde.
Sie können einen Text von bis zu fünf Wörtern als vorderen Umschlagtext und einen Text von bis zu 25 Wörtern als hinteren Umschlagtext an das Ende der Liste der Umschlagtexte in der modifizierten Version hinzufügen. Nur ein Text für den vorderen Umschlag und einer für den hinteren Umschlag dürfen von (oder durch Vereinbarungen getroffen von) einer einzigen Einheit hinzugefügt werden. Wenn das Dokument bereits einen Umschlagtext für denselben Umschlag enthält, der von Ihnen oder durch eine Vereinbarung, die von der gleichen Einheit getroffen wurde, in deren Namen Sie handeln, hinzugefügt wurde, dürfen Sie keinen weiteren hinzufügen; Sie können jedoch den alten ersetzen, wenn Sie die ausdrückliche Genehmigung des vorherigen Herausgebers haben, der den alten hinzugefügt hat.
Die Autor(en) und Herausgeber des Dokuments geben durch diese Lizenz keine Erlaubnis, ihre Namen für Werbung oder zur Behauptung oder Andeutung der Unterstützung einer modifizierten Version zu verwenden.
C6 5. KOMBINIEREN VON DOKUMENTEN #
Sie können das Dokument mit anderen Dokumenten kombinieren, die unter dieser Lizenz veröffentlicht wurden, gemäß den in Abschnitt 4 oben für modifizierte Versionen definierten Bedingungen, vorausgesetzt, dass Sie in der Kombination alle unveränderlichen Abschnitte aller Originaldokumente unverändert einbeziehen und sie alle als unveränderliche Abschnitte Ihres kombinierten Werks in dessen Lizenzvermerk auflisten und dass Sie alle ihre Haftungsausschlüsse bewahren.
Das kombinierte Werk muss nur eine Kopie dieser Lizenz enthalten, und mehrere identische unveränderliche Abschnitte können durch eine einzelne Kopie ersetzt werden. Wenn es mehrere unveränderliche Abschnitte mit dem gleichen Namen, aber unterschiedlichen Inhalten gibt, machen Sie den Titel jedes solchen Abschnitts eindeutig, indem Sie am Ende in Klammern den Namen des ursprünglichen Autors oder Herausgebers dieses Abschnitts, falls bekannt, oder andernfalls eine eindeutige Nummer hinzufügen. Machen Sie dieselbe Anpassung an den Abschnittstiteln in der Liste der unveränderlichen Abschnitte im Lizenzhinweis des kombinierten Werks.
In der Kombination müssen Sie alle Abschnitte mit dem Titel "Historie" in den verschiedenen Originaldokumenten zu einem Abschnitt mit dem Titel "Historie" zusammenfassen; ebenso müssen Sie alle Abschnitte mit dem Titel "Danksagungen" und alle Abschnitte mit dem Titel "Widmungen" zusammenfassen. Sie müssen alle Abschnitte mit dem Titel „Anmerkungen“ löschen.
C7 6. SAMMLUNGEN VON DOKUMENTEN #
Sie können eine Sammlung erstellen, die aus dem Dokument und anderen unter dieser Lizenz veröffentlichten Dokumenten besteht, und die einzelnen Kopien dieser Lizenz in den verschiedenen Dokumenten durch eine einzige Kopie ersetzen, die in der Sammlung enthalten ist, vorausgesetzt, Sie befolgen die Regeln dieser Lizenz für die wörtliche Kopie jedes der Dokumente in allen anderen Aspekten.
Sie können ein einzelnes Dokument aus einer solchen Sammlung entnehmen und es einzeln unter dieser Lizenz verbreiten, vorausgesetzt, Sie fügen eine Kopie dieser Lizenz in das extrahierte Dokument ein und befolgen diese Lizenz in allen anderen Aspekten bezüglich der wörtlichen Kopie dieses Dokuments.
C8 7. AGGREGATION MIT UNABHÄNGIGEN WERKEN #
Eine Zusammenstellung des Dokuments oder seiner Ableitungen mit anderen separaten und unabhängigen Dokumenten oder Werken auf einem Datenträger oder Verbreitungsmedium wird als "Sammlung" bezeichnet, wenn das aus der Zusammenstellung resultierende Urheberrecht nicht verwendet wird, um die gesetzlichen Rechte der Benutzer der Zusammenstellung über das hinaus einzuschränken, was die einzelnen Werke erlauben. Wenn das Dokument in einer Sammlung enthalten ist, gilt diese Lizenz nicht für die anderen Werke in der Sammlung, die selbst keine Ableitungen des Dokuments sind.
Wenn die Anforderungen an die Umschlagtexte aus Abschnitt 3 auf diese Kopien des Dokuments anwendbar sind, und wenn das Dokument weniger als die Hälfte der gesamten Aggregation ausmacht, können die Umschlagtexte des Dokuments auf Umschlägen platziert werden, die das Dokument innerhalb der Aggregation umschließen, oder auf das elektronische Äquivalent von Umschlägen, wenn das Dokument in elektronischer Form vorliegt. Andernfalls müssen sie auf gedruckten Umschlägen erscheinen, die die gesamte Sammlung umschließen.
C9 8. ÜBERSETZUNG #
Übersetzung wird als eine Art Modifikation betrachtet, sodass Sie Übersetzungen des Dokuments unter den Bedingungen von Abschnitt 4 verbreiten dürfen. Das Ersetzen unveränderlicher Abschnitte durch Übersetzungen erfordert eine besondere Genehmigung der Urheberrechtsinhaber, aber Sie können Übersetzungen einiger oder aller unveränderlichen Abschnitte zusätzlich zu den Originalversionen dieser unveränderlichen Abschnitte einfügen. Sie können eine Übersetzung dieser Lizenz und aller Lizenzhinweise im Dokument sowie aller Garantieausschlüsse hinzufügen, vorausgesetzt, dass Sie auch die originale englische Version dieser Lizenz und die originalen Versionen dieser Hinweise und Ausschlüsse beifügen. Im Falle eines Konflikts zwischen der Übersetzung und der Originalversion dieser Lizenz oder eines Hinweises oder Ausschlusses hat die Originalversion Vorrang.
Wenn ein Abschnitt im Dokument mit "Danksagungen", "Widmungen" oder "Historie" überschrieben ist, erfordert die Anforderung (Abschnitt 4), den Titel zu bewahren (Abschnitt 1), typischerweise eine Änderung des tatsächlichen Titels.
C10 9. ABSCHLUSSBESTIMMUNGEN #
Sie dürfen das Dokument nicht kopieren, ändern, unterlizenzieren oder verteilen, es sei denn, dies ist ausdrücklich unter dieser Lizenz vorgesehen. Jeder andere Versuch, das Dokument zu kopieren, zu ändern, weiterzulizenzieren oder zu verbreiten, ist ungültig und führt automatisch zum Verlust Ihrer Rechte unter dieser Lizenz. Personen, die von Ihnen gemäß dieser Lizenz Kopien oder Rechte erhalten haben, verlieren ihre Lizenz jedoch nicht, solange sie die Bestimmungen vollständig einhalten.
C11 1. SPÄTERE ÜBERARBEITUNGEN DIESER LIZENZ #
Die Free Software Foundation kann von Zeit zu Zeit neue, überarbeitete Versionen der GNU Freien Dokumentationslizenz veröffentlichen. Solche neuen Versionen werden im Geist der vorliegenden Version ähnlich sein, können sich jedoch in Details unterscheiden, um neuen Problemen oder Bedenken gerecht zu werden. Siehe https://www.gnu.org/copyleft/.
Jede Version dieser Lizenz erhält eine eigene Versionsnummer. Wenn das Dokument angibt, dass eine bestimmte nummerierte Version dieser Lizenz "oder eine spätere Version" darauf anwendbar ist, haben Sie die Wahl, entweder den Bedingungen dieser angegebenen Version oder den Bedingungen jeder späteren Version zu folgen, die von der Free Software Foundation veröffentlicht wurde (nicht als Entwurf). Wenn das Dokument keine Versionsnummer angibt, können Sie jede Version auswählen, die jemals (nicht als Entwurf) von der Free Software Foundation veröffentlicht wurde.
C12 ANHANG: Wie Sie diese Lizenz für Ihre Dokumente verwenden können #
Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".
Wenn Sie unveränderliche Abschnitte, Front-Cover-Texte und Back-Cover-Texte haben, ersetzen Sie die Zeile „with…Texts.“ durch die folgende:
with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
Wenn Sie unveränderliche Abschnitte ohne Umschlagtexte oder eine andere Kombination der drei haben, kombinieren Sie diese beiden Alternativen, um der Situation gerecht zu werden.
Wenn Ihr Dokument nicht-triviale Beispiele von Programmcode enthält, empfehlen wir, diese Beispiele parallel unter einer freien Softwarelizenz Ihrer Wahl – zum Beispiel der GNU General Public License – zu veröffentlichen, um deren Nutzung in freier Software zu ermöglichen.



