前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ArgoCD 用户管理、RBAC 控制、脚本登录、App 同步

ArgoCD 用户管理、RBAC 控制、脚本登录、App 同步

作者头像
我的小碗汤
发布2023-03-19 17:34:54
1.3K0
发布2023-03-19 17:34:54
举报
文章被收录于专栏:我的小碗汤我的小碗汤

命令行登录

参考:argocd 登录登出[1]

登录:

代码语言:javascript
复制
echo y | argocd login argocd-server.argocd.svc.cluster.local --password 'argo@admin.smallsoup' --username admin

登出:

代码语言:javascript
复制
argocd logout argocd-server.argocd.svc.cluster.local

创建用户、授权

创建用户

参考:用户管理[2]

在 argocd/argocd-cm 中增加一个 gitops 用户,有生成 apiKey 和 login 权限。

代码语言:javascript
复制
 apiVersion: v1
 data:
   accounts.gitops: apiKey, login
 kind: ConfigMap
 metadata:
   labels:
     app.kubernetes.io/name: argocd-cm
     app.kubernetes.io/part-of: argocd
   name: argocd-cm
   namespace: argocd

修改后,会热加载,无需重启任何服务。

用 admin 用户登录后,修改 gitops 的密码为 gitops@smallsoup(注意 current-password 是当前登录用户的密码,如果用 admin 登录的,就是 admin 的密码)

代码语言:javascript
复制
argocd account update-password \
  --account gitops \
  --current-password 'argo@admin.smallsoup' \
  --new-password 'gitops@smallsoup'

此时可以用命令行登录:

代码语言:javascript
复制
echo y | argocd login argocd-server.argocd.svc.cluster.local --password 'gitops@smallsoup' --username gitops

此用户登录进去看不到 admin 建的任何资源(app、project、仓库、cluster 等)。给 gitops 用户生成 token:(这样生成的 token 从不过期,可以加--expires-in 参数设置过期时长)

代码语言:javascript
复制
# argocd account generate-token --account gitops
xxxx

之后就需要 login 了,需要指定--server 和--insecure

代码语言:javascript
复制
argocd app list --auth-token xxx --server argocd-server.argocd.svc.cluster.local --insecure

但使用 token 的方式,每次执行命令行都需要加参数,较为复杂。直接 login 后操作更为简单。

权限

参考:Rbac 权限控制[3]

资源和动作有下面这些:

Resources: clusters, projects, applications, repositories, certificates, accounts, gpgkeys, logs, exec Actions: get, create, update, delete, sync, override, action/<group/kind/action-name>

在 argocd-rbac-cm Configmaps 中给增加以下 policy.csv 就可以看到 admin 创建的 app、仓库等信息了:

代码语言:javascript
复制
 data:
   policy.csv: |
    p, role:gitops, applications, get, *, allow
    p, role:gitops, applications, create, *, allow
    p, role:gitops, applications, update, *, allow
    p, role:gitops, applications, sync, *, allow
    p, role:gitops, applications, override, *, allow
    p, role:gitops, repositories, get, *, allow
    p, role:gitops, repositories, create, *, allow
    p, role:gitops, repositories, update, *, allow
    p, role:gitops, projects, create, *, allow
    p, role:gitops, projects, get, *, allow
    p, role:gitops, clusters, get, *, allow
    p, role:gitops, clusters, list, *, allow
    g, gitops, role:gitops
 apiVersion: v1
 kind: ConfigMap
 metadata:
   labels:
     app.kubernetes.io/name: argocd-rbac-cm
     app.kubernetes.io/part-of: argocd
   name: argocd-rbac-cm
   namespace: argocd

注意:必须增加 g, gitops, role:gitops将 gitops 用户加到 gitops 这个 role 中。

触发同步 sync

代码语言:javascript
复制
echo y | argocd login argocd-server.argocd.svc.cluster.local --password 'gitops@smallsoup' --username gitops

argocd app sync apps-by-top-app

参考资料

[1]

argocd 登录登出: https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd_login/

[2]

用户管理: https://argo-cd.readthedocs.io/en/stable/operator-manual/user-management/

[3]

Rbac 权限控制: https://argo-cd.readthedocs.io/en/stable/operator-manual/rbac/

- END -

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-07-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 进击云原生 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 命令行登录
  • 创建用户、授权
    • 创建用户
      • 权限
        • 参考资料
    • 触发同步 sync
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档