使用 KubeSphere 在 Kubernetes 安装 certmanager 为网站启用 HTTPS

2023年 7月 9日 86.8k 0

cert-manager

什么是 cert-manager

cert-manager(https://cert-manager.io/)是 Kubernetes 原生的证书管理控制器。它可以帮助从各种来源颁发证书,例如 Let's Encrypt,HashiCorp Vault,Venafi,简单的签名密钥对或自签名。它将确保证书有效并且是最新的,并在证书到期前尝试在配置的时间续订证书。它大致基于 kube-lego 的原理,并从其他类似项目(例如 kube-cert-manager)中借鉴了一些智慧。

准备工作

  • 需要一个公网可访问的 IP,例如 139.198.121.121
  • 需要一个域名,并且已经解析到到对应的IP,例如 A kubesphere.io 139.198.121.121,我们将 staging.kubesphere.io 域名解析到了 139.198.121.121
  • 在KubeSphere上已经运行网站对应的服务,例如本例中的ks-console
  • 启用项目网关

    登录 KubeSphere,进入任意一个企业空间下的项目中。

    在 KubeSphere 中启用对应项目下的网关。

    我们开启的是一个NodePort类型的网关,需要在集群外部使用 LoadBalancer 转发到网关的端口,将 139.198.121.121 绑定到 LoadBalancer 上,这样我们就可以通过公网IP直接访问我们的服务了;
    如果 Kubernetes 集群是在物理机上,可以安装 Porter(https://porter.kubesphere.io)负载均衡器对外暴露集群服务;
    如果在公有云上,可以安装和配置公有云支持的负载均衡器插件,然后创建 LoadBalancer 类型的网关,填入公网IP对应的 eip,会自动创建好负载均衡器,并将端口转发到网关。

    安装 cert-manager

    详细安装文档可以参考 cert-manager。

    cert-manager 部署时会创建一个 webhook 来校验 cert-manager 相关对象是否符合格式,不过也会增加部署的复杂性。这里我们使用官方提供的一个 no-webhook 版本安装。

    可以在 KubeSphere 右下角的工具箱中,打开 Web Kubectl。

    在 Web Kubectl 执行下列命令安装 cert-manager:

    # Install the CustomResourceDefinitions and cert-manager itself
    kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v0.11.0/cert-manager-no-webhook.yaml
    

    创建 Issuer

    Issuer 是 cert-manager 中的概念,表示证书的签发者。在此实例中,我们使用免费的 letsencrypt 来获取TLS证书。

    在 kubectl 中执行下面命令来创建一个kubesphere-system项目可用的 Issuer(注意修改项目和email信息)

    kubectl -n kubesphere-system create -f -

    相关文章

    KubeSphere 部署向量数据库 Milvus 实战指南
    探索 Kubernetes 持久化存储之 Longhorn 初窥门径
    征服 Docker 镜像访问限制!KubeSphere v3.4.1 成功部署全攻略
    那些年在 Terraform 上吃到的糖和踩过的坑
    无需 Kubernetes 测试 Kubernetes 网络实现
    Kubernetes v1.31 中的移除和主要变更

    发布评论