gpt4 book ai didi

docker - 我可以在 openshift pod 终端中运行 oc 命令吗?

转载 作者:行者123 更新时间:2023-12-02 19:06:47 25 4
gpt4 key购买 nike

有什么办法可以在 pod 终端上运行 oc 命令吗?我想要做的是让用户登录使用

oc login

然后运行命令以获取 token 。
oc whoami -t

然后使用该 token 调用 openshift 的 REST API。这种方式适用于本地环境,但在 openshift 上,存在一些权限问题,因为我猜 openshift 没有向用户授予 root 权限。它说许可被拒绝。

编辑

所以基本上我希望能够获得 BEARER token ,我可以在 REST API 的 HEADERS 中发送它以创建 pod、服务、路由等。我想要在制作任何 pod 之前使用该 token ,因为我将使用该 token 创建 pod 。我知道这听起来可能很愚蠢,但这就是我想知道的,如果可能的话,我们使用 oc 命令使用命令行的方式,在 openshift 上是否可能。

另一种可能的方法是调用一个给我一个 token 的 API,然后在其他 API 调用中使用该 token 。

@gshipley 对我来说这听起来像是一个鸡蛋问题。但是,如果我要向您解释我在本地机器上所做的事情,我只想在可能的情况下在 openshift 上复制它。我在 nodejs 上运行 oc 命令,我的存储库中有 oc.exe 文件。我运行 oc login 和 oc whoami -t。我阅读了我得到的 token 并存储了它。然后我在 API header 中将该 token 作为 BEARER 发送。这就是我的本地机器上的工作。我只想在 openshift 上复制这个场景。是否可以?

最佳答案

作为集群管理员创建新 Role例如角色.yml

apiVersion: authorization.openshift.io/v1
kind: ClusterRole
metadata:
name: mysudoer
rules:
apiGroups: [''],
resources: ['users']
verbs: ['impersonate']
resourceNames: ["<your user name>"]

并运行
oc create -f role.yml

或者不创建原始 role.yml文件,使用:
oc create clusterrole mysudoer --verb impersonate --resource users --resource-name "<your user name>"

然后为您的 ServiceAccount 赋予新角色
oc adm policy add-cluster-role-to-user mysudoer system:serviceaccount:<project>:default

下载 oc工具放入您的容器中。现在,每当您执行命令时,您都需要添加 --as=<user name> ,或者为了隐藏它,在你的容器内创建一个 shell 别名
alias oc="oc --as=<user name>"
oc现在应该与您的机器完全一样,包括与 ServiceAccount 完全相同的权限仅用作 API 的入口点,但真正的任务是作为您的用户完成的。

如果您想要更简单的东西,只需将适当的权限添加到您的 ServiceAccount ,例如
oc policy add-role-to-user admin -z default --namespace=<your project>

如果您运行该命令,则项目中具有 oc 的任何容器将能够自动神奇地执行项目内的任务。但是,通过这种方式,权限不会像第一步那样从用户继承,因此始终需要根据需要手动将它们添加到服务帐户。

说明,总是有 ServiceAccount在您名为 default 的项目中.它没有特权,因此不能做任何事情,但是所有必要的凭据都可以用于验证 ServiceAccount默认情况下在每个容器中。很酷的是 oc ,如果您不提供任何凭据,只需在 OpenShift 中的容器内运行它,它将自动尝试使用此帐户登录。上面的步骤只是简单的展示了,如何获得正确的账户权限,让 oc可以用它来做一些有意义的事情。

如果您只是想访问 REST API,请使用中提供的 token
/var/run/secrets/kubernetes.io/serviceaccount/token

并为 ServiceAccount 设置权限如上所述。有了它,您甚至不需要 oc命令行工具。

关于docker - 我可以在 openshift pod 终端中运行 oc 命令吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49686375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com