一、安装
1.1 YAML 方式安装
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
k8s集群外可访问管理UI配置
kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'
获取admin login登录密码
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo
1.2 安装后检测
[argocd /]# kubectl -n argocd get all
NAME READY STATUS RESTARTS AGE
pod/argocd-application-controller-0 1/1 Running 0 27m
pod/argocd-applicationset-controller-58f69d4b8f-5hvlv 1/1 Running 0 27m
pod/argocd-dex-server-ff489bd4-c8kdg 1/1 Running 0 27m
pod/argocd-notifications-controller-567f4c469-vtn8h 1/1 Running 0 27m
pod/argocd-redis-55d64cd8bf-2jczx 1/1 Running 0 27m
pod/argocd-repo-server-b4b47b4f4-2j9k4 1/1 Running 0 27m
pod/argocd-server-7c8685f8b-mp79x 1/1 Running 0 27m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/argocd-applicationset-controller ClusterIP 10.107.131.236 <none> 7000/TCP,8080/TCP 27m
service/argocd-dex-server ClusterIP 10.102.78.221 <none> 5556/TCP,5557/TCP,5558/TCP 27m
service/argocd-metrics ClusterIP 10.99.134.239 <none> 8082/TCP 27m
service/argocd-notifications-controller-metrics ClusterIP 10.109.126.149 <none> 9001/TCP 27m
service/argocd-redis ClusterIP 10.101.2.199 <none> 6379/TCP 27m
service/argocd-repo-server ClusterIP 10.98.245.116 <none> 8081/TCP,8084/TCP 27m
service/argocd-server LoadBalancer 10.106.142.115 <none> 80:31523/TCP,443:32281/TCP 27m
service/argocd-server-metrics ClusterIP 10.105.209.242 <none> 8083/TCP 27m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/argocd-applicationset-controller 1/1 1 1 27m
deployment.apps/argocd-dex-server 1/1 1 1 27m
deployment.apps/argocd-notifications-controller 1/1 1 1 27m
deployment.apps/argocd-redis 1/1 1 1 27m
deployment.apps/argocd-repo-server 1/1 1 1 27m
deployment.apps/argocd-server 1/1 1 1 27m
NAME DESIRED CURRENT READY AGE
replicaset.apps/argocd-applicationset-controller-58f69d4b8f 1 1 1 27m
replicaset.apps/argocd-dex-server-ff489bd4 1 1 1 27m
replicaset.apps/argocd-notifications-controller-567f4c469 1 1 1 27m
replicaset.apps/argocd-redis-55d64cd8bf 1 1 1 27m
replicaset.apps/argocd-repo-server-b4b47b4f4 1 1 1 27m
replicaset.apps/argocd-server-7c8685f8b 1 1 1 27m
NAME READY AGE
statefulset.apps/argocd-application-controller 1/1 27m
二、添加应用
2.1 添加基础实施配置库
如果你的配置库使用的公开的仓库(无需认证)则可跳过此步。本实例使用的是gitlab私有库,使用Kustomize来管理K8s应用资源Yaml配置。
![](https://img.haomeiwen.com/i13603962/eb8115cb6699bc01.png)
仓库类型/项目名称/仓库地址/认证用户与密码或证书
2.2 新增应用
![](https://img.haomeiwen.com/i13603962/815155ad1ec93a17.png)
应用名称/项目名称/同步策略/源配置(配置仓库)/目标设置(K8s集群)
注:sync Policy / sync Options 详细同步设置可参考后文说明
三、同步配置说明
3.1 自动同步策略
- 自动清理(当自动同步机制检查到Git内已无此资源定义时是否自动删除此资源,安全考虑默认是不删除资源策略)
spec:
syncPolicy:
automated:
prune: true
- 自动自愈(将 git 配置库与集群资源保持始终一致性)
spec:
syncPolicy:
automated:
selfHeal: true
[ 应用自愈测试实验 ]
1)开启应用的同步策略
![](https://img.haomeiwen.com/i13603962/520332e9fdf050d8.png)
2)在集群内手动执行 scale
kubectl scale deployment demo-deployment --replicas=1
3)查看deployment状态
[argocd /]# kubectl get deployments.apps -w
NAME READY UP-TO-DATE AVAILABLE AGE
demo-deployment 3/3 3 3 34m # 初始状态 replic=3
demo-deployment 3/1 3 3 34m
demo-deployment 3/1 3 3 34m
demo-deployment 1/1 1 1 34m # 执行scale replic=1
demo-deployment 1/3 1 1 34m
demo-deployment 1/3 1 1 34m
demo-deployment 1/3 1 1 34m
demo-deployment 1/3 3 1 34m # 自愈恢复 replic=3
demo-deployment 2/3 3 2 35m
demo-deployment 3/3 3 3 35m
3.2 同步选项设置
-
AUTO-CREATE NAMESPACE -- 自动创建项目 (当NameSpace不存在自动创建)
-
SKIP SCHEMA VALIDATION -- 跳过schema规范效验
-
PRUNE LAST -- 最后清理 (所有资源同步完成后进行清理操作)
-
APPLY OUT OF SYNC ONLY -- 仅应用于OutOfSync状态资源对象(针对包含非常多对象资源的应用,可减少同步资源压力)
-
RESPECT IGNORE DIFFERENCES -- 忽略指定配置项的差异(可基于配置来忽略特定的差异项,比如复本数配置忽略)
-
PRUNE PROPAGATION POLICY -- 依赖清理策略(相关联对象删除)策略Foreground/Backround/Orphaned
~~~ FINISH~~~
网友评论