- Release notes
- Copyright
- 1 Introduction
- 2 Configuration requise
- 3 Installation à l’aide de l’interface utilisateur Rancher
- 4 Installation à l’aide de la ligne de commande
- 5 Haute disponibilité configuration
- 6 Configurez Rancher en tant que fournisseur d’identité OIDC
- 7 Questions fréquemment posées
- 8 Dépannage
- A Surcharge du graphique SUSE Private Registry Helm
- B Exemple d’un graphique Registre privé de configuration HA Helm
- C Licence de Documentation Libre GNU
- C1 0. PRÉAMBULE
- C2 1. DOMAINE D’APPLICATION ET DÉFINITIONS
- C3 2. COPIE MOT POUR MOT
- C4 3. COPIE EN QUANTITÉ
- C5 4. MODIFICATIONS
- C6 5. COMBINAISON DE DOCUMENTS
- C7 6. ENSEMBLES DE DOCUMENTS
- C8 7. AGRÉGATION AVEC DES TRAVAUX INDÉPENDANTS
- C9 8. TRADUCTION
- C10 9. RÉSILIATION
- C11 1. FUTURE RÉVISIONS DE CETTE LICENCE
- C12 ADDENDUM : comment utiliser cette Licence pour vos documents
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 Collection d’applications
Supports SUSE Sécurité 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)
Copyright #
Mention de copyright © 20XX–2026-07-09 SUSE LLC et contributeurs. Tous droits réservés.
Il est permis de copier, distribuer et/ou modifier ce document conformément aux termes de la licence de documentation libre GNU, version 1.2 ou (au choix) version 1.3, avec la section invariante constituée par cette mention de copyright et la licence. Une copie de la licence, version 1.2, est incluse dans la section intitulée 'Licence de documentation libre GNU'.
Pour les marques SUSE, voir https://www.suse.com/company/legal/. Toutes les marques de tiers sont la propriété de leurs propriétaires respectifs. Les symboles de marque (®, ™, etc.) désignent des marques de SUSE et de ses sociétés affiliées. Des astérisques (*) désignent des marques commerciales de fabricants tiers.
Toutes les informations de cet ouvrage ont été regroupées avec le plus grand soin. Cela ne garantit cependant pas sa complète exactitude. Ni SUSE LLC, ni ses sociétés affiliées, ni les auteurs, ni les traducteurs ne sauraient être tenus responsables d’éventuelles erreurs ou des conséquences qui en découlent.
1 Introduction #
1.1 Qu’est-ce que SUSE Private Registry ? #
SUSE Private Registry (Registre privé) est un registre de conteneurs sur site. Registre privé est conçu pour les clients SUSE ayant besoin d’un registre de conteneurs qui fonctionne bien avec d’autres services et produits SUSE.
1.2 Quels sont les avantages de SUSE Private Registry? #
Registre privé est basé sur le projet Harbor et inclut toutes ses fonctionnalités principales ainsi que des avantages supplémentaires. Par exemple :
Registre de conteneurs sur site. Registre privé est un registre de conteneurs hébergé localement avec accès aux services de registre SUSE en ligne.
Sécurité. Registre privé offre des considérations de sécurité pour les environnements conteneurisés. Il inclut l’authentification, l’autorisation et l’analyse des vulnérabilités.
Flexibilité de déploiement. Vous pouvez installer Registre privé sur un environnement Kubernetes tel que SUSE Rancher Prime : RKE2. Vous pouvez également déployer Registre privé avec une configuration de haute disponibilité.
Gestion des utilisateurs. Registre privé fournit un mécanisme d’authentification et d’autorisation avec un contrôle d’accès en fonction du rôle (RBAC).
Interface utilisateur. En plus d’une interface de ligne de commande, vous pouvez administrer Registre privé via une interface utilisateur Web.
1.3 Comment fonctionne SUSE Private Registry ? #
Registre privé est livré sous forme de conteneurs Open Container Initiative (OCI) et est prévu pour être déployé sur un cluster Kubernetes. Registre privé se compose des conteneurs suivants:
harbor-core: le composant principal du registre Harbor, responsable de la gestion des fonctionnalités de base telles que la gestion des projets, des dépôts et des interactions avec les utilisateurs.
harbor-db: le conteneur de base de données qui stocke toutes les métadonnées liées aux images, aux utilisateurs et aux configurations pour le registre Harbor.
harbor-jobservice: un service qui gère les tâches en arrière-plan, telles que la réplication d’images et les tâches planifiées, garantissant un traitement efficace des opérations au sein du registre.
harbor-nginx: le proxy inverse et l’équilibreur de charge qui dirige les requêtes entrantes vers les services Harbor appropriés, fournissant un point d’entrée unique pour les utilisateurs.
harbor-portal: l’interface utilisateur Web qui permet aux utilisateurs d’interagir avec le registre Harbor, de gérer les images et de configurer les paramètres via une interface graphique.
harbor-registry: le conteneur qui sert de véritable back-end de stockage d’images, gérant le stockage et la récupération des images de conteneurs.
harbor-registryctl: un outil de ligne de commande pour gérer le registre Harbor, permettant aux utilisateurs d’effectuer des tâches administratives et des configurations directement depuis le terminal.
harbor-trivy-adapter: un conteneur qui intègre le scanner de vulnérabilités Trivy avec Harbor, permettant un scan de sécurité automatisé des images de conteneurs pour détecter les vulnérabilités.
harbor-exporter: le conteneur qui exporte les métriques Harbor dans un format pouvant être collecté par Prometheus pour la surveillance et l’observabilité.
harbor-valkey: un magasin de clés-valeurs en mémoire.
Après le déploiement, vous pouvez vous connecter via l’interface utilisateur Web. Après une authentification et une autorisation réussies, vous pouvez configurer plusieurs aspects du produit, par exemple:
Configurer les paramètres globaux, par exemple pour définir le registre en mode lecture seule ou limiter les autorisations de création de projets.
Sélectionnez une méthode d'authentification.
Ajoutez des utilisateurs lorsque vous êtes en mode d’authentification par base de données et attribuez le rôle d’administrateur du système à d’autres utilisateurs.
Appliquez des quotas de ressources aux projets.
Configurez la réplication des images entre les instances Registre privé.
1.4 informations supplémentaires #
Référez-vous aux sources suivantes pour obtenir plus de détails:
La page d’accueil du projet Harbor est à https://goharbor.io/.
L’utilisation de Harbor est détaillée dans https://goharbor.io/docs.
2 Configuration requise #
Cette section décrit les prérequis minimaux de la plateforme et la taille de production recommandée pour SUSE Private Registry.
2.1 Conditions préalables #
Une version 1.20 ou supérieure Kubernetesdu cluster
Une Helmversion 3.2.0 ou supérieure de
Support du provisionneur de volume persistant (PV) dans votre infrastructure
Un abonnement actif pour SUSE Private Registry
2.2 Recommandations matérielles et de dimensionnement : #
Utilisez ces valeurs comme point de départ pour la production. Ajustez en fonction de la politique de rétention, du renouvellement d’images, de la concurrence des analyses et du trafic de réplication. ==== Base de référence du cluster
| Étendue | Point de départ recommandé |
|---|---|
Nœuds de travail | Minimum de 3 nœuds de travail |
Type de nœud : | Minimum de 4 vCPU et 16 GiB de RAM par nœud |
Type de nœud préféré : | 8 vCPU et 32 GiB de RAM par nœud pour une plus grande concurrence d’analyse et de poussée |
Ces recommandations sont conformes aux directives de Rancher pour RKE2 Kubernetes. Pour plus de détails, voir exigences d’installation de RKE2 Kubernetes.
2.2.1 Base de référence de stockage persistant : #
| Composant | Taille par défaut du graphique : | Taille de départ recommandée : |
|---|---|---|
Données du registre : | 5 Gi | 500 Gi à 1 Ti |
Cache et base de données Trivy : | 5 Gi | 20 Gi à 50 Gi |
Journaux de Jobservice : | 1 Gi | 10 Gi |
PostgreSQL interne (si utilisé) : | 1 Gi | 20 Gi minimum |
Valkey interne (si utilisé) : | 1 Gi | 20 Gi minimum |
Les valeurs par défaut du graphique sont orientées vers l’installation et ne doivent pas être utilisées comme valeurs de capacité de production à long terme.
3 Installation à l’aide de l’interface utilisateur Rancher #
Pour installer SUSE Private Registry en utilisant l’interface utilisateur Rancher, vous devez répondre aux exigences suivantes et suivre les étapes ci-dessous.
3.1 Quelles exigences dois-je respecter? #
Un environnement avec un ou plusieurs clusters Kubernetes en cours d’exécution et supportés, et Rancher déployé. Reportez-vous aux Rancherexigences d’installation pour plus de détails.
Identifiants SUSE Registre pour un compte avec un abonnement SUSE Private Registry (un nom d’utilisateur et un mot de passe/token). Reportez-vous à Obtenir les Kubernetes secrets de SCC pour plus de détails.
3.2 Quelles sont les étapes pour installer SUSE Private Registry en utilisant l’interface utilisateur Rancher? #
Connectez-vous à Rancher.
Cliquez sur le menu trois lignes (☰) dans le coin supérieur gauche, sélectionnez , et cliquez sur le nom de votre cluster, généralement
local.Dans le menu de gauche, sélectionnez › .
Cliquez sur le bouton en haut à droite et complétez le formulaire qui s’ouvre:
Cible: Sélectionnez .
Nom: Entrez un nom pour le dépôt, tel que
SUSE Private Registry.Description: Optionnellement, ajoutez une description du dépôt.
URL d’hôte du dépôt OCI: Enter `oci://registry.suse.com/private-registry/private-registry-helm`.
Authentification: Changez en
Create an HTTP Basic Auth Secretet entrez le nom d’utilisateur et le mot de passe des identifiants du registre.
Confirmez avec .
Cliquez sur le menu trois lignes (☰) dans le coin supérieur gauche et sélectionnez .
Basculez vers le cluster auquel vous souhaitez ajouter le secret et cliquez sur .
Pour naviguer vers la gestion des secrets, sélectionnez › et cliquez sur en haut à droite.
Sélectionnez le secret puis l’espace de noms
private-registry.Entrez
suse-registrycomme nom pour le secret.Remplissez les champs
usernameetpasswordavec les identifiants SUSE obtenus dans Section 3.1, “Quelles exigences dois-je respecter?”.
Dans le menu principal à gauche, sélectionnez › .
Entrez le nom du dépôt SUSE Private Registry assigné dans la zone de recherche. Par exemple :
SUSE Private Registry. Si cela n’apparaît pas dans la liste, cliquez sur .Cliquez sur le chart et consultez le
README.md.Vous pouvez personnaliser les valeurs d’installation si vous le souhaitez. Cliquez soit sur les sections à gauche du panneau
Edit Optionspour voir toutes les valeurs que vous pouvez configurer, soit modifiez les valeurs directement dans le fichier YAML du chart.Dans le coin supérieur droit, cliquez sur .
4 Installation à l’aide de la ligne de commande #
Les procédures suivantes décrivent comment déployer SUSE Private Registry (Registre privé) sur un cluster Kubernetes.
4.1 Obtention des secrets Kubernetes depuis le SUSE Centre Client #
Pour télécharger et installer les images Registre privé depuis SUSE Registre, vous avez besoin d’un secret Kubernetes avec des identifiants de miroir SUSE Centre Client (SCC). Pour obtenir les identifiants de SCC, suivez ces étapes:
Visitez SUSE Centre Client à https://scc.suse.com et connectez-vous.
Sélectionnez l’organisation avec un abonnement Registre privé actif dans la barre latérale gauche.
Sélectionnez
Proxiesdans le menu supérieur. Les identifiants sont affichés dans le coin supérieur droit.Pour voir le mot de passe, cliquez sur l’icône 'œil'.
Créez un fichier
password.txtcontenant le mot de passe obtenu.>head -1 ./password.txt | helm registry login registry.suse.com \ --username <PRIVATE_REGISTRY_USERNAME> --password-stdinCréez un espace de noms pour SUSE Registre.
>kubectl create namespace <PRIVATE_REGISTRY_NAMESPACE>Stockez les identifiants de miroir récupérés depuis SCC en tant que secrets Kubernetes en exécutant la commande suivante:
>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)Optionnellement, pour utiliser une communication chiffrée TLS, créez un secret TLS à partir de vos fichiers de clé privée et de certificat.
>kubectl create secret tls suse-registry-tls \ --namespace <PRIVATE_REGISTRY_NAMESPACE> \ --cert=<CERTIFICATE>.pem \ --key=<PRIVATE_KEY>.pem
4.2 Installation et exécution de Registre privé à l’aide de Helm #
La procédure suivante décrit comment installer Registre privé à l’aide de Helm.
Remplacez <RELEASE_NAME> par votre nom de version personnalisé pour le déploiement du graphique Helm.
Connectez-vous à SUSE Registre en utilisant les identifiants de miroir SCC obtenus.
>head -1 ./password.txt | helm registry login registry.suse.com \ --username <SUSE_REGISTRY_USERNAME> --password-stdinInstallez la dernière version du graphique Registre privé Helm.
>helm install <RELEASE_NAME> \ oci://registry.suse.com/private-registry/private-registry-helm \ --namespace <PRIVATE_REGISTRY_NAMESPACE>Lorsque vous installez le graphique Registre privé Helm, il affiche la sortie suivante:
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)À partir de la version 4 de Helm, vous pouvez utiliser un digest pour spécifier le graphique à installer:
>helm install <RELEASE_NAME> \ oci://registry.suse.com/private-registry/private-registry-helm@sha256:<DIAGEST_OF_CHART_TO_INSTALL> \ --namespace <PRIVATE_REGISTRY_NAMESPACE>
Pour obtenir le mot de passe de l’utilisateur administrateur, vous pouvez également exécuter la commande suivante:
>kubectl get secret \ --namespace <PRIVATE_REGISTRY_NAMESPACE> \ --harbor-core <RELEASE_NAME> \ -o jsonpath="{.data.HARBOR_ADMIN_PASSWORD}" | base64 -d; echoIl est possible d’utiliser le watcher kstatus avec l’option '--wait=watcher' pour s’assurer que tous les objets sont prêts à terminer l’installation. L’utilisation du watcher peut prolonger la durée de la commande.
Pour remplacer l’installation par défaut par des valeurs personnalisées du fichier suse_registry_override.yaml, référez-vous à Appendix A, Surcharge du graphique SUSE Private Registry Helm.
La commande commence à déployer plusieurs conteneurs liés et peut prendre plusieurs minutes pour se terminer. Elle imprime également un message avec l’URL du portail Web Registre privé et des commandes pour obtenir les identifiants de l’administrateur.
4.3 Mise à niveau de Registre privé #
Pour mettre à niveau la version du graphique Helm vers une version plus récente spécifique, exécutez la commande suivante:
>helm upgrade <RELEASE_NAME> \
oci://registry.suse.com/private-registry/private-registry-helm \
--version <NEW_VERSION_OF_HELM_CHART> \
--namespace <PRIVATE_REGISTRY_NAMESPACE> \Le digest n’est possible qu’avec Helm la version 4 de.
>helm update <RELEASE_NAME> \
oci://registry.suse.com/private-registry/private-registry-helm@sha256:<DIAGEST_OF_CHART_TO_INSTALL> \
--namespace <PRIVATE_REGISTRY_NAMESPACE> \5 Haute disponibilité configuration #
Vous pouvez utiliser Helm pour déployer le hautement disponible (HA) Registre privé sur un cluster Kubernetes. Le Configuration HA garantit que les utilisateurs ne subissent pas d’interruptions de service si l’un des nœuds sur lequel Registre privé fonctionne devient indisponible.
5.1 Architecture du Configuration HA #
La plupart des composants du Registre privé sont désormais sans état. Par conséquent, nous pouvons les mettre à l’échelle en augmentant le nombre de réplicas de pods, garantissant qu’ils s’exécutent sur plusieurs nœuds de travail. Les services Kubernetes assurent la connectivité entre les pods.
Pour le stockage, les utilisateurs doivent fournir un PostgreSQL HA et un cluster Valkey ou Redis pour les données de l’application, ainsi que des PVC ou un stockage d’objets pour stocker des images et des graphiques.
image::private-registry-ha.png[Registre privé Configuration HA, width=100%]. Registre privé Configuration HA Un cluster Kubernetes avec Ingress dans Configuration HA utilisant HA PostgreSQL et HA Valkey.
5.2 Conditions préalables #
Un Kubernetes cluster version 1.20 ou supérieure
Helm version 3.2.0 ou supérieure
Contrôleur HA Ingress (Registre privé ne gère pas le point de terminaison externe)
HA PostgreSQL 9.6+ (Registre privé ne gère pas le déploiement de la base de données HA)
HA Valkey ou Redis (Registre privé ne gère pas le déploiement de HA Valkey ou Redis)
Requête de volume persistant (PVC) qui peut être partagée entre les nœuds ou avec un stockage d’objets externe
Un abonnement actif pour SUSE Private Registry
5.3 Déploiement de Registre privé avec HA #
Téléchargez le graphique Registre privé Helm.
$ helm pull oci://registry.suse.com/private-registry/private-registry-helm --untar
Update the deployment parameters to match your requirements. Refer to Appendix B, Exemple d’un graphique Registre privé de configuration HA Helm for an example Helm chart for Registre privé HA setup. Refer to Appendix A, Surcharge du graphique SUSE Private Registry Helm for a complete list of values to specify or override.
Install the Registre privé Helm chart. Replace
<RELEASE_NAME>with your custom release name for the Helm chart deployment.$ helm install <RELEASE_NAME> private-registry-helm/
6 Configurez Rancher en tant que fournisseur d’identité OIDC #
Ce guide explique comment configurer Rancher pour agir en tant que fournisseur d’identité OIDC, permettant aux utilisateurs de s’authentifier dans des applications externes telles que SUSE Private Registry en utilisant leurs identifiants Rancher.
6.1 Étape 1 : Activez le drapeau de fonctionnalité oidc-provider #
Connectez-vous à l’interface utilisateur de Rancher en tant qu’administrateur.
Cliquez sur le menu trois lignes (☰) en haut à gauche et allez à › .
Trouvez le drapeau
oidc-provider, cliquez sur l’icône Plus d’actions (⋮), puis cliquez sur Activer.
6.2 Étape 2 : Créez une ressource OIDCClient #
Rancher utilise une ressource personnalisée OIDCClient pour enregistrer les applications en aval.
Créez un fichier nommé
rancher-oidc-client.yamlavec le contenu suivant: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"Appliquez le fichier au cluster où Rancher est en cours d’exécution:
>kubectl apply -f rancher-oidc-client.yaml
6.3 Étape 3: Récupérez l’ID client et le secret #
Une fois la ressource créée, Rancher remplit automatiquement le clientID et provisionne un secret Kubernetes contenant le clientSecret.
Obtenez l’ID client généré:
>kubectl get oidcclient spr-client -o jsonpath="{.status.clientID}"Récupérez le secret client. N’oubliez pas de remplacer
<YOUR_CLIENT_ID>par l’ID récupéré à l’étape précédente:>kubectl get secret <YOUR_CLIENT_ID> -n cattle-oidc-client-secrets -o jsonpath="{.data.client-secret-1}" | base64 -d
6.4 Étape 4: Configurez SUSE Private Registry #
Vous pouvez configurer SUSE Private Registry pour utiliser Rancher comme fournisseur OIDC en passant les valeurs via Helm.
Utilisez le bloc core.configureUserSettings dans votre configuration values-oidc.yaml.
L’exemple suivant est un bloc utilisant votre Rancher point de terminaison et les identifiants récupérés ci-dessus.
Remplacez les valeurs de <YOUR_CLIENT_ID> et <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"
}Assurez-vous que oidc_verify_cert est défini sur false si votre instance Rancher utilise des certificats auto-signés.
En spécifiant oidc_admin_group, tout utilisateur Rancher appartenant au groupe spr-admins se verra automatiquement octroyer des privilèges d’administrateur système dans SUSE Private Registry.
7 Questions fréquemment posées #
7.1 Aperçu du produit et différenciateurs #
- Quel type d’abonnement les clients ont-ils besoin pour SUSE Private Registry ?
Il est inclus dans Rancher la suite et proposé en tant que produit complémentaire pour Rancher Prime.
Le prix du produit complémentaire est le même que celui des autres produits complémentaires.
- Quels sont les différenciateurs avec Harbor (de la Collection d’Applications ou en amont) ?
Utilisez SUSE Private Registry si vous avez besoin:
Support de niveau 3 (L3) pour les problèmes de produit.
Un cycle de publication prévisible.
Images corrigées pour les vulnérabilités connues. Les images Harbor en amont de Docker Hub contiennent souvent de nombreuses vulnérabilités non corrigées.
Au fil du temps, SUSE ajoutera également des intégrations prêtes à l’emploi avec Rancher et priorisera les demandes de fonctionnalités des clients.
- Les clients doivent-ils acheter le même nombre d’abonnements au produit complémentaire SUSE Private Registry que d’abonnements Rancher Prime ?
Oui, tout comme d’autres produits complémentaires tels que SUSE Sécurité. Un avantage supplémentaire du modèle d’abonnement SUSE Private Registry est qu’il permet aux clients d’exécuter autant de déploiements qu’ils le souhaitent.
7.2 Relation avec Harbor en amont #
- Comment le cycle de publication s’aligne-t-il avec Harbor en amont ?
Le cycle de publication de SUSE Private Registry est indépendant du cycle de publication de Harbor en amont.
Lors de la publication de nouvelles versions de SUSE Private Registry, SUSE vise à inclure la dernière version du projet Harbor en amont qui répond aux exigences d’assurance qualité et de maintenance de SUSE.
- Allez-vous publier des considérations de migration pour les clients exécutant Harbor à partir d’autres sources ?
Pas pour le moment.
7.3 Déploiement et installation #
- Supportez-vous l’installation de SUSE Private Registry via docker-compose ?
Non. Vous devez installer et configurer SUSE Private Registry en utilisant son tableau Helm. Ce tableau est également utilisé pour la gestion continue (opérations du jour 2) et peut être intégré aux flux de travail GitOps.
- Recommandez-vous des déploiements sur le cluster local (Rancher Manager) ?
Non. SUSE recommande de déployer SUSE Private Registry sur un cluster en aval. Cela rend le registre accessible à d’autres clusters en aval qui ont besoin de consommer des images.
- Quelles sont les meilleures pratiques de déploiement pour un environnement à haute disponibilité (HA) ?
Pour HA, ne déployez pas SUSE Private Registry sur Rancher le cluster de gestion pour éviter la contention des ressources.
Vous pouvez déployer SUSE Private Registry sur un cluster dédié, ou sur un ou plusieurs de vos clusters d’application.
Pour obtenir des instructions, reportez-vous à Chapter 5, Haute disponibilité configuration. Notez que vous devez fournir vos propres composants HA pour la base de données Postgres, le serveur Valkey ou Redis, et le contrôleur Ingress. Ces composants ne sont pas déployés par le tableau SUSE Private Registry Helm et ne sont pas supportés par SUSE.
- Le tableau SUSE Private Registry Helm sera-t-il ajouté à la Collection d’Applications à l’avenir ?
Oui, SUSE prévoit de publier le tableau là-bas à l’avenir.
- Expédiez-vous un opérateur Kubernetes ?
SUSE Private Registry n’est pas livré avec un opérateur dédié. Il est installé et géré en utilisant son tableau Helm, qui peut être intégré avec GitOps. SUSE continue d’évaluer la gestion basée sur des opérateurs pour les futures versions.
7.4 Sécurité, analyse et signature #
- Intégrez-vous un outil de signature dans SUSE Private Registry ?
SUSE Private Registry ne signe pas les images lui-même, mais il peut stocker, distribuer et vérifier les signatures compatibles avec l’Open Container Initiative (OCI).
Un outil largement utilisé est
cosign, qui peut signer des images et stocker les signatures dans SUSE Private Registry.Les signatures de
cosignattachées aux images sont consultables et téléchargeables depuis le portail SUSE Private Registry.- Est-il possible de signer des images avec Notary ou Cosign pour approbation lors du processus de déploiement ?
SUSE Private Registry peut stocker, distribuer et vérifier les signatures
cosign.SUSE Private Registry lui-même ne signe pas les images. Vous devez signer les images pendant leur processus de construction, puis télécharger la signature dans le registre avec l’image.
Notary n’est pas inclus ni supporté avec SUSE Private Registry.
- Les images sont-elles scannées pour les vulnérabilités et les expositions communes (CVE) uniquement avec Trivy, ou peut-on également utiliser SUSE Security (NeuVector) ?
Les images sont scannées avec Trivy, qui est prêt à l’emploi. SUSE Security peut être ajouté en plus ou en remplacement de Trivy.
- Est-il possible d’exécuter ClamAV ou des analyses de logiciels malveillants similaires ?
Par défaut, SUSE Private Registry scanne les images en utilisant Trivy. Vous pouvez également configurer SUSE Security (NeuVector) comme scanner.
- Dans le scénario de cache de pull-through, les critères de vulnérabilité seront-ils appliqués ?
Oui, mais avec une limitation connue. En raison des Harbor problèmes en amont, les critères de vulnérabilité ne sont pas appliqués lors du premier pull d’une image car le scan n’est pas encore terminé.
Pour une couverture complète, associez SUSE Private Registry avec SUSE Security contrôles d’admission.
- Les images de SUSE Private Registry sont-elles durcies ?
Oui. Les images de conteneur pour SUSE Private Registry sont durcies. Elles sont basées sur SUSE Linux Enterprise Base Container Images (SLE BCI) et construites avec le même SUSE Build Service de niveau entreprise utilisé pour SUSE Linux Enterprise. Cela garantit une chaîne d’approvisionnement sécurisée. Les images sont également signées, et SUSE publie leurs attestations de niveaux de chaîne d’approvisionnement pour les artefacts logiciels (SLSA).
- Les images de SUSE Private Registry sont-elles signées? Comment ?
Les images sont signées avec
cosign. Vous pouvez les vérifier en sauvegardant la clé de signature au format PEM publiée à KB 000021411.Ensuite, exécutez, par exemple:
cosign verify --key container-key.pem registry.suse.com/private-registry/harbor-portal:latest
7.5 Réplication et synchronisation #
- Y a-t-il un plan pour un plug-in pour synchroniser avec SUSE Registre et SUSE Collection d’applications ?
Oui, une telle fonctionnalité est prévue.
- SUSE Private Registry propose-t-il une réplication multi-sites ?
Oui. SUSE Private Registry prend en charge la réplication d’images multi-sites basée sur des stratégies (pull et push). Vous pouvez synchroniser des images à travers plusieurs déploiements de SUSE Private Registry tout en gardant chaque registre indépendant.
7.6 Fonctionnalités et intégration avec Rancher #
- Y a-t-il un plan pour intégrer le Registre au sein de Rancher en utilisant une Extension ?
Oui. SUSE prévoit une intégration plus approfondie avec Rancher Prime et d’autres offres. Les améliorations futures envisagées incluent l’intégration de l’authentification unique (SSO), une configuration simplifiée pour les scanners SUSE Sécurité et le miroir de la Collection d’Applications, la surveillance avec SUSE Observabilité, et une extension de l’interface utilisateur Rancher.
- SUSE ajoutera-t-il le Registre au Catalogue de Formation ?
Cela n’est pas encore prévu. Si vous êtes intéressé par le matériel de formation, contactez SUSE pour discuter des possibilités avec l’équipe de formation.
7.7 Support et documentation #
- Y a-t-il une stratégie de support pour SUSE Private Registry ?
Oui. La stratégie de support de SUSE Private Registry est la même que celle de tout autre produit complémentaire Rancher Prime.
- Si la documentation de SUSE Private Registry manque d’informations, puis-je me référer à la documentation officielle de Harbor ?
Oui. Puisque SUSE Private Registry est basé sur Harbor, la documentation officielle de Harbor est une ressource utile. Pour les fonctionnalités spécifiques à la version SUSE, référez-vous à la documentation de SUSE Private Registry.
Le Release notes précise quelle version Harbor en amont correspond à votre version SUSE Private Registry.
8 Dépannage #
Cette section fournit des solutions aux problèmes que vous pourriez rencontrer lors du déploiement ou de l’utilisation de SUSE Private Registry.
- Je rencontre l’erreur
401 unauthorizedlorsque j’essaie d’installer SUSE Private Registry. La version complète du message d’erreur est la suivante:
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]]
Pour installer et utiliser SUSE Private Registry, vous avez besoin des éléments suivants:
Un abonnement éligible qui inclut ce produit, tel qu’un abonnement Rancher Suite ou un abonnement produit complémentaire SUSE Private Registry. Si vous n’avez pas d’abonnement éligible, contactez votre SUSE représentant.
Connectez-vous à SUSE Registre avec Helm en utilisant les identifiants de mise en miroir SCC de l’organisation SCC qui détient l’abonnement. Pour plus d’informations, reportez-vous à Section 4.1, “Obtention des secrets Kubernetes depuis le SUSE Centre Client”.
A Surcharge du graphique SUSE Private Registry Helm #
Le graphique SUSE Private Registry (Registre privé) Helm est livré avec des valeurs par défaut. Vous pouvez ajuster Helm l’installation du graphique de l’une des manières suivantes:
Ajoutez des paramètres spécifiques aux indicateurs
--setsur la ligne de commandehelm install, par exemple:$ 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 Exemples de fichiers de surcharge SUSE Registre Helm #
expose : type : ingress 1 ingress : hosts : core : <PRIVATE_REGISTRY_FQDN> 2 externalURL : https://<PRIVATE_REGISTRY_FQDN> 3 harborAdminPassword : "<MY_PASSWORD>" 4 database : internal : password : "<MY_PASSWORD_POSTGRESQL>" redis : internal : password : "<MY_PASSWORD_REDIS>"
Comment SUSE Registre est exposé. Peut être | |
Nom d’hôte pour la configuration réseau interne Kubernetes. | |
URL où l’application SUSE Registre s’exécute. Il est utilisé pour générer des liens dans l’interface utilisateur, des redirections et également pour les réponses API. | |
Le mot de passe administrateur de l’application. |
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 database : internal : password : "<MY_PASSWORD_POSTGRESQL>" redis : internal : password : "<MY_PASSWORD_REDIS>"
Comment SUSE Registre est exposé. Peut être | |
Peut être | |
Lors de l’utilisation du chiffrement TLS, ce champ doit correspondre à la valeur | |
URL où l’application SUSE Registre s’exécute. Il est utilisé pour générer des liens dans l’interface utilisateur, des redirections et également pour les réponses API. | |
Le mot de passe administrateur de l’application. |
A2 Surcharge Helm des paramètres et valeurs du graphique. #
Les tableaux suivants énumèrent tous les paramètres avec des descriptions que vous pouvez utiliser pour surcharger les valeurs d’installation par défaut.
global.imageRegistryDéfinit une surcharge globale pour le registre d’images de conteneurs utilisé pour toutes les images.
global.imagePullSecretsDéfinit des secrets de tirage globaux pour accéder au registre d’images de conteneurs.
harborAdminPasswordDéfinit le mot de passe initial pour l’administrateur Harbor. Modifiez-le depuis le portail après le déploiement. La valeur par défaut est
Harbor12345.externalURLSpécifie l’URL externe pour le service
harbor-core. La valeur par défaut esthttps://core.harbor.domain.existingSecretAdminPasswordKeyDéfinit le nom de clé dans le secret contenant le mot de passe de l’administrateur Harbor. La valeur par défaut est
HARBOR_ADMIN_PASSWORD.imagePullSecretsDéfinit les noms
imagePullSecretspour tous les déploiements.updateStrategy.typeDéfinit la stratégie de mise à jour pour les déploiements avec des volumes persistants. Accepte
RollingUpdateouRecreate. UtilisezRecreatelorsque RWM pour les volumes n’est pas pris en charge. La valeur par défaut estRollingUpdate.logLevelDéfinit le niveau de journalisation pour les services Harbor. Accepte
fatal,error,warn,info,debugoutrace. La valeur par défaut estdebug.enableMigratehelmHookExécute la tâche de migration de base de données via le hook Helm. Lorsque
true, sépare la tâche de migration deharbor-core. La valeur par défaut estfalse.caSecretNameSpécifie le nom du secret contenant la clé
ca.crt.
proxy.httpProxySpécifie l’URL du serveur proxy HTTP. La valeur par défaut est
"".proxy.httpsProxySpécifie l’URL du serveur proxy HTTPS. La valeur par défaut est
"".proxy.noProxyDéfinit les URL qui contournent la configuration du proxy. La valeur par défaut est
127.0.0.1,localhost,.local,.internal.proxy.componentsDéfinit les composants qui utilisent la configuration du proxy. La valeur par défaut est
["core","jobservice","trivy"].
expose.typeSpécifie le type d’exposition du service:
ingress,clusterIP,nodePortouloadBalancer. La valeur par défaut estingress.expose.tls.enabledActive TLS. La valeur par défaut est
true.expose.tls.certSourceDéfinit la source du certificat TLS comme
auto,secretounone. La valeur par défaut estauto.expose.tls.auto.commonNameDéfinit le nom commun du certificat lorsque le type n’est pas
ingress.expose.tls.secret.secretNameSpécifie le nom du secret contenant
tls.crt(certificat) ettls.key(clé privée).expose.ingress.hosts.coreDéfinit l’hôte du service noyau Harbor dans la règle Ingress. La valeur par défaut est
core.harbor.domain.expose.ingress.controllerDéfinit le type de contrôleur Ingress. Prend en charge
default,gce,alb,f5-bigipetncp. La valeur par défaut estdefault.expose.ingress.kubeVersionOverrideSurcharge la version Kubernetes pour le templating Ingress.
expose.ingress.annotationsDéfinit les annotations Ingress.
expose.ingress.labelsDéfinit des étiquettes spécifiques à Ingress. La valeur par défaut est
{}.expose.clusterIP.nameDéfinit le nom du service ClusterIP. La valeur par défaut est
harbor.expose.clusterIP.annotationsDéfinit les annotations du service ClusterIP. La valeur par défaut est
{}.expose.clusterIP.ports.httpPortDéfinit le port du service HTTP. La valeur par défaut est
80.expose.clusterIP.ports.httpsPortDéfinit le port du service HTTPS. La valeur par défaut est
443.expose.clusterIP.labelsDéfinit des étiquettes spécifiques au ClusterIP. La valeur par défaut est
{}.expose.nodePort.nameDéfinit le nom du service NodePort. La valeur par défaut est
harbor.expose.nodePort.ports.http.portDéfinit le port du service HTTP. La valeur par défaut est
80.expose.nodePort.ports.http.nodePortDéfinit le port du nœud HTTP. La valeur par défaut est
30002.expose.nodePort.ports.https.portDéfinit le port du service HTTPS. La valeur par défaut est
443.expose.nodePort.ports.https.nodePortDéfinit le port du nœud HTTPS. La valeur par défaut est
30003.expose.nodePort.annotationsDéfinit les annotations NodePort.
expose.nodePort.labelsDéfinit des étiquettes spécifiques au NodePort. La valeur par défaut est
{}.expose.loadBalancer.nameDéfinit le nom du service. La valeur par défaut est
harbor.expose.loadBalancer.IPDéfinit l’IP du loadBalancer lorsque l’attribution d’IP est prise en charge. La valeur par défaut est
"".expose.loadBalancer.ports.httpPortDéfinit le port du service HTTP. La valeur par défaut est
80.expose.loadBalancer.ports.httpsPortDéfinit le port du service HTTPS. La valeur par défaut est
30002.expose.loadBalancer.annotationsDéfinit les annotations du service loadBalancer. La valeur par défaut est
{}.expose.loadBalancer.labelsDéfinit des étiquettes spécifiques au loadBalancer. La valeur par défaut est
{}.expose.loadBalancer.sourceRangesSpécifie les plages d’adresses IP pour loadBalancerSourceRanges. La valeur par défaut est
[].
persistence.enabledActive ou désactive la persistance des données. La valeur par défaut est
true.persistence.resourcePolicykeepempêche la suppression des PVC lors d’une opération de suppression Helm. Une valeur vide supprime les PVC après la suppression du graphique. La valeur par défaut estkeep.persistence.persistentVolumeClaim.registry.existingClaimLe PVC existant qui doit être créé manuellement avant d’être lié. Nécessite une spécification de subPath si le PVC est partagé avec d’autres composants.
persistence.persistentVolumeClaim.registry.storageClassLe
storageClassqui provisionne le volume.persistence.persistentVolumeClaim.registry.subPathLe sous-chemin dans le volume.
persistence.persistentVolumeClaim.registry.accessModeLe mode d’accès du volume. La valeur par défaut est
ReadWriteOnce.persistence.persistentVolumeClaim.registry.sizeLa taille du volume. La valeur par défaut est
5Gi.persistence.persistentVolumeClaim.registry.annotationsLes annotations du volume.
persistence.persistentVolumeClaim.jobservice.jobLog.existingClaimLe PVC existant qui doit être créé manuellement avant d’être lié. Nécessite une spécification de subPath si le PVC est partagé avec d’autres composants.
persistence.persistentVolumeClaim.jobservice.jobLog.storageClassLe
storageClassqui provisionne le volume.persistence.persistentVolumeClaim.jobservice.jobLog.subPathLe sous-chemin dans le volume.
persistence.persistentVolumeClaim.jobservice.jobLog.accessModeLe mode d’accès du volume. La valeur par défaut est
ReadWriteOnce.persistence.persistentVolumeClaim.jobservice.jobLog.sizeLa taille du volume. La valeur par défaut est
1Gi.persistence.persistentVolumeClaim.jobservice.jobLog.annotationsLes annotations du volume.
persistence.persistentVolumeClaim.database.existingClaimLe PVC existant qui doit être créé manuellement avant d’être lié. Nécessite une spécification de subPath si le PVC est partagé avec d’autres composants.
persistence.persistentVolumeClaim.database.storageClassLe
storageClassqui provisionne le volume.persistence.persistentVolumeClaim.database.subPathLe sous-chemin dans le volume. Ignoré lorsqu’une base de données externe est utilisée.
persistence.persistentVolumeClaim.database.accessModeLe mode d’accès du volume. Ignoré lorsqu’une base de données externe est utilisée. La valeur par défaut est
ReadWriteOnce.persistence.persistentVolumeClaim.database.sizeLa taille du volume. Ignoré lorsqu’une base de données externe est utilisée. La valeur par défaut est
1Gi.persistence.persistentVolumeClaim.database.annotationsLes annotations du volume.
persistence.persistentVolumeClaim.redis.existingClaimLe PVC existant qui doit être créé manuellement avant d’être lié. Nécessite une spécification de subPath si le PVC est partagé avec d’autres composants.
persistence.persistentVolumeClaim.redis.storageClassLe
storageClassqui provisionne le volume. Utilise la StorageClass par défaut si non spécifiée.persistence.persistentVolumeClaim.redis.subPathLe sous-chemin dans le volume. Ignoré lorsqu’un Valkey externe est utilisé.
persistence.persistentVolumeClaim.redis.accessModeLe mode d’accès du volume. Ignoré lorsqu’un Valkey externe est utilisé. La valeur par défaut est
ReadWriteOnce.persistence.persistentVolumeClaim.redis.sizeLa taille du volume. Ignoré lorsqu’un Valkey externe est utilisé. La valeur par défaut est
1Gi.persistence.persistentVolumeClaim.redis.annotationsLes annotations du volume.
persistence.persistentVolumeClaim.trivy.existingClaimLe PVC existant qui doit être créé manuellement avant d’être lié. Nécessite une spécification de subPath si le PVC est partagé avec d’autres composants.
persistence.persistentVolumeClaim.trivy.storageClassLe
storageClassqui provisionne le volume. Utilise la StorageClass par défaut si non spécifiée.persistence.persistentVolumeClaim.trivy.subPathLe sous-chemin dans le volume.
persistence.persistentVolumeClaim.trivy.accessModeLe mode d’accès du volume. La valeur par défaut est
ReadWriteOnce.persistence.persistentVolumeClaim.trivy.sizeLa taille du volume. La valeur par défaut est
1Gi.persistence.persistentVolumeClaim.trivy.annotationsLes annotations du volume.
persistence.imageChartStorage.disableredirectContrôle la gestion des redirections depuis les back-ends de contenu. Définir sur vrai pour désactiver les redirections pour les back-ends non pris en charge. La valeur par défaut est
false.persistence.imageChartStorage.caBundleSecretNameLe nom du secret contenant le bundle CA pour les certificats de service de stockage auto-signés.
persistence.imageChartStorage.typeLe type de stockage pour les images et les graphiques:
filesystem,azure,gcs,s3,swiftouoss. La valeur par défaut estfilesystem.persistence.imageChartStorage.gcs.existingSecretLe nom du secret existant contenant la clé JSON du compte de service GCS. La clé doit être
gcs-key.json. La valeur par défaut est"".persistence.imageChartStorage.gcs.useWorkloadIdentityActive l’utilisation de l’identité de charge de travail dans un cluster GKE. La valeur par défaut est
false.
nginx.image.repositoryLe dépôt d’images pour nginx. La valeur par défaut est
private-registry/harbor-nginx.nginx.image.tagLa balise d’image pour nginx.
nginx.replicasLe nombre de répliques à exécuter. La valeur par défaut est
1.nginx.revisionHistoryLimitLe nombre maximum de révisions anciennes de
ReplicaSetà conserver. La valeur par défaut est10.nginx.resourcesLes ressources de calcul allouées au conteneur. La valeur par défaut est
undefined.nginx.automountServiceAccountTokenContrôle le montage automatique du jeton de compte de service. La valeur par défaut est
false.nginx.nodeSelectorLes étiquettes de nœud utilisées pour l’attribution des pods. La valeur par défaut est
{}.nginx.tolerationsLes tolérances d’attribution des pods. La valeur par défaut est
[].nginx.affinityLes règles d’affinité pour les nœuds ou les pods. La valeur par défaut est
{}.nginx.topologySpreadConstraintsLes règles pour répartir les pods sur des domaines de défaillance tels que les régions ou les zones de disponibilité. La valeur par défaut est
[].nginx.podAnnotationsLes annotations ajoutées au nginx pod. La valeur par défaut est
{}.
portal.image.repositoryEmplacement du dépôt pour l’image du portail. La valeur par défaut est
private-registry/harbor-portal.portal.image.tagBalise pour l’image du portail. La valeur par défaut est
3.11.portal.replicasNombre de répliques à créer. La valeur par défaut est
1.portal.revisionHistoryLimitNombre maximum de révisions anciennes de
ReplicaSetà conserver. La valeur par défaut est10.portal.resourcesRessources allouées au conteneur. La valeur par défaut est
undefined.portal.automountServiceAccountTokenContrôle le montage automatique du jeton de compte de service. La valeur par défaut est
false.portal.nodeSelectorÉtiquettes de nœud utilisées pour l’attribution des pods. La valeur par défaut est
{}.portal.tolerationsTolérances utilisées pour l’attribution des pods. La valeur par défaut est
[].portal.affinityParamètres d’affinité pour les nœuds et les pods. La valeur par défaut est
{}.portal.topologySpreadConstraintsDéfinit la distribution des pods à travers les domaines de défaillance tels que les régions ou les zones de disponibilité. La valeur par défaut est
[].portal.podAnnotationsAnnotations ajoutées au pod du portail. La valeur par défaut est
{}.portal.serviceAnnotationsAnnotations ajoutées au service du portail. La valeur par défaut est
{}.portal.priorityClassNameNom de la classe de priorité pour l’exécution des pods.
portal.initContainersLes conteneurs d’initialisation à exécuter avant le démarrage du conteneur du contrôleur. La valeur par défaut est
[].
core.image.repositoryLe dépôt pour l’image Harbor du noyau. La valeur par défaut est
private-registry/harbor-core.core.image.tagLa balise pour l’image Harbor du noyau. La valeur par défaut est
2.11.core.replicasLe nombre de répliques. La valeur par défaut est
1.core.revisionHistoryLimitLa limite de l’historique des révisions. La valeur par défaut est
10.core.startupProbe.initialDelaySecondsLe délai initial en secondes pour la sonde de démarrage. La valeur par défaut est
10.core.resourcesLes ressources à allouer pour le conteneur. La valeur par défaut est
undefined.core.automountServiceAccountTokenMonte le jeton du compte de service. La valeur par défaut est
false.core.nodeSelectorLes étiquettes de nœud pour l’attribution des pods. La valeur par défaut est
{}.core.tolerationsLes tolérances pour l’attribution des pods. La valeur par défaut est
[].core.affinityLes affinités des nœuds ou des pods. La valeur par défaut est
{}.core.topologySpreadConstraintsLes contraintes qui définissent comment les pods sont répartis à travers les domaines de défaillance tels que les régions ou les zones de disponibilité. La valeur par défaut est
[].core.podAnnotationsLes annotations à ajouter au pod du noyau. La valeur par défaut est
{}.core.serviceAnnotationsLes annotations à ajouter au service du noyau. La valeur par défaut est
{}.core.configureUserSettingsUne chaîne JSON dans la variable d’environnement CONFIG_OVERWRITE_JSON pour configurer les paramètres utilisateur.
core.quotaUpdateProviderLe fournisseur pour mettre à jour l’utilisation du quota de projet, les options sont
redisoudb. La valeur par défaut estdb.core.secretUtilisé lorsque le serveur du noyau communique avec d’autres composants.
core.secretNameLe nom d’un Kubernetes secret pour utiliser votre propre certificat TLS et clé privée pour le chiffrement ou le déchiffrement des jetons.
core.tokenKeyLa clé privée RSA au format PEM utilisée pour signer les jetons de service.
core.tokenCertLe certificat au format PEM signé par
core.tokenKeyutilisé pour valider les jetons de service.core.xsrfKeyLa clé XSRF, générée automatiquement si elle n’est pas spécifiée.
core.priorityClassNameLa classe de priorité pour exécuter le pod.
core.artifactPullAsyncFlushDurationLa durée pour mettre à jour de manière asynchrone le temps de tirage des artefacts et le nombre de tirages de dépôt.
core.gdpr.deleteUserActive la suppression des utilisateurs conforme au RGPD. La valeur par défaut est
false.core.gdpr.auditLogsCompliantActive la conformité au RGPD pour les journaux d’audit en changeant le nom d’utilisateur en sa valeur CRC32 si cet utilisateur a été supprimé du système. La valeur par défaut est
false.core.initContainersLes conteneurs d’initialisation à exécuter avant le démarrage du conteneur du contrôleur. La valeur par défaut est
[].
jobservice.image.repositoryLe dépôt pour l’image du jobservice. La valeur par défaut est
private-registry/harbor-jobservice.jobservice.image.tagLa balise pour l’image du jobservice. La valeur par défaut est
2.11.jobservice.replicasLe nombre de répliques. La valeur par défaut est
1.jobservice.revisionHistoryLimitLa limite de l’historique des révisions. La valeur par défaut est
10.jobservice.maxJobWorkersLe nombre maximum de workers. La valeur par défaut est
10.jobservice.jobLoggersLes enregistreurs pour les tâches:
file,databaseoustdout. La valeur par défaut est[file].jobservice.loggerSweeperDurationLa durée en jours pour conserver les journaux de travail (ignorée si
jobLoggersest défini surstdout). La valeur par défaut est14.jobservice.notification.webhook_job_max_retryLe nombre maximum de tentatives pour l’envoi de notifications webhook. La valeur par défaut est
3.jobservice.notification.webhook_job_http_client_timeoutLe délai d’attente du client HTTP en secondes pour l’envoi de notifications webhook. La valeur par défaut est
3.jobservice.reaper.max_update_hoursLe temps maximum en heures à attendre qu’une tâche se termine. Si la tâche n’est pas terminée après le nombre d’heures spécifié, elle est marquée comme une erreur mais continue de s’exécuter. La valeur par défaut est
24.jobservice.reaper.max_dangling_hoursLe temps maximum en heures pour l’exécution dans un état d’exécution sans qu’une nouvelle tâche soit créée. La valeur par défaut est
168.jobservice.resourcesLes [ressources] à allouer pour le conteneur. La valeur par défaut est
undefined.jobservice.automountServiceAccountTokenMonte le jeton du compte de service. La valeur par défaut est
false.jobservice.nodeSelectorLes étiquettes de nœud pour l’attribution des pods. La valeur par défaut est
{}.jobservice.tolerationsLes tolérances pour l’attribution des pods. La valeur par défaut est
[].jobservice.affinityLes affinités des nœuds ou des pods. La valeur par défaut est
{}.jobservice.topologySpreadConstraintsLes contraintes qui définissent comment les pods sont répartis à travers les domaines de défaillance tels que les régions ou les zones de disponibilité. La valeur par défaut est
[].jobservice.podAnnotationsLes annotations à ajouter au pod du jobservice. La valeur par défaut est
{}.jobservice.priorityClassNameLa classe de priorité pour exécuter le pod.
jobservice.secretLe secret utilisé lorsque le jobservice communique avec d’autres composants. Si une clé secrète n’est pas spécifiée, Helm la génère. Doit être une chaîne de 16 caractères.
jobservice.initContainersLes conteneurs d’initialisation à exécuter avant le démarrage du conteneur du contrôleur. La valeur par défaut est
[].
registry.registry.image.repositoryL’emplacement du dépôt pour l’image du registre. La valeur par défaut est
private-registry/harbor-registry.registry.registry.image.tagLa balise pour l’image du registre. La valeur par défaut est
2.11.registry.registry.resourcesLes [ressources] à allouer pour le conteneur. La valeur par défaut est
undefined.registry.controller.image.repositoryL’emplacement du dépôt pour l’image du contrôleur de registre. La valeur par défaut est
private-registry/harbor-registryctl.registry.controller.image.tagLa balise pour l’image du contrôleur de registre. La valeur par défaut est
2.11.registry.controller.resourcesLes [ressources] à allouer pour le conteneur. La valeur par défaut est
undefined.registry.replicasLe nombre d’instances répliquées. La valeur par défaut est
1.registry.revisionHistoryLimitLe nombre maximum de révisions à maintenir dans l’historique. La valeur par défaut est
10.registry.nodeSelectorLes étiquettes de nœud pour l’attribution des pods. La valeur par défaut est
{}.registry.automountServiceAccountTokenContrôle si le jeton de compte de service doit être monté. La valeur par défaut est
false.registry.tolerationsLes tolérances pour l’attribution des pods. La valeur par défaut est
[].registry.affinityLes affinités des nœuds ou des pods. La valeur par défaut est
{}.registry.topologySpreadConstraintsLes contraintes qui définissent la distribution des pods à travers les domaines d’échec tels que les régions ou les zones de disponibilité. La valeur par défaut est
[].registry.middlewareSupport intermédiaire pour un CDN entre le stockage back-end et Docker le destinataire de tirage.
registry.podAnnotationsLes annotations à ajouter au pod du registre. La valeur par défaut est
{}.registry.priorityClassNameLa classe de priorité pour l’exécution du pod.
registry.secretLe secret qui sécurise l’état de téléchargement entre le client et le stockage back-end du registre.
registry.credentials.usernameLe nom d’utilisateur pour l’accès au Harbor registre interne du noyau. La valeur par défaut est
harbor_registry_user.registry.credentials.passwordLe mot de passe pour l’accès au Harbor registre interne du noyau. La valeur par défaut est
harbor_registry_password.registry.credentials.existingSecretUn secret existant contenant le mot de passe pour l’accès à l’instance du registre en mode d’authentification htpasswd. La valeur par défaut est
"".registry.credentials.htpasswdStringLe login et le mot de passe au format de chaîne htpasswd. Exclut
registry.credentials.usernameetregistry.credentials.password. La valeur par défaut estundefined.registry.relativeurlsRenvoie des URL relatives dans les en-têtes de localisation lorsque c’est vrai. Requis si Harbor est derrière un proxy inverse. La valeur par défaut est
false.registry.upload_purging.enabledActive la purge des répertoires de téléchargement. La valeur par défaut est
true.registry.upload_purging.ageLa période après laquelle les fichiers dans les répertoires de téléchargement sont supprimés, par défaut une semaine. La valeur par défaut est
168h.registry.upload_purging.intervalL’intervalle de temps entre les opérations de purge. La valeur par défaut est
24h.registry.upload_purging.dryrunActive le mode dryrun pour la purge des téléchargements. La valeur par défaut est
false.registry.initContainersLes conteneurs d’initialisation qui s’exécutent avant le démarrage du conteneur du contrôleur. La valeur par défaut est
[].
trivy.enabledActive ou désactive le Trivy scanner. La valeur par défaut est
true.trivy.image.repositoryLe dépôt pour l’image de l’Trivy adaptateur. La valeur par défaut est
private-registry/harbor-trivy-adapter.trivy.image.tagL’étiquette pour l’image de l’Trivy adaptateur. La valeur par défaut est
2.11.trivy.resourcesLes ressources à allouer pour le conteneur de l’Trivy adaptateur. La valeur par défaut est
undefined.trivy.automountServiceAccountTokenIndique si le token du compte de service doit être monté. La valeur par défaut est
false.trivy.replicasLe nombre de répliques de Pod. La valeur par défaut est
1.trivy.debugModeActive le Trivy mode de débogage pour le dépannage. La valeur par défaut est
false.trivy.vulnTypeListe des types de vulnérabilités séparés par des virgules (
osetlibrary). La valeur par défaut estos,library.trivy.severityListe des sévérités de vulnérabilités à vérifier, séparée par des virgules. La valeur par défaut est
UNKNOWN,LOW,MEDIUM,HIGH,CRITICAL.trivy.ignoreUnfixedAffiche uniquement les vulnérabilités corrigées. La valeur par défaut est
false.trivy.insecureIgnore la vérification du certificat du registre. La valeur par défaut est
false.trivy.skipUpdateDésactive les Trivy téléchargements de bases de données depuis GitHub. La valeur par défaut est
false.trivy.skipJavaDBUpdateNécessite le téléchargement manuel du
trivy-java.dbfichier lorsqu’il est activé. La valeur par défaut estfalse.trivy.offlineScanEmpêche Trivy d’envoyer des requêtes API pour identifier les dépendances. La valeur par défaut est
false.trivy.securityCheckListe des problèmes de sécurité à détecter, séparée par des virgules. La valeur par défaut est
vuln.trivy.timeoutLa durée d’attente pour l’achèvement du scan. La valeur par défaut est
5m0s.trivy.gitHubTokenLe jeton d’accès GitHub requis pour les téléchargements de bases de données. La valeur par défaut est
undefined.trivy.priorityClassNameLa classe de priorité pour l’exécution du pod. La valeur par défaut est
undefined.trivy.topologySpreadConstraintsDéfinit les contraintes de distribution des pods à travers les domaines d’échec. La valeur par défaut est
undefined.trivy.initContainersListe des conteneurs d’initialisation à exécuter avant le démarrage du conteneur principal. La valeur par défaut est
[].
database.typeLe type de base de données. Définir sur
externallors de l’utilisation d’une base de données externe. La valeur par défaut estinternal.database.internal.image.repositoryLe dépôt pour l’image de la base de données. La valeur par défaut est
private-registry/harbor-db.database.internal.image.tagL’étiquette pour l’image de la base de données. La valeur par défaut est
2.11.database.internal.passwordLe mot de passe pour la base de données interne. La valeur par défaut est
changeit.database.internal.shmSizeLimitLa limite de taille de la mémoire partagée pour PostgreSQL (typiquement 50 % de la limite de mémoire du conteneur). La valeur par défaut est
512Mi.database.internal.resourcesLes ressources allouées pour le conteneur de base de données. La valeur par défaut est
undefined.database.internal.automountServiceAccountTokenContrôle si le token du compte de service est monté. La valeur par défaut est
false.database.internal.initContainer.migrator.resourcesLes ressources allouées pour le conteneur d’initialisation du migrateur de base de données. La valeur par défaut est
undefined.database.internal.initContainer.permissions.resourcesLes ressources allouées pour le conteneur d’initialisation des permissions de la base de données. La valeur par défaut est
undefined.database.internal.nodeSelectorLes étiquettes de nœud pour l’attribution des pods. La valeur par défaut est
{}.database.internal.tolerationsLes tolérances pour l’attribution des pods. La valeur par défaut est
[].database.internal.affinityLes paramètres d’affinité du nœud ou du pod. La valeur par défaut est
{}.database.internal.priorityClassNameLa classe de priorité pour l’exécution du pod. La valeur par défaut est
undefined.database.internal.livenessProbe.timeoutSecondsLe délai d’attente en secondes pour le probe de vivacité (plage: 1-5s). La valeur par défaut est
1.database.internal.readinessProbe.timeoutSecondsLe délai d’attente en secondes pour le probe de disponibilité (plage: 1-5s). La valeur par défaut est
1.database.internal.extrInitContainersDes conteneurs d’initialisation supplémentaires qui s’exécutent avant le démarrage du conteneur de base de données. La valeur par défaut est
[].database.external.hostLe nom d’hôte de la base de données externe. La valeur par défaut est
192.168.0.1.database.external.portLe numéro de port de la base de données externe. La valeur par défaut est
5432.database.external.usernameLe nom d’utilisateur pour la base de données externe. La valeur par défaut est
user.database.external.passwordLe mot de passe pour la base de données externe. La valeur par défaut est
password.database.external.coreDatabaseLe nom de la base de données utilisée par le noyau. La valeur par défaut est
registry.database.external.existingSecretLe secret existant contenant le mot de passe de la base de données. La clé doit être
password. La valeur par défaut est"".database.external.sslmodeLa méthode de connexion pour la base de données externe. Options:
require,verify-full,verify-ca,disable. La valeur par défaut estdisable.database.maxIdleConnsLe nombre maximum de connexions inactives dans le pool (0 ou moins signifie qu’aucune connexion inactive n’est conservée). La valeur par défaut est
50.database.maxOpenConnsLe nombre maximum de connexions ouvertes à la base de données (0 ou moins signifie illimité). La valeur par défaut est
100.database.podAnnotationsLes annotations à ajouter au pod de la base de données. La valeur par défaut est
{}.
redis.typeLe type de Redis déploiement. Définir sur
externalpour Redis externe. La valeur par défaut estinternal.redis.internal.image.repositoryLe dépôt pour l’image Redis. La valeur par défaut est
private-registry/harbor-redis.redis.internal.image.tagL’étiquette pour l’image Redis. La valeur par défaut est
7.2.redis.internal.resourcesLes ressources allouées pour le Redis conteneur. La valeur par défaut est
undefined.redis.internal.automountServiceAccountTokenContrôle si le token du compte de service est monté. La valeur par défaut est
false.redis.internal.nodeSelectorLes étiquettes de nœud pour l’attribution des pods. La valeur par défaut est
{}.redis.internal.tolerationsLes tolérances pour l’attribution des pods. La valeur par défaut est
[].redis.internal.affinityLes paramètres d’affinité du nœud ou du pod. La valeur par défaut est
{}.redis.internal.priorityClassNameLa classe de priorité pour exécuter Redis le pod. La valeur par défaut est
undefined.redis.internal.jobserviceDatabaseIndexL’index de la base de données pour jobservice. La valeur par défaut est
1.redis.internal.registryDatabaseIndexL’index de la base de données pour le registre. La valeur par défaut est
2.redis.internal.trivyAdapterIndexL’index de la base de données pour Trivy l’adaptateur. La valeur par défaut est
5.redis.internal.harborDatabaseIndexL’index de la base de données pour la logique métier Harbor diverse. La valeur par défaut est
0.redis.internal.cacheLayerDatabaseIndexL’index de la base de données pour la couche de cache de Harbor. La valeur par défaut est
0.redis.internal.initContainersLes conteneurs d’initialisation qui s’exécutent avant le démarrage du Redis conteneur. La valeur par défaut est
[].redis.external.addrL’adresse de l’Redis instance externe. La valeur par défaut est
192.168.0.2:6379.redis.external.sentinelMasterSetLe nom de l’ensemble maître Redis Sentinel (le cas échéant). La valeur par défaut est
undefined.redis.external.coreDatabaseIndexL’index de la base de données pour le noyau. La valeur par défaut est
0.redis.external.jobserviceDatabaseIndexL’index de la base de données pour jobservice. La valeur par défaut est
1.redis.external.registryDatabaseIndexL’index de la base de données pour le registre. La valeur par défaut est
2.redis.external.trivyAdapterIndexL’index de la base de données pour Trivy l’adaptateur. La valeur par défaut est
5.redis.external.harborDatabaseIndexL’index de la base de données pour la logique métier Harbor diverse. La valeur par défaut est
0.redis.external.cacheLayerDatabaseIndexL’index de la base de données pour la couche de cache de Harbor. La valeur par défaut est
0.redis.external.usernameLe nom d’utilisateur pour Redis l’authentification externe. La valeur par défaut est
undefined.redis.external.passwordLe mot de passe pour Redis l’authentification externe. La valeur par défaut est
undefined.redis.external.existingSecretLe secret existant contenant le Redis mot de passe. La clé doit être
REDIS_PASSWORD. La valeur par défaut est"".redis.podAnnotationsLes annotations à ajouter au Redis pod. La valeur par défaut est
{}.
exporter.replicasLe nombre de répliques à exécuter. La valeur par défaut est
1.exporter.revisionHistoryLimitLa limite de l’historique des révisions. La valeur par défaut est
10.exporter.podAnnotationsAnnotations à ajouter au pod de l’exportateur. La valeur par défaut est
{}.exporter.image.repositoryLe dépôt pour l’image de l’exportateur. La valeur par défaut est
private-registry/harbor-exporter.exporter.image.tagL’étiquette pour l’image de l’exportateur. La valeur par défaut est
2.11.exporter.nodeSelectorÉtiquettes de nœud pour l’attribution de pod. La valeur par défaut est
{}.exporter.tolerationsTolérances pour l’attribution de pod. La valeur par défaut est
[].exporter.affinityAffinités de nœud ou de pod. La valeur par défaut est
{}.exporter.topologySpreadConstraintsContraintes qui définissent comment les pods se répartissent sur des domaines de défaillance tels que les régions ou les zones de disponibilité. La valeur par défaut est
[].exporter.automountServiceAccountTokenContrôle si le serviceAccountToken doit être monté. La valeur par défaut est
false.exporter.cacheDurationLa durée de mise en cache pour les informations collectées par l’exportateur. La valeur par défaut est
30.exporter.cacheCleanIntervalL’intervalle de nettoyage du cache pour les informations collectées par l’exportateur. La valeur par défaut est
14400.exporter.priorityClassNameLa classe de priorité pour exécuter le pod. La valeur par défaut est
undefined.
metrics.enabledActive Harbor les métriques. La valeur par défaut est
false.metrics.core.pathLe chemin URL pour les métriques du noyau. La valeur par défaut est
/metrics.metrics.core.portLe port pour les métriques du noyau. La valeur par défaut est
8001.metrics.registry.pathLe chemin URL pour les métriques de registre. La valeur par défaut est
/metrics.metrics.registry.portLe port pour les métriques de registre. La valeur par défaut est
8001.metrics.exporter.pathLe chemin URL pour les métriques de l’exportateur. La valeur par défaut est
/metrics.metrics.exporter.portLe port pour les métriques de l’exportateur. La valeur par défaut est
8001.metrics.serviceMonitor.enabledPermet la création d’un Prometheus ServiceMonitor (requiert Prometheus CRD). La valeur par défaut est
false.metrics.serviceMonitor.additionalLabelsÉtiquettes supplémentaires à appliquer au manifeste ServiceMonitor. La valeur par défaut est
"".metrics.serviceMonitor.intervalL’intervalle de collecte pour Harbor les métriques. La valeur par défaut est
"".metrics.serviceMonitor.metricRelabelingsLes règles de re-étiquetage pour les métriques avant ingestion. La valeur par défaut est
[].metrics.serviceMonitor.relabelingsLes règles de re-étiquetage pour les métriques avant collecte. La valeur par défaut est
[].
trace.enabledActive la fonctionnalité de traçage. La valeur par défaut est
false.trace.providerLe fournisseur de traçage (
jaegerouotel). La version de Jaeger doit être 1.26 ou supérieure. La valeur par défaut estjaeger.trace.sample_rateLe taux d’échantillonnage pour les données de trace.
1échantillonne 100 %,0.5échantillonne 50 %. La valeur par défaut est1.trace.namespaceL’espace de noms pour différencier les différents Harbor services.
trace.attributesUn dictionnaire clé-valeur pour les attributs définis par l’utilisateur lors de l’initialisation du fournisseur de trace.
trace.jaeger.endpointLe point de terminaison pour le traçage Jaeger. La valeur par défaut est
http://hostname:14268/api/traces.trace.jaeger.usernameLe nom d’utilisateur pour l’authentification Jaeger.
trace.jaeger.passwordLe mot de passe pour l’authentification Jaeger.
trace.jaeger.agent_hostL’hôte de l’agent pour Jaeger.
trace.jaeger.agent_portLe port de l’agent pour Jaeger. La valeur par défaut est
6831.trace.otel.endpointLe point de terminaison pour le OpenTelemetry traçage. La valeur par défaut est
hostname:4318.trace.otel.url_pathLe chemin URL pour OpenTelemetry. La valeur par défaut est
/v1/traces.trace.otel.compressionActive la compression pour OpenTelemetry. La valeur par défaut est
false.trace.otel.insecureÉtablit une connexion non sécurisée pour OpenTelemetry. La valeur par défaut est
true.trace.otel.timeoutLe délai d’attente en secondes pour OpenTelemetry. La valeur par défaut est
10.
cache.enabledActive la couche de cache. La valeur par défaut est
false.cache.expireHoursLe temps d’expiration en heures pour la couche de cache. La valeur par défaut est
24.
B Exemple d’un graphique Registre privé de configuration HA Helm #
Le fichier d’exemple des valeurs suivantes illustre les paramètres requis pour la configuration HA Registre privé minimale.
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 18Nom d’hôte du service noyau dans la règle Ingress. | |
L’URL externe pour le service harbor-core. | |
Nombre de réplicas à créer. Spécifiez deux ou plusieurs. | |
Remplissez les détails de connexion à la base de données dans la section | |
Si vous utilisez un secret existant, la valeur doit être | |
Accepte l’une des valeurs suivantes:
| |
Remplissez les informations de connexion dans la section | |
Prend en charge redis et redis+sentinel. | |
Le nom de l’ensemble des Valkey instances à surveiller. Il doit être configuré pour prendre en charge redis+sentinel. | |
Doit être | |
Facultatif. Par défaut, il est | |
Facultatif. Par défaut, il est | |
S’il est vide, il sera authentifié avec l’utilisateur par défaut. | |
S’il est utilisé, la clé doit être <REDIS_PASSWORD>. | |
Pour stocker toutes les images, les métadonnées et les analyses, assurez-vous que les paramètres relatifs à la persistance (Paramètres de persistance) sont correctement configurés. |
C Licence de Documentation Libre GNU #
Mention de copyright © 2000, 2001, 2002 Free Software Foundation, Inc. 51 Franklin St, Cinquième étage, Boston, MA 02110-1301 USA. Toute personne est autorisée à copier et à distribuer des copies exactes de ce document de licence, mais toute modification est interdite.
C1 0. PRÉAMBULE #
La présente Licence a pour but de rendre un manuel, un livre scolaire ou tout autre document fonctionnel et utile « libre » au sens de la liberté: garantir à chacun la liberté effective de le copier et de le redistribuer, avec ou sans modification, à des fins commerciales ou non commerciales. En second lieu, cette Licence préserve pour l’auteur et l’éditeur un moyen d’obtenir le crédit pour leur travail, tout en n’étant pas considérés comme responsables des modifications apportées par d’autres.
Cette Licence est une sorte de « copyleft », ce qui signifie que les œuvres dérivées du document doivent elles-mêmes être libres dans le même sens. Elle complète la Licence publique générale GNU, qui est une licence copyleft conçue pour les logiciels libres.
Nous avons conçu cette Licence afin qu’elle soit utilisée pour les manuels de logiciels libres, car les logiciels libres ont besoin d’une documentation libre: un programme libre doit être accompagné de manuels offrant les mêmes libertés que le logiciel. Mais cette Licence ne se limite pas aux manuels de logiciels; elle peut être utilisée pour tout travail textuel, quel qu’en soit le sujet et qu’il soit ou non publié sous forme de livre imprimé. Nous recommandons cette Licence principalement pour les travaux dont l’objectif est l’instruction ou la référence.
C2 1. DOMAINE D’APPLICATION ET DÉFINITIONS #
Cette Licence s’applique à tout manuel ou à tout autre travail, sur tout support, contenant une notification placée par le propriétaire du droit d’auteur indiquant qu’il peut être distribué conformément aux termes de cette Licence. Une telle notification accorde une licence mondiale, libre de droits et de durée illimitée, pour utiliser ce travail conformément aux conditions énoncées ici. Le « Document », ci-dessous, fait référence à tout manuel ou travail de ce type. Tout membre du public est un détenteur de licence, et est désigné par l’appellation « Vous ». Vous acceptez la licence si vous copiez, modifiez ou distribuez le travail d’une manière nécessitant une autorisation selon la loi sur le droit d’auteur.
Une « Version Modifiée » du Document désigne tout travail contenant le Document ou une partie de celui-ci, soit copié mot pour mot, soit avec des modifications et/ou traduit dans une autre langue.
Une « Section Secondaire » est une annexe nommée ou une section liminaire du Document qui traite exclusivement de la relation des éditeurs ou des auteurs du Document au sujet global du Document (ou à des sujets connexes) et ne contient rien qui pourrait relever directement de ce sujet global. (Ainsi, si le Document est en partie un manuel de mathématiques, une Section Secondaire ne peut contenir aucune explication mathématique.) La relation pourrait être une question de connexion historique avec le sujet ou avec des questions connexes, ou de position légale, commerciale, philosophique, éthique ou politique les concernant.
Les « Sections Invariantes » sont certaines Sections Secondaires dont les titres sont désignés, comme étant ceux de Sections Invariantes, dans la notification indiquant que le Document est publié sous cette Licence. Si une section ne correspond pas à la définition ci-dessus de Secondaire, elle ne peut pas être désignée en tant qu’Invariante. Le Document peut ne contenir aucune Section Invariante. Si le Document n’identifie aucune Section Invariante, il n’y en a aucune.
Les « Textes de Couverture » sont certains courts passages de texte qui sont listés, en tant que Textes de la Première de Couverture ou Textes de la Dernière de Couverture, dans la notification indiquant que le Document est publié sous cette Licence. Un Texte de la Première de Couverture peut comporter au maximum 5 mots, et un Texte de la Dernière de Couverture peut comporter au maximum 25 mots.
Une copie « Transparente » du Document signifie une copie lisible par machine, représentée dans un format dont la spécification est disponible pour le grand public, qui est adaptée à la révision directe du document avec des éditeurs de texte génériques ou (pour les images composées de pixels) des programmes de peinture génériques ou (pour les dessins) certains éditeurs de dessin largement disponibles, et qui est adaptée à l’entrée dans des formateurs de texte ou pour la traduction automatique dans une variété de formats adaptés à l’entrée dans des formateurs de texte. Une copie réalisée dans un format de fichier autrement Transparent dont le balisage, ou l’absence de balisage, a été organisé pour déjouer ou décourager la modification ultérieure par les lecteurs n’est pas Transparente. Un format d’image n’est pas Transparent s’il est utilisé pour une quantité substantielle de texte. Une copie qui n’est pas « Transparente » est appelée « Opaque ».
Les exemples de formats adaptés aux copies Transparentes incluent l’ASCII standard sans balisage, le format de saisie Texinfo, le format de saisie LaTeX, le SGML ou XML utilisant un DTD publiquement disponible, et le HTML simple conforme à la norme, le PostScript ou le PDF conçus pour la modification par l’homme. Les exemples de formats d’image transparents incluent PNG, XCF et JPG. Les formats Opaques incluent les formats propriétaires qui ne peuvent être lus et modifiés que par des traitements de texte propriétaires, le SGML ou XML pour lesquels les outils de DTD et/ou de traitement ne sont généralement pas disponibles, et le HTML, PostScript ou PDF généré par machine produit par certains traitements de texte uniquement à des fins de sortie.
La « Page de titre » signifie, pour un livre imprimé, la page de titre elle-même, plus les pages suivantes nécessaires pour contenir, lisiblement, les informations que cette Licence exige de faire apparaître dans la page de titre. Pour les œuvres dans des formats qui n’ont pas de page de titre en tant que telle, la « Page de titre » signifie le texte près de l’apparence la plus proéminente du titre de l’œuvre, précédant le début du corps du texte.
Une section « Intitulée XYZ » signifie une sous-unité nommée du Document dont le titre est soit précisément XYZ, soit contient XYZ entre parenthèses à la suite du texte qui traduit XYZ dans une autre langue. (Ici, XYZ représente un nom de section spécifique mentionné ci-dessous, tel que « Remerciements », « Dédicaces », « Recommandations » ou « Historique ».) Pour « Conserver le Titre » d’une telle section lorsque vous modifiez le Document, cela signifie qu’il reste une section « Intitulée XYZ » conformément à cette définition.
Le Document peut inclure des Limitations de Garantie à côté de la notification indiquant que cette Licence s’applique au Document. Ces Limitations de Garantie sont considérées comme étant incluses par référence dans cette Licence, mais uniquement en ce qui concerne le refus de garanties: toute autre implication que ces Limitations de Garantie pourraient avoir est nulle et n’a aucun effet sur la signification de cette Licence.
C3 2. COPIE MOT POUR MOT #
Vous pouvez copier et distribuer le Document sur n’importe quel support, commercialement ou non, à condition que cette Licence, les mentions de copyright, et la mention de copyright indiquant que cette Licence s’applique au Document soient reproduites dans toutes les copies, et que vous n’ajoutiez aucune autre condition à celles de cette Licence. Vous ne pouvez pas utiliser de mesures techniques pour empêcher ou contrôler la lecture ou la copie ultérieure des copies que vous effectuez ou distribuez. Toutefois, vous pouvez accepter une compensation en échange des copies. Si vous distribuez un nombre suffisant de copies, vous devez également respecter les conditions énoncées à la section 3.
Vous pouvez également prêter des copies, sous les mêmes conditions indiquées ci-dessus, et vous pouvez afficher des copies publiquement.
C4 3. COPIE EN QUANTITÉ #
Si vous publiez des copies imprimées (ou des copies sur un support ayant des couvertures imprimées) du Document, avec une numérotation supérieure à 100, et que la mention de licence du Document exige des Textes de Couverture, vous devez inclure les copies dans des couvertures portant, clairement et de façon lisible, tous ces Textes de Couverture: Textes de la Première de Couverture sur la première de couverture, et Textes de la Dernière de Couverture sur la dernière de couverture. Les deux couvertures doivent également vous identifier clairement et de façon lisible comme l’éditeur de ces copies. La première de couverture doit présenter le titre complet, tous les mots de ce titre étant également lisibles et visibles. Vous pouvez également ajouter des informations aux couvertures. La copie avec des modifications limitées aux couvertures, tant qu’elles préservent le titre du Document et respectent ces conditions, peut être considérée comme une copie mot pour mot dans ses autres aspects.
Si les textes requis pour l’une ou l’autre des couvertures sont trop volumineux pour tenir de façon lisible, vous devez placer les premiers (autant qu’il en tient raisonnablement) sur la couverture réelle, et continuer le reste sur les pages adjacentes.
Si vous publiez ou distribuez des copies Opaques du Document avec une numérotation supérieure à 100, vous devez inclure une copie Transparente lisible en machine avec chaque copie Opaque, ou indiquer dans ou avec chaque copie Opaque un emplacement de réseau informatique auquel le public utilisant le réseau peut accéder pour télécharger, en utilisant des protocoles réseau publics standard, une copie Transparente complète du Document, sans informations supplémentaires. Si vous choisissez cette dernière option, vous devez prendre des mesures raisonnablement prudentes, dès le début de la distribution en grande quantité de copies Opaques, afin de garantir que cette copie Transparente restera accessible à l’emplacement indiqué pendant au moins un an après la dernière distribution d’une copie Opaque (directement ou par l’intermédiaire de vos agents ou distributeurs) de cette édition au public.
Il est demandé, mais pas obligatoire, de contacter les auteurs du Document bien avant de redistribuer un grand nombre de copies, pour leur permettre de vous en fournir une version actualisée.
C5 4. MODIFICATIONS #
Vous pouvez copier et distribuer une Version Modifiée du Document conformément aux conditions des sections 2 et 3 ci-dessus, pourvu que vous diffusiez la Version Modifiée en respectant précisément cette Licence, la Version Modifiée jouant le rôle du Document, accordant ainsi la licence de distribution et de modification de la Version Modifiée à quiconque en possède une copie. En outre, vous devez procéder de la façon suivante dans la Version Modifiée:
Utiliser dans la Page de Titre (et sur les couvertures le cas échéant) un titre distinct de celui du Document et de ceux des versions précédentes (qui devraient être répertoriés dans la section Historique du Document). Vous pouvez utiliser le même titre qu’une version précédente si l’éditeur d’origine de cette version vous en donne l’autorisation.
Indiquer sur la Page de Titre, en tant qu’auteurs, une ou plusieurs personnes ou entités responsables de la paternité des modifications de la Version Modifiée, ainsi qu’au moins cinq des principaux auteurs du Document (tous ses principaux auteurs, s’ils sont moins de cinq), sauf s’ils vous dispensent de cette obligation.
Indiquer sur la Page de Titre le nom de l’éditeur de la Version Modifiée, en tant qu’éditeur.
Conserver toutes les mentions de copyright du Document.
Ajouter une mention de copyright appropriée pour vos modifications à côté des autres mentions de copyright.
Inclure, immédiatement après les mentions de copyright, une mention de licence donnant au public l’autorisation d’utiliser la Version Modifiée conformément aux termes de cette Licence, sous la forme indiquée dans l’Addendum ci-dessous.
Conserver dans cette mention de licence la liste complète des Sections Invariantes et des Textes de Couverture fournie dans la mention de licence du Document.
Inclure une copie non modifiée de cette Licence.
Conserver la section intitulée « Historique », conserver son Titre, et lui ajouter un élément indiquant au moins le titre, l’année, les nouveaux auteurs et l’éditeur de la Version Modifiée comme indiqué dans la Page de Titre. S’il n’existe pas de section intitulée « Historique » dans le Document, créez-en une qui mentionne le titre, l’année, les auteurs et l’éditeur du Document comme indiqué dans sa Page de Titre, puis ajoutez un élément décrivant la Version Modifiée comme indiqué dans la phrase précédente.
Conserver l’emplacement réseau, le cas échéant, fourni dans le Document pour l’accès public à une copie Transparente du Document, ainsi que les emplacements réseau fournis dans le Document pour les versions précédentes sur lesquelles il était basé. Ils peuvent être placés dans la section Historique. Vous pouvez omettre un emplacement réseau pour un travail qui a été publié au moins quatre ans avant le Document lui-même, ou si l’éditeur d’origine de la version à laquelle il fait référence donne son autorisation.
Pour toute section intitulée « Remerciements » ou « Dédicaces », conserver le Titre de la section, et conserver dans la section toute la substance et le ton de chacun des remerciements et/ou dédicaces des contributeurs mentionnés.
Conserver toutes les Sections Invariantes du Document, sans modifications de leurs textes ni de leurs titres. Les numéros de section ou leur équivalent ne sont pas considérés comme faisant partie des titres de section.
Supprimer toute section intitulée « Recommandations ». Une telle section ne peut être incluse dans la Version Modifiée.
Ne pas modifier le titre d’une section existante pour qu’elle soit intitulée « Endorsements » ou pour créer un conflit de titre avec une Section Invariante.
Conserver les Limitations de Garantie.
Si la Version Modifiée comprend de nouvelles sections liminaires ou des annexes qui en font des Sections Secondaires et ne contiennent aucun matériel copié à partir du Document, vous pouvez, si vous le souhaitez, désigner certaines ou toutes ces sections comme invariantes. Pour ce faire, ajoutez leurs titres à la liste des Sections Invariantes dans la mention de licence de la Version Modifiée. Ces titres doivent être distincts de tout autre titre de section.
Vous pouvez ajouter une section intitulée « Endorsements », pourvu qu’elle ne contienne rien d’autre que des endorsements de votre Version Modifiée par différentes parties--, par exemple, des déclarations d’évaluation par des pairs ou indiquant que le texte a été approuvé par une organisation comme définition experte d’une norme.
Vous pouvez ajouter un passage pouvant atteindre cinq mots comme Texte de la Première de Couverture, et un passage pouvant atteindre vingt-cinq mots comme Texte de Dernière de Couverture, à la fin de la liste des Textes de Couverture de la Version Modifiée. Un seul passage de Texte de la Première de Couverture et de Texte de Dernière de Couverture peut être ajouté par (ou par l’intermédiaire d’accords effectués par) une entité quelconque. Si le Document inclut déjà un texte de couverture pour la même couverture, précédemment ajouté par vous ou par un accord effectué par l’entité pour le compte de laquelle vous agissez, vous ne pouvez pas en ajouter d’autre; mais vous pouvez remplacer l’ancien, avec l’autorisation explicite de l’éditeur qui avait ajouté l’ancien.
Le(s) auteur(s) et éditeur(s) du Document n’accordent pas par cette Licence l’autorisation d’utiliser leurs noms à des fins publicitaires ou pour revendiquer ou laisser entendre une approbation de toute Version Modifiée.
C6 5. COMBINAISON DE DOCUMENTS #
Vous pouvez combiner le Document avec d’autres documents diffusés dans le cadre de cette Licence, conformément aux termes définis dans la section 4 ci-dessus pour les versions modifiées, pourvu que vous incluiez à la combinaison toutes les Sections Invariantes de tous les documents d’origine, non modifiés, et que vous les répertoriiez tous comme Sections Invariantes de votre travail combiné dans sa mention de licence, et que vous conserviez toutes ses Limitations de Garantie.
Le travail combiné ne doit contenir qu’une copie de cette Licence, et plusieurs Sections Invariantes identiques peuvent être remplacées par une seule copie. S’il existe plusieurs Sections Invariantes portant le même nom mais avec un contenu différent, rendez le titre de chacune de ces sections unique en ajoutant à la fin de celui-ci, entre parenthèses, le nom de l’auteur ou de l’éditeur d’origine de cette section s’il est connu, ou sinon un numéro unique. Effectuez le même ajustement aux titres des sections dans la liste des Sections Invariantes de la mention de licence du travail combiné.
Dans la combinaison, vous devez combiner les sections intitulées "Historique" des différents documents originaux, formant une section intitulée "Historique"; de même, combinez les sections intitulées "Remerciements" et les sections intitulées "Dédicaces". Vous devez supprimer toutes les sections intitulées « Recommandations ».
C7 6. ENSEMBLES DE DOCUMENTS #
Vous pouvez réaliser un ensemble constitué du Document et d’autres documents diffusés sous cette Licence, et remplacer les copies individuelles de cette Licence dans les différents documents par une copie unique incluse dans l’ensemble, à condition de respecter les règles de cette Licence concernant la copie mot pour mot de chacun des documents dans tous leurs autres aspects.
Vous pouvez extraire un document unique d’un tel ensemble et le distribuer individuellement sous cette Licence, à condition d’insérer une copie de cette Licence dans le document extrait et de respecter cette Licence dans tous ses autres aspects concernant la copie mot pour mot de ce document.
C8 7. AGRÉGATION AVEC DES TRAVAUX INDÉPENDANTS #
Une compilation du Document ou de ses dérivés avec d’autres documents ou travaux séparés et indépendants, dans ou sur un volume de stockage ou un support de distribution, est appelée une "agrégation" si le copyright résultant de la compilation n’est pas utilisé pour limiter les droits légaux des utilisateurs de la compilation au-delà de ce qu’autorisent les travaux individuels. Lorsque le Document est inclus dans une agrégation, cette Licence ne s’applique pas aux autres travaux de l’agrégation qui ne sont pas eux-mêmes des travaux dérivés du Document.
Si l’obligation relative au Texte de Couverture de la section 3 est applicable à ces copies du Document, alors si le Document est inférieur à la moitié de l’agrégation dans son ensemble, les Textes de Couverture du Document peuvent être placés sur les couvertures qui regroupent le Document au sein de l’agrégation, ou l’équivalent électronique des couvertures si le Document est sous forme électronique. Sinon, ils doivent apparaître sur les couvertures imprimées qui regroupent l’agrégation complète.
C9 8. TRADUCTION #
La traduction étant considérée comme une sorte de modification, vous êtes autorisé à distribuer des traductions du Document conformément aux dispositions de la section 4. Le remplacement des Sections Invariantes par des traductions nécessite une autorisation spéciale de leurs détenteurs de droits d’auteur, mais vous pouvez inclure des traductions de certaines ou de toutes les Sections Invariantes en plus des versions originales de ces Sections Invariantes. Vous pouvez inclure une traduction de cette Licence, ainsi que toutes les mentions de licence dans le Document et toutes les Limitations de Garantie, à condition d’inclure également la version anglaise d’origine de cette Licence et les versions d’origine de ces mentions et limitations. En cas de désaccord entre la traduction et la version originale de cette Licence ou d’une mention ou d’une limitation, la version d’origine prévaudra.
Si une section du Document est intitulée "Remerciements", "Dédicaces" ou "Historique", l’obligation (section 4) de conserver son Titre (section 1) nécessitera généralement de changer le titre réel.
C10 9. RÉSILIATION #
Vous ne pouvez copier, modifier, accorder une sous-licence ou distribuer le Document, sauf dans les cas expressément prévus par cette Licence. Toute autre tentative de copier, modifier, accorder une sous-licence ou distribuer le Document est nulle et met automatiquement fin à vos droits en vertu de cette Licence. Cependant, les parties qui ont reçu des copies ou des droits de votre part en vertu de cette Licence ne verront pas leurs licences résiliées tant qu’elles restent en pleine conformité.
C11 1. FUTURE RÉVISIONS DE CETTE LICENCE #
La Free Software Foundation peut publier de temps à autre de nouvelles versions révisées de la Licence de Documentation Libre GNU. Ces nouvelles versions seront semblables en esprit à la version actuelle, mais peuvent différer dans les détails pour répondre à de nouveaux problèmes ou préoccupations. Reportez-vous à la https://www.gnu.org/copyleft/.
Chaque version de la Licence reçoit un numéro distinctif. Si le Document spécifie qu’une version numérotée particulière de cette Licence "ou toute version ultérieure" s’applique, vous avez la possibilité de suivre les termes et conditions de cette version spécifiée ou de toute version ultérieure qui a été publiée (non sous forme de brouillon) par la Free Software Foundation. Si le Document ne spécifie pas de numéro de version de cette Licence, vous pouvez choisir n’importe quelle version publiée (non sous forme de brouillon) par la Free Software Foundation.
C12 ADDENDUM : comment utiliser cette Licence pour vos documents #
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".
Si vous avez des Sections Invariantes, des Textes de Première de Couverture et des Textes de Dernière de Couverture, remplacez la ligne « avec…Textes. » par ceci:
with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
Si vous avez des Sections Invariantes sans Textes de Couverture, ou une autre combinaison des trois, fusionnez ces deux alternatives pour vous adapter à la situation.
Si votre document contient des exemples non triviaux de code, nous vous recommandons de publier ces exemples en parallèle sous la licence de logiciel libre de votre choix, telle que la licence publique générale GNU, afin de permettre leur utilisation dans un logiciel libre.



