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

249
Views
Rieles - ActionCable: "action_cable.url" para Kubernetes/Minikube

¿Qué config.action_cable.url debe configurarse para websockets/Rails/Kubernetes/Minukube con Nginx?

Cuando se ejecuta "docker-compose" localmente, un proceso Nginx frente a un proceso Rails (no solo API, sino con SSR) y un proceso de Cable independiente (consulte las guías ), los websockets funcionan bien al pasar el siguiente lado del servidor (en diga "/config/application.rb", con action_cable_meta_tag establecido en los diseños):

 config.action_cable.url = 'ws://localhost:28080'

Estoy apuntando a Kubernetes con Minikube localmente: implementé Nginx frente a una implementación de Rails (RAILS_ENV=producción) junto con una implementación de Cable, pero no puedo hacer que funcione. El servicio de Cable es interno de tipo "ClusterIP", con "port" y "targetPort". Probé varias variaciones.

¿Algún consejo?

Tenga en cuenta que uso Nginx -> Rails + Cable en Minikube, y el punto de entrada es el servicio Nginx, externo del tipo LoadBalancer donde usé:

 upstream rails { server rails-svc:3000; } server { listen 9000 default_server; root /usr/share/nginx/html; try_files $uri @rails; add_header Cache-Control public; add_header Last-Modified ""; add_header Etag ""; location @rails { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $http_host; proxy_set_header Host $http_host; proxy_pass_header Set-Cookie; proxy_redirect off; proxy_pass http://rails; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }

Para permitir cualquier origen, también configuro:

 config.action_cable.disable_request_forgery_protection = true
over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Tengo una respuesta: en un clúster de Minikube, no coloque nada y deshabilite la protección contra falsificación, Rails establecerá el valor correcto por defecto. Cuando Nginx está frente a un pod de Rails y un pod de ActionCable/websocket independiente (la imagen de Rails se inicia con el bundle exec puma -p 28080 cable/config.ru ), si nombro "cable-svc" el servicio que expone el contenedor de ActionCable , y "rails-svc" el del contenedor Rails, debe:

  • en K8, no establezca la configuración para CABLE_URI
  • en el backend de Rails, no tiene la URL (desconocido 127.0.0.1:some_port ), haga lo siguiente:
 # config.action_cable.url <-- comment this config.action_cable.disable_request_forgery_protection=true
  • en la configuración de Nginx, agregue una ubicación específica para la ruta "/cable":
 upstream rails { server rails-svc:3000; } server { [...root, location @rails {...}] location /cable { proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_pass "http://cable-svc:28080"; } }

Verifique los registros, no más WebSockets en Rails y Cable responde.

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!