google-cloud-platform - GCP Deployment Manger not creating network peerings
问题描述
I have a deploymgr template that creates a bunch of network assets and VMs and it runs fine with no errors reported, however no VPC peerings are ever created. It works fine if I create a peering via the console or on the cli via glcoud
Peering fails (with no error msg):
# Create the required routes to talk to prod project
- name: mytest-network
type: compute.v1.network
properties:
name: mytest
autoCreateSubnetworks: false
peerings:
- name: mytest-to-prod
network: projects/my-prod-project/global/networks/default
autoCreateRoutes: true
Peering Works:
$ gcloud compute networks peerings create mytest-to-prod --project=myproject --network=default --peer-network=projects/my-prod-project/global/networks/default --auto-create-routes
解决方案
根据API 参考,Peering 无法在网络创建时完成。首先需要创建网络,一旦成功创建,就需要调用addPeering方法。这解释了为什么您的 YAML 定义创建了网络而不是对等互连,并且它在运行它调用 addPeering 方法的 gcloud 命令后工作。
可以使用部署管理器操作在一个 YAML 文件上创建和执行对等互连:
resources:
- name: mytest-network1
type: compute.v1.network
properties:
name: mytest1
autoCreateSubnetworks: false
- name: mytest-network2
type: compute.v1.network
properties:
name: mytest2
autoCreateSubnetworks: false
- name: addPeering2-1
action: gcp-types/compute-v1:compute.networks.addPeering
metadata:
runtimePolicy:
- CREATE
properties:
network: mytest-network2
name: vpc-2-1
autoCreateRoutes: true
peerNetwork: $(ref.mytest-network1.selfLink)
metadata:
dependsOn:
- mytest-network1
- mytest-network2
- name: addPeering1-2
action: gcp-types/compute-v1:compute.networks.addPeering
metadata:
runtimePolicy:
- CREATE
properties:
network: mytest-network1
name: vpc-1-2
autoCreateRoutes: true
peerNetwork: $(ref.mytest-network2.selfLink)
metadata:
dependsOn:
- mytest-network1
- mytest-network2
您可以复制粘贴上面的 YAML,创建部署并完成对等互连。这些操作使用dependsOn 选项来确保首先创建网络,并且在删除部署时,将通过调用removePeering 方法删除对等互连,然后删除网络。
注意:部署管理器操作尚未记录,但GoogleCloudPlatform/deploymentmanager-samples存储库中有几个示例,例如this和this。
推荐阅读
- apache-spark - Spark Job 服务器上下文用户在运行时更改
- mysql - 3 个文本框,1 个数据查询中的 3 列
- ios - Ionic - HTTP POST 请求在 iOS 中不起作用,但在 Android 和 Web 中起作用
- javascript - 在 Angular 8 编译脚本(main.js、polyfill.js 等)之后添加脚本
- postgresql - 对系统表的慢查询
- python - 我如何修复我的 pygame 窗口,总是黑屏
- assembly - Process Control Block的程序计数器和CPU的程序计数器寄存器有区别吗?
- angular - 是否可以在 Angular 中保护方法?
- android - 没有 androidx.databinding:databinding-compiler:3.4.2 的缓存版本可用于离线模式
- java - 如何在java中打印选择排序中的第4次迭代以及以下测试用例的解决方案