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

Portainer 替代?

  •  
  •   kid1412621 · 232 天前 · 1880 次点击
    这是一个创建于 232 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在用的 portainer 管理 homelab 部署的一批服务,但 portainer 不支持 Mobile Web Page ,记得专门有个 issue 说暂时不支持。

    此外,*arr 推荐不要用 portainer 并罗列出其问题:
    https://wiki.servarr.com/sonarr/installation/docker

    - Incorrect order of source and target of mounts
    - Inconsistent case-sensitivity
    - No automatically created custom networks for inter-container communication
    - Inconsistent compose implementations on different architectures
    - Pulls every tag on update when you don't set a specific tag
    - Capabilities are hidden and some don't work at all on ARM platforms

    其它的替代品用过 yacht (卡得要死),lazydocker (停止维护)。
    还有没有支持 docker compose 部署的 admin UI 啊?
    15 条回复    2023-09-11 11:41:39 +08:00
    locoz
        1
    locoz  
       232 天前
    我以前也是用 Unraid 自己的 UI+Portainer ,但后面直接改用 K8S 了,算是个上位替代吧
    wunonglin
        2
    wunonglin  
       232 天前
    还不如用 k3s+lens
    billzhuang
        3
    billzhuang  
       232 天前
    k3s + cdk8s+
    Jirajine
        4
    Jirajine  
       232 天前 via Android
    > Portainer should only for viewing docker container logs / container status.
    非常赞同这个 wiki 的建议。
    另一个替代品是 podman-desktop ,没开玩笑,比 docker 更开放,支持各种后端。
    ptsa
        5
    ptsa  
       232 天前
    @Jirajine #4 podman 有类似 Portainer 这样的 ui 么
    kid1412621
        6
    kid1412621  
    OP
       232 天前
    @Jirajine #4 今天还遇到了 podman 不支持 buildkit 的问题
    kid1412621
        7
    kid1412621  
    OP
       232 天前
    @locoz #1 k8s 用什么 ui 呢
    locoz
        8
    locoz  
       231 天前
    @kid1412621 #6 我是直接用 Flux 做添加应用部署、调整部署配置这种操作,纯文件形式,依靠 Git 管理,不用 UI 。用 UI 的时候主要是看当前日志、进入容器操作、临时停掉一些容器之类的,我个人是 Lens 用的比较多,有时候没电脑或者不能直连服务器就用 KubeSphere 。
    kid1412621
        9
    kid1412621  
    OP
       230 天前
    @locoz #8 这个配置是纯的 k8s ymal 吗
    locoz
        10
    locoz  
       230 天前   ❤️ 1
    @kid1412621 #8 算是,但严格来说都是写 helm 的 values ,原生的 k8s 配置我只在临时测试的时候用用。

    有些没有官方 helm 包的家用场景应用(比如常见的影视类的 sonarr 、radarr 之类的)都是用的 https://bjw-s.github.io/helm-charts/docs/ 做的,大幅简化了配置复杂度,基本写完一次剩下的就是复制粘贴改个镜像地址、镜像版本、容器内的端口号、子域名的名称,需要的情况下再改个 pvc (给容器挂载的存储空间)的名称和申请空间量),比 UI 配的还方便些。

    镜像更新会有 https://github.com/apps/renovate 自动检测并创建"Pull requests",所以版本更新只需要点一下"Rebase and merge",也是比较方便。
    kid1412621
        11
    kid1412621  
    OP
       230 天前
    @locoz #10 感谢! 空了我也折腾下。随便问下,内外网域名你是怎么管理的?
    locoz
        12
    locoz  
       229 天前   ❤️ 1
    @kid1412621 #10 我目前是四种方案混合使用:
    1 、内网环境,内网 DNS 做个泛域名解析指向 K8S 中 Traefik ( Ingress )的 Service IP ( LoadBalancer 模式),LoadBalancer 是基于 kube-vip 做的,集群中的节点离线也会自动切到其他节点,IP 不变。
    2 、公网 VPN 连回家变成内网环境,与 1 相同。
    3 、公网直连,Ingress 给部分服务(比如 Emby )配了直连域名(非直连域名配了 Traefik 的中间件,禁止非内网 IP 访问),直连域名通过 DDNS 指向公网 IP ,访问直连域名+映射后的端口就是直连。
    4 、公网免端口、隐藏服务端 IP 连接,用腾讯云 CDN ,源地址指向 DDNS 域名+映射后的端口,然后就是跟常规的公网服务一样了。

    通常来说,我自己的设备是用 1 和 2 ,部分不方便连接或没法连接 VPN 的设备用 4 ,全都是统一化的体验。需要给别人用的那些服务就是用 3 和 4 ,流量较大的优先用 3 ,量少、短期使用的用 4 。

    域名解析方面有个注意点,我无论是公网还是内网都是做的泛解析,原因是 HTTPS 证书的签发记录可以被查到,而有些服务我不想被人直接知道,但又需要保持公网和内网一致的体验,所以不能子域名一个一个那么设。而且泛解析处理起来也更省事些,cert-manager 可以自动处理泛域名证书的签发和续签,所有服务只需要签一次,加上 kubed 可以同步 K8S 中的 Secret 到多个命名空间,可以轻松解决在分多命名空间管理、不给 Traefik 设置默认证书的情况下,多 Ingress 的 HTTPS 访问问题。

    不给 Traefik 设置默认证书的原因是,如果你设置了默认证书,那么只要访问到你的 IP+HTTPS 端口就能根据证书直接得到域名,进而可能关联到你的 DDNS 域名,这也是不太安全的。
    locoz
        13
    locoz  
       229 天前
    @kid1412621 #10 要折腾可以参考 https://github.com/onedr0p/flux-cluster-template 这个项目,虽然很多东西比较多余、非最优解或比较复杂,但核心的那些工具和设计方式很好,可以基于这个模板慢慢改成自己的处理方式。
    kid1412621
        14
    kid1412621  
    OP
       229 天前
    @locoz #12 有点困惑我的就是 有没有内外网域名一致,这样就不用每次切换了
    locoz
        15
    locoz  
       229 天前 via Android
    @kid1412621 #13 方案 1 、2 、4 就是完全一致的地址(同样的域名+同样的默认 443 端口)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   914 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 19:53 · PVG 03:53 · LAX 12:53 · JFK 15:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.