使用jinja为sqladmin实例分配子网



我已经部署了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

如有任何帮助,我们将不胜感激!

对于CloudSQL,您需要在专有网络中分配一个Google托管服务范围,然后在PrivateNetwork属性中使用专有网络自链接配置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

还有一个用于创建PrivateCloudSQL实例的模板示例:

网络

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

我相信您想要的是设置.ipConfiguration.privateNetwork,它定义了哪些VPC网络可以访问云SQL实例。

VPC网络的资源链接,私有IP可以从该网络访问云SQL实例。

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

相关内容

  • 没有找到相关文章

最新更新