Назначьте общедоступный IP-адрес службе, работающей в Kubernetes - PullRequest
0 голосов
/ 04 мая 2018

у меня есть приложение (скажем, Integration-protocol-api) и это приложение хочет общаться с другим приложением, но это приложение находится в другой сети (назовем его Another-Integration-Protocol)
И проблема в том, что на стороне другого протокола интеграции существует белый список, который позволяет подключаться к нему только с выбранных IP-адресов. Но мой API-протокол интеграции Dockerized и работает на кластере Kubernetes, поэтому IP-адрес меняется каждый раз, когда я перезагружаю свой модуль. Как я могу назначить Публичный и Статический ip моему Pod Kubernetes?

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Модуль делает любой запрос с IP-адресом своего узла в качестве источника. Таким образом, вы можете внести в белый список IP-адреса узлов вашего кластера, и он должен работать.

0 голосов
/ 04 мая 2018

Но мой API-протокол интеграции Dockerized и работает на кластере Kubernetes, поэтому IP-адрес меняется каждый раз при перезапуске моего модуля. как я могу назначить публичный и статический ip моему Pod Kubernetes

  • Есть несколько подходов, в зависимости от ваших фактических настроек / потребностей, и я постараюсь дать некоторые варианты здесь:

    • Свяжите модуль с конкретным узлом и предоставьте IP-адрес этого узла через службу. Это было бы что-то вроде этого:

      # Quick deployment/pod manifest node selector (affinity is better)
      ...
      spec:
        nodeSelector:
          kubernetes.io/hostname: my-node-name
      ...
      # Service manifest 
      apiVersion: v1
      kind: Service
      metadata:
        name: svc-myservice
        labels:
          app: myapp
          tier: frontend
      spec:
        selector:
          app: myapp
          tier: frontend
        ports:
        - name: tcpserviceport
          protocol: TCP
          port: 8080
          targetPort: 80
        externalIPs:
        - 111.222.222.111
      

      Pod должен быть в том же пространстве имен, связан с этим узлом либо с помощью селектора узла, либо с помощью правил соответствия и иметь те же метки, что и селектор, чтобы служба могла его поднять. IP-адрес узла кластера с именем my-node-name в этом примере должен быть 111.222.222.111, и он будет доступен через порт 8080 и этот IP-адрес.

    • Если применимо, предоставлять доступ к сервисам только через общедоступные IP-адреса входа и белого списка. В зависимости от разделения пространства имен вы будете ссылаться на ваш модуль (где бы он ни работал) во входе через соответствующую службу, используя либо имя службы (в области пространства имен), либо полное доменное имя, например:

      <service-name>.<namespace-name>.svc.cluster.local
      
    • Вот хороший обзор некоторых методов, чтобы сделать его более наглядным из документации kubernetes: https://kubernetes.io/docs/tutorials/kubernetes-basics/expose-intro/

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