【发布时间】: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-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
当我从kubectl get ingress -n kube-system 的输出中获得这个 Ingress 时,它有一个公共的外部 IP。
关注的是basic-auth 不适用于该外部 IP;它是敞开的! Nginx 身份验证仅在我尝试访问 nginx-ingress-controller 的 IP 时启动。
我有很多问题。
- 如何使从
kubectl apply -f ingress.yaml创建的入口针对特定的 nginx-ingress-controller? - 如何防止这个新的
ingress拥有外部 IP? - 为什么不启动
nginx身份验证? - 我应该使用什么 IP(
nginx-ingress-controller或 生成一个?) - 如果我想使用生成的 IP,那么来自控制器的 IP 呢?
字面意思天以来,我一直在寻找血统、工作示例(并倾注于稀疏、不断变化的文档和 github 问题)。
编辑:
在这个“官方”documentation 中,不清楚天气与否http://10.2.29.4/ 是来自ingress 或controller 的IP。我假设是controller,因为当我运行它时,另一个甚至没有进行身份验证(它让我在不要求密码的情况下进入)。我使用的两个 IP 都是 GCP 上的外部 IP(公开可用)。
【问题讨论】: