Вход NGINX загружает только html в Kubernetes AKS

#nginx #kubernetes #nginx-ingress #azure-aks

#nginx #kubernetes #вход nginx #azure-aks

Вопрос:

Я настраиваю свой кластер Kubernetes с помощью Azure AKS и развернул NGINX Ingress, следуя этому руководству: https://docs.microsoft.com/en-us/azure/aks/ingress-internal-ip

Теперь руководство отлично подходит для демонстрационных приложений, в которых оно демонстрируется, но когда я попытался развернуть одно из своих собственных приложений, на странице были показаны только части html, а для частей js, css и png я получил следующие ошибки в консоли: введите описание изображения здесь

Когда я развертываю приложение без NGINX Ingress в своем кластере K8S, оно работает отлично, но по какой-то причине, когда я развертываю его через NGINX, я получаю эти ошибки.

Я также попытался развернуть другое приложение, pgAdmin, и для этого я получаю сообщение об ошибке 503 только при попытке зайти на его страницу.

Я попробовал несколько обходных путей, которые я нашел в Интернете, но, похоже, ничего не исправило.

Файлы:

internal-ingress.yaml:

 controller:
service:
  loadBalancerIP: 10.50.0.253
  annotations:
    service.beta.kubernetes.io/azure-load-balancer-internal: "true"
 

hello-world-ingress.yaml:

 apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: hello-world-ingress
  namespace: infra
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  rules:
   - http:
      paths:
      - backend:
          serviceName: aks-helloworld
          servicePort: 80
        path: /hello-world-one(/|$)(.*)  
      - backend:
          serviceName: pgadmin
          servicePort: 80
        path: /pgadmin(/|$)(.*)
      - backend:
          serviceName: pgadmin
          servicePort: 80
        path: /(.*)
      - backend:
           serviceName: box-model
           servicePort: 80
        path: /box-model(/|$)(.*)
 

развертывание pgadmin yaml:

 apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ .Values.pgadmin.name }}
spec:
  selector:
    matchLabels:
      app: {{.Values.pgadmin.name}}
  replicas: {{.Values.pgadmin.deployment.replicas}}
  strategy:
    type: {{.Values.pgadmin.deployment.strategy}}
  template:
    metadata:
      labels:
        app: {{.Values.pgadmin.name}}
    spec:
      containers:
      - env:
        - name: PGADMIN_DEFAULT_EMAIL
          valueFrom: 
            secretKeyRef:  
              name: {{.Values.pgadmin.secrets.PGADMIN_DEFAULT_EMAIL.name}}
              key: {{.Values.pgadmin.secrets.PGADMIN_DEFAULT_EMAIL.key}}
        - name: PGADMIN_DEFAULT_PASSWORD
          valueFrom: 
            secretKeyRef:  
              name: {{.Values.pgadmin.secrets.PGADMIN_DEFAULT_PASSWORD.name}} 
              key: {{.Values.pgadmin.secrets.PGADMIN_DEFAULT_PASSWORD.key}}
        image: {{.Values.pgadmin.deployment.image}}
        imagePullPolicy: {{.Values.pgadmin.deployment.imagePullPolicy}}
        name: {{.Values.pgadmin.name}}
        ports:
        - containerPort: {{.Values.pgadmin.deployment.containerPort}}
        volumeMounts: 
        - mountPath: {{.Values.pgadmin.deployment.volumeMounts.name}}
          name: {{.Values.pgadmin.deployment.volumeMounts.name}}
        resources: {}
      restartPolicy: {{.Values.pgadmin.deployment.restartPolicy}}
      serviceAccountName: ""
      volumes:
        - name: {{.Values.pgadmin.volumes.pvc.name}}
          persistentVolumeClaim:
            claimName: {{.Values.pgadmin.volumes.pvc.name}}
status: {}
 

служба pgadmin yaml:

 apiVersion: v1
kind: Service
metadata:
  name: {{.Values.pgadmin.name}}
spec:
  ports:
  - name: {{.Values.pgadmin.deployment.containerPort | quote}} 
    port: {{.Values.pgadmin.deployment.containerPort}}
    targetPort: {{.Values.pgadmin.deployment.containerPort}}
status:
  loadBalancer: {}
 

Пожалуйста, скажите мне, отсутствует ли соответствующая информация, и я добавлю ее.

Ответ №1:

Может быть nginx.ingress.kubernetes.io/rewrite-target : /$ 1 создает проблему. Я не уверен.