nginx-ingress升级失败问题排查

背景

rancher自带的nginx-ingress-controller版本是0.25.1,不支持session-cookie-samesite选项,需要升级nginx-ingress-controller至0.29版本。

过程

升级镜像版本

在Rancher UI界面,对nginx-ingress-controller进行升级操作,

镜像选择quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.29.0

如果是国内用户,下载不到,可以选择用国内源的镜像quay-mirror.qiniu.com/nginx-ingress-controller:0.29.0

报错

升级之后,nginx-ingress-controller组件一直起不来,查看日志信息,报以下错误:

1
unexpected error storing fake SSL Cert: could not create PEM certificate file /etc/ingress-controller/ssl/default-fake-certificate.pem: open /etc/ingress-controller/ssl/default-fake-certificate.pem: permission denied

解决

从日志中可以看到是权限问题,查看官方说明,0.29版本访问用户为www-data -> 101,而0.25版本默认为33,所以要对runAsUser进行修改

编辑yaml文件,修改runAsUser的值,33改为101即可

1
2
3
4
5
6
7
securityContext:
capabilities:
add:
- NET_BIND_SERVICE
drop:
- ALL
runAsUser: 101 ## 只修改此选项

修改完后保存自动重新部署,可以看到已经能够正常启动了