【发布时间】:2019-06-06 01:11:17
【问题描述】:
我一直在使用 JWT 将身份验证策略应用于我的测试服务。我关注了this guide,它确实按预期工作。但是,当我尝试使用不同的 pod 映像时,即使几乎所有内容都相同,它也不起作用。
有人遇到这个问题吗?或者知道它在我的情况下不起作用的原因?
非常感谢!
这些是我的配置文件:
部署
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: hostname
spec:
replicas: 1
selector:
matchLabels:
app: hostname
version: v1
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
type: RollingUpdate
template:
metadata:
labels:
app: hostname
version: v1
spec:
containers:
- image: rstarmer/hostname:v1
imagePullPolicy: Always
name: hostname
resources: {}
restartPolicy: Always
服务
---
apiVersion: v1
kind: Service
metadata:
labels:
app: hostname
name: hostname
spec:
ports:
- name: http
port: 8001
targetPort: 80
selector:
app: hostname
网关
---
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: hostname-gateway
namespace: foo
spec:
selector:
istio: ingressgateway # use Istio default gateway implementation
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- "*"
虚拟服务
---
piVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: hostname-vs
namespace: foo
spec:
hosts:
- "*"
gateways:
- hostname-gateway
http:
- route:
- destination:
port:
number: 8001
host: hostname.foo.svc.cluster.local
政策
---
apiVersion: "authentication.istio.io/v1alpha1"
kind: "Policy"
metadata:
name: "jwt-example"
namespace: foo
spec:
targets:
- name: hostname
origins:
- jwt:
issuer: "testing@secure.istio.io"
jwksUri: "https://raw.githubusercontent.com/istio/istio/release-1.0/security/tools/jwt/samples/jwks.json"
principalBinding: USE_ORIGIN
【问题讨论】:
-
您需要提供更多详细信息。你到底改变了什么,只是图像?有什么区别,正如您所说,它们几乎相同。您可以发布不工作的日志吗?
-
嗨@Crou,感谢您的回复!区别在于服务端口(例如使用 8001 与 8000)和 pod 端口(80 与 8000)。我正在使用 Kubernetes 1.13 和 Istio 1.05。问题是即使我应用了 Origin Authentication JWT(例如返回 200 状态码),我仍然可以通过节点端口 31380 上的 Istio Ingress Gateway 连接到服务。但是,如果我只更新指向端口 8000(httpin 服务)的 VirtualService 并将 Policy 中的“目标”更新为指向“httpbin”,它将按预期工作。所以我不确定我做错了什么,我不认为这是我使用的图像造成的,对吧?
-
@Crou,您可以运行您将看到的 yaml,即使应用该策略,您仍然可以连接到该服务。
-
你说,你改变了形象。你现在用的是什么图片?
-
@SangNguyen 嘿!您找到解决问题的方法了吗?我得到了完全相同的问题...
标签: kubernetes jwt policy istio