我们有一个安装了nginx Ingress和Minio的k8s集群。在Minio中,我有一个名为tester
的存储桶,其中包含一个hello world index.html
文件。我使用Minio MC客户端将tester
存储桶设置为公共。现在,当我访问(更改后的)迷你URL时,可以看到hello world文件,如下所示:https://minio.example.com/tester/index.html
。
我的目标是建立一个Ingress资源来访问公共存储桶。这是我尝试执行的清单,但是我只收到404错误。 。 。
ingress.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: frontend-site
namespace: "default"
labels:
type: "frontend"
awesomeness: "super-mega"
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: app.example.com
http:
paths:
- path: /tester/
backend:
serviceName: minio-svc
servicePort: 9000
- path: /tester/*
backend:
serviceName: minio-svc
servicePort: 9000
tls:
- hosts:
- app.example.com
secretName: ssl-certs
我也试图用索引文件来设置路径,就像这样:
path: /tester/index.html
path: /tester/index.html/*
我确实有另一个Ingress,该Ingress通常指向Minio,它在minio.example.com
之类的网址上可以正常工作。微型计算机在端口9000上有一个名为minio-svc
的服务。
不幸的是,到目前为止,我只从Ingress收到404。是否有人将带有Ingress的静态站点部署到公共Minio存储桶?我在做什么错了??
更新
所以我有点地方。我添加了注释,并将路径设置为简单的/
和/*
。
这是我的新配置:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: frontend-site
namespace: "default"
labels:
type: "frontend"
awesomeness: "super-mega"
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /tester/index.html
spec:
rules:
- host: app.example.com
http:
paths:
- path: /
backend:
serviceName: minio-svc
servicePort: 9000
- path: /*
backend:
serviceName: minio-svc
servicePort: 9000
tls:
- hosts:
- app.example.com
secretName: ssl-certs
现在,即使存储桶是公共的,我仍然可以从Minio拒绝访问,我仍然可以从https://minio.example.com/tester/index.html
访问!!
答案 0 :(得分:0)
发现您不能轻易完成我要问的事情。通过简单地将存储桶中的目录直接安装到Nginx,就可以解决所有问题。瞧!