【发布时间】:2019-12-05 11:28:19
【问题描述】:
我正在尝试使用 IRSA 方法而不是 kube2iam 设置 AWS ALB 入口控制器。但是由于缺少一些文档,所以我走到了死胡同。
到目前为止我做了什么:
- 为我的集群配置了 OIDC 提供程序
eksctl utils associate-iam-oidc-provider --cluster devops --approve
使用the template创建了正确的策略
创建了将由 Ingress Controller 使用的 IAM 服务帐户并关联了策略
eksctl create iamserviceaccount --name alb-ingress --namespace default --cluster devops --attach-policy-arn arn:aws:iam::112233445566:policy/eks-ingressController-iam-policy-IngressControllerPolicy-1111111111 --approve
- 提供部署所需的 rbac 规则
kubectl apply -f rbac-role.yaml
- 使用 this template 部署了 AWS 入口控制器。注意
ServiceAccount与我之前创建的服务帐户匹配。
到目前为止,一切都部署得很好。现在我尝试部署我的 Ingress 服务,但出现此错误(在控制器日志中)
kubebuilder/controller "msg"="Reconciler error" "error"="failed to build LoadBalancer configuration due to failed to get AWS tags. Error: AccessDeniedException: User: arn:aws:sts::1122334455:assumed-role/eksctl-devops-nodegroup-ng-1-work-NodeInstanceRole-J08FDJHIWPI7/i-000000000000 is not authorized to perform: tag:GetResources\n\tstatus code: 400, request id: 94d614a1-c05d-4b92-8ad6-86b450407f6a" "Controller"="alb-ingress-controller" "Request"={"Namespace":"superset","Name":"superset-ingress"}
显然该节点没有创建 ALB 的适当权限,我想如果我将我的策略附加到日志中所述的角色,它将起作用。但这违背了使用 IRSA 方法的全部目的,对吗?
我希望 Ingress Controller pod 需要适当的权限(通过使用服务帐户)来创建 ALB 而不是节点。我在这里遗漏了什么吗?
【问题讨论】:
标签: amazon-web-services kubernetes kubernetes-ingress amazon-eks