Dok Docs
Github Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

yum-with-browser

概述

yum-with-browser 目的是解决在k8s集群里一些yum源的问题。

为什么会有这个问题呢,因为通常来说k8s集群都只有集群网络,并不能直接通Internet,甚至是公司的LAN都不一定能通。所以有些同学在使用k8s部署应用的时候,尤其是把k8s当成虚拟机来用的同学,会觉得装软件很麻烦,因为通常的流程可能是只能在Dockerfile里就把需要安装的软件安装好,比如vim, curl之类的。

这个项目没有什么代码,仅仅是通过部署一个k8s工作负载,来部署一个私有化的yum源,并且提供文件浏览器的管理,这真的很重要,相比于常见的用Nginx 或者httpd来创建一个私有化的源,有文件管理器的web浏览器实在是太好了(当然前提是至少能够通过Nodeport把服务暴露出来)。

部署

部署很简单,给出了一个用临时存储的 yum-with-browser.yaml,所有的逻辑都在Dockerfile, 启动之后,filebrowser 的默认 NodePort 端口是32600,如果 yum-with-browser 是在集群中长期使用的源,那么建议还是用一个持久化存储的方案,将 rpm 包放起来。

kubectl apply -f yum-with-browser.yaml

下面是使用的方法,yum 源是通过 Service 的8080端口暴露的。

# 容器内访问只需要svc名,默认端口8080即可
cat >> /etc/yum.repos.d/sre.repo <<EOF
[sre]
name=sre yum repos
baseurl=http://yum-with-browser:8080
enable=1
gpgcheck=0
EOF
# 上传一个bash的rpm包
yum --disableexcludes=sre install bash -y

之后随便创建一个 centos 的 Pod,可以直接进入 yum-with-browser 里的 yum 容器,直接尝试安装,最后的结果如下

img_2.png

Notes

当然不是一个这样的仓库就能够允许在容器里装什么软件都可以的,这里跟容器内本身的基础镜像的Linux版本,内核版本,以及基础镜像里已经有的软件有关系。

重新编译镜像可以通过下面的命令来实现。

DOCKER_BUILDKIT=1 docker build -t runzhliu/yum-with-browser . --progress=plain

img.png