问题标签 [k8s-serviceaccount]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
amazon-web-services - AWS IAM 角色 - 一个 pod 中的 AccessDenied 错误
我有一个服务帐户,我试图在安装在同一命名空间中的多个 pod 中使用它。
其中一个 pod 是由 Airflow KubernetesPodOperator 创建的。另一个是通过 Helm 通过 Kubernetes 部署创建的。
在 Airflow 部署中,我看到分配了 IAM 角色并创建、列出了 DynamoDB 表等,但是在第二个掌舵图部署(或)在测试 pod 中(按此处所示创建),我在 DynamoDB 中不断收到AccessDenied
错误消息。CreateTable
我可以看到 AWS 角色 ARN 被分配给服务账户,服务账户被应用到 pod 并且相应的令牌文件也被创建,但我看到了AccessDenied
异常。
服务帐户
PS:使用KubernetesPodOperator
和通过 Helm 图表部署创建的客户端代码都是相同的,即相同的 docker 映像。其他属性,如nodeSelector
等tolerations
,卷挂载也是相同的。
它们的describe pod
输出是相似的,只是名称和标签发生了一些变化。KubernetesPodOperator
pod 具有 QoS 类,而Burstable
Helm 图表是BestEffort
.
为什么我进入AccessDenied
Helm 部署但没有进入KubernetesPodOperator
?如何调试这个问题?
kubernetes - kubectl Secret - 在 ansible k8s 模块中传递服务帐户( json )文件
我正在尝试使用 kubernetes ansible 模块来创建 kubectl 密码,下面是我的命令
我们有什么方法可以在 Ansible k8s 模块中传递服务帐户 json 文件(--from-file=gcp=serviceaccount.json),
如何在下面的模块中传递这个--from-file?
kubernetes-helm - 为什么 helm3 install trigger pre-delete 而不是在 Helm2
我有一个项目需要使用mutating Webhook
,基于namespaceselector
,需要首先将特定标签添加到命名空间。
我使用了三个钩子,hook1(pre-install, pre-delete,etc)为hook2(pre-install)创建RBAC以通过Job和hook3(pre-delete)为名称空间添加标签以删除Job Hook 内容的标签如下:
Hook1设置权限
hook2将标签添加到命名空间
hook3从 hook2 删除标签到命名空间
在图表部署期间,由于未找到服务帐户(ns-edit),hook2 和 hook3 作业都被触发并且未完成。
但是在helm2中可以正确执行,即触发hook1和hook2helm install
添加命名空间标签,触发hook1和hook3helm delete --purge
删除hook2添加的标签
为什么 helm2 和 helm3 在Hook上有如此巨大的差异。
请问如何修改才能实现两者的统一?如果没有,在helm3中如何设计
我真的很感激这方面的任何帮助。
注:helm2 为 v2.17.0,helm3 为 v3.3.0
kubernetes - Kubernetes RBAC 集群角色
我正在尝试从我的 gitlab 运行器中部署一些部署。我在我的集群角色和角色绑定中看不到错误。
这是我得到的错误:
这里我创建的角色:
谢谢你的帮助!
kubernetes - k8s集群内部Pod之间的通信
** 免责声明:我对基础主题的理解很浅,但希望我对案例的解释可以理解。抱歉,术语可能不准确。
我有一个在 k8s 中工作的应用程序,它由一个带有单个容器(主容器)的 pod(Pod#1)表示。在该 pod 内还创建了 k8s-service。在“主容器”中,localhost:8082(图片上的黄色块)上有一个工作应用程序和一个工作服务(不是 k8s 服务)。
在运行时,来自 Pod#1 “main-container”的应用程序创建 k8s-job,它由另一个 pod (Pod#2) 和另一个容器 (job-container) 表示。
这里的问题是:Pod#2 作业容器需要与在主容器(端口 8082)中运行的工作服务(不是 k8s 服务)进行通信。
我知道可以通过服务(如 ServiceName:Port)建立这种通信。
但是还有其他选择可以建立这种连接吗?main-container和 job-container是否有可能有一个与服务通信的选项(例如 https://localhost:8082,它肯定不适用于 job-container)
kubernetes - 角色绑定到两个不同命名空间的服务帐户是否需要两个 .kube/config 数据?
我已经为我们的开发人员创建了一个与命名空间绑定角色的服务帐户user-dev
,application
并为他生成了 .kube/config 内容。他现在已经在使用它了。
现在他想要访问另一个命名空间,即sso
.
我是否只需要将现有服务帐户添加到命名空间中user-dev
的角色绑定,如此处所述?sso
如果是这样,开发人员是否获得两个 .kube/config 然后连接到两个命名空间?或者向第二个命名空间添加角色绑定sso
不会导致他的访问令牌发生任何变化并且他可以继续使用他现有的 .kube/config 文件?我有点卡在那里。
google-cloud-platform - Cloud Composer 可以在同一个 Composer 环境中使用不同的 Service Account 运行 Dags 吗?
我有几个 Dags 设置来在 Cloud Composer / Airflow 中运行 KubernetesPodOperator,它们在 Composer 环境服务帐户下运行,我想知道是否可以使用与 Composer 环境中的服务帐户不同的服务帐户运行 Dag?
我看过文档,但看不到如何做到这一点
创建环境时,您需要指定一个服务帐户。您的环境的集群使用此服务帐户来运行具有不同环境组件的 pod,例如 Airflow 工作程序和调度程序。 https://cloud.google.com/composer/docs/how-to/access-control
https://cloud.google.com/composer/docs/composer-2/authentication
我认为您可以使用模拟服务帐户来执行此操作,但没有示例说明如何执行此操作https://github.com/apache/airflow/issues/12061
kubernetes - Kubernetes Service Account Token 有超能力?
我不小心检查了我的 pod 是否有权限ServiceAccount
及其绑定。出于好奇,我想检查从该服务帐户创建的令牌是否与特定绑定ClusterRole
并且ClusterRoleBinding
是只读的。我从Kubernetes Documentation中尝试了一些东西,恐怕我的理解有些错误。请帮助我正确理解这一点。
我使用现有的ClusterRole
view
并关联到我的服务帐户my-sa
作为ClusterRoleBinding
.
然后我使用TOKEN
to talk toAPISERVER
在测试命名空间中创建一个 pod
发生了什么
- 这创建了一个成功的 pod,并且这个令牌还可以创建任何东西。
default ServiceAccount
我什至尝试使用default
命名空间中的,行为是一样的
我的理解。
- 此令牌与 of 相关联
ClusterRole
,View
因此它不应该允许令牌创建任何资源。 - 这不是一个漏洞,因为如果我能够从客户端代码中获取 ServiceAccount 令牌并将其传递到集群之外?
我的设置:Docker 桌面 Kubernetes。
请帮助我理解其中的不正确之处。我无法理解ServiceAccount
令牌的范围。我试图用谷歌搜索,但我找不到它。可能我没有合适的词组来找到它。
编辑-1:
描述 ClusterRole 视图。
kubernetes - Kubernetes 用户在单个命名空间上工作的角色定义
我目前正面临目前的情况。我想让用户访问各个命名空间,这样他们就可以
- 使用 Helm 图表创建和部署资源(例如,来自 Bitnami)
另一方面,用户不应该
- 创建/检索/修改/删除 RBAC 设置,如 ServiceAccounts、RoleBindings、Roles、NetworkPolicies
- 掌握与 ServiceAccounts 相关的秘密
当然,关键是在这里为它定义最好的角色。可能,以下不是最好的主意:
因此,如果你能提出一些明智的方法,用户可以尽可能自由地使用它,但不要接触一些更“危险”的资源,那就太好了。
本质上,我想遵循此处概述的工作流程 ( https://jeremievallee.com/2018/05/28/kubernetes-rbac-namespace-user.html )。所以最重要的是,一个命名空间中的单个用户无法读取同一命名空间中用户的秘密,因此他们无法使用其他人的凭据进行身份验证。
kubernetes - 以编程方式在 Kubernetes 中创建用户
我正在寻找一种在 Kubernetes 中创建/检索/更新/删除用户的方法,这样我就可以通过 RoleBindings 允许他某些东西。
我发现的一切或多或少都是在主节点上的手动工作。但是,我想我可以通过 API 调用部署在 Kubernetes 中的服务来为我做魔法,而无需做任何手动工作。有这样的东西吗?