Один вход GCE в GKE заставляет другой вход GCE обслуживать бэкэнд по умолчанию - PullRequest
0 голосов
/ 31 октября 2018

Я использую внешний DNS для дополнительного фона.

Я настроил одну службу, развертывание и вход для приложения «А», и все это работает как положено, и я могу связаться с приложением А по указанному URL-адресу. Затем я настраивал аналогичную вещь для приложения "B", и теперь я могу связаться с приложением B, но если я нажму URL, указанный для приложения A, я получу сообщение default backend - 404. Я не видел эту проблему раньше, в чем проблема? Ниже приведены манифесты службы, развертывания и входа для A и B:

A: обслуживание:

apiVersion: v1
kind: Service
metadata:
  name: my-app-A
spec:
  ports:
    - name: https
      port: 443
      protocol: TCP
      targetPort: 3000
    - name: http
      port: 80
      protocol: TCP
      targetPort: 3000
  selector:
    run: my-app-A
  type: NodePort

A: развертывание:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: my-app-A
spec:
  replicas: 1
  template:
    metadata:
      labels:
        run: my-app-A
    spec:
      containers:
        - name: my-app-A
          image: this-is-my-docker-image
          imagePullPolicy: Always
          envFrom:
            - secretRef:
                name: my-app-A-secrets
            - configMapRef:
                name: my-app-A-configmap
          ports:
            - containerPort: 3000

A: вход:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: my-app-A
  annotations:
    external-dns.alpha.kubernetes.io/hostname: "A.myurl.com"
    kubernetes.io/ingress.class: "gce"
    kubernetes.io/ingress.allow-http: "true"
spec:
  rules:
  - host: "A.myurl.com"
    http:
      paths:
      - path: /*
        backend:
          serviceName: my-app-A
          servicePort: 80
  - host: "my-app-A-namespace.clusterbase.myurl.com"
    http:
      paths:
      - path: /*
        backend:
          serviceName: my-app-A
          servicePort: 80

Для манифестов для B замените все вхождения "A" на "B" и замените external-dns.alpha.kubernetes.io/hostname: "A.myurl.com" на external-dns.alpha.kubernetes.io/hostname: "myurl.com".

1 Ответ

0 голосов
/ 07 ноября 2018

Проблема заключалась в том, что имя пространства имен + вход было слишком длинным, а ресурсы, создаваемые в фоновом режиме, заканчивались тем же именем, поскольку они имели ограничение в 64 символа и уникальная часть была обрезана. Я здесь подал ошибку, которая объясняет в ней более подробно.

https://github.com/kubernetes/ingress-gce/issues/537

Эта проблема возникнет, если первые 64 символа <namespace>-<ingress> не являются уникальными.

...