es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Acceda a minikube desde dentro de docker/docker-compose en Linux.

La configuración:

Tengo un setup de minikube y un setup de docker-compose corriendo en paralelo. De esta manera, puedo desarrollar fácilmente mi aplicación con docker/docker-compose y ejecutar otros servicios dentro de minikube. Estoy trabajando en Linux (Ubuntu).

El problema:

Me gustaría acceder a la API de minikube dentro de un contenedor de docker corriendo dentro de docker-compose con cURL.

Lo que he intentado:

  • Acceder a minikube con la configuración del proxy: curl http://localhost:8080/api (cuando se usa el kubectl proxy kubectl proxy –port=8080) pero eso, por supuesto, no funcionará porque localhost es el localhost del contenedor. Esto lleva a curl: (7) Failed to connect to localhost port 8080: Connection refused.
  • Acceder a minikube a través del host interno de docker: curl http://host.docker.internal:8080/api. Esto también lleva a curl: (7) Failed to connect to host.docker.internal port 8080: Connection refused.
  • Acceder a minikube a través de la api/credenciales encontradas en el script a continuación:

    APISERVER=$(kubectl config view –minify | grep server | cut -f 2- -d “:” | tr -d ” “)
    SECRETNAME=$(kubectl get secrets | grep ^default | cut -f1 -d ‘ ‘)
    TOKEN=$(kubectl describe secret $SECRETNAME | grep -E ‘^token’ | cut -f2 -d’:’ | tr -d ” “)

    curl $APISERVER/api –header “Authorization: Bearer $TOKEN” –insecure

Pero todo eso falla.

También agregué esto a mi archivo docker-compose.yml:

extra_hosts:
– “host.docker.internal:host-gateway”

Todo funciona bien cuando pruebo los comandos anteriores fuera del contenedor de docker. ¿Cómo puedo acceder a minikube desde dentro de un contenedor de docker?

¡Gracias de antemano!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Solución:

    La solución consiste en utilizar el nombre DNS host.docker.internal para acceder a la máquina anfitriona desde dentro del contenedor. Esto se puede lograr mediante la adición del siguiente código en el archivo docker-compose.yml:

    extra_hosts:
    - "host.docker.internal:<dirección IP de la máquina anfitriona>"

    Donde es la dirección IP de la máquina anfitriona.

    Una vez realizado esto, se puede acceder a la API de minikube desde dentro del contenedor utilizando el siguiente comando:

    curl http://host.docker.internal:8080/api

Comments are closed.