如何在ArgoCD中创建应用程序

1,056 阅读4分钟

前提条件

  • 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应用程序并轻松地管理它们。