Go以Google API Client Libraries來在GCP VPC network的private service connection連線加入新的allocated IP range。
事前要求
參考「GCP 設定本機應用程式存取憑證 Application Default Credentials」設定credential。
參考「Golang 建立GCP VPC network private service connection IP allocated range」建立VPC network的allocated IP range。
參考「Golang 建立GCP VPC network private service connection與service producer的連線」建立VPC private service connection。
Private connection新增allocated IP range
呼叫servicenetworking.NewService
取得servicenetworking.APIService
,接著呼叫servicenetworking.NewServicesConnectionsService
取得servicenetworking.ServicesConnectionsService
。
呼叫compuservicenetworkingte.ServiceConnectionService.Patch
輸入參數parent
值為要連線的service connection名稱,Google service connection名稱固定為services/servicenetworking.googleapis.com/connections/servicenetworking-googleapis-com
及參數servicenetworking.Connection
來加入allocated IP range。
servicenetworking.Connection
參數屬性如下:
servicenetworking.Connection.Network
- 填入VPC的SelfLink。servicenetworking.Connection.ReservedPeeringRanges
- 填入allocated IP range的名稱,既有的allocated IP range名稱與新增的名稱都要填才能正確加入。
main.go
package main
import (
"context"
"google.golang.org/api/servicenetworking/v1"
)
func main() {
ctx := context.Background()
service, err := servicenetworking.NewService(ctx)
if err != nil {
panic(err)
}
serviceConnectionService := servicenetworking.NewServicesConnectionsService(service)
// For Google services that support this functionality, this is`services/servicenetworking.googleapis.com/connections/servicenetworking-googleapis-com`.
serviceConnectionName := "services/servicenetworking.googleapis.com/connections/servicenetworking-googleapis-com"
vpcNetworkSelfLink := "projects/project-id-1/global/networks/demo-vpc-002" // vpc's selflink
existedReservedPeeringRangeName := "demo-vpc-002-allocated-range-001" // assigned allocated IP range name
newReservedPeeringRangeName := "demo-vpc-002-allocated-range-002" // new allocated IP range name
connection := &servicenetworking.Connection{
Network: vpcNetworkSelfLink,
ReservedPeeringRanges: []string{
existedReservedPeeringRangeName,
newReservedPeeringRangeName,
},
}
call := serviceConnectionService.Patch(serviceConnectionName, connection)
_, err = call.Do()
if err != nil {
panic(err)
}
}
沒有留言:
張貼留言