k3s自动完成 ssl 证书签发和续签方法,并使用 https 协议暴露服务方法介绍。
完成了 k 3s 集群的部署,下一步就是需要对外暴露服务,在当下这个网络安全日趋紧迫的时刻,加密传输已经成为 Web 服务的标配。
在网络上可以很轻易的搜索到 k3s 使用 ingress 完成域名暴露的技术文章,但是大部分都是针对旧版本的,旧版配置文件在书写格式上有变化,这篇文章的内容也不能保证最新,一切请以官方文档为准。
本文使用的 k3s 版本为
v1.22.6+k3s1
内容提要
本文介绍 cert-manager 插件的安装,之后以一个简单的 web 服务部署为例,演示 https 服务的部署过程。
安装 cert-manager
# 首先创建 cert-manager 所需的命名空间
$ kubectl create namespace cert-manager
# 使用官网提供的配置文件一键安装
# 如果拉取 github 资源有困难,可以从网络通畅的位置下载好粘贴过去
$ kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.7.1/cert-manager.yaml
如果没有报错,稍等片刻查看 cert-manager 运行正常,就可以继续下一步了:
部署 Issuing Certificates
按照官网描述,需要声明一个 Issuing ,可理解为“签名人”,大致就是用来认证服务归属者的。这部分对应官网文档在这里 → [cert-manager / Configuration / ACME],可以前往详细了解。
下面给出一个示例的 letsencrypt.yml 配置,替换其中的 即可快速查看配置。
部署,并查看部署描述:
看到 Ready 说明一切正常,可以继续下一步了。
部署 Web 程序
在这里就以 ruanbekker/logos:rancer 为例,该容器对外暴露 80 端口,展示一张静态图片。
首先为此次部署准备一个命名空间 logos
之后编写 deployment 配置文件:
部署到集群并查看状态:
如果一切正常就可以继续下一步。
接下来部署一个 service 资源,为了下一步的 ingress 作准备:
惯例,部署并查看状态:
如果一切正常,就可以开始部署入口( ingress )了。
这个 ingress 会将流量路由到对应 service 的80 端口,之后进入对应的 pod 中,部署并查看一下吧:
由于使用了 cert-manager 证书资源,该插件会自动完成证书的认证、部署和续签,看一下证书状态:
可以看到一切正常,现在使用 https 就可以正常访问服务了。

https://cdn-imagehost.frytea.com/images/2022/03/01/2022-03-01-10.24.30cbee848875c87c88.png
大功告成。