V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dunhanson
V2EX  ›  程序员

minio 域名配置问题

  •  
  •   dunhanson · 2023-05-20 00:40:59 +08:00 · 3495 次点击
    这是一个创建于 546 天前的主题,其中的信息可能已经有所发展或是发生改变。

    安装的参考资料

    charts/bitnami/minio at main · bitnami/charts · GitHub

    1 、配置 1

    可以正常通过域名访问,但是这种分享的链接是显示 localhost

    helm install bitnami-minio \
    --set auth.rootUser=minio \
    --set auth.rootPassword=****** \
    --set persistence.existingClaim=minio \
    --set ingress.enabled=true \
    --set ingress.hostname=minio.xxxxxx.com \
    oci://registry-1.docker.io/bitnamicharts/minio
    

    2 、配置 2

    网上查找了要配置 server url ,这种方式登录会提示异常:S3 API Requests must be made to API port.

    helm install bitnami-minio \
    --set auth.rootUser=minio \
    --set auth.rootPassword=****** \
    --set persistence.existingClaim=minio \
    --set ingress.enabled=true \
    --set ingress.hostname=minio.biaoxunkuaiche.com \
    --set extraEnvVars[0].name=MINIO_SERVER_URL \
    --set extraEnvVars[0].value=http://minio.xxxxxx.com \
    --set extraEnvVars[1].name=MINIO_BROWSER_REDIRECT_URL \
    --set extraEnvVars[1].value=http://minio.xxxxxx.com \
    oci://registry-1.docker.io/bitnamicharts/minio
    

    第 1 条附言  ·  2023-05-20 16:12:31 +08:00

    20230520

    ingress配置

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: minio
    spec:
      rules:
      - host: minio.biaoxunkuaiche.com
        http:
          paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: minio
                port:
                  number: 9090
          - path: /api
            pathType: Prefix
            backend:
              service:
                name: minio
                port:
                  number: 9000
    
    第 2 条附言  ·  2023-05-20 16:17:19 +08:00

    service

    apiVersion: v1
    kind: Service
    metadata:
      name: minio
      namespace: default
    spec:
      type: NodePort
      selector:
        app: minio
      ports:
        - name: minio-api
          protocol: TCP
          port: 9000
          targetPort: 9000
        - name: minio-console
          protocol: TCP
          port: 9090
          targetPort: 9090
    
    第 3 条附言  ·  2023-05-20 16:18:02 +08:00

    Deployment

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: minio
      namespace: default
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: minio
      template:
        metadata:
          labels:
            app: minio
        spec:
          containers:
          - image: quay.io/minio/minio:RELEASE.2023-05-18T00-05-36Z
            name: minio
            securityContext:
              privileged: true
            env:
            - name: TZ
              value: Asia/Shanghai
            - name: MINIO_ROOT_USER
              value: minio
            - name: MINIO_ROOT_PASSWORD
              value: ******
            - name: MINIO_SERVER_URL
              value: http://minio.******.com
            ports:
            - containerPort: 9000
              protocol: TCP
            - containerPort: 9090
              protocol: TCP
            volumeMounts:
            - mountPath: /data
              name: minio
            command:
            - /bin/bash
            - -c
            args: 
            - minio server /data --console-address :9090
          volumes:
          - name: minio
            persistentVolumeClaim:
              claimName: minio
    
    24 条回复    2023-05-21 00:04:37 +08:00
    OutOfMemoryError
        1
    OutOfMemoryError  
       2023-05-20 01:10:31 +08:00
    前两天正好部署了 去拉了下配置给你
    services:
    minio:
    image: minio/minio:RELEASE.2023-05-04T21-44-30Z.fips
    ports:
    - "9000:9000"
    - "9090:9090"
    volumes:
    - "./data:/data"
    environment:
    MINIO_ROOT_USER: "root"
    MINIO_ROOT_PASSWORD: "xxxxxxxxxxxxxxxxxx"
    MINIO_SERVER_URL: "https://minio.xxxxx.com"
    MINIO_DOMAIN: "minio.xxxxx.com"
    command: server /data --console-address ":9090"
    OutOfMemoryError
        2
    OutOfMemoryError  
       2023-05-20 01:12:35 +08:00
    api endpoint 用 9000 的端口,9090 是管理端,我们用 nginx 做 proxy 的

    兼容 S3 API 的 minio 的 nginx 反代配置.conf ↓
    https://gist.github.com/Zerek-Cheng/8a2f8b0795ea8b19738adf6d36f61134
    Daath
        3
    Daath  
       2023-05-20 03:19:18 +08:00
    大概看了一下 bitnami/minio 的 helm ,应该设置一下如下配置
    * 假设你想暴露的域名访问是: https://minio.xxx.com
    * API: https://minio.xxx.com/
    * console: https://minio.xxx.com/webui/

    ```yaml
    # values

    extraEnvVars:
    - MINIO_BROWSER_REDIRECT_URL: "https://minio.xxx.com/webui/"


    ingress:
    enabled: true
    ...
    path: /webui(/|$)(.*)

    annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$2

    hostname: minio.xxx.com

    ```

    然后 helm upgrade 一下应该可以了
    dunhanson
        4
    dunhanson  
    OP
       2023-05-20 11:38:16 +08:00
    OutOfMemoryError
        5
    OutOfMemoryError  
       2023-05-20 13:31:01 +08:00
    @Daath 话说为啥 bitnami 那么多镜像,是修改版的吗
    dunhanson
        6
    dunhanson  
    OP
       2023-05-20 14:04:46 +08:00
    @Daath 不行,问题更多了,页面都打不开了
    Daath
        7
    Daath  
       2023-05-20 14:17:22 +08:00
    @OutOfMemoryError #5 个人觉得是他们的 bitnami 根据自己的命名规则这样类似重新设置配置项,方便统一对各种应用服务配置,模板等方面的管理
    Daath
        8
    Daath  
       2023-05-20 14:23:25 +08:00
    @dunhanson #6 我自己是用官方的 minio/minio ,大概也是类似这么配置就可以了,我用的 minio 版本是 2023-02-10 这样的版本,你可以尝试看下 github 上 minio 的 minio 和 console 项目的 issue ,我遇到类似问题找的关键词应该是 subpath
    Daath
        9
    Daath  
       2023-05-20 14:25:49 +08:00
    @dunhanson #6 api 的 path 我设置是"/",我只针对 console 的页面做了修改相应的 path 修改成类似"/webui(/|$)(.*)"
    Daath
        10
    Daath  
       2023-05-20 14:28:19 +08:00
    @dunhanson #6 还有上述的 yaml 配置内容,是有缩进显示问题
    dunhanson
        11
    dunhanson  
    OP
       2023-05-20 15:55:23 +08:00
    @Daath 我再看看
    dunhanson
        12
    dunhanson  
    OP
       2023-05-20 16:14:30 +08:00
    @Daath 我大概明白了是因为访问 API 接口但是用了 UI 界面的端口的问题,我现在更新 ingress ,最上面有贴出来,现在提示 403 了
    Daath
        13
    Daath  
       2023-05-20 16:30:53 +08:00
    @dunhanson #12 ingress 你最好改成这样子,因为 minio client 的 alias 配置的 url 也只允许写域名:端口,不支持带 path 形式的
    ```yaml

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
    name: minio
    spec:
    rules:
    - host: minio.biaoxunkuaiche.com
    http:
    paths:
    # 这个就是 minio api 的入口
    - path: /
    pathType: Prefix
    backend:
    service:
    name: minio
    port:
    number: 9000
    # 这里就直接设置成 console 的入口,换成别的名字 /api --> /webui, 或者其他
    - path: /webui
    pathType: Prefix
    backend:
    service:
    name: minio
    port:
    number: 9090

    ```
    Daath
        14
    Daath  
       2023-05-20 16:35:39 +08:00
    @dunhanson #12 然后 deployment 里面,少了环境变量下面这个 MINIO_BROWSER_REDIRECT_URL 参数,需要设置你 console 的外部访问地址
    Daath
        15
    Daath  
       2023-05-20 16:37:56 +08:00
    @dunhanson 不过你都是用 helm 来部署了,所以你得把这些修改换到 values 的相应配置里面。
    dunhanson
        16
    dunhanson  
    OP
       2023-05-20 16:38:20 +08:00
    @Daath 这种配置方式 web 页面打不开
    dunhanson
        17
    dunhanson  
    OP
       2023-05-20 16:39:07 +08:00
    @Daath 我已经改成自己手写 yml 文件部署了
    Daath
        18
    Daath  
       2023-05-20 16:43:16 +08:00
    @dunhanson #17 阿这,ingress 里面其实还有一个问题,可能需要在 ingress 的 annotations 加入这个注释 nginx.ingress.kubernetes.io/rewrite-target 来重写访问到内部 svc 的 url ,就是页面-->svc ,https://minio.xxx.com/webui/xxx --> http://minio:9090/xxx
    Daath
        19
    Daath  
       2023-05-20 16:44:06 +08:00
    @dunhanson #17 因为我是 helm 部署的,我是有两个 ingress 文件,一个是给 api 用的,一个是给 console 用的。
    dunhanson
        20
    dunhanson  
    OP
       2023-05-20 16:48:33 +08:00
    @Daath 解决了,我也添加了两个 ingress ,我用了两个域名就可以了
    dunhanson
        21
    dunhanson  
    OP
       2023-05-20 16:48:53 +08:00
    @Daath 谢谢了
    Daath
        22
    Daath  
       2023-05-20 16:51:25 +08:00
    @dunhanson #21 嗯,因为我也遇到过类似的,我用一个域名是可以这么做的,多个域名肯定少了转换 path 事情,就更方便
    ysicing
        23
    ysicing  
       2023-05-20 17:59:18 +08:00
    这是我的 minio 部署的😂, 其实控制台域名可以不要的 helm upgrade -i minio bitnami/minio -f ./minio.yaml

    ```yaml
    global:
    storageClass: tkecfs
    auth:
    rootUser:<uuuu>
    rootPassword: <pppp>
    defaultBuckets: "cloud"
    ingress:
    enabled: true
    ingressClassName: "nginx"
    hostname: minio 控制台域名
    apiIngress:
    enabled: true
    ingressClassName: "nginx"
    hostname: cos 存储域名
    metrics:
    serviceMonitor:
    enabled: true
    ```
    czyt
        24
    czyt  
       2023-05-21 00:04:37 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2817 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 02:28 · PVG 10:28 · LAX 18:28 · JFK 21:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.