(我不确定这是否是常见要求,或者我正在要求黑客入侵,但无论如何我都会尝试)
我们为Google Kubernetes Engine上的每个开发人员部署了不同的项目,所有项目都在同一计费帐户下。例如,我的开发项目是kp-dev-project
,而我的团队成员之一是xyz-dev-project
。我们还有一个用于集成部署的“公共”项目,称为intg-project
。
我们在intg-project
下创建了两个资源:
gcr.io/intg-project
),我们的CI管道在其中推送图像;例如grc.io/intg-project/hello:1.0
dev.example.com
这是问题:
GKE中是否有一种方法可以引用 other 项目在“ common”项目中创建的资源?例如,在开发时,我将gcloud
配置设置为自己的个人资料,名为kp-dev-profile
。如果我尝试部署引用来自grc.io/intg-project/hello:1.0
中图像的Kube规范,则会收到如下所示的错误:
Failed to pull image "gcr.io/intg-project/hello:1.0": rpc error: code = Unknown desc = Error response from daemon: repository gcr.io/intg-project/hello not found: does not exist or no pull access
类似地,如果我尝试使用gcloud dns managed-zones list
列出所有托管区域,则看不到托管区域dev.example.com
。
一旦我将个人资料更改为intg-profile
,或将我的kp-dev-profile
个人资料中的项目设置为intg-project
,我就可以访问这两种资源。 注意:,我在Google IAM中的用户具有必要的权限(实际上,我实际上是intg-project
的“所有者”)
这很有意义: Google将每个“项目”创建为隔离的资源沙箱,并且不会在项目外部公开任何资源。
但是也许也许 没意义:“项目”听起来很像 me 的沙箱机制,可以保持我的开发人员的工作独立于一个孤立的,同时仍然想利用一个公共的托管区域和一个公共的容器注册表。
有什么想法吗?
更新
我能够使用GCP服务帐户密钥和Docker Secret将Google容器注册表配置为“外部”私有Docker注册表。所有功劳归this article on Heptio.com。
答案 0 :(得分:0)
专用的CI / CD云项目可在每个Google Kubernetes Engine环境上构建,推送,测试Docker映像并不断部署新版本的映像。
这些环境是在单独的项目(如开发,登台和生产)下提供的。
您通常指的是什么区域?你能给我更多细节吗?
是的,您可以利用通用的容器注册表。
您可以授予对另一个项目的访问权限 有关更多详细信息,请参见附件的链接[1]
[1] https://googlecloud.tips/tips/029-cross-project-container-registry/
您也可以在使用共享VPC设置群集时查看此文档[2]。您可以将一个项目指定为宿主项目,也可以将其他项目(称为服务项目)附加到宿主项目。您可以将Shared VPC与区域群集和区域群集一起使用。
[2] https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-shared-vpc
您还可以为命令指定--project参数,以对该调用针对另一个项目进行操作。
此外,您可以授予用户和其他项目对注册表的访问权限,请参阅链接[3]了解更多详细信息