Kubernetes 如何在入口中为包含的url规则设置基本身份验证?
我有一个关于k8s的项目,有3个服务,我想用基本的auth来覆盖,还有1个服务我想公开。 在ingress 4中,由url规则划分的具有不同前缀的服务。Kubernetes 如何在入口中为包含的url规则设置基本身份验证?,kubernetes,google-kubernetes-engine,kubernetes-ingress,nginx-ingress,Kubernetes,Google Kubernetes Engine,Kubernetes Ingress,Nginx Ingress,我有一个关于k8s的项目,有3个服务,我想用基本的auth来覆盖,还有1个服务我想公开。 在ingress 4中,由url规则划分的具有不同前缀的服务。 我在ingress中找到了关于所有规则的基本身份验证设置的教程,但没有关于排除的、包含的URL的教程。不幸的是,GCP ingress不提供身份验证,因为此功能特定于 作为GCP入口中basic auth的变通方法,您可以使用IAP。详细的如何信息可在文章中找到 如果您仍然想使用Nginx-ingres-basic-auth,可以在GKE上执行
我在ingress中找到了关于所有规则的基本身份验证设置的教程,但没有关于排除的、包含的URL的教程。不幸的是,
GCP ingress
不提供身份验证,因为此功能特定于
作为GCP入口中basic auth
的变通方法,您可以使用IAP
。详细的如何信息可在文章中找到
如果您仍然想使用Nginx-ingres-basic-auth
,可以在GKE
上执行,但需要指定Nginx
注释
metadata:
name: foo
annotations:
kubernetes.io/ingress.class: "nginx"
annotations:
nginx.ingress.kubernetes.io/configuration-snippet: |
location /specificpath {
deny all;
}
关于在四个服务中仅对一个服务使用basic auth
,您可以创建一个2ingres
。在另一个stackoverflow线程中讨论了非常类似的问题,它包含了很好的解决方案-
基本身份验证入口
首先,入口应无注释:
- nginx.ingres.kubernetes.io/auth-type
- nginx.ingres.kubernetes.io/auth-secret
- nginx.ingres.kubernetes.io/auth-realm
第二个入口
应该包含正确的注释,并且看起来应该类似于下面的YAML
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: auth-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/auth-type: basic
nginx.ingress.kubernetes.io/auth-secret: basic-auth
nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required'
#cert-manager.io/cluster-issuer: if you would use cert manager like letsencrypt
spec:
tls:
- hosts:
- example.com
secretName: example-tls
rules:
- host: example.com
http:
paths:
- path: /auth
backend:
serviceName: auth-service
servicePort: <auth-service-port>
我想这可以帮助你“AndreiStoicescu,THX,我看了这个问题,我认为这不是一个理想的解决方案,但是它可以很好地工作。你已经使用了很多标签,没有详细说明你的环境细节。您是否正在使用谷歌云并希望使用GCP Ingress或Nginx Ingress?或者这就是你的本地环境?我在使用谷歌云,使用GCP对我有好处