#google-cloud-platform #google-compute-engine #private-subnet #google-vpc
#google-cloud-platform #google-compute-engine #частная подсеть #google-vpc
Вопрос:
Любой способ ограничить external(Public) IP
в GCP
на Subnet
. Кажется, если мы хотим создать VM
без external IP
, мы должны выбрать External IP- None
во VM
время создания. Разве мы не можем установить External IP- None
в конфигурации подсети, и любой хост, созданный в этой подсети, не будет иметь public/external IP
Ответ №1:
Вы можете настроить ограничение политики организации, чтобы определить разрешенные внешние IP-адреса для экземпляров виртуальной машины. С помощью этого ограничения вы можете ограничить настройку внешних IP-адресов списком экземпляров. Если оставить allowedValues
список пустым, настройка внешних IP-адресов для виртуальных машин в рамках проектов организации станет невозможной. Найдите всю необходимую информацию в следующем разделе документации.
Если вы сочтете подход с ограничениями политики слишком строгим (обратите внимание, что это повлияет на многие другие продукты, которые полагаются на виртуальные машины), другой стратегией, которую вы могли бы применить, было бы автоматизировать развертывание виртуальных машин с помощью команды gcloud compute instances create и воспользоваться флагом —no-address, чтобы избежать назначения экземплярам внешних IP-адресов.
Комментарии:
1. Ответ Дэниела верен. Если вы хотите следить за реализацией, используя визуальный подход. Посмотрите это видео о том, как ограничить общедоступные IP-адреса в Google Cloud
Ответ №2:
Для тех, кто ищет решение для каждого экземпляра, используя Google GCP REST API, просто убедитесь, что в accessConfigs
вашем networkInterfaces
разделе тела JSON вашего запроса нет:
"machineType": "zones/{my_zone}/machineTypes/{my_machine_type}",
"name": "my_instance_name",
"networkInterfaces": [{
"network": "my_vpc_network_ref",
"subnetwork": "my_subnet_ref"
# Don't include these commented lines if you only want a private IP
# "accessConfigs": [{
# "name": "External NAT",
# "type": "ONE_TO_ONE_NAT"
# }]
}],
Все части, начинающиеся с «my», являются заполнителями / переменными.
Я понимаю, что на самом деле вопрос был о том, как это сделать на уровне подсети, и предоставленные ответы помогают сделать это на уровне организации или проекта, но в названии вопроса не указано, на каком уровне мы запретили частные IP-адреса, и из документации GCP неясно, что эквивалентно вызову REST API для --no-address
флага, поэтому я хотел задокументировать это здесь для будущих программистов.