ผู้จัดจำหน่าย Google Cloud: ใช้เครื่องมือ Terraform เพื่อสร้างสถาปัตยกรรมเครือข่ายมาตรฐานบน GCP โดยอัตโนมัติใน10นาที
ในแวดวงการดำเนินงานและการบำรุงรักษาระบบคลาวด์สาธารณะมีคำพูดที่สมเหตุสมผลซึ่งถือได้ว่าเป็นมาตรฐาน:"
หากคุณคลิกปุ่มเดิมซ้ำๆมากกว่าสามครั้งในคอนโซลคุณควรเข้ารหัส
”
เพื่อนๆหลายคนที่ยังใหม่กับ Google Cloud (GCP) เมื่อต้องเผชิญกับโครงการเชิงพาณิชย์ใหม่เอี่ยมพวกเขามักจะล็อกอินเข้าสู่คอนโซลและเริ่มคลิกเมาส์: สร้าง VPC ที่กำหนดเองและแบ่ง Subnet (ซับเน็ต) สามภูมิภาคที่แตกต่างกัน) พร้อมไฟร์วอลล์เครื่องหมายเครือข่ายจำนวนมากสุดท้ายติดตั้งเกตเวย์ NAT ภายในเพื่อให้เครื่องเสมือนออนไลน์ได้อย่างปลอดภัย
ขั้นตอนชุดนี้ลงและโยนอย่างน้อยครึ่งชั่วโมงสิ่งที่เจ็บปวดกว่านั้นคือเมื่อบริษัทต้องการทดสอบสภาพแวดล้อมก่อนการออกสภาพแวดล้อมการผลิตและแม้แต่ภูมิภาคใหม่ในต่างประเทศ
การพิมพ์ซ้ำที่สมบูรณ์แบบ
เมื่อตั้งค่าเครือข่ายที่เหมือนกันคุณทำได้เพียงแค่เหงื่อออกและอธิษฐานว่าคุณจะไม่อ่านหน้ากาก IP บางอันในขณะที่อ่านเอกสารตราบใดที่คุณจับมือและชี้ผิดสถานที่สิ่งที่ตามมาคือการตรวจสอบข้อผิดพลาดและบ่อปลาที่ยาวนาน
ในระบบนิเวศ DevOps ของโรงงานที่ทันสมัยขนาดใหญ่มีนักฆ่าขั้นสูงสุดที่ยุติการดำเนินการและการบำรุงรักษารูปแบบการประชุมเชิงปฏิบัติการแบบดั้งเดิมนี้โดยสิ้นเชิงเรียกว่า
Terraform
。
ตรรกะหลักของมันสามารถสรุปได้เป็นสี่คำ:
โครงสร้างพื้นฐานที่เป็นรหัส (IaC,Infrastructure as Code)
。คุณไม่จำเป็นต้องคลิกเมาส์ใดๆเพียงแค่เขียนพิมพ์เขียวเครือข่ายของคุณลงในไฟล์ข้อความจากนั้น Terraform จะ "พิมพ์" ให้คุณอย่างถูกต้องและเป็นกลุ่มใน GCP ทั่วโลกภายใน10นาทีเช่นเครื่องพิมพ์สร้างชุดสถาปัตยกรรมเครือข่ายมาตรฐานที่ไม่เลว
วันนี้เราปฏิเสธการเทศนาแนวคิดใดๆและปฏิเสธเรื่องไร้สาระโดยตรงกับข้อกำหนดการผลิตของโครงสร้างข้ามชาติของโรงงานขนาดใหญ่เป็นมาตรฐานและมือจะพาคุณไปใช้ Terraform เพื่อสร้างอาคารสูงบนพื้นดินภายใน10นาที
ขั้นตอนที่1: การรื้อลึก "พระเจ้ามุมมองโลกแบบจำลอง" ของ IaC
ก่อนที่จะเขียนโค้ดบรรทัดแรกคุณต้องสร้างแบบจำลองโลกทางกายภาพที่เป็นพื้นฐานในใจของคุณมิฉะนั้นคุณจะต้อง
.ทีเอฟ
ไฟล์เวียนหัว
ปฏิสัมพันธ์ระหว่าง Terraform และ GCP เป็นกระบวนการวงปิดของ "การประกาศ-> การดำเนินการ":
ชั้นภาพวาด (Configuration Files,.Tf): ภาพวาดสถาปัตยกรรมเครือข่ายที่คุณเขียนในภาษา HCL (ภาษาการกำหนดค่าการประกาศที่อ่านง่าย) คุณเพียงแค่ต้องประกาศว่า "ฉันต้องการเครือข่ายที่เรียกว่า prod-vpc" และคุณไม่จำเป็นต้องสนใจว่าชั้นล่างสุดของ Google กำหนดเวลาผ่าน API อย่างไร
ตัวเชื่อมต่อ (Provider): นักแปล GCP ที่จัดทำโดย Terraform อย่างเป็นทางการมีหน้าที่ในการแปลภาพวาดที่คุณเขียนเป็นคำสั่ง RESTful API ที่สามารถเข้าใจได้ในพื้นหลังของ Google Cloud
ผลตอบรับจากโลกแห่งความจริง (State File, terrafform.tfsta
Te): นี่คือ "สมุดบัญชีหน่วยความจำ" ของ Terraform มันจะบันทึกทรัพยากรที่แท้จริงในระบบคลาวด์และจำนวน IP ในไฟล์ JSON เป็นแกนพื้นฐานที่ Terraform สามารถบรรลุ "การปรับเปลี่ยนที่เพิ่มขึ้นและไม่ทับซ้อนกัน"
ขั้นตอนที่สอง: วันก่อนการต่อสู้จริง-เปิดคลังกระสุนในพื้นที่
โปรดตรวจสอบให้แน่ใจว่าคุณได้ดาวน์โหลดและติดตั้ง Terraform CLI บนคอมพิวเตอร์ของคุณแล้วและได้รับการกำหนดค่าแล้ว
จีคลาวด์
เครื่องมือบรรทัดคำสั่ง
สร้างไดเร็กทอรีว่างใหม่บนคอมพิวเตอร์ในระบบชื่อ
Gcp-network-automation
。ในไดเร็กทอรีนี้เราต้องสร้างไฟล์หลักสามไฟล์ที่ตรงตามข้อกำหนดสถาปัตยกรรมของโรงงานขนาดใหญ่
ข้อบังคับโรงงานขนาดใหญ่ห้ามใส่ทุกอย่างลงในเอกสารโดยเด็ดขาด
เราต้องแยกส่วน:
Providers.tf: ใช้เพื่อจัดตำแหน่งรหัสลับกับ Google Cloud และระบุว่าเราต้องการใช้ทรัพยากรที่ใด
Variables.tf: คอนโซลตัวแปรภูมิภาคทั้งหมด ID โครงการและส่วนเครือข่าย IP จะได้รับการเปลี่ยนแปลงอย่างสม่ำเสมอที่นี่เพื่อให้สามารถใช้ชุดรหัสซ้ำได้ทุกที่
Main.tf: พิมพ์เขียวเครือข่ายหลัก
ขั้นตอนที่สาม: การฝึกซ้อมการต่อสู้จริง-การสร้างเครือข่ายแบบกลุ่มโค้ดด้วยมือ
จากนั้นปล่อยเมาส์ด้วยมือทั้งสองข้างและเตรียมพร้อมที่จะเริ่มการต่อสู้ความเร็วเครือข่าย10นาทีนี้ใน IDE ของคุณ (เช่น VS Code)
1.เขียนตัวเชื่อมต่อ
Providers.tf
ไฟล์นี้มีหน้าที่ในการเชื่อม Terraform กับโครงการ GCP ของคุณอย่างแน่นหนา
Terraform {
Required_version = ">= 1.5.0"
Required_providers {
Google = {
Source = "hashicorp/google"
Version = "~> 5.0 "# ล็อคเวอร์ชันขนาดใหญ่เพื่อป้องกันความไม่ลงรอยกันทางไวยากรณ์ที่เกิดจากการอัปเกรดอย่างเป็นทางการในอนาคต
}
}
}
Provider "google" {
Project = var. project_id
Region = var. main_region
}
2.เขียนตารางตัวแปร
Variables.tf
ลบพารามิเตอร์ทั้งหมดที่อาจเปลี่ยนแปลงได้และคุณจะต้องเปลี่ยนบรรทัดเดียวในเอกสารนี้ในอนาคตโดยไม่ต้องใช้พิมพ์เขียวหลัก
Variable "project_id" {
Type & n
Bsp; = string
Description = "รหัสโครงการ GCP ของคุณ"
Default = "my-automation-project-2026" # แทนที่ด้วย ID โครงการจริงของคุณเอง
}
Variable "main_region" {
Type = string
Description = "พื้นที่การปรับใช้ธุรกิจหลัก"
Default = "asia-east1" # ภูมิภาคไต้หวันความล่าช้าในการเยี่ยมชมในประเทศต่ำ
}
Variable "backup_region" {
Type = string
Description = "พื้นที่กู้คืนภัยพิบัติ"
Default = "asia-northeast1" # พื้นที่โตเกียวทำงานคู่ข้ามชาติพร้อมใช้งานสูง
}
3.เขียนพิมพ์เขียวเครือข่ายหลัก
Main.tf
นี่คือส่วนที่ไม่ยอมใครง่ายๆเราต้องการสร้างชุดในครั้งเดียวที่นี่:
VPC ที่กำหนดเอง1เครือข่ายย่อยข้ามชาติ2เครือข่ายไฟร์วอลล์ความปลอดภัยอินทราเน็ตที่แยกออกจากกันอย่างสมบูรณ์และชุดเกตเวย์ Cloud NAT ที่ช่วยให้เครื่องอินทราเน็ตสามารถดาวน์โหลดแพตช์ได้โดยไม่ต้องใช้รหัสผ่าน
。
Terraform
#1.สร้างหลังใหญ่: เครือข่าย VPC ที่กำหนดเอง
Resource "google_compute_network" "custom_vpc" {
Name = "prod-standard-vpc"
Auto_create_subnetworks = false # ข้อกำหนดด้านความปลอดภัยระดับโรงงานขนาดใหญ่: ปิดเครือข่ายอะตอมอัตโนมัติอย่างเด็ดขาดและต้องแบ่งและควบคุมโดเมน IP ด้วยตนเอง
Routing_mode = "GLOBAL" # เปิดการกำหนดเส้นทางทั่วโลกเพื่อให้เครือข่ายย่อยข้ามชาติสามารถสื่อสารกับอินทราเน็ตได้
}
#2.ตำแหน่งที่1: เครือข่ายย่อยธุรกิจหลักของไต้หวัน (ส่วนหน้าและแอปพลิเคชัน)
Resource "google_compute_subnetwork" "subnet_asia_ast" {
Name = "subnet-asia-fast-prod"
Ip_cidr_range = "10.0.1.0/24" #แบ่งออกเป็น254 IP อินทราเน็ตที่มีอยู่
Region = var. main_region
Network = google_compute_network.custom_vpc.id
Private_ip_google_access = true # ฉีดวิญญาณ: อนุญาตให้เครื่องอินทราเน็ตเชื่อมต่อกับ API อย่างเป็นทางการของ Google ได้อย่างปลอดภัยโดยไม่ต้องเชื่อมต่อกับ IP สาธารณะ
}
#3.ตำแหน่งที่2: เครือข่ายย่อยการกู้คืนภัยพิบัติระยะไกลของโตเกียว (ฐานข้อมูลหลักและการสำรองข้อมูล)
Resource "google_compute_subnetwork" "subnet_asia_northeast" {
Name = "subnet-asia-tokyo-backup"
Ip_cidr_range = "10.0.2.0/24"
Region = var. backup_region
Network = google_compute_network.custom_vpc.id
Private_ip_google_access = true
}
#4.เชื่อมประตูนิรภัย: สร้างไฟร์วอลล์รักษาความปลอดภัยอินทราเน็ต
Resource "google_compute_firewall" "allow_internal" {
Name = "allow-internal-mesh-traffic"
Network = google_compute_network.custom_vpc.name
Allow {
Protocol = "tcp"
}
Allow {
Protocol = "udp"
}
Allow {
Protocol = "icmp"
}
Source_ranges = ["10.0.0.0/16"] # ปล่อยให้เราเคาะกันภายในส่วนเครือข่ายขนาดใหญ่ของเราเองเท่านั้นและปิดกั้นการตรวจจับเครือข่ายสาธารณะทั้งหมดโดยสิ้นเชิง
Description = "อนุญาตเฉพาะเครือข่ายกระดูกสันหลังระหว่างสมาชิก VPC อินทราเน็ต"
}
#5.การก่อสร้างท่อทะเล: การกำหนดค่าเราเตอร์ Cloud Router
Resource "google_compute_router" "nat_router" {
Name = "prod-nat-router"
Region = var. main_region
เครือข่าย = google_compute_network.custom_vpc.id
}
#6.กำหนดค่าเกตเวย์ Cloud NAT ที่โฮสต์อย่างเต็มที่
Resource "google_compute_router_nat" "nat_gateway" {
Name = "prod-cloud-nat"
Router = google_compute_router.nat_router.name
Region = var. main_region
Nat_ip_allocate_option = "AUTO_ONLY" # Google กำหนด IP แบบคงที่ป้องกันภายนอกโดยอัตโนมัติ
Source_subnetwork_ip_ranges_to_nat = "ALL_SUBNETWORKS_ALL_IP_RANGES"
}
ขั้นตอนที่สี่: ช่วงเวลาแห่งการเป็นสักขีพยานในการเรียกใช้สายการประกอบคลิกเดียวบนคลาวด์
รหัสเสร็จแล้วต่อไปเราไปที่เทอร์มินัลและดำเนินการ "Trilogy of Clearance" ของ Terraform
ขั้นตอนที่1: การชุมนุมของกองกำลัง (เริ่มต้น)
ในไดเรกทอรีรากของโครงการเทอร์มินัลพิมพ์:
แบช
Terraform init
ในขณะนี้ Terraform จะไปที่สถานีมิเรอร์อย่างเป็นทางการโดยอัตโนมัติเพื่อดาวน์โหลดปลั๊กอิน Provider ที่เชื่อมต่อกับ GCP ลงในเครื่องเพื่อให้คอมพิวเตอร์ในเครื่องมีความสามารถในการควบคุม Google Cloud
ขั้นตอนที่2: การหักตารางทราย (ดูตัวอย่างแผน)
นี่เป็นขั้นตอนที่อยู่ยงคงกระพันที่สุดของ IaC ก่อนที่จะไปที่ก้อนเมฆเพื่อทำลายพื้นดินเรามาที่การฝึกซ้อมทางทหารที่ปลอดภัยอย่างแท้จริง:
แบช
Terraform plan
จ้องที่รายงานเอาต์พุตเทอร์มินัลจะใช้เครื่องหมายบวกสีเขียวแบบเต็มหน้าจอ (
) บอกคุณอย่างชัดเจน:
"หากคุณกดยืนยันฉันจะสร้างผลิตภัณฑ์เครือข่ายใหม่6รายการให้คุณในพื้นหลังการปรับเปลี่ยน0รายการและการทำลาย0รายการ"
ขั้นตอนที่3: เปิดอาวุธหนักอย่างเต็มที่ (ปุ่มเดียวคำรามบนเมฆ)
หลังจากยืนยันว่าภาพวาดนั้นสมบูรณ์แบบแล้วให้ออกคำสั่งสุดท้าย:
แบช
Terraform apply -auto-approve
แถบความคืบหน้าบนหน้าจอเริ่มเลื่อนอย่างบ้าคลั่ง Terraform ใช้ความถี่พร้อมกันที่หนาแน่นมากในพื้นหลังและในขณะเดียวกันก็เริ่มการโทรไปยัง API ของเครือข่ายกระดูกสันหลังทั่วโลกของ Google
โดยปกติจะต้องใช้เท่านั้น
15ถึง30วินาที
, เทอร์มินัลสุดท้าย
บรรทัดของเคล็ดลับทองจะปรากฏขึ้น:
Apply complete! Resources: 6 added, 0 changed, 0 destroyed.
。
คุณเข้าสู่ระบบในเวลานี้
คอนโซล GCP
เมื่อมองไปที่ตลาดเครือข่ายเครือข่ายระดับอุตสาหกรรมที่สมบูรณ์แบบพร้อมเครือข่ายย่อยที่ใช้งานหลายเครือข่ายข้ามพรมแดนเกตเวย์ NAT ของตัวเองและไฟร์วอลล์แยกได้ยืนอยู่บนเครือข่ายสาธารณะแล้วกระบวนการทั้งหมดไม่เสียเปล่าและทั้งหมดจะถูกทิ้งในเวลาไม่ถึง1นาที
ขั้นตอนที่ห้า: ประวัติการหลีกเลี่ยงเลือดและน้ำตาของการพัฒนา IaC ขนาดใหญ่ระดับองค์กร
โซลูชันระบบอัตโนมัตินี้ใช้งานได้ง่ายมากแต่ในสภาพแวดล้อมการผลิตที่ทำงานพร้อมกันสูงระดับองค์กรจริงการทำงานร่วมกันหลายทีมในฐานะหัวหน้าสถาปนิกคุณต้องเชื่อมข้อกำหนดด้านล่างสองข้อต่อไปนี้ให้กับทีมทันที:
1.ห้ามเก็บไว้ในพื้นที่โดยเด็ดขาด
Terraform.tfstate
(ความหายนะของการทำงานร่วมกันหลายคน)
โดยค่าเริ่มต้น Terraform จะถูกสร้างขึ้นในพื้นที่
Terraform.tfstate
เอกสาร.
เกิดภัยพิบัติ: หาก Zhang San และ Li Si ในทีมเรียกใช้แอพเทอร์ราฟอร์มบนคอมพิวเตอร์ของตนเนื่องจากบัญชีแยกประเภทในเครื่องของทั้งสองคนไม่ซิงโครไนซ์ Terraform จะตัดสินว่าสิ่งที่อีกฝ่ายเขียนเป็น "การบุกรุกที่ผิดกฎหมาย" และทำให้กันและกันคลั่งไคล้ในพื้นหลังทั่วโลกลบเซิร์ฟเวอร์และเครือข่ายที่อีกฝ่ายเพิ่งสร้างขึ้นด้วยคลิกเดียว
โซลูชันมาตรฐานของผู้ผลิตรายใหญ่: ต้องกำหนดค่า "Remote Backend" เพิ่มโค้ดสองสามบรรทัดใน providers.tf และบังคับให้ล็อกบัญชีแยกประเภทสถานะไว้ในที่เก็บข้อมูล GCS ของ Google:
Terraform
terraform {
Backend "gcs" {
Bucket = "my-company-tfstate-bucket" # ล็อคบัญชีแยกประเภทในลิ้นชักที่ปลอดภัยในระบบคลาวด์
Prefix = "terraform/state/network"
}
}
หลังจากการกำหนดค่าตราบใดที่ Zhang San กำลังรันโค้ดถังเก็บข้อมูลบนคลาวด์จะล็อค (ล็อค) โดยอัตโนมัติและ Li Si จะไม่ดำเนินการในเวลาเดียวกันอย่างแน่นอนกำจัดอุบัติเหตุที่น่าเศร้าที่เกิดจากความขัดแย้งของโค้ดหลายทีม
2.ฝึกฝนศิลปะการทำลายตนเองขั้นสูงสุดของ "ฟิสิกส์วิชชา"
เมื่อโครงการสิ้นสุดลงหรือเมื่อสภาพแวดล้อมการพัฒนาและการทดสอบสิ้นสุดลงในวันศุกร์และจำเป็นต้องปิดการถอนเงินชั่วคราวอย่าไปที่คอนโซลเพื่อลบทีละรายการ
คำแนะนำการหยุดการสูญเสียแบบฮาร์ดคอร์: เคาะโดยตรงในเทอร์มินัล:
การทดสอบอัตโนมัติของ Bashterraform ใช้เวลาเพียง30วินาที Terraform จะลบผลิตภัณฑ์เครือข่ายทั้ง6รายการบนภาพวาดออกจากห้องคอมพิวเตอร์ของ Google อย่างหมดจดโดยไม่ทิ้งมุมอับโดยสิ้นเชิง
ยุติการเรียกเก็บเงินราคาสูงที่ไม่ได้ใช้งานในช่วงสิ้นเดือนที่เกิดจากการพลาดเกตเวย์บางอย่าง
สรุป
การใช้เครื่องมือ Terraform เพื่อสร้างสถาปัตยกรรมเครือข่าย GCP โดยอัตโนมัติเป็นชุดสาระสำคัญระดับอุตสาหกรรมหลักอยู่ที่16คำ:
การประกาศรูปวาดการแยกตัวแปรการล็อคระบบคลาวด์การทำลายตัวเองด้วยคลิกเดียว
。
คุณได้กำจัดสถานะการทำงานและการบำรุงรักษาแบบดั้งเดิมของคอนโซลจุดโชคในอดีตโดยสิ้นเชิงและสร้างความหวาดกลัวให้กับหน้ากากของมนุษย์เปลี่ยนโครงสร้างพื้นฐานทั้งหมดให้เป็นรหัสที่สะอาดซึ่งสามารถควบคุมเวอร์ชันได้ (คำสั่ง Git) ปล่อยให้สถาปัตยกรรมเครือข่ายสามารถคัดลอกและย้อนกลับได้อย่างไร้ขีดจำกัดเช่นซอฟต์แวร์นี่คือท่าทางการควบคุมที่แท้จริงและสง่างามที่สุดของสถาปนิกระบบคลาวด์สมัยใหม่เมื่อพวกเขาเดินทางในทะเล

