Я новичок в Kubernetes, и это мой первый проект, использующий его.
В основном я пытаюсь сделать это. У меня есть приложение Django и приложение реакции. Я хочу обслужить их вместе, используя один вход - nginx, используя собственную входную библиотеку nginx kubernetes (kubernetes / ingress- nginx). Приложение React подается в root, а Django подается в "/ api "root. Я определил FORCE_SCRIPT_NAME в настройках Django.
Также для stati c файлов я создал отдельную заявку на постоянный том и смонтировал ее в файле развертывания Django. Но когда я попадаю на страницу администрирования Django, файлы stati c не обслуживаются. А также файлы мультимедиа подаются по пути api / api / media ..., в котором есть дополнительный api. Как правильно подавать файлы stati c в Кубернетес? Я не хочу использовать онлайн-статус c root, как S3. Вот мой Django развертывание yaml.
apiVersion: apps/v1
kind: Deployment
metadata:
name: django
labels:
deployment: django
spec:
replicas: 1
selector:
matchLabels:
pod: django
template:
metadata:
labels:
pod: django
spec:
volumes:
- name: django-configmap-volume
configMap:
name: django-configmap
- name: static-volume
persistentVolumeClaim:
claimName: static-volume
- name: media-volume
persistentVolumeClaim:
claimName: media-volume
containers:
- name: django
image: my_image:v1.0
ports:
- containerPort: 8182
envFrom:
- configMapRef:
name: django-configmap
env:
- name: DB_HOST
value: postgres-service
- name: DB_NAME
value: kubernetes_django
- name: DB_USER
valueFrom:
secretKeyRef:
name: postgres-credentials
key: user
- name: DB_PASS
valueFrom:
secretKeyRef:
name: postgres-credentials
key: password
- name: DB_PORT
value: "5432"
volumeMounts:
- name: django-configmap-volume
mountPath: /etc/config
- name: static-volume
mountPath: /app/static
- name: media-volume
mountPath: /app/media
Django settings.py
...
FORCE_SCRIPT_NAME = '/api/'
STATIC_ROOT = '/app/static'
MEDIA_ROOT = '/app/media'
STATIC_URL = '/api/static/'
MEDIA_URL = '/api/media/'
...
Я определил фрагмент конфигурации во входе для stati c файлов и носителей расположение файлов, но я думаю, что это не работает. ingress.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: hoosthere-ingress
namespace: default
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /$1
nginx.ingress.kubernetes.io/proxy-connect-timeout: '30'
nginx.ingress.kubernetes.io/proxy-send-timeout: '500'
nginx.ingress.kubernetes.io/configuration-snippet: |
location ~* "^/api/static?(.*)" {
alias /app/static/;
}
location ~* "^/api/media?(.*)" {
alias /app/media/;
}
spec:
rules:
- http:
paths:
- path: /?(.*)
backend:
serviceName: react-service
servicePort: 1220
- path: /api/?(.*)
backend:
serviceName: django-service
servicePort: 8000
Если вы можете привести хороший пример этого, я был бы признателен за любую помощь.