久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Docker+Rancher如何創建集成環境

158次閱讀
沒有評論

共計 5131 個字符,預計需要花費 13 分鐘才能閱讀完成。

這篇文章主要為大家展示了“Docker+Rancher 如何創建集成環境”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓丸趣 TV 小編帶領大家一起研究并學習一下“Docker+Rancher 如何創建集成環境”這篇文章吧。

之前《構建環境容器化》和《創建持續集成流水線》,我們使用 Docker 創建了一個集中管理的構建環境,它可以應用到任意數量的機器上。接著,我們將環境設置到了 Jenkins CI 上,自動化處理了源代碼的持續構建、打包和測試。在本章中,我們將進一步對流水線進行研究(如下所示),了解如何將項目持續部署到一個長時間運行的測試環境中。除了自動驗收測試外,它還將允許人工測試代碼。有了這樣的環境,你就可以在產品投入生產之前讓你的客戶或者 QA(質量管理員)看到最新的變化。此外,它還是一個構建和部署到生產環境的好方法,我們將這一章中進行介紹。

創建應用程序環境

在我們構建并且測試了應用程序后,可以將它部署到一個長期運行的、潛在面向外部的環境中。這種環境要允許客戶或者 QA 在產品投入生產前查看和測試最新的更改,它也是生產過程中一個重要步驟。有了它,我們能夠發現在自動化集成測試中會隱藏起來、只有在真實環境才能發現的 bug。我們通常把這樣的環境稱為 QA 或集成環境,當然你也可以自己命名。我們將通過以下步驟來創建集成環境:

在 Rancher 中創建一個集成環境

定義 Docker Compose 以及 Rancher Compose 模板

用 Rancher 創建應用程序堆棧

用 Rancher 和 AWS Route53 管理 DNS 記錄

添加對 HTTPS 的支持

在 Rancher 中創建一個集成環境

在 Rancher UI 中,在左上角選擇 Manage Environments 以及 Add Environment,會出現下面屏幕顯示的內容,添加 Name(Integration),給每個環境添加一定的描述。你還需要選擇有權訪問環境的用戶和組織清單。

在環境設置好后,在屏幕左上角的下拉菜單中選擇 Integration(集成)環境。現在我們可以為集成環境創建應用程序堆棧了。在這之前,我們先了解一下 Rancher 部署的 API 密鑰。從頂部菜單中選擇 API Key,接著 Add Account API Key。會出現一個彈出式屏幕,在這里你可以創建一個命名的 API 密鑰對。在后續步驟中我們需要使用到 Rancher Compose 創建測試環境。我們將創建名為 JenkinsKey 的密鑰對,由 Jenkins 實例運行 Rancher Compose。記得要留下密鑰(access key)和密碼(secret key)以備后用,之后不會再顯示這些值了。請注意,API 密鑰匙是針對于特定環境的,因此需要為每個環境創建一個新密鑰。

定義 Compose 模板

在上篇文章中,我們創建了一個 Docker Compose 模板定義我們的項目所需的容器類型。Compose 模板(docker-compose.yml)如下圖所示。現在我們將使用與之前相同的 Docker Compose 模板,不過增加了 auth-lb 服務。這會在我們的 go-auth 服務前添加一個負載均衡器,并將所有運行該服務的容器的流量分開。在服務前添加一個負載均衡器對于確保可用性和擴展性來說至關重要,因為即使一個(或多個)服務容器死亡,它依然能夠提供流量。另外,它還能將負載擴展到多個容器上,這些容器可能在多個主機上運行。我在本文中使用的 Rancher 舊版本不支持 3 版本的 compose 文件,因此我們必須要設置版本為 2,刪除錯誤的環境變量,修正 go-auth 的版本。

我們在多主機環境中使用的是 Rancher Compose 啟動環境,這樣更貼近生產環境,允許我們測試和各種服務的集成,例如 Rancher 和 Docker Hub 等等。和我們之前不同,我們以前基于 Docker Compose 的環境是明確設計成獨立于外部服務,在 CI 服務器本身上啟動的,無需將鏡像推送到 dockerhub。

現在我們使用 Rancher Compose 啟動一個多主機測試環境來代替 Docker Compose,我們還需要定義一個 rancher compose 模板。創建一個叫做 rancher-compose.yml 的文件,添加以下內容。在這個文件中,我們定義了兩個需要用到 auth-service 的容器、一個運行數據庫的容器以及另一個運行負載均衡器的容器。

接下來我們將向 auth-service 中添加一個健康檢查(health check),確保我們可以檢測到容器何時啟動以及能夠響應請求。為此,我們使用 go-auth 服務的 /health URI。rancher-compose.yml 的 auth-service 部分現在應該是這樣的:

我們現在給每 2 秒(2000 毫秒)運行的服務容器的 9000 端口定義一個健康檢查。該檢查會向 /health URL 發出 http 請求,連續 3 次檢查失敗會將容器標記為不健康,而 2 次成功則標記為健康。

同樣,我們需要將 lb_config 部分添加到負載均衡器 rancher-compose.yml 文件中,讓它知道針對哪個服務(GoAuth),需要公開哪些端口,以及如何驗證負載均衡器之后實例的健康情況。rancher-compose.yml 文件的 auth-lb 部分應該如下所示:

用 Rancher CLI 創建一個應用程序堆棧

現在我們定義好了模板,就可以使用 Rancher Compose 來啟動我們的環境了。接下來,只需要檢出 go-message 項目并從 Rancher UI 中下載 Rancher CLI 即可。關于如何在開發機器上設置 rancher-compose,可以參考這里的說明:

https://rancher.com/docs/rancher/v1.5/en/cattle/rancher-compose/。運行 ./rancher config 為接下來的命令指定 rancher url、access key、secret key 和默認環境。

在 Rancher CLI 設置好后,你可以使用下面的創建命令來設置你的集成環境。這里的命令是假設 docker-compose.yml 和 rancher-compose.yml 文件是在當前目錄下的。

在 UI 中,你現在應該能夠看到你的項目的堆棧和服務了。注意,create 命令在創建堆棧的同時還會啟動所有的服務。

要確保一切正常,找到運行“authlb”服務的主機的公共 IP,使用下面的命令創建一個用戶。你應該會得到 200 OK 的回復,而重復上述請求會返回 409 錯誤,提示與數據庫現有用戶出現沖突。到這為止,我們就為應用程序提供了一個基本的集成環境,這也是一個長期運行的環境。

管理 DNS 記錄

現在這個環境是需要長期運行并且對外開放的,我們將會使用 DNS 條目以及 HTTPS。這樣我們能夠安全地在企業防火錢之外分發應用程序,并允許更多的臨時用戶依賴持久的 DNS 而不是可能會改變的 IPs。你可以使用你所選擇的 DNS 提供者。而我們在這里將演示如何在 Amazon Route53 中設置 DNS 條目。進入到 AWS Console Route53 Hosted Zones,選擇 Create Hosted Zone。在 hosted zone(托管區域)中,你需要指定你選擇的域名(比如 gomessenger.com)。當你在 AWS Console 中時,你還可以為 Rancher 創建用戶進行 Route53 的更新。轉到 AWS Console IAMS Users,選擇 Create New Users。記住用戶的 Access Key 和 Secret Key,之后我們還會使用到。在用戶創建后,你需要將 AmazonRoute53FullAccess 策略添加到用戶中,這樣它就可以對 route53 進行更新。

現在我們已經有了 Hosted Zone 以及 IAMs 用戶設置,我們可以將 Route53 集成添加到我們的 Rancher Server(rancher 服務器)。有關如何操作的詳細說明可以在這里找到:https://rancher.com/introducing-rancher-service-discovery-integration-with-amazon-route53/。簡而言之,你需要在 rancher 服務器上瀏覽 Catalog Library 并選擇 Route 53 DNS。系統會要求你指定之前設置的 Hosted Zone,以及具有 Route53 訪問權限的 Rancher IAMs 用戶的 AWS Access 和 Secret Keys。輸入信息并且單擊創建后,你應該能看到在你的環境中有一個包含 route53 服務的新堆棧。

Docker+Rancher 如何創建集成環境

該服務會監聽 Rancher 事件,捕獲任何任何負載均衡器實例的啟動和終止。有了這些信息,它將自動為所有運行負載均衡器容器的主機創建 DNS 條目。DNS 條目的格式是 [Loadbalancer].[stack].[env].[domain],比如:

goauth.integration.testing.gomessenger.com.

隨著越來越多的容器在各個 Rancher 計算節點上啟動與關閉,Route53 服務將保持 DNS 記錄的一致性。這對我們的集成測試環境來說至關重要,我們稍后就會看到它的重要性。我們需要重新啟動環境容器來,以便將更新作為持續部署的一部分。通過使用 Route53 DNS 集成,我們不必再為給我們的客戶和測試人員獲取最新主機名而擔心了。

啟用 HTTPS

在為我們的環境創建 DNS 記錄后,讓它支持 HTTPS 協議會是一個不錯的選擇。首先,我們需要拿到我們域名的 SSL 證書。你可以從很多可信任的證書頒發機構中選擇一個購買域名的 SSL 證書。如果你沒有證書,可以生成自簽名(self-signed)證書來完成設置,在一段時間后把它更換成可信任的證書。自簽名證書的含義是:任何用戶都會在瀏覽器中看到“此連接不可信”的警告,但通信仍然是加密的。那么要生成自簽名證書,首先需要生成 ssl 密鑰,它可以由 openssl 的 genrsa 命令實現。然后你可以用這個密鑰文件,使用 req 命令生成證書。下面列出了這一步驟。你也可以將證書的 sha256 指紋打印并儲存下來,這樣就手動地保證了在發出 HTTPS 請求時向你顯示相同的證書。在缺少可信證書的情況下,手動匹配指紋是避免中間人攻擊的唯一方法。

Docker+Rancher 如何創建集成環境

現在你已經擁有了證書和私鑰文件,下面需要講這些文件上傳到 Rancher 中。我們可以在 Rancher UI 的 Infrastructure 選項卡,單擊 Certificates 部分的 Add Certificate 按鈕上傳證書。你還需要給你的證書起一個有意義的名稱,填寫描述。接著分別在 Private Key 和 Certificate 字段復制粘貼 integration.gomessenger.com.key 和 integration.gomessenger.com.crt 的內容(或者選擇 Read from File 從文件讀取)。在完成了表單后,點擊保存,等待片刻證書便生效了。

Docker+Rancher 如何創建集成環境

證書激活之后,我們可以將 HTTPS 端點添加到我們的環境中。想要做到這一點,我們必須修改 rancher-compose 文件,讓它包含 SSL 端口配置。我們將第二個端口(9001)添加到 ports 部分,讓我們的環境可以在負載均衡器之外訪問,并且使用 io.rancher.loadbalancer.ssl.ports 標簽指定 9001 是具有 SSL 終止的公共負載均衡器端口。

此外,因為我們在負載均衡器處終止了 SSL,我們可以使用原 9000 端口上的常規 HTTP 將請求發送到我們的實際服務容器中。我們使用了 io.rancher.loadbalancer.target.auth-service 標簽來指定從 9001 到 9000 的映射。

Docker+Rancher 如何創建集成環境

我們還需要更新 rancher-compose 文件指定 SSL 證書,該證書是我們在負載均衡器服務中針對 SSL 終止要使用的。將我們之前上傳的證書名稱添加到 default_cert 上。有了這些更改,你還需要刪除并重新創建堆棧,這是因為目前還沒有辦法將這些屬性添加到已有的堆棧上。

Docker+Rancher 如何創建集成環境

現在可以使用 curl 命令確保一切正常了。當你使用 https 協議說明符和 9001 端口嘗試相同的命令時,應該會看到一個 failure,說你使用了一個不受信任的證書。你可以使用 –insecure 開關關閉可信證書檢查,并且在沒有證書的情況下使用 https。

以上是“Docker+Rancher 如何創建集成環境”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注丸趣 TV 行業資訊頻道!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-16發表,共計5131字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 大方县| 平度市| 武强县| 德庆县| 江永县| 株洲县| 隆安县| 陆川县| 滕州市| 玛沁县| 什邡市| 兰州市| 雅江县| 东明县| 虎林市| 商洛市| 潜江市| 绩溪县| 会东县| 永胜县| 永嘉县| 甘泉县| 阳新县| 阿拉善盟| 雅江县| 油尖旺区| 进贤县| 乌兰县| 右玉县| 朔州市| 阿勒泰市| 云和县| 嘉鱼县| 扎囊县| 边坝县| 托克逊县| 宜兰县| 巴里| 昭通市| 资阳市| 灵山县|