公开 kubernetes 入口的最佳方法?

Best approach to expose kubernetes ingress?

我目前正在使用 nginx ingress 将我的应用程序暴露给外部,目前我的方法是这样的。我的问题是这是最好的方法吗?或者如果不是最好的做法是什么。

nginx 入口控制器服务:-

apiVersion: v1
kind: Service
metadata:
  name: nginx-ingress
spec:
  type: LoadBalancer
  ports:
    - port: 80
      name: http
      protocol: "TCP"
    - port: 443
      name: https
      protocol: "TCP"
  selector:
    app: nginx-ingress-lb

入口:-

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
  name: app-ingress
spec:
  tls:
  - hosts:
    - myservice.example.com
    secretName: sslcerts
  rules:
  - host: myservice.example.com
    http:
      paths:
      - backend:
          serviceName: myservice
          servicePort: 80
        path: /

所以基本上我有我的 nginx 入口控制器 pods 运行 并暴露给 Loadbalacner 的服务类型,我定义了规则来确定路由。

最佳方法取决于您选择构建集群的环境,无论您是考虑使用云提供商还是裸机解决方案。

在您的示例中,我猜您正在使用云提供商作为负载均衡器配置器,它提供外部 IP 地址作为您 NGINX Ingress Controller 的入口点。因此,您很有可能使用各种功能和选项按需扩展 Ingress。

我发现这个 Article 对于比较 NGINX Ingress Controller 在云端和裸机环境中的实现非常有用。