JwtFailureDueToInvalidServicePortPrefix
| 消息名称 | JwtFailureDueToInvalidServicePortPrefix |
| 消息代码 | IST0119 |
| 描述 | Authentication policy with JWT targets Service with invalid port specification. |
| 等级 | Warning |
当认证策略指定使用 JWT 认证但目标 Kubernetes 服务配置不正确时,会出现此消息。 正确定位到 Kubernetes 服务需要使用 http|http2|https 前缀来命名端口(请参见协议选择),并且还需要协议使用 TCP;协议留空也可以,因为其默认值就是 TCP。
示例
当您的集群有如下策略:
apiVersion: authentication.istio.io/v1alpha1kind: Policymetadata:name: secure-httpbinnamespace: defaultspec:targets:- name: httpbinorigins:- jwt:issuer: "testing@secure.istio.io"jwksUri: "https://raw.githubusercontent.com/istio/istio-1.4/security/tools/jwt/samples/jwks.json"
它的目标服务如下:
apiVersion: v1kind: Servicemetadata:name: httpbinnamespace: defaultlabels:app: httpbinspec:ports:- name: svc-8080port: 8080targetPort: 80protocol: TCPselector:app: httpbin
您就会收到这条消息:
Warn [IST0119] (Policy secure-httpbin.default) Authentication policy with JWT targets Service with invalid port specification (port: 8080, name: svc-8080, protocol: TCP, targetPort: 80).
在这个例子中,端口名为 svc-8080,没有遵循 name: <http|https|http2>[-<suffix>] 这种格式。
如何解决
- JWT 认证只支持 http、https 或 http2。将服务的端口重命名为
<http|https|http2>[-<suffix>]这种格式即可。