Я жажду, чтобы в модуле работало 2 приложения, каждое из которых имеет свой собственный контейнер. Приложение A - это простое приложение с начальной загрузкой, которое отправляет HTTP-запросы другому приложению, которое развернуто в Kubernetes. Назначение приложения B (прокси) - перехватить этот HTTP-запрос и добавить токен авторизации в его заголовок. Приложение B - это mitmdump со скриптом python. Проблема, с которой я сталкиваюсь, заключается в том, что при развертывании в Kubernetes прокси-сервер, похоже, вообще не перехватывает трафик c (я пытался воспроизвести эту проблему на своем локальном компьютере и не обнаружил никаких проблем, поэтому я угадайте, что проблема лежит где-то в сети внутри стручка). Может кто-нибудь взглянуть на него и подсказать, как его решить?
Вот файл развертывания и обслуживания.
apiVersion: apps/v1
kind: Deployment
metadata:
name: proxy-deployment
namespace: myown
labels:
app: application-a
spec:
replicas: 1
selector:
matchLabels:
app: application-a
template:
metadata:
labels:
app: application-a
spec:
containers:
- name: application-a
image: registry.gitlab.com/application-a
resources:
requests:
memory: "230Mi"
cpu: "100m"
limits:
memory: "460Mi"
cpu: "200m"
imagePullPolicy: Always
ports:
- containerPort: 8090
env:
- name: "HTTP_PROXY"
value: "http://localhost:1030"
- name:
image: registry.gitlab.com/application-b-proxy
resources:
requests:
memory: "230Mi"
cpu: "100m"
limits:
memory: "460Mi"
cpu: "200m"
imagePullPolicy: Always
ports:
- containerPort: 1080
---
kind: Service
apiVersion: v1
metadata:
name: proxy-svc
namespace: myown
spec:
ports:
- nodePort: 31000
port: 8090
protocol: TCP
targetPort: 8090
selector:
app: application-a
sessionAffinity: None
type: NodePort
А вот как я создаю docker образ mitmproxy / mitmdump
FROM mitmproxy/mitmproxy:latest
ADD get_token.py .
WORKDIR ~/mit_docker
COPY get_token.py .
EXPOSE 1080:1080
ENTRYPOINT ["mitmdump","--listen-port", "1030", "-s","get_token.py"]
РЕДАКТИРОВАТЬ
Я создал два фиктивных docker изображения, чтобы иметь этот сценарий воссоздается локально.
APPLICATION A - приложение с пружинной загрузкой с заданием создавать запрос HTTP GET каждую 1 минуту для указанного, но не относящегося к делу адреса, адрес должен быть доступен. Ответ должен быть 302 НАЙДЕН. Каждый раз, когда делается HTTP-запрос, в журналах приложения появляется сообщение.
APPLICATION B - прокси-приложение, которое должно проксировать контейнер docker с приложением A. Каждый запрос заносится в журнал.
Убедитесь, что ваш прокси-сервер конфигурации docker настроен на прослушивание http://localhost: 8080 - , вы можете проверить, как сделайте это здесь
Откройте терминал и выполните эту команду:
docker run -p 8080:8080 -ti registry.gitlab.com/dyrekcja117/proxyexample:application-b-proxy
Откройте другой терминал и выполните эту команду:
docker run --network="host" registry.gitlab.com/dyrekcja117/proxyexample:application-a
Go в оболочку с контейнером приложения A на 3-м терминале:
docker exec -ti <name of docker container> sh
и попытайтесь свернуться на любой адрес, который вы хотите.
И проблема, с которой я сталкиваюсь, заключается в том, что когда я делаю curl изнутри контейнера с приложением A, он перехватывается моим прокси и это можно увидеть в журналах. Но всякий раз, когда само приложение A делает один и тот же запрос, оно не перехватывается. То же самое происходит с Кубернетесом