上手教程:使用Terraform打造彈性VPC架構(gòu)
最近Akamai發(fā)布的虛擬專用云(VPC)功能提供了一種隔離的網(wǎng)絡(luò),讓云資源可以用私密的方式進(jìn)行通信。
延伸閱讀,點(diǎn)擊鏈接了解 Akamai Cloud Computing
關(guān)于Akamai VPC功能,最棒的地方在于它有著極高的靈活性。用戶可以通過Cloud Manager、開發(fā)人員工具(如CLI)或者基礎(chǔ)設(shè)施即代碼工具Terraform來添加計(jì)算實(shí)例。本文將告訴大家如何使用Terraform部署VPC并動(dòng)態(tài)添加子網(wǎng)。
使用Terraform的原因在于:我們可以在一個(gè)地方看到應(yīng)用程序的所有配置,從而方便地在另一個(gè)環(huán)境中復(fù)制這些資源,將資源移到不同的賬戶等。這等于為我們環(huán)境提中的資源提供了一種“單一事實(shí)來源”,有助于緩解配置漂移的情況。
先決條件
在開始后續(xù)操作之前,請(qǐng)確保自己滿足下列條件:
- 一個(gè)Linode賬戶。如果沒有,可以在這里免費(fèi)注冊(cè)一個(gè)。
- Linode v4 API的個(gè)人訪問令牌,Terraform需要使用此令牌與我們的Linode資源進(jìn)行交互。
- 在本地計(jì)算機(jī)上安裝了Terraform。
- 基本的命令行使用知識(shí)。
步驟1:創(chuàng)建Terraform配置文件
我們將從為Terraform設(shè)置Linode提供程序開始。為這個(gè)Terraform項(xiàng)目創(chuàng)建一個(gè)新目錄,并創(chuàng)建一個(gè)名為terraform.tf的文件。我們沒有從零開始構(gòu)建配置文件,而是利用了Terraform注冊(cè)表。
首先,在Terraform注冊(cè)表中找到Linode VPC。在頁(yè)面右側(cè),點(diǎn)擊“Use Provider”,并將下拉菜單中的代碼復(fù)制到我們自己的terraform.tf文件中。然后從VPC的“Example Usage”部分復(fù)制并粘貼代碼。
我們的配置文件看起來應(yīng)該是這樣的:
請(qǐng)注意:大家還需要替換這里列出的授權(quán)密鑰和Root密碼。
terraform {
required_providers {
linode = {
source = "linode/linode"
version = "2.13.0"
}
}
}
provider "linode" {
token = "your_api_token"
}
resource "linode_vpc" "test" {
label = "test-vpc"
region = "us-iad"
description = "My first VPC."
}
步驟2:部署配置文件
要部署配置文件,請(qǐng)運(yùn)行terraform plan,然后運(yùn)行terraform apply。
隨后,當(dāng)我們進(jìn)入云儀表板時(shí),會(huì)看到VPC已顯示在這里。
利用基礎(chǔ)設(shè)施即代碼方式來部署VPC,能在管理云基礎(chǔ)設(shè)施時(shí)提供更大的控制力、一致性、敏捷性和效率,同時(shí)還可有效降低人為錯(cuò)誤的可能性,讓部署變得更快速可靠。
步驟3:向VPC添加子網(wǎng)
向VPC添加子網(wǎng),這是設(shè)計(jì)一個(gè)有序、安全、可擴(kuò)展的云基礎(chǔ)設(shè)施的重要先決條件,而這也需要與我們的應(yīng)用程序和服務(wù)的具體需求保持一致。通過添加子網(wǎng),可以將我們的VPC邏輯分割成更小、更易管理的網(wǎng)絡(luò)。這種分割有助于根據(jù)功能、安全需求或其他因素對(duì)資源進(jìn)行分組。例如,我們可能會(huì)為Web服務(wù)器、數(shù)據(jù)庫(kù)和應(yīng)用程序組件分別設(shè)置單獨(dú)的子網(wǎng)。
子網(wǎng)還允許我們?cè)谧约旱腣PC內(nèi)有效地管理IP地址。每個(gè)子網(wǎng)在其指定的IP地址范圍內(nèi)運(yùn)行,有助于避免沖突,并提供了IP地址分配的結(jié)構(gòu)化方法。隨著基礎(chǔ)設(shè)施規(guī)模擴(kuò)大并部署更多資源,這種特性會(huì)變得越來越重要。
子網(wǎng)充當(dāng)了安全邊界,使我們能根據(jù)子網(wǎng)托管的資源的敏感性,為每個(gè)子網(wǎng)實(shí)施不同的安全措施。例如,我們可以對(duì)數(shù)據(jù)庫(kù)子網(wǎng)應(yīng)用比Web服務(wù)器子網(wǎng)更嚴(yán)格的安全規(guī)則。這也有助于實(shí)施最小權(quán)限原則。
子網(wǎng)還在VPC內(nèi)路由和優(yōu)化網(wǎng)絡(luò)流量方面發(fā)揮著關(guān)鍵作用。我們可以配置路由表,根據(jù)特定需求在不同子網(wǎng)之間引導(dǎo)流量。這種靈活性使我們能為自己的應(yīng)用程序設(shè)計(jì)最有效的通信路徑。
那么接下來,讓我們向VPC添加一些子網(wǎng)。為此請(qǐng)編輯terraform.tf文件,添加一個(gè)vpc_subnet資源塊。
請(qǐng)注意:我們需要替換成自己的vpc_id,這個(gè)信息顯示在云儀表板中。
resource "linode_vpc_subnet" "vpc-subnet-terraform-subnet-01" {
vpc_id = "your_vpc_id"
label = "vpc-subnet-terraform-subnet-01"
ipv4 = "192.168.1.0/24"
}
resource "linode_vpc_subnet" "vpc-subnet-terraform-subnet-02" {
vpc_id = "your_vpc_id"
label = "vpc-subnet-terraform-subnet-02"
ipv4 = "10.0.0.0/24"
}
運(yùn)行terraform apply來應(yīng)用這些更改。
這樣我們的VPC就有2個(gè)子網(wǎng)了。在Cloud Manager中可以看到這些變化:
注意事項(xiàng):
- 每個(gè)子網(wǎng)只應(yīng)有一個(gè)vpc_subnet資源塊。
- 同一VPC內(nèi)子網(wǎng)的IPv4地址范圍不能有重疊。
Akamai VPC與其他超大規(guī)模云服務(wù)商的差異之處
Akamai VPC有一個(gè)非常顯著的獨(dú)特之處:在定義子網(wǎng)時(shí)所具備的靈活性。在許多傳統(tǒng)的超大規(guī)模云服務(wù)提供商中,在這方面往往有一個(gè)嚴(yán)格的要求,即VPC中的所有子網(wǎng)必須共享相同的RFC1918范圍或塊。這基本上意味著:一旦為VPC設(shè)置了頂級(jí)CIDR范圍,其中的所有子網(wǎng)都將被限制在這個(gè)特定的地址空間內(nèi)。
然而,Akamai采用了一種不同的,并且更靈活多樣的方法。Akamai VPC允許每個(gè)子網(wǎng)存在于其自己的RFC1918范圍或塊中。這意味著用戶可以根據(jù)具體用例,以最適合的方式自由地設(shè)計(jì)自己的網(wǎng)絡(luò)架構(gòu)。例如,用戶可以在192.168/16空間中運(yùn)行一個(gè)子網(wǎng),而另一個(gè)子網(wǎng)在10/8空間中運(yùn)行,并且可以讓這兩個(gè)子網(wǎng)加入到同一個(gè)VPC中。
這種靈活性非常實(shí)用,尤其是當(dāng)我們的應(yīng)用程序或業(yè)務(wù)需求發(fā)生變化時(shí)。與一些超大規(guī)模云服務(wù)提供商施加的限制不同,Akamai VPC允許用戶動(dòng)態(tài)添加具有不同范圍的子網(wǎng)。因此,如果需求發(fā)生變化或應(yīng)用程序有所擴(kuò)展,用戶可以輕松地集成新的子網(wǎng),而不受預(yù)定義頂級(jí)CIDR范圍的限制。這種靈活性符合現(xiàn)代云架構(gòu)對(duì)多樣化網(wǎng)絡(luò)需求的要求,而這也使Akamai VPC顯得與眾不同,提供了與當(dāng)今云環(huán)境動(dòng)態(tài)的特性完美契合,并且可定制,可擴(kuò)展性的VPC功能。
—————————————————————————————————————————————————
如您所在的企業(yè)也在考慮采購(gòu)云服務(wù)或進(jìn)行云遷移,
點(diǎn)擊鏈接了解Akamai Linode的解決方案