我将 kubernetes 与服务一起用作 ClusterIP 并将入口放置在服务前面以将其暴露给 Kubernetes 集群外部。
使用 https 运行 ingress 并使其成为 https,我创建了秘密并在 ingress 中使用了相同的秘密。
kubectl 创建秘密 tls test-secret --key key --cert cert
在我们的 kubernetes 集群中使用 netscalar,因此,我能够使用 X-Forward-For、会话关联、负载平衡算法以及入口。
现在,尝试将服务类型设为 LoadBalancer,这样我就不必有入口。我知道,服务类型负载均衡器提供 L4 负载均衡器,因此负载均衡器中不会有会话关联功能。因为,它可以用于少数服务,我正在尝试使用它。
试图使服务 HTTPS 并且我遇到了,
在这里,我们创建 tls secret 并使用部署部分而不是服务部分中的引用。不确定它是如何工作的。另外,当我在浏览器中使用https://servicename.namespace.svc.XXXXX.com时出现证书错误。
我的应用程序作为 https 运行,它需要在属性文件中使用密钥库和信任库,例如,
ssl.trustore=PATH_TO_THE_FILE ssl.keystore=PATH_TO_THE_FILE
我很困惑,如何使服务类型负载均衡器 https?
你自己回答了,但你没有意识到。
正如您所说,LoadBalancer 类型的服务创建了一个 L4 负载均衡器。L4 负载均衡器知道源 IP:port和目标 IP:port,但它们不知道应用层上的任何内容。
HTTP/HTTPS 负载平衡器在 L7 上,因此它们是应用程序感知的。
因此,基本上您无法从 Loadbalancer 类型的服务中获得 HTTPS 负载均衡器。你希望它成为一个入口。
小智 8
如果您使用云提供商(例如 AWS),您可以在 LoadBalancer 服务中启用 TLS 终止,如下所示:
apiVersion: v1
kind: Service
metadata:
name: api
annotations:
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:...
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
spec:
type: LoadBalancer
selector:
app: myApp
ports:
- protocol: TCP
port: 443
targetPort: 8080
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9547 次 |
| 最近记录: |