一、安装ArgoCD
1、非高可用安装
通过kubectl的方式安装,测试环境使用
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
2、高可用安装
建议生产环境使用高可用安装
kubectl create namespace argocd
kubectl apply -n argocd -k https://github.com/argoproj/argo-cd/blob/master/manifests/ha/install.yaml
3、Core安装
core安装主要用于无头模式下部署ArgoCD。适用于不需要多租户功能的集群。此方法安装包含的组件更少更容易设置。此安装不包含UI、SSO。
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/core-install.yaml
还可以通过helm、kustomize等方式进行安装,详细信息参考官方文档:
https://argo-cd.readthedocs.io/en/stable/operator-manual/core/
4、kubernetes支持的版本
Argo CD version | Kubernetes versions |
---|---|
2.10 | v1.28, v1.27, v1.26, v1.25 |
2.9 | v1.28, v1.27, v1.26, v1.25 |
2.8 | v1.27, v1.26, v1.25, v1.24 |
5、下载Argo CD CLI
从https://github.com/argoproj/argo-cd/releases/latest下载在新的版本
6、访问ArgoCD API服务器
将argocd-server service的服务类型修改为LoadBalancer:
kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'
然后可以通过https://localhost:8080 访问 API 服务器的UI
二、web UI配置
1、查看默认的密码
账户的初始密码是自动生成的,并且以明文的形式存储在 ArgoCD命名空间中的secrets 中的argocd-initial-admin-secret
可以使用以下命令查看初始密码
argocd admin initial-password -n argocd
命令行登陆
#查看service
[root@iZbp1igh8gtzjj9sgk4cykZ jms_ops_all]# kubectl get service -n argocd
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
argocd-server LoadBalancer 10.68.183.105 <pending> 80:23531/TCP,443:30000/TCP 12d
#登陆
[root@iZbp1igh8gtzjj9sgk4cykZ jms_ops_all]# argocd login 10.68.183.105:80
WARNING: server certificate had error: tls: failed to verify certificate: x509: cannot validate certificate for 10.68.183.105 because it doesn't contain any IP SANs. Proceed insecurely (y/n)? yes
Username: admin
Password:
'admin:login' logged in successfully
Context '10.68.183.105:80' updated
命令行的方式修改密码
[root@iZbp1igh8gtzjj9sgk4cykZ jms_ops_all]# argocd account update-password
*** Enter password of currently logged in user (admin):
*** Enter new password for user admin:
*** Confirm new password for user admin:
Password updated
Context '10.68.183.105:80' updated
2、登陆WEB UI
打开浏览器访问 Argo CD 外部 UI,通过在浏览器中访问 IP/主机名进行登录,并使用上一步中设置的密码。
三、配置一个应用程序
1、project
项目提供了应用程序的逻辑分组,这在多个团队时非常有用。项目提供以下的功能:
- 限制可以部署的内容(受信任的git仓库)
- 限制应用程序可以部署的位置(目标集群和名称空间)
- 限制可以部署或不可部署的的对象类型(例如RBAC、CRD、Daemonset、NetworkPolicy等)
- 定义项目角色,以提供应用程序的RBAC
因为项目暂时不涉及到,所以不做就分析。具体操作参考官方文档:https://argo-cd.readthedocs.io/en/stable/user-guide/projects/
2、Repository
git仓库作为argoCD的唯一可信源。
ArgoCD CLI配置凭证
argocd repo add https://github.com/argoproj/argocd-example-apps --username <username> --password <password>
web UI配置
1.导航Settings/Repositories
2.单击Connect Repo using SSH
按钮,输入 URL 并粘贴 SSH 私钥
还可以通过tonken的方式
3.通过ssh的方式配置验证时会遇到known_hosts的错误,需要将known_hosts
文件导入 SSH 已知主机密钥
通过web 页面进行配置
3、 Application
1.通过UI创建一个应用
登录后,点击**+新应用**按钮,如下图:
为您的应用程序命名guestbook
,使用项目default
,并将同步策略保留为Manual
:
通过将存储库 url 设置为 github 存储库 url,将https://github.com/argoproj/argocd-example-apps.git存储库连接到 Argo CD,将修订保留为HEAD
,并将路径设置为guestbook
:
对于Destination,将集群 URL 设置为https://kubernetes.default.svc
(或in-cluster
集群名称),将命名空间设置为default
:
填写完以上信息后,点击UI顶部的Createguestbook
即可创建应用程序:
2.自动同步策略
自动同步策略允许ArgoCD在检测到GitRepo与实际状态之间存在差异的时候,自动启动同步操作的
- Prune Resource(自动修剪):集群上某个资源在GitRepo上找不到对应的配置时,自动删除集群上的该资源。
- Self Hesl(自愈):因为各种原因(如手动修改集群中的资源)集群上的资源的实时状态与GitRepo不匹配时,将自动与实际状态和GitRepo的期望状态同步。
注:
- 自动同步只发生在应用处于OutOfSync状态,ArgoCD并不会对处于Synced或者Error状态的Application进行同步
- 对于GitRepo上的一次提交,自动同步仅会执行一次,除非同时启用了Self-Heal机制
- 启用了自动同步的Application不支持RollBack
3.同步选项
同步选项,用于禁用或者启用同步过程中的某些特性
ApplyOutOfSyncOnly:仅对那些处于OutOfSync状态的资源进行同步操作
PruneProPagationPolicy:资源修剪传播策略,默认为foreground策略,主要用于有依赖的应用程序
PrunLast:在同步操作的最后在执行修剪操作,即为等资源都部署并且为健康状态后再进行修剪
Replace:对资源的修改,以replace的方式进行,而非默认的apply
FaliOnSharedResource:默认的同步操作不会认为GitRepo中定义的资源被其他应用所使用,将该选项配置为true,意味着在发现该资源已经被其他application所使用时,则将同步状态设置为fail
RespectIgnoreDifference:在同步阶段忽略的期望的字段,即不进行变更的字段
Validation:是否执行资源规范格式的检验,相当于kubctl apply --validation={true|false},默认为true