Search
Duplicate
📒

[GitOps CICD] 08. ArgoCD 사용자, RABC

상태
완료
수업
GitOps CICD
주제
ArgoCd
4 more properties
참고

ArgoCD 사용자

NOTE
ArgoCD 사용자의 목적은 사용자별로 ArcoCD 권한을 제한할 수 있다!
최초 설치시 admin 유저만 생성되어 있으며, 이후 local userSSO user로 분리된다.
k edit cm argocd-cm -n argocd # argoCD에 gitops 계정추가 k get po -n argocd k exec -it argocd-server-6fb784db69-6vwxf -n argocd -- /bin/bash argocd login 127.0.0.1:8080 --insecure # id/password 입력 argocd account list # 사용자 리스트 argocd account update-password --account gitops --new-password abcde12345 # 패스워드 업데이트
Bash
복사
gitops 계정생성 과정
apiVersion: v1 kind: ConfigMap data: accounts.gitops: apiKey,login # gitops 계정생성 accounts.gitops.enable: "true" metadata: annotations: kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"v1","kind":"ConfigMap","metadata":{"annotations":{},"labels":{"app.kubernetes.io/name":"argocd-cm","app.kubernetes.io/part-of":"argocd"},"name":"argocd-cm","namespace":"argocd"}} creationTimestamp: "2023-12-20T17:57:36Z" labels: app.kubernetes.io/name: argocd-cm app.kubernetes.io/part-of: argocd name: argocd-cm namespace: argocd resourceVersion: "11108" uid: 40812d68-12a3-4012-a4ce-0d074ae3e851
YAML
복사
argocd-cm

ArgoCD RABC

NOTE
RABC(Role-Based-Access-Control)이란 리소스에 대한 액세스 권한을 부여하고 관리하는 보안 제어 접근방식이다!
기본 계정은 admin이고, 이외에는 SSO나 유저를 추가하는 방식으로 RABC 적용
RABC 리소스
Cluster, Project, applications, repositories, accounts, logs …
RABC 액션
create, update, delete, get, sync, override …
RABC 권한의 경우 argocd-rabc-cm 컨피그맵에서 설정한다.
apiVersion: v1 data: policy.csv: | p, role:gitops-role, applications, *, */*, allow p, role:gitops-role, clusters, update, *, allow p, role:gitops-role, clusters, get, *, allow p, role:gitops-role, repositories, update, *, allow p, role:gitops-role, repositories, get, *, allow p, role:gitops-role, projects, update, *, allow p, role:gitops-role, projects, get, *, allow p, role:gitops-role, logs, get, *, allow g, gitops, role:gitops-role policy.default: role:readonly kind: ConfigMap metadata: annotations: kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"v1","kind":"ConfigMap","metadata":{"annotations":{},"labels":{"app.kubernetes.io/name":"argocd-rbac-cm","app.kubernetes.io/part-of":"argocd"},"name":"argocd-rbac-cm","namespace":"argocd"}} creationTimestamp: "2023-12-20T17:57:36Z" labels: app.kubernetes.io/name: argocd-rbac-cm app.kubernetes.io/part-of: argocd name: argocd-rbac-cm namespace: argocd resourceVersion: "909671" uid: 52f7f6f0-25ce-4f48-9e2b-f11e0df008f5
YAML
복사
gitops계정이 이제 정상적으로 모든 정보를 확인할 수 있다.

ArgoCD SSO(Single Sign-On)

NOTE
SSO는 한번의 로그인으로 다른 여러 사이트들을 자동으로 접속하여 이용하는 방식이다.
ArgoCD는 다양한 외부 시스템과 연동이 가능하지만, GitOps 툴인만큼 GitHub 계정을 통해 인증을 구성하는 것이 일반적이다.
k edit cm argocd-cm -n argocd
Bash
복사
SSO 방식 추가
apiVersion: v1 data: accounts.gitops: apiKey,login accounts.gitops.enable: "true" dex.config: | connectors: - type: github id: github name: GitHub config: clientID: [공개 키] clientSecret: [비밀 키] orgs: - name: gitops-course-bohyeon url: http://k8s-argocd-argocd-801d63f0bf-1820277946.ap-northeast-2.elb.amazonaws.com kind: ConfigMap metadata: annotations: kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"v1","kind":"ConfigMap","metadata":{"annotations":{},"labels":{"app.kubernetes.io/name":"argocd-cm","app.kubernetes.io/part-of":"argocd"},"name":"argocd-cm","namespace":"argocd"}} creationTimestamp: "2023-12-20T17:57:36Z" labels: app.kubernetes.io/name: argocd-cm app.kubernetes.io/part-of: argocd name: argocd-cm namespace: argocd resourceVersion: "917000" uid: 40812d68-12a3-4012-a4ce-0d074ae3e851
YAML
복사
sso 설정
apiVersion: v1 data: policy.csv: | p, role:gitops-role, applications, *, */*, allow p, role:gitops-role, clusters, update, *, allow p, role:gitops-role, clusters, get, *, allow p, role:gitops-role, repositories, update, *, allow p, role:gitops-role, repositories, get, *, allow p, role:gitops-role, projects, update, *, allow p, role:gitops-role, projects, get, *, allow p, role:gitops-role, logs, get, *, allow g, gitops, role:gitops-role p, role:org-admin, applications, *, */*. allow p, role:otg-admin, clusters, get, *, allow p, role:org-admin, repositories, get, *, allow p, role:org-admin, repositories, update, *, allow p, role:org-admin, repositories, delete, *, allow p, role:org-admin, projects, get, *, allow p, role:org-admin, projects, create, *, allow p, role:org-admin, projects, update, *, allow p, role:org-admin, projects, delete, *, allow p, role:org-admin, logs, get, *, allow p, role:org-admin, exec, create, *, allow g, gitops-course-bohyeon:gitops, role:org-admin policy.default: role:readonly kind: ConfigMap metadata: annotations: kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"v1","kind":"ConfigMap","metadata":{"annotations":{},"labels":{"app.kubernetes.io/name":"argocd-rbac-cm","app.kubernetes.io/part-of":"argocd"},"name":"argocd-rbac-cm","namespace":"argocd"}} creationTimestamp: "2023-12-20T17:57:36Z" labels: app.kubernetes.io/name: argocd-rbac-cm app.kubernetes.io/part-of: argocd name: argocd-rbac-cm namespace: argocd resourceVersion: "909671" uid: 52f7f6f0-25ce-4f48-9e2b-f11e0df008f5
YAML
복사
sso 권한추가
github 연동 로그인 생김