Cert-manager和nginx ingress

前几天收到letsencrypt邮件,提醒我有个域名的tls cert要过期了,看起来是后来没renew,所以就要过期了。

今天要摆弄一下blog,所以想不得不要接触一下nginx ingress,打算设定好一个域名后,让cloudflare做CDN,是不是就可以摆脱联通的端口限制了?不然的话,blog发布出去还得加一个8443端口才能访问到。

看nginx ingress的时候,就看到现有的app,发现是在使用的,但tls cert竟然不自动renew了,于是看到了cert-manager,运行似乎正常,但两个多月前重启过,也不造当时怎么了,我的k8s一般没啥用,也没啥监控,想起来可能会升级一下,其余时间吃灰,也就是最近,在上面加了netboot、influxdb、mqtt等应用,现在连blog都挪过来了。

看了下,找不到certificate资源了,各种namespace中找了下都没有,也不造当时发生什么,按理说用cert-manager得出现一个cert资源对应tls cert。

先升级吧,从1.8直接安装了1.11,因为看着1.8-1.9, 1.9-1.10, 1.10-1.11都没有breaking change,升级也顺利,就是apply yaml。另外,看cert-manager版本可以通过cmctl命令行。

从nginx ingress文档上看到是可以配置ingress直接让cert-manager生成tls cert的,只需要加annotation,指定tls cert issuer,我加了

cert-manager.io/issuer: "letsencrypt-issuer"

更新了ingress后,看到有cert资源了,但没看到renew,从cmctl看了下状态,日志是找不到issuer,我只有一个cluster issuer,名字没写错,不造为啥。后来搜了下,这里的issuer和cluster issuer得写清楚,如果写的是issuer,那就只会去找issuer。cluster issuer按照名字理解,可以跨namespace用,但issuer只能在创建出来的namespace中使用,我估计当时为了方便就创建了cluster issuer,于是改成这样就可以了

cert-manager.io/cluster-issuer: "letsencrypt-issuer"