Можно ли указать точку входа GKE K8 на бэкэнд LB? - PullRequest
1 голос
/ 22 мая 2019

У меня настроены следующие службы:

развертывание (2 модуля) -> маршруты балансировки нагрузки к этому развертыванию -> точка входа, завершающая https, указывающая на балансировщик нагрузки в качестве бэкэнда.

Пока он обслуживает правильный сертификат, но по некоторым причинам указывает на «неправильный» бэкэнд.На wkeconsole GKE просто говорится, что мои бэкэнд-сервисы вредны для здоровья, как только я нажимаю на них, их не существует.Что я здесь не так делаю?

[stupifatcatslaptop poc (dev)]$  kubectl get pods -o wide | grep my_project
my_project-flask-poc-696f7b57c5-54n6r         1/1       Running            0          13d       10.236.1.228   gke-qus1-shared-1-prod-default-pool-44da43de-vq4c
my_project-flask-poc-696f7b57c5-m57h7         1/1       Running            0          13d       10.236.0.16    gke-qus1-shared-1-prod-default-pool-b27de1c2-2h63
[stupifatcatslaptop poc (dev)]$ kubectl get services | grep my_project
my_project-flask-poc-lb                     LoadBalancer   {internal_ip_0}   {internal_ip_1}   8080:32133/TCP               33d
[stupifatcatslaptop poc (dev)]$ kubectl get ingress
NAME                       HOSTS                          ADDRESS          PORTS     AGE
my_project-flask-poc-ingress   my_project-flask-poc.mydomain.com   {external_ip}   80, 443   1d

Это мой входной файл yaml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: my_project-flask-poc-ingress
spec:
  tls:
  - secretName: my_project-poc-tls
  rules:
  - host: my_project-flask-poc.mydomain.com
    http:
      paths:
      - backend:
          serviceName: my_project-flask-poc-lb
          servicePort: 8080

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

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: my_project-flask-poc
  labels:
    app: my_project-flask-poc
spec:
  replicas: 2
  template:
    metadata:
      labels:
        app: my_project-flask-poc
    spec:
      containers:
        - name: my_project-flask-poc
          image: gcr.io/myprojectid/my_project-flask-poc
          ports:
            - containerPort: 8080
          volumeMounts:
          - name: secrets
            mountPath: "/etc/secrets"
            readOnly: true
      volumes:
      - name: secrets
        secret:
          secretName: my_project-secret-poc

lb serviceyaml

apiVersion: v1
kind: Service
metadata:
  name: my_project-flask-poc-lb
  annotations:
    cloud.google.com/load-balancer-type: "Internal"
spec:
  type: LoadBalancer
  loadBalancerIP: {someinternalip} 
  selector:
    app: my_project-flask-poc
  ports:
  - protocol: TCP
    port: 8080
    targetPort: 8080

1 Ответ

0 голосов
/ 15 июля 2019

Когда дело доходит до GKE, только входной тип GCE управляет вашими SSL-сертификатами , следовательно, это единственный вариант, имеющий SSL-терминацию на уровне LB.

Для Kubernetes 'service type load balancer вы обнаружите, что балансировщик сетевой нагрузки подключен к кластеру. Для этого типа балансировщика нагрузки SSL-завершение должно обрабатываться в серверной части .

Это связано с тем, что сертификаты SSL управляются приложениями уровня 7, а сетевой балансировщик нагрузки работает на уровне 4, как указано в предыдущем общем ответе .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...