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


    命令行登录

    参考:argocd 登录登出

    登录:

    echo y | argocd login argocd-server.argocd.svc.cluster.local --password 'argo@admin.smallsoup' --username admin
    
    • 1

    登出:

    argocd logout argocd-server.argocd.svc.cluster.local
    
    • 1

    创建用户、授权

    创建用户

    参考:
    用户管理

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

     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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

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

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

    argocd account update-password \
      --account gitops \
      --current-password 'argo@admin.smallsoup' \
      --new-password 'gitops@smallsoup'
    
    • 1
    • 2
    • 3
    • 4

    此时可以用命令行登录:

    echo y | argocd login argocd-server.argocd.svc.cluster.local --password 'gitops@smallsoup' --username gitops
    
    • 1

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

    # argocd account generate-token --account gitops
    xxxx
    
    • 1
    • 2

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

    argocd app list --auth-token xxx --server argocd-server.argocd.svc.cluster.local --insecure
    
    • 1

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

    权限

    参考:Rbac 权限控制

    资源和动作有下面这些:

    Resources: clusters, projects, applications, repositories, certificates, accounts, gpgkeys, logs, exec
    Actions: get, create, update, delete, sync, override, action/

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

     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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

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

    触发同步 sync

    echo y | argocd login argocd-server.argocd.svc.cluster.local --password 'gitops@smallsoup' --username gitops
    
    argocd app sync apps-by-top-app
    
    • 1
    • 2
    • 3
  • 相关阅读:
    信息安全实验四:Ip包监视程序实现
    找不到msvcp120.dll怎么办?msvcp120.dll修复方法分享!
    关于本地项目上传到gitee的详细流程
    浅谈单例模式
    什么是tomcat?tomcat是干什么用的?下面带你们认识tomcat!通俗易懂!
    网络通信过程
    ⑤、企业快速开发平台Spring Cloud之HTML <head>
    基于 SpringBoot + MyBatis 的在线五子棋对战
    浏览器、负载均衡 、进程内部层…那些你需要掌握的多级缓存
    响应式网页开发方法与实践
  • 原文地址:https://blog.csdn.net/ll837448792/article/details/125899955