Настройка VPC и сети
Создайте с помощью Terraform AWS Virtual Private Cloud, подсети и группы безопасности, чтобы обеспечить инфраструктуре безопасную изолированную сетевую основу.
«Настройка VPC и сети» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.
Зачем нужна пользовательская VPC
Каждый аккаунт AWS поставляется с VPC по умолчанию, но для рабочей инфраструктуры лучше использовать сеть, спроектированную самостоятельно. VPC (Virtual Private Cloud, виртуальное частное облако) — это изолированный раздел облака AWS, в котором Вы управляете диапазонами IP, подсетями, маршрутизацией и межсетевыми экранами.
С помощью Terraform Вы описываете всю сеть как код, поэтому её можно воспроизводимо создавать в разных регионах и аккаунтах.
Объявление ресурса VPC
Ресурс aws_vpc является корнем Вашей сети. Блок CIDR определяет диапазон частных IP-адресов. Блок /16 предоставляет примерно 65 000 адресов, которые можно разделить на подсети.
resource "aws_vpc" "main" {
cidr_block = "10.0.0.0/16"
enable_dns_support = true
enable_dns_hostnames = true
tags = {
Name = "main-vpc"
}
}Общедоступные и частные подсети
Подсети разделяют диапазон VPC на меньшие блоки, связанные с зоной доступности.
- Общедоступная подсеть — имеет маршрут к интернет-шлюзу и используется для балансировщиков нагрузки и узлов-бастионов.
- Частная подсеть — не имеет прямого маршрута в интернет и подходит для баз данных и серверов приложений.
Создание общедоступной подсети
Каждой подсети нужны собственные CIDR (часть диапазона VPC) и зона доступности. Если установить map_public_ip_on_launch в значение true, экземплярам, запускаемым здесь, автоматически назначаются общедоступные IP-адреса.
resource "aws_subnet" "public" {
vpc_id = aws_vpc.main.id
cidr_block = "10.0.1.0/24"
availability_zone = "us-east-1a"
map_public_ip_on_launch = true
tags = {
Name = "public-subnet"
}
}Интернет-шлюз
Интернет-шлюз (IGW) позволяет ресурсам в общедоступной подсети выходить в интернет. Вы подключаете его непосредственно к VPC.
resource "aws_internet_gateway" "gw" {
vpc_id = aws_vpc.main.id
tags = {
Name = "main-igw"
}
}Таблицы маршрутов
Подсеть становится действительно общедоступной только после того, как таблица маршрутов направит трафик 0.0.0.0/0 к интернет-шлюзу. Таблицы маршрутов сопоставляют целевые CIDR с целями.
resource "aws_route_table" "public" {
vpc_id = aws_vpc.main.id
route {
cidr_block = "0.0.0.0/0"
gateway_id = aws_internet_gateway.gw.id
}
}Связывание маршрутов с подсетями
Таблицы маршрутов ничего не делают, пока не связаны с подсетью. Ресурс aws_route_table_association связывает их.
resource "aws_route_table_association" "public" {
subnet_id = aws_subnet.public.id
route_table_id = aws_route_table.public.id
}Группы безопасности как межсетевые экраны
Группа безопасности — это межсетевой экран с отслеживанием состояния вокруг экземпляра. Это означает, что ответный трафик на разрешённый входящий запрос разрешается автоматически, поэтому обычно достаточно указать только нужные входящие правила.
Определение группы безопасности веб-сервера
Ниже мы разрешаем входящий HTTP-трафик откуда угодно и весь исходящий трафик. В реальных развёртываниях максимально сужайте исходный CIDR.
resource "aws_security_group" "web" {
name = "web-sg"
vpc_id = aws_vpc.main.id
ingress {
from_port = 80
to_port = 80
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
}Подключение экземпляра к сети
Подключите подсеть и группу безопасности к экземпляру EC2 с помощью subnet_id и vpc_security_group_ids. Это поместит сервер в Вашу пользовательскую сеть.
resource "aws_instance" "app" {
ami = "ami-0abcd1234"
instance_type = "t3.micro"
subnet_id = aws_subnet.public.id
vpc_security_group_ids = [aws_security_group.web.id]
}Вывод идентификаторов сети
Предоставьте ключевые идентификаторы в виде выходных значений, чтобы после применения другие модули или ваша команда могли на них ссылаться.
output "vpc_id" {
value = aws_vpc.main.id
}
output "public_subnet_id" {
value = aws_subnet.public.id
}Быстрая проверка
Проверьте, насколько хорошо Вы понимаете маршрутизацию VPC.
Итоги: основа Вашей сети
Вы создали полноценную сеть в Terraform:
- aws_vpc с диапазоном CIDR.
- Подсети в разных зонах доступности — публичные или приватные.
- Шлюз Интернета и таблицы маршрутов для публичного доступа.
- Группы безопасности как брандмауэры с отслеживанием состояния.
Эта сеть — основа, к которой подключается любой другой ресурс AWS.
Часто задаваемые вопросы
Урок «Настройка VPC и сети» бесплатный?
Да — полный текст урока «Настройка VPC и сети» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.
Чему я научусь в уроке «Настройка VPC и сети»?
Создайте с помощью Terraform AWS Virtual Private Cloud, подсети и группы безопасности, чтобы обеспечить инфраструктуре безопасную изолированную сетевую основу. Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать DevOps Bootcamp?
Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Настройка VPC и сети»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке DevOps Bootcamp?
Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Настройка поставщика AWS
- Подготовка экземпляров EC2
- Управление корзинами S3 и IAM
- Настройка VPC и сети