k8s,Ingress,Minio和静态站点

时间:2019-02-06 16:02:55

标签: kubernetes kubernetes-ingress static-site nginx-ingress minio

我们有一个安装了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访问!!

1 个答案:

答案 0 :(得分:0)

发现您不能轻易完成我要问的事情。通过简单地将存储桶中的目录直接安装到Nginx,就可以解决所有问题。瞧!