GKE上LoadBalancer服务快速配置HTTPS访问的最简方式是什么
GKE单Pod Web服务开启HTTPS最简实现方案
基于你已有的GKE环境和自有域名,优先推荐GKE原生托管证书方案,无需手动维护证书,改动量最小:
前置操作
- 先将你的自有域名的A记录解析到现有LoadBalancer Service的公网IP
34.71......
方案1:GKE托管证书+Ingress(推荐,无需手动续期证书)
全程不需要修改现有Pod、Service配置,只需要新增2个K8s资源即可:
- 创建托管证书资源,新建
managed-cert.yaml文件,替换为你自己的域名:
apiVersion: networking.gke.io/v1 kind: ManagedCertificate metadata: name: my-web-cert spec: domains: - your-domain.com # 替换为你的实际自有域名
执行命令创建资源:kubectl apply -f managed-cert.yaml
2. 创建Ingress资源,关联证书和现有Service,新建ingress.yaml文件:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: my-web-ingress annotations: networking.gke.io/managed-certificates: my-web-cert kubernetes.io/ingress.class: "gce" spec: rules: - host: your-domain.com # 替换为你的实际自有域名 http: paths: - path: / pathType: Prefix backend: service: name: my-service port: number: 80
执行命令创建资源:kubectl apply -f ingress.yaml
3. 等待5-15分钟让GKE完成证书签发和资源配置,生效后即可通过https://your-domain.com正常访问服务。
方案2:Pod内直接配置证书(适合已有证书,不想新增Ingress的场景)
如果你已经持有该域名的SSL证书,也可以直接在Pod内部署证书,改动现有资源即可:
- 将SSL证书文件配置到Pod内的Web服务中,开启443端口监听
- 修改现有
my-service配置,新增443端口暴露,参考配置:
apiVersion: v1 kind: Service metadata: name: my-service spec: type: LoadBalancer selector: app: nodeweb-server # 替换为你的Pod实际匹配标签 ports: - name: http port: 80 targetPort: 80 - name: https port: 443 targetPort: 443
应用配置后即可通过https://your-domain.com访问,缺点是需要你手动维护证书的更新和续签。
内容的提问来源于stack exchange,提问作者nickponline
相关产品推荐
相关产品推荐

