Назначение подсети экземпляру sqladmin с помощью jinja - PullRequest
0 голосов
/ 11 декабря 2018

Я развернул экземпляр Google Cloud sqladmin (sqladmin.v1beta4.instance) и базу данных (sqladmin.v1beta4.database), но теперь я хочу назначить его в своей частной подсети.Я сделал это успешно с несколькими виртуальными машинами, но не смог с экземпляром sqladmin.

Это мой текущий макет для sqladmin:

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

Любая помощь с этим будет высоко ценится!

Ответы [ 2 ]

0 голосов
/ 10 марта 2019

Для CloudSQL вам необходим диапазон управляемой службы Google, выделенный в вашем VPC, а затем настройте экземпляр SQL с помощью собственной ссылки VPC в атрибуте PrivateNetwork.Дополнительную информацию о частных сервисах GCP можно найти в GCP VPC. Настройка доступа к частным сервисам и об их использовании с CloudSQL в * 1003. * Настройка CloudSQL в приватном IP * * * * * * * * *шаблон для развертывания обеих конфигураций в 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

И пример шаблона, используемого для создания экземпляра Private 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

0 голосов
/ 12 декабря 2018

Полагаю, вы ищете settings.ipConfiguration.privateNetwork , который определяет, какие сети VPC могут обращаться к экземпляру Cloud SQL.

Ссылка на ресурс для VPCсеть, из которой экземпляр Cloud SQL доступен для частного IP.

Вы можете найти полный синтаксис REST API (который можно использовать для преобразования в YAML или jinja), а также все поля и ихописание на sqladmin.v1beta4.instance странице метода .Вы также можете найти список всех поддерживаемых API для диспетчера развертывания и ссылки на каждую из них в общей документации Deployment Manager .

...