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.