【发布时间】:2020-07-27 08:36:33
【问题描述】:
我在 aws 上创建了 CodePipeline 定义。一开始,我构建了 docker 映像并将其发送到 ecr(aws 上的容器注册表)。当 docker 映像已发送到注册表时,我调用 lambda 函数,该函数应通过替换该部署定义中的 docker 映像 id 来更新现有部署的定义。 Lambda 函数是使用 nodejs 实现的,获取最近发送的图像 id 并尝试修补部署定义。当它尝试修补部署时,我收到如下响应。
body: {
kind: 'Status',
apiVersion: 'v1',
metadata: {},
status: 'Failure',
message: 'deployments.apps "arch-app" is forbidden:
User "system:serviceaccount:arch-user:default" cannot patch resource "deployments"
in API group "apps" in the namespace "arch-ns"',
reason: 'Forbidden',
details: [Object],
code: 403
}
此用户帐户属于 aws iam,我用它来创建带有 kubernetes 的测试集群,因此它是集群的所有者。我在集群上执行的任何操作都是使用此帐户进行的,并且工作正常(我可以使用此帐户创建资源并对其应用更改而不会出现任何问题)。
我在此命名空间中为我使用的 aws 用户帐户创建了额外的角色和角色绑定,但它没有解决问题(并且可能是多余的)。 Lambda 函数对 ecr 和 eks 上的所有资源拥有完全权限。
是否/是否有人在使用 lambda 函数对 eks 进行此类部署修补时遇到类似问题?
【问题讨论】:
标签: kubernetes aws-lambda aws-codepipeline amazon-eks aws-ecr