如何在IBM Cloud的OpenShift上创建带HTTPS的LoadBalancer服务
如何在IBM Cloud OpenShift集群中创建带HTTPS的LoadBalancer服务
首先明确:OpenShift Route与自定义LoadBalancer Service是两种独立的服务暴露机制,若你同时配置了两者可能引发冲突,建议根据需求选择其一。以下是创建自定义HTTPS LoadBalancer Service的步骤及问题排查方案:
一、排查现有配置问题
- 确认你的Service配置中,
spec.ports.targetPort是否与后端Pod实际监听的HTTPS端口一致(通常为443) - 检查Service的Endpoints状态:执行
oc describe service <your-lb-service-name>,确认Endpoints列表中存在对应Pod的IP及端口信息,若为空则说明标签选择器与Pod不匹配 - 验证后端Pod是否正常监听443端口:进入Pod执行
netstat -tulpn | grep 443,确认服务已启动并监听目标端口
二、正确创建HTTPS LoadBalancer Service
根据TLS终止的位置,分为两种配置方式:
方式1:后端Pod终止TLS(证书部署在Pod内)
此方式下,LoadBalancer仅转发443端口的TCP流量到Pod,由Pod内的服务处理SSL加密。
创建Service的YAML示例:
apiVersion: v1 kind: Service metadata: name: https-lb-service annotations: # 若需要指定IBM Cloud公开IP类型,添加此注解 service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type: public spec: type: LoadBalancer ports: - name: https protocol: TCP port: 443 # LoadBalancer对外暴露的端口 targetPort: 443 # 后端Pod监听的HTTPS端口 selector: app: your-app-label # 替换为你的Pod标签,确保与Pod的metadata.labels匹配
应用配置:
oc apply -f https-lb-service.yaml
方式2:IBM Cloud LoadBalancer层终止TLS(证书部署在LB)
此方式下,由IBM Cloud的LoadBalancer处理SSL终止,解密后将HTTP流量转发到Pod的80端口(或自定义端口)。
- 先将SSL证书上传至IBM Cloud Certificate Manager,获取证书的CRN(格式为
crn:v1:bluemix:public:cloudcerts:...) - 创建带注解的Service YAML:
apiVersion: v1 kind: Service metadata: name: https-lb-termination annotations: service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type: public service.kubernetes.io/ibm-load-balancer-ssl-cert: "你的证书CRN" service.kubernetes.io/ibm-load-balancer-ssl-ports: "443" # 可选:强制将HTTP(80)流量重定向到HTTPS(443) service.kubernetes.io/ibm-load-balancer-redirect-http-to-https: "true" spec: type: LoadBalancer ports: - name: https protocol: TCP port: 443 targetPort: 80 # 后端Pod监听的HTTP端口 - name: http protocol: TCP port: 80 targetPort: 80 selector: app: your-app-label
应用配置后,等待IBM Cloud LoadBalancer完成证书配置,通常需要数分钟。
三、验证配置有效性
- 获取LoadBalancer的外部IP:
oc get service <your-lb-service-name>
- 测试HTTPS端口监听:
nc -zv <LOAD_BALANCER_IP> 443
- 访问服务验证:
curl -v https://<LOAD_BALANCER_IP>
若使用LB层终止TLS,需确保DNS记录已指向该外部IP,避免证书域名不匹配问题。
内容的提问来源于stack exchange,提问作者skira
相关产品推荐
相关产品推荐

