返回部落格

使用 Argo CD 與 GitOps 在 Kubernetes 上部署應用程式

使用 Argo CD 與 GitOps 在 Kubernetes 上部署應用程式

簡介

Kubernetes 已成為部署大型應用程式的標準。它能幫助開發人員獲得顯著的優勢,並提供傳統伺服器託管所不具備的功能。Kubernetes 允許進行水平擴充,而無需擔心基礎架構的繁瑣問題。此外,隨著應用程式的增長,它還能降低獲取和維護基礎架構的成本。

然而,在 Kubernetes 上管理應用程式也可能非常複雜,且需要進階技能。使用 Kubernetes 和 持續整合與持續部署 流程 (CI/CD) 透過提供抽象化來幫助克服這一複雜過程。 GitOps 是可以幫助實現抽象化的工具之一。

在本教學中, 我們將示範如何使用 Argo CD 在 Kubernetes 上持續整合和部署應用程式。 每當有任何變更被推送到儲存庫時,它就會被部署到目標叢集上。 Argo CD 還透過與整個軟體開發生命週期整合,提供版本控制、配置和應用程式環境。如果您擁有適用於 Kubernetes 的套件管理器,例如 Helm,或者如果您的儲存庫託管在 BitBucketGitLab,Argo CD 也可以與所有這些平台無縫整合。

先決條件

要完成本教學,您必須擁有:

步驟 1 – 安裝 Argo CD

在安裝 Argo CD 之前,我們需要有一個正在執行的 Kubernetes 環境,並配備 kubectl。您可以透過執行以下命令來進行測試:

Deploying Applications on Kubernetes Using Argo CD and GitOps Get Nodes

您應該會看到至少有一個 Kubernetes 節點處於 Ready 狀態。如果沒有可用的節點,您應該重新檢查您的 Kubernetes 安裝。接下來,我們將為我們的 Kubernetes 安裝建立一個獨立的命名空間。我們將其命名為 argocd。我們將把與 Argo CD 相關的服務保留在此命名空間中:

之後,透過執行以下命令,在上述新建立的命名空間中安裝 Argo CD 指令碼:

Deploying Applications on Kubernetes Using Argo CD and GitOps Install ArgoCD

要檢查 Kubernetes Pod 的狀態,請執行以下命令:

您將會得到如下所示的結果:

Deploying Applications on Kubernetes Using Argo CD and GitOps Get Pods

至此,您已成功完成 Argo CD 的安裝。要退出 watch 介面,您可以按下 Ctrl + C。要存取此 Kubernetes 叢集中的服務,我們需要進行連接埠轉發。我們將在下一步中向您展示如何操作。

步驟 2 – 轉發連接埠以存取 Argo CD

Kubernetes 可以將您的應用程式部署到它選擇的任何連接埠。因此,必須轉發 Kubernetes 應用程式的連接埠,以便從本機電腦存取它們。Argo CD 公開了一個名為 argocd-server 的服務,該服務使用連接埠 443。連接埠 443 是 HTTPS 和 HTTP 服務的預設連接埠。您可以將 Kubernetes 連接埠轉發到您選擇的連接埠。在我們下面的範例中,我們已將連接埠轉發到 8080。要轉發連接埠,請在終端機中執行以下命令:

一旦您轉發了連接埠,它將會被阻擋,使其他服務無法存取。為了獲得不中斷的存取,一律建議在新的終端機中執行上述命令。完成後,您可以按下 Ctrl+C 以結束連接埠轉發程序。

轉發連接埠後,您可以透過導覽至 localhost:8080 來存取 Argo CD。系統將提示您輸入憑證,您可以在下一步中從命令列獲取。

步驟 3 – 從命令列管理 Argo CD

我們必須安裝 Argo CD 命令列工具來管理 Argo CD 的安裝。推薦安裝 Argo CD 的方法是使用套件管理器,例如 Homebrew。Homebrew 是一款在 macOS 和 Linux 上安裝軟體的熱門套件管理器工具。您可以使用以下命令安裝 Homebrew:

您的電腦上應該已安裝 brew 。系統可能會提示輸入密碼以進行登入。您可以透過執行以下命令來執行它:

在上述安裝完成後,您將取得 argocd 命令。我們需要使用 kubectl 命令來取得管理員密碼。它是在安裝過程中自動產生的。以下是取得該密碼的命令:

現在您已安裝 Argo CD,可以使用下方的 argocd login 命令進行登入:

使用命令列部署應用程式時,您需要先登入:

Applications

您可能會收到安全性警告。如果是,請按下 y 以繼續。許多使用者可能希望在登入後變更密碼。如果是,請執行命令 argocd account update-password 來變更密碼。我們現在擁有一個功能完整的 Argo CD 配置。

最後,我們將使用已安裝的 Argo CD 在 Kubernetes 叢集上部署應用程式。

步驟 4 – 利用多個叢集

在繼續設定應用程式之前,必須先知道您要部署的目標機器。在許多情況下,Argo CD 和部署的應用程式可以執行在同一個叢集上。這是 Argo CD 的預設行為,但並非限制。如果您想將應用程式部署到其他目標機器上,請先在您的機器中執行 kubectl config :

假設您取得兩個叢集: test-deploy-cluster 以及 test-target-cluster。現在,如果 test-deploy-cluster 是您的 Argo CD 所在地,而您想要部署到 test-target-cluster,請執行以下命令:

上述命令將在 Argo CD 上新增其他叢集的詳細資訊。它還允許在 Argo CD 目標叢集上部署服務。

步驟 5 – 部署範例應用程式

終於到了在 Kubernetes 叢集上部署應用程式的時候了。我們將使用 Argo CD 提供的範例應用程式。我們還將利用 helm-guestbook ,它是使用 Helm 圖表(charts)建置的。

要安裝應用程式,我們將使用 argo app create 命令。我們將指定 Git 儲存庫, helm-guestbook ,並傳入您的預設目的地和命名空間:

您可以透過執行 來檢查新建立應用程式的狀態argocd app get:

如果您看到 OutOfSync 狀態,請不要感到驚訝。到目前為止,我們已經下載了 Helm chart 並為 Argo CD 創建了它的進入點。然而,在 Kubernetes 部分,還沒有為其分配任何資源。若要 同步 此應用程式,請執行以下命令:

Deploying Applications on Kubernetes Using Argo CD and GitOps App Sync

在使用 GitOps 時,始終需要將應用程式與上游進行同步。因此,每當儲存庫中發生變更時,Argo CD 都會部署該應用程式。

我們已經使用 Argo CD 命令列部署了應用程式。您也可以使用 Argo CD 網頁介面達到相同的效果。如果您想檢查應用程式的狀態和運行情況,網頁介面會非常有用。要打開網頁介面,請打開 localhost:8080:

Deploying Applications on Kubernetes Using Argo CD and GitOps Application UI

為了驗證安裝,我們將在瀏覽器中打開應用程式。我們的 helm-guestbook 運行在連接埠 80。如果您有任何其他應用程式正在使用連接埠 80,您可以轉發該連接埠,以免干擾其他應用程式:

最後,在您的網頁瀏覽器上打開網址 localhost:9090 以查看您的應用程式正在運行:

 Guestbook UI

現在,如果開發人員將任何程式碼推送到 GitHub 遠端儲存庫,ArgoCD 將會捕獲並反映它。您的 ArgoCD 部署將相應更新,以提供持續可用性。

結論

在本教學中,我們向您展示了如何使用 Argo CD 在 Kubernetes 上安裝和部署應用程式。確保您在 Kubernetes 上的部署是可維護的非常重要。在這方面,GitOps 可以為您提供很大的幫助。

Kubernetes 現在是雲端部署的標準。Cloudsigma 有一些很棒的 Kubernetes 教學,您接下來可以參考:

祝您運算愉快!

author

Preslav Dobrev

作者 · CloudSigma

Preslav Dobrev 是 CloudSigma 的創意設計師,專注於透過傳統與創新行銷渠道建立一致的企業形象。他擅長將藝術願景與策略行銷相融合,創造具有影響力的品牌敘事。

留言

目前尚無留言。成為第一個留言的人吧。