首页 > 解决方案 > Nginx 入口库

问题描述

我对 Kubernetes 的 nginx 入口感到困惑。我已经能够将它与“basic nginx auth”一起使用(目前还不能这样做oauth2)。

我已经通过 helm 安装:

helm install stable/nginx-ingress --name app-name --set rbac.create=true

这将创建两个服务,一个nginx-ingress-controller和一个nginx-ingress-backend

当我创建一个入口时,这个入口是针对一个且只有一个nginx-ingress-controller的,但我不知道如何:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: tomcat
  annotations:
    nginx.ingress.kubernetes.io/auth-type: basic
    nginx.ingress.kubernetes.io/auth-secret: basic-auth
    nginx.ingress.kubernetes.io/auth-realm: "Authentication Required - foo"
    nginx.ingress.kubernetes.io/rewrite-target: /
  namespace: kube-system
spec:
  rules:
  - host:
    http:
      paths:
      - path: /
        backend:
          serviceName: tomcat-deployment-service 
          servicePort: 8080

当我从 的输出中获得这个 Ingress 时kubectl get ingress -n kube-system,它有一个公共的外部 IP。

令人担忧的是,它不适basic-auth 用于该外部 IP;它是敞开的!Nginx 身份验证仅在我尝试访问nginx-ingress-controller的 IP 时启动。

我有很多问题。

  1. 如何从kubectl apply -f ingress.yaml目标特定的 nginx-ingress-controller 创建入口?
  2. 我如何防止这个新ingressIP拥有外部IP?
  3. 为什么不nginx启动身份验证?
  4. 我想使用什么IP(nginx-ingress-controller还是生成的?)
  5. 如果我想使用生成的 IP,那么来自控制器的 IP 呢?

几天来,我一直在寻找血统、工作示例(并倾注于稀疏、不断变化的文档和 github 问题

编辑:

在这个“官方”文档中,不清楚天气http://10.2.29.4/是否是来自ingresscontroller. 我假设是controller因为当我运行它时,另一个甚至没有进行身份验证(它让我在不要求密码的情况下进入)。我使用的两个 IP 都是 GCP 上的外部 IP(公开可用)。

标签: kubernetesnginx-ingress

解决方案


我想你可能对概念定​​义有一些误解。

  1. Ingress 不是工作(也不是服务,也不是 pod)。这只是一个配置。它不能有“IP”。将入口视为集群中的路由规则或路由表。
  2. Nginx-ingress-controllerLoadbalancer是具有实际运行 pod的类型的服务,它有助于您为集群创建的那些入口规则。
  3. Nginx-ingress-backend如果没有找到匹配的路线,很可能是default-backend您将要前往的路线。nginx-ingress-controller看到这个
  4. 通常,您nginx-ingress-controller应该是集群的唯一条目。集群中的其他服务应该具有这样的类型ClusterIP,即它们不会暴露在集群外部,并且只能通过您的nginx-ingress-controller. 在您的情况下,由于您的服务可以直接从外部访问,因此它不应该是ClusterIP. 只需更改服务类型即可对其进行保护。

基于以上理解,我很乐意为您的问题提供进一步的帮助。

一些读物:

  1. 什么是入口:https ://kubernetes.io/docs/concepts/services-networking/ingress/
  2. K8s 服务和外部可访问性:https ://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types

推荐阅读