问题描述:
当使用AWS ALB Ingress Controller与IRSA(IAM Role for Service Account)一起使用时,可能会遇到授权错误的问题。
解决方法:
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: my-cluster
region: us-west-2
iam:
withOIDC: true
managedNodeGroups:
- name: my-managed-ng
instanceType: t3.medium
minSize: 3
maxSize: 3
desiredCapacity: 3
iam:
withAddonPolicies:
albIngress: true
helm repo add eks https://aws.github.io/eks-charts
helm upgrade -i aws-load-balancer-controller eks/aws-load-balancer-controller \
--set clusterName=my-cluster \
--set serviceAccount.create=false \
--set serviceAccount.name=aws-load-balancer-controller \
--namespace kube-system
alb.ingress.kubernetes.io/role注释,并设置为IRSA的ARN。可以使用以下代码示例:apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
annotations:
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/role: arn:aws:iam::123456789012:role/my-irsa-role
spec:
rules:
- http:
paths:
- path: /*
backend:
service:
name: my-service
port:
number: 80
apiVersion: v1
kind: Pod
metadata:
name: test-pod
spec:
serviceAccountName: my-service-account
containers:
- name: aws-cli
image: amazon/aws-cli
command: [ "sleep", "infinity" ]
kubectl exec -it test-pod -- aws sts get-caller-identity
如果成功返回当前身份的信息,则表示IRSA和ALB Ingress Controller的配置正确。否则,将根据错误信息调整配置。