【问题标题】:How to correctly expose internal gRPC microservice to other services in EKS?如何正确地将内部 gRPC 微服务暴露给 EKS 中的其他服务?
【发布时间】:2022-03-15 12:47:44
【问题描述】:

我们正在尝试在 AWS EKS 上启动 gRPC 微服务。我们已经到了启动 ALB 的地步,但是它给了我们这个错误:A certificate must be specified for HTTPS listeners

这是我们的 YAML 服务:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  namespace: dev
  name: some-service-name
  annotations:
    alb.ingress.kubernetes.io/backend-protocol-version: GRPC
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS": 80}, {"HTTPS": 50051}]'
    alb.ingress.kubernetes.io/target-type: ip
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/scheme: internal
    service.beta.kubernetes.io/aws-load-balancer-internal: "true"
spec:
  rules:
  - http:
      paths:
      - backend:
          serviceName: some-service-name
          servicePort: 50051
        path: /*

我们不想把这个服务暴露在外部,只希望内部服务能打到它。我觉得我们甚至不需要 HTTPS,并且可以使用 HTTP,但是看起来 gRPC 需要 HTTPS。

让这个工作的正确方法是什么?我看到的例子似乎主要是面向外部的服务。我们是否需要创建私有证书颁发机构,从中创建证书,然后将其归因于负载均衡器设置中的 HTTPS 侦听器?

谢谢!

【问题讨论】:

    标签: amazon-web-services microservices grpc amazon-eks


    【解决方案1】:

    当我们提到侦听端口为 HTTPS 时,ALB 控制器需要证书 ARN。 有两种方法可以让它工作 -

    1. 将监听端口设为 HTTP
    2. 或添加相关证书

    既然要使用 GRPC,我认为 GTPC 使用 HTTPS 没有硬性规定 https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.4/guide/ingress/annotations/#backend-protocol

    而且内部通信还是建议做HTTPS

    【讨论】:

      猜你喜欢
      • 2021-08-30
      • 2023-02-21
      • 1970-01-01
      • 1970-01-01
      • 2020-06-18
      • 2015-10-31
      • 1970-01-01
      • 2021-10-03
      • 2019-12-07
      相关资源
      最近更新 更多