[英]Kubernetes php-fpm missing ingress nginx configuration with minikube
我在這里缺少一些kubernetes ingress-nginx配置,以便在minikube中的k8s上運行php-fpm應用程序。
k8s配置文件:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-service
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /
backend:
serviceName: server-cluster-ip-service
servicePort: 5000
---
apiVersion: v1
kind: Service
metadata:
name: server-cluster-ip-service
spec:
type: ClusterIP
selector:
component: server
ports:
- port: 5000
targetPort: 5000
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: server-deployment
spec:
replicas: 3
selector:
matchLabels:
component: server
template:
metadata:
labels:
component: server
spec:
containers:
- name: server
image: xxx/phpfpm
ports:
- containerPort: 5000
env:
- name: APP_ENV
value: dev
- name: APP_DEBUG
value: '1'
- name: APP_SECRET
value: 74bd83726749616f29166ef53c5f0557
- name: MYSQL_HOST
value: mysql-cluster-ip-service
- name: MYSQL_ROOT_PASSWORD
value: root
- name: MYSQL_DATABASE
value: db
- name: MYSQL_DATABASE_TEST
value: test
- name: MYSQL_USER
value: user
- name: MYSQL_PASSWORD
value: secret
---
apiVersion: v1
kind: Service
metadata:
name: mysql-cluster-ip-service
spec:
type: ClusterIP
selector:
component: mysql
ports:
- port: 3306
targetPort: 3306
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql-deployment
spec:
replicas: 1
selector:
matchLabels:
component: mysql
template:
metadata:
labels:
component: mysql
spec:
volumes:
- name: mysql-storage
persistentVolumeClaim:
claimName: database-persistent-volume-claim
containers:
- name: mysql
image: mysql:5.7.22
ports:
- containerPort: 3306
volumeMounts:
- name: mysql-storage
mountPath: /var/lib/mysql
subPath: mysql
env:
- name: MYSQL_HOST
value: mysql-cluster-ip-service
- name: MYSQL_ROOT_PASSWORD
value: root
- name: MYSQL_DATABASE
value: db
- name: MYSQL_USER
value: user
- name: MYSQL_PASSWORD
value: secret
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: database-persistent-volume-claim
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
在docker nginx映像上用於先前docker開發環境的nginx服務器工作配置文件(nginx在docker中是與php容器分開的容器):
server {
listen 443 default_server ssl;
root /opt/app/public;
index index.php;
...
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location /healthcheck {
return 200 'ok';
add_header Content-Type text/plain;
}
error_page 404 /index.php;
location ~ ^/(index)\.php(/|$) {
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
}
}
在瀏覽器上訪問minikube ip時出現502錯誤。
我已經安裝了運行以下命令的ingress-nginx (如其安裝指南中所述 )
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/mandatory.yaml
$ minikube addons enable ingress
$ make dev-env
我假設我需要以某種方式將根(nginx conf)映射到/ opt / app / public,並以某種方式在ingress-nginx中配置fastcgi_pass,老實說,我仍然對所有的工作方式有所了解。
這可能是以下問題之一。您的進入似乎很好。
您是不是要在與php容器相同的容器中運行Nginx容器? 在同一容器中運行nginx之后,必須將fastci_pass
“ php”替換為“ 127.0.0.1”。
檢查您的Pod日志,如果您的connection refused
則說明您的php容器有問題,它沒有正確暴露端口。 嘗試在您的php pod上進行port-forward
,看看是否可以通過localhost訪問5000。
我看到您在php:9000上有您的fastcgi_pass
,這應該是5000嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.