Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

366
Views
Problema al ejecutar gcsfuse en Google App Engine

Estoy tratando de ejecutar Airflow Webserver en App Engine Flexible, sin embargo, para que funcione, necesito un cubo GCS montado. Estoy usando tiempo de ejecución personalizado. La razón por la que lo hago es para obtener un punto final seguro que App Engine proporciona junto con IAP.

Mi app.yaml es un archivo simple con nombre de servicio, entorno y tiempo de ejecución. Mi Dockerfile es un montón de apt-get install s y en CMD hay gcsfuse montando y ejecutando el servidor web de flujo de aire, no es un gran problema.

El error que recibo cuando intento usar gcsfuse en App Engine es:

 daemonize.Run: readFromProcess: sub-process: mountWithArgs: mountWithConn: Mount: mount: running fusermount: exit status 1 stderr: fusermount: fuse device not found, try 'modprobe fuse' first

Sé que existe Google Composer, pero es demasiado caro para mis necesidades. Así que prefiero crear una máquina virtual con un programador y un servidor web en GAE, compartiendo un grupo de GCS, similar a lo que ofrece Composer, pero sin toda esa alta disponibilidad y el costo insano de las cosas simples que quiero ejecutar.

Estoy buscando hacer esto en App Engine, todas las respuestas que he encontrado hasta ahora mencionan GKE por alguna razón.

Sé que es un problema de privilegios, sin embargo en App Engine no veo ninguna opción para establecer privilegios, una forma de hacerlo sería muy útil.

¿Es posible hacer lo que quiero hacer en App Engine?

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Esto es posible. Le mostraré cómo hacerlo manualmente, es posible que deba utilizar un script de shell para tratar con varias instancias.

  1. definir varios vars utilizados en este manual
 service=YOUR_APPENGINE_VERSION version=YOUR_APPENGINE_VERSION project=PROJECTID
  1. obtener lista de instancias
 gcloud app instances list --project $project SERVICE VERSION ID VM_STATUS DEBUG_MODE default *************** instance-id-1 RUNNING YES default *************** instance-id-2 RUNNING
  1. ssh en una instancia
 gcloud app instances ssh instance-id-1 --service $service --version $version --project $project
  1. obtener identificación de imagen
 docker ps | grep gaeapp | awk '{print $2}'

obtendrás un ID de imagen

  1. obtener env de gaeapp
 docker exec gaeapp env PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin HOSTNAME=***** GAE_MEMORY_MB=614 GAE_INSTANCE=**** GAE_SERVICE=default PORT=8080 GCLOUD_PROJECT=***** GAE_VERSION=***** GOOGLE_CLOUD_PROJECT=*****
  1. reiniciar gaeapp con privilegios
 docker rm -f gaeapp docker run --privileged -d -p 8080:8080 --name gaeapp -e GAE_MEMORY_MB=614 -e GAE_INSTANCE=instance-id-1 -e GAE_SERVICE=$service -e PORT=8080 -e GCLOUD_PROJECT=$project -e GAE_VERSION=$version -e GOOGLE_CLOUD_PROJECT=$project $imageid
  1. ingrese gaeapp (suponga que tiene gcsfuse instalado y tiene la clave de cuenta de servicio json: /test-service-account.json )
 $ docker exec -it gaeapp bash [in gaeapp] # GOOGLE_APPLICATION_CREDENTIALS=/test-service-account.json gcsfuse BUCKET /mnt/ Using mount point: /mnt Opening GCS connection... Opening bucket... Mounting file system... File system has been successfully mounted.
over 4 years ago · Santiago Trujillo Report

0

Para ser honesto, he probado todas las soluciones posibles. y finalmente la solución anterior funcionó. Desafortunadamente, funcionó solo durante 2-3 días. Después de un tiempo, App Engine reinicia las instancias automáticamente, sin fallas en la aplicación. Por lo tanto, todos los cambios para gcsfuse desaparecieron.

Lo principal para que gcsfuse funcione en un contenedor es ejecutar la imagen de la ventana acoplable en modo privilegiado. Y App Engine no lo permite.

La solución final que estamos usando es GKE, que funciona bien.

Nota: Se esperaba que GAE tuviera alguna provisión para el modo privilegiado, pero ahora no la tiene. En el futuro, el equipo de Google puede presentarlo. ¡Gracias!

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!