谷歌云go sdk中projectslocation和projectszone功能/类型之间的区别

浏览 go cloud sdk 的容器包,我们发现可用资源主要有两种不同类型的类型和方法:

  • 项目位置,例如ProjectsLocationsClustersCreateCall

  • 项目区域 例如 ProjectsZonesClustersAddonsCall

他们有什么区别?

只是为了记录,我正在寻找人们必须遵循的模式,以便

a) 它传递(以某种方法?)项目 ID

b) 它检索属于该项目的所有可用 GKE 集群


湖上湖
浏览 60回答 1
1回答

DIEA

Go container/v1API 是从底层 Google Kubernetes Engine (GKE) REST API(公共文档)生成的,它支持按区域或按位置查询集群。检查这些文档,您会发现大多数建议都是使用位置 API。尽管特定于区域的 API 仍然可用于向后兼容,但不推荐使用任何按区域进行的过滤等操作:根据我的记忆,我认为在宣布支持区域GKE 集群时,添加了按位置搜索集群的功能;此类集群的控制平面在多个区域之间共享,以实现高可用性目的,并且提供了一个 API,该 API 可在区域和区域集群上通用。为了通过API调用获取项目中的所有集群,根据您的请求,您可以使用方法location的字段(*container.ProjectsLocationsClustersService).List来对底层API进行这样的调用:projectID := "my-project-id" // TODO fill in project IDsvc, err := container.NewService(context.TODO())// TODO: handle errparent := fmt.Sprintf("projects/%s/locations/-", projectID) // Location "-" matches all zones and regionsresp, err := svc.Projects.Locations.Clusters.List(parent).Do()// TODO do something with response and error有关参数结构parent和 List 调用行为的更多详细信息,请参阅 API 文档。区域 API 将支持在查询所有区域时列出区域集群(将参数设置zone为-)。但是,由于它仅接受区域参数作为其 List 方法中的过滤器,因此它不提供过滤特定区域中的区域集群的功能。同一 API 的其他端点也有类似的限制。
打开App,查看更多内容
随时随地看视频慕课网APP