首页 > 解决方案 > 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

标签: google-cloud-platformgoogle-deployment-manager

解决方案


根据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存储库中有几个示例,例如thisthis


推荐阅读