JwtFailureDueToInvalidServicePortPrefix

消息名称JwtFailureDueToInvalidServicePortPrefix
消息代码IST0119
描述Authentication policy with JWT targets Service with invalid port specification.
等级Warning

当认证策略指定使用 JWT 认证但目标 Kubernetes 服务配置不正确时,会出现此消息。 正确定位到 Kubernetes 服务需要使用 http|http2|https 前缀来命名端口(请参见协议选择),并且还需要协议使用 TCP;协议留空也可以,因为其默认值就是 TCP。

示例

当您的集群有如下策略:

  1. apiVersion: authentication.istio.io/v1alpha1
  2. kind: Policy
  3. metadata:
  4. name: secure-httpbin
  5. namespace: default
  6. spec:
  7. targets:
  8. - name: httpbin
  9. origins:
  10. - jwt:
  11. issuer: "testing@secure.istio.io"
  12. jwksUri: "https://raw.githubusercontent.com/istio/istio-1.4/security/tools/jwt/samples/jwks.json"

它的目标服务如下:

  1. apiVersion: v1
  2. kind: Service
  3. metadata:
  4. name: httpbin
  5. namespace: default
  6. labels:
  7. app: httpbin
  8. spec:
  9. ports:
  10. - name: svc-8080
  11. port: 8080
  12. targetPort: 80
  13. protocol: TCP
  14. selector:
  15. app: httpbin

您就会收到这条消息:

  1. 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>] 这种格式即可。