如何使用 Cloud SDK 列出所有 Google 个 Container Registry 主机名?

How Would I List All Google Container Registry Hostnames with the Cloud SDK?

如何使用 Cloud SDK (gcloud) 列出在给定 Google 云平台 (GCP) 项目中找到的所有不同 Google 容器注册表 (GCR) 主机名?

即,我如何列出 GCP 项目 $GCP_PROJECT_ID 的所有不同 GCR 主机名(例如,gcr.ious.gcr.io 等)?

您无法在 images 子组下使用 list 命令[并且可能应用过滤器或转换],因为它仅列出 gcr.io 主机名下的存储库:

gcloud container images list

#=>

gcr.io/$GCP_PROJECT_ID/. . .
. . .
Only listing images in gcr.io/$GCP_PROJECT_ID. Use --repository to list images in other repositories.

尝试应用通配符 (*) 会产生以下不利结果:

  • gcloud container images list --repository="*.gcr.io"
    
    #=>
    
    ERROR: (gcloud.container.images.list) A Docker registry domain must be specified.
    
  • gcloud container images list --repository="*.gcr.io/*"
    
    #=>
    
    ERROR: (gcloud.container.images.list) Invalid repository: *, must be at least 2 characters
    
  • gcloud container images list --repository="*.gcr.io/**"
    
    #=>
    
    ERROR: (gcloud.container.images.list) Invalid repository: **, acceptable characters include: abcdefghijklmnopqrstuvwxyz0123456789_-./
    
  • gcloud container images list --repository="*.gcr.io/$GCP_PROJECT_ID"
    
    #=>
    
    ERROR: (gcloud.container.images.list) *.gcr.io/$GCP_PROJECT_ID is not in a supported registry.  Supported registries are ['gcr.io', 'us.gcr.io', . . ., 'mirror.gcr.io', 'k8s.gcr.io']
    

正在尝试对 services 组使用 list 命令:

gcloud services list \
--filter="name=projects/$GCP_PROJECT_NUMBER/services/containerregistry.googleapis.com" \
--format=yaml \
--project=$GCP_PROJECT_ID

asset 组的 search-all-resources 命令:

gcloud asset search-all-resources \
--format=yaml \
--filter="name=//serviceusage.googleapis.com/projects/$GCP_PROJECT_NUMBER/services/containerregistry.googleapis.com" \
--scope=projects/$GCP_PROJECT_ID

也不会泄露有关活动主机名的任何信息。


唯一的解决方案似乎是将针对asset组的list命令的输出通过管道传输到uniq:

gcloud asset list \
--filter="assetType=containerregistry.googleapis.com/Image" \
--format="value(name.split('/').slice(3, 4))" \
--project=$GCP_PROJECT_ID | uniq

#=>

gcr.io
us.gcr.io
. . .
mirror.gcr.io
k8s.gcr.io