0

我已经部署了一个 Google Cloud sqladmin 实例 ( sqladmin.v1beta4.instance) 和数据库 ( sqladmin.v1beta4.database),但我现在想将它分配给我的私有子网。我已经使用多个 VM 成功完成了此操作,但无法使用 sqladmin 实例。

这是我当前的 sqladmin 布局:

- name: my-sqladmin-instance
  type: sqladmin.v1beta4.instance
  properties:
    region: europe-west2
    settings:
      tier: db-f1-micro
      backupConfiguration:
        binaryLogEnabled: true
        enabled: true

对此的任何帮助将不胜感激!

4

2 回答 2

2

对于 CloudSQL,您需要在您的 VPC 中分配一个 Google Managed Service 范围,然后在 PrivateNetwork 属性中使用 VPC Self Link 配置 SQL 实例。有关 GCP 私有服务的更多信息,请参阅GCP VPC 配置私有服务访问以及有关在CloudSQL 配置私有 IP 中将它们与 CloudSQL 一起使用的信息。

您可以在https://github.com/raelga/gcp-dm-templates中找到部署这两种配置的模板。

网络

{% if properties["google-managed-services-range"] %}
- name: google-managed-services-{{ NETWORK }}
  type: compute.v1.globalAddresses
  properties:
    name: google-managed-services-{{ NETWORK }}
    address: {{ properties["google-managed-services-range"].split("/")[0] }}
    prefixLength: {{ properties["google-managed-services-range"].split("/")[1] }}
    addressType: INTERNAL
    purpose: VPC_PEERING
    network: $(ref.{{ NETWORK }}.selfLink)
    description: >
      Address range reserved for Google Managed Services.
      https://cloud.google.com/vpc/docs/configure-private-services-access
{% endif %}

https://github.com/raelga/gcp-dm-templates/blob/master/compute/vpc-network.jinja

SQL 实例

以及带有专用网络部分的 CloudSQL 模板:

resources:
- name: {{ name }}
  type: sqladmin.v1beta4.instance
  properties:
    backendType: {{ properties['backendType'] }}
...
      {# Connectivity #}
      ipConfiguration:
        ipv4Enabled: {{ properties['publicIp'] }}
        {% if properties['authorizedNetworks'] %}
        authorizedNetworks:
          {% for authorizedNetwork in properties['authorizedNetworks'] %}
          - name: {{ authorizedNetwork.name }}
            cidrBlock: {{ authorizedNetwork.cidrBlock }}
          {% endfor %}
        {% endif %}
        {% if properties['privateIp'] %}
        privateNetwork: {{ "projects/{}/global/networks/{}".format(
          env['project'], properties['privateNetwork']
        ) }}
        {% endif %}

https://github.com/raelga/gcp-dm-templates/blob/master/sql/master-instance.jinja

以及用于创建私有 CloudSQL 实例的模板示例:

网络

imports:
  - path: ../../../templates/compute/vpc-network.jinja

resources:

- name: vpc-network
  type: ../../../templates/compute/vpc-network.jinja
  properties:
    subnets:
      - name: compute
        range: 10.60.0.0/23
    google-managed-services-range: 10.60.240.0/20

https://github.com/raelga/gcp.rael.io/blob/master/dm/deployments/rshared/compute/network.yaml

CloudSQL 实例

imports:
  - path: ../../../templates/sql/master-instance.jinja

resources:
  - name: sites-mysql
    type: ../../../templates/sql/master-instance.jinja
    properties:
      tier: db-f1-micro
      publicIp: false
      privateIp: true
      privateNetwork: rshared-net

outputs:
  - name: connectionName
    value: $(ref.sites-mysql.connectionName)
  - name: ipAddress
    value: $(ref.sites-mysql.ipAddresses[0].ipAddress)

https://github.com/raelga/gcp.rael.io/blob/master/dm/deployments/rshared/sql/sites-mysql-cloudsql.yaml

于 2019-03-10T15:36:12.103 回答
0

我相信您正在寻找的是settings.ipConfiguration.privateNetwork,它定义了哪些 VPC 网络可以访问 Cloud SQL 实例。

私有 IP 可从中访问 Cloud SQL 实例的 VPC 网络的资源链接。

您可以在sqladmin.v1beta4.instance方法页面上找到完整的 REST API 语法(可用于转换为 YAML 或 jinja)以及所有字段及其描述。您还可以在Deployment Manager 公共文档中找到所有受支持的 Deployment Manager API 的列表以及指向它们每个细分的链接。

于 2018-12-12T14:51:59.800 回答