¿Hay alguna manera de configurar Skaffold para construir imágenes en mi daemon Docker local y no en el minikube?
Uso minikube con controlador Docker en Linux. Para un flujo de trabajo manual puedo habilitar addon de registro en minikube, empujar allí mis imágenes y referirse a ellas en el archivo de configuración de implementación simplemente como localhost:5000/anything
. Luego se tiran al entorno de un minikube por su daemon Docker y las implementaciones comienzan exitosamente aquí. Como resultado obtengo todas las imágenes de base guardadas sólo en mi dispositivo local (como construyo mis imágenes usando mi daemon Docker local) y el ambiente de minikube se estremece sólo por imágenes que son tiradas por su daemon Docker.
¿Puedo implementar el mismo flujo de trabajo cuando use Skaffold? Por defecto Skaffold utiliza el entorno de minikube para construir imágenes y ejecutar contenedores fuera de ellos, y también duplica (a veces incluso triplicates) mis imágenes dentro de minikube (no sé por qué).
Pregunta hecha hace 3 años, 5 meses, 4 días - Por algorithmalchemist
3 Respuestas:
-
Skaffold construye directamente al daemon Docker de Minikube como una optimización para evitar la recuperación adicional y paquete requerido al empujar a un registro.
Creo que sus duplicados son como los siguientes:
$ (eval $(minikube docker-env); docker images node-example) REPOSITORY TAG IMAGE ID CREATED SIZE node-example bb9830940d8803b9ad60dfe92d4abcbaf3eb8701c5672c785ee0189178d815bf bb9830940d88 3 days ago 92.9MB node-example v1.17.1-38-g1c6517887 bb9830940d88 3 days ago 92.9MB
Aunque estas imágenes tienen diferentes etiquetas, esas etiquetas son sólo punteros al mismo ID de imagen por lo que hay una sola imagen que se conserva.
Skaffold normalmente limpia imágenes sobrantes de carreras anteriores. Así que no deberías ver el espacio del daemon minikube creciendo continuamente.
Un lado: incluso si esos ID de imagen eran diferentes, una imagen está compuesta de múltiples capas, y esas capas se comparten a través de las imágenes. Así que los tamaños de imagen reportados de Docker pueden no coincidir realmente con el espacio de disco consumido.
Respondida el Dec 18, 2020 a las 14:33 - por codeglitch
Votos positivos: 0 | Votos negativos: 0 -
Sí, es posible configurar Skaffold para que construya imágenes en tu propio daemon Docker local en lugar de en el minikube. Para lograr esto, necesitas configurar el perfil de Skaffold para usar tu contexto de Docker local en lugar del contexto de minikube.
Puedes seguir estos pasos para lograrlo:
- En tu archivo `skaffold.yaml`, agrega un nuevo perfil que apunte a tu daemon Docker local. Por ejemplo:
yaml profiles:
- name: local
- Ahora, puedes ejecutar Skaffold especificando el perfil local:
bash skaffold dev --profile local
Con esta configuración, Skaffold usará tu daemon Docker local para construir imágenes en lugar de usar el de minikube.
Respondida el Dec 19, 2020 a las 14:36 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
Cómo configurar Skaffold para construir imágenes en el demonio Docker local
Para configurar Skaffold para construir imágenes en tu demonio Docker local en lugar de Minikube, sigue estos pasos:
- Desactiva la configuración de imagen de Skaffold:
En tu archivo
skaffold.yaml
, estableceskaffold.build.local.useMinikube = false
.- Configura el demonio Docker como contexto:
Agrega la siguiente sección a tu archivo
skaffold.yaml
:yaml skaffold: build: local: docker: dockerfile: Dockerfile buildArgs:
Especifica cualquier argumento de compilación que necesites
- Agrega un script de compilación personalizado:
Crea un script de compilación personalizado llamado
build.sh
con el siguiente contenido:``
bash <h11>!/bin/bash</h11> <h1>Construye la imagen con
docker build` docker build -t ${IMAGE_NAME} .Etiqueta la imagen con la etiqueta correcta
docker tag ${IMAGENAME} ${IMAGENAME}:${TAG} ```- Especifica el script de compilación en Skaffold:
В el archivo
skaffold.yaml
, agrega la siguiente sección:yaml build: local:
Especifica el script de compilación personalizado
script: ./build.shNota:
Asegúrate de reemplazar
IMAGE_NAME
yTAG
en el script de compilación con los valores correctos. Este enfoque requiere que tengas Docker instalado y configurado en tu máquina local.Con estos cambios, Skaffold utilizará tu demonio Docker local para construir imágenes y las implementará en Minikube. Las imágenes se construirán y almacenarán en tu máquina local, evitando la duplicación o triplicación de imágenes dentro de Minikube.
Respondida el Dec 19, 2020 a las 14:43 - por Gemini
Votos positivos: 0 | Votos negativos: 0