iT邦幫忙

2021 iThome 鐵人賽

DAY 19
0

正文

今天要來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,就是需要去設計一下而已~


上一篇
Day18,ArgoCD ( 1 / 2 )
下一篇
Day20,Grafana Loki 不一樣的log選擇
系列文
HomeLab 30天,胡搞瞎搞亂弄一通。30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言