Контейнерное приложение Django работает на локальном, но не на GKE
Любые контейнерные приложения Django работают в локальном режиме, но при запуске на GKE возвращают только "no healthy upstream
".
Я попробовал с этим примером django: https://github.com/mukulmantosh/cloud-code-helloworld
на котором я только закомментировал mysqlclient
в requirements.txt
файле.
В GKE приложение работает за внутренним балансировщиком нагрузки (у меня нет доступа к Cloud Run по каким-то корпоративным причинам).
Что я получаю в локальном режиме:
(base) C:\Users\path\to\app>docker run -p 8080:8080 helloworld:1
[21/Feb/2024 10:54:17] "GET / HTTP/1.1" 200 3968
[21/Feb/2024 10:54:17] "GET /static/KE-hello-world.svg HTTP/1.1" 200 116030
[21/Feb/2024 10:54:17] "GET /static/cloud_bg.svg HTTP/1.1" 200 7213
[21/Feb/2024 10:54:17] "GET /static/kubernetes-engine-icon.png HTTP/1.1" 200 6967
[21/Feb/2024 10:54:19] "GET / HTTP/1.1" 200 3968
Что я получаю в журналах рабочей нагрузки на GCP:
2024-02-21 12:03:40.613 CET
Not Found: /
2024-02-21 12:03:40.613 CET
[21/Feb/2024 11:03:40] "GET / HTTP/1.1" 404 2272
Вам нужно правило брандмауэра VPC, которое позволяет диапазонам IP-адресов зонда проверки работоспособности балансировщика нагрузки подключаться к узлам kubernetes, на которых запущено ваше развертывание. Согласно https://cloud.google.com/load-balancing/docs/health-check-concepts#ip-ranges для внутренних балансировщиков нагрузки это:
35.191.0.0/16
130.211.0.0/22