在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Argo CD入門實戰指南

馬哥Linux運維 ? 來源:CSDN技術社區 ? 2025-05-15 17:03 ? 次閱讀

Argo CD入門、實戰指南

1. Argo CD概述

1.1 什么是 Argo CD

Argo CD 是針對 Kubernetes 的聲明式 GitOps 持續交付工具。

aad0954e-2fde-11f0-afc8-92fbcf53809c.gif

Argo CD 是針對 Kubernetes 的聲明式 GitOps 持續交付工具

1.2 為什么選擇 Argo CD

應用程序定義、配置和環境應具有聲明性并受版本控制。應用程序部署和生命周期管理應自動化、可審計且易于理解。

2. Argo CD基礎知識

在有效使用 Argo CD 之前,有必要了解該平臺所基于的底層技術。還需要了解提供給您的功能及其使用方法。以下部分提供了一些有用的鏈接來幫助您加深這種理解。

2.1 學習基礎知識

? 閱讀在線 Docker 和 Kubernetes 教程

?適合初學者的容器、虛擬機和 Docker 簡介

?Kubernetes 簡介

?教程

? 根據您計劃如何模板化您的應用程序:

?Kustomize

?helm

? 如果您要與 CI 工具集成:

?GitHub Actions 文檔

?Jenkins 用戶指南

3. Argo CD核心概念

到此,您應該已經熟悉核心 Git、Docker、Kubernetes、持續交付和 GitOps 概念。以下是一些特定于 Argo CD 的概念。

?應用程序:清單定義的一組 Kubernetes 資源。這是一個自定義資源定義 (CRD)。

?應用程序源類型使用哪種工具來構建應用程序。

?目標狀態應用程序的所需狀態,以 Git 存儲庫中的文件表示。

?實時狀態該應用程序的實時狀態。部署了哪些 pod 等。

?同步狀態實時狀態是否與目標狀態匹配。部署的應用程序是否與 Git 所說的一致?

?同步使應用程序移動到其目標狀態的過程。例如通過將更改應用于 Kubernetes 集群。

?同步操作狀態同步是否成功。

?刷新 將Git 中的最新代碼與實時狀態進行比較。找出不同之處。

?健康應用程序的健康狀況,是否正常運行? 是否可以處理請求?

?工具從文件目錄創建清單的工具。例如 Kustomize。請參閱應用程序源類型

?配置管理工具請參閱工具

?配置管理插件自定義工具。

4. 架構

4.1 架構概述

Argo CD 被實現為 Kubernetes 控制器,它持續監控正在運行的應用程序并將當前的實時狀態與所需的目標狀態(如 Git 存儲庫中指定)進行比較。已部署的應用程序的實時狀態與目標狀態有偏差,則被視為已部署應用程序OutOfSync。Argo CD 報告并可視化差異,同時提供將實時狀態自動或手動同步回所需目標狀態的功能。對 Git 存儲庫中所需目標狀態所做的任何修改都可以自動應用并反映在指定的目標環境中。

4.2 組成

4.2.1 API 服務器

API 服務器是一個 gRPC/REST 服務器,用于公開 Web UI、CLI 和 CI/CD 系統使用的 API。它具有以下職責:

? 應用程序管理和狀態報告

? 調用應用程序操作(例如同步、回滾、用戶定義的操作)

? 存儲庫和集群憑證管理(存儲為 K8s 機密)

? 身份驗證和授權委托給外部身份提供商

? RBAC 實施

? Git webhook 事件的監聽器/轉發器

4.2.2 存儲庫服務器

存儲庫服務器是一項內部服務,它維護保存應用程序清單的 Git 存儲庫的本地緩存。它負責在提供以下輸入時生成并返回 Kubernetes 清單:

? 存儲庫 URL

? 修訂(提交、標記、分支)

? 應用程序路徑

? 模板特定設置:參數、helm values.yaml

4.2.3 應用程序控制器

應用程序控制器是一個 Kubernetes 控制器,它持續監控正在運行的應用程序,并將當前實時狀態與所需的目標狀態(如存儲庫中指定)進行比較。它檢測OutOfSync應用程序狀態并選擇性地采取糾正措施。它負責調用任何用戶定義的生命周期事件鉤子(PreSync、Sync、PostSync)

4.3 怎么運行的

Argo CD 遵循GitOps模式,使用 Git 存儲庫作為定義所需應用程序狀態的真實來源。Kubernetes 清單可以通過多種方式指定:

?自定義應用程序部署

?helmcharts

?jsonnet文件

? YAML/json 清單的純目錄

? 任何配置為配置管理插件的自定義配置管理工具

Argo CD 可自動在指定的目標環境中部署所需的應用程序狀態。應用程序部署可以跟蹤 Git 提交時對分支、標簽或固定到特定版本清單的更新。有關可用的不同跟蹤策略的更多詳細信息,后續會博文會繼續講解。

5. Argo CD入門

要求

? 已安裝kubectl命令行工具。

? 有一個kubeconfig文件(默認位置是~/.kube/config)。

? 已安裝CoreDNS插件。

5.1 安裝 Argo CD

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

這將創建一個新的命名空間argocd,Argo CD 服務和應用程序資源將存儲在其中。

注意:

安裝清單包含ClusterRoleBinding引用命名空間的資源argocd。如果您要將 Argo CD 安裝到不同的命名空間,請確保更新命名空間引用。

此默認安裝將具有自簽名證書,如果不進行額外操作則無法訪問。請執行以下任一操作:

? 按照說明配置證書(并確保客戶端操作系統信任它)。

? 配置客戶端操作系統以信任自簽名證書。

? 在本指南的所有 Argo CD CLI 操作中使用 --insecure 標志。

注意:

kubectl必須將配置的默認命名空間設置為argocd。這只對以下命令有用,因為前面的命令已經有 -n argocd 了:

kubectl config set-context --current --namespace=argocd

用于argocd login --core配置CLI訪問并跳過步驟 3-5。

注意:

argocd-redisRedis 的默認安裝使用密碼驗證。Redis 密碼與密鑰一起存儲在auth安裝 Argo CD 的命名空間中的 Kubernetes 機密中。

5.2 下載 Argo CD CLI

從github中下載最新的 Argo CD 版本。可以通過CLI 安裝文檔找到更詳細的安裝說明。

也可在 Mac、Linux 和 WSL Homebrew 中使用:

brew install argocd

5.3 訪問 Argo CD API 服務器

默認情況下,Argo CD API 服務器不會通過外部 IP 公開。要訪問 API 服務器,請選擇以下三種技術之一來暴露 Argo CD API 服務:

? 將 argocd-server 服務類型更改為LoadBalancer

kubectl patch svc argocd-server -n argocd -p'{"spec": {"type": "LoadBalancer"}}'

? ingress

按照Argo CD ingress 文檔了解如何使用入口配置 Argo CD。

? 轉發端口

Kubectl 端口轉發也可用于連接 API 服務器而無需公開服務。

kubectl port-forward svc/argocd-server -n argocd 8080:443

然后可以使用 https://localhost:8080 訪問 API 服務器

5.4 使用 CLI 登錄

帳戶的初始密碼admin是自動生成的,并以明文形式存儲在 Argo CD 安裝命名空間中password命名的機密字段中。

您可以使用CLI 快速的檢索此密碼

argocd admin initial-password -n argocd

提示:

更改密碼后,您應該從 Argo CD 命名空間中刪除argocd-initial-admin-secret。該密鑰除了以明文形式存儲最初生成的密碼外,沒有其他用途,并且可以隨時安全地刪除。如果必須重新生成新的管理員密碼,Argo CD 將根據需要重新創建它。

使用上面的用戶名admin和密碼登錄 Argo CD 的 IP 或主機名:

argocd login 

注意:

CLI 環境必須能夠與 Argo CD API 服務器通信。如果無法按照上述步驟 5.3 中的說明直接訪問,您可以通過以下機制之一告訴 CLI 使用端口轉發來訪問它

? 向每個 CLI 命令添加--port-forward-namespace argocd標志。

? 設置ARGOCD_OPTS環境變量:export ARGOCD_OPTS='--port-forward-namespace argocd'。

使用以下命令更改密碼:

argocd account update-password

5.5 注冊集群以部署應用程序(可選)

此步驟將集群的憑據注冊到 Argo CD,并且僅在部署到外部集群時才需要。在內部部署時(部署到 Argo CD 正在運行的同一集群),應使用 https://kubernetes.default.svc 作為應用程序的 K8s API 服務器地址。

首先列出當前 kubeconfig 中的所有集群上下文:

kubectl config get-contexts -o name

從列表中選擇一個上下文名稱并將其提供給argocd cluster add CONTEXTNAME。例如,對于 docker-desktop 上下文,運行:

argocd cluster add docker-desktop

上述命令將 ServiceAccount (argocd-manager) 安裝到該 kubectl 上下文的 kube-system 命名空間中,并將服務帳戶綁定到管理員級別的 ClusterRole。Argo CD 使用此服務帳戶令牌執行其管理任務(即部署/監控)。

注意:

可以修改角色規則argocd-manager-role,使其僅對有限的命名空間、組、種類具有create、update、patch、權限。但是,Argo CD 需要在集群范圍內具有 、 、權限才能正常運行。delete``get``list``watch

5.6 從 Git 存儲庫創建應用程序

包含留言簿應用程序的示例存儲庫可在 https://github.com/argoproj/argocd-example-apps.git上找到,以演示 Argo CD 的工作原理

?通過 CLI 創建應用程序

首先,我們需要運行以下命令將當前命名空間設置為 argocd:

kubectl config set-context --current --namespace=argocd

使用以下命令創建示例留言簿應用程序:

argocd app create guestbook --repo https://github.com/argoproj/argocd-example-apps.git --path guestbook --dest-server https://kubernetes.default.svc --dest-namespace default

?通過 UI 創建應用程序

打開瀏覽器進入 Argo CD 外部 UI,通過訪問瀏覽器中的 IP/主機名并使用步驟 4 中設置的憑據登錄。

登錄后,點擊+ New App按鈕,如下圖:

ab007822-2fde-11f0-afc8-92fbcf53809c.png

為您的應用命名guestbook,使用該項目default,并保留同步策略Manual:

ab0e7364-2fde-11f0-afc8-92fbcf53809c.png

通過將存儲庫 URL 設置為 github 存儲庫 URL,將https://github.com/argoproj/argocd-example-apps.git存儲庫連接到 Argo CD,將修訂保留為HEAD,并將路徑設置為guestbook:

ab1c5dee-2fde-11f0-afc8-92fbcf53809c.png

對于目標,將集群 URL 設置為https://kubernetes.default.svc(或in-cluster集群名稱),并將命名空間設置為default:

ab2977cc-2fde-11f0-afc8-92fbcf53809c.png

填寫完以上信息后,點擊UI頂部的Createguestbook來創建應用程序:

ab37d880-2fde-11f0-afc8-92fbcf53809c.png

5.7 同步應用程序

?通過 CLI 同步

一旦創建了留言簿應用程序,您現在可以查看其狀態:

$ argocd app get guestbook
Name:        argocd/guestbook
Project:      default
Server:       https://kubernetes.default.svc
Namespace:     default
URL:        https://192.168.1.241:30786/applications/guestbook
Repo:        https://github.com/argoproj/argocd-example-apps.git
Target:
Path:        guestbook
SyncWindow:     Sync Allowed
Sync Policy:    
Sync Status:    OutOfSync from (d7927a2)
Health Status:   Missing

GROUP KIND    NAMESPACE NAME     STATUS   HEALTH  HOOK MESSAGE
   Service   default  guestbook-ui OutOfSync Missing
apps  Deployment default  guestbook-ui OutOfSync Missing


應用程序狀態最初處于OutOfSync狀態,因為應用程序尚未部署,并且尚未創建任何 Kubernetes 資源。要同步(部署)應用程序,請運行:

$ argocd appsyncguestbook
TIMESTAMP         GROUP    KIND  NAMESPACE         NAME  STATUS  HEALTH    HOOK MESSAGE
2024-07-09T1549+08:00      Service   default     guestbook-ui OutOfSync Missing
2024-07-09T1549+08:00  apps Deployment   default     guestbook-ui OutOfSync Missing
2024-07-09T1550+08:00      Service   default     guestbook-ui OutOfSync Missing       service/guestbook-ui created
2024-07-09T1550+08:00  apps Deployment   default     guestbook-ui OutOfSync Missing       deployment.apps/guestbook-ui created
2024-07-09T1550+08:00      Service   default     guestbook-ui  Synced Healthy         service/guestbook-ui created
2024-07-09T1550+08:00  apps Deployment   default     guestbook-ui  Synced Progressing       deployment.apps/guestbook-ui created

Name:        argocd/guestbook
Project:      default
Server:       https://kubernetes.default.svc
Namespace:     default
URL:        https://192.168.1.241:30786/applications/guestbook
Repo:        https://github.com/argoproj/argocd-example-apps.git
Target:
Path:        guestbook
SyncWindow:     Sync Allowed
Sync Policy:    
Sync Status:    Synced to (d7927a2)
Health Status:   Progressing

Operation:     Sync
Sync Revision:   d7927a27b4533926b7d86b5f249cd9ebe7625e90
Phase:       Succeeded
Start:       2024-07-09 1549 +0800 CST
Finished:      2024-07-09 1550 +0800 CST
Duration:      1s
Message:      successfully synced (all tasks run)

GROUP KIND    NAMESPACE NAME     STATUS HEALTH    HOOK MESSAGE
   Service   default  guestbook-ui Synced Healthy      service/guestbook-ui created
apps  Deployment default  guestbook-ui Synced Progressing    deployment.apps/guestbook-ui created


此命令從存儲庫檢索清單并執行kubectl apply清單。留言簿應用程序現已運行,您現在可以查看其資源組件、日志、事件和評估的健康狀況。

接下來可以使用如下命令到K8S集群中查看服務部署情況:

root@k8s-master01:~# kubectl get pods -o wide -n default
NAME              READY  STATUS  RESTARTS  AGE  IP       NODE      NOMINATED NODE  READINESS GATES
guestbook-ui-76f97c94c-gnznn  1/1   Running  0     10m  10.233.125.49  k8s-worker01        

?通過 UI 同步

ab45b040-2fde-11f0-afc8-92fbcf53809c.png

在這里插入圖片描述

ab6149ea-2fde-11f0-afc8-92fbcf53809c.png

鏈接:https://blog.csdn.net/u010589700/article/details/140299197

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 容器
    +關注

    關注

    0

    文章

    507

    瀏覽量

    22353
  • 虛擬機
    +關注

    關注

    1

    文章

    962

    瀏覽量

    28965
  • Argo
    +關注

    關注

    0

    文章

    4

    瀏覽量

    4168
  • kubernetes
    +關注

    關注

    0

    文章

    239

    瀏覽量

    8953

原文標題:5分鐘上手Argo CD:從零到生產級的實戰指南

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    Linux Shell腳本入門實戰詳解

    Linux Shell腳本入門實戰詳解
    發表于 02-17 15:03 ?728次閱讀

    ARDUINO開發實戰指南

    ARDUINO開發實戰指南
    發表于 09-21 05:40

    物聯網實戰指南

    物聯網實戰指南
    發表于 02-23 10:50

    Android開發入門實戰

    Android開發入門實戰
    發表于 03-30 13:25

    《STM32 HAL 庫開發實戰指南—基于H750》

    受限于單個文件不能超過5M,所以分成10個壓縮包分別上傳。 野火STM32系列叢書《STM32 HAL 庫開發實戰指南—基于H750》,內容殷實,講解詳細,適合入門和提高,非常不錯
    發表于 01-14 10:09

    LabVIEW入門實戰開發100例

    LabVIEW入門實戰開發100例LabVIEW入門實戰開發100例LabVIEW入門實戰
    發表于 02-18 11:44 ?0次下載

    PIC單片機入門實戰-掃描版

    PIC單片機入門實戰-掃描版,PIC學習入門經典教材
    發表于 11-02 15:44 ?0次下載

    Scala動手實戰入門

    本文檔內容介紹了基于Scala動手實戰入門,供參考
    發表于 04-13 15:13 ?8次下載

    樹莓派(Raspberry Pi)實戰指南.pdf

    樹莓派實戰指南
    發表于 05-07 15:17 ?130次下載

    《labview入門實戰開發》經典案例

    labview入門實戰開發案例100例書中的案例資料供大家學習
    發表于 01-11 18:10 ?184次下載

    arduino開發實戰指南

    arduino開發實戰指南
    發表于 02-22 14:56 ?0次下載

    LabVIEW入門實戰開發100例

    LabVIEW入門實戰開發100例,實用例子
    發表于 10-26 15:25 ?55次下載

    STM32庫開發實戰指南

    STM32庫開發實戰指南-劉火良,電子 epub格式,清晰非掃描
    發表于 10-27 16:25 ?23次下載

    emWin 實戰指南

    電子發燒友網站提供《emWin 實戰指南.pdf》資料免費下載
    發表于 12-22 11:03 ?6次下載

    LwIP應用開發實戰指南—基于野火STM32

    LwIP應用開發實戰指南—基于野火STM32—20210122
    發表于 01-17 14:34 ?8次下載
    主站蜘蛛池模板: 精品免费久久久久久成人影院 | 激情深爱 | 欧美乱码视频 | 制服丝袜在线一区 | 啪啪网视频| 四虎国产精品免费视 | 永久福利盒子日韩日韩免费看 | 高清视频 一区二区三区四区 | 美国一级毛片片aa久久综合 | 国产精品影视 | 欧美婷婷色 | 嫩草影院国产 | 十三以下岁女子毛片免费播放 | 香港三级理论在线影院 | 亚洲淫视频 | 亚洲播放 | 成年人三级视频 | 免费人成a大片在线观看动漫 | 无毒不卡在线观看 | 日本精品视频一视频高清 | vip影院在线观看 | 欧美一级日韩在线观看 | 特级黄色毛片 | 免费观看成人欧美1314www | 9色在线| 婷婷六月丁香午夜爱爱 | 色噜噜亚洲精品中文字幕 | 狠狠做久久深爱婷婷97动漫 | 网站色 | 一级特色黄色片 | 欧美洲视频在线观看 | 国产日韩欧美综合色视频在线 | 好吊788gaoco | 日韩一级特黄毛片在线看 | 天天狠天天插 | 色免费在线观看 | 日韩激情淫片免费看 | 天天舔天天色 | 免费看黄资源大全高清 | 女人张开腿让男人桶视频免费大全 | 国产成人高清一区二区私人 |