Kubernetes

ArgoCD - Account setup

빠빠담 2022. 1. 2. 22:57
반응형

설치

 

https://argo-cd.readthedocs.io/en/stable/cli_installation/

 

curl -sSL -o /usr/local/bin/argocd https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64
chmod +x /usr/local/bin/argocd

wget https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64
mv argocd-linux-amd64 /usr/local/bin/argocd
chmod +x /usr/local/bin/argocd

기본 설정

 

https://medium.com/finda-tech/eks-cluster%EC%97%90-argo-cd-%EB%B0%B0%ED%8F%AC-%EB%B0%8F-%EC%84%B8%ED%8C%85%ED%95%98%EB%8A%94-%EB%B2%95-eec3bef7b69b

 

PASSWORD=`kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d`

ARGOCD_SERVER_HOST=`kubectl get svc argocd-server -o json -n argocd | jq -r '.status.loadBalancer.ingress[0].hostname'`

argocd login <ARGOCD_SERVER_HOST>:80 --grpc-web 
# AWS EKS 혹은 HTTP2/gRPC 프로토콜을 완벽히 지원해 주지 않는 로드밸런서만 해당

argocd 커맨드라인 인터페이스는 HTTP2/gRPC 프로토콜을 통해 통신하므로
로드밸런서 혹은 외부 통신을 담당하는 라우터가 HTTP2/gRPC 프로토콜을 완벽히 지원해야함.
하지만 AWS에서 제공하는 ALB 혹은 Classic LB는 HTTP2/gRPC 프로토콜을 완벽하게 지원하지 않기 때문에
--grpc-web 이라는 옵션을 추가적으로 붙여줘야 함.

계정 생성

 

https://medium.com/geekculture/create-a-new-user-in-argocd-using-the-cli-and-configmap-8cbb27cf5904

 

argocd account list
# 기존 계정 확인
kubectl edit configmap argocd-cm -n argocd

data:
  accounts.<new-username>: apiKey, login
# 위 데이터를 추가해 계정을 생성한다.
argocd account update-password --account <new-username> --new-password <new-password> 
*** Enter password of currently logged in user (admin): 

or

argocd account update-password --account <new-username> --new-password <new-password> --current-password <admin-password>

계정 권한 설정

https://argo-cd.readthedocs.io/en/stable/operator-manual/rbac/
https://faun.pub/create-argo-cd-local-users-9e830db3763f

 

kubectl edit configmap argocd-rbac-cm -n argocd

or

kubectl get configmap argocd-rbac-cm -n argocd -o yaml > argocd-rbac.yml
# yaml 파일로 관리

 

data:
  policy.default: role:readonly	# 기본권한으로 readonly 설정
  policy.csv: |
    p, role:qa,  applications, *, */*, allow    # qa 역할은 applications 에 모든 권한 허용
    p, role:dev, applications, *, */*, allow
    p, role:dev, projects, *, *, allow
    p, role:dev, repositories, *, *, allow
    
    g, adminuser, role:admin         # adminuser 에게 admin 역할 부여
    g, devuser, role:dev             # devuser 에게 dev 역할 부여
    g, qauser, role:qa               # qauser 에게 qa 역할 부여

위와 같이 역할에 각 기능에 대한 권한을 설정하고

계정에 대해서 역할을 설정해주도록 한다. 

 

config:
  # Argo CD's externally facing base URL (optional). Required when configuring SSO
  accounts.qauser: apiKey, login
  accounts.devuser: apiKey, login
  accounts.adminuser: apiKey, login
    .....
 rbacConfig:
    policy.default: role:readonly
    #{}
    # policy.csv is an file containing user-defined RBAC policies and role definitions (optional).
    # Policy rules are in the form:
    #   p, subject, resource, action, object, effect
    # Role definitions and bindings are in the form:
    #   g, subject, inherited-subject
    # See https://github.com/argoproj/argo-cd/blob/master/docs/operator-manual/rbac.md for additional information.
    policy.csv: |
      p, role:qa,  applications, *, */*, allow
      p, role:dev, applications, *, */*, allow
      p, role:dev, projects, *, *, allow
      p, role:dev, repositories, *, *, allow
      g, adminuser, role:admin
      g, devuser, role:dev
      g, qauser, role:qa

위는 helm의 values.yaml 파일 설정시 계정과 권한 설정을 한번에 가능하다고 한다.

반응형

'Kubernetes' 카테고리의 다른 글

Schedule pod on master  (0) 2023.03.17
K8S - On prem Install  (0) 2023.03.17
Namespace - Terminating  (0) 2022.01.01
AWS load balancer controller on Fargate - CrashLoopBackOff  (0) 2021.12.28
Docker network  (0) 2021.12.20