Akamai App Platform上手指南
Akamai App Platform(Akamai應(yīng)用平臺(tái))已于最近正式推出!這是Akamai圍繞Linode Kubernetes Engine(LKE)提供的一鍵式擴(kuò)展解決方案,可供用戶在使用Kubernetes時(shí)輕松添加以開發(fā)者和運(yùn)維為中心的工具,從而實(shí)現(xiàn)自動(dòng)化的自助服務(wù),借此簡化應(yīng)用程序的生命周期工作。簡單來說,Akamai App Platform能將Cloud Native Computing Foundation(CNCF,云原生計(jì)算基金會(huì))所提倡的很多技術(shù)緊密連接在一起,為用戶提供直接價(jià)值。
延伸閱讀,點(diǎn)擊鏈接了解 Akamai Cloud Computing
本文將介紹使用Akamai App Platform配置LKE集群的步驟,以及如何在此基礎(chǔ)上構(gòu)建、部署并發(fā)布應(yīng)用。
使用Akamai App Platform配置Kubernetes集群
Akamai App Platform目前還處于Beta測試階段。在上手使用前,首先請登錄或注冊一個(gè)Akamai云計(jì)算賬戶,然后在Beta測試頁面注冊參加測試計(jì)劃。
加入測試計(jì)劃后,從左側(cè)導(dǎo)航菜單選擇Kubernetes,然后選擇Create Cluster(創(chuàng)建集群)。在隨后出現(xiàn)的Create a Kubernetes Cluster(創(chuàng)建Kubernetes集群)頁面設(shè)置下列選項(xiàng):
- 在Cluster Label(集群標(biāo)簽)字段輸入集群名稱。該名稱在當(dāng)前賬戶下的所有群集中必須是唯一的,使用Cloud Manager儀表板時(shí),我們需要通過該名稱來區(qū)分自己名下的不同集群。
- 從下拉菜單中選擇區(qū)域。
- 從下拉菜單中選擇要部署到集群的Kubernetes版本。
- 在App Platform for LKE選項(xiàng)下,選擇Yes, enable App Platform for LKE(是的,啟用App Platform for LKE)。
- 在Add Node Pools(添加節(jié)點(diǎn)池)選項(xiàng)下,選擇構(gòu)成LKE集群的Linode工作節(jié)點(diǎn)要使用的硬件資源。在Beta測試階段,App Platform for LKE要求節(jié)點(diǎn)池至少包含3個(gè)工作節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)至少有16 GB內(nèi)存。目前不支持使用共享CPU。
- 選擇Add(添加),將節(jié)點(diǎn)池納入配置。
- 將節(jié)點(diǎn)池添加到配置之后,該節(jié)點(diǎn)池將會(huì)顯示在Cloud Manager右側(cè)的Cluster Summary(集群摘要)中,其中還會(huì)詳細(xì)列出集群的硬件資源和每月成本。
- 如果對(duì)集群的配置滿意,請點(diǎn)擊右側(cè)的Create Cluster(創(chuàng)建集群)。隨后會(huì)顯示集群詳情頁以及節(jié)點(diǎn)池信息。
隨后將開始創(chuàng)建LKE集群,并在準(zhǔn)備就緒后自動(dòng)安裝App Platform。App Platform for LKE安裝過程大約需要10到15分鐘。安裝完成后,Portal Endpoint(門戶端點(diǎn))URL會(huì)顯示在集群詳情頁App Platform for LKE選項(xiàng)下。安裝進(jìn)度會(huì)每60秒刷新一次。如果安裝仍在進(jìn)行中,則不會(huì)顯示門戶端點(diǎn)URL,而是會(huì)顯示“安裝進(jìn)行中”字樣。
當(dāng)LKE群集和App Platform均已就緒后,請單擊所顯示的門戶端點(diǎn)URL:
隨后將會(huì)看到如下圖所示的登錄頁面:
登錄前需要先準(zhǔn)備好初始憑據(jù)。請?jiān)诩涸斍轫摯蜷_“省略號(hào)”選項(xiàng)菜單,然后選擇Download Kubeconfig(下載Kubeconfig)。該文件會(huì)保存到電腦的“下載”文件夾中。
隨后在電腦上打開終端Shell,運(yùn)行如下命令將剛才下載的Kubeconfig文件的路徑保存到$KUBECONFIG環(huán)境變量中。在本例中,Kubeconfig文件位于Downloads文件夾里,不過大家可能需要根據(jù)實(shí)際情況修改具體路徑。
export KUBECONFIG=~/Downloads/kubeconfig.yaml
接著執(zhí)行如下命令獲取用戶名:
kubectl get secret platform-admin-initial-credentials -n keycloak --template={{.data.username}} | base64 -d
并執(zhí)行如下命令獲取密碼:
kubectl get secret platform-admin-initial-credentials -n keycloak --template={{.data.password}} | base64 -d
接下來就可以使用上述憑證登錄控制臺(tái)并更改初始密碼了。
為App Platform配置對(duì)象存儲(chǔ)
登錄到控制臺(tái)后,我們首先需要配置對(duì)象存儲(chǔ)。系統(tǒng)會(huì)顯示一條消息,詢問是否讓App Platform為我們配置對(duì)象存儲(chǔ)。
對(duì)象存儲(chǔ)并非必須的,但強(qiáng)烈建議使用,因?yàn)檫@樣可防止在為集成的應(yīng)用程序使用存儲(chǔ)卷時(shí)出現(xiàn)磁盤空間不足的錯(cuò)誤。使用對(duì)象存儲(chǔ)還能為平臺(tái)使用的所有數(shù)據(jù)庫和Git倉庫創(chuàng)建備份。
如果不想讓App Platform為我們配置對(duì)象存儲(chǔ),請選擇Skip for Now(暫時(shí)跳過)。請注意,如果跳過該步驟,數(shù)據(jù)庫備份等功能將不可用。不過我們可以隨時(shí)在Maintenance(維護(hù))選項(xiàng)下啟動(dòng)一個(gè)向?qū)砼渲脤?duì)象存儲(chǔ)。
- 單擊Yes(是)。
- 按照屏幕提示創(chuàng)建Personal Access Token(個(gè)人訪問令牌),請務(wù)必為Object Storage類別選擇Read/Write(讀/寫)權(quán)限。記得將API令牌信息復(fù)制出來。
- 將剛才復(fù)制的訪問令牌粘貼到向?qū)?,并選擇要將存儲(chǔ)桶創(chuàng)建到哪個(gè)區(qū)域:
- 隨后單擊Submit(提交)。
- 隨后還需要在賬戶中創(chuàng)建需要的所有對(duì)象存儲(chǔ)桶和訪問密鑰,App Platform將使用這些存儲(chǔ)桶來存儲(chǔ)備份、日志、指標(biāo)、跟蹤結(jié)果和映像信息。我們提供的個(gè)人訪問令牌信息不會(huì)被存儲(chǔ)起來。創(chuàng)建好的存儲(chǔ)桶將采用類似lke<cluster-id>為前綴的命名方式。
- 啟用Harbor
- 對(duì)象存儲(chǔ)配置完成后,即可啟用構(gòu)成App Platform所需的所有應(yīng)用程序。下文將從源代碼構(gòu)建映像,因此需要啟用Harbor應(yīng)用程序,因?yàn)闃?gòu)建自助服務(wù)的功能需要使用Harbor來存儲(chǔ)所有容器映像。
- 在左側(cè)菜單中單擊Apps(應(yīng)用程序)。
- 將鼠標(biāo)懸停在Harbor應(yīng)用程序上,單擊啟用按鈕。
- 在左上角單擊Deploy Changes(部署變更)。
- 隨后即可安裝并配置Harbor。
創(chuàng)建Team
接下來還需要?jiǎng)?chuàng)建一個(gè)Team。Team可以理解為平臺(tái)上的一個(gè)租戶,類似于一個(gè)可以充當(dāng)服務(wù)的命名空間。每個(gè)Team都可以有自己的成員,成員可以訪問控制臺(tái),使用所有自助服務(wù)功能。我們將通過后續(xù)文章詳細(xì)介紹Team功能。現(xiàn)在,先來創(chuàng)建一個(gè)Team:
- 在頁面頂部的View(視圖)中選擇Platform(平臺(tái))。
- 單擊左側(cè)菜單中的Teams。
- 單擊Create Team(創(chuàng)建Team)。
- 為Team設(shè)置名稱。本例中我們使用“demo”作為名稱。請注意,Team名稱最多可包含12個(gè)字符,隨后創(chuàng)建的命名空間將以“team-<team-name>”為名。
- 跳過所有其他選項(xiàng),然后單擊Submit(提交)。
- 單擊控制臺(tái)左上角的Deploy Changes(部署變更)。
創(chuàng)建倉庫
至此我們已經(jīng)創(chuàng)建了一個(gè)Team,隨后可以切換到Team視圖,然后添加成員。在Team視圖中,為名同樣可以在左側(cè)菜單中看到Apps選項(xiàng),這一點(diǎn)與Platform視圖是一樣的。Team視圖中會(huì)顯示App Platform上所有Team的共享應(yīng)用,以及當(dāng)前Team的專用應(yīng)用。
所有成員都可以訪問Team中的應(yīng)用。因?yàn)槲覀円獎(jiǎng)?chuàng)建一個(gè)映像,因此首先要?jiǎng)?chuàng)建一個(gè)帶有簡單應(yīng)用的倉庫,例如使用Nginx展示HTML單頁:
- 點(diǎn)擊Gitea應(yīng)用程序。Gitea是App Platform上運(yùn)行的自托管Git服務(wù),隨時(shí)可供我們使用。
- 選擇Sign In with OpenID(使用OpenID登錄):
- 選擇+ New Repository(新建倉庫):
- 為倉庫設(shè)置名稱,例如“demo”。
- 選擇Make Repository Private(設(shè)置為私有倉庫),然后選擇Initialize Repository(初始化倉庫)。
- 點(diǎn)擊Create Repository(創(chuàng)建倉庫)。
隨后可以在倉庫中添加一些代碼。我們將使用Nginx創(chuàng)建一個(gè)簡單的HTML單頁應(yīng)用程序。
為此可以創(chuàng)建一個(gè)包含以下內(nèi)容的demo.html文件:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Sample Deployment</title>
<style>
body {
color: #ffffff;
background-color: #0099cc;
font-family: Arial, sans-serif;
font-size: 14px;
}
h1 {
font-size: 500%;
font-weight: normal;
margin-bottom: 0;
}
h2 {
font-size: 200%;
font-weight: normal;
margin-bottom: 0;
}
.centered-text {
text-align: center;
}
</style>
</head>
<body>
<div class="centered-text">
<h1>Welcome to the App Platform</h1>
</div>
</body>
</html>
并在Dockerfile文件中添加如下的內(nèi)容:
FROM nginxinc/nginx-unprivileged:stable
COPY demo.html /usr/share/nginx/html/index.html
EXPOSE 8080
構(gòu)建、部署并發(fā)布應(yīng)用
接下來我們需要構(gòu)建、部署并發(fā)布應(yīng)用。針對(duì)這些工作,App Platform提供了一組自助服務(wù)表單。為名可以使用名為“Builds”的自助服務(wù)表單從源代碼構(gòu)建映像,使用Catalog中的快速入門Helm模板部署應(yīng)用程序,并使用“Services”自助服務(wù)表單發(fā)布應(yīng)用程序。
步驟1:構(gòu)建映像
- 在頂部的View中選擇Team。請注意:當(dāng)前我們是以平臺(tái)管理員身份登錄的,因此可以同時(shí)看到Platform和Team視圖。
- 單擊左側(cè)菜單中的Builds(構(gòu)建)。
- 單擊Create Build(創(chuàng)建構(gòu)建)。
- 為構(gòu)建添加名稱,本例將以“demo”為名。
- 使用(default) Docker Build模式,并添加剛才創(chuàng)建的Git倉庫的URL。在App Platform的下一個(gè)版本中,為我們將可以從可用倉庫列表中選擇要使用的倉庫URL。
- 單擊Submit(提交)。
- 單擊左側(cè)菜單欄頂部的Deploy Changes(部署變更)。
App Platform將會(huì)創(chuàng)建并運(yùn)行Tekton管道,從倉庫中克隆應(yīng)用程序,構(gòu)建映像,并將映像推送到Harbor。映像將被推送到Harbor的私有注冊表,只有Team成員才能訪問。
隨后我們就可以打開Apps選項(xiàng)下的Tekton儀表板(在Team視圖下?。谶@里可以了解構(gòu)建的進(jìn)行狀態(tài),還可以點(diǎn)擊左側(cè)菜單中的Builds選項(xiàng),在這里查看每個(gè)項(xiàng)目所創(chuàng)建的構(gòu)建。點(diǎn)擊PipelineRun鏈接即可查看構(gòu)建狀態(tài)。
管道準(zhǔn)備就緒后,即可在Harbor中看到映像了。進(jìn)入左側(cè)菜單的Apps選項(xiàng),點(diǎn)擊Harbor。請注意:我們是以平臺(tái)管理員身份登錄的,因此會(huì)看到App Platform創(chuàng)建的所有項(xiàng)目。點(diǎn)擊所創(chuàng)建的團(tuán)隊(duì)項(xiàng)目,在這里可以看到一個(gè)名為team-demo/demo的資源庫。
步驟2:創(chuàng)建用于部署映像的工作負(fù)載
- 首先進(jìn)入Builds列表,復(fù)制映像的倉庫名:
- 隨后單擊左側(cè)菜單中的Catalog(目錄)。
- 在Catalog中單擊Quickstart-K8s-Deployment圖表。
- 單擊Values(值)選項(xiàng)卡。
- 為工作負(fù)載設(shè)置名稱,例如“demo”。
- 在Chart values文件中,將image.repository設(shè)置為剛才復(fù)制到剪貼板中的注冊表名稱,并將image.tag設(shè)置為latest。
- 單擊底部的Submit(提交)。
- 單擊左側(cè)菜單欄頂部的Deploy Changes(部署變更)。
隨后App Platform將創(chuàng)建部署應(yīng)用所需的Argo CD ApplicationSet。請注意,“值”和“圖表”分別存儲(chǔ)在不同的Git倉庫中。
要在Argo CD中查看demo應(yīng)用,請單擊左側(cè)菜單中的Workloads(工作負(fù)載),隨后會(huì)看到項(xiàng)目創(chuàng)建的工作負(fù)載。點(diǎn)擊應(yīng)用程序鏈接即可查看工作負(fù)載的狀態(tài)。
隨后App Platform將創(chuàng)建部署應(yīng)用所需的Argo CD ApplicationSet。請注意,“值”和“圖表”分別存儲(chǔ)在不同的Git倉庫中。
要在Argo CD中查看demo應(yīng)用,請單擊左側(cè)菜單中的Workloads(工作負(fù)載),隨后會(huì)看到項(xiàng)目創(chuàng)建的工作負(fù)載。點(diǎn)擊應(yīng)用程序鏈接即可查看工作負(fù)載的狀態(tài)。
步驟3:發(fā)布應(yīng)用
在這個(gè)應(yīng)用程序上線前還需要做一些事情。App Platform使用了Nginx Ingress和Istio組成的一種先進(jìn)的入口架構(gòu)。要發(fā)布應(yīng)用程序,首先需要?jiǎng)?chuàng)建兩個(gè)VirtualService:一個(gè)Ingress和一個(gè)Istio。好在App Platform可以自動(dòng)完成相關(guān)操作。
- 單擊菜單中的Services(服務(wù))。
- 單擊Create Service(創(chuàng)建服務(wù))。
- 在下拉菜單中選擇demo服務(wù)。
- 在Exposure(暴露)下單擊External(對(duì)外)。
- 單擊Submit(提交),然后單擊Deploy Changes(部署變更)。
在服務(wù)列表中,我們可以看到剛剛創(chuàng)建的服務(wù)以及用于發(fā)布服務(wù)的URL。請點(diǎn)擊這個(gè)URL。
總結(jié)
在本文中,我們配置了一個(gè)LKE集群并啟用了Akamai App Platform。隨后,我們配置了對(duì)象存儲(chǔ),啟用了Harbor App,創(chuàng)建了一個(gè)Team和一個(gè)倉庫。然后,我們使用App Platform中的自助服務(wù)表單構(gòu)建、部署并發(fā)布了一個(gè)應(yīng)用程序。
安裝Akamai App Platform后,我們可以配置對(duì)象存儲(chǔ),這樣所有集成在App Platform中的應(yīng)用程序都將可以使用此配置。隨后在為Grafana Loki、Thanos、Harbor和Tempo等應(yīng)用配置對(duì)象存儲(chǔ)時(shí),就不再需要反復(fù)嘗試。有了Akamai App Platform,這一切都能大幅簡化。
憑借Team多租戶功能,我們可以讓多組用戶獨(dú)立工作,并讓他們共享相同的基礎(chǔ)架構(gòu)和平臺(tái)功能。用戶可以使用自助服務(wù)表單在幾分鐘內(nèi)構(gòu)建、部署并發(fā)布自己的應(yīng)用。
本文的內(nèi)容僅僅只是冰山一角。Akamai App Platform還有更多豐富功能。歡迎關(guān)注Akamai知乎機(jī)構(gòu)號(hào),我們將通過更多后續(xù)文章深入介紹Akamai App Platform,并向大家展示如何創(chuàng)建機(jī)密、配置網(wǎng)絡(luò)策略、使用安全策略以及使用平臺(tái)功能實(shí)現(xiàn)CI/CD、可觀察性和安全性。
如您所在的企業(yè)也在考慮采購云服務(wù)或進(jìn)行云遷移,
點(diǎn)擊鏈接了解Akamai Linode的解決方案