Kubernetes ingress-nginx LoadBalancer, указывающий на область облака - PullRequest
2 голосов
/ 21 апреля 2019

Я использую nginx-ingress-controller: 0.24.1 ( Вдохновлен )

Я хотел бы установить запись DNS A на LB IP-адрес,поэтому он подключил бы его к общедоступной корзине облака Google (my-back-end-bucket), которая имеет открытый index.html в корне, и к бэк-энду с помощью другого правила URL.

kind: Service
apiVersion: v1
metadata:
  name: ingress-nginx
  namespace: ingress-nginx
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
spec:
  externalTrafficPolicy: Local
  type: LoadBalancer
  selector:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
  ports:
    - name: http
      port: 80
      targetPort: http
    - name: https
      port: 443
      targetPort: https

---

kind: Service
apiVersion: v1
metadata:
  name: google-storage-buckets-service
  namespace: ingress-nginx
spec:
  type: ExternalName
  externalName: storage.googleapis.com

---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: proxy-assets-ingress
  namespace: ingress-nginx
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /my.bucket.com
    nginx.ingress.kubernetes.io/secure-backends: "true"
    nginx.ingress.kubernetes.io/upstream-vhost: "storage.googleapis.com"
spec:
  rules:
    - http:
        paths:
          - path: /*
            backend:
              serviceName: google-storage-buckets-service
              servicePort: 443
          - path: /c/
            backend:
              serviceName: hello-world-service
              servicePort: 8080

Достигнув https://my.ip.add.ress/c - получил оба выхода: Привет, мир!содержимое корзины.

«Привет, мир!» из службы hello-world-service

«содержимое корзины» из файла bucket 'index.html

Вопрос: как заставить его работать так, чтобы к ip / - я получил содержимое корзины и ip / c - внутреннее содержимое ответа?

1 Ответ

1 голос
/ 30 апреля 2019

Вы можете разделить ваш вход на два, где один определяет path: /* с необходимой аннотацией, а другой вход, который определяет path: /c/.

Проблема с вашим единственным входом в том, что аннотации, которые вы хотите применить к path: /*, применяются только к другим путям.

...