У меня есть сайт, на котором я недавно написал развертывание для использования kubernetes. При развертывании на моей локальной машине с minikube и просмотре с minikube service srv-website
все работает нормально. Однако после развертывания на GKE и экспонирования через Ingress изображения не загружаются. При наведении указателя мыши на путь к изображению в Insepct Element появляется сообщение «Не удалось загрузить изображение».
Я пытался изменить пути к изображениям, но это не устранило проблему.
<img src="./Images/A.png" class="img">
<img src="Images/A.png" class="img">
<img src="/usr/share/nginx/html/Images/A.png" class="img">
Первые два работают локально, а не третий с абсолютным контейнерным путем. Ни один из них не работает в GKE, хотя оба работают под одним и тем же образом.
Вот мое развертывание:
apiVersion: v1
kind: ConfigMap
metadata:
name: cfg-website
data:
custom.nginx.conf: |
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/html;
internal;
}
error_page 401 /401.html;
location = /401.html {
root /usr/share/nginx/html;
internal;
}
# gzip compression
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_min_length 256;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript image/svg+xml;
# gzip compression
}
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: dep-website
labels:
app: website
spec:
selector:
matchLabels:
app: website
template:
metadata:
labels:
app: website
spec:
volumes:
- name: nginx-conf
configMap:
name: cfg-website
containers:
- name: cnt-website
image: link/to/registry
volumeMounts:
- name: nginx-conf
mountPath: /etc/nginx/conf.d
readOnly: true
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: srv-website
labels:
app: website
spec:
type: NodePort
selector:
app: website
ports:
- port: 8080
targetPort: 80
Мой вход:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: website-ingress
annotations:
kubernetes.io/ingress.global-static-ip-name: website-ingress
spec:
rules:
- http:
paths:
- path: /
backend:
serviceName: srv-website
servicePort: 8080