我正在使用预装的Kubernetes集群,它附带了docker桌面。我在windows机器上,使用WSL 2在Ubuntu-18.04 VM上运行Kubernetes。
istioctl install --set profile=demo --set values.global.jwtPolicy=third-party-jwt但我得到了一个信息:
Detected that your cluster does not support third party JWT authentication. Falling back to less secure first party JWT. See https://istio.io/v1.9/docs/ops/best-practices/security/#configure-third-party-service-account-tokens for details.在那之后,它就冻结在上面,直到它超时:
Processing resources for Istiod. Waiting for Deployment/istio-system/istiod我的集群中有启用第三方JWT的方法吗?
发布于 2021-04-28 10:59:06
在您收到的错误消息中,有一个指向关于该特定问题的文档的链接:
引用正式文件:
配置第三方服务帐户令牌 若要使用Istio控制平面进行身份验证,Istio代理将使用服务帐户令牌。Kubernetes支持这种令牌的两种形式: 第三方令牌,它有一个作用域的受众和过期。第一方令牌,没有过期,并被安装到所有的吊舱。由于第一方令牌的属性不太安全,Istio将默认使用第三方令牌。但是,并非所有Kubernetes平台都启用了此功能。 如果您使用istioctl进行安装,将自动检测到支持。这也可以手动完成,并通过传递
--set values.global.jwtPolicy=third-party-jwt或--set values.global.jwtPolicy=first-party-jwt进行配置。 要确定集群是否支持第三方令牌,请查找TokenRequest API。如果不返回响应,则不支持该特性:$ kubectl get --raw /api/v1 | jq '.resources[] | select(.name | index("serviceaccounts/token"))'{“名称”:“服务帐户/令牌”,"singularName":"",“命名空间”:真,"authentication.k8s.io",“版本”:"v1",“v1”,"TokenRequest",“动词”:“创建”} 虽然大多数云提供商现在都支持这一特性,但许多本地开发工具和自定义安装可能不会早于Kubernetes 1.20。若要启用此功能,请参考Kubernetes文件。
我不确定用Desktop创建的Kubernetes (1.19.7)是否支持这个特性,但是Kubernetes文档展示了如何启用它:
服务帐户令牌体积投影 特征状态: Kubernetes v1.20稳定 注: 要启用和使用令牌请求投影,必须将以下命令行参数指定为: -服务-帐户-发行人-服务-帐户-密钥-文件-服务-帐户-签名-密钥-文件-api-观众
您可以在带有Kubernetes的Desktop中以一种有点麻烦的方式编辑您的kubeapi-server清单。您可以通过下面这个答案(我是这个答案的作者)来阅读更多关于它的信息:
解决办法
在主机上使用Docker时,还可以考虑将minikube与其--driver=docker一起使用。它支持Istio文档中描述的第三方JWT令牌(它从$ kubectl get --raw ...命令产生响应)。
一个副词! 我已经在
minikube版本1.19.0和Kubernetes版本1.20.2上测试了这一点。
https://stackoverflow.com/questions/67292342
复制相似问题