要使用IAM角色而不是访问密钥和密钥来访问Kubernetes pod的亚马逊S3存储桶,可以按照以下步骤操作:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Federated": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.us-west-2.amazonaws.com/id/XXXXXXXXXXXX"
},
"Action": "sts:AssumeRoleWithWebIdentity",
"Condition": {
"StringEquals": {
"oidc.eks.us-west-2.amazonaws.com/id/XXXXXXXXXXXX:sub": "system:serviceaccount:<namespace>:<serviceaccount>"
}
}
}
]
}
其中,替换111122223333
为AWS账号ID,us-west-2
为EKS集群所在区域,XXXXXXXXXXXX
为EKS集群的OIDC提供者ARN,<namespace>
为Kubernetes pod的命名空间,<serviceaccount>
为Kubernetes pod的服务账号。
kubectl create serviceaccount <serviceaccount> -n <namespace>
其中,<serviceaccount>
为服务账号名称,<namespace>
为命名空间。
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: s3-access-role
namespace: <namespace>
rules:
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: s3-access-role-binding
namespace: <namespace>
subjects:
- kind: ServiceAccount
name: <serviceaccount>
namespace: <namespace>
roleRef:
kind: Role
name: s3-access-role
apiGroup: rbac.authorization.k8s.io
其中,将<namespace>
和<serviceaccount>
替换为先前创建的Kubernetes服务账号的命名空间和名称。
完成上述步骤后,Kubernetes pod将使用IAM角色来访问亚马逊S3存储桶,而不需要使用访问密钥和密钥。请注意,这是使用腾讯云相关产品进行云计算领域开发的示例解答,具体实施可能会因环境和需求而有所不同。
领取专属 10元无门槛券
手把手带您无忧上云