Как обслуживать статические файлы из кластера EKS для Django?

Я новичок в Kubernetes. Прочитав некоторые блоги и документацию, я успешно создал кластер EKS. Я использую ALB (балансировка нагрузки 7-го уровня) для моего приложения Django. Для управления маршрутами/путями я использую контроллер ALB ingress. Но я не могу обслужить статическое содержимое для администратора Django. Я знаю, что мне нужен веб-сервер (Nginx) для обслуживания моих статических файлов. Я не уверен, как настроить его для обслуживания статических файлов. примечание: (Я не хочу использовать whitenoise)

Я решил проблему, создав pod с Django BE и Nginx reverse-proxy, разделяя объем статических файлов:

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
  labels:
    app: myapp
spec:
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      volumes:
        - name: staticfiles
          emptyDir: {}
      containers:
        - name: nginx
          image: ...
          ports:
            - containerPort: 80
          volumeMounts:
            - name: staticfiles
              mountPath: /data

        - name: django
          image: ...
          ports:
            - containerPort: 8000
          volumeMounts:
            - name: staticfiles
              mountPath: /data
          lifecycle:
            postStart:
              exec:
                command: ["/bin/sh", "-c", "cp -r /path/to/staticfiles /data/"]

Затем, в Service (и Ingress), укажите порт Nginx 80.

Я решил проблему. Я удалил команду ["/bin/sh", "-c", "cp -r /path/to/staticfiles /data/"]

Я монтировал по неправильному пути. Поэтому новый файл развертывания выглядит так:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: server-dashboard-backend
  labels:
    app: backend
spec:
  replicas: 2
  selector:
    matchLabels:
      app: backend
  template:
    metadata:
      labels:
        app: backend
    spec:
      volumes:
        - name: staticfiles
          emptyDir: {}

      containers:
       - name: server-dashboard 
         image: *.dkr.ecr.ap-southeast-1.amazonaws.com/*:4
         volumeMounts:
            - name: staticfiles
              mountPath: /usr/src/code/static
          

       - name: nginx
         image: nginx:stable
         ports:
            - containerPort: 80
         volumeMounts:
            - name: staticfiles
              mountPath: /usr/share/nginx/html/static/
Вернуться на верх