參考鏈接: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全弄懂了再去干這個事才放心,但是有時候工作不等人,甲方不等人,所以
遇到問題一定要動起來,要去嘗試。核心的去認真查,其它涉及到的可以先暫時只是了解,問題解決之后再去學習也不晚!共勉!!!