Wordpress с проблемой перенаправления на кластере kubernetes - PullRequest
0 голосов
/ 30 апреля 2020

Я настроил кластер Kubernetes на облаке Google с 2 узлами. все работает нормально, кроме Wordpress.

Краткая информация о программе установки и о том, что я пытаюсь сделать.

Я пытаюсь запустить контейнеры laravel, WordPress и mysql. пока laravel и mysql работает нормально и доступно. но возникли проблемы с Wordpress. каждый раз, когда я пытаюсь получить доступ к WordPress, он всегда перенаправляется на https://k8s.example.com/wp-admin/setup-config.php и css, также отсутствует, он показывает смешанный контент, когда я проверяю браузер> проверять> консоль, когда я пытаюсь просмотреть любой css URL вручную он перенаправляет в setup-config. php снова, как https://k8s.example.com/wp-includes/js/jquery/jquery.js?ver=1.12.4-wp, он снова будет принимать https://k8s.example.com/wp-admin/setup-config.php, короче говоря, все, что я его обозреваю, перенаправляет в setup-config . php, так как у меня есть файл info. php и попробуйте получить доступ с помощью https://k8s.example.com/info.php, который также используется для настройки конфигурации. php

Я использую следующие изображения :

wordpress: - wordpress: php7 .4-fpm-alpine

laravel: - пользовательский образ сборки с использованием Dockerfile

mysql: - mysql: 5.7

nginx: - nginx: alpine

Я использую NFS для обработки кода, и это работает нормально. Я вижу файлы на NFS-сервере должным образом.

здесь Nginx config ниже

# /etc/nginx/conf.d/default.conf

server {

        listen 80;
        root /var/www/html/app/public;
        index index.php index.html index.htm index.nginx-debian.html;

        location / {
                try_files $uri $uri/ /index.php?$query_string;
        }        

        location ~ \.php$ {
        fastcgi_pass laravel-service-port:9000;
        fastcgi_index  index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_buffers 256 128k;
        fastcgi_connect_timeout 300s;
        fastcgi_send_timeout 300s;
        fastcgi_read_timeout 300s;
        include fastcgi_params;
        }
}        
server {

        listen 81;
        root /var/www/html;
        index index.php index.html;

        location / {
                try_files $uri $uri/ /index.php?$args;
        }        

        location ~ \.php$ {
        fastcgi_pass wordpress-service:9000;
        fastcgi_index  index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_buffers 256 128k;
        fastcgi_connect_timeout 300s;
        fastcgi_send_timeout 300s;
        fastcgi_read_timeout 300s;
        include fastcgi_params;
        }
}        

Я подключился с php -fpm, используя их имена serivce в fastcgi_pass и открыл Порт laravel на 80 и порт WordPress на 81 и открыли оба порта в развертывании nginx с использованием containerPort.

, затем создали службу с типом ClusterIP. Ниже приведено содержимое файла.

apiVersion: v1
kind: Service
metadata:
    name: application-webserver-service
spec:
    type: ClusterIP
    selector:
        component: frontend
    ports:
          - name: laravel 
            targetPort: 80
            port: 80
          - name: wordpress
            targetPort: 81
            port: 81

Тогда вот входные файлы для обоих.

# laravel-ingress.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
    name: nginx-ingress-service
    annotations:
        kubernetes.io/ingress.class: nginx
        nginx.ingress.kubernetes.io/rewrite-target: /$2
        nginx.ingress.kubernetes.io/ssl-redirect: "false"
        nginx.ingress.kubernetes.io/force-ssl-redirect: "false"
spec:
    tls:
      - secretName: k8s-example-tls
        hosts:
          - k8s.example.com
    rules:
        - host: k8s.example.com
          http:
              paths:
                - path: /laravel(/|$)(.*)
                  backend:
                      serviceName: application-webserver-service
                      servicePort: 80

Я прочитал документы для реализации аннотаций. так как это laravel нет, и проблема работает нормально. только что упомянул прояснение настройки

# wordpress-ingress.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
    name: wordpress-ingress-service
    annotations:
        kubernetes.io/ingress.class: nginx
        nginx.ingress.kubernetes.io/rewrite-target: /
        nginx.ingress.kubernetes.io/ssl-redirect: "false"
        nginx.ingress.kubernetes.io/force-ssl-redirect: "false"
spec:
    tls:
      - secretName: k8s-example-tls
        hosts:
          - k8s.example.com
    rules:
        - host: k8s.example.com
          http:
              paths:
                - path: /
                  backend:
                      serviceName: application-webserver-service
                      servicePort: 81

Здесь я получаю проблему с Wordpress. Я попытался выполнить обе аннотации, связанные с SSL, но перенаправление происходило.

Я пытался использовать метод, который я использовал в laravel, например, создание пути с /wordpress(/|$)(.*) и rewrite-target / $ 2, но происходит то же самое.

до того, как оба конфигурационных YAML находятся в одном файле, я разделил их, чтобы сделать его более понятным и правильно реализовать правила перенаправления, чтобы laravel rules don ' У меня проблема с работающим WordPress.

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

Спасибо

РЕДАКТИРОВАТЬ 1

# kubectl get all
NAME                                                 READY   STATUS    RESTARTS   AGE
pod/application-nginx-loadbalancer-5d8c58775-fdx9t   1/1     Running   0          27m
pod/application-test-deployment-65bf678959-cm2dd     1/1     Running   0          27m
pod/mysql-deployment-instance-6dff9dcb6b-n9qwk       1/1     Running   0          27m
pod/nginx-ingress-controller-6456bbf68-db6pn         1/1     Running   0          3h17m
pod/nginx-ingress-default-backend-674d599c48-fc689   1/1     Running   0          3h17m
pod/wordpress-deployment-79849f7497-jzmhc            1/1     Running   0          27m

NAME                                    TYPE           CLUSTER-IP    EXTERNAL-IP     PORT(S)                      AGE
service/application-service-port        ClusterIP      10.0.15.193   <none>          9000/TCP                     27m
service/application-webserver-service   ClusterIP      10.0.5.90     <none>          80/TCP,81/TCP                27m
service/kubernetes                      ClusterIP      10.0.0.1      <none>          443/TCP                      6d1h
service/mysql-service-instace           ClusterIP      10.0.15.54    <none>          3306/TCP                     27m
service/nginx-ingress-controller        LoadBalancer   10.0.8.169    192.168.1.1     80:30327/TCP,443:31217/TCP   6d1h
service/nginx-ingress-default-backend   ClusterIP      10.0.10.103   <none>          80/TCP                       6d1h
service/redis-service-instace           ClusterIP      10.0.5.9      <none>          6379/TCP                     27m
service/wordpress-service               ClusterIP      10.0.7.197    <none>          9000/TCP                     27m

NAME                                             READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/application-nginx-loadbalancer   1/1     1            1           27m
deployment.apps/application-test-deployment      1/1     1            1           27m
deployment.apps/mysql-deployment-instance        1/1     1            1           27m
deployment.apps/nginx-ingress-controller         1/1     1            1           6d1h
deployment.apps/nginx-ingress-default-backend    1/1     1            1           6d1h
deployment.apps/wordpress-deployment             1/1     1            1           27m

NAME                                                       DESIRED   CURRENT   READY   AGE
replicaset.apps/application-nginx-loadbalancer-5d8c58775   1         1         1       27m
replicaset.apps/application-test-deployment-65bf678959     1         1         1       27m
replicaset.apps/mysql-deployment-instance-6dff9dcb6b       1         1         1       27m
replicaset.apps/nginx-ingress-controller-6456bbf68         1         1         1       6d1h
replicaset.apps/nginx-ingress-default-backend-674d599c48   1         1         1       6d1h
replicaset.apps/wordpress-deployment-79849f7497            1         1         1       27m
# nginx deployment
apiVersion: apps/v1
kind: Deployment
metadata:
    name: application-nginx-loadbalancer
spec:
    replicas: 1
    selector:
        matchLabels:
            component: frontend
    template:
        metadata:
            labels:
                component: frontend
        spec:
            containers:
              - name: nginx
                image: rvraj/nginx
                ports:
                  - containerPort: 80
                  - containerPort: 81
# nginx service
apiVersion: v1
kind: Service
metadata:
    name: application-webserver-service
spec:
    type: ClusterIP
    selector:
        component: frontend
    ports:
          - name: laravel 
            targetPort: 80
            port: 80
          - name: wordpress
            targetPort: 81
            port: 81
# wordpress deployment
apiVersion: apps/v1
kind: Deployment
metadata:
    name: wordpress-deployment
spec:
    replicas: 1
    selector:
        matchLabels:
            component: wordpress
    template:
        metadata:
            labels:
                component: wordpress
        spec:
            containers:
              - name: wordpress
                image: wordpress:php7.4-fpm-alpine
                ports:
                  - containerPort: 9000
                volumeMounts:
                      - name: wordpress-storage
                        mountPath: /var/www/html
            volumes:
                  - name: wordpress-storage
                    persistentVolumeClaim:
                        claimName: wordpress-pvc
# wordpress service
apiVersion: v1
kind: Service
metadata:
    name: wordpress-service
spec:
    type: ClusterIP
    selector:
        component: wordpress
    ports:
          - port: 9000
            targetPort: 9000
#wordpress pvc
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
    name: wordpress-pvc
spec:
    storageClassName: ""
    accessModes:
          - ReadWriteMany
    resources:
        requests:
            storage: 500Mi
# wordpress pv
apiVersion: v1
kind: PersistentVolume
metadata:
    name: wordpress-pv-config
spec:
    capacity:
        storage: 10Gi
    accessModes:
          - ReadWriteMany
    nfs:
        server: 10.148.0.2
        path: "/k8s_nfs_disk/wordpress"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...