如何用Crossplane Provider配置AWS EksPodIdentity?遇认证问题求助
解决Crossplane AWS Provider PodIdentity认证报错:
crossplane annot get credentials: no extraction handler registered for source: PodIdentity 核心原因
这个错误说明当前使用的Crossplane AWS Provider版本不支持EKSPodIdentity,或者Provider未启用PodIdentity凭证提取功能。
解决步骤
检查并升级Provider版本
仅provider-upjet-awsv0.36.0及以上版本支持EKSPodIdentity认证。先查看当前Provider版本:kubectl get providers.pkg.crossplane.io若版本低于v0.36.0,升级至最新稳定版。
安装Provider时启用PodIdentity特性
部署Provider必须通过ControllerConfig添加--enable-pod-identity启动参数,示例配置:apiVersion: pkg.crossplane.io/v1 kind: Provider metadata: name: provider-aws spec: package: xpkg.upbound.io/crossplane-contrib/provider-upjet-aws:v1.2.0 controllerConfigRef: name: aws-provider-config --- apiVersion: pkg.crossplane.io/v1alpha1 kind: ControllerConfig metadata: name: aws-provider-config spec: args: - --enable-pod-identity验证PodIdentity与ServiceAccount关联
确认AWS控制台中PodIdentity关联的ServiceAccount命名空间、名称,与Crossplane Provider使用的ServiceAccount完全匹配。检查OIDC角色信任策略
确保PodIdentity对应的IAM角色信任策略,正确配置了EKS OIDC提供商及ServiceAccount条件,示例策略:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::你的AWS账号ID:oidc-provider/oidc.eks.你的区域.amazonaws.com/id/你的OIDC提供商ID" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.你的区域.amazonaws.com/id/你的OIDC提供商ID:sub": "system:serviceaccount:crossplane-system:provider-aws" } } } ] }
验证操作
配置完成后,查看Provider日志确认错误是否消除:
kubectl logs -n crossplane-system deployment/provider-aws -f
也可创建一个简单的AWS资源(如S3 Bucket),测试认证是否正常。
内容的提问来源于stack exchange,提问作者Amitb
相关产品推荐
相关产品推荐

