前提条件
- Kubernetes集群在本地、minikube或任何云供应商上运行
- GitHub或Gitlab账户
首先,让我们了解ArgoCD的几个概念
ArgoCD是一个GitOps持续交付工具,这意味着你要定义所有你想在Kubernetes集群中部署的应用程序、清单和资源,你在你的GitHub仓库中定义所有这些,然后ArgoCD将从你的GitHub仓库中提取变化并为你在Kubernetes集群中部署资源。
它支持:
- Kubernetes YAML文件
- 舵手图
- Kustomize文件
- 可生成Kubernetes清单的模板文件。
使用ArgoCD的持续交付工作流程
- 首先,在Kubernetes集群中部署ArgoCD。
- 第二,配置ArgoCD并告诉它连接到特定的GitHub仓库。
- 第三,如果仓库里有什么变化,它就会自动拉动这些变化并在集群中应用。
GitHub 仓库的最佳实践
- 首先,为应用程序的源代码和应用程序的配置建立一个单独的 Git 仓库。
- 其次,为系统配置建立一个单独的仓库。
只要配置文件发生变化,集群中的ArgoCD就会立即知道,因为我们在一开始就配置了它,让它不断监测变化,它会自动在集群中拉取并应用变化。
如何创建应用程序(使用用户接口)
1.在Kubernetes集群上设置ArgoCD
(a) 首先,创建命名空间
kubectl create namespace argocd
(b) 其次,应用YAML文件(该文件安装了所有必要的东西)。
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
(c) 第三,检查pods
kubectl get pods -n argocd


2.访问Argocd用户界面
(a) 检查argocd命名空间中的服务
kubectl get service -n argocd


检查argocd-server
在我的例子中,服务类型是LoadBalancer。
(b) 现在,访问ArgoCD用户界面(在LoadBalancer中,只需复制External-ip)。


(c) 登录到ArgoCD服务器
管理员的密码是以argocd-initial-admin-secret为名存储的,同时也会对密码进行解码。
kubectl get secrets -n argocd argocd-initial-admin-secret -o yaml
echo ZVF1ZHVZU21OR1RqTFViWg== | base64 --decode


复制这个密码并将其粘贴到用户界面中,忽略%符号。
现在,登录


目前,它是空的
让我们开始创建应用程序
首先,通过用户界面
点击 "+NEW APP",并填写详细信息,如:------。
- **应用程序名称-**演示
- **项目 -**默认
- **同步策略--**手动
- **存储库的URL--**你的应用程序所在的位置
- **路径--**YAML文件所在的位置
- **集群URL-**选择你正在使用的集群URL
- **命名空间-**默认
其余的空间暂时留空






我们的应用程序被创建
此外,对于这种 不同步状态,我们必须启用自动同步策略,该策略存在于APP DETAILS中,点击该演示程序即可。




现在我们的应用程序的状态是健康的。
所以,这就是通过用户界面创建应用程序的第一种方式。
让我们使用CLI来创建应用程序吧
对于CLI,首先,我们必须安装argocd二进制文件
wget https://github.com/argoproj/argo-cd/releases/download/v2.4.2/argocd-linux-amd64
改变二进制文件的名称(可选)。
mv argocd-linux-amd64 argocd
改变权限
chmod +x argocd
把这个文件移到另一个目录
sudo mv argocd /usr/local/bin
现在,输入argocd帮助以检查可用的命令
使用你的集群IP和端口登录到服务器,在我的例子中,服务是LoadBalancer,所以我使用的是External-IP。
argocd login [external-ip]


提供与你在 UI登录时使用的相同的用户名和密码 , 。
现在,让我们来创建应用程序。因此,我将使用与UI演示中相同的例子,但使用不同的应用程序名称。
argocd app create [app-name] --project [name] --repo [git repo URL] --path [app folder] --dest-namespace [namespace] --dest-server [server URL]
argocd app create demo1 --project default --repo https://github.com/Jasmine-Harit/gitops-certification-examples.git --path ./simple-app --dest-namespace default --dest-server https://kubernetes.default.svc
关键点:
- **app-name-**是你想给你的应用程序的名字(如demo1)。
- project--是创建的项目的名称或默认名称
- **app文件夹--**是存储库中应用程序配置的路径
- **git repo--**是配置文件所在的git仓库的URL。
- **dest-namespace-**在集群中部署应用程序的目标命名空间的名称
- **服务器URL--使用kubernetes.default.svc**来引用部署ArgoCD的同一个集群。




现在,让我们检查一下应用程序的列表和某个特定应用程序的信息。
argocd app list
argocd app get [app-name]
argocd app get demo1


所以,这就是你如何使用CLI创建应用程序的方法
另一种创建应用程序的方法是写一个YAML文件
在这个演示中,我将使用Gitlab的例子。
(a) 克隆存储库并创建YAML文件
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: argo-application
namespace: argocd
spec:
project: default
source:
repoURL: https://gitlab.com/jasmine.harit/argocd-app-config.git
targetRevision: HEAD
path: dev
destination:
server: https://kubernetes.default.svc
namespace: myapp
syncPolicy:
syncOptions:
- CreateNamespace=true
automated:
selfHeal: true
prune: true
**要记住的要点:--**在自动化里面,有两件事,selfHeal用于你直接对集群进行修改,所以argocd会自动检测,prune用于你从仓库中移除或删除文件,argo也会检测。
现在,使用这个YAML
kubectl apply -f [yaml file name]
kubectl apply -f application.yaml


我们的应用程序已成功创建
结论:
因此,这些是一些不同的方法,你可以通过这些方法来创建你的Argo应用程序并轻松地管理它们。