参考链接:https://blog.csdn.net/qq_22824481/article/details/133761302
https://blog.csdn.net/mengfanshaoxia/article/details/127155020
https://blog.csdn.net/weixin_39961559/article/details/87935873
概要
业务区k8s在漏扫过程中被扫出几个Nginx漏洞,那么,首先想到的就是nginx-ingress-controller,第一个想法就是升级这个组件,但是考虑到我们的k8s版本比较低,直接升级nginx-ingress-controller可能会导致后续的兼容性问题,因为没有专业的k8s运维人员,我们这都是半吊子全栈,所以不敢轻易去尝试。那么就选择第二种比较稳妥的办法,升级nginx-ingress-controller组件里边的Nginx版本。
整体流程
1、获取ingress-nginx的pod
kubectl get pods --all-namespaces -l app.kubernetes.io/name=ingress-nginx
2、进入ingress-nginx容器内部:
kubectl exec -it -n namespace pod-name – bash
3、进入ingress-nginx容器内部后:
bash-5.0$ more /etc/issue
Welcome to Alpine Linux 3.11
bash-5.0$ nginx -v
nginx version: nginx/1.17.8
4、将我们自己使用的nginx-ingress-controller镜像下载到本地。因为我们使用的是阿里仓库的开源镜像,直接docker pull命令下载
5、在步骤3中我们明确了镜像容器的Linux版本和Nginx版本,那么需要根据Linux版本查找我们要升级的Linux对应的版本。
6、执行docker run -it -u root nginx-ingress-controller镜像 /bin/bash
然后分别执行两个命令:
echo http://mirrors.aliyun.com/alpine/v3.19/main/ > /etc/apk/repositories
apk add --upgrade --allow-untrusted nginx
成功之后我们执行nginx -v查看版本,结果还是1.17.8,这时需要我们将这个做过Nginx升级的容器重新生成一个新的镜像
7、docker ps查看现有的nginx-ingress-controller容器信息
docker commit -m=“nginx-ingerss-controller自定义镜像基于apline3.11、nginx1.24.0” -a=“作者名字” 容器id test/nginx-ingress-controller:nginx1.24.0-Release
8、运行新的镜像,检查Nginx版本
docker run -it -u root test/nginx-ingress-controller:nginx1.24.0-Release /bin/bash
9、建立自己的阿里私人镜像仓库,将新制作的镜像提交上去供业务区下载使用
参考:阿里私人镜像仓库的使用
小结
我有个不好的习惯,比如说这个升级,我就想着把k8s全弄懂了再去干这个事才放心,但是有时候工作不等人,甲方不等人,所以
遇到问题一定要动起来,要去尝试。核心的去认真查,其它涉及到的可以先暂时只是了解,问题解决之后再去学习也不晚!共勉!!!