一、架构设计
按照下面的架构,来制作一个支持 HTTPS 访问的安装包。
二、声明安装参数
在 package.yaml 声明安装参数如下:
args: – name: app_certification label: SSL 证书 widget: certificate-select optional: true – name: app_domain label: 域名 widget: domain-input optional: true certId: ${app_certification.certId}
对应安装表单效果:
通过 certificate-select 和 domain-input 声明了两个参数,分别接收客户的证书和域名输入。域名组件绑定证书 ID,可以帮助用户选择或者输入跟证书兼容的域名。
三、声明资源栈
在 variable.tf 添加两个变量,接收安装参数:
variable "app_certification" { type = object({ certId = string })}variable "app_domain" { type = object({ domain = string })}
在 deployment.tf,声明 CLB 的实例、监听器和相应转发规则:
# 声明 CLB 实例resource "tencentcloud_clb_instance" "open_clb" { # 负载均衡实例的网络类型,OPEN:公网,INTERNAL:内网 network_type = "OPEN" # 安全组 security_groups = [var.sg.security_group.id] # VPC vpc_id = var.app_target.vpc.id # 子网 subnet_id = var.app_target.subnet.id # 启用默认放通,即 Target 放通来自 CLB 的流量 load_balancer_pass_to_target = true}# 声明 CLB HTTPS 监听器resource "tencentcloud_clb_listener" "https_listener" { clb_id = tencentcloud_clb_instance.open_clb.id listener_name = "https_listener" # CLB 监听 443 端口,支持 HTTPS 访问 port = 443 protocol = "HTTPS" # 这里使用安装参数里声明的证书 certificate_id = var.app_certification.certId certificate_ssl_mode = "UNIDIRECTIONAL"}# 声明 CLB 转发规则resource "tencentcloud_clb_listener_rule" "https_rule" { clb_id = tencentcloud_clb_instance.open_clb.id listener_id = tencentcloud_clb_listener.https_listener.id # 这里配置为安装参数声明的域名,意思是当请求是这个域名的请求时,进行转发 domain = var.app_domain.domain # 哪个路径转发,这里配置根路径,全站转发 url = "/"}# 声明 CLB 后端服务绑定,将命中转发规则的流量,转发到 CVMresource "tencentcloud_clb_attachment" "clb_backend" { clb_id = tencentcloud_clb_instance.open_clb.id listener_id = tencentcloud_clb_listener.https_listener.id rule_id = tencentcloud_clb_listener_rule.api_https_rule.id targets { # CVM 实例ID(需替换成真实的实例ID) instance_id = tencentcloud_instance.demo_cvm[0].id # 假设我们的 CVM 打开的是 3000 的 http 端口 port = 3000 # 权重 weight = 100 }}
四、原理
CLB 这个产品设计是用作负载均衡,但也支持用作证书卸载。它对客户提供 HTTPS 的端口,然后,后端转发到软件的 HTTP 端口。
CLB 的几个资源,对应控制台界面如上图。其中,证书是挂在监听器中的:
五、完整示例
完整示例可以 访问 CNB 获取。
六、其他方案
除 CLB 外,TKE 的七层 Service、CDN、EdgeOne 等加速产品,也支持证书部署。后续云应用将提供更多整合示例供参考。