kubernetes перенаправляет исходящий http-трафик со службы на локальный хост: порт - PullRequest
0 голосов
/ 23 мая 2018

У меня есть диаграмма в двух контейнерах:

apiVersion: apps/v1beta2
kind: Deployment
metadata:
  name: catalog
  labels:
    app: catalog
    chart: catalog-0.1.0
    heritage: Tiller
spec:
  replicas: 1
  selector:
    matchLabels:
      app: catalog
  template:
    metadata:
      labels:
        app: catalog
    spec:
      containers:
        - name: catalog
          image: catalog:v1
          imagePullPolicy: IfNotPresent
          ports:
            - name: http
              containerPort: 8080
              protocol: TCP
        - name: myproxy
          image: myproxy:v1
          imagePullPolicy: IfNotPresent
          ports:
            - name: http
              containerPort: 8008
              protocol: TCP
          env:
            - name: PROXY_PORT
              value: '8080'
---
apiVersion: v1
kind: Service
metadata:
  name: catalog
  labels:
    app: catalog
    chart: catalog-0.1.0
    heritage: Tiller
spec:
  type: NodePort
  ports:
    - port: 8008
      targetPort: http
      protocol: TCP
      name: http
  selector:
    app: catalog

Мне нужно перенаправить весь исходящий трафик из контейнера каталога в контейнер myproxy по localhost.

И уже в контейнереопределить, может ли каталог отправлять запросы, регистрировать их и т. д.

Подскажите пожалуйста, можно ли реализовать это с помощью kubernetes.

Спасибо.


Обновление:

Проблема в том, что я не могу изменить код в контейнере catalg и отправлять запросы на localhost

В контейнере также нет iptables, чтобы сделать что-то подобное

containers:
    - name: catalog
      image: catalog:v1
      imagePullPolicy: IfNotPresent
      command:
        - 'iptables -t nat -A OUTPUT -p tcp --dport 8080 -j DNAT --to-destination 127.0.0.1:8008'
      ports:
        - name: http
          containerPort: 8080
          protocol: TCP

Идеально сделано с kubernetes

Ответы [ 2 ]

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

Для вашего обновления, если вам нужно манипулировать iptables, вы можете добавить еще initContainer, например:

  initContainers:
  - image: centos
    imagePullPolicy: Always
    name: run-iptables
    securityContext:
      privileged: true
    command:
    - "sh"
    - "-c"
    - 'yum -y install iptables; iptables -t nat -A OUTPUT -p tcp --dport 8080 -j DNAT --to-destination 127.0.0.1:8008'

Поскольку все контейнеры в модуле имеют одно и то же пространство имен, это влияет на каталогконтейнер, а также.

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

Если приложение каталога учитывает переменную окружения http_proxy, это легко.Просто добавьте переменную окружения в контейнер каталога.

    - name: catalog
      image: catalog:v1
      imagePullPolicy: IfNotPresent
      ports:
        - name: http
          containerPort: 8080
          protocol: TCP
      env:
      - name: HTTP_PROXY
        value: localhost:8008
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...