我对nginx和Kubernetes的入境感到困惑。我已经能够在"basic“中使用它了( oauth2还不能这样做)。
我是通过头盔安装的:
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的输出中得到这个信息时,它有一个公共的、外部的IP。
有关的是,basic-auth 没有将应用于外部IP;它是完全开放的!只有当我试图访问nginx-ingress-controller的IP时,Nginx认证才会启动。
我有很多问题。
kubectl apply -f ingress.yaml目标创建的入口成为特定的nginx入口控制器?ingress具有外部IP?nginx身份验证?nginx-ingress-controller还是生成的IP?)几天来,我一直在寻找下降、工作示例(以及大量的稀疏、更改文档和github问题)。
编辑:
在这个“官方”文档中,http://10.2.29.4/是来自ingress或controller的IP,它不清楚天气是否合适。我假设是controller,因为当我运行这个程序时,另一个甚至不进行身份验证(它让我们在不询问密码的情况下进入)。我使用的两个IP都是GCP上的外部IP(可公开获取)。
发布于 2019-03-03 07:20:20
我想你可能有一些概念定义上的误解。
Nginx-ingress-controller是一个类型为Loadbalancer的服务,它后面有实际运行的豆荚,它为您为集群创建的入口规则提供了便利。Nginx-ingress-backend很可能是nginx-ingress-controller路由到的一个default-backend。请参阅这nginx-ingress-controller应该是集群中唯一的条目。集群中的其他服务应该具有ClusterIP类型,这样它们就不会暴露在集群之外,并且只能通过nginx-ingress-controller访问。在这种情况下,由于您的服务可以直接从外部访问,所以它不应该是ClusterIP类型的。只需更改服务类型以获得保护即可。基于上述理解,我很乐意为您的问题提供进一步的帮助。
一些读数:
https://stackoverflow.com/questions/54959706
复制相似问题