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