Openshift 使用服务帐户自动化部署失败了

Openshift 使用服务帐户自动化部署失败了,openshift,openshift-enterprise,Openshift,Openshift Enterprise,我们正在尝试将容器的构建和部署自动化到openshift v3.3中创建的项目中。从文档中我可以看出,我们需要利用服务帐户来实现这一点,但文档很难理解,我在博客中找到的示例也无法完成这一任务。我的工作流程如下所示,包括我使用的oc命令示例: BUILDER_TOKEN='xxx' DEPLOYER_TOKEN='xxx' # build and push the image works as expected docker build -t registry.xyz.com/want/want

我们正在尝试将容器的构建和部署自动化到openshift v3.3中创建的项目中。从文档中我可以看出,我们需要利用服务帐户来实现这一点,但文档很难理解,我在博客中找到的示例也无法完成这一任务。我的工作流程如下所示,包括我使用的oc命令示例:

BUILDER_TOKEN='xxx'
DEPLOYER_TOKEN='xxx'

# build and push the image works as expected
docker build -t registry.xyz.com/want/want:latest .
docker login --username=<someuser> --password=${BUILDER_TOKEN} registry.xyz.com
docker push registry.xyz.com/<repo>/<image>:<tag>

# This fails with error
oc login https://api.xyz.com --token=${DEPLOYER_TOKEN} 
oc project <someproject>
oc new-app registry.xyz.com/<repo>/<image>:<tag>

Notice I login into the rest api interface, select the project and create the app but this fails with the following errors:

error: User "system:serviceaccount:want:deployer" cannot create deploymentconfigs in project "default"
error: User "system:serviceaccount:want:deployer" cannot create services in project "default"
BUILDER\u TOKEN='xxx'
部署器令牌='xxx'
#构建并推送映像按预期工作
docker build-t registry.xyz.com/want/want:latest。
docker登录--用户名=--密码=${BUILDER_TOKEN}registry.xyz.com
docker push registry.xyz.com//
#这会出错
oc登录https://api.xyz.com --令牌=${DEPLOYER_令牌}
oc项目
oc new app registry.xyz.com//:
请注意,我登录到rest api界面,选择项目并创建应用程序,但此操作失败,出现以下错误:
错误:用户“system:serviceaccount:want:deployer”无法在项目“default”中创建deploymentconfigs
错误:用户“system:serviceaccount:want:deployer”无法在项目“default”中创建服务

任何想法?

默认情况下,服务帐户仅对其所属项目具有权限。您需要授予deployer在其他项目中部署的权限。

好的,因此使用服务帐户来完成这项任务似乎不是最好的方式。文档并没有帮助这一点。上面的用例非常常见,正确的方法是使用图像名称和相应的标签简单地调用新应用程序:

oc new-app ${APP}:${TAG}

没有必要乱动服务帐户。

正如您所看到的,文档在这里没有详细介绍。我应该提到,这个问题存在于我们的openshift专用平台上,我只在以普通用户身份登录时才看到这个问题。