gpt4 book ai didi

django - 如何在 Kubernetes 中运行的 Django 应用程序中提供静态文件

转载 作者:行者123 更新时间:2023-12-02 11:47:06 29 4
gpt4 key购买 nike

我有一个用 Django 构建的小应用程序。它用作前端,并安装在其中一个 K8S 集群中。

我正在使用 helm 部署图表,但未能正确提供 Django 的静态文件。

我在多个位置进行了搜索,但最终无法找到可以解决我的问题的位置。

这是我的入口文件:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: orion-toolbelt
namespace: {{ .Values.global.namespace }}
annotations:
# ingress.kubernetes.io/secure-backends: "false"
# nginx.ingress.kubernetes.io/secure-backends: "false"
ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/rewrite-target: /
ingress.kubernetes.io/force-ssl-redirect: "false"
nginx.ingress.kubernetes.io/force-ssl-redirect: "false"
ingress.kubernetes.io/ssl-redirect: "false"
nginx.ingress.kubernetes.io/ssl-redirect: "false"
ingress.kubernetes.io/ingress.allow-http: "true"
nginx.ingress.kubernetes.io/ingress.allow-http: "true"
nginx.ingress.kubernetes.io/proxy-body-size: 500m
spec:
rules:
- http:
paths:
- path: /orion-toolbelt
backend:
serviceName: orion-toolbelt
servicePort: {{ .Values.service.port }}


django 中的静态文件位置保持默认,例如

STATIC_URL = "/static"

用户最终无法以这种方式访问​​静态文件..

接下来我该做什么?

附上错误: HTML-static_files-error-- 编辑:2019 年 5 月 8 日 --pod 的 deployment.yaml 如下所示:

apiVersion: apps/v1
kind: StatefulSet
metadata:
namespace: {{ .Values.global.namespace }}
name: orion-toolbelt
labels:
app: orion-toolbelt
spec:
replicas: 1
selector:
matchLabels:
app: orion-toolbelt
template:
metadata:
labels:
app: orion-toolbelt
spec:
containers:
- name: orion-toolbelt
image: {{ .Values.global.repository.imagerepo }}/orion-toolbelt:10.4-SNAPSHOT-15
ports:
- containerPort: {{ .Values.service.port }}
env:
- name: "USERNAME"
valueFrom:
secretKeyRef:
key: username
name: {{ .Values.global.secretname }}
- name: "PASSWORD"
valueFrom:
secretKeyRef:
key: password
name: {{ .Values.global.secretname }}
- name: "MASTER_IP"
valueFrom:
secretKeyRef:
key: master_ip
name: {{ .Values.global.secretname }}
imagePullPolicy: {{ .Values.global.pullPolicy }}
imagePullSecrets:
- name: {{ .Values.global.secretname }}

EDIT2:20/8/19 - 添加 service.yam

apiVersion: v1
kind: Service
metadata:
namespace: {{ .Values.global.namespace }}
name: orion-toolbelt
spec:
selector:
app: orion-toolbelt
ports:
- protocol: TCP
port: {{ .Values.service.port }}
targetPort: {{ .Values.service.port }}

最佳答案

您应该只在容器中包含/static 目录,并在应用程序中调整它的路径。否则,如果它必须是/static,或者您不想在容器中包含静态文件,或者您希望其他容器访问该卷,您应该考虑将 Kubernetes 卷安装到您的 Deployment/Statefulset。

@编辑

您可以通过这种方式测试此路径是否存在于您的 kubernetes pod 中:

kubectl get po <- 此命令将为您提供 pod 的名称

kubectl exec -it <name of pod> sh <-此命令将让您在容器 shell 中执行命令。

如果您的路径存在,您可以在那里进行测试。如果是,那是你的应用程序的错,如果不是,你在 Docker 中添加错误。

您还可以将路径添加到您的 Kubernetes pod,而无需在 docker 容器。 Check this link for details

关于django - 如何在 Kubernetes 中运行的 Django 应用程序中提供静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57509501/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com