无法在eks(aws)上修改(补丁)现有kubernetes部署定义的docker映像ID

我在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上进行此类部署补丁程序时,是否/是否有人有类似的问题?

shijy07 回答:无法在eks(aws)上修改(补丁)现有kubernetes部署定义的docker映像ID

您可以检查服务帐户是否具有RBAC来修补名称空间arch-ns中的部署

kubectl auth can-i patch deployment --as=system:serviceaccount:arch-user:default -n arch-ns

如果以上命令返回no,则向服务帐户添加必要的角色和角色绑定。

这里要注意的一件事是,它在default命名空间中有一个arch-user服务帐户,但是试图在另一个命名空间arch-ns中进行操作

本文链接:https://www.f2er.com/2444134.html

大家都在问