拓冰建站拓冰建站
首页 / 资讯中心 / 正文

集成 OpenUnison 与 Argo CD:基于 OIDC 实现 Kubernetes 与 GitOps 单点登录实战

集成 OpenUnison 与 Argo CD基于 OIDC 实现 Kubernetes 与 GitOps 单点登录实战【免费下载链接】argo-cdDeclarative Continuous Deployment for Kubernetes项目地址: https://gitcode.com/GitHub_Trending/ar/argo-cd本指南围绕 docs/operator-manual/user-management/openunison.md 展开介绍如何将 Argo CD 作为 OIDC 客户端接入 OpenUnison 身份平台实现 Web 界面与 CLI 的双通道单点登录SSO并在 OpenUnison 门户中挂载一个直达 Argo CD 的徽章入口。读完本文你将掌握在 OpenUnison 中创建Trust与PortalUrl、在argocd-cm中配置oidc.config、以及基于groups声明编写argocd-rbac-cm策略的完整流程并了解 Argo CD 侧 OIDC 配置的底层解析实现。为什么用 OpenUnison 打通 Argo CD 登录OpenUnison 是一个面向 Kubernetes 的身份与访问管理平台支持基于 LDAP、Active Directory、ADFS 等目录服务的认证并以 OIDC/OAuth2 协议对外暴露身份能力。在 Argo CD 的 SSO 体系里它属于已有 OIDC 提供方Existing OIDC Provider这条集成路径不需要借助 Argo CD 内置的 Dex而是让 Argo CD 直接以 OIDC 客户端的身份向 OpenUnison 发起授权码流程见 docs/operator-manual/user-management/index.md 中 Existing OIDC Provider 一节。这套集成能带来两个直接收益一个入口访问所有系统用户登录 OpenUnison 门户后点击 Argo CD 徽章即可免密进入 Argo CD Web 界面同时 Kubernetes 与 GitOps 资源共用同一套身份认证CLI 同样免密执行argocd login时会自动拉起浏览器跳转到 OpenUnison 完成认证配合本地回环地址回调命令行工具也能获得 SSO 会话。前置条件准备一套运行中的 OpenUnison 1.0.20 及以上版本实例本仓库文档以此版本为前提并拥有可修改openunison与argocd两个命名空间资源的集群权限。第一步在 OpenUnison 中创建 TrustTrust是 OpenUnison 的 OIDC 服务端配置对象用于声明哪个客户端client可以接入、回调地址是什么、令牌如何签发。将下面的对象应用到openunison命名空间唯一必须修改的地方是把argocd.apps.domain.com替换为你实际的 Argo CD 访问域名apiVersion: openunison.tremolo.io/v1 kind: Trust metadata: name: argocd namespace: openunison spec: accessTokenSkewMillis: 120000 accessTokenTimeToLive: 1200000 authChainName: login-service clientId: argocd codeLastMileKeyName: lastmile-oidc codeTokenSkewMilis: 60000 publicEndpoint: true redirectURI: - https://argocd.apps.domain.com/auth/callback - http://localhost:8085/auth/callback signedUserInfo: true verifyRedirect: true其中各字段的作用如下字段值说明clientIdargocdOIDC 客户端标识必须与 Argo CD 侧oidc.config中的clientID保持一致redirectURI两条 URLhttps://argocd.apps.domain.com/auth/callback服务于 Web 界面http://localhost:8085/auth/callback是 CLI 本地回环回调地址缺了它argocd命令行将无法完成登录accessTokenTimeToLive1200000毫秒即 20 分钟访问令牌有效期accessTokenSkewMillis1200002 分钟令牌时间偏移量用于容忍客户端与服务端时钟偏差codeTokenSkewMilis600001 分钟授权码有效期偏移publicEndpointtrue允许公开访问该信任端点signedUserInfotrue对 UserInfo 响应做签名verifyRedirecttrue校验重定向 URI 必须在白名单内防止开放重定向authChainNamelogin-service指定使用的认证链值得强调的是这里不需要为 Argo CD 配置 client secret。原文档明确指出引入 secret 会导致 CLI 无法正常工作——因为argocd命令行在本地回环启动回调服务时无法持有并发送客户端密钥只能以公开客户端public client方式完成授权码交换。第二步在 OpenUnison 门户创建 Argo CD 徽章徽章本质上是 OpenUnison 的一个PortalUrl对象用于在门户页面渲染一个可点击的入口卡片。仓库中提供了现成模板 docs/assets/openunison-argocd-url.yaml其核心结构如下apiVersion: openunison.tremolo.io/v1 kind: PortalUrl metadata: labels: openunison.io/instance: orchestra name: argocd namespace: openunison spec: label: ArgoCD org: B158BD40-0C1B-11E3-8FFD-0800200C9A66 url: https://argocd.apps.domain.com/auth/login icon: iVBORw0KGgoAAAANSUhEUgAA...Base64 编码的 Argo CD 图标 azRules: - constraint: oTremolo scope: dn使用步骤下载该模板把spec.url改成你自己的 Argo CD 登录地址形式为https://你的域名/auth/loginicon字段内嵌的 Base64 图标可保留默认值也可以替换为你自己的品牌图标将更新后的PortalUrl应用到openunison命名空间。应用完成后用户登录 OpenUnison 门户即可看到 Argo CD 徽章点击会在新窗口打开 Argo CD 且已处于登录态。第三步在 Argo CD 侧配置 OIDC SSO接下来在argocd命名空间中更新argocd-cmConfigMap添加url和oidc.config两段配置并把issuer替换为你的 OpenUnison 地址apiVersion: v1 kind: ConfigMap metadata: name: argocd-cm data: url: https://argocd.apps.domain.com oidc.config: |- name: OpenUnison issuer: https://k8sou.apps.192-168-2-144.nip.io/auth/idp/k8sIdp clientID: argocd requestedScopes: [openid, profile, email, groups]各配置项含义urlArgo CD 自身的对外访问地址用于拼装回调地址/auth/callback与生成登录跳转oidc.config.name登录页上显示的身份提供方名称这里填OpenUnisonoidc.config.issuerOpenUnison 的 OIDC issuer 地址其下应存在.well-known/openid-configuration发现文档oidc.config.clientID必须与 OpenUnisonTrust中的clientId一致即argocdoidc.config.requestedScopes请求的授权范围groups作用域用于让 OpenUnison 把用户组信息放入groups声明供后续 RBAC 使用。从源码实现看argocd-cm中oidc.config这个键由 util/settings/settings.go 中的settingsOIDCConfigKey oidc.config读取随后通过unmarshalOIDCConfig解析为内部的OIDCConfig结构体见 util/settings/settings.go。该结构体除上述字段外还支持cliClientID、enableUserInfoGroups、userInfoPath、refreshTokenThreshold、enablePKCEAuthentication、rootCA等可选能力覆盖了从 UserInfo 端点补充组信息令牌即将过期时用 refresh token 静默续期自定义 CA 校验等进阶场景。配置保存后由argocd-server自动热加载无需重启组件。验证 Web 与 CLI 登录一切配置正确后Web 端登录 OpenUnison 门户点击 Argo CD 徽章新窗口打开 Argo CD 且已自动完成认证若直接访问 Argo CD会被重定向到 OpenUnison 的登录页CLI 端执行argocd login https://argocd.apps.domain.com --sso会拉起浏览器跳转到 OpenUnison认证成功后 CLI 通过http://localhost:8085/auth/callback本地回调接收令牌并完成登录。注意回调地址必须与 OpenUnisonTrust中声明的redirectURI完全匹配否则 OpenUnison 会以verifyRedirect策略拒绝回调。第四步基于 groups 声明配置 RBAC 策略OpenUnison 会把用户所属组写入 ID 令牌的groups声明中。登录后在 Argo CD 门户的 user-info 区域可以看到这些声明。若 OpenUnison 后端是 LDAP、Active Directory 或 ADFS组名会以完整 Distinguished NameDN形式下发例如CNk8s_login_cluster_admins,CNUsers,DCent2k12,DCdomain,DCcom由于 DN 中包含逗号,在argocd-rbac-cm的policy.csv中必须用双引号把组名整体包裹否则策略解析器会把逗号误判为字段分隔符。将上述 DN 组授予管理员角色的写法如下apiVersion: v1 kind: ConfigMap metadata: name: argocd-rbac-cm namespace: argocd data: policy.csv: | g, CNk8s_login_cluster_admins,CNUsers,DCent2k12,DCdomain,DCcom, role:admin这里用到的role:admin与role:readonly是 Argo CD 内置预定义角色其权限矩阵定义在 assets/builtin-policy.csvrole:readonly对 applications、applicationsets、clusters、repositories、projects 等资源拥有get权限role:admin则拥有完整的增删改查与同步权限。g, 组, role:admin这条映射即把 SSO 组绑定到该角色。关于 SSO 组映射、scopes字段以及更细粒度的项目级角色配置可进一步参阅 docs/operator-manual/rbac.md。一个典型的最小策略组合实际生产环境通常会同时包含管理员组与只读组data: policy.csv: | g, CNk8s_login_cluster_admins,CNUsers,DCent2k12,DCdomain,DCcom, role:admin g, CNk8s_login_cluster_viewers,CNUsers,DCent2k12,DCdomain,DCcom, role:readonly补充说明与排障要点无需 clientSecretOpenUnison 集成中 Argo CD 是公开 OIDC 客户端argocd-cm里不需要也不能配置clientSecretCLI 无法持有密钥。这与 Okta、Auth0 等需要 secret 的集成方式不同对比见 docs/operator-manual/user-management/index.md。issuer 写错的表现如果issuer无法访问或路径错误Argo CD 在登录时无法拉取 OIDC 发现文档表现为跳转 OpenUnison 失败或令牌校验报错。可用curl https://issuer/.well-known/openid-configuration先行确认。组变更需要重新认证与 Argo CD 整体 OIDC 行为一致groups 声明在令牌签发时固化用户组的增删要等重新登录后才会反映到 RBAC 决策中参见 docs/operator-manual/user-management/index.md 中关于组信息刷新时机的警告。DN 含逗号必须加引号这是本集成最易踩的坑policy.csv是类 CSV 语法未加引号的 DN 会被拆成多个 token 导致策略失效。通过以上四步你就完成了 Argo CD 与 OpenUnison 的双向集成门户单点进入、Web/CLI 双通道免密、基于目录服务组的细粒度 RBAC让 Kubernetes 集群与 GitOps 交付共用一套企业身份体系。【免费下载链接】argo-cdDeclarative Continuous Deployment for Kubernetes项目地址: https://gitcode.com/GitHub_Trending/ar/argo-cd创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门