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 容器,直接尝试安装,最后的结果如下
当然不是一个这样的仓库就能够允许在容器里装什么软件都可以的,这里跟容器内本身的基础镜像的Linux版本,内核版本,以及基础镜像里已经有的软件有关系。
重新编译镜像可以通过下面的命令来实现。
DOCKER_BUILDKIT=1 docker build -t runzhliu/yum-with-browser . --progress=plain