【问题标题】:Nginx Ingress KubeNginx 入口库
【发布时间】:2019-03-02 14:45:16
【问题描述】:

我对 Kubernetes 的 nginx 入口感到困惑。我已经能够将它与“basic nginx auth”一起使用(尚无法使用oauth2)。

我已经通过 helm 安装:

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

这会创建两个服务,nginx-ingress-controllernginx-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

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

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

我有很多问题。

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

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

编辑:

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

【问题讨论】:

    标签: kubernetes nginx-ingress


    【解决方案1】:

    我认为您可能对概念定​​义有一些误解。

    1. 入口不是作业(也不是服务,也不是 pod)。这只是一个配置。它不能有“IP”。将 ingress 视为集群中的路由规则或路由表。
    2. Nginx-ingress-controller 是类型为 Loadbalancer 的服务,其背后有实际运行的 pod,可促进您为集群创建的入口规则。
    3. Nginx-ingress-backend 很可能是一个 default-backend,如果没有找到匹配的路由,您的 nginx-ingress-controller 将路由到该 default-backend。见this
    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

    【讨论】:

      猜你喜欢
      • 2020-08-14
      • 2019-08-12
      • 1970-01-01
      • 2021-03-04
      • 2021-05-31
      • 2021-11-12
      • 1970-01-01
      • 1970-01-01
      • 2018-07-17
      相关资源
      最近更新 更多