Argo CD 应用程序
使用 Argo CD 仪表板、oc 工具或 GitOps CLI 在 OpenShift 集群中创建并部署应用程序
摘要
第 1 章 使用 Argo CD 部署 Spring Boot 应用程序 复制链接链接已复制到粘贴板!
使用 Argo CD,您可以使用 Argo CD 仪表板或使用 oc
工具将应用程序部署到 OpenShift Container Platform 集群。
1.1. 使用 Argo CD 仪表板创建应用程序 复制链接链接已复制到粘贴板!
Argo CD 提供了一个仪表板,供您创建应用程序。
先决条件
- 以管理员身份登录到 OpenShift Container Platform 集群。
- 您已在 OpenShift Container Platform 集群中安装了 Red Hat OpenShift GitOps Operator。
- 已登陆到 Argo CD 实例。
流程
- 在 Argo CD 控制面板中,单击 NEW APP 以添加新 Argo CD 应用。
对于此工作流,使用以下配置创建一个 spring-petclinic 应用程序:
- 应用程序名称
-
spring-petclinic
- project
-
default
- 同步策略
-
自动
- 仓库 URL
-
https://github.com/redhat-developer/openshift-gitops-getting-started
- 修订
-
HEAD
- 路径
-
app
- 目的地
-
https://kubernetes.default.svc
- 命名空间
-
spring-petclinic
- 单击 CREATE 以创建应用程序。
- 打开 Web 控制台的 Administrator 视角,再展开 Administration → Namespaces。
-
搜索并选择命名空间,然后在 Label 字段中输入
argocd.argoproj.io/managed-by=openshift-gitops
,以便openshift-gitops
命名空间中的 Argo CD 实例可以管理您的命名空间。
1.2. 使用 oc 工具创建应用程序 复制链接链接已复制到粘贴板!
您可以使用 oc
工具在终端中创建 Argo CD 应用程序。
先决条件
- 您已在 OpenShift Container Platform 集群中安装了 Red Hat OpenShift GitOps Operator。
- 已登陆到 Argo CD 实例。
流程
下载 示例应用程序:
git clone git@github.com:redhat-developer/openshift-gitops-getting-started.git
$ git clone git@github.com:redhat-developer/openshift-gitops-getting-started.git
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建应用程序:
oc create -f openshift-gitops-getting-started/argo/app.yaml
$ oc create -f openshift-gitops-getting-started/argo/app.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行
oc get
命令以查看所创建的应用程序:oc get application -n openshift-gitops
$ oc get application -n openshift-gitops
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在部署应用程序的命名空间中添加标签,以便
openshift-gitops
命名空间中的 Argo CD 实例可以管理它:oc label namespace spring-petclinic argocd.argoproj.io/managed-by=openshift-gitops
$ oc label namespace spring-petclinic argocd.argoproj.io/managed-by=openshift-gitops
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.3. 验证 Argo CD 自助行为 复制链接链接已复制到粘贴板!
Argo CD 持续监控已部署应用程序的状态,检测 Git 中指定清单和集群中的实时更改之间的差别,然后自动更正它们。这个行为被称为自我管理。
您可以在 Argo CD 中测试并观察自我管理的行为。
先决条件
- 您已在 OpenShift Container Platform 集群中安装了 Red Hat OpenShift GitOps Operator。
- 已登陆到 Argo CD 实例。
-
已部署并配置
app-spring-petclinic
应用程序示例。
流程
-
在 Argo CD 仪表板中,验证您的应用程序是否具有
Synced
状态。 -
点 Argo CD 仪表板中的
app-spring-petclinic
标题,查看部署到集群中的应用程序资源。 - 在 OpenShift Container Platform web 控制台中进入 Developer 视角。
修改 Spring PetClinic 部署,并将更改提交到 Git 仓库的
app/
目录。Argo CD 将自动将更改部署到集群。- Fork OpenShift GitOps getting started repository。
-
在
deployment.yaml
文件中,将failureThreshold
值改为5
。 在部署集群中,运行以下命令验证
failureThreshold
字段更改的值:oc edit deployment spring-petclinic -n spring-petclinic
$ oc edit deployment spring-petclinic -n spring-petclinic
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
通过修改集群上的部署并扩展到两个容器集来测试自我修复行为,同时在 OpenShift Container Platform Web 控制台中观察应用程序。
运行以下命令修改部署:
oc scale deployment spring-petclinic --replicas 2 -n spring-petclinic
$ oc scale deployment spring-petclinic --replicas 2 -n spring-petclinic
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在 OpenShift Container Platform Web 控制台中,请注意部署最多扩展两个 pod,并立即缩减到一个 pod。Argo CD 检测到与 Git 存储库的区别,并在 OpenShift Container Platform 集群中自动修复应用程序。
- 在 Argo CD 仪表板中,点 app-spring-petclinic 标题 → APP DETAILS → EVENTS。EVENTS 选项卡显示以下事件: Argo CD 检测集群中缺少同步部署资源,然后重新同步 Git 存储库进行更正。
第 2 章 使用 GitOps CLI 创建应用程序 复制链接链接已复制到粘贴板!
使用 Argo CD,您可以使用 GitOps argocd
CLI 在 OpenShift Container Platform 集群中创建应用程序。
2.1. 使用 GitOps CLI 在默认模式中创建应用程序 复制链接链接已复制到粘贴板!
您可以使用 GitOps argocd
CLI 在默认模式中创建应用程序。
先决条件
- 您已在 OpenShift Container Platform 集群中安装了 Red Hat OpenShift GitOps Operator。
-
已安装 OpenShift CLI(
oc
)。 -
已安装 Red Hat OpenShift GitOps
argocd
CLI。 - 已登陆到 Argo CD 实例。
流程
获取 Argo CD 服务器的
admin
帐户密码:ADMIN_PASSWD=$(oc get secret openshift-gitops-cluster -n openshift-gitops -o jsonpath='{.data.admin\.password}' | base64 -d)
$ ADMIN_PASSWD=$(oc get secret openshift-gitops-cluster -n openshift-gitops -o jsonpath='{.data.admin\.password}' | base64 -d)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取 Argo CD 服务器 URL:
SERVER_URL=$(oc get routes openshift-gitops-server -n openshift-gitops -o jsonpath='{.status.ingress[0].host}')
$ SERVER_URL=$(oc get routes openshift-gitops-server -n openshift-gitops -o jsonpath='{.status.ingress[0].host}')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
admin
帐户密码并用单引号括起来来登录到 Argo CD 服务器:重要用单引号括起密码可确保 shell 不会误解特殊字符,如
$
。始终使用单引号括起密码的字面值。argocd login --username admin --password ${ADMIN_PASSWD} ${SERVER_URL}
$ argocd login --username admin --password ${ADMIN_PASSWD} ${SERVER_URL}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
argocd login --username admin --password '<password>' openshift-gitops.openshift-gitops.apps-crc.testing
$ argocd login --username admin --password '<password>' openshift-gitops.openshift-gitops.apps-crc.testing
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过列出所有应用程序,验证您是否可以在默认模式下运行
argocd
命令:argocd app list
$ argocd app list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果配置正确,则现有应用程序将使用以下标头列出:
输出示例
NAME CLUSTER NAMESPACE PROJECT STATUS HEALTH SYNCPOLICY CONDITIONS REPO PATH TARGET
NAME CLUSTER NAMESPACE PROJECT STATUS HEALTH SYNCPOLICY CONDITIONS REPO PATH TARGET
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以默认模式创建应用程序:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 标记
spring-petclinic
目标命名空间,使其由openshif-gitops
Argo CD 实例管理:oc label ns spring-petclinic "argocd.argoproj.io/managed-by=openshift-gitops"
$ oc label ns spring-petclinic "argocd.argoproj.io/managed-by=openshift-gitops"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出可用的应用程序,以确认应用程序已成功创建并重复命令,直到应用程序具有
Healthy
和Synced
状态:argocd app list
$ argocd app list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2. 使用 GitOps CLI 以核心模式创建应用程序 复制链接链接已复制到粘贴板!
您可以使用 GitOps argocd
CLI 在 core
模式中创建应用程序。
先决条件
- 您已在 OpenShift Container Platform 集群中安装了 Red Hat OpenShift GitOps Operator。
-
已安装 OpenShift CLI(
oc
)。 -
已安装 Red Hat OpenShift GitOps
argocd
CLI。
流程
使用
oc
CLI 工具登录到 OpenShift Container Platform 集群:oc login -u <username> -p <password> <server_url>
$ oc login -u <username> -p <password> <server_url>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
oc login -u kubeadmin -p '<password>' https://api.crc.testing:6443
$ oc login -u kubeadmin -p '<password>' https://api.crc.testing:6443
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查
kubeconfig
文件中是否正确设置了上下文:oc config current-context
$ oc config current-context
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将当前上下文的默认命名空间设置为
openshift-gitops
:oc config set-context --current --namespace openshift-gitops
$ oc config set-context --current --namespace openshift-gitops
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置以下环境变量来覆盖 Argo CD 组件名称:
export ARGOCD_REPO_SERVER_NAME=openshift-gitops-repo-server
$ export ARGOCD_REPO_SERVER_NAME=openshift-gitops-repo-server
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过列出所有应用程序,验证您是否可以在
core
模式下运行argocd
命令:argocd app list --core
$ argocd app list --core
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果配置正确,则现有应用程序将使用以下标头列出:
输出示例
NAME CLUSTER NAMESPACE PROJECT STATUS HEALTH SYNCPOLICY CONDITIONS REPO PATH TARGET
NAME CLUSTER NAMESPACE PROJECT STATUS HEALTH SYNCPOLICY CONDITIONS REPO PATH TARGET
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以
core
模式创建应用程序:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 标记
spring-petclinic
目标命名空间,使其由openshif-gitops
Argo CD 实例管理:oc label ns spring-petclinic "argocd.argoproj.io/managed-by=openshift-gitops"
$ oc label ns spring-petclinic "argocd.argoproj.io/managed-by=openshift-gitops"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出可用的应用程序,以确认应用程序已成功创建并重复命令,直到应用程序具有
Healthy
和Synced
状态:argocd app list --core
$ argocd app list --core
Copy to Clipboard Copied! Toggle word wrap Toggle overflow