Попытка передать трафик через контейнер NGINX на Django с помощью Kubernetes
Я застрял на чем-то, что мне кажется довольно простым для тех, кто может знать kubernetes. У меня есть приложение django, которое я пытаюсь развернуть в продакшн. Частью этого будет добавление SSL-сертификата, поэтому я полагаю, что для этого мне нужно что-то вроде контейнера nginx для публичного трафика, который будет первым.
У меня это работает в docker-compose, но наша производственная среда - это кластер kubernetes. Я смог получить файл kubernetes для запуска контейнеров, но трафик идет прямо на приложение django. Как мне настроить это так, чтобы трафик проходил через nginx?
apiVersion: apps/v1
kind: Deployment
metadata:
name: networkapp-deploy
labels:
name: networkapp
spec:
replicas: 1
selector:
matchLabels:
name: networkapp_pod
template:
metadata:
labels:
name: networkapp_pod
spec:
containers:
- name: nginx
image: nginx:alpine
ports:
- containerPort: 8000
- name: redis
image: redis:alpine
ports:
- containerPort: 6379
- name: webapp
image: localhost:5000/newweb/webapp:latest
ports:
- containerPort: 8001
---
kind: Service
apiVersion: v1
metadata:
name: networkapp-svc
spec:
selector:
name: networkapp_pod
ports:
- protocol: TCP
port: 80
targetPort: 8000
type: LoadBalancer
Вот файл docker compose, который, похоже, работает, если я запускаю его локально, мне просто нужно, чтобы это работало в kubernetes
version: "3.6"
services:
nginx:
image: nginx:alpine
container_name: nginxcontainer
ports:
- "8000:8000"
volumes:
- ./src:/src
- ./config/nginx:/etc/nginx/conf.d
depends_on:
- web
networks:
- djangonetwork
web:
build:
context: .
dockerfile: compose/django/Dockerfile
container_name: djangocontainer
#depends_on:
# - db
volumes:
- ./src:/src
expose:
- "8000"
links:
- redis
env_file:
- ./.envs/.django
networks:
- djangonetwork
redis:
image: redis:alpine
container_name: rediscontainer
ports:
- "6379:6379"
networks:
- djangonetwork
networks:
djangonetwork:
driver: bridge
По крайней мере, у меня складывается впечатление, что nginx ничего не делает в файле kubernetes. Когда я смотрю на журналы, я вижу изменения только на контейнере django web app, пока я просматриваю сайт
Журналы nginx выглядят как
2022/06/03 23:15:17 [notice] 1#1: start worker process 49
2022/06/03 23:15:17 [notice] 1#1: start worker process 50
2022/06/03 23:15:17 [notice] 1#1: start worker process 51
2022/06/03 23:15:17 [notice] 1#1: start worker process 52
2022/06/03 23:15:17 [notice] 1#1: start worker process 53
2022/06/03 23:15:17 [notice] 1#1: start worker process 54
2022/06/03 23:15:17 [notice] 1#1: start worker process 55
И я попадаю на сайт, используя только http://localhost на порту 80