Настройка внутреннего сервиса на GKE без внешнего IP - PullRequest
0 голосов
/ 02 июня 2019

Я новичок в ГКЕ и Кубернетес.Я установил эластичный поиск в GKE, используя Google Click to Deploy.Я также установил nginx-ingress и защитил сервисasticsearch с помощью базовой HTTP-аутентификации (через вход).Я создал внешний статический IP-адрес и назначил его входному контроллеру с помощью поля loadBalancerIp в конфигурации службы ингресс-контроллера.

Вопросы:

  1. У меня есть службы appengine, работающие в GCP, которыенеобходимо получить доступ к этой настройке эластичного поиска.Могу ли я не подвергать свой сервисasticsearch извне - с помощью своего рода «внутреннего» IP-адреса, к которому имеют доступ только мои сервисы appengine?Является ли использование VPC одним из способов сделать это?
  2. Я вижу, что моему входу также был присвоен внешний IP-адрес (созданный мной статический IP-адрес был назначен службе nginx-ingress-controller).Однако, когда я получаю этот IP-адрес на 80-м порту, я получаю отказ в соединении, а на 9200-м порту время ожидания истекает.Можно ли избежать двух внешних IP-адресов?Насколько безопасен этот входящий IP-адрес?Каковы его открытые порты?

Вот моя конфигурация входа:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/auth-realm: Authentication Required - ok
    nginx.ingress.kubernetes.io/auth-secret: basic-auth
    nginx.ingress.kubernetes.io/auth-type: basic
  name: basic-ingress
  namespace: default
 spec:
  rules:
  - http:
      paths:
      - backend:
          serviceName: elasticsearch-1-elasticsearch-svc
          servicePort: 9200
        path: /

Вот конфигурация сервиса входного контроллера:

apiVersion: v1
kind: Service
metadata:
  labels:
    app: nginx-ingress
    chart: nginx-ingress-1.6.15
    component: controller
    heritage: Tiller
    release: nginx-ingress
  name: nginx-ingress-controller
  namespace: default
spec:
  clusterIP: <Some IP>
  externalTrafficPolicy: Cluster
  loadBalancerIP: <External IP>
  ports:
  - name: http
    nodePort: 30290
    port: 80
    protocol: TCP
    targetPort: http
  - name: https
    nodePort: 30119
    port: 443
    protocol: TCP
    targetPort: https
  selector:
    app: nginx-ingress
    component: controller
    release: nginx-ingress
  sessionAffinity: None
  type: LoadBalancer

1 Ответ

1 голос
/ 02 июня 2019

Я предлагаю использовать 2 балансировщика нагрузки, 1 для общедоступного и 1 для частного.Чтобы создать частный балансировщик нагрузки, вам просто нужно добавить следующую строку в раздел метаданных

cloud.google.com/load-balancer-type: "Internal"

Ссылка: https://cloud.google.com/kubernetes-engine/docs/how-to/internal-load-balancing

...