- 概述
- 要求
- 安装
- 安装后
- 迁移和升级
- 监控和警示
- 集群管理
- 特定于产品的配置
- 故障排除
在 ArgoCD 中管理集群
概述
ArgoCD 是用于 Kubernetes 的声明性 GitOps 持续交付工具。它被设计为 Kubernetes 控制器,可持续监控正在运行的 UiPath™ 应用程序,并根据 Docker 注册表中指定的所需目标状态检查当前状态。有关更多详细信息,请参阅ArgoCD 文档。
管理员可以通过简单的用户界面或 CLI 概览集群、配置、应用程序状态和运行状况。 ArgoCD 附带自己的开源捆绑 Redis,该 Redis 支持 HA 和非 HA 配置。
Automation Suite 在以下场景中使用 ArgoCD:
- 安装和升级 Fabric 组件和核心 UiPath™ 服务。
- 在指定目标环境中自动部署所需的应用程序状态。 ArgoCD 遵循 GitOps 模式,即使用 Git/helm 存储库作为定义所需应用程序状态的事实来源。
- 跟踪安装状态。 如果安装在特定点失败,并且您在一段时间后继续安装,则 ArgoCD 将跳过已同步的所有步骤,并从失败点继续。
- 对应用程序进行自我修复。 如果您错误地删除了任何对象,则清单将自动同步。
ArgoCD 只读方案
您可以在以下只读方案中使用 ArgoCD 帐户 :
- 在简单的界面中将所有应用程序、Pod 和服务可视化
- 监控所有应用程序、Pod 和服务的运行状况
- 快速识别部署中的问题
- 重新同步集群中的应用程序
ArgoCD 高级场景
除本节中列出的设置或参数外,不得修改任何其他设置或参数。
您可以在以下高级场景中使用 ArgoCD 管理员帐户:
-
更改参数仅用于调试目的;例如,禁用自我修复;
-
删除 Pod;
-
故障排除;
-
管理 Orchestrator 自定义配置;例如,为每个租户设置加密密钥;
-
更新数据库连接字符串;
-
正在同步应用程序。
备注:在删除或更改用户界面上的高级配置之前,请务必参阅适当的 UiPath™ 文档。
访问 ArgoCD
ArgoCD 支持两种身份验证方法:
- 用户名和密码– 默认身份验证方法;
- SSO – recommended authentication method. You can enable SSO authentication post-installation. For instructions, see Enabling SSO for ArgoCD.
用户名和密码身份验证
访问 ArgoCD 管理员帐户
要使用用户名和密码访问 ArgoCD 管理员帐户,请执行以下步骤:
-
访问以下 URL:
https://alm.${CONFIG_CLUSTER_FQDN}。 -
输入以下用户名: admin 。
-
访问密码:
kubectl get secret -n argocd argocd-initial-admin-secret -o jsonpath='{.data.password}' | base64 -dkubectl get secret -n argocd argocd-initial-admin-secret -o jsonpath='{.data.password}' | base64 -d -
输入您的密码。
重要提示:只能将 ArgoCD 管理员帐户用于高级方案。 如果不小心使用,它可能会导致对集群的破坏性操作。
SSO 身份验证
要使用 SSO 访问 ArgoCD,请执行以下步骤:
- 选择 ArgoCD 登录页面上的 SSO 按钮。
- 输入公司域凭据。
为 ArgoCD 启用 SSO
概述
要启用 SSO 身份验证,必须使用 uipathctl 命令行工具。
准备配置文件
在为 ArgoCD 启用 SSO 之前,您必须生成 RBAC 文件。
RBAC 文件
RBAC 文件包含访问规则。
有关内置角色定义的详细信息,请参阅ArgoCD 文档。
For details on the ArgoCD account types and their permissions, see Managing the cluster in ArgoCD.
我们建议在定义组时使用这些角色,但您可以创建自己的权限集。
配置 RBAC 文件
-
通过运行以下命令,创建名为
policy.csv的文件:uipathctl config argocd generate-rbacuipathctl config argocd generate-rbac -
将以下内容添加到
policy.csv文件中并保存:p, role:uipath-sync, applications, get, */*, allow p, role:uipath-sync, applications, sync, */*, allow g, argocdro, role:uipath-syncp, role:uipath-sync, applications, get, */*, allow p, role:uipath-sync, applications, sync, */*, allow g, argocdro, role:uipath-sync -
通过将以下行附加到
policy.csvRBAC 文件,将 RBAC 组与内置管理员角色和 UiPath™ argocdro只读角色相关联:g, <your_ldap_readonly_group_name>, role:uipath-sync g, <your_ldap_admin_group_name>, role:adming, <your_ldap_readonly_group_name>, role:uipath-sync g, <your_ldap_admin_group_name>, role:admin -
保存更新的
policy.csvRBAC 文件。 -
在
argo-cd-rbac-cm配置映射中在policy.csv部分之后创建一个名为policy.default的新部分,如以下示例所示:policy.csv: | p, role:org-admin, applications, *, /, allow p, role:org-admin, clusters, get, *, allow p, role:org-admin, repositories, get, *, allow p, role:org-admin, repositories, create, *, allow p, role:org-admin, repositories, update, *, allow p, role:org-admin, repositories, delete, *, allow g, "694afc07-6767-8998-bf84-ab80b53379df", role:org-admin # (azure group assigned to role) policy.default: role:readonlypolicy.csv: | p, role:org-admin, applications, *, /, allow p, role:org-admin, clusters, get, *, allow p, role:org-admin, repositories, get, *, allow p, role:org-admin, repositories, create, *, allow p, role:org-admin, repositories, update, *, allow p, role:org-admin, repositories, delete, *, allow g, "694afc07-6767-8998-bf84-ab80b53379df", role:org-admin # (azure group assigned to role) policy.default: role:readonly -
请按照 ArgoCD 文档中的说明使用 OIDC 配置 SSO。
示例:
如果 ArgoCD 管理员的 LDAP 组是管理员,而 ArgoCD 只读用户的 LDAP 组是读取者,则 RBAC 文件应类似于以下示例:
p, role:uipath-sync, applications, get, */*, allow
p, role:uipath-sync, applications, sync, */*, allow
g, argocdro, role:uipath-sync
g, Readers, role:uipath-sync
g, Administrators, role:admin
p, role:uipath-sync, applications, get, */*, allow
p, role:uipath-sync, applications, sync, */*, allow
g, argocdro, role:uipath-sync
g, Readers, role:uipath-sync
g, Administrators, role:admin
对于更高级的用例,以下示例显示了默认的 RBAC 文件:
# Built-in policy which defines two roles: role:readonly and role:admin,
# and additionally assigns the admin user to the role:admin role.
# There are two policy formats:
# 1. Applications, logs, and exec (which belong to a project):
# p, <user/group>, <resource>, <action>, <project>/<object>
# 2. All other resources:
# p, <user/group>, <resource>, <action>, <object>
p, role:readonly, applications, get, */*, allow
p, role:readonly, certificates, get, *, allow
p, role:readonly, clusters, get, *, allow
p, role:readonly, repositories, get, *, allow
p, role:readonly, projects, get, *, allow
p, role:readonly, accounts, get, *, allow
p, role:readonly, gpgkeys, get, *, allow
p, role:readonly, logs, get, */*, allow
p, role:admin, applications, create, */*, allow
p, role:admin, applications, update, */*, allow
p, role:admin, applications, delete, */*, allow
p, role:admin, applications, sync, */*, allow
p, role:admin, applications, override, */*, allow
p, role:admin, applications, action/*, */*, allow
p, role:admin, applicationsets, get, */*, allow
p, role:admin, applicationsets, create, */*, allow
p, role:admin, applicationsets, update, */*, allow
p, role:admin, applicationsets, delete, */*, allow
p, role:admin, certificates, create, *, allow
p, role:admin, certificates, update, *, allow
p, role:admin, certificates, delete, *, allow
p, role:admin, clusters, create, *, allow
p, role:admin, clusters, update, *, allow
p, role:admin, clusters, delete, *, allow
p, role:admin, repositories, create, *, allow
p, role:admin, repositories, update, *, allow
p, role:admin, repositories, delete, *, allow
p, role:admin, projects, create, *, allow
p, role:admin, projects, update, *, allow
p, role:admin, projects, delete, *, allow
p, role:admin, accounts, update, *, allow
p, role:admin, gpgkeys, create, *, allow
p, role:admin, gpgkeys, delete, *, allow
p, role:admin, exec, create, */*, allow
g, role:admin, role:readonly
g, admin, role:admin
# Built-in policy which defines two roles: role:readonly and role:admin,
# and additionally assigns the admin user to the role:admin role.
# There are two policy formats:
# 1. Applications, logs, and exec (which belong to a project):
# p, <user/group>, <resource>, <action>, <project>/<object>
# 2. All other resources:
# p, <user/group>, <resource>, <action>, <object>
p, role:readonly, applications, get, */*, allow
p, role:readonly, certificates, get, *, allow
p, role:readonly, clusters, get, *, allow
p, role:readonly, repositories, get, *, allow
p, role:readonly, projects, get, *, allow
p, role:readonly, accounts, get, *, allow
p, role:readonly, gpgkeys, get, *, allow
p, role:readonly, logs, get, */*, allow
p, role:admin, applications, create, */*, allow
p, role:admin, applications, update, */*, allow
p, role:admin, applications, delete, */*, allow
p, role:admin, applications, sync, */*, allow
p, role:admin, applications, override, */*, allow
p, role:admin, applications, action/*, */*, allow
p, role:admin, applicationsets, get, */*, allow
p, role:admin, applicationsets, create, */*, allow
p, role:admin, applicationsets, update, */*, allow
p, role:admin, applicationsets, delete, */*, allow
p, role:admin, certificates, create, *, allow
p, role:admin, certificates, update, *, allow
p, role:admin, certificates, delete, *, allow
p, role:admin, clusters, create, *, allow
p, role:admin, clusters, update, *, allow
p, role:admin, clusters, delete, *, allow
p, role:admin, repositories, create, *, allow
p, role:admin, repositories, update, *, allow
p, role:admin, repositories, delete, *, allow
p, role:admin, projects, create, *, allow
p, role:admin, projects, update, *, allow
p, role:admin, projects, delete, *, allow
p, role:admin, accounts, update, *, allow
p, role:admin, gpgkeys, create, *, allow
p, role:admin, gpgkeys, delete, *, allow
p, role:admin, exec, create, */*, allow
g, role:admin, role:readonly
g, admin, role:admin
为 ArgoCD 启用 SSO
准备好 RBAC 文件后,您可以为 ArgoCD 启用 SSO:
-
将以下行添加到
input.json文件:{ "fabric": { "argocd_rbac_config_file": "/path/to/policy.csv" } }{ "fabric": { "argocd_rbac_config_file": "/path/to/policy.csv" } } -
通过运行以下命令应用配置:
uipathctl manifest apply input.json --versions versions.jsonuipathctl manifest apply input.json --versions versions.json