部署應用程序在 Kubernetes 中可能會很複雜,特別是對於新手來說。輸入Argo CD,一個由 GitOps 驅動的聲明性工具,旨在自動化 Kubernetes 應用程序部署。在這個工作坊中,您將學習如何設置和使用 Argo CD 來無縫部署應用程序,並為完全新手打造了逐步指南。
您將學到什麼
- 安裝和配置 Argo CD。
- 使用GitOps 原則部署應用程序。
- 監控部署和疑難排解。
- 回滾和管理應用程序版本。
- 為生產使用安全 Argo CD。
為什麼選擇 Argo CD?
Argo CD通過不斷將您的集群與在Git 存儲庫中定義的清單同步,簡化了在Kubernetes中的應用程序管理。好處包括:
- 聲明性管理:在 Git 中定義所需的集群狀態。
- 持續交付:實時同步自動部署。
- 版本控制:輕鬆回滾到以前的版本。
先决条件
在开始之前,请确保您已经具备以下条件:
- 一个Kubernetes集群(可以使用Minikube、Kind或托管服务,如GKE、EKS、AKS)。
- 已安装并配置好以连接到您的集群的
kubectl
。 - 一个GitHub或GitLab帐户来托管您的Kubernetes清单文件。
- 对YAML语法有基本的了解(如果您是新手,则在本讲习班中涵盖)。
逐步指南
1. 设置Kubernetes集群
步骤1:安装Minikube
如果您没有集群,请使用Minikube:
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
chmod +x minikube-linux-amd64
sudo mv minikube-linux-amd64 /usr/local/bin/minikube
步骤2:启动Minikube
在系统上安装Minikube后运行命令minikube start
:
minikube start
步骤3:验证集群
确认集群正在运行:
kubectl cluster-info
kubectl get nodes
2. 安装Argo CD
步骤1:创建命名空间
Argo CD在其自己的命名空间中运行以实现隔离:
kubectl create namespace argocd
步骤2:安装Argo CD
应用官方清单以安装Argo CD:
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
步骤3:验证安装
检查Argo CD的Pod:
kubectl get pods -n argocd
3. 访问Argo CD界面
步骤1:暴露Argo CD
将argocd-server
暴露给您的本地机器:
kubectl port-forward svc/argocd-server -n argocd 8080:443
步驟 2:檢索管理員憑據
獲取默認管理員密碼:
kubectl get secret argocd-initial-admin-secret -n argocd -o jsonpath="{.data.password}" | base64 -d
步驟 3:登錄到 UI
- 在瀏覽器中打開 https://localhost:8080。
- 使用以下資訊登錄:
- 用戶名:admin
- 密碼:在上一步驟中檢索。
4. 將 Argo CD 連接到您的 Git 存儲庫
步驟 1:準備一個 Git 存儲庫
- 創建一個 Git 存儲庫(例如,在 GitHub 上)。
- 將您的 Kubernetes 清單添加到存儲庫。使用此示例
deployment.yaml
:
apiVersion apps/v1
kind Deployment
metadata
name nginx-deployment
labels
app nginx
spec
replicas2
selector
matchLabels
app nginx
template
metadata
labels
app nginx
spec
containers
name nginx
image nginx1.19
ports
containerPort80
步驟 2:將存儲庫添加到 Argo CD
從 UI:
- 前往 設置 > 存儲庫。
- 添加您的 Git 存儲庫 URL 和身份驗證詳細信息(SSH 或 HTTPS)。
或者,使用 CLI:
argocd repo add <REPO_URL> --username <USERNAME> --password <PASSWORD>
5. 部署您的第一個應用程序
步驟 1:創建應用程序
在 Argo CD UI 中:
- 點擊 新應用。
-
- 應用程式名稱: nginx-app
- 專案: 預設
- 倉庫 URL: 您的 Git 倉庫 URL
- 路徑: 到
deployment.yaml
的路徑 - 叢集 URL:
https://kubernetes.default.svc
- 命名空間: 預設
步驟 2: 同步應用程式
建立應用程式後:
- 在 Argo CD 使用者介面中點擊 同步
- 觀看應用程式部署至您的 Kubernetes 叢集
6. 自動化部署
步驟 1: 啟用自動同步
啟用持續同步:
argocd app set nginx-app --sync-policy automated
步驟 2: 測試更改
- 修改 Git 中的
deployment.yaml
- 將更改推送至倉庫
- Argo CD 將偵測更改並自動將其同步至叢集
7. 監控與疑難排解
步驟 1: 監控應用程式健康狀態
在使用者介面中檢查:
- 健康:指示應用程式是否按預期運行。
- 同步狀態:確保叢集狀態與 Git 相符。
步驟 2:檢視日誌
如果出現問題:
kubectl logs -n argocd <POD_NAME>
步驟 3:回滾更改
回滾至先前的狀態:
argocd app rollback nginx-app <REVISION>
8. 保護 Argo CD
步驟 1:更改預設管理員密碼
使用命令 argocd account update-password
更改預設管理員密碼:
argocd account update-password
步驟 2:整合 SSO
對於生產環境,與單一登入 (SSO) 解決方案(如 GitHub 或 LDAP)進行整合。
GitOps 最佳實踐
- 分支策略:為開發、演練和生產使用單獨的分支。
- 程式碼審查:強制進行對清單更改的同儕審查。
- 審核日誌:定期審查 Argo CD 日誌以確保合規性和進行除錯。
結論
Argo CD 提供了一種適合初學者但功能強大的方式來使用 GitOps 原則管理 Kubernetes 部署。此工作坊將使您具備部署、監控和管理應用程式的技能。遵循這些實踐,您將能夠熟練掌握 Kubernetes 的持續交付。
Source:
https://dzone.com/articles/deploying-applications-in-kubernetes-with-argo-cd