Как иметь автоматически масштабируемый API Laravel в Куберне - PullRequest
0 голосов
/ 18 ноября 2018

Итак, я играл с kubernetes последние несколько дней и углублялся во все технологии.Но я дошел до того, что не могу превзойти, надеюсь, кто-нибудь сможет мне помочь.

Моя цель: запустить приложение Laravel на Nginx + PHP-fpm в kubernetes (каждый сервис по-своемуpod, чтобы иметь возможность независимо масштабироваться)

Моя текущая проблема: когда я достигаю своей конечной точки, я получаю результат 200 независимо от того, какой код выполняется в фоновом режиме.На данный момент я больше не уверен, что не понимаю, как работает nginx + php-fpm + laravel.

Насколько я понимаю, любой запрос может что-то сделать в этом направлении: Browser-> nginx-> php-fpm-> nginx-> browser.

Поскольку Nginx просто передает запрос и ничего не делает с самим запросом.

Я оставляю соответствующие файлы на случай, если кто-то может мне помочь.

Любая помощь будет более чем приветствоваться

deploy.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: php-fpm
  namespace: dash
  labels:
    app: php-fpm
spec:
  selector:
    matchLabels:
      app: php-fpm
  replicas: 1
  template:
    metadata:
      labels:
        app: php-fpm
    spec:
      containers:
      - name: php-fpm
        image: azurecr.io/php
        ports:
        - containerPort: 9000
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
  namespace: dash
labels:
  app: nginx
  spec:
    selector:
      matchLabels:
        app: nginx
    replicas: 1
    template:
      metadata:
        labels:
          app: nginx
      spec:
        containers:
        - name: nginx
          image: azurecr.io/nginx
          ports:
          - containerPort: 80

services.yaml

kind: Service
apiVersion: v1
metadata:
  name: php-service
  namespace: dash
spec:
  selector:
    app: php-fpm
  ports:
  - name: php-fpm-port
    protocol: TCP
    port: 9000
---
kind: Service
apiVersion: v1
metadata:
  name: nginx-service
  namespace: dash
spec:
  selector:
    app: nginx
  ports:
  - name: "80-nginx"
    port: 80
    targetPort: 80
  - name: "443-nginx"
    port: 443
    targetPort: 443

nginx.conf

server {
    # Set the port to listen on and the server name
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    server_name api.dashboard;

   location / {
       fastcgi_pass php-service.dash:9000;
       fastcgi_buffers 16 16k;
       fastcgi_buffer_size 32k;
       fastcgi_param PATH_INFO $fastcgi_path_info;
       #fixes timeouts
       fastcgi_read_timeout 600;
       include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
   }

    location /.well-known/acme-challenge/ {
        root /var/www/letsencrypt/;
        log_not_found off;
    }

    error_log /var/log/nginx/laravel_error.log;
    access_log /var/log/nginx/laravel_access.log;
}

php-fpm.conf

user = www-data
group = www-data
listen = 0.0.0.0:9000

1 Ответ

0 голосов
/ 19 ноября 2018

После еще нескольких испытаний и расследований моя проблема возникла из-за недоразумения.Я предполагал, что nginx не будет нуждаться в коде, так как он не будет его обрабатывать, но он действительно необходим для того, чтобы приложение Laravel работало должным образом.

Способ устранения проблемы - копированиефайлы кодов в модулях nginx также.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...