Para iniciar um Pod, o Kubernetes primeiro baixa a Imagem Docker de algum registry, que por padrão, geralmente é o Docker Hub.
Porém, para testes em ambiente local, durante o processo de desenvolvimento, pode ser que você queira subir rapidamente um Deployment, e ver seus Pods funcionando ou não xD, sem precisar fazer push e pull da Imagem para o registry toda hora.
Neste post, mostro como usar uma Imagem local em um Cluster minikube.
Reutilizando o Docker Daemon
Para não precisar fazer push da Imagem em um registry, podemos reutilizar o Docker Daemon do minikube, e fazer o build direto nele. Podemos fazer isso com o comando docker-env
.
Rode o comando:
eval $(minikube docker-env)
Agora essa aba do seu terminal estará se comunicando com o Docker Daemon do minikube.
Com isso, você pode rodar um docker build
e sua Imagem será criada no ambiente do minikube.
docker build -t my-app:latest .
E no arquivo YAML do seu Deployment / Pod, fica algo assim:
containers:
- name: my-app
image: my-app:latest
imagePullPolicy: Never
Aqui atente-se ao uso da opção imagePullPolicy
. Precisamos passá-la como Never
, para que o Kubernetes não vá tentar buscar a imagem em um registry remoto.
Atenção! Quando não for mais usar o Docker Daemon do minikube, lembre-se de voltar ao seu host padrão. Para isso, rode o seguinte comando:
eval $(minikube docker-env -u)