Я пытаюсь определить развертывание в Kubernetes для веб-приложения.
Как вы можете видеть в следующем манифесте развертывания, есть модуль с двумя контейнерами внутри:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: app
name: web
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: app
strategy:
type: Recreate
template:
metadata:
labels:
app: app
spec:
containers:
- name: sylius-php-fpm
image: php-fpm:v4
imagePullPolicy: Never
volumeMounts:
- name: nginx-config-volume
mountPath: /etc/nginx/conf.d/default.conf
subPath: default.conf
- name: nginx
image: nginx:alpine
imagePullPolicy: Always
ports:
- containerPort: 80
name: http
protocol: TCP
volumeMounts:
- name: nginx-config-volume
mountPath: /etc/nginx/conf.d/default.conf
subPath: default.conf
restartPolicy: Always
volumes:
- name: nginx-config-volume
configMap:
name: nginx-config
Я определил том с помощью configMap о конфигурации nginx:
kind: ConfigMap
apiVersion: v1
metadata:
name: nginx-config
data:
default.conf: |
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /srv/app/public;
location / {
try_files $uri /index.php$is_args$args;
}
location ~ ^/index\.php(/|$) {
fastcgi_pass php-fpm:9000;
fastcgi_read_timeout 300;
proxy_read_timeout 300;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
internal;
}
location ~ \.php$ {
return 404;
}
client_max_body_size 6m;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
}
Также я использую ksyn c для синхронизации c исходного кода между средой разработки и кластером Kubernetes. Итак, я выставил nginx на 80 портах и cgi на 9000 портах, определяя сервисы следующим образом:
apiVersion: v1
kind: Service
metadata:
name: nginx
labels:
app: app
spec:
ports:
- name: http
port: 80
targetPort: 80
selector:
app: app
type: ClusterIP
------
apiVersion: v1
kind: Service
metadata:
name: php-fpm
labels:
app: app
spec:
ports:
- name: http
port: 9000
targetPort: 9000
selector:
app: app
type: ClusterIP
и определил переадресацию портов для доступа к веб-серверу из локальной среды следующим образом:
kubectl port-forward web-68b788956d-98zcs 80:80
Я не понимаю, почему, когда я пытаюсь посетить 127.0.0.1, я получаю ошибку, произошедшую по таймауту
Кажется, что nginx не связывается с php -fpm контейнером
Я говорю это, потому что, если я пытаюсь увидеть файл html на сервере путей root, он работает нормально, но индекс. php в том же каталоге не работает.
Также когда я пытаюсь пропинговать php -fpm из nginx контейнера
Как я могу решить мою проблему? Кто-нибудь может мне помочь, пожалуйста?
Спасибо всем заранее и извините за длинный пост.