argocd安裝及入門使用


一、安裝

1.安裝argocd

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

2.暴露argocd ui

# NodePort方式
kubectl patch service -n argocd argocd-server -p '{"spec": {"type": "NodePort"}}'

3.登陸argocd

# 獲取admin登陸密碼
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d

 

4.安裝cli

# linux
wget -O /usr/local/bin/argocd https://github.91chifun.workers.dev/https://github.com//argoproj/argo-cd/releases/download/v2.1.2/argocd-linux-amd64 && chmod +x /usr/local/bin/argocd 

 

二、簡單使用

1.准備git倉庫

$ tree .
.
├── README.md
└── web-server-headers
    ├── deploy.yaml
    ├── ingress.yaml
    └── svc.yaml

 

2.配置argocd倉庫

 

 

 

 

 

 

3.創建應用

 

 

 

4.查看結果

 

 

 

三、cli使用

3.1 快速入門操作

1.登陸

argocd login ArgoCD_Address:Port

 

 

 

2.修改密碼

argocd account update-password

 

3.從git倉庫創建一個Application

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

 

創建一個guestbook app,指定倉庫地址、應用路徑、目標apiserver地址、目標namespace

 

4.列出所有app和指定app

argocd app list
argocd app get guestbook

 

5.手動從git倉庫同步指定app

argocd app sync guestbook

 

 

 

 

3.2 管理項目

  • 創建項目
argocd proj create myproject -d https://kubernetes.default.svc,mynamespace -s https://github.com/argoproj/argocd-example-apps.git

-d: 該項目允許使用的apiserver和namespace
-s: 允許使用的git倉庫

 

  • 查看項目列表: argocd proj list
  • 添加項目可使用的git倉庫: argocd proj add-source <PROJECT> <REPO>
  • 刪除項目可使用的git倉庫: argocd proj remove-source <PROJECT> <REPO>
  • 限制項目可使用的k8s資源(cluster級別資源默認拒絕,namespace級別默認允許):

 

# 允許使用什么樣的資源
argocd proj allow-cluster-resource <PROJECT> <GROUP> <KIND>
argocd proj allow-namespace-resource <PROJECT> <GROUP> <KIND>
# 拒絕使用什么樣的資源
argocd proj deny-cluster-resource <PROJECT> <GROUP> <KIND>
argocd proj deny-namespace-resource <PROJECT> <GROUP> <KIND>

 

  • Application分配給項目: argocd app set guestbook-default --project myproject
  • 獲取項目信息: argocd proj get myproject
  • 編輯項目yaml: argocd proj edit myproject

 

3.3 管理APP

查看APP列表: argocd app list|get|delete|create

-p: 根據項目過濾
-l: 根據標簽過濾
-r: 根據倉庫過濾
-o: 輸出格式。wide|name|json|yaml
手動同步: argocd app sync <APPNAME>

 

3.4 自動同步相關

開啟自動同步: argocd app set <APPNAME> --sync-policy auto

關閉自動同步: argocd app set <APPNAME> --sync-policy none

自動同步時,自動刪除git中不存在的資源: argocd app set <APPNAME> --auto-prune=true

是否允許一個application有0個資源: argocd app set <APPNAME> --allow-empty=true

時刻保證與git中定義的狀態同步: argocd app set <APPNAME> --self-heal=true

自動同步會將所有對象都同步,對apiserver可能會造成更大的壓力,可以只同步out-of-sync狀態的資源: argocd app set <APPNAME> --sync-option ApplyOutOfSyncOnly=true

 

執行自動同步的要求

僅當Application為 OutOfSync 時才會執行自動同步。
同一個commit id只會同步一次,不管成功還是失敗

argocd每三分鍾會檢測git倉庫一次,用於判斷app與git中描述的狀態是否一致,如果不一致狀態為OutOfSync。(注意這里並不會觸發更新,除非配置了自動同步)

 

解決argocd ingress資源狀態一直Progressing

kubectl  edit cm -n argocd argocd-cm


data:
  resource.customizations.health.extensions_Ingress: |
    hs = {}
    hs.status = "Healthy"
    hs.message = "SoulChild"
    return hs
  resource.customizations.useOpenLibs.extensions_Ingress: "true"

 

刪除pod(沒試過不刪行不行),然后argocd重新sync。
kubectl  delete pod -n argocd argocd-application-controller-0

 

摘自

https://soulchild.cn/2682.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM