为外部访问配置 Kubernetes nginx

Configure Kubernetes nginx for an external access

我对 Kubernetes 和 Lagom 还是个新手。

我需要从外部服务器调用我的 Lagom 微服务。为此,我认为我需要公开我的 nginx-ingress 以供外部访问,但我不知道该怎么做。我应该配置一个 "externalIPs" 吗?

{
  "apiVersion": "v1",
  "kind": "Service",
  "metadata": {
    "name": "nginx-ingress"
  },
  "spec": {
    "type": "LoadBalancer",
    "ports": [
      {
        "port": 80,
        "name": "http",
        "targetPort": 8080
      },
      {
        "port": 443,
        "name": "https"
      }
    ],
    "externalIPs": [
      "192.168.1.120"
    ],
    "selector": {
      "k8s-app": "nginx-ingress-lb"
    }
  }
}

Minikube 为自己和 VM 创建一个网络。您需要向外部公开您的服务。

来自 Op 的评论: 您的服务获得端口 30370。你需要公开这个端口。

ssh -i ~/.minikube/machines/minikube/id_rsa docker@$(minikube ip) -L \*:30370:0.0.0.0:30370

在 Minikube 中,您可以使用 kubectl expose 命令公开服务以供外部访问 https://kubernetes.io/docs/tutorials/stateless-application/hello-minikube/#create-a-service。 Minikube 未用于生产。

在生产中,您可以通过三种方式使用 kubernetes https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services---service-types 创建 nginx 入口服务并将其公开以供外部访问:

  1. LoadBalancer 自动设置 ExternalIP 的服务类型。当存在外部非 k8s、云提供商的负载均衡器(如 CGE、AWS 或 Azure)时使用,并且此外部负载均衡器将为 nginx 入口服务提供 ExternalIP
  2. ExternalIPshttps://kubernetes.io/docs/concepts/services-networking/service/#external-ips.
  3. NodePort。在这种方法中,可以使用 NodeIP:NodePort/url/of/the/service.
  4. 从集群外部访问服务

除了 nginx 入口控制器,您还需要一个入口资源。有关示例,请参阅 https://github.com/nginxinc/kubernetes-ingress/tree/master/examples/complete-example