CRI-O con Harbor 29 Diciembre 2021

CRI-O con Harbor

En la entrega anterior vimos como instalar un servidor de Harbor que funcione como cache de imágenes de contenedores. Para utilizarlo uno debería pullear desde este nuevo registry, por ejemplo en lugar de:

docker pull alpine

Deberíamos hacer:

docker pull harbor-cache.example.com/proxy.docker.io/library/alpine

Sería bastante incómodo tener que cambiar este registry en todos los scripts, Dockerfiles y docker-compose, es por eso que en esta entrega vamos a ver como configurar nuestro container runtime para que reemplace el registry por defecto por el que utilizamos en nuestros proyectos.

CRI-O

En los nodos que utilicen CRI-O, la configuración pertinente se encuentra en el directorio /etc/containers/registries.conf.d/. En el debemos crear archivos con el siguiente formato:

[[registry]]
prefix = "gcr.io"
insecure = false
blocked = false
location = "gcr.io"

[[registry.mirror]]
location = "harbor-cache.example.com/proxy.gcr.io"
insecure = false

Se creará un archivo por cada uno de los registries definidos anteriormente en la UI de Harbor. Esto genera que cualquier requisito de imágenes correspondiente al dominio definido en prefix intente primero buscar en el registry indicado en [[registry.mirror]] y si no tiene éxito buscará en el location principal.

La primera vez que haga la petición al registry de harbor-cache, se guardara la imagen para futuros usos, pero si por algún motivo no funciona Harbor, recaerán las peticiones sobre la registry original.

Luego de modificar este archivo se debe reiniciar el servicio de CRI-O para que tenga efecto:

systemctl daemon-reload
systemctl restart crio

Desplegando cualquier recurso que descargue imágenes se podrá ver en los logs de Harbor que se está usando el cache.

Repetir estas operaciones en cada nodo sería un trabajo arduo, en el caso de nuestro cluster contábamos con la herramienta Kubespray que nos permite automatizar la creación de clusteres, y particularmente cuenta con un template para esta configuración.