Day19,ArgoCD ( 2 / 2 )

正文

今天要来Demo ArgoCD上透过Gitlab的SSO与权限控管
先创建一个namespace

kubectl create ns group1

然後在gitlab上的group再创建一个subgroup 创建这次demo使用的repo

创建後我们group的示意图如下

点入我们的subgroup,这时候就要请出我们的分身一号gitlab帐号加入这个subgroup啦

回到外层的group点选application创建供dex server sso使用ClientID & ClientSecret,并设定CallBackURL

最後回到ArgoCD的UI,在上面多create一个repository&project,project名为group1

并将这个repo设定为demogroup1的application

接着调整昨天的values.yml 修改dex.config与policy.csv 重新布署

  configEnabled: true
  config:
    # Argo CD's externally facing base URL (optional). Required when configuring SSO
    url: https://192.168.1.241
    # Argo CD instance label key
    application.instanceLabelKey: argocd.argoproj.io/instance
    dex.config: |
      connectors: 
        - type: gitlab
          id: gitlab
          name: gitlab
          config:
            baseURL: https://gitlab.com
            clientID: xxx
            clientSecret: xxx

  ## Annotations to be added to ArgoCD ConfigMap
  configAnnotations: {}

  ## ArgoCD rbac config
  ## reference https://github.com/argoproj/argo-cd/blob/master/docs/operator-manual/rbac.md
  rbacConfig:
    policy.csv: |
      p, role:group1role, applications, *, group1/*, allow
      p, role:group1role, clusters, get, *, allow
      p, role:group1role, repositories, get, *, allow
      p, role:group1role, projects, get, *, allow
      p, role:mainrole, applications, *, *, allow
      p, role:mainrole, clusters, *, *, allow
      p, role:mainrole, repositories, *, *, allow
      p, role:mainrole, projects, *, *, allow
      g, gurubear-ithome-13th/group1, role:group1role
      g, gurubear-ithome-13th, role:mainrole

这边设定的规则大概就是gurubear-ithome-13th/group1能对group1 project下的所有application做异动,针对clusters、repositories、projects全部仅能GET。gurubear-ithome-13th则是全部都可以。

执行helm更新布署的动作

helm upgrade homelab-argo argo/argo-cd --version 3.17.6 -f values.yml -n argocd

可以看到介面上已经有LOG IN VIA GITLAB的按钮了

分别使用分身与本尊登入,登入时需要同意授权

本尊帐号能看到全部的applications

分身帐号因为group的限制(下图显示该分身帐号底下只有这个gurubear-ithome-13th/group1),所以只能看到的group1的applications

透过这样的方式就能去做一定的权限控管了。

闲聊

今天这样大概就把我想讲的ArgoCD部分结束了,在实务上也都可以搭配CI/CD、argocd CLI来处理这一连串的pipeline,就是需要去设计一下而已~


<<:  完成便利贴程序第一版

>>:  Day04 指定插件所支援的平台

Day2 个人部落格需求规划 - Next.js Frontend + Headless WordPress

这系列我们会以实作「个人部落格」为主题,希望兼顾以下项目: 开发者体验:加功能调 UI 时有版本控制...

RDS 即时监看

除了警示之外, DBA也可能需要即时监看, 立即找出问题所在. RDS也提供即时监看面板. 在资料库...

事件监听的this:「这个」到底是哪一个?

欧阳克是谁杀的? 这个this是谁?要看凶手是谁而定! 前面有提到,这个e是在当事件发生时,事件处...

Day 24 - [Android APP] 02-界面设计

昨天讲完架构面,今天不那麽技术,来讲界面设计。 画面设计上由於介面是设计给长者使用,因此字型较大。 ...

Day 14 : 笔记篇 01 — 了解 Obsidian 的 Metadata,建立一套可持续迭代的笔记系统

前言 Day 1 ~ Day 13 讲了 Obsidian 的基础操作、笔记理论後,接下来我要分享如...