Proyecto
Un proyecto en Harbor contiene todos los repositorios de una aplicación.
Las imágenes no pueden ser enviadas a Harbor sin que un proyecto exista.
El Role-Based Access Control (RBAC) se aplica a los proyectos, para que solamente usuarios con las funciones apropiadas puedan ejecutar determinadas operaciones.
Ya en la creación de un proyecto podemos definir sus cuotas y si el proyecto será privado o público. Si no quieres definir cuotas utiliza -1 que ya viene seteado.
- Público: Cualquier usuario puede hacer un pull de las imágenes de este proyecto.
- Privado: Solamente usuarios que son miembros del proyecto pueden hacer el pull de imágenes y el push si tienen permiso.

Si es necesario el administrador de Harbor consigue ajustar las cuotas más tarde.

Como usamos el administrador de Harbor para crear un proyecto vamos a añadir un miembro como administrador del proyecto.

El usuario david ya existe y fue creado anteriormente, pero aún no está en ningún proyecto.



Y a partir de ahora vamos a loguear como el usuario david y ver lo que tenemos de acceso.

Las imágenes están hechas en capas. Dentro de un mismo proyecto existe la reutilización de capas para disminuir el espacio en disco, pero no se reutiliza de forma global. Por ejemplo, si vamos a utilizar de base una imagen Alpine en proyectoX y en proyectoY, esta imagen existirá dos veces, pues están en proyectos diferentes.
Repositorios
Un proyecto posee repositorios. Los repositorios serán creados automáticamente de acuerdo con el path durante el push de las imágenes.
Por ejemplo si hacemos el push de las imágenes abajo tendremos 2 repositorios reponamex y reponamey.
- reponamex/grupox/imagemx:tagx
- reponamey/grupoy/imagemy:tagy
Si hacemos ahora un push de la imagen reponamex/grupoz/imagemx:tagx, estará en el mismo repositorio, pero en otro camino. Si hacemos el push de otra imagen reponamex/grupoz/imagemz:tagz formará parte de reponamex/grupoz.
Usamos los caminos para crear un árbol, siendo que el primer nombre es el del repositorio dentro del proyecto.
Haremos una demostración sobre esto más adelante.