HTTP應(yīng)用的版本和部署配置更改(測試版)

來源: cloudflare
作者:Garrett Galow
時間:2022-02-10
12829
本文隆重宣布有關(guān)一個HTTP應(yīng)用程序的封測。這是對HTTP流量進行安全測試和部署更改的新方式。

image7-9.png

我們今天隆重宣布有關(guān)一個HTTP應(yīng)用程序的封測。這是對HTTP流量進行安全測試和部署更改的新方式。HTTP應(yīng)用程序引入了配置版本控制,以及控制何時在Cloudflare的全球邊緣網(wǎng)絡(luò)上對HTTP流量進行更改的能力。尋求更大控制權(quán)的企業(yè)客戶應(yīng)聯(lián)系他們的客戶成功經(jīng)理以獲得訪問權(quán)。

管理配置時遇到的問題

自Cloudflare成立之初,網(wǎng)站和網(wǎng)絡(luò)應(yīng)用的管理一直通過我們所說的"區(qū)域"來完成,這源自于DNS區(qū)域的概念。雖然這種模式多年來為客戶提供了很好的服務(wù),但也確實在管理邊緣配置方面造成了困難,即:

1.客戶需手動設(shè)置暫存環(huán)境。

2.生產(chǎn)和暫存之間的配置存在偏移風(fēng)險。

在軟件開發(fā)過程中,您想在一個安全的環(huán)境中測試變化,以便在進入生產(chǎn)或影響實時流量之前對其進行驗證。在很多常見的軟件開發(fā)生命周期中,這意味著將更改部署到暫存或預(yù)生產(chǎn)環(huán)境中進行測試和驗證?,F(xiàn)在,客戶在Cloudflare上執(zhí)行此操作的最常見方式是使用由這些區(qū)域的主機名表示的兩個區(qū)域,例如:一個用于暫存,名為staging.example.com,一個用于生產(chǎn),名為example.com。這樣通過更改隔離解決了核心問題。在暫存區(qū)的錯誤不會影響生產(chǎn)流量。

然而,為了將已在暫存區(qū)成功驗證的變更應(yīng)用到生產(chǎn)中,客戶必須手動復(fù)制這些變更—或通過使用Cloudflare的Terraform Provider創(chuàng)建自動化處理程序。對很多客戶來說,需要執(zhí)行一個手動的“變更請求”過程。在此過程中,需要將所做的變更記錄在工單上。然后,會有人(通常是不同的人)收集工單,并必須根據(jù)人工提供的指示準(zhǔn)確地復(fù)制相同變更。這個過程很容易出錯:其中的每處錯誤都可能會導(dǎo)致中斷,具體取決于所涉及的變更。此外,暫存配置和生產(chǎn)配置之間的配置偏差可能會導(dǎo)致更大的復(fù)雜性。

我們希望客戶能夠在Cloudflare上安全可靠地管理其服務(wù)。為了解決上述問題,我們發(fā)布了相關(guān)HTTP應(yīng)用程序和路由規(guī)則。

HTTP應(yīng)用程序

HTTP應(yīng)用程序是一種根據(jù)使用情況(而不是按主機名)管理邊緣配置的方式。無論是處理營銷網(wǎng)站配置,還是處理內(nèi)部應(yīng)用程序,每個HTTP應(yīng)用程序都有目的。所有HTTP應(yīng)用程序均由各個版本的配置組成,每個版本代表著管理流量的設(shè)置快照—頁面規(guī)則、防火墻規(guī)則、緩存設(shè)置等。HTTP應(yīng)用程序內(nèi)部的每個版本的配置都與其他版本相獨立,但當(dāng)創(chuàng)建新版本時,其將作為之前版本的副本進行初始化。

路由規(guī)則

與區(qū)域不同,HTTP應(yīng)用程序的每個版本都與任何特定的主機名相獨立。那么,如果版本不像區(qū)域那樣與主機名綁定,那么您如何確定哪個版本的HTTP應(yīng)用程序會影響一組特定的流量呢?答案是路由規(guī)則。通過路由規(guī)則,您可確定適用于流量的HTTP應(yīng)用程序的版本,也就是主機名。路由規(guī)則由Cloudflare的規(guī)則集引擎提供支持,依靠使用條件性的“if then”規(guī)則,將Cloudflare賬戶中控制的主機名映射到配置版本中。例如,如果請求的主機名與“www.example.com”相匹配,那么就應(yīng)用第2版的營銷HTTP應(yīng)用程序。當(dāng)此規(guī)則在邊緣執(zhí)行時,邊緣將不應(yīng)用www.example.com的常規(guī)區(qū)域配置,而是使用第2版HTTP應(yīng)用程序中定義的配置。

路由規(guī)則支持兩種規(guī)則—暫存規(guī)則和生產(chǎn)規(guī)則。如上所述,兩者均采用主機名列表,但在創(chuàng)建暫存規(guī)則時,我們會額外使用一個過濾器,以便僅在流量發(fā)送到我們邊緣的特定IP時執(zhí)行該規(guī)則。這意味著您可在客戶不受影響的情況下,將流量發(fā)送到暫存IP處的www.example.com,以便安全地測試更改。更好的是,一旦您通過創(chuàng)建生產(chǎn)路由規(guī)則驗證了您的更改,完全相同的配置將應(yīng)用于您所有客戶的生產(chǎn)。

說的夠多了—讓我們來看看實際效果吧!

使用HTTP應(yīng)用程序安全地測試和部署更改

在這次演示中,我將扮演一位現(xiàn)有客戶的角色。我有一個為客戶提供服務(wù)的現(xiàn)有區(qū)域,想做出一些轉(zhuǎn)換規(guī)則的更改,以便重寫我的資產(chǎn)位置。然而,我并不擅長使用regex,如果犯錯,很可能會破壞我所有客戶的網(wǎng)站!我們將使用HTTP應(yīng)用程序和路由規(guī)則來制定、測試和推出更改,而不是直接在區(qū)域中做出更改。

首先,我將登錄到Cloudflare儀表板。在選擇賬戶后,側(cè)欄中將出現(xiàn)可用的HTTP應(yīng)用程序。做出選擇后,便可以創(chuàng)建第一個HTTP應(yīng)用程序。

image9-2.png

顯示HTTP應(yīng)用程序的空白狀態(tài)頁面的Cloudflare儀表板

要創(chuàng)建我的第一個HTTP應(yīng)用程序,我需為其起一個名字,并選擇一個預(yù)先存在的區(qū)域,在本例中為example.com。Cloudflare將使用該區(qū)域?qū)TTP應(yīng)用程序第一個版本的配置進行初始化。通過在該區(qū)域中復(fù)制現(xiàn)有設(shè)置,我便有了一個可使用的安全副本,且無需手動重建配置。

image4-26.png

顯示將創(chuàng)建名為“Example Application”的HTTP應(yīng)用程序并從example.com進行初始化的“創(chuàng)建應(yīng)用程序”屏幕。

選擇創(chuàng)建后,我便有了第一個HTTP應(yīng)用程序!現(xiàn)在,第一個版本正在創(chuàng)建之中。在幕后,Cloudflare將采用example.com的現(xiàn)有配置,并將其復(fù)制到該HTTP應(yīng)用程序的第1版。一旦成功復(fù)制,我就可開始對配置進行編輯。

image6-15.png

Example Application的版本列表,顯示正在創(chuàng)建版本1。

我可對該版本進行編輯,就像對任何區(qū)域進行編輯一樣。然而,還是有兩個重要區(qū)別。第一:我現(xiàn)在所做的任何更改都不會影響在Cloudflare邊緣的任何實時流量,因為我們還沒有創(chuàng)建任何路由規(guī)則將流量發(fā)送到這個版本的配置。第二:我們不允許通過HTTP應(yīng)用程序控制與一個區(qū)域相關(guān)的所有內(nèi)容,即:DNS記錄、SSL證書、Spectrum或負載平衡。

image8-8.png

版本1的轉(zhuǎn)換規(guī)則,顯示尚未創(chuàng)建任何規(guī)則。

在“規(guī)則”部分的轉(zhuǎn)換規(guī)則下,我創(chuàng)建了一個新規(guī)則,將資產(chǎn)的路徑重寫到正確位置。對于任何指向example.com/assets/*的請求,我們將路徑重寫為example.com/internal/files/assets/*。

image13.png

為第1版創(chuàng)建一個名為“重寫資產(chǎn)”的轉(zhuǎn)換規(guī)則。該規(guī)則將以“/assets/*”開始的請求的路徑替換為“internal/files/assets/*”。

image8-10.png

第1版的轉(zhuǎn)換規(guī)則顯示已創(chuàng)建了一個名為“重寫資產(chǎn)”的新規(guī)則。

就這點,我已做出了修改,但現(xiàn)在想測試一下。為此,我可以離開版本編輯部分,前往該HTTP應(yīng)用程序的路由規(guī)則。在這里,我可以創(chuàng)建規(guī)則,使現(xiàn)有流量通過這個版本的配置進行路由。

image12-3.png

Example Application的路由規(guī)則的空列表。

我將創(chuàng)建一個暫存規(guī)則,因為我想成為唯一一個測試這些變化而不影響任何客戶的人。請注意,當(dāng)創(chuàng)建暫存規(guī)則時,可用于測試該版本的IP將在規(guī)則創(chuàng)建屏幕中顯示。

image5-15.png

創(chuàng)建暫存路由規(guī)則,該規(guī)則將在請求匹配example.com并且邊緣IP為192.168.1.1或192.168.2.2時匹配,并將應(yīng)用版本1的配置

創(chuàng)建規(guī)則后,我可對計算機進行配置,將請求發(fā)送至example.com的IP。Rackspace有一個全面的指南,介紹如何更改本地機器的主機文件來做到這一點?,F(xiàn)在,當(dāng)我訪問example.com時,系統(tǒng)將執(zhí)行新的轉(zhuǎn)換規(guī)則,但對于訪問該網(wǎng)站的其他所有人來說,沒有任何變化。

image10-3.png

Example Application的路由規(guī)則,顯示已創(chuàng)建一個暫存規(guī)則。

一旦我確信更改有效,就可以創(chuàng)建一個生產(chǎn)路由規(guī)則,將這些修改應(yīng)用于發(fā)往example.com的所有流量—這樣工作就完成了!

image3-30.png

路由規(guī)則創(chuàng)建屏幕,顯示生產(chǎn)規(guī)則的創(chuàng)建,該規(guī)則將在請求匹配example.com時應(yīng)用版本1

更新后,我的網(wǎng)站的資產(chǎn)路徑將被重寫,用于所有對example.com的請求。

image1-61.png

Example Application的路由規(guī)則,顯示版本1的暫存和生產(chǎn)規(guī)則。

下一步是什么?當(dāng)我準(zhǔn)備做另一組修改時,可轉(zhuǎn)至HTTP應(yīng)用程序,復(fù)制第1版來創(chuàng)建第2版。最初,第2版將與第1版的配置完全匹配,但因其沒有匹配的路由規(guī)則,而不會應(yīng)用于任何流量。

image11-3.png

Example Application的版本列表,顯示版本1應(yīng)用于暫存和生產(chǎn),版本2準(zhǔn)備好進行編輯,但尚未在任何地方使用。

我現(xiàn)在可安全地編輯第2版,如同之前編輯第1版一樣。這次我想對防火墻規(guī)則做一些更改,這樣就可防止一些潛在的惡意流量訪問我的網(wǎng)站。在第2版中做出的更改不會修改邊緣處的任何流量,直到我更新暫存路由規(guī)則,才能使用第2版。這使我能夠放心地進行修改,然后安全地進行測試。

image2-46.png

Example Application的路由規(guī)則列表,顯示版本2用于暫存,而版本1仍用于生產(chǎn)。

在驗證這組新的更改之后,我可以通過更新生產(chǎn)的路由規(guī)則來使用第2版,將第2版推送給所有的流量。對于每一個后續(xù)的更改可應(yīng)用同一過程。

HTTP應(yīng)用程序現(xiàn)已進入封閉測試階段

借助HTTP應(yīng)用程序和路由規(guī)則的力量,客戶現(xiàn)在可更好地控制配置更改的方式和時間。這消除了您做出錯誤更改可能破壞網(wǎng)站的顧慮。為企業(yè)客戶提供的封閉測試版可使用這一功能,但如果您感興趣,請聯(lián)系您的Cloudflare賬戶團隊,了解如何獲得訪問權(quán)限!

立即登錄,閱讀全文
版權(quán)說明:
本文內(nèi)容來自于cloudflare,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個人觀點,不代表快出海對觀點贊同或支持。如有侵權(quán),請聯(lián)系管理員(zzx@kchuhai.com)刪除!
優(yōu)質(zhì)服務(wù)商推薦
更多
掃碼登錄
打開掃一掃, 關(guān)注公眾號后即可登錄/注冊
加載中
二維碼已失效 請重試
刷新
賬號登錄/注冊
個人VIP
小程序
快出海小程序
公眾號
快出海公眾號
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家