在Kubernetes环境中尝试实现这一目标时,我偶然发现了这个问题。
在此处https://github.com/phpmyadmin/docker/issues/253中打开了docker-style问题。
我看了可与纯docker一起使用,但不能100%适用于k8。
使用k8s时,$document_root
不能安装在nginx容器内,因为它严格位于phpmyadmin容器(/var/www/html
)内。
因此nginx无法提供静态零件。
FPM为PHP代码提供了很好的服务,没问题,我得到了200的确认GET /index.php HTTP/1.1" 200 3600
但是其他所有资源都以404结尾,因为FPM(不是他的工作)或nginx(本地没有它们)都不提供这些资源。
我的问题是:
如何在Kubernetes环境中实现此用例[nginx] -> [phpmyadmin:fpm]
必然问题:
我的方法或conf中有问题吗?
供参考:
nginx.conf
server {
listen 80;
server_name pma.exemple.com;
location ~ /.*\.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_index index.php;
fastcgi_pass backend-phpmyadmin-service:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
deployment-pma.yaml
[...]
containers:
- name: backend-phpmyadmin
image: phpmyadmin/phpmyadmin:fpm-alpine
env:
- name: PMA_HOST
value: backend-mariadb
- name: PMA_PORT
value: '3306'
- name: PMA_ABSOLUTE_URI
value: 'http://pma.exemple.com/'
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: backend-mariadb-secret
key: pass
service-pma.yaml
apiVersion: v1
kind: Service
metadata:
name: backend-phpmyadmin-service
[...]
ports:
- protocol: TCP
port: 9000